@@background-color:#800;color:#FFE;text-align: right;font: 14px Arial;
{{!!title}}
@@
<center>''<p style="color:blue">============================</p>''</center>
Demain, nous serons encore peu nombreux, et comme Noella nous rejoindra :nous ferons un mix Théâtre/Dire.
J'escompte donc la présence de :
*► Noella, Odile, Yvonne, Lee, <br>peut-être Louise,<br>outre Michèle et moi.
Pour que tous participent et s'amusent (productivement !) je propose un //Plaisir de Dire// irrespectueux des textes en cours (même peut-être à leurs dépens ?), en composant des clowneries sur des fragments d'environ 2 minutes :
On filmera vos compositions, si déjantées soient- elles, pour que les titulaires en fasse le miel qu'ils voudront à leur retour !
<<<
__''[[Modigliani|http://dire.tiddlyspot.com/#Modigliani%20%E2%80%A2%20J-M%20Ribes]]''__ : composer des variations des personnages (la bourgeoise et la caissière) réjouissantes dont le public se régale !
__''[[La Bonne Mère 2.6|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]''__ : Le marchandage et les dernières répliques de Rocco plus italiennes que jamais.
__''[[La Bonne Mère 2.14 à 2.16|La Bonne Mère II,14 - Lunardo et Giacomina.]]''__ : composer des LUNARDO clownesques, avant de laisser la (libre !) parole à Lee.
__''[[Elvire|Don Juan acte I sc 3 • Molière]] :''__ essayer (sur une de ses tirades) la suggestion iconoclaste de Michèle, composer une Elvire qui fasse rire malgré le tragique !
Bien sûr, ne pas oublier une petite __''[[Bise|Tante Bise • Jean Anouilh]]''__
<<<
__''[[La Pluie|http://dire.tiddlyspot.com/#Choix%20de%20textes%20sur%20%22LA%20PLUIE%22]] :''__ la séance //Plaisir de Dire// consacrée à //La Pluie// sera reportée aux retours des "vacanciers", sans doute lundi 7 septembre. Mais rien n'empêche de consacrer au moins une demi-heure à peaufiner la diction en public de certains de vos poêmes choisis !
{{Compte tenu de la date, je ne saurai vous demander de "travailler" aujourd'hui !||parti}}
::;► Si vous n'êtes pas disponible cet après-midi, merci de me le signaler //(sms ou mail privé)//.
::,,//Absents :// Claudine ,,
{{▼ Vendredi 1er mai - 14h30 ▼||prog}}
!!!Priorités
# Faire toutes les italiennes qui sont (presque) prêtes
# Lectures jouées des autres scènes du I et du II
#* Découpage __//en rondelles//__ des répliques : singulariser chaque "idée" ou sentiment (voix, expression, mouvement, suspens...)
#* Recherche d'une stylisation "Comedia del Arte" pour chacune<br>^^Il ne s'agit pour le moment que d'un exercice d'entraînement à l'expressivité, on verra ce qu'on en fait plus tard.^^
!!!Déroulement
Je propose qu'on commence par le II avec les scènes de ROCCO et LUNARDO :
|!Vers 14h35 |Scène de ROCCO |''[[II,6|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]'' |ÉVE CHA MIC BRI |
|!Vers 15h15<br><br><br><br><br><br><br>,,Arrêt vers 16h,, |Annonce de l'arrivée de Lunardo. |''[[II,10|La Bonne Mère II,10 - Margarita et les mêmes.]]''<br>//,,Lecture simple,,//,<br>^^//pour la compréhension.//^^ |CHA BRI NAD |
|~|Lunardo s'épanche ... trop ? |''[[II,11|La Bonne Mère II,11 - Lunardo et les mêmes.]]'' |LEE CHA BRI |
|~|Compassion molle pour BARBARA |[[II,12|La Bonne Mère II,12 - Barbara et Lunardo.]] |CHA LEE |
|~|Lunardo joue placé. |''[[II,13|La Bonne Mère II,13 - Giacomina et les mêmes.]]'' |CHA BRI LEE |
|~|Drague exaspérante de Giacomina. |''[[II,14|La Bonne Mère II,14 - Lunardo et Giacomina.]]'' |BRI LEE |
|~|Fuite de Giacomina |''[[II,15|La Bonne Mère II,15 - Margarita et les mêmes.]]'' |BRI NAD LEE |
|~|Margarita aime rendre service ... |''[[II,16|La Bonne Mère II,16 - Lunardo et Margarita.]]'' |BRI LEE |
|~|Barbara découvre le pot-aux-roses. |''[[II,17|La Bonne Mère II,17 - Barbara et les mêmes.]]'' |CHA BRI LEE |
Puis :
|!Vers 16h |Italiennes du I |CHA CLO MIR MIC NAD JAC|
!LES SCÈNES
{{LBM-acte1}}
{{LBM_acte 2}}
{{Appel Duo à 14h29. ||_hr}}
/*INDENTING*/
html body.tc-body .indent {margin-left:1.5em;}
html body.tc-body .indent1 {margin-left:1.5em;display:block;}
html body.tc-body .indent1gray {margin-left:1.5em;display:block;color:#777;}
html body.tc-body .indent2 {margin-left:6em;display:block;}
html body.tc-body .indent3 {margin-left:9em;display:block;}
html body.tc-body .indent4 {margin-left:12em;display:block;}
html body.tc-body .indent5 {margin-left:15em;display:block;}
html body.tc-body .indent6 {margin-left:18em;display:block;}
html body.tc-body .indent7 {margin-left:21em;display:block;}
/*TABLES BASIC*/
html body.tc-body table {margin-bottom:30px;border: 1px solid #aaa;}
html body.tc-body th {font-size:12pt;padding: 10px;font-weight:normal;border: 1px solid #aaa;background-color:#ddd;}
html body.tc-body td {font-size:12pt;padding: 10px;border: 1px solid #aaa;}
/*TABLES BLUEALTROWS*/
html body.tc-body .bluealtrows th {padding: 10px; border: 1px solid #aaa; vertical-align:top;text-align:left;}
html body.tc-body .bluealtrows td {padding: 10px; border: 1px solid #aaa; vertical-align:top;}
html body.tc-body .bluealtrows tr:nth-child(even) td {background-color:#F4F4FF;}
html body.tc-body .bluealtrows tr:nth-child(odd) td {background-color:#DDE4FE;}
html body.tc-body .bluealtrows {
-moz-box-shadow: 10px 10px 5px #bbb;
-webkit-box-shadow: 10px 10px 5px #bbb;
box-shadow: 10px 10px 5px #bbb;
}
/*TABLES GRAYALTROWS*/
html body.tc-body .grayaltrows th {padding: 10px; vertical-align:top;text-align:left;background-color:#DDD;}
html body.tc-body .grayaltrows td {padding: 10px; vertical-align:top;}
html body.tc-body .grayaltrows tr:nth-child(even) td {background-color:#F8F8F8;}
html body.tc-body .grayaltrows tr:nth-child(odd) td {background-color:#E8E8E8;}
html body.tc-body .grayaltrows {
-moz-box-shadow: 10px 10px 5px #bbb;
-webkit-box-shadow: 10px 10px 5px #bbb;
box-shadow: 10px 10px 5px #bbb;
}
/*TABLES GREENALTROWS*/
html body.tc-body .greenaltrows th {padding: 10px; border: 1px solid #aaa; vertical-align:top;text-align:left;}
html body.tc-body .greenaltrows td {padding: 10px; border: 1px solid #aaa; vertical-align:top;}
html body.tc-body .greenaltrows tr:nth-child(even) td {background-color:#F3F6F5;}
html body.tc-body .greenaltrows tr:nth-child(odd) td {background-color:#E7EDEB;}
html body.tc-body .greenaltrows {
-moz-box-shadow: 10px 10px 5px #bbb;
-webkit-box-shadow: 10px 10px 5px #bbb;
box-shadow: 10px 10px 5px #bbb;
}
\define showModal(tid)
<$button class="tc-btn-invisible">^^{{$:/core/images/open-window}}^^
<$action-setfield $tiddler="$:/temp/modal/$tid$"
subtitle="$tid$"
text={{{ [[$tid$]get[text]] }}}
footer="""
<$button message="tm-close-tiddler"> fermer
<$action-deletetiddler $tiddler="$:/temp/modal/$tid$"/>
</$button>
""" />
<$action-sendmessage $message="tm-modal" $param="$:/temp/modal/$tid$" />
</$button>
\end
/*TIDDLER FRAMES*/
.tc-tiddler-frame.tc-tiddler-view-frame.tc-tiddler-exists {padding-top:5px;padding-bottom:0px;padding-left:15px;padding-right:15px;margin-bottom:10px;}
.tc-tiddler-frame.tc-tiddler-edit-frame.tc-tiddler-exists {padding-top:5px;padding-bottom:0px;padding-left:15px;padding-right:15px;margin-bottom:10px;}
/*TITLE BAR*/
.tc-titlebar {font-size:140%;font-weight:bold;}
h2 {font-weight: bold; font-family: 'Arial', sans-serif;}
/*TOGGLE TAB STYLE*/
.graydiamond {font-size:75%;color:#ccc;}
/*BACKLINKS CSS*/
.graydiamond {font-size:75%;color:#ccc;}
html body.tc-body .indent1 {margin-left:1.5em;display:block;}
html body.tc-body .graybox {display:block;background-color:#eee;padding:5px;padding-left:20px;padding-top:10px;margin-top:5px;margin-bottom:5px;width:95%;color:#000;}
Click to toggle elements
''View template''
<span class="indent1">
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/ViewTemplate/title" $tags="+[toggle[$:/tags/ViewTemplate]]" />Title</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/ViewTemplate/subtitle" $tags="+[toggle[$:/tags/ViewTemplate]]" />Subtitle</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/ViewTemplate/tags" $tags="+[toggle[$:/tags/ViewTemplate]]" />Tags</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/.giffmex/ViewTemplate/Backlinks" $tags="+[toggle[$:/tags/ViewTemplate]]" />Backlinks</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/.giffmex/ViewTemplate/Transclude" $tags="+[toggle[$:/tags/ViewTemplate]]" />Transclude tids w/ backlinks</$button>
</span>
''Edit template''
<span class="indent1">
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/EditTemplate/title" $tags="+[toggle[$:/tags/EditTemplate]]" />Title</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/EditTemplate/tags" $tags="+[toggle[$:/tags/EditTemplate]]" />Tags</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/EditTemplate/type" $tags="+[toggle[$:/tags/EditTemplate]]" />Type</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/EditTemplate/fields" $tags="+[toggle[$:/tags/EditTemplate]]" />Fields</$button> <span class="graydiamond">♦</span>
<$checkbox tiddler="$:/config/TextEditor/EnableToolbar" field="text" checked="yes" unchecked="no" default="yes">Edit toolbar</$checkbox>
</span>
''Sidebar''
<span class="indent1">
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBarSegments/site-title" $tags="+[toggle[$:/tags/SideBarSegment]]" />Site Title</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBarSegments/site-title" $tags="+[toggle[$:/tags/SideBarSegment]]" />Site Subitle</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBar/Open" $tags="+[toggle[$:/tags/SideBar]]" />Open tab</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBar/Recent" $tags="+[toggle[$:/tags/SideBar]]" />Recent tab</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBar/Tools" $tags="+[toggle[$:/tags/SideBar]]" />Tools tab</$button> <span class="graydiamond">♦</span>
<$button class="tc-btn-invisible tc-tiddlylink"><$action-listops $tiddler="$:/core/ui/SideBar/More" $tags="+[toggle[$:/tags/SideBar]]" />More tab</$button>
</span>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes"><$list filter="[!is[system]all[current]backlinks[]sort[title]] -[[$:/DefaultTiddlers]]" emptyMessage="" template="$:/core/ui/ListItemTemplate2"></$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<$list filter="[!is[system]all[current]backlinks[]!tag[hide]!tag[outlines]sort[title]] -[is[current]] -[[$:/DefaultTiddlers]]"><$link><$view field="title"/></$link><span class="indent1"><$link><span class="graybox"><$transclude field="text" mode="block" /></span></$link></span></$list>
</$reveal>
/*Block*/
.block td {border-color:#fff;border-width:5px;background-color:#FFCC66;padding:10px;}
html .block th {border-color:#fff;border-width:5px;background-color:#FFCC66;padding:10px;color:#441177;}
/*Lignes marrons alternées*/
html .brownaltrows th {padding:10px;vertical-align:top;border-color:#000;background-color: #ccc;text-align:center;}
html .brownaltrows tr.evenRow td {background-color: #eeddbb;}
html .brownaltrows tr.oddRow td {background-color: #f9f2d8;}
html .brownaltrows .tw-tiddlylink-internal {text-decoration: none;font-style: normal;font-weight: bold;color: #443322;}
html .brownaltrows {border-color:#000;}
html .brownaltrows td {border-color:#000;padding:10px;}
/*Lignes horizontales*/
html .rowstable {background: #fff; border-collapse: collapse;border-color:#fff;}
html .rowstable th {background-color:#fff;border-color:#fff;border-bottom: 2px solid #446699;color: #446699;padding:10px;}
html .rowstable td {border-color:#fff;border-bottom: 1px solid #ccc;color: #000;padding: 6px 8px;}
<div class="tc-advanced-search">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]" default="$:/core/ui/AdvancedSearch/System" actions="""<$action-setfield $tiddler="$:/state/advancedsearch/currentTab" text=<<currentTab>>/>""" explicitState="$:/state/tab--1498284803"/>
</div>
Built from branch 'tiddlywiki-com' at commit ac8f52130353dd5476599b979a8eea6abd8b3648 of https://github.com/Jermolene/TiddlyWiki5 at 2020-12-24 13:43:32 UTC
{{$:/language/OfficialPluginLibrary/Hint}}
{
"$:/core/ui/SideBar/Open": "$:/tags/SideBar",
"$:/core/ui/SideBar/Recent": "$:/tags/SideBar",
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": "show",
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": "show",
"$:/config/ViewToolbarButtons/Visibility/$:/plugins/TWaddle/SideEditor/Button": "show",
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": "show",
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/save-wiki": "show"
}
<div class="tc-control-panel">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Info">>
</div>
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/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": {
"title": "$:/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-2021, 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": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path 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\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path 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\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-language tc-image-button\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-plugin tc-image-button\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-theme tc-image-button\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path 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\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path 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\"/><path 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\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path 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\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path 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\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" 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\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/RemoveTags": {
"title": "$:/language/ControlPanel/Basics/RemoveTags",
"text": "Update to current format"
},
"$:/language/ControlPanel/Basics/RemoveTags/Hint": {
"title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
"text": "Update the tags configuration to the latest format"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LayoutSwitcher/Caption": {
"title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
"text": "Layout"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/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 <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
"text": "~TiddlySpot Control Panel"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.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": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
"text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/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/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/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": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/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": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/ClearInput/Caption": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
"text": "clear input"
},
"$:/language/EditTemplate/Tags/ClearInput/Hint": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
"text": "Clear tag input"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/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": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/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": {
"title": "$:/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": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/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": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "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<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/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 <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/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\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/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 <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-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 `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-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\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/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 <filepath> <deserializer> [<title>] [<encoding>]\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": {
"title": "$:/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 <edition> [<edition> ...]\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": {
"title": "$:/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 [<name>=<value>]...\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* ''sse-enabled'' - set to \"yes\" to enable Server-sent events (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\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/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 <filepath> [noerror]\n--load <dirpath> [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": {
"title": "$:/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 <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/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 <pathname>\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.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\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": {
"title": "$:/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 <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\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 variable\n* ''value'': Value of optional variable\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* 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\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/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 <title> <filename> [<type>] [<template>] [<name>] [<value>]\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]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/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 '<filter>' <template> <pathname> [<type>] [<extension>] [\"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": {
"title": "$:/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 <tiddler-filter> <filename-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": {
"title": "$:/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 <title> <filename>\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": {
"title": "$:/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 <filter> <pathname> [\"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": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\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\n```\n"
},
"$:/language/Help/server": {
"title": "$:/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 <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-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```\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\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/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 <filter> <fieldname> <templatetitle> <rendertype>\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": {
"title": "$:/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 <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Listing/Rename/Tooltip": {
"title": "$:/language/Import/Listing/Rename/Tooltip",
"text": "Rename tiddler before importing"
},
"$:/language/Import/Listing/Rename/Prompt": {
"title": "$:/language/Import/Listing/Rename/Prompt",
"text": "Rename to:"
},
"$:/language/Import/Listing/Rename/ConfirmRename": {
"title": "$:/language/Import/Listing/Rename/ConfirmRename",
"text": "Rename tiddler"
},
"$:/language/Import/Listing/Rename/CancelRename": {
"title": "$:/language/Import/Listing/Rename/CancelRename",
"text": "Cancel"
},
"$:/language/Import/Listing/Rename/OverwriteWarning": {
"title": "$:/language/Import/Listing/Rename/OverwriteWarning",
"text": "A tiddler with this title already exists."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler."
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler."
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler."
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/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": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>."
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/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": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/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": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/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 \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmAction": {
"title": "$:/language/ConfirmAction",
"text": "Do you wish to proceed?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/FilterRunPrefix": {
"title": "$:/language/Error/FilterRunPrefix",
"text": "Filter Error: Unknown prefix for filter run"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/FormatFilterOperator": {
"title": "$:/language/Error/FormatFilterOperator",
"text": "Filter Error: Unknown suffix for the 'format' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</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.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LayoutSwitcher/Description": {
"title": "$:/language/LayoutSwitcher/Description",
"text": "Open the layout switcher"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>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</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/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": {
"title": "$:/language/PageTemplate/Description",
"text": "the default ~TiddlyWiki layout"
},
"$:/language/PageTemplate/Name": {
"title": "$:/language/PageTemplate/Name",
"text": "Default ~PageTemplate"
},
"$:/language/PluginReloadWarning": {
"title": "$:/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": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
"title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
"text": "Open the ~AdvancedSearch panel from within the sidebar search field"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accept the selected item"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accept the selected item (variant)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Clear the input field"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Select the next item"
},
"$:/language/Shortcuts/Input/Tab-Left/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
"text": "Select the previous Tab"
},
"$:/language/Shortcuts/Input/Tab-Right/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
"text": "Select the next Tab"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Select the previous item"
},
"$:/language/Shortcuts/SidebarLayout/Hint": {
"title": "$:/language/Shortcuts/SidebarLayout/Hint",
"text": "Change the sidebar layout"
},
"$:/language/Switcher/Subtitle/theme": {
"title": "$:/language/Switcher/Subtitle/theme",
"text": "Switch Theme"
},
"$:/language/Switcher/Subtitle/layout": {
"title": "$:/language/Switcher/Subtitle/layout",
"text": "Switch Layout"
},
"$:/language/Switcher/Subtitle/language": {
"title": "$:/language/Switcher/Subtitle/language",
"text": "Switch Language"
},
"$:/language/Switcher/Subtitle/palette": {
"title": "$:/language/Switcher/Subtitle/palette",
"text": "Switch Palette"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$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": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$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": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/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 | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "Backlinks"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/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": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/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": {
"title": "$:/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": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/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": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\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\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\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\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\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\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\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\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.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 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\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\nfunction FramedEngine(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\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 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\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\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: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.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*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.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*/\nFramedEngine.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 focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.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*/\nFramedEngine.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.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\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\nfunction SimpleEngine(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\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\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\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\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.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*/\nSimpleEngine.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*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\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*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", 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.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filterrunprefixes/all.js": {
"title": "$:/core/modules/filterrunprefixes/all.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/and.js": {
"title": "$:/core/modules/filterrunprefixes/and.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/else.js": {
"title": "$:/core/modules/filterrunprefixes/else.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/except.js": {
"title": "$:/core/modules/filterrunprefixes/except.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/filter.js": {
"title": "$:/core/modules/filterrunprefixes/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\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.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/intersection.js": {
"title": "$:/core/modules/filterrunprefixes/intersection.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/or.js": {
"title": "$:/core/modules/filterrunprefixes/or.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/reduce.js": {
"title": "$:/core/modules/filterrunprefixes/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\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.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\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.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\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.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\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.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\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.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\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.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\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.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\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.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\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.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = new $tw.utils.LinkedList(),\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\tresults.pushTop(subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results.toArray();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\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.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\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.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\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.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\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.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\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\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\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.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\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.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\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\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/duplicateslugs.js": {
"title": "$:/core/modules/filters/duplicateslugs.js",
"text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\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.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\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.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\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 results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\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.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\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.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\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.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\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.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\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.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\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.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\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.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/filter.js": {
"title": "$:/core/modules/filters/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\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.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/format/date.js": {
"title": "$:/core/modules/filters/format/date.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\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.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format/relativedate.js": {
"title": "$:/core/modules/filters/format/relativedate.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\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.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format.js": {
"title": "$:/core/modules/filters/format.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\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 = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\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.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\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.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\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.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\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.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\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.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\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.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\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.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\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.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/draft.js": {
"title": "$:/core/modules/filters/is/draft.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\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.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\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.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\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.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\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.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\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.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\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.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\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.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\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.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\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.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\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.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\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.links = function(source,operator,options) {\n\tvar results = new $tw.utils.LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results.toArray();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\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.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\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.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\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.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix || '');\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\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.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\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\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\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.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\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.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\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.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\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.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\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.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\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.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\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.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\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.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/reduce.js": {
"title": "$:/core/modules/filters/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\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.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" + list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\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.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\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\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\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.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\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.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\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.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\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.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\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.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/slugify.js": {
"title": "$:/core/modules/filters/slugify.js",
"text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\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.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sortsub.js": {
"title": "$:/core/modules/filters/sortsub.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\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.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\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.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\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.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\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.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\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.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\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.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\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.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\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.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\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.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\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.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\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.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\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.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\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.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\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.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset = (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.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.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\nexports[\"image/vnd.microsoft.icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|((?:(?:>(?!>))|[^\\s>\"'])+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"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} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\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\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\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 [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = this.match.index + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = this.match.index + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\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```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\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```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\";\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\tvar reEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\tvar nextStart = startPos;\n\t// Try parsing at all possible macrocall openers until we match\n\twhile((nextStart = this.parser.source.indexOf(\"<<\",nextStart)) >= 0) {\n\t\tvar nextCall = $tw.utils.parseMacroInvocation(this.parser.source,nextStart);\n\t\tif(nextCall) {\n\t\t\tvar c = this.parser.source.charAt(nextCall.end);\n\t\t\t// Ensure EOL after parsed macro\n\t\t\t// If we didn't need to support IE, we'd just use /(?:\\r?\\n|$)/ym\n\t\t\tif ((c === \"\") || (c === \"\\n\") || ((c === \"\\r\") && this.parser.source.charAt(nextCall.end+1) === \"\\n\")) {\n\t\t\t\tthis.nextCall = nextCall;\n\t\t\t\treturn nextStart;\n\t\t\t}\n\t\t}\n\t\tnextStart += 2;\n\t}\n\treturn undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar call = this.nextCall;\n\tcall.isBlock = true;\n\tthis.nextCall = null;\n\tthis.parser.pos = call.end;\n\treturn [call];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\tvar nextStart = startPos;\n\t// Try parsing at all possible macrocall openers until we match\n\twhile((nextStart = this.parser.source.indexOf(\"<<\",nextStart)) >= 0) {\n\t\tthis.nextCall = $tw.utils.parseMacroInvocation(this.parser.source,nextStart);\n\t\tif(this.nextCall) {\n\t\t\treturn nextStart;\n\t\t}\n\t\tnextStart += 2;\n\t}\n\treturn undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar call = this.nextCall;\n\tthis.nextCall = null;\n\tthis.parser.pos = call.end;\n\treturn [call];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\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[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\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\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\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\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\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\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"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// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\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\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\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\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.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\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 nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.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 < 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\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\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 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\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\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\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/custom.js": {
"title": "$:/core/modules/savers/custom.js",
"text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t// Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/hyperdrive.js": {
"title": "$:/core/modules/savers/hyperdrive.js",
"text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\tuploadWithUrlOnly = this.wiki.getTextReference(\"$:/UploadWithUrlOnly\") || \"no\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif (uploadWithUrlOnly === \"yes\") {\n\t\t// The url is good enough. No need for a username and password.\n\t\t// Assume the server uses some other kind of auth mechanism.\n\t\tif(!url || url.toString().trim() === \"\") {\n\t\t\treturn false;\n\t\t}\n\t}\n\telse {\n\t\t// Require username and password to be present.\n\t\t// Assume the server uses the standard UploadPlugin username/password.\n\t\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tsse_enabled: state.server.get(\"sse-enabled\") === \"yes\",\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server-sent-events.js": {
"title": "$:/core/modules/server/server-sent-events.js",
"text": "/*\\\ntitle: $:/core/modules/server/server-sent-events.js\ntype: application/javascript\nmodule-type: library\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nparameters:\n\t\tprefix - usually the plugin path, such as `plugins/tiddlywiki/tiddlyweb`. The\n\t\t\troute will match `/events/${prefix}` exactly.\n\n\t\thandler - a function that will be called each time a request comes in with the\n\t\t\trequest and state from the route and an emit function to call.\n*/\n\nvar ServerSentEvents = function ServerSentEvents(prefix, handler) {\n\tthis.handler = handler;\n\tthis.prefix = prefix;\n};\n\nServerSentEvents.prototype.getExports = function() {\n\treturn {\n\t\tbodyFormat: \"stream\",\n\t\tmethod: \"GET\",\n\t\tpath: new RegExp(\"^/events/\" + this.prefix + \"$\"),\n\t\thandler: this.handleEventRequest.bind(this)\n\t};\n};\n\nServerSentEvents.prototype.handleEventRequest = function(request,response,state) {\n\tif(ServerSentEvents.prototype.isEventStreamRequest(request)) {\n\t\tresponse.writeHead(200, {\n\t\t\t\"Content-Type\": \"text/event-stream\",\n\t\t\t\"Cache-Control\": \"no-cache\",\n\t\t\t\"Connection\": \"keep-alive\"\n\t\t});\n\t\tthis.handler(request,state,this.emit.bind(this,response),this.end.bind(this,response));\n\t} else {\n\t\tresponse.writeHead(406,\"Not Acceptable\",{});\n\t\tresponse.end();\n\t}\n};\n\nServerSentEvents.prototype.isEventStreamRequest = function(request) {\n\treturn request.headers.accept &&\n\t\trequest.headers.accept.match(/^text\\/event-stream/);\n};\n\nServerSentEvents.prototype.emit = function(response,event,data) {\n\tif(typeof event !== \"string\" || event.indexOf(\"\\n\") !== -1) {\n\t\tthrow new Error(\"Type must be a single-line string\");\n\t}\n\tif(typeof data !== \"string\" || data.indexOf(\"\\n\") !== -1) {\n\t\tthrow new Error(\"Data must be a single-line string\");\n\t}\n\tresponse.write(\"event: \" + event + \"\\ndata: \" + data + \"\\n\\n\", \"utf8\");\n};\n\nServerSentEvents.prototype.end = function(response) {\n\tresponse.end();\n};\n\nexports.ServerSentEvents = ServerSentEvents;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\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\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\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\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncDisablePolling = \"$:/config/SyncDisablePolling\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\n\t}\n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous,isPollingDisabled) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t\tif(isPollingDisabled) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleSyncDisablePolling, text: \"yes\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tif(pollingEnabled) {\n\t\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\t\tself.pollTimerId = null;\n\t\t\t\t\tself.syncFromServer.call(self);\n\t\t\t\t},self.pollTimerInterval);\n\t\t\t}\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\"),\n\t\tpollingEnabled = (self.wiki.getTiddlerText(self.titleSyncDisablePolling) !== \"yes\");\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title);\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.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)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){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 DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(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\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\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\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\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\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// If the filepath already ends in the extension then remove it\n\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// Truncate the extension if it is too long\n\tif(extension.length > 32) {\n\t\textension = extension.substr(0,32);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/linkedlist.js": {
"title": "$:/core/modules/utils/linkedlist.js",
"text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = Object.create(null);\n\tthis.prev = Object.create(null);\n\tthis.first = undefined;\n\tthis.last = undefined;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_assertString(value[t]);\n\t\t}\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_assertString(value);\n\t\t_removeOne(this,value);\n\t}\n};\n\n/*\nPush behaves like array.push and accepts multiple string arguments. But it also\naccepts a single array argument too, to be consistent with its other methods.\n*/\nLinkedList.prototype.push = function(/* values */) {\n\tvar values = arguments;\n\tif($tw.utils.isArray(values[0])) {\n\t\tvalues = values[0];\n\t}\n\tfor(var i = 0; i < values.length; i++) {\n\t\t_assertString(values[i]);\n\t}\n\tfor(var i = 0; i < values.length; i++) {\n\t\t_linkToEnd(this,values[i]);\n\t}\n\treturn this.length;\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor (var t=0; t<value.length; t++) {\n\t\t\t_assertString(value[t]);\n\t\t}\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_linkToEnd(this,value[t]);\n\t\t}\n\t} else {\n\t\t_assertString(value);\n\t\t_removeOne(this,value);\n\t\t_linkToEnd(this,value);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tvar visits = Object.create(null),\n\t\tvalue = this.first;\n\twhile(value !== undefined) {\n\t\tcallback(value);\n\t\tvar next = this.next[value];\n\t\tif(typeof next === \"object\") {\n\t\t\tvar i = visits[value] || 0;\n\t\t\tvisits[value] = i+1;\n\t\t\tvalue = next[i];\n\t\t} else {\n\t\t\tvalue = next;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tthis.each(function(value) { output.push(value); });\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar prevEntry = list.prev[value],\n\t\tnextEntry = list.next[value],\n\t\tprev = prevEntry,\n\t\tnext = nextEntry;\n\tif(typeof nextEntry === \"object\") {\n\t\tnext = nextEntry[0];\n\t\tprev = prevEntry[0];\n\t}\n\t// Relink preceding element.\n\tif(list.first === value) {\n\t\tlist.first = next\n\t} else if(prev !== undefined) {\n\t\tif(typeof list.next[prev] === \"object\") {\n\t\t\tif(next === undefined) {\n\t\t\t\t// Must have been last, and 'i' would be last element.\n\t\t\t\tlist.next[prev].pop();\n\t\t\t} else {\n\t\t\t\tvar i = list.next[prev].indexOf(value);\n\t\t\t\tlist.next[prev][i] = next;\n\t\t\t}\n\t\t} else {\n\t\t\tlist.next[prev] = next;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n\t// Now relink following element\n\t// Check \"next !== undefined\" rather than \"list.last === value\" because\n\t// we need to know if the FIRST value is the last in the list, not the last.\n\tif(next !== undefined) {\n\t\tif(typeof list.prev[next] === \"object\") {\n\t\t\tif(prev === undefined) {\n\t\t\t\t// Must have been first, and 'i' would be 0.\n\t\t\t\tlist.prev[next].shift();\n\t\t\t} else {\n\t\t\t\tvar i = list.prev[next].indexOf(value);\n\t\t\t\tlist.prev[next][i] = prev;\n\t\t\t}\n\t\t} else {\n\t\t\tlist.prev[next] = prev;\n\t\t}\n\t} else {\n\t\tlist.last = prev;\n\t}\n\t// Delink actual value. If it uses arrays, just remove first entries.\n\tif(typeof nextEntry === \"object\") {\n\t\tnextEntry.shift();\n\t\tprevEntry.shift();\n\t} else {\n\t\tlist.next[value] = undefined;\n\t\tlist.prev[value] = undefined;\n\t}\n\tlist.length -= 1;\n};\n\n// Sticks the given node onto the end of the list.\nfunction _linkToEnd(list,value) {\n\tif(list.first === undefined) {\n\t\tlist.first = value;\n\t} else {\n\t\t// Does it already exists?\n\t\tif(list.first === value || list.prev[value] !== undefined) {\n\t\t\tif(typeof list.next[value] === \"string\") {\n\t\t\t\tlist.next[value] = [list.next[value]];\n\t\t\t\tlist.prev[value] = [list.prev[value]];\n\t\t\t} else if(typeof list.next[value] === \"undefined\") {\n\t\t\t\t// list.next[value] must be undefined.\n\t\t\t\t// Special case. List already has 1 value. It's at the end.\n\t\t\t\tlist.next[value] = [];\n\t\t\t\tlist.prev[value] = [list.prev[value]];\n\t\t\t}\n\t\t\tlist.prev[value].push(list.last);\n\t\t\t// We do NOT append a new value onto \"next\" list. Iteration will\n\t\t\t// figure out it must point to End-of-List on its own.\n\t\t} else {\n\t\t\tlist.prev[value] = list.last;\n\t\t}\n\t\t// Make the old last point to this new one.\n\t\tif(typeof list.next[list.last] === \"object\") {\n\t\t\tlist.next[list.last].push(value);\n\t\t} else {\n\t\t\tlist.next[list.last] = value;\n\t\t}\n\t}\n\tlist.last = value;\n\tlist.length += 1;\n};\n\nfunction _assertString(value) {\n\tif(typeof value !== \"string\") {\n\t\tthrow \"Linked List only accepts string values, not \" + value;\n\t}\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
"module-type": "utils",
"type": "application/javascript"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(regex, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\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/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-confirm.js": {
"title": "$:/core/modules/widgets/action-confirm.js",
"text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.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 ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.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*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\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*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.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}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\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 DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\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*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\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 DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\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*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-log.js": {
"title": "$:/core/modules/widgets/action-log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\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 LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\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 NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\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*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\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 ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\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*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\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 SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\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*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\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 SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\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*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\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 BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.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 domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\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*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton 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 ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\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\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.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\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox 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 CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the 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*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node 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 CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount 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 CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\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\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable 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 DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\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*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the 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*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable 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 DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone 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 DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.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 domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\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*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\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 EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text 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\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting 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 EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = 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\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement 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 ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt 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 EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity 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 EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.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*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/eventcatcher.js": {
"title": "$:/core/modules/widgets/eventcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent 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\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.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.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\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*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler 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 FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the 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*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields 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 FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\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 ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\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 ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\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\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut 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 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// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\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\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink 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 LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(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: this.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\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher 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 LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\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\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the 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*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/log.js": {
"title": "$:/core/modules/widgets/log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
"type": "application/javascript",
"module-type": "widget-subclass"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall 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 MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the 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*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\"); \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword 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 PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the 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*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \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 QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the 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*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\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;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the 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*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange 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 RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\", handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\", handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\", handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) { // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the 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*/\nRangeWidget.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\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw 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 RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.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*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal 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 RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable 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 ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\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*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\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 SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable 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 SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node 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 TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler 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 TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude 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 TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\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 VarsWidget = function(parseTreeNode,options) {\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\t// Call the constructor\n\tWidget.call(this);\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView 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 ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\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 WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\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\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\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\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\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\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\") // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\") // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\") // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\") // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\"); // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"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: <<colour 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: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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": {
"title": "$:/palettes/Blue",
"name": "Blue",
"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: <<colour 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: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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": {
"title": "$:/palettes/Muted",
"name": "Muted",
"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: <<colour 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: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour 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\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour 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: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour 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\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour 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: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/CupertinoDark": {
"title": "$:/palettes/CupertinoDark",
"tags": "$:/tags/Palette",
"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: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour 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\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\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: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour 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: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour 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: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\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: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour 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: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour 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: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"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: <<colour 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: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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": {
"title": "$:/palettes/DesertSand",
"tags": "$:/tags/Palette",
"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: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour 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: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour 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": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox 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: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour 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\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\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: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour 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: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"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: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\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: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour 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: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour 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": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"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: <<colour 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: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"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: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour 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\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: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour 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": {
"title": "$:/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",
"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\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": {
"title": "$:/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",
"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\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": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour 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)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour 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: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour 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: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour 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: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour 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: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour 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: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour 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)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour 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: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour 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: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour 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: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour 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: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour 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: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"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: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour 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)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour 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: <<colour tag-foreground>>\nnotification-border: <<colour 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: <<colour 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": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"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: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour 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\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: <<colour 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: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour 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: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour 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: <<colour background>>\ntiddler-link-foreground: <<colour 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: <<colour 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": {
"title": "$:/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": {
"title": "$:/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": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/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<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"condition": "[<count>compare:lte[1]]",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[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\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[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\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[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\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/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<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/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]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/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\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
"text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/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\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"first-search-filter": "[is[system]search<userInput>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) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$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\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/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\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/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\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/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\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"main\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/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\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/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\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"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\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"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<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
"second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/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}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\" style=<<tag-styles>>><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$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<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/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<userInput>]",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/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]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/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}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/save": {
"title": "$:/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()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/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": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div 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<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>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": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>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": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/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": {
"title": "$:/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": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$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\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>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": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/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": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>> default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
"title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
"tags": "$:/tags/KeyboardShortcut",
"key": "((change-sidebar-layout))",
"text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/save-wiki": {
"title": "$:/core/ui/KeyboardShortcuts/save-wiki",
"tags": "$:/tags/KeyboardShortcut",
"key": "((save-wiki))",
"text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcuts/switcher": {
"title": "$:/core/ui/KeyboardShortcuts/switcher",
"tags": "$:/tags/KeyboardShortcut",
"key": "((layout-switcher))",
"text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
},
"$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/snippets/LayoutSwitcher": {
"title": "$:/snippets/LayoutSwitcher",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
"text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$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}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"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": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/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()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"name": "{{$:/language/PageTemplate/Name}}",
"description": "{{$:/language/PageTemplate/Description}}",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\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\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/RootTemplate": {
"title": "$:/core/ui/RootTemplate",
"text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$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}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
},
"$:/core/ui/SwitcherModal": {
"title": "$:/core/ui/SwitcherModal",
"subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
"class": "tc-modal-centered",
"text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagPickerTagTemplate": {
"title": "$:/core/ui/TagPickerTagTemplate",
"text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/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()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/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": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/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": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/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": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/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": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditMode/fieldname-filter": {
"title": "$:/config/EditMode/fieldname-filter",
"first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
"second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
},
"$:/config/EditTabIndex": {
"title": "$:/config/EditTabIndex",
"text": "1\n"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.24/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "yes"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search-sidebar": {
"title": "$:/config/ShortcutInfo/advanced-search-sidebar",
"text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/change-sidebar-layout": {
"title": "$:/config/ShortcutInfo/change-sidebar-layout",
"text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
},
"$:/config/ShortcutInfo/delete-field": {
"title": "$:/config/ShortcutInfo/delete-field",
"text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/input-accept": {
"title": "$:/config/ShortcutInfo/input-accept",
"text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
},
"$:/config/ShortcutInfo/input-accept-variant": {
"title": "$:/config/ShortcutInfo/input-accept-variant",
"text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
},
"$:/config/ShortcutInfo/input-cancel": {
"title": "$:/config/ShortcutInfo/input-cancel",
"text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/input-down": {
"title": "$:/config/ShortcutInfo/input-down",
"text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-left": {
"title": "$:/config/ShortcutInfo/input-tab-left",
"text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-right": {
"title": "$:/config/ShortcutInfo/input-tab-right",
"text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
},
"$:/config/ShortcutInfo/input-up": {
"title": "$:/config/ShortcutInfo/input-up",
"text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/layout-switcher": {
"title": "$:/config/ShortcutInfo/layout-switcher",
"text": "{{$:/language/LayoutSwitcher/Description}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/linkify": {
"title": "$:/config/ShortcutInfo/linkify",
"text": "{{$:/language/Buttons/Linkify/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/save-wiki": {
"title": "$:/config/ShortcutInfo/save-wiki",
"text": "{{$:/language/Buttons/SaveWiki/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/transcludify": {
"title": "$:/config/ShortcutInfo/transcludify",
"text": "{{$:/language/Buttons/Transcludify/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SwitcherTargets/layout": {
"title": "$:/config/SwitcherTargets/layout",
"text": "$:/snippets/LayoutSwitcher"
},
"$:/config/SwitcherTargets/language": {
"title": "$:/config/SwitcherTargets/language",
"text": "$:/snippets/languageswitcher"
},
"$:/config/SwitcherTargets/palette": {
"title": "$:/config/SwitcherTargets/palette",
"text": "$:/core/ui/ControlPanel/Palette"
},
"$:/config/SwitcherTargets/theme": {
"title": "$:/config/SwitcherTargets/theme",
"text": "$:/core/ui/ControlPanel/Theme"
},
"$:/config/SyncFilter": {
"title": "$:/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": {
"title": "$:/config/SyncSystemTiddlersFromServer",
"text": "no"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/input-tab-left": {
"title": "$:/config/shortcuts-mac/input-tab-left",
"text": "ctrl-Left"
},
"$:/config/shortcuts-mac/input-tab-right": {
"title": "$:/config/shortcuts-mac/input-tab-right",
"text": "ctrl-Right"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-mac/save-wiki": {
"title": "$:/config/shortcuts-mac/save-wiki",
"text": "meta-S"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/advanced-search-sidebar": {
"title": "$:/config/shortcuts/advanced-search-sidebar",
"text": "alt-Enter"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/change-sidebar-layout": {
"title": "$:/config/shortcuts/change-sidebar-layout",
"text": "shift-alt-Down"
},
"$:/config/shortcuts/delete-field": {
"title": "$:/config/shortcuts/delete-field",
"text": "shift-alt-D"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/input-accept": {
"title": "$:/config/shortcuts/input-accept",
"text": "Enter"
},
"$:/config/shortcuts/input-accept-variant": {
"title": "$:/config/shortcuts/input-accept-variant",
"text": "ctrl-Enter"
},
"$:/config/shortcuts/input-cancel": {
"title": "$:/config/shortcuts/input-cancel",
"text": "Escape"
},
"$:/config/shortcuts/input-down": {
"title": "$:/config/shortcuts/input-down",
"text": "Down"
},
"$:/config/shortcuts/input-tab-left": {
"title": "$:/config/shortcuts/input-tab-left",
"text": "alt-Left"
},
"$:/config/shortcuts/input-tab-right": {
"title": "$:/config/shortcuts/input-tab-right",
"text": "alt-Right"
},
"$:/config/shortcuts/input-up": {
"title": "$:/config/shortcuts/input-up",
"text": "Up"
},
"$:/config/shortcuts/layout-switcher": {
"title": "$:/config/shortcuts/layout-switcher",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/save-wiki": {
"title": "$:/config/shortcuts/save-wiki",
"text": "ctrl-S"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\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\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$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\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/keyboard-driven-input": {
"title": "$:/core/macros/keyboard-driven-input",
"tags": "$:/tags/Macro",
"text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\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\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
"second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
"text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/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}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$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}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__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$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/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": {
"title": "$:/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": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/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/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/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": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/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": {
"title": "$:/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/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": {
"title": "$:/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": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/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/TiddlerInfo": {
"title": "$:/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": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/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/ViewToolbar": {
"title": "$:/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": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}}\n<$list filter=\"[{$:/SiteSubtitle}trim[]minlength[1]]\" variable=\"ignore\">\n--- {{$:/SiteSubtitle}}\n</$list>"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/
\define backupURL()
http://$(userName)$.tiddlyspot.com/backup/
\end
\define backupLink()
<$reveal type="nomatch" state="$:/UploadName" text="">
<$set name="userName" value={{$:/UploadName}}>
<$reveal type="match" state="$:/UploadURL" text="">
<<backupURL>>
</$reveal>
<$reveal type="nomatch" state="$:/UploadURL" text="">
<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>
</$reveal>
</$set>
</$reveal>
\end
<<lingo Description>>
|<<lingo UserName>> |<$edit-text tiddler="$:/UploadName" default="" tag="input"/> |
|<<lingo Password>> |<$password name="upload"/> |
|<<lingo Backups>> |<<backupLink>> |
''<<lingo Advanced/Heading>>''
|<<lingo ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> |
|<<lingo Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> |
|<<lingo UploadDir>> |<$edit-text tiddler="$:/UploadDir" default="." tag="input"/> |
|<<lingo BackupDir>> |<$edit-text tiddler="$:/UploadBackupDir" default="." tag="input"/> |
<<lingo TiddlySpot/Hint>>
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
<$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`""">
<$list filter="[all[current]regexp:draft.title<pattern>]" variable="listItem">
<div class="tc-message-box">
{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}
</div>
</$list>
</$vars>
<$reveal state="!!draft.title" type="nomatch" text={{!!draft.of}} tag="div">
<$list filter="[{!!draft.title}!is[missing]]" variable="listItem">
<div class="tc-message-box">
{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}
</div>
</$list>
<$list filter="[{!!draft.of}!is[missing]]" variable="listItem">
<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>
<$checkbox tiddler="$:/config/RelinkOnRename" field="text" checked="yes" unchecked="no" default="no"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>
<$list filter="[title<fromTitle>backlinks[]limit[1]]" variable="listItem">
<$vars stateTiddler=<<qualify "$:/state/edit/references">> >
<$reveal type="nomatch" state=<<stateTiddler>> text="show">
<$button set=<<stateTiddler>> setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}
<<lingo EditTemplate/Title/References/Prompt>></$button>
</$reveal>
<$reveal type="match" state=<<stateTiddler>> text="show">
<$button set=<<stateTiddler>> setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}
<<lingo EditTemplate/Title/References/Prompt>></$button>
</$reveal>
<$reveal type="match" state=<<stateTiddler>> text="show">
<$tiddler tiddler=<<fromTitle>> >
<$transclude tiddler="$:/core/ui/TiddlerInfo/References"/>
</$tiddler>
</$reveal>
</$vars>
</$list>
</$vars>
</$list>
</$reveal>
<div class="tc-more-sidebar">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical" />
</div>
<span class="tc-menu-list-item2"><$link/> <span class="graydiamond">♦</span> </span>
<div class="tc-more-sidebar">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical tc-sidebar-tabs-more" explicitState="$:/state/tab/moresidebar-1850697562"/>
</div>
\whitespace trim
\define lingo-base() $:/language/CloseAll/
\define drop-actions()
<$action-listops $tiddler=<<tv-story-list>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end
\define placeholder()
<div class="tc-droppable-placeholder"/>
\end
\define droppable-item(button)
\whitespace trim
<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>
<<placeholder>>
<div>
$button$
</div>
</$droppable>
\end
<div class="tc-sidebar-tab-open">
<$list filter="[list<tv-story-list>]" history=<<tv-history-list>> storyview="pop">
<div class="tc-sidebar-tab-open-item">
<$macrocall $name="droppable-item" button="""<$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}}</$button><$link to={{!!title}}><$view field="title"/></$link>"""/>
</div>
</$list>
<$tiddler tiddler="">
<div>
<$macrocall $name="droppable-item" button="""<$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button>"""/>
</div>
</$tiddler>
</div>
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
\define lingo-base() $:/language/ControlPanel/
\define config-title()
$:/config/PageControlButtons/Visibility/$(listItem)$
\end
<<lingo Basics/Version/Prompt>> <<version>>
<$set name="tv-config-toolbar-icons" value="yes">
<$set name="tv-config-toolbar-text" value="yes">
<$set name="tv-config-toolbar-class" value="">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
<div style="position:relative;" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>>/> <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i>
</div>
</$list>
</$set>
</$set>
</$set>
<h1 class="tc-site-title">
<$transclude tiddler="$:/SiteTitle" mode="inline"/>
</h1>
\define folded-state()
$:/state/folded/$(currentTiddler)$
\end
<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify "$:/state/popup/tiddler-info">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list>
</div>
</$vars>
\whitespace trim
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}} />
<$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
\whitespace trim
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$set name="foregroundColor" value={{!!color}}>
<$list filter="[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]">
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
<$transclude tiddler={{!!icon}}>
<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>
</$transclude>
</span>
</$list>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}>
<span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/>
</h2>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<h2 class="tc-title">
<$view field="title"/>
</h2>
</$list>
</$link>
</$set>
</div>
<$reveal type="nomatch" text="" default="" state=<<tiddlerInfoState>> class="tc-tiddler-info tc-popup-handle" animate="yes" retain="yes">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]" variable="listItem"><$transclude tiddler=<<listItem>> mode="block"/></$list>
</$reveal>
</div>
<svg class="tc-image-originals-duality-mask tc-image-button" width="22pt" height="22pt" viewBox="0 0 512 512"><path d="M0 0h512v512H0z"/><path fill="#fff" d="M65.44 18.39l-2.327 9.717C53.95 66.384 49.07 107.884 49.07 151.293c0 93.415 23.097 178.085 61.047 240.014 17.218 28.096 37.652 51.6 60.447 68.92 26.69 21.257 56.353 32.962 87.377 32.962.364 0 1.147-.12 1.927-.25.623.008 1.247.02 1.87.02 60.13 0 113.67-39.724 151.62-101.653 37.95-61.93 61.047-146.598 61.047-240.014 0-41.557-4.858-81.203-13.256-118.012l-2.324-10.19-9.582 4.176c-50.92 22.196-113.98 35.705-182.086 35.713-2.014-.022-4.01-.06-6.002-.103V62.8c-1.296 0-2.586-.017-3.88-.03-69.783-2.053-125.493-18.078-182.545-40.698l-9.29-3.683zm380.816 28.747c6.792 32.774 10.824 67.647 10.824 104.156 0 90.547-22.596 172.38-58.494 230.963-35.9 58.582-84.36 93.38-136.848 93.38-.195 0-.39-.006-.584-.007v-63.987c-2.64.023-5.28-.03-7.914-.163-55.358-2.77-109.316-38.91-122.03-99.742l-2.355-11.256h94.895l37.404 14.207V80.206c1.946.042 3.896.078 5.862.098h.087c66.168 0 127.672-12.383 179.152-33.168zm-279.53 98.12c35.365 0 64.036 13.248 64.036 29.59 0 16.34-28.668 29.585-64.035 29.585-35.365 0-64.036-13.246-64.036-29.586 0-16.34 28.67-29.588 64.037-29.588zm186.282 0c-35.367 0-64.035 13.248-64.035 29.59 0 16.34 28.67 29.585 64.035 29.585 35.367 0 64.035-13.246 64.035-29.586 0-16.34-28.67-29.588-64.035-29.588zM152.572 319.17c14.72 45.053 57.247 71.428 101.602 73.646 44.8 2.24 90.238-19.45 110.416-73.646h-57.447l-44.204 16.187-42.62-16.187h-67.748z"/></svg>
Les tiddlers suivants ont été importés :
# [[Nous sommes craquantes !]]
!!► [[À l'ouverture|$:/DefaultTiddlers]]
!!► [[Auteur|$:/status/UserName]]
!!► [[Éléments affichés|$:/.giffmex/sidebartabs/Toggle]]
---
Édition : → [[Bouton édition|$:/config/ViewToolbarButtons/Visibility/]] ou → [[Double clic|$:/plugins/danielo515/2click2edit]] ou → [[Éditeur à la volée|$:/plugins/TWaddle/SideEditor]]
→ [[Boutons de page|$:/core/ui/ControlPanel/Toolbars/PageControls]]
→ [[Boutons de tiddler|$:/core/ui/ControlPanel/Toolbars/ViewToolbar]]
→ [[Paramétrage général|$:/ControlPanel]]
---
$:/status/UserName
---
$:/core/ui/ControlPanel/Toolbars/PageControls
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
$:/plugins/tongerner/ro/hide-sidebar-tabs
$:/core/ui/ControlPanel/Saving/TiddlySpot
.tc-tagged-note { background-color:#5778d8 ; color:#FF9933; padding: 35px 35px; }
.tc-tagged-note .tc-tiddler-body { font-size: 1em; }
!!<center><p style="color:red">Mardi 22 décembre 14h00 ♥'' __à Mouffetard__'' ♥ </p></center>
;Exercices :
* Travail du monologue de Judith dans [[LA FEMME JUIVE • Brecht]]<br><br>Le texte est divisé :
** en trois parties : lignes bleues,
** et en 8 fragments pour nos manèges <$list filter="[[1.- Oui, je pars, Fritz.]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>.
Nous travaillerons sur les deux premières parties. Ce serait bien que chacun d'entre nous prépare la lecture debout d'un des cinq premiers fragments (n'importe lequel) et à sa mise en scène :
<<<
* [[1.- Oui, je pars, Fritz.]]
* [[2.- Ne dis pas que tu n’es pas changé, tu l’es !]]
* [[3.- Je ne te l’ai pas dit que je voulais partir, que je voulais partir depuis longtemps.]]
* [[4.- Oui, je fais mes bagages.]]
* [[5.- Je ne veux pas que tu me dises que je ne dois pas partir.]]
<<<
{
"tiddlers": {
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "recherche avancée"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Recherche avancée"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "annuler"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Annule l'édition de ce tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "cloner"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone ce tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "fermer"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Ferme ce tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "fermer tout"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Ferme tous les tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "fermer les autres tiddlers"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Ferme les autres tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "panneau de contrôle"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Ouvre le panneau de contrôle"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copier dans le presse-papier"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copie ce texte dans le presse-papier"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "supprimer"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Supprime ce tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "éditer"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Édite ce tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "chiffrement"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Affecte ou résilie le mot de passe pour la sauvegarde de ce wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "résilier le mot de passe"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Résilie le mot de passe et sauvegarde ce wiki sans chiffrement"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "affecter un mot de passe"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Affecte un mot de passe pour sauvegarde une version chiffrée de ce wiki"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "exporter tout"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Exporte tous les tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "exporter ce tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Exporte ce tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "exporter ces tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Exporte ces tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Choisit le champ de recherche dans la barre latérale"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "replier le tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Replie le corps du tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "Barre de repli"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Barre optionnelle pour replier et déplier les tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "déplier le tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Déplie le corps de ce tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "replier les autres tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Replie le corps des autres tiddlers ouverts"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "replier tous les tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Replie le corps de tous les tiddlers ouverts"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "déplier tous les tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Déplie le corps de tous les tiddlers ouverts"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "plein-écran"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Entre ou sort du mode plein-écran"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "aide"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Affiche le panneau d'aide"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "importer"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Importe des fichiers de nombreux types, notamment texte, image, TiddlyWiki ou JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "informations"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Affiche des informations sur ce tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "accueil"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Ouvre les tiddlers par défaut"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "langue"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choix de la langue pour l'interface utilisateur"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "gestionnaire de tiddlers"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Ouvre le gestionnaire de tiddlers"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "plus"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "Actions supplémentaires"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "nouveau, à partir d'ici"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Crée un nouveau tiddler avec pour tag le titre du tiddler courant"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "nouveau journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Crée un nouveau tiddler journal"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "nouveau journal, à partir d'ici"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Crée un nouveau tiddler journal avec pour tag le titre du tiddler courant"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "nouvelle image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Crée une nouveau tiddler image"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "nouveau tiddler Markdown"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Crée un nouveau tiddler avec la syntaxe Markdown"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "nouveau tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Crée un nouveau tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "ouvrir dans une nouvelle fenêtre"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Ouvre ce tiddler dans une nouvelle fenêtre"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choisit une palette de couleur"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Remplace l'URL dans la barre d'adresse du navigateur par un lien direct vers ce tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Remplace l'URL dans la barre d'adresse du navigateur par un lien direct vers l'ensemble des tiddlers présents dans le déroulé"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "imprimer la page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Imprime la page courante"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "rafraîchir"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Rafraîchit la totalité du wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirme les changements apportés à ce tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "enregistrer les modifications"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Enregistre les modifications"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "visualisation du déroulé"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choisit le mode de visualisation du déroulé"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "cacher la barre latérale"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Cache la barre latérale"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "afficher la barre latérale"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Affiche la barre latérale"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "gestionnaire de tags"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Ouvre le gestionnaire de tags"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "horodatage"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Décide si les modifications mettent à jour l'horodatage"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "horodatage activé"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "L'horodatage est mis à jour quand les tiddlers sont modifiés"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "horodatage désactivé"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "L'horodatage n'est pas mis à jour quand les tiddlers sont modifiés"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "thème"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choix du thème pour l'affichage"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "gras"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Met la sélection en gras"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "effacer"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Remplace l'image par une couleur pleine"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "hauteur de l'éditeur"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Ajuste automatiquement la hauteur en fonction du contenu"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Hauteur fixe :"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choisit la hauteur de l'éditeur de texte"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "exciser"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Effectue une excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Nom de la macro :"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Titre du nouveau tiddler :"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Remplacer le texte excisé par :"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "lien"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Utilise le titre de ce tiddler comme tag du nouveau tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Attention : le tiddler existe déjà"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise le texte sélectionné vers un nouveau tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "en-tête 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Applique le formatage des en-têtes de niveau 1 aux lignes de la sélection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "en-tête 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Applique le formatage des en-têtes de niveau 2 aux lignes de la sélection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "en-tête 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Applique le formatage des en-têtes de niveau 3 aux lignes de la sélection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "en-tête 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Applique le formatage des en-têtes de niveau 4 aux lignes de la sélection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "en-tête 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Applique le formatage des en-têtes de niveau 5 aux lignes de la sélection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "en-tête 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Applique le formatage des en-têtes de niveau 6 aux lignes de la sélection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italiques"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Met la sélection en italiques"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "épaisseur du trait"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Choisit une épaisseur de trait pour le remplissage"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "lien"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Crée un lien wikitext"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilien"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Encadre la sélection avec des crochets droits"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "liste à puces"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Formate les lignes de la sélection comme une liste à puces"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "liste numérotée"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Formate les lignes de la sélection comme une liste numérotée"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "bloc de chasse constante"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Formate les lignes de la sélection en bloc de chasse constante"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "chasse constante"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Formate la sélection avec une police de caractères à chasse constante"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacité"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Choisit l'opacité du remplissage"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "couleur de remplissage"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Choisit la couleur de remplissage"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "image"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insère une image"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "prévisualisation"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Affiche le panneau de prévisualisation"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "type de prévisualisation"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choisit le type de prévisualisation"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "citation"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Formate les lignes de la sélection comme une citation"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "pivoter vers la gauche"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Fait pivoter l'image vers la gauche de 90 degrés"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "taille de l'image"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Hauteur :"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Redimensionner l'image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Largeur :"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Indique une taille pour l'image"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "tampon"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Ajoutez le vôtre"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insère un fragment de texte préconfiguré"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Nom tel qu'il apparaît dans le menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Texte du fragment. (N'oubliez pas d'ajouter une légende dans le champ //caption//.)"
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "barré"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Barre le texte sélectionné"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "indice"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Met en indice le texte sélectionné"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "exposant"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Met en exposant le texte sélectionné"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Bascule la visibilité de la barre latérale"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Encadre la sélection avec des accolades"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "souligné"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Souligne le texte sélectionné"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Avancé"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Informations internes sur ce ~TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Apparence"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Personnalisation de l'apparence de votre ~TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Durée de l'animation"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Champ qui recevra le focus par défaut pour les nouveaux tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Fondamentaux"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Utilisez les [[crochets doubles]] pour les titres contenant des espaces. Vous pouvez aussi décider de <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">Conserver le déroulé actuel</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Tiddlers par défaut"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Liste les tiddlers qui seront affichés au démarrage :"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Bonjour ! Langue active :"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Modèle pour les titres des tiddlers journaux"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Texte pour les nouveaux tiddlers journaux"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags pour les nouveaux tiddlers journaux"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Modèle pour les titres des nouveaux tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags pour les nouveaux tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Nombre de tiddlers //shadow// modifiés"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Nombre de tiddlers //shadow//"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Sous-titre"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Nombre de tiddlers système :"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Nombre de tags :"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Nombre de tiddlers :"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Titre de ce ~TiddlyWiki :"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Signer les modifications avec ce nom d'utilisateur :"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "Version de ~TiddlyWiki :"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Types d'éditeur"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Éditeur"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "Ces tiddlers déterminent l'éditeur à utiliser pour éditer tel ou tel type de tiddler."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information sur ce TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Entrez le raccourci ici"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "ajoute un raccourci"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Raccourcis clavier"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Gère les définitions des raccourcis clavier"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "Aucun raccourci clavier défini"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "supprime le raccourci clavier"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "Toutes plates-formes"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Plate-forme Macintosh seulement"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Plates-formes non-Macintosh seulement"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Plate-forme Linux seulement"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Plate-formes non-Linux seulement"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Plate-forme Windows seulement"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Plates-formes non-Windows seulement"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Modules chargés"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "Liste des modules chargés, liés à leurs tiddlers sources. Les italiques indiquent que les tiddlers sources n'existent pas, le plus souvent parce que le module a été créé lors du processus d'amorçage."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "Cloner"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "Il est recommandé de cloner cette palette « shadow » avant de l'éditer"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "supprime cette entrée dans la palette courante"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Montre les noms de couleur qui ne font pas partie de la palette courante"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "Cette palette « shadow » a été modifiée"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Édition de"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "Réinitialiser"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "Masquer l'éditeur"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Palette actuelle :"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "Afficher l'éditeur"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Analyse"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Ici, vous pouvez activer/désactiver globalement les règles de l'analyseur du wiki. Les changements seront effectifs après enregistrement et rechargement de votre wiki. Désactiver certaines règles peut empêcher <$text text=\"TiddlyWiki\"/> de fonctionner correctement. Pour restaurer le fonctionnement normal, utilisez le [[safe mode|https://tiddlywiki.com/#SafeMode]]."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Règles d'analyse Block"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Règles d'analyse Inline"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Règles d'analyse Pragma"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Ajouter des plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Installer des plugins à partir de la bibliothèque officielle"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "Ce plugin est déjà installé dans la version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Requiert également :"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "désactiver"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Désactive ce plugin au prochain rechargement de la page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(désactivé)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "version antérieure"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "Aucun"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "activer"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Active ce plugin au prochain rechargement de la page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "installer"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Plugins installés :"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Langues"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Plugins de langue"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "''\"<$text text=<<currentTab>>/>\"'' non trouvé"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "Ce plugin n'est pas installé"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "ouvre la bibliothèque de plugins"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "ferme la bibliothèque des plugins"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(rechargement requis)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "réinstalle"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Thèmes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Plugins de thème"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "mise à jour"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Mises à jour"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Mises à jour disponibles pour les plugins installés"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Mettre à jour <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "Avec <<count>> sous-plugins disponibles"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Sauvegarde"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permet l'enregistrement automatique pour l'enregistreur de téléchargement"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Active l'auto-enregistrement pour l'enregistreur de téléchargement"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Enregistreur de téléchargement"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "Ces paramètres s'appliquent à l'enregistreur de téléchargement compatible HTML5"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "Général"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "Ces paramètres s'appliquent à tous les enregistreurs chargés"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Paramètres pour enregistrer l'intégralité du TiddlyWiki dans un seul fichier, selon le module d'enregistrement choisi"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Branche cible où doit s'effectuer l'enregistrement"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Enregistré depuis TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "Ces paramètres ne sont utilisés que pour l'enregistrement sur <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Nom du fichier cible (par ex. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Chemin vers le fichier cible (par ex. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "//Dépôt// cible (par ex. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "URL du serveur d'API"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Nom d'utilisateur"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "Enregistreur ~GitHub"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Mot de passe, jeton OAUTH, ou //personal access token// (voir [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] pour de plus amples détails)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "Enregistreur ~GitLab"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "//Personal access token// pour cette API (voir [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] pour de plus amples details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Enregistreur Gitea"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "//Jeton d'accès// pour cette API (via l'interface web de Gitea : `Configuration | Applications | Générer le nouveau jeton`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Paramètres avancés"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Dossier des //sauvegardes//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Sauvegardes"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "Enregistreur ~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "Ces paramètres ne servent que lors de la sauvegarde vers http://tiddlyspot.com ou vers un serveur distant compatible"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Nom du fichier enregistré"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//L'URL par défaut est `http://<nom du wiki>.tiddlyspot.com/store.cgi`. Elle peut être remplacée par une adresse serveur personnalisée, comme `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Mot de passe"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "URL du serveur"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Dossier des dépôts"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Nom utilisé pour ce Wiki"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Sauvegarde automatique"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Pas de sauvegarde automatique des modifications"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Sauvegarde automatique des modifications"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Tentative de sauvegarde automatique des modifications pendant l'édition quand un enregistreur compatible est utilisé"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Liens Wiki //Camel Case//"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "Vous pouvez désactiver globalement les liens créés à partir des expressions de type ~CamelCase. Pour que ce paramètre prenne effet, il est nécessaire de recharger le wiki"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Active les liens automatiques sur les expressions de la forme ~CamelCase"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Paramétrage"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Barre d'outils de l'éditeur"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Active ou désactive la barre d'outils de l'éditeur :"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Affiche la barre d'outils de l'éditeur"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Mode Panneau d'Informations du Tiddler"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Contrôle à quel moment le panneau d'informations du tiddler se ferme :"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Le panneau d'informations se ferme automatiquement"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Le panneau d'informations du tiddler reste ouvert jusqu'à ce qu'il soit fermé explicitement"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "Ce paramétrage vous permet de personnaliser le comportement de TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Barre d'adresse pendant la navigation"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Comportement de la barre d'adresse du navigateur lorsqu'on pointe vers un tiddler :"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Ne pas modifier la barre d'adresse"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Inclure uniquement le titre du tiddler cible"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Inclure le titre du tiddler cible ainsi que le déroulé courant"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Historique de navigation"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Mise à jour de l'historique de navigation du navigateur lorsqu'on pointe vers un tiddler :"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Ne pas mettre à jour l'historique"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Mettre à jour l'historique"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Mode Permalink/permaview"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choisit la manière de traiter l'URL permalink/permaview:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copie l'URL permalink/permaview dans le presse-papier"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Met à jour la barre d'adresse à partir de l'URL permalink/permaview"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Instrumentation de la performance"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Affiche des statistiques de performance dans la console de développement du navigateur. Nécessite de recharger la page pour prendre effet."
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Active l'instrumentation de la performance"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Style des boutons de la barre d'outils"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choix du style des boutons de la barre d'outils :"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Sans bordure"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Avec une bordure"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Arrondis"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Boutons de la barre d'outils"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Apparence par défaut des boutons sur la barre d'outils :"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Afficher l'icône"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Afficher le texte"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Onglet par défaut sur la barre latérale"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Indique l'onglet de la barre latérale qui sera affiché par défaut"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Onglet par défaut sous le Plus de la barre latérale"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Indique quel onglet sera affiché par défaut sous le Plus de la barre latérale"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Comportement à l'ouverture du tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation depuis un emplacement //interne// au déroulé"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation depuis un emplacement //externe// au déroulé"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Ouvrir au-dessus du tiddler courant"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Ouvrir en dessous du tiddler courant"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Ouvrir tout en haut du déroulé"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Ouvrir tout en bas du déroulé"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Titres des tiddlers"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Faut-il afficher les titres des tiddlers comme des liens ?"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Ne pas afficher les titres des tiddlers comme des liens"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Afficher les titres des tiddlers comme des liens"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Liens wiki"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Peut-on pointer vers des tiddlers qui n'existent pas encore ?"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Active les liens vers les tiddlers inexistants"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Vue sur le déroulé"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Vue courante :"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Feuilles de style"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Tout déployer"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "Voici le rendu CSS courant pour les tiddlers feuilles de style tagués avec <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restaurer"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Thème"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Thème courant :"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Champs des tiddlers"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "Il s'agit de la totalité des [[champs|TiddlerFields]] utilisés dans ce wiki (y compris les tiddlers système, mais non compris les tiddlers //shadow//)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Barres d'outils"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Barre d'outils du mode édition"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choix des boutons à afficher pour les tiddlers en cours d'édition"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Choix des boutons à afficher dans les barres d'outils"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Barre d'outils de la page"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choix des boutons à afficher sur la barre d'outils principale de la page"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Barre d'outils de l'Éditeur"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choix des boutons à afficher dans la barre d'outils de l'éditeur. À noter que la présence de certains boutons dépendra du type du tiddler édité"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "Barre d'outils du mode visualisation"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choix des boutons à afficher pour les tiddlers en mode visualisation"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Télécharger le wiki complet"
},
"$:/core/fr-FR/readme": {
"title": "$:/core/fr-FR/readme",
"text": "Ce plugin contient les principaux composants de TiddlyWiki, notamment :\n\n* Les modules du code JavaScript ;\n* Les icônes ;\n* Les //templates// nécessaires à l'élaboration de l'interface utilisateur de TiddlyWiki ;\n* Les traductions en anglais britannique (''en-GB'') des chaînes de caractères utilisées par le cœur de l'application et susceptibles d'être traduites dans d'autres langues.\n"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "er"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": ""
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": ""
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": ""
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": ""
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": ""
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": ""
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": ""
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": ""
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": ""
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": ""
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": ""
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": ""
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": ""
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": ""
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": ""
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": ""
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": ""
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": ""
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": ""
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": ""
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": ""
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": ""
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": ""
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": ""
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": ""
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": ""
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": ""
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": ""
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": ""
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": ""
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Dimanche"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Lundi"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Mardi"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Mercredi"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Jeudi"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Vendredi"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Samedi"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "janvier"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "février"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "mars"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "avril"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "mai"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "juin"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "juillet"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "août"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "septembre"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "octobre"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "novembre"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "décembre"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Di"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Lu"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Ma"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Me"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Je"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Ve"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sa"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Fév"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Avr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "Mai"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aoû"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Déc"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "dans <<period>> jours"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "dans <<period>> heures"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "dans <<period>> minutes"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "dans <<period>> mois"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "dans 1 seconde"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "dans <<period>> secondes"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "dans <<period>> ans"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "il y a <<period>> jours"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "il y a <<period>> heures"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "il y a <<period>> minutes"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "il y a <<period>> mois"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "il y a 1 seconde"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "il y a <<period>> secondes"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "il y a <<period>> ans"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "Un sous-opérateur pour l'opérateur de filtre ''all''."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations pouvant être utilisées par le RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Définit comment les requêtes sont authentifiées par le serveur HTTP intégré."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "Une opération intégrée à la barre d'outils de l'éditeur de bitmap."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commandes qui peuvent être exécutées en mode Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Données à inclure dans `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Méthodes d'opérateurs pour les filtres."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Données globales à inclure dans `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publie des informations système via le pseudo-plugin [[$:/temp/info-plugin]]."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Opérandes pour l'opérateur de filtre ''is''."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Module générique pour les modules ~JavaScript de portée générale."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "Définitions de macros ~JavaScript."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parseurs pour divers types de contenu."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Définit comment chaque motif d'URL est géré par le serveur HTTP intégré."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Les tiddlers d'enregistrement contiennent les différentes méthodes pour enregistrer des fichiers à partir du navigateur."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Fonctions de démarrage."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Différents points de vue sur le déroulé, qui personnalisent l'animation et le comportement des widgets de liste."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "Une opération intégrée à la barre d'outils de l'éditeur de texte."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Convertit différents types de contenu en tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Définit le comportement d'un champ de tiddler."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Ajoute des méthodes au prototype `$tw.Tiddler`."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applique une procédure de mise à jour aux tiddlers lors de l'opération de mise à jour/importation."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Ajoute des méthodes dans `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Ajoute des méthodes spécifiques à Node.js dans `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Les widgets encapsulent les méthodes de rendu et de rafraichissement du DOM."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Ajoute des méthodes à `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Règles d'analyse pour le parseur WikiText principal."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Fond pour les alertes"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Bordure pour les alertes"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Surlignage pour les alertes"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Fond atténué pour les alertes"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "Couleur de fond générale"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Barre de citation"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Fond du bouton par défaut"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Bordure du bouton par défaut"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Premier plan du bouton par défaut"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Fond pour le code"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Bordure pour le code"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Premier plan pour le code"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Indicateur de modifications non sauvegardées"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Fond pour le bouton de téléchargement"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Premier plan pour le bouton de téléchargement"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Fond pour le glissé-déposé"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Premier plan pour le glissé-déposé"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Fond des menus déroulants"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Bordure des menus déroulants"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Fond pour les onglets à menu déroulant sélectionnés"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Fond pour les onglets à menu déroulant"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Fond de la zone « déposé »"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "Fond lors du passage de la souris sur un lien externe"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "Fond pour un lien externe déjà visité"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "Fond pour un lien externe"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "Premier plan lors du passage de la souris sur un lien externe"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "Premier plan pour un lien externe déjà visité"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "Premier plan pour un lien externe"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "Premier plan"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Fond pour la barre de menu"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Premier plan pour la barre de menu"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Fond pour les messages"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Bordure pour les messages"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Premier plan pour les messages"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Arrière-plan pour les fenêtres modales"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Fond pour les fenêtres modales"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Bordure pour les fenêtres modales"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Fond pour les pieds de page des fenêtres modales"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Bordure pour les pieds de page des fenêtres modales"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Bordure pour les en-tête des fenêtres modales"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "Premier plan atténué"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Fond pour les notifications"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Bordure pour les notifications"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Fond de page"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Fond pour le code préformaté"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Bordure pour le code préformaté"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "Couleur principale"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "Arrière-plan de l'élément `<select>`"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "Texte de l'élément `<select>`"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Premier plan des boutons de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Premier plan au passage de la souris sur les boutons de commande de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Premier plan sur les boutons de commande de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Ombre du premier plan de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Premier plan de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Premier plan atténué au passage de la souris sur la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Premier plan atténué de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Fond pour les onglets sélectionnés de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Fond pour les onglets de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Bordure pour les onglets sélectionnés de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Bordure pour les onglets de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Séparateur d'onglets pour la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Premier plan pour les onglets sélectionnés de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Premier plan pour les onglets de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Premier plan au passage de la souris sur le lien d'un tiddler de la barre latérale"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Premier plan du lien d'un tiddler de la barre latérale"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Premier plan pour le titre du wiki (SiteTitle)"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Premier plan pour les alertes statiques"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Fond pour les onglets sélectionnés"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Fond pour les onglets"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Bordure pour les onglets sélectionnés"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Bordure pour les onglets"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Séparateur d'onglets"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Premier plan pour les onglets sélectionnés"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Premier plan pour les onglets"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Bordure des tableaux"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Fond pour les bas de tableau"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Fond pour les en-têtes de tableau"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Fond pour les tags"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Premier plan pour les tags"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Fond pour les tiddlers"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Bordure pour les tiddlers"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Premier plan au passage de la souris sur les boutons de commande d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Premier plan pour le bouton de commande sélectionné d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Premier plan pour les boutons de commande d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Fond pour l'éditeur de tiddlers"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Image de bordure pour l'éditeur de tiddlers"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Bordure de l'éditeur de tiddlers"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Fond de l'éditeur de tiddlers pour les champs pairs"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Fond de l'éditeur de tiddlers pour les champs impairs"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Fond du panneau d'information d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Bordure du panneau d'information d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Fond pour les onglets du panneau d'information d'un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Fond pour les liens vers un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Premier plan pour les liens vers un tiddler"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Premier plan du sous-titre du wiki"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Premier plan du titre du wiki"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Premier plan pour le bouton 'Nouveau tiddler' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Premier plan pour le bouton 'Options' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Premier plan pour le bouton 'Enregistrer' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Premier plan pour le bouton 'Info' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Premier plan pour le bouton 'Éditer' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Premier plan pour le bouton 'Fermer' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Premier plan pour le bouton 'Supprimer' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Premier plan pour le bouton 'Annuler' de la barre latérale"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Premier plan pour le bouton 'Terminé' de la barre latérale"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Fond pour la pastille « sans-étiquette »"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Premier plan très atténué"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "Ce tiddler affiche du contenu situé en dehors du fichier TiddlyWiki principal. Vous pouvez éditer les tags et les champs mais pas directement le contenu lui-même"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Entrez le texte ici"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "sortie"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "supprimer le champ"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Supprime le champ"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "liste des champs"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Montre la liste des champs"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "ajouter"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Ajoute le nouveau champ au tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "nom du champ"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Ajouter un nouveau champ :"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "valeur du champ"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "Champs système"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "Champs utilisateur"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "Ce tiddler est une version modifiée d'un tiddler « shadow ». Pour revenir à la version par défaut du plugin <<pluginLink>>, il vous suffit de supprimer ce tiddler."
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "Ceci est un tiddler « shadow ». Toute modification supplantera la version issue du plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "ajouter"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "ajoute un tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "nom du tag"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "liste des tags"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Montre la liste des tags"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Attention : il est préférable d'éviter l'usage des caractères <<bad-chars>> dans les titres des tiddlers"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Le tiddler cible existe déjà"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Changer ''<$text text=<<fromTitle>>/>'' en ''<$text text=<<toTitle>>/>'' dans les //tags// et les champs //list// des autres tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "Les références suivantes à ce tiddler ne seront pas mises à jour automatiquement :"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "liste des types de contenu"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Montre la liste des types de contenu"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "supprimer le type de contenu"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Supprime le type de contenu"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "type du contenu"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type :"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "HTML Statique"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "Fichier JSON"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "Fichier CSV"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "Fichier \".tid\""
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "L'URI complet vers le contenu externe d'un tiddler image"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "Nom du <q>bag</q> d'où provient le tiddler"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "Texte à afficher sur un onglet ou un bouton"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "Couleur CSS associée au tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "Nom du composant responsable pour un [[tiddler d'alerte|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Sert à cacher le tiddler situé au début de l'[[historique|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "Date de création du tiddler"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "Nom de l'utilisateur qui a créé le tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "Quand le tiddler est un plugin, énumère les titres des plugins dépendants"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "Texte de description d'un plugin, ou d'une boîte de dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "Pour les tiddlers en cours d'édition, contient le titre du tiddler initial"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "Pour les tiddlers en cours d'édition, contient le nouveau titre prévu pour le tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "Texte de bas de page dans le cas d'un wizard"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "Titre du tiddler contenant l'icone associée à un tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Avec une valeur à <q>yes</q>, indique qu'un tiddler doit être sauvegardé comme bibliothèque JavaScript"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "Liste ordonnée de titres de tiddlers associée à un tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "Si présent, contient le titre du tiddler avant lequel ce tiddler doit être ajouté dans la liste ordonnée des titres de tiddlers. Si ce champ est présent mais vide, le titre doit être ajouté au début de la liste."
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "Si présent, contient le titre du tiddler après lequel ce tiddler doit être ajouté dans la liste ordonnée des titres de tiddlers."
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "Date et heure à laquelle le tiddler a été modifié pour la dernière fois"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "Titre du tiddler associé à l'utilisateur qui a modifié ce tiddler pour la dernière fois"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "Dans le cas d'un tiddler provenant d'un plugin, le nom de la personne associée à ce tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "Dans le cas d'un tiddler provenant d'un plugin, un nombre indiquant la priorité de ce tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "Dans le cas d'un tiddler provenant d'un plugin, le type du plugin"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "Numéro de révision du tiddler présent sur le serveur"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date de version d'un TiddlyWiki"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "URL source associée à ce tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "Texte du sous-titre pour un wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "Liste des tags associés à un tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "Texte du corps de ce tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "Si présent, ralentit les rafraîchissements de ce tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "Nom unique du tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Une valeur à ''no'' supprime le lien vers le tiddler dans l'arborescences des tables des matières"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "Type de contenu du tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "S'il s'agit d'un plugin, l'information de version"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "Si présent, indique que le champ //text// du tiddler doit être chargé depuis le serveur"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "Tous les tiddlers sauf les tiddlers système"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Les tiddlers modifiés récemment, y compris les tiddlers système"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Les tiddlers modifiés récemment"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "Tous les tags sauf les tags système"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Les tiddlers manquants"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Les tiddlers en cours d'édition"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Les tiddlers orphelins"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "Les tiddlers système"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Les tiddlers shadow"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Les tiddlers du déroulé, hormis $:/AdvancedSearch"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Les tiddlers shadow modifiés"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "Les tags système"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Tiddlers ayant un contenu non wiki-text"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nBienvenue sur ~TiddlyWiki et parmi la communauté ~TiddlyWiki.\n\nAvant de confier à TiddlyWiki des informations importantes, commencez par vérifier que vos modifications peuvent être sauvegardées\ncorrectement — reportez-vous aux [[instructions détaillées|https://tiddlywiki.com/languages/fr-FR/index.html#Saving]] sur https://tiddlywiki.com/.\n\n!! Personnalisez ce ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nRendez-vous dans le [[panneau de contrôle|$:/ControlPanel]] pour plus d'options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Lance automatiquement les commandes configurées",
"text": "Compile le wiki courant à partir des cibles spécifiées. Si aucune cible n'est spécifiée, toutes les cibles seront compilées.\n\n```\n--build <cible> [<cible> ...]\n```\n\nLes cibles de compilation sont définies dans le fichier `tiddlywiki.info` du [[dossier associé au wiki|TiddlyWikiFolders]].\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Efface un mot de passe pour les prochaines opérations de chiffrement",
"text": "Efface le mot de passe pour les prochaines opérations de chiffrement\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<dossierwiki>] [--<commande> [<arguments>...]...]\n```\n\nListe des commandes disponibles :\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link> : <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nPour obtenir de l'aide sur une commande précise :\n\n```\ntiddlywiki --help <commande>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Supprime un groupe de tiddlers",
"text": "<<.from-version \"5.1.20\">> Supprime un groupe de tiddlers identifiés par un filtre.\n\n```\n--deletetiddlers <filtre>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Liste les éditions TiddlyWiki disponibles",
"text": "Liste les noms et descriptions des éditions disponibles. La commande `--init` permet de créer un nouveau wiki à partir d'une édition particulière.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Télécharge des tiddlers depuis un wiki à partir de leurs URL",
"text": "Télécharge un ou plusieurs fichiers via HTTP/HTTPS, puis importe les tiddlers correspondant à un filtre, en transformant optionnellement les titres des tiddlers importés.\n\n```\n--fetch file <url> <filtre-import> <filtre-de-transformation>\n--fetch files <filtre-urls> <filtre-import> <filtre-de-transformation>\n```\n\nAvec la variante \"file\", un seul fichier est téléchargé et le premier paramètre est l'URL du fichier à lire.\n\nAvec la variante \"files\", plusieurs fichiers sont téléchargés et le premier paramètre est un filtre produisant une liste d'URLs pour les fichiers à lire. Par exemple, étant donné un ensemble de tiddlers tagués \"remote-server\" et disposant d'un champ \"url\", le filtre `[tag[remote-server]get[url]]` permet de récupérer toutes les URLs disponibles.\n\nLe paramètre `<filtre-import>` spécifie un filtre qui détermine quels tiddlers seront importés. Lorsqu'il n'est pas indiqué, il prend comme valeur par défaut `[all[tiddlers]]`.\n\nLe paramètre `<filtre de transformation>` spécifie un filtre optionnel qui transforme les titres des tiddlers importés. Par exemple, `[addprefix[$:/myimports/]]` permettrait d'ajouter le préfixe `$:/myimports/` à chaque titre.\n\nOn obtient des informations concernant la progression de l'importation en faisant précéder la commande `--fetch` de la commande `--verbose`.\n\nIl faut noter que TiddlyWiki ne téléchargera pas une version plus ancienne d'un plugin déjà chargé.\n\nL'exemple ci-dessous récupère tous les tiddlers non-système de https://tiddlywiki.com et les enregistre dans un fichier JSON :\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\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Affiche de l'aide sur les commandes TiddlyWiki",
"text": "Affiche un texte d'aide sur une commande particulière :\n\n```\n--help [<commande>]\n```\n\nSi aucun nom de commande n'est fourni, affiche la liste de toutes les commandes disponibles.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Importe des tiddlers depuis un fichier",
"text": "Importe des tiddlers depuis des fichiers locaux TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` ou autres. Le désérialiseur doit être spécifié explicitement, à la différence de la commande `load` qui déduit le désérialiseur à utiliser à partir de l'extension du fichier.\n\n```\n--import <chemin-du-fichier> <désérialiseur> [<titre>] [<encodage>]\n```\n\nLes principaux désérialiseurs présents par défaut sont :\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\nS'il n'est pas spécifié, le titre du tiddler importé a pour valeur le nom du fichier.\n\nL'encodage par défaut est \"utf8\", mais peut valoir \"base64\" en cas d'importation des fichiers binaires.\n\nÀ noter que TiddlyWiki refusera d'importer pas une version plus ancienne d'un plugin déjà chargé.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise un nouveau dossier wiki",
"text": "Initialise un [[dossier wiki (WikiFolder)|WikiFolders]] vide en copiant l'une des éditions présentes dans le répertoire //editions//.\n\n```\n--init <édition> [<édition> ...]\n```\n\nPar exemple :\n\n```\ntiddlywiki ./MonDossierWiki --init empty\n```\n\nNote :\n\n* Le répertoire correspondant au dossier wiki est créé si nécessaire\n* L'édition par défaut est ''empty''\n* La commande //init// échoue si le dossier wiki n'est pas vide\n* La commande //init// supprime les éventuelles définitions `includeWikis` du fichier `tiddlywiki.info` de l'édition spécifiée\n* Lorsque plusieurs éditions sont spécifiées, chaque édition écrase les fichiers qu'elle a en commun avec les précédentes (par conséquent, le fichier `tiddlywiki.info` proviendra de la dernière édition spécifiée)\n* `--editions` renvoie une liste des éditions disponibles\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Fournit à TiddlyWiki une interface serveur HTTP",
"text": "Sert un wiki via HTTP.\n\nLa commande //listen// utilise des [[paramètres de commande nommés|NamedCommandParameters]] :\n\n```\n--listen [<nom>=<valeur>]...\n```\n\nTous les paramètres sont optionnels avec des valeurs par défaut sûres, et peuvent être spécifiés dans n'importe quel ordre. Les paramètres reconnus sont les suivants :\n\n* ''host'' - nom ou adresse de machine hôte à laquelle sera attaché le service (par défaut \"127.0.0.1\", autrement dit \"localhost\")\n* ''path-prefix'' - préfixe optionnel pour les noms de chemin\n* ''port'' - numéro de port sur lequel écouter ; une valeur non numérique est interprétée comme un nom de variable d'environnement dont sera extrait le numéro de port (par défaut à \"8080\")\n* ''credentials'' - chemin vers le fichier CSV d'autorisations (relativement au dossier du wiki)\n* ''anon-username'' - nom d'utilisateur qui servira à signer les modifications si l'utilisateur est anonyme\n* ''username'' - nom d'utilisateur optionnel pour l'authentification basique\n* ''password'' - mot de passe optionnel pour l'authentification basique\n* ''authenticated-user-header'' - nom d'en-tête optionnel à utiliser pour les authentifications de confiance\n* ''readers'' - liste de personnes de confiance autorisées à lire ce wiki, séparées par des virgules \n* ''writers'' - liste de personnes de confiance autorisées à modifier ce wiki, séparées par des virgules\n* ''csrf-disable'' - donner la valeur \"yes\" pour désactiver les vérifications CSRF (vaut \"no\" par défaut)\n* ''root-tiddler'' - le tiddler à servir à la racine (par défaut \"$:/core/save/all\")\n* ''root-render-type'' - le type de contenu avec lequel le tiddler racine doit être rendu (par défaut \"text/plain\")\n* ''root-serve-type'' - le type de contenu avec lequel le tiddler racine doit être servi (par défaut \"text/html\")\n* ''tls-cert'' - nom de chemin du fichier de certificat TLS (relativement au dossier du wiki)\n* ''tls-key'' - nom de chemin du fichier de clé TLS (relativement au dossier du wiki)\n* ''debug-level'' - niveau de débogage optionnel ; mettre à \"debug\" pour voir le détail des requêtes (par défaut à \"none\")\n* ''gzip'' - donner la valeur \"yes\" pour activer la compression gzip pour certaines interactions http (par défaut à \"no\")\n\nPour plus d'informations sur la manière de donner accès à votre instance de serveur à l'ensemble de votre réseau local, ainsi que sur les risques éventuels en matière de sécurité, voir le tiddler [[WebServer sur tiddlywiki.com|https://tiddlywiki.com/#WebServer]].\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Charge des tiddlers à partir d'un fichier",
"text": "Charge des tiddlers à partir de fichiers ~TiddlyWikiClassic 2.x.x\n(`.html`), `.tiddler`, `.tid`, `.json` ou d'autres types de\nfichiers. Le traitement appliqué aux fichiers entrants est déterminé par l'extension du fichier. Utilisez plutôt la commande `import` si vous devez spécifier explicitement le désérialiseur et l'encodage.\n\n\n```\n--load <chemindufichier> [noerror]\n--load <chemindurépertoire> [noerror]\n```\n\nPar défaut, la commande //load// provoque une erreur si aucun tiddler n'est trouvé. L'erreur peut être supprimée en spécifiant le paramètre optionnel \"noerror\".\n\nPour charger des tiddlers à partir d'un fichier ~TiddlyWiki chiffré, vous devrez d'abord spécifier le mot de passe à l'aide de la [[commande password|PasswordCommand]]. Par exemple :\n\n```\ntiddlywiki ./MonWiki --password pa55w0rd --load mon_wiki_secret.html\n```\n\nÀ noter : TiddlyWiki refusera de charger une version plus ancienne d'un plugin déjà chargé."
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construit le plugin bibliothèque requis par la procédure de mise à jour",
"text": "Construit le tiddler `$:/UpgradeLibrary` pour la procédure de mise à jour.\n\nLa bibliothèque de mise à jour est formatée comme un tiddler de plugin ordinaire avec le type `library`. Elle contient un exemplaire de chacun des packs de plugins, thèmes et languages disponibles dans le répertoire de TiddlyWiki5.\n\nCette commande est prévue pour un usage interne ; elle n'a d'intérêt que pour les utilisateurs qui construisent une variante de la procédure de mise à jour.\n\n```\n--makelibrary <titre>\n```\n\nL'argument //titre// a pour valeur par défaut `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "Il n'existe pas d'aide sur le sujet."
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Change le répertoire de départ pour la sortie des prochaines commandes",
"text": "Change le répertoire de départ pour la sortie des prochaines commandes. Par défaut, le répertoire de sortie est le sous-répertoire `output` du répertoire de l'édition courante.\n\n```\n--output <nom de chemin>\n```\n\nSi le chemin spécifié est relatif, il est calculé relativement au répertoire de sortie courant. Par exemple, `--output .` indique le répertoire courant comme répertoire de sortie.\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Fournit un mot de passe pour les prochaines opérations de chiffrement",
"text": "Fournit un mot de passe pour les prochaines opérations de chiffrement.\n\n```\n--password <motdepasse>\n```\n\n''Note'' : Cette commande n'est pas appropriée pour servir un TiddlyWiki protégé par mot de passe. Pour cela, utilisez plutôt l'option //password// de la [[commande Server|ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Exécute le contenu de tiddlers individuels vers des fichiers",
"text": "Exécute le contenu des tiddlers individuels identifiés par un filtre et enregistre le résultat vers les fichiers spécifiés.\n\nOptionellement, on peut spécifier le titre d'un tiddler modèle (template). Dans ce cas, au lieu d'exécuter directement le contenu de chaque tiddler, le modèle est exécuté après avoir donné pour valeur à la variable \"currentTiddler\" le titre du tiddler dont le contenu est en cours d'exécution.\n\nOn peut spécifier le nom et la valeur d'une variable supplémentaire.\n\n```\n--render <filtre-sur-les-tiddlers> [<filtre-des-noms-de-fichier>] [<type-de-rendu>] [<modèle>] [<nom>] [<valeur>]\n```\n\n* ''filtre-sur-les-tiddlers'': Un filtre qui indentifie les tiddlers dont le contenu doit être exécuté\n* ''filtre-des-noms-de-fichier'': filtre optionnel pour transformer les titres de tiddlers en chemin de fichiers. À défaut, le filtre utilisé est `[is[tiddler]addsuffix[.html]]`, qui utilise le titre inchangé du tiddler comme nom de fichier\n* ''modèle'': Modèle optionnel via lequel chaque tiddler doit être rendu\n* ''type-de-rendu'': Type de rendu optionnel : la valeur `text/html` (par défaut) retourne le text HTML complet et `text/plain` se contente de retourner le contenu sous forme texte (autrement dit ignore les balises HTML et autres caractères non imprimables)\n* ''nom'': Nom de la variable optionnelle\n* ''valeur'': Valeur de la variable optionnelle\n\nPar défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du réepertoire de l'édition. La commande `--output` peut servir à diriger les sorties vers un répertoire différent.\n\nNotes :\n\n* Les éventuels fichiers présents dans le répertoire de sortie ne sont pas supprimmés\n* Les répertoires absents dans le chemin de fichier sont créés automatiquement.\n* Lorsqu'un tiddler contient des espaces dans le titre, prendre garde à utiliser aussi bien les guillemets nécessaires au shell et les doubles crochets droits propres à TiddlyWiki : `--render \"[[Motovun Jack.jpg]]\"`\n* Le filtre des noms de fichier est évalué après avoir initialisé l'élément d'entrée avec le titre du tiddler en cours d'exécution, permettant ainsi d'utiliser le titre comme base de calcul pour le nom de fichier. Par exemple `[encodeuricomponent[]addprefix[static/]]` applique un encodage d'URI à chaque titre, puis ajoute le préfixe `static/`\n* La commande `--render` remplace de manière plus souple les deux commandes `--rendertiddler` et `--rendertiddlers`, qui sont du même coup obsolètes. \n\nExemples :\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- enregistre le contenu exécuté de tous les tiddlers non-système vers des fichiers du sous-répertoire \"tiddlers\" nommés par encodage URL des titres et ajout d'une extension html.\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Exécute le contenu d'un tiddler pour le type spécifié",
"text": "(À noter : la commande `--rendertiddler` est dépréciée. Il est préférable d'utiliser la nouvelle commande `--render`, plus souple)\n\nEnregistre vers le chemin indiqué le résultat de l'exécution d'un tiddler pour le type de contenu (ContentType) spécifié — par défaut `text/html`.\n\nUn tiddler modèle (template) peut être indiqué optionnellement. Dans ce cas, le tiddler modèle est exécuté après initialisation de la variable \"currentTiddler\" avec le tiddler dont le titre est donné en premier paramètre de la commande.\n\nLe nom et la valeur d'une variable supplémentaire peuvent être spécifiés optionnellement.\n\n```\n--rendertiddler <titre> <chemindufichier> [<type>] [<modèle>] [<nom>] [<valeur>]\n```\n\nPar défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent.\n\nLes répertoires présents dans le chemin du fichier et qui n'existent pas encore sont créés automatiquement.\n\nPar exemple, la commande ci-dessous enregistre tous les tiddlers correspondant au filtre `[tag[done]]` vers un fichier JSON de nom `output.json`, en faisant appel au template prédéfini `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Exécute le contenu d'un ensemble de tiddlers sélectionnés par un filtre, pour le type de contenu (ContentType) spécifié",
"text": "(À noter : la commande `--rendertiddlers` est dépréciée. Il est préférable d'utiliser la nouvelle commande `--render`, plus souple)\n\nEnregistre vers le chemin indiqué et avec l'extension indiquée — par défaut `.html`, le résultat de l'exécution d'un ensemble de tiddlers (sélectionnés par un filtre). Le résultat de l'exécution est rendu selon le type de contenu (ContentType) spécifié — par défaut `text/html` :\n\n```\n--rendertiddlers '<filtre>' <modèle> <chemindurépertoire> [<type>] [<extension>] [\"noclean\"]\n```\n\nPar exemple :\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nPar défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent.\n\nTous les fichiers du répertoire cible sont supprimés, sauf si le drapeau ''noclean'' est spécifié. Le répertoire cible est créé récursivement s'il n'existe pas."
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Enregistre des tiddlers individuels tels quels vers des fichiers",
"text": "Enregistre des tiddlers individuels identifiés par un filtre, soit tels quels, soit dans un format binaire dans les fichiers spécifiés.\n\n```\n--save <filtre-des-tiddlers> <filtre-des-noms-de-fichiers>\n```\n\n* ''filtre-des-tiddlers'': Un filtre identifiant les tiddlers à enregistrer\n* ''filtre-des-noms-de-fichiers'': Filtre optionnel pour transformer les titres de tiddlers en chemins de fichiers. À défaut, le filtre utilisé est `[is[tiddler]]`, qui utilise le titre inchangé du tiddler comme nom de fichier\n\nPar défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du réepertoire de l'édition. La commande `--output` peut servir à diriger les sorties vers un répertoire différent.\n\nNotes :\n\n* Les éventuels fichiers présents dans le répertoire de sortie ne sont pas supprimmés\n* Les répertoires absents dans le chemin de fichier sont créés automatiquement.\n* Lorsqu'un tiddler contient des espaces dans le titre, prendre garde à utiliser aussi bien les guillemets nécessaires au shell et les doubles crochets droits propres à TiddlyWiki : `--render \"[[Motovun Jack.jpg]]\"`\n* Le filtre des noms de fichier est évalué après avoir initialisé l'élément d'entrée avec le titre du tiddler en cours d'exécution, permettant ainsi d'utiliser le titre comme base de calcul pour le nom de fichier. Par exemple `[encodeuricomponent[]addprefix[static/]]` applique un encodage d'URI à chaque titre, puis ajoute le préfixe `static/`\n* La commande `--save` remplace de manière plus souple les deux commandes `--savetiddler` et `--savetiddlers`, qui sont du même coup obsolètes. \n\nExemples :\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- enregistre tous les tiddlers images non-système comme des fichiers du sous-répertoire \"tiddlers\" nommés après encodage URL des titres.\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Enregistre un tiddler dans un fichier sous sa forme brute",
"text": "(À noter : la commande `--savetiddler` est dépréciée. Il est préférable d'utiliser la nouvelle commande `--save`, plus souple)\n\nEnregistre un tiddler texte ou binaire dans le fichier spécifié, sous sa forme brute. \n\n```\n--savetiddler <titre> <chemindufichier>\n```\n\nPar défaut, le nom de fichier est résolu relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à rediriger la sortie vers un répertoire différent.\n\nLes répertoires présents dans le chemin du fichier et qui n'existent pas encore sont créés automatiquement. "
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Enregistre un groupe de tiddlers vers un répertoire",
"text": "(À noter : la commande `--savetiddlers` est dépréciée. Il est préférable d'utiliser la nouvelle commande `--save`, plus souple)\n\nEnregistre un groupe de tiddlers vers le chemin spécifié, sous leur forme brute, texte ou binaire. \n\n```\n--savetiddlers <filtre> <chemin-de-répertoire> [\"noclean\"]\n```\n\nPar défaut, le répertoire de sortie est calculé relativement au sous-répertoire `output` du répertoire de l'édition. La commande `--output` peut servir à diriger la sortie vers un répertoire différent.\n\nLes fichiers présents dans le répertoire de sortie sont supprimés avant que soient enregistrés les fichiers des tiddlers spécifiés par le filtre. Pour empêcher cette suppression, ajouter le drapeau ''noclean''.\n\nLes éventuels répertoires manquants dans le chemin spécifié sont créés automatiquement.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Enregistre un wiki dans un nouveau dossier wiki",
"text": "<<.from-version \"5.1.20\">> Enregistre le wiki courant sous la forme d'un dossier wiki, comprenant les tiddlers, les plugins et les informations de configuration :\n\n```\n--savewikifolder <chemindudossierwiki> [<filtre>]\n```\n\n* Le dossier wiki cible doit être vide ou inexistant\n* Le filtre spécifie les tiddlers à inclure. Il est optionnel et vaut par défaut `[all[tiddlers]]`\n* Les plugins appartenant à la bibliothèque officielle de plugins sont remplacés par des références à ces plugins dans le fichier `tiddlywiki.info`\n* Les plugins sur mesure sont déballés dans leur propre dossier\n\nOn utilise typiquement cette commande avec la commande `--load` pour convertir un fichier TiddlyWiki HTML en un dossier wiki :\n\n```\ntiddlywiki --load ./monwiki.html --savewikifolder ./mondossierwiki\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Fournit une interface serveur HTTP à TiddlyWiki (déprécié en faveur de la nouvelle commande listen)",
"text": "Ancienne commande pour servir un wiki sur HTTP.\n\n```\n--server <port> <tiddler-racine> <type-du-rendu> <type-du-service> <nom-d-utilisateur> <mot-de-passe> <machine> <préfixe-des-chemins> <niveau-débogage>\n```\n\nLes arguments sont :\n\n* ''port'' - numéro de port sur lequel servir le contenu ; une valeur non-numérique sera interprétée comme un nom de variable d'environnement du système dont la valeur est le numéro de port (défaut : \"8080\")\n* ''tiddler-racine'' - le titre du tiddler à afficher à la racine de l'URL (défaut : \"$:/core/save/all\") \n* ''type-du-rendu'' - le type avec lequel le contenu du tiddler racine doit être rendu (`text/plain` par défaut)\n* ''type-du-service'' - le type avec lequel le contenu du tiddler racine doit être servi (`text/html` par défaut)\n* ''nom-d-utilisateur'' - le nom d'utilisateur qui servira par défaut à signer les modifications\n* ''mot-de-passe'' - mot de passe optionnel permettant une authentification basique\n* ''machine'' - nom de machine optionnel d'où le contenu doit être servi (\"127.0.0.1\" par défaut, autrement dit \"localhost\")\n* ''préfixe-des-chemins'' - préfixe optionnel pour les chemins de fichiers\n* ''niveau-débogage'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nSi le mot de passe est spécifié en argument, le navigateur demandera à l'utilisateur d'entrer le nom d'utilisateur et le mot de passe. On notera que le mot de passe est transmis en clair, et que cette implémentation ne convient donc pas pour un usage général.\n\nPar exemple :\n\n```\n--server 8080 $:/core/save/all text/plain text/html MonNomUtilisateur m0tdepa55e\n```\n\nLe nom d'utilisateur et le mot de passe peuvent être spécifiés sous forme de chaînes vides si vous avez besoin d'indiquer le nom de machine ou le préfixe des chemins sans pour autant demander un mot de passe :\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nSi vous voulez faire tourner plusieurs serveurs TiddlyWiki en même temps sur la même machine, vous devrez leur assigner chacun un port différent. Il peut être utile d'utiliser une variable d'environnement pour passer le numéro de port au process Node.js. L'exemple suivant utilise une variable d'environnement appelée \"MY_PORT_NUMBER\" :\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MonNomUtilisateur m0tdepa55e\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prépare des tiddlers externes for use",
"text": "//Notez que cette commande est expérimentale et peut changer ou être remplacée avant d'être finalisée//\n\nInitialise le champ spécifié d'un groupe de tiddlers avec le résultat de la wikification d'un tiddler template, la variable `currentTiddler` prenant tour à tour la valeur de chaque tiddler.\n\n```\n--setfield <filtre> <nom-du-champ> <titre-du-template> <type-de-rendu>\n```\n\nLes paramètres sont les suivants :\n\n* ''filtre'' - filtre identifiant les tiddlers cibles\n* ''nom-du-champ'' - le champ à modifier (\"text\" par défaut)\n* ''titre-du-template'' - le tiddler à wikifier dans le champ spécifié. Si manquant ou blanc, le champ spécifié est supprimé\n* ''type-de-rendu'' - le type de texte à utiliser pour le rendu (\"text/plain\" par défaut ; \"text/html\" peut servir à inclure des éléments HTML)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Déballe les tiddlers contenus dans un plugin",
"text": "Extrait les tiddlers utiles d'un plugin, en les créant sous forme de tiddlers ordinaires :\n\n```\n--unpackplugin <titre>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Bascule en mode verbeux",
"text": "Bascule les informations en mode verbeux, pratique pour le débogage.\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Affiche le numéro de version de TiddlyWiki",
"text": "Affiche le numéro de version de TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "Les tiddlers suivants ont été importés :"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Annuler"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "Les tiddlers suivants sont prêts pour l'importation :"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Importer"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Sélectionner"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Statut"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Titre"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Prévisualisation :"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Texte"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Texte (brut)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Champs"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (champs)"
},
"$:/language/Import/Listing/Rename/Tooltip": {
"title": "$:/language/Import/Listing/Rename/Tooltip",
"text": "Renommer le tiddler avant l'importation"
},
"$:/language/Import/Listing/Rename/Prompt": {
"title": "$:/language/Import/Listing/Rename/Prompt",
"text": "Renommer en :"
},
"$:/language/Import/Listing/Rename/ConfirmRename": {
"title": "$:/language/Import/Listing/Rename/ConfirmRename",
"text": "Renommer le tiddler"
},
"$:/language/Import/Listing/Rename/CancelRename": {
"title": "$:/language/Import/Listing/Rename/CancelRename",
"text": "Annuler"
},
"$:/language/Import/Listing/Rename/OverwriteWarning": {
"title": "$:/language/Import/Listing/Rename/OverwriteWarning",
"text": "Un tiddler avec le même titre existe déjà"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Plugin bloqué : incompatible ou obsolète"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Plugin bloqué (la version <<incoming>> en cours d'importation est plus ancienne que la version <<existing>> actuelle)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Plugin mis à jour depuis <<incoming>> vers <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Tiddler d'état temporaire bloqué"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Tiddler système bloqué"
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Tiddler du module //core//"
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "Vous êtes sur le point d'importer un tiddler qui écrasera un tiddler du module //core//. Ceci est déconseillé car cela peut rendre le système instable"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Thème modifié à partir de <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "On dirait que vous essayez de charger un plugin conçu pour ~TiddlyWiki Classic. Merci de noter que [[ces plugins ne fonctionnent pas avec TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. Plugins ~TiddlyWiki Classic détectés :"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "Ce tiddler contient des données binaires"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "Ce tiddler est écrit au format TiddlyWiki Classic, qui n'est pas entièrement compatible avec TiddlyWiki version 5. Pour en savoir plus, rendez-vous à l'adresse https://tiddlywiki.com/static/Upgrading.html."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "mettre à jour"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "tout fermer"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Récent :"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Souhaitez-vous annuler les modifications apportées au tiddler « <$text text=<<title>>/> » ?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Souhaitez-vous supprimer le tiddler « <$text text=<<title>>/> » ?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Souhaitez-vous supplanter le tiddler « <$text text=<<title>>/> » ?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "Vous êtes sur le point d'éditer un ShadowTiddler. Toute modification supplantera la version par défaut du système, rendant les prochaines mises à jour non-triviales. Êtes-vous sûr(e) de vouloir éditer \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "total"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "Nouveau tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> différences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Déposer ici (ou appuyer sur « escape » pour annuler)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Annuler"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Souhaitez-vous supprimer ce mot de passe ? Si oui, ce wiki ne sera plus chiffré lors de la sauvegarde"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Choisir un nouveau mot de passe pour ce TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Nom d'utilisateur"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Mot de passe"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Répéter le mot de passe"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Les mots de passe ne correspondent pas"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Définir ce mot de passe"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Erreur"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "Le fichier a changé sur le serveur"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Erreur de filtre"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Erreur de syntaxe dans l'expression du filtre"
},
"$:/language/Error/FilterRunPrefix": {
"title": "$:/language/Error/FilterRunPrefix",
"text": "Erreur de filtre : Préfixe de run inconnu pour le filtre"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Erreur de filtre : Opérande inconnu pour l'opérateur de filtre 'is'"
},
"$:/language/Error/FormatFilterOperator": {
"title": "$:/language/Error/FormatFilterOperator",
"text": "Erreur de filtre : Suffixe inconnu pour l'opérateur de filtre 'format'"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Erreur lors du chargement de la bibliothèque de plugins"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Erreur Réseau''</h2>Il semble que la connexion au serveur soit perdue. Cela peut indiquer un problème avec votre connexion réseau. Essayez de rétablir la connectivité du réseau avant de continuer.<br><br>''Toute modification non enregistrée sera automatiquement synchronisée lorsque la connectivité sera rétablie''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Erreur dans le widget //transclude// : transclusion récursive"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Erreur pendant la récupération de la liste des tiddlers partiels"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Erreur lors de l'enregistrement vers TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Erreur lors de l'enregistrement"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "Code d'erreur XMLHttpRequest"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Erreur interne JavaScript"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "C'est assez embarrassant. Il est recommandé de rafraîchir l'affichage de votre navigateur"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Caractères illicites dans le nom du champ « <$text text=<<fieldName>>/> ». Les champs ne peuvent contenir que des lettres minuscules non accentuées et les caractères souligné (`_`), tiret (`-`) et point (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Tentative de chargement d'un contenu externe ''<$text text={{!!_canonical_uri}}/>''</p><p>Si ce message ne disparaît pas, il est possible que vous deviez ajuster le type de contenu du tiddler en fonction du type de votre contenu externe, ou vous utilisez peut-être un navigateur qui n'accepte pas les contenus externes dans cette configuration. Voir https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Identification sur TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(aucun)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filtrer par tag :"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Ordre inverse"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Recherche"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Rechercher :"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Afficher :"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Trier par :"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Couleur"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Champs"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(aucune)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icône"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Texte brut"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Outils"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Texte wikifié"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Le tiddler « <$text text=<<currentTiddler>>/> » est manquant -- cliquez sur {{||$:/core/ui/Buttons/edit}} pour le créer"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "Non"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Bibliothèque officielle des plugins ~TiddlyWiki"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "La bibliothèque officielle des plugins ~TiddlyWiki sur tiddlywiki.com. Plugins, thèmes et packs pour les différentes langues sont maintenus par l'équipe responsable du noyau."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Merci d'enregistrer {{$:/core/ui/Buttons/save-wiki}} et de recharger {{$:/core/ui/Buttons/refresh}} pour que les changements apportés aux plugins ~JavaScript prennent effet"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DD MMM YYYY"
},
"$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
"title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
"text": "Ouvre le panneau Recherche Avancée depuis le champ de recherche de la barre latérale"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accepte l'élément sélectionné"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accepte l'élément sélectionné (variante)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Efface le champ d'entrée"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Sélectionne l'élément suivant"
},
"$:/language/Shortcuts/Input/Tab-Left/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
"text": "Sélectionne l'onglet précédent"
},
"$:/language/Shortcuts/Input/Tab-Right/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
"text": "Sélectionne l'onglet suivant"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Sélectionne l'élément précédent"
},
"$:/language/Shortcuts/SidebarLayout/Hint": {
"title": "$:/language/Shortcuts/SidebarLayout/Hint",
"text": "Change la mise en forme de la barre latérale"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "Ceci est un tiddler système"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Inclure les tiddlers système"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Couleur"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Total"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icône"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "Aucune"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DD MMM YYYY à hhh0mm"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "Vos dernières modifications n'ont pas été sauvegardées dans votre TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Oui"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"type": "text/vnd.tiddlywiki",
"subtitle": "Télécharger vos modifications",
"footer": "<$button message=\"tm-close-tiddler\">Fermer</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Votre navigateur ne supporte que l'enregistrement manuel.\n\nPour enregistrer les modifications de votre wiki, faites un clic droit sur le lien de téléchargement ci-dessous et choisissez \"Enregistrer...\" ou \"Télécharger...\", puis choisissez le répertoire et le nom de fichier.\n\n//Il est possible d'accélérer un peu les choses en cliquant sur le lien tout en appuyant sur la touche contrôle (sous Windows) ou la touche option/alt (sous MacOS X). On ne vous demandera pas un nom de fichier ou de répertoire, mais votre navigateur proposera probablement un nom difficile à identifier — il vous faudra sans doute le renommer pour lui ajouter une extension .html avant qu'il soit effectivement utilisable.//\n\nSur les smartphones qui n'autorisent pas le téléchargement de fichiers, vous pouvez ajouter le lien à vos favoris/signets, puis synchroniser vos signets vers un ordinateur de bureau, d'où le wiki pourra être enregistré normalement.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"type": "text/vnd.tiddlywiki",
"subtitle": "Enregistrez votre travail",
"footer": "<$button message=\"tm-close-tiddler\">Fermer</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Les modifications effectuées dans ce wiki doivent être sauvegardées sous forme de fichier ~TiddlyWiki HTML.\n\n!!! Navigateurs de bureau\n\n# Sélectionnez ''Enregistrer sous'' depuis le menu ''Fichier''\n# Choisissez un nom de fichier et un dossier\n#* Certains navigateurs demandent aussi de spécifier explicitement le format d'enregistrement, à savoir ''Page Web, HTML uniquement'' ou quelque chose d'approchant\n# Fermez cet onglet\n\n!!! Navigateurs sur smartphone\n\n# Créez un favori/signet pour cette page\n#* Si vous utilisez iCloud ou Google Sync, le signet sera automatiquement synchronisé avec le navigateur de votre ordinateur de bureau, d'où vous pourrez l'ouvrir et enregistrer le fichier comme indiqué ci-dessus\n# Fermez cet onglet\n\n//Si vous ouvrez à nouveau le signet dans Safari pour mobile, vous verrez ce message une nouvelle fois. Si vous voulez continuer et utiliser le fichier, cliquez simplement sur le bouton ''Fermer'' ci-dessous//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DD MMM YYYY"
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Wiki enregistré"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Enregistrement du wiki en cours"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copié dans le presse-papier !"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "La copie dans le presse-papier a échoué !"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "Liste"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filtrer"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Recherche via une combinaison de [[filtres|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> correspondances</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> correspondances</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "Toutes les correspondances :"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Correspondances sur les titres :"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Recherche"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Texte de recherche trop court"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Recherche parmi les tiddlers //shadow//"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> correspondances</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Recherche parmi les tiddlers standard"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> correspondances</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "Système"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Recherche parmi les tiddlers //système//"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> correspondances</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "Tout"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Sommaire"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Brouillons"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorateur"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Manquants"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "Plus"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Ouverts"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphelins"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Récents"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "Système"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "sans tag"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Outils"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "un carnet de notes web personnel et non linéaire"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "Mon ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Liste de tiddlers par tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Définition de macro",
"text": "\\define Nomdemacro(param1:\"valeur par défaut\",param2)\nTexte de la macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Tableau avec 4 colonnes par trois lignes",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!Un | | | | |\n|!Deux | | | | |\n|!Trois | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table des matières",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Réglages du thème"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "Vous pouvez ajuster certains aspects du thème ''Vanilla''."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Agencement de la barre latérale"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Déroulé fixe, barre latérale extensible"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Déroulé extensible, barre latérale fixe"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Titres accrochés"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Lorsqu'on fait défiler le déroulé, les titres des tiddlers s'accrochent en haut de la fenêtre du navigateur tant que le contenu de leur tiddler est visible. Attention : ne fonctionne pas du tout avec Chrome, et peut causer quelques problèmes de mise en page dans Firefox"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Enroule les lignes trop longues à l'intérieur des blocs de code"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Réglages"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Famille de polices"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Famille de polices pour le code"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Famille de polices pour l'éditeur"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Image de fond de page"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Arrimage de l'image de fond de page"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Défile avec les tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Arrimée à la fenêtre"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Taille de l'image de fond de page"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Élargie"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contenue"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Tailles"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Taille police"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Hauteur ligne"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Taille de la police dans le corps des tiddlers"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Hauteur de ligne dans le corps des tiddlers"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Gauche du déroulé"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "marge gauche entre le déroulé principal<br>(zone des tiddlers) et le bord gauche de la page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Haut du déroulé"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "marge supérieure entre le déroulé pincipal<br>et le bord supérieur de la page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Droite du déroulé"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "marge de gauche entre la barre latérale<br>et le bord gauche de la page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Largeur du déroulé"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "largeur hors tout du déroulé"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Largeur des tiddlers"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "largeur des tiddlers dans le déroulé"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Décroché de la barre latérale"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "largeur minimum de la page à partir de laquelle déroulé principal et barre latérale apparaissent côte à côte"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Largeur de la barre latérale"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "largeur de la barre latérale dans l'agencement //déroulé extensible—barre latérale fixe//"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Avancé"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "aucune information"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Détails sur le plugin"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "Ce plugin contient les tiddlers <q>shadow</q> suivants :"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Statut <q>shadow</q>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "Le tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> n'est pas un tiddler <q>shadow</q>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "Le tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> est un tiddler <q>shadow</q>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "Il est défini dans le plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "Il est modifié par un tiddler normal"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Champs"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "Liste"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "Ce tiddler ne contient pas de champ //list//"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listé"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "Ce tiddler ne figure dans le champ //list// d'aucun autre tiddler"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "Références"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "Aucun tiddler ne comporte de lien vers celui-ci"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Étiquetage"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "Le titre de ce tiddler ne sert de tag à aucun tiddler"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Outils"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "Code JavaScript",
"name": "application/javascript",
"group": "Développeur",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "Données au format JSON",
"name": "application/json",
"group": "Développeur",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Dictionnaire de données",
"name": "application/x-tiddler-dictionary",
"group": "Développeur",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "Image au format GIF",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "Image au format JPEG",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "Image au format PNG",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Image au format SVG",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "Fichier icone au format ICO",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Feuille de style CSS statique",
"name": "text/css",
"group": "Développeur",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "Marquage HTML",
"name": "text/html",
"group": "Texte",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Format texte",
"name": "text/plain",
"group": "Texte",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki version 5",
"name": "text/vnd.tiddlywiki",
"group": "Texte",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Texte",
"group-sort": "0"
},
"$:/languages/fr-FR/icon": {
"title": "$:/languages/fr-FR/icon",
"type": "image/svg+xml",
"text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"900\" height=\"600\"><rect width=\"900\" height=\"600\" fill=\"#ED2939\"/><rect width=\"600\" height=\"600\" fill=\"#fff\"/><rect width=\"300\" height=\"600\" fill=\"#002395\"/></svg>\n"
}
}
}
Tu me prends pour un pique-nique-douille <$appear type="popup">{{piquenidouille}}</$appear> ?
$:/themes/nico/notebook/palettes/palette-beige
{
"tiddlers": {
"$:/plugins/bimlas/disqus/README/CHANGELOG": {
"title": "$:/plugins/bimlas/disqus/README/CHANGELOG",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "I'm trying to follow the rules of [[Semantic Versioning|https://semver.org/]].\n\n!! 1.1.2\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-disqus/compare/v1.0.0...v1.1.2]]\n\n* [[Added|https://gitlab.com/bimlas/tw5-disqus/merge_requests/2]] toolbar button for jumping to Disqus comments\n* [[Fixed|https://gitlab.com/bimlas/tw5-disqus/merge_requests/1]] generation of static pages\n* [[Changed|https://gitlab.com/bimlas/tw5-disqus/commit/324be06048616b6753729d0607b0fd7c7c6b6c4f]] Disqus icon to SVG format\n\n!! 1.0.0\n\n* First public release\n"
},
"$:/plugins/bimlas/disqus/README/FAQ": {
"title": "$:/plugins/bimlas/disqus/README/FAQ",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Frequently asked questions\n\n!! Can I use on \"read only\" on wiki?\n\nDisqus is responsible for storing and managing comments, there is nothing to store in ~TiddlyWiki other than settings.\n\n!! Will I be notified when a new comment is posted?\n\nIt depends on your [[Disqus settings|https://help.disqus.com/user-profile/updating-your-disqus-settings]].\n\n!! The links in the email notification do not work\n\nDisqus does not handle permalinks (that's how ~TiddlyWiki identifies tiddlers), so the `#` character has been removed from the URL. Add `#` to the end of your website URL before the tiddler title. For example if the mail contains https://tiddlywiki.com/PermaLinks, write to https://tiddlywiki.com/#PermaLinks.\n\n!! Counters do not always appear\n\nI don't know the reason, but it seems that until we open a conversation thread, the corresponding counter cannot be polled, so the default text will appear (you can define it in the plugin settings)."
},
"$:/plugins/bimlas/disqus/README/README": {
"title": "$:/plugins/bimlas/disqus/README/README",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Disqus comments\n\nUse this plugin to give your visitors the opportunity to comment on your\ntiddlers without changing the wiki itself. See the bottom of this tiddler for example.\n\n* https://gitlab.com/bimlas/tw5-disqus (main repository)\n* https://github.com/bimlas/tw5-disqus (mirror, ''please add a star if you like the plugin'')\n\n[[Disqus|https://disqus.com/]] is a networked community platform used by hundreds of thousands\nof sites all over the web. With Disqus, your website gains a feature-rich\ncomment system complete with social network integration, advanced\nadministration and moderation options, and other extensive community functions.\n\n!! Installation instructions\n\nTo add the plugin to your own ~TiddlyWiki5, just drag this link to the browser window:\n\n$:/plugins/bimlas/disqus\n\nFor other installation options see the repositories above.\n\n//Select the next tab to continue.//\n"
},
"$:/plugins/bimlas/disqus/README/setup": {
"title": "$:/plugins/bimlas/disqus/README/setup",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Setup\n\nBefore you using the plugin, you need to create the Disqus forum to your wiki.\n\n* Make yourself a [[Disqus account|https://disqus.com/]] if you don't already have one.\n* When it ask about \"What would you like to do with Disqus?\", select \"I want to install Disqus on my site\"\n* Fill out the form and copy the shortname (unique Disqus URL) under the website name to the [[settings of the plugin|$:/plugins/bimlas/disqus/settings/settings]]\n* Select your Disqus plan (free / paid)\n* You can skip the platform selection (Wordpress, Blogger, etc.) and continue with configuration\n* Fill out the website URL and copy to the [[settings of the plugin|$:/plugins/bimlas/disqus/settings/settings]]\n* Complete the setup and refresh your wiki\n* If not works, you probably forgot to press \"Dismiss Setup\" on the \"Setup Complete!\" page on Disqus\n\n//Select the next tab to continue.//\n"
},
"$:/plugins/bimlas/disqus/images/disqus.svg": {
"title": "$:/plugins/bimlas/disqus/images/disqus.svg",
"text": "<svg class=\"tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"28 28 145 145\">\n<path d=\"M102.535 167.5c-16.518 0-31.621-6.036-43.298-16.021L30.5 155.405l11.102-27.401A67.658 67.658 0 0 1 35.564 100c0-37.277 29.984-67.5 66.971-67.5 36.984 0 66.965 30.223 66.965 67.5 0 37.284-29.98 67.5-66.965 67.5zm36.567-67.693v-.188c0-19.478-13.736-33.367-37.42-33.367h-25.58v67.5h25.201c23.868.001 37.799-14.468 37.799-33.945zm-37.138 17.361h-7.482V82.841h7.482c10.989 0 18.283 6.265 18.283 17.07v.188c0 10.896-7.294 17.069-18.283 17.069z\"/>\n</svg>\n"
},
"$:/plugins/bimlas/disqus/macro/comments": {
"title": "$:/plugins/bimlas/disqus/macro/comments",
"text": "/*\\\nmodule-type: macro\ntags: $:/tags/Macro\ntitle: $:/plugins/bimlas/disqus/macro/comments\ntype: application/javascript\n\nDisplay Disqus comments\n\n\\*/\n(function() {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\tvar LOADER_ID = \"DISQUS-LOADER\";\n\tvar THREAD_ID = \"disqus_thread\";\n\n\texports.name = \"disqus-comments\";\n\n\texports.params = [\n\t\t{\"name\": \"current\"},\n\t];\n\n\t/*\n\tRun the macro\n\t*/\n\texports.run = function(current) {\n\t\t// Interactive DOM not available when generating static pages\n\t\tif (!$tw.browser) return;\n\n\t\t/* Remove current Disqus */\n\t\tvar current_disqus = document.getElementById(LOADER_ID);\n\t\tif(current_disqus !== null) {\n\t\t\t(document.head || document.body).removeChild(current_disqus);\n\t\t}\n\n\t\twindow.disqus_config = function() {\n\t\t\tthis.page.url = $tw.wiki.getTiddlerText('$:/config/bimlas/disqus/url') + encodeURIComponent(current);\n\t\t};\n\n\t\t/* Load Disqus */\n\t\tvar loader = document.createElement('script');\n\t\tloader.src = 'https://' + $tw.wiki.getTiddlerText('$:/config/bimlas/disqus/shortname') + '.disqus.com/embed.js';\n\t\tloader.id = LOADER_ID;\n\t\tloader.setAttribute('data-timestamp', (new Date()).toString());\n\t\t(document.head || document.body).appendChild(loader);\n\n\t\t$tw.utils.nextTick(function() {\n\t\t\t$tw.rootWidget.dispatchEvent({\n\t\t\t\ttype: \"disqus-did-insert-element\",\n\t\t\t\ttarget: document.getElementById(THREAD_ID)\n\t\t\t});\n\t\t});\n\n\t\treturn '<div id=\"' + THREAD_ID + '\"></div>'\n\t};\n\n})();\n",
"module-type": "macro",
"tags": "$:/tags/Macro",
"type": "application/javascript"
},
"$:/plugins/bimlas/disqus/macro/counter": {
"title": "$:/plugins/bimlas/disqus/macro/counter",
"text": "/*\\\nmodule-type: macro\ntags: $:/tags/Macro\ntitle: $:/plugins/bimlas/disqus/macro/counter\ntype: application/javascript\n\nDisplay Disqus comments counter\n\n\\*/\n(function() {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\texports.name = \"disqus-counter\";\n\n\texports.params = [\n\t\t{\"name\": \"current\"},\n\t];\n\n\t/*\n\tRun the macro\n\t*/\n\texports.run = function(current) {\n\t\t// Interactive DOM not available when generating static pages\n\t\tif (!$tw.browser) return;\n\n\t\t/* Get counter loader */\n\t\tif(document.getElementById(\"dsq-count-scr\") === null) {\n\t\t\tvar loader = document.createElement('script');\n\t\t\tloader.src = 'https://' + $tw.wiki.getTiddlerText('$:/config/bimlas/disqus/shortname') + '.disqus.com/count.js';\n\t\t\tloader.id = 'dsq-count-scr';\n\t\t\tloader.setAttribute('async','');\n\t\t\tdocument.head.appendChild(loader);\n\t\t}\n\n\t\t/* Update newly added counters */\n\t\t$tw.hooks.addHook(\"th-page-refreshed\", function() {\n\t\t\tif (window.DISQUSWIDGETS) {\n\t\t\t\twindow.DISQUSWIDGETS.getCount({reset: true});\n\t\t\t}\n\t\t});\n\n\t\treturn '(<span class=\"disqus-comment-count\" data-disqus-url=\"' + $tw.wiki.getTiddlerText('$:/config/bimlas/disqus/url') + encodeURIComponent(current) + '\">' + $tw.wiki.getTiddlerText('$:/config/bimlas/disqus/counter-default') + '</span>)';\n\t};\n\n})();\n",
"module-type": "macro",
"tags": "$:/tags/Macro",
"type": "application/javascript"
},
"$:/config/bimlas/disqus/counter-default": {
"title": "$:/config/bimlas/disqus/counter-default",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "?"
},
"$:/config/bimlas/disqus/filter": {
"title": "$:/config/bimlas/disqus/filter",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "[!is[system]]"
},
"$:/plugins/bimlas/disqus/settings/settings": {
"title": "$:/plugins/bimlas/disqus/settings/settings",
"tags": "$:/tags/ControlPanel",
"type": "text/vnd.tiddlywiki",
"caption": "Disqus",
"text": "<$list filter=\"[[$:/ControlPanel]!is[current]]\">\n Configuration for the plugin can be done from within the Disqus tab in the [[ControlPanel|$:/ControlPanel]] as well.\n</$list>\n<$list filter=\"[[$:/ControlPanel]is[current]]\">\n Configuration for the [[Disqus plugin|$:/plugins/bimlas/disqus]].\n</$list>\n\n|[[Website shortname (from unique Disqus URL)|$:/config/bimlas/disqus/shortname]]<blockquote>''Needs restart''<br/>If you can't find it, [[have a look at the help|https://help.disqus.com/installation/whats-a-shortname]]</blockquote> |<$edit-text tiddler=\"$:/config/bimlas/disqus/shortname\" default=\"\" tag=\"input\"/><br/>//For example https://SHORTNAME.disqus.com/ // |\n|[[Website URL|$:/config/bimlas/disqus/url]] |<$edit-text tiddler=\"$:/config/bimlas/disqus/url\" default=\"\" tag=\"input\"/><br/>//For example https://me.github.io/ (don't forget to add trailing slash) or https://tiddlywiki.com/empty.html // |\n|[[Counter default text|$:/config/bimlas/disqus/counter-default]]<blockquote>Default text if tiddler thread has not yet been created (probably does not contain any comments) or can not connect to Disqus</blockquote> |<$edit-text tiddler=\"$:/config/bimlas/disqus/counter-default\" default=\"\" tag=\"input\"/> |\n|[[Filter|$:/config/bimlas/disqus/filter]]<blockquote>Which tiddlers would you like to comment on?</blockquote> |<$edit-text tiddler=\"$:/config/bimlas/disqus/filter\" default=\"\" tag=\"input\"/> |"
},
"$:/plugins/bimlas/disqus/stylesheet": {
"title": "$:/plugins/bimlas/disqus/stylesheet",
"tags": "$:/tags/Stylesheet",
"type": "text/css",
"text": ".bimlas-disqus-toggle {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: right;\n}\n\n.bimlas-disqus-toggle img {\n\theight: 1rem;\n}\n"
},
"$:/plugins/bimlas/disqus/template": {
"title": "$:/plugins/bimlas/disqus/template",
"tags": "$:/tags/ViewTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[all[current]subfilter{$:/config/bimlas/disqus/filter}]\" variable=\"doNotOverrideCurrent\">\n\t<$set name=\"stateTiddler\" value=\"$:/state/bimlas/disqus\">\n\t\t<$reveal type=\"nomatch\" state=<<stateTiddler>> text=<<currentTiddler>>>\n\t\t\t@@.bimlas-disqus-toggle\n\t\t\t\t<$button class=\"tc-btn-invisible\" set=<<stateTiddler>> setTo=<<currentTiddler>> >\n\t\t\t\t\t{{$:/core/images/down-arrow}}\n\t\t\t\t\t{{$:/plugins/bimlas/disqus/images/disqus.svg}}\n\t\t\t\t\tShow Disqus comments\n\t\t\t\t</$button>\n\t\t\t\t<$macrocall $name=\"disqus-counter\" current=<<currentTiddler>>/>\n\t\t\t@@\n\t\t</$reveal>\n\t\t<$reveal type=\"match\" state=<<stateTiddler>> text=<<currentTiddler>>>\n\t\t\t@@.bimlas-disqus-toggle\n\t\t\t\t<$button class=\"tc-btn-invisible\" set=<<stateTiddler>> setTo=\"\">\n\t\t\t\t\t{{$:/core/images/up-arrow}}\n\t\t\t\t\t{{$:/plugins/bimlas/disqus/images/disqus.svg}}\n\t\t\t\t\tHide Disqus comments\n\t\t\t\t</$button>\n\t\t\t\t<$macrocall $name=\"disqus-counter\" current=<<currentTiddler>>/>\n\t\t\t@@\n\n\t\t\t<$macrocall $name=\"disqus-comments\" current=<<currentTiddler>>/>\n\n\t\t</$reveal>\n\t</$set>\n</$list>\n"
},
"$:/plugins/bimlas/disqus/viewtoolbar/disqus-open-listener.js": {
"title": "$:/plugins/bimlas/disqus/viewtoolbar/disqus-open-listener.js",
"text": "/*\\\ntitle: $:/plugins/bimlas/disqus/viewtoolbar/disqus-open-listener.js\ntype: application/javascript\nmodule-type: startup\n\nAdd event listener for Disqus toolbar button\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"open-disqus\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"disqus-did-insert-element\", function(event) {\n\t\t$tw.pageScroller.scrollIntoView(event.target);\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/bimlas/disqus/viewtoolbar/disqus-open": {
"title": "$:/plugins/bimlas/disqus/viewtoolbar/disqus-open",
"tags": "$:/tags/ViewToolbar",
"type": "text/vnd.tiddlywiki",
"caption": "{{$:/core/images/add-comment}} disqus comments",
"description": "View Disqus comments",
"list-before": "$:/core/ui/Buttons/info",
"text": "\\whitespace trim\n<$list filter=\"[all[current]subfilter{$:/config/bimlas/disqus/filter}]\" variable=\"doNotOverrideCurrent\">\n\t<$button tooltip=\"View Disqus comments\" aria-label=\"disqus comments\" class=<<tv-config-toolbar-class>> set=\"$:/state/bimlas/disqus\" setTo=<<currentTiddler>> >\n\t\t<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n\t\t\t{{$:/plugins/bimlas/disqus/images/disqus.svg}}\n\t\t</$list>\n\t\t<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n\t\t\t<span class=\"tc-btn-text\">\n\t\t\t\t<$text text=\" \"/>\n\t\t\t\t<$text text=\"view disqus comments\"/>\n\t\t\t</span>\n\t\t</$list>\n\t</$button>\n</$list>\n"
}
}
}
{
"tiddlers": {
"$:/plugins/danielo515/2click2edit/ClickListener.js": {
"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})();",
"title": "$:/plugins/danielo515/2click2edit/ClickListener.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/danielo515/2click2edit/readme": {
"title": "$:/plugins/danielo515/2click2edit/readme",
"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"
},
"$:/plugins/danielo515/2click2edit/ui/ViewTemplate": {
"tags": "$:/tags/ViewTemplate",
"title": "$:/plugins/danielo515/2click2edit/ui/ViewTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$click>"
}
}
}
{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20200323092614036","modified":"20200325085725882","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\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/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20200323092614037","modified":"20200323092631048","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\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<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20200323093719256","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20200323093719649","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n<span class=\"badge badge-$type$\">$src$</span>\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n<span class=\"badge badge-pill badge-$type$\">$src$</span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20200323093719684","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n<div class=\"card mb-3 $class$\" style=\"width:$width$;\">\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n <div class=\"card-header\">$header$</div>\n</$reveal>\n<div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n <div class=\"h6 card-subtitle mb-2 text-muted\">$subtitle$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\"><<__text__>></div>\n </$reveal>\n</div>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <div class=\"card-footer text-muted\">$footer$</div>\n</$reveal>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/dbadge":{"title":"$:/plugins/kookma/shiraz/macros/dbadge","created":"20181203212737578","modified":"20200323093719698","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n<div class=\"dbadge\"><span class=\"dbadge-subject\">$subject$</span><span class=\"dbadge-status dbadge-$type$ \">$status$</span></div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"title":"$:/plugins/kookma/shiraz/macros/details","created":"20181101185833098","modified":"20200323093719704","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(sum:\"summary\", src:\"source\", status:\"\", class:\"\", style:\"\")\n<details $status$>\n <summary style=\"$style$\">$sum$</summary>\n <div class=\"$class$\">\n\t\n $src$\n </div>\n</details>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"title":"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete","created":"20191129201531051","modified":"20200323093719713","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n<!-- reveals deletion confirmation -->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<<currentTable>> tag=\"tr\">\n<th colspan=<<ncols>> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<<ask-for-delete>> >\n <<perform-delete>>\n</$list>\n</th>\n</$reveal>\n</$list>\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfilter<inputFilter>count[]]\">\n Delete all <<ntids>> records?\n\t<$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n {{$:/core/images/close-button}} no\n </$button>\n</$set>\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n <$list filter=<<inputFilter>> variable=\"currentRecord\">\n <$action-deletetiddler $tiddler=<<currentRecord>>/>\n </$list>\n\t\t {{$:/core/images/delete-button}} delete\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n </$button>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/display-extrecord":{"title":"$:/plugins/kookma/shiraz/macros/dtables/display-extrecord","created":"20191203155802107","modified":"20200323093719719","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-extended-record()\n<td colspan=<<ncols>> >\n<$tiddler tiddler=<<currentRecord>> >\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore\n emptyMessage=\"\"\"<$transclude tiddler=<<currentRecord>> field=text mode=block/>\"\"\" >\n <$edit-text class=\"tbl-inpt-edit\" tiddler=<<currentRecord>> field=\"text\" tag=textarea/>\n</$list>\n</$tiddler>\n</td>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"title":"$:/plugins/kookma/shiraz/macros/dtables/helper","created":"20191203102929722","modified":"20200323093719728","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter() $(columns)$ tbl-delete\n\n\\define tempTable() $:/state/dynamictables/$(currentTable)$\n\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\n\\define keepstate() $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle() $(keepstate)$/style\n\\define tempWarningMsg() $(keepstate)$/warning\n\n<!-- \n Those tiddlers based on keepstate are permanent.\n These are tiddlers hold the data and setting for footer, styles and warning (needs to be hold).\n These state and temporary tiddlers are independent of currentTiddler (host tiddler) and on changing\n the title of host tiddler will not disconnected to table\n-->"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"title":"$:/plugins/kookma/shiraz/macros/dtables/maths","created":"20200209153246553","modified":"20200323093719735","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define minall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>maxall[]] }}}/>\n\\define count() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]] }}}/>\n\\define product() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>product[]] }}}/>\n\\define average(pn:0)\n<$vars\n xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}}\n\txsum ={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]] }}} >\n <$text text={{{ [<xsum>divide<xcount>fixed[$pn$]] }}}/>\n</$vars>\n\\end\n\n\\define median(pn:0)\n<$vars xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}} >\n\t<$list filter=\"[<xcount>remainder[2]match[0]]\" variable=ignore>\n\t<!-- even number --> \n\t<$vars mid0={{{ [<xcount>divide[2]] }}} \n mid1={{{ [<xcount>divide[2]add[1]] }}} >\t\t \n <$text text={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid0>last[]][subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid1>last[]]+[sum[]divide[2]fixed[$pn$]]}}} />\n </$vars>\n </$list>\n <$list filter=\"[<xcount>remainder[2]!match[0]]\" variable=ignore>\n\t<!-- odd number --> \n\t<$vars mid={{{ [<xcount>divide[2]ceil[]] }}} >\n <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid>last[]]}}} />\n\t</$vars>\n </$list>\n</$vars>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"title":"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell","created":"20200209135600453","modified":"20200323093719743","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$transclude tiddler=<<currentRecord>> index=<<currentColumn>> mode=\"inline\" />\n </$list>\n\\end\t\n\\define editCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$edit-text tiddler=<<currentRecord>> field=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$edit-text tiddler=<<currentRecord>> index=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n\\end\n\n\\define showCell_Locked()\n <span style=\"font-style:oblique;\"><<showCell>></span>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic","created":"20200209100939116","modified":"20200323093719750","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\", footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\")\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n<!--above commands import utility macros-->\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<<currentTiddler>> >\n<!-- check what type of columns are sent, fileds or indexes (data tiddlers as records) -->\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<<check_tiddlers_type_for_table_from_indexes isEditable:\"$editButton$\">>\n<$set name=columns filter=\"[<fieldOrIndex>]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n<!--check input filter parameter-->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" emptyMessage=\"filter input is empty\" variable=ignore>\n<$set name=sortneg tiddler=<<tempTableSort>> index=\"negate\">\n<!--calculate the number of columns in edit and view mode -->\n<$set name=ncols filter=\"[subfilter<columnFilter>] -[[tbl-delete]] [<tempTableEdit>getindex[mode]match[edit]] +[count[]]\" >\n<div class=\"tbl-container\" style=\"max-width:100%;\">\n<table class=<<__class__>> style=\"caption-side:top\">\n<!-- reveal caption and edit button -------------------->\n<caption style=\"text-align:left;\">\n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<span style=\"padding-right:5px;padding-left:3px;\"><<toggle-edit-view>></span></$list>\n$caption$</caption>\n\n<!-- create header -------------------->\n<thead>\n<<confirm-delete>>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<headerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<<headerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</thead>\n\n<!-- create footer -------------------->\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<footerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<<footerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</$list>\n</$reveal>\n\n<!-- reveal main body of table (generate records) -------------------->\n<tbody>\n<$set name=tableBody filter=\"[<fieldOrIndex>]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n<$macrocall $name=<<tableBody>> />\n</$set>\n</tbody>\n</table>\n</div><!-- container-->\n</$set>\n</$set>\n</$list><!--check input filter parameter-->\n</$set>\n</$set>\n</$set>\n</$vars>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-utility","created":"20200209195541061","modified":"20200323093719755","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields() $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes() [enlist<items>]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<<tempTableSort>> index=\"sortIndex\">\n<$list filter=\"[subfilter<inputFilter>!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [<currentTiddler>getindex<Index>addsuffix[°≡°]] }}}<<currentTiddler>><$text text=\"]]\"/>\n</$list>\n</$set>\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<<tempTableStyle>> index=<<currentRecord>> />\"\"\" mode=\"inline\">\n<tr style=<<rowStyle>>>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list<currentColumn>]\n +[limit[1]get[title]]\"\n value=<<bodyLookup>> \n emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<<bodyLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n<!-- reveal expanded record-->\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"tr\">\n<<display-extended-record>>\n</$reveal>\n</$wikify>\n\\end\n\n\\define display_body_fields()\n<$list filter=<<tableFilter_fields>> variable=\"currentRecord\">\n<<display_one_record>>\n</$list>\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<<getitems>> > \n<$list filter=<<tableFilter_indexes>> variable=\"currentItem\" >\n<$list filter=\"[<currentItem>split[°≡°]last[]]\" variable=\"currentRecord\">\n <<display_one_record>>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"title":"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view","created":"20191128215812372","modified":"20200323093719762","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"title":"$:/plugins/kookma/shiraz/macros/dtables/warning_message","created":"20200210083402839","modified":"20200323093719767","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n<details>\n <summary>List tiddlers with wrong type</summary>\n\t<dl>\n <$list filter=\"[subfilter<inputFilter>]\">\n\t<$list filter=\"[<currentTiddler>get[type]match[application/x-tiddler-dictionary]][<currentTiddler>get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"<dt><$link/></dt><dd><$view field=type/></dd>\"\"\">\n\t</$list>\n\t</$list>\n\t</dl>\n</details>\n\\end\n\n\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.<br>\n<br>\nCheck the tiddler types to find which tiddlers are not of dataTiddler types!<br>\n<<show_tiddler_types>>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n <$list filter=\"[<fieldOrIndex>]-field\" variable=ignore><!-- only dataTiddler -->\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> <!-- only editable table -->\n\t<$list filter=\"[<tempWarningMsg>is[missing]]\" variable=ignore><!-- dismiss if tempWarningMsg is set -->\n\t<$list filter=\"[subfilter<inputFilter>each[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t <div 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! \n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n <$action-setfield $tiddler=<<tempWarningMsg>> text=\"dissmiss\"/>\n </$button>\n\t </div>\n\t <div style=\"border:1px solid #ff0033;padding:8px;\">\n\t <<show_warning_message>>\n\t </div>\n </$list>\n\t</$list>\n\t</$list>\n\t</$list>\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"title":"$:/plugins/kookma/shiraz/macros/image-basic","created":"20181119183704246","modified":"20200323093719776","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-simple image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-card-utility","created":"20191209113750505","modified":"20200323093719788","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"title":"$:/plugins/kookma/shiraz/macros/image-card","created":"20190913094619863","modified":"20200323093719782","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<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay-utility","created":"20191209114338849","modified":"20200323093719804","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay","created":"20181117203737197","modified":"20200323093719798","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<div class=\"image-overlay-container image-align-$align$\" style=\"width:$width$;\">\n <h3 class=\"image-overlay-title\">$caption$</h3>\n <div class=\"image-overlay-content\">\n <div class=\"image-overlay-content-overlay\"></div>\n <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n <div class=<<_cls-content-details>> >\n <h3 class=\"image-overlay-content-title\">$title$</h3>\n <p class=\"image-overlay-content-text\">$text$</p>\n </div>\n </$set>\n </div>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"title":"$:/plugins/kookma/shiraz/macros/image-polaroid","created":"20181117203654803","modified":"20200323093719811","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-polaroid image-align-$align$\" style=\"width:$width$;\">\n <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n <figcaption class=\"image-polaroid-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"title":"$:/plugins/kookma/shiraz/macros/image-pretty","created":"20181117203541398","modified":"20200323093719817","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-pretty image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption class=\"image-pretty-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"title":"$:/plugins/kookma/shiraz/macros/image-slidein","created":"20181117040544570","modified":"20200323093719824","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n<figure class=\"image-slidein mr-cap-$slidein$ image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"title":"$:/plugins/kookma/shiraz/macros/list-search","author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20200323093719831","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix<qualify>]\">\n<div class=<<__class__>> >\n<$edit-text tiddler=<<state>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n</div>\n<$reveal state=<<state>> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n</$reveal>\n<$reveal state=<<state>> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<<state>> field=\"text\">\n<$list filter=\"$filter$+[$search$<term>]\" template=<<__template__>>/>\n</$set>\n</$reveal>\n</$set>\n\\end\n<!-- from Tobias Beer list-search with modification-->"},"$:/plugins/kookma/shiraz/macros/multicol":{"title":"$:/plugins/kookma/shiraz/macros/multicol","created":"20191018063242993","modified":"20200323093719835","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n<div class=\"sh-multicol$ncol$ $class$\">\n\n$src$\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"title":"$:/plugins/kookma/shiraz/macros/slider","created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20201113161937207","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n<h2 class=\"$labelClass$\">\n <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/right-arrow\" /></span>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/down-arrow\" /></span>\n </$button>\n </$reveal>\n $label$\n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"title":"$:/plugins/kookma/shiraz/macros/space","created":"20170629183034888","modified":"20200323093719849","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n<p style=\"margin-bottom: $height$;\"></p>\n\\end\n\n\\define hspace(width:\"25px\")\n<span style=\"margin-left: $width$;\"></span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"title":"$:/plugins/kookma/shiraz/macros/text-utility","created":"20181101154956345","modified":"20200323093719853","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") <span style=\"color:$color$;\">$src$</span>\n\\define bc(src:\"\", color:\"yellow\") <span style=\"background-color:$color$;\">$src$</span>\n\\define mono(src:\"\", class:\"\") <code class=\"mono $class$\">$src$</code>\n\\define transform(case:\"\", src:\"\", class:\"\") <span class=\"text-$case$ $class$\">$src$</span>"},"$:/plugins/kookma/shiraz/readme":{"title":"$:/plugins/kookma/shiraz/readme","created":"20200323092614037","modified":"20200323134846163","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework including stylesheets, templates and macros to create stylish contents in Tiddlywiki. It uses modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, badges, texts, ...\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":{"title":"$:/plugins/kookma/shiraz/styles/alerts-leftbar","text":".leftbar{\n border-width:0px !important;\n border-radius:0px !important;\n border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20200323093719861","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"title":"$:/plugins/kookma/shiraz/styles/bs/alerts","text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20200323093719869","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/background-colors","text":".bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}","created":"20180820170518161","modified":"20200323093719877","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"title":"$:/plugins/kookma/shiraz/styles/bs/badge","text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20200323093719884","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"title":"$:/plugins/kookma/shiraz/styles/bs/borders","text":".border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20200323093719893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"title":"$:/plugins/kookma/shiraz/styles/bs/btn","text":"/* Button and btn classes Mohammad*/\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm{\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20200323093719900","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-column","text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}","created":"20181122175345419","modified":"20200323093719915","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-deck","text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}","created":"20180822174847352","modified":"20200323093719923","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-group","text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n","created":"20181122175111676","modified":"20200323093719932","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"title":"$:/plugins/kookma/shiraz/styles/bs/card","text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20200323093719907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"title":"$:/plugins/kookma/shiraz/styles/bs/clearfix","text":".clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}","created":"20190919042042391","modified":"20200323093719936","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"title":"$:/plugins/kookma/shiraz/styles/bs/float","text":".float-left {\n float: left;\n}\n\n.float-right {\n float: right;\n}\n\n.float-none {\n float: none;\n}\n","created":"20180823142040855","modified":"20200323093719944","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"title":"$:/plugins/kookma/shiraz/styles/bs/my-adjustment","text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20200323093719950","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"title":"$:/plugins/kookma/shiraz/styles/bs/shadow","text":".shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}","created":"20180823114259911","modified":"20200323093719957","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"title":"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing","text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20200323093719964","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-alignment","text":".text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}","created":"20180822051223866","modified":"20200323093719971","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-colors","text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","created":"20180820173351023","modified":"20200323093719978","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-utility","text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\n.h1 {\n font-size: 2.5rem;\n}\n\n.h2 {\n font-size: 2rem;\n}\n\n.h3 {\n font-size: 1.75rem;\n}\n\n.h4 {\n font-size: 1.5rem;\n}\n\n.h5 {\n font-size: 1.25rem;\n}\n\n.h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20200323093719985","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"title":"$:/plugins/kookma/shiraz/styles/clear-float","text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n content: \"\";\n display: table;\n}\n.tc-tiddler-body:after {\n clear: both;\n}\n.tc-tiddler-body {\n zoom: 1;\n}","created":"20190902043605186","modified":"20200323093719992","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373 !important;\n font-weight: bold;\n color: #DB4C3F !important;\n}","created":"20191209105546612","modified":"20200323093719997","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"title":"$:/plugins/kookma/shiraz/styles/dbadge","text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n color: #ffffff;\n font-size: 0.8em;\n font-weight: 400;\n line-height: 1;\n padding: .2em .6em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;}\n\n.dbadge-subject{\n background-color: #656565;\n border-bottom-left-radius: 0.25em;\n border-top-left-radius: 0.25em;}\n.dbadge-status {\n border-bottom-right-radius: 0.25em;\n border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n background-color: #337ab7;}\n.dbadge-success {\n background-color: #5cb85c;}\n.dbadge-info {\n background-color: #5bc0de;}\n.dbadge-warning {\n background-color: #f0ad4e;}\n.dbadge-danger {\n background-color: #d9534f;}","created":"20181204192835967","modified":"20200323093720003","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"title":"$:/plugins/kookma/shiraz/styles/details-slider","text":"/*details html5 macro*/\ndetails > summary {\n padding: 2px 6px;\n font-weight:500;\n outline:none;\n}\ndetails > div {\n padding: 2px 6px;\n margin: 0;\n}\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;}","created":"20181101185908941","modified":"20200325083406128","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables","text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n width:100%;\n padding-left: 5px;\n border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n outline: none;\n border: 1px solid #5778d8;\n background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground:#f0f0f0; \n\tborder:none;\n}","created":"20191128184537594","modified":"20200323093720018","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"title":"$:/plugins/kookma/shiraz/styles/image-alignment","text":"/*Image aligning classes*/\n.image-align-right{\n float:right;\n margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n float:left;\n margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n display:block;\n margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n float: none !important;\n}","created":"20190918193736314","modified":"20200323093720025","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"title":"$:/plugins/kookma/shiraz/styles/image-basic","text":".image-simple {\n text-align: center;\n font-style: italic;\n font-size: smaller;\n text-indent: 0;\n padding: 0.5em;\n}","created":"20181119182848505","modified":"20200323093720030","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"title":"$:/plugins/kookma/shiraz/styles/image-overlay","text":".image-overlay-container{\n width: 50%; \n box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n .image-overlay-container{\n display: block;\n width: 100%;\n }\n}\n\n@media screen and (min-width: 900px){\n .image-overlay-container{\n width: 33.33%;\n }\n}\n\n.image-overlay-container .image-overlay-title{\n color: #1a1a1a;\n text-align: center;\n margin-bottom:10px;\n}\n\n.image-overlay-content {\n position: relative;\n width: 90%;\n max-width: 400px;\n margin: auto;\n overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n background: rgba(0,0,0,0.7);\n position: absolute;\n height: 99%;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n -webkit-transition: all 0.4s ease-in-out 0s;\n -moz-transition: all 0.4s ease-in-out 0s;\n transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n opacity: 1;\n}\n\n.image-overlay-content-image{\n width: 100%;\n}\n\n.image-overlay-content-details {\n position: absolute;\n text-align: center;\n padding-left: 1em;\n padding-right: 1em;\n width: 100%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transition: all 0.3s ease-in-out 0s;\n -moz-transition: all 0.3s ease-in-out 0s;\n transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n top: 50%;\n left: 50%;\n opacity: 1;\n}\n\n.image-overlay-content-details h3{\n color: #fff;\n font-weight: 500;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n color: #fff;\n font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n left: 80%;\n}","created":"20181116173704182","modified":"20200323093720035","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"title":"$:/plugins/kookma/shiraz/styles/image-polaroid","text":".image-polaroid {\n min-width:64px;\n background-color: #f8f9fa;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n width: 100%;\n padding:10px;\n height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}","created":"20181116094450565","modified":"20200323093720041","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"title":"$:/plugins/kookma/shiraz/styles/image-pretty","text":".image-pretty {\n min-width:64px;\n border: 1px solid #c8ccd1;\n background-color:#f8f9fa;\n}\n.image-pretty:hover {\n border: 1px solid #777;\n}\n.image-pretty img {\n padding:2px;\n width: 100%;\n height: auto;\n}\n.image-pretty .image-pretty-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20200323093720047","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"title":"$:/plugins/kookma/shiraz/styles/image-slidein","text":".image-slidein { \n display: block; \n position: relative; \n /*float: left;*/\n overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n width: 100%;\n height: auto;\n}\n\n.image-slidein figcaption { \n position: absolute; \n background: rgba(0,0,0,0.75); \n color: white; \n padding: 10px 20px; \n opacity: 0;\n -webkit-transition: all 0.6s ease;\n -moz-transition: all 0.6s ease;\n -o-transition: all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n opacity: 1;\n}\n.image-slidein:before { \n content: \"?\"; \n position: absolute; \n font-weight: 800; \n background: rgba(255,255,255,0.75); \n text-shadow: 0 0 5px white;\n color: black;\n width: 24px;\n height: 24px;\n -webkit-border-radius: 12px;\n -moz-border-radius: 12px;\n border-radius: 12px;\n text-align: center;\n font-size: 14px;\n line-height: 24px;\n -moz-transition: all 0.6s ease;\n opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n opacity: 0;\n}\n\n.mr-cap-left:before { bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20200323093720054","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/edit-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/edit-buttons","text":"/*Edit buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20200323093720062","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility":{"title":"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","created":"20191029094209435","modified":"20200323093720069","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/ui-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/ui-buttons","created":"20191029092047069","modified":"20200323093720078","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* These css rules makes TW UI buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/*tiddler buttons in beautiful color*/\n.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/\n.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/\n"},"$:/plugins/kookma/shiraz/styles/mono":{"title":"$:/plugins/kookma/shiraz/styles/mono","text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20200323093720084","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"title":"$:/plugins/kookma/shiraz/styles/multicols/column","text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20200323093720089","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex backup","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20200323093720101","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n/* margin-right: -15px;\n margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n align-items: center !important;\n}\n.flex-justify-content-center {\n justify-content: center !important;\n}\n\n.flex-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}","created":"20191014193910006","modified":"20200323093720097","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20200323093720108","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"title":"$:/plugins/kookma/shiraz/styles/notebook","text":"@media print{\n .notebook .tc-tiddler-body {\n padding-left:60px;\n margin-top:25px;\n }\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n padding-left:60px;\n }\n}\n\n@media screen{\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n padding-left:30px;\n }\n\n}\t\n\n@media screen and (max-width:960px) {\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n .notebook .tc-tags-wrapper,\n .notebook .tc-tiddler-body {\n padding-left:60px;\n }\n\n}\n\n.notebook:before {\n content: '';\n position: absolute;\n top: 0; bottom: 0; left: 0;\n width: 50px;\n background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n background-size: 30px 30px;\n border-right: 3px solid #D44147;\n\t z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t position: relative;\n background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n background-size: 2em 2em;\n\t min-height:90px; \n}\n\n.notebook .tc-tiddler-body{\n\t padding-top:20px;\n font-family: \"Handlee\", cursive;\n font-weight:300;\n line-height:2em;\n color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n font-family: \"Handlee\", cursive;\n font-weight:300;\n}","created":"20180412105446259","modified":"20200323093720115","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/semantic/bglowtone-colors":{"title":"$:/plugins/kookma/shiraz/styles/semantic/bglowtone-colors","text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20200323093720119","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"title":"$:/plugins/kookma/shiraz/styles/sticky-footer","text":".sticky-footer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 0.5rem;\n background-color: #efefef;\n text-align: center;\n margin-top: 5px;\n box-sizing: border-box;\n width: 100%;\n}\n","created":"20180907070611557","modified":"20200323093720126","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"title":"$:/plugins/kookma/shiraz/styles/tables","text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n }\n.table-lines td{\n border-bottom: 1px solid #dddddd;\n background-color:unset;\n }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n color: #212529;\n background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20200323093720133","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"title":"$:/plugins/kookma/shiraz/styles/tiddler-title-class","text":".title-primary .tc-title {\n color: #007bff;\n}\n.title-secondary .tc-title {\n color: #6c757d;\n}\n.title-success .tc-title {\n color: #28a745;\n}\n.title-info .tc-title {\n color: #17a2b8;\n}\n.title-warning .tc-title {\n color: #ffc107;\n}\n.title-danger .tc-title {\n color: #dc3545;\n}\n.title-light .tc-title {\n color: #f8f9fa;\n}\n.title-dark .tc-title {\n color: #343a40;\n}\n.title-white .tc-title {\n color: #fff;\n}","created":"20191101112257846","modified":"20200323093720140","tags":"test $:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"title":"$:/plugins/kookma/shiraz/templates/body/color","created":"20200210160016959","modified":"20200323093720147","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<style>\n.dt:not(:disabled):dt(.disabled) {cursor: pointer;}\na.dt.disabled,fieldset:disabled a.dt {pointer-events: none;}\n</style>\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<<currentRecord>> field=color/>\n</$link>\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_color>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/date":{"title":"$:/plugins/kookma/shiraz/templates/body/date","created":"20170128100657312","modified":"20200323093720153","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"<td>\n<$view tiddler=<<currentRecord>> field=<<currentColumn>> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/default":{"title":"$:/plugins/kookma/shiraz/templates/body/default","created":"20191125202328213","modified":"20200323093720160","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"title":"$:/plugins/kookma/shiraz/templates/body/due-date","created":"20200206191120454","modified":"20200323093720165","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_date>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/email":{"title":"$:/plugins/kookma/shiraz/templates/body/email","created":"20191202210913762","modified":"20200323093720171","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell>>\n</a>\n\\end\n\\define display-email-address_Locked()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell_Locked>>\n</a>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<display-email-address>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n<<display-email-address_Locked>>\n</$list>\n</$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"title":"$:/plugins/kookma/shiraz/templates/body/priority","created":"20200424102701026","modified":"20200424151646289","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\" stroke=<<__color__>> fill=<<__fill__>> stroke-width=\"1\"/>\n</svg>\n\\end\n\n\\define showCell()\n<$list filter=\"[<currentRecord>get<currentColumn>match[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n</$list>\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> />\n\\end\n\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\n\\define select_priority()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='very high'>very high</option><option value='high'>high</option><option value='normal'>normal</option><option value='low'>low</option><option value='very low'>very low</option><option value=''>no priority</option></$select>\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_priority>> >\n <<showCell_Locked>>\n</$list>\n<$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields\n -->"},"$:/plugins/kookma/shiraz/templates/body/status":{"title":"$:/plugins/kookma/shiraz/templates/body/status","created":"20200424100127763","modified":"20200424153213801","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define select_status()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='open'>open</option><option value='not started'>not started</option><option value='in-work'>in-work</option><option value='on-hold'>on-hold</option><option value='complete'>complete</option><option value='rework'>rework</option><option value='closed'>closed</option></$select>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_status>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/tags":{"title":"$:/plugins/kookma/shiraz/templates/body/tags","created":"20191125193831767","modified":"20200323093720193","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[title<currentRecord>tags[]]\">\n<span class=\"tc-tag-list-item\" >\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<tempTagPopup>> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<tempTagPopup>> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n</$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox","created":"20200206150644636","modified":"20200323093720199","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;text-align:center;\">\n<$checkbox tiddler=<<currentRecord>> tag=\"done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" /><$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> /><$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\"\"\" />\n</td>"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-delete","created":"20170212101814663","modified":"20200323093720205","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<currentRecord>>/>\n {{$:/core/images/delete-button}}\n </$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-expand","created":"20200209072642825","modified":"20200323093720213","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>> $value=\"show\" />\n {{$:/core/images/right-arrow}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>>/>\n {{$:/core/images/down-arrow}}\n </$button>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/title":{"title":"$:/plugins/kookma/shiraz/templates/body/title","created":"20170128100357203","modified":"20200323093720218","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"<td>\n<$link to=<<currentRecord>>><$text text=<<currentRecord>> /></$link>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/type":{"title":"$:/plugins/kookma/shiraz/templates/body/type","created":"20200210063953546","modified":"20200323093720227","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n<td>\n<<showCell>>\n</td>\n<!-- Note that the showCell here overrides the global showCell from table-dynamic macro -->"},"$:/plugins/kookma/shiraz/templates/footer/default":{"title":"$:/plugins/kookma/shiraz/templates/footer/default","created":"20200130171717175","modified":"20200323093720234","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [<currentColumn>addsuffix[/]addsuffix<footerRow>] }}}>\n<$set name=getFieldOrIndex filter=\"[<fieldOrIndex>]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<<tempTableFooter>> index=<<idx>> mode=\"inline\" />\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<<tempTableFooter>> index=<<idx>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n</$reveal>\n</$set>\n</$vars>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-delete","created":"20200130174835714","modified":"20200323093720243","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-expand","created":"20200130173518861","modified":"20200323093720250","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;\"></td>"},"$:/plugins/kookma/shiraz/templates/header/default":{"title":"$:/plugins/kookma/shiraz/templates/header/default","created":"20170205223914688","modified":"20200323093720254","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$button setTitle=<<tempTableSort>> setIndex=\"sortIndex\" setTo=<<currentColumn>> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[false]]\" variable=ignore><!--set negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"!\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/down-arrow}}\n</$button>\n</$list>\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[true]]\" variable=ignore><!--remove negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/up-arrow}}\n</$button>\n</$list>\n</$reveal>\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox","created":"20200206151157578","modified":"20200424160122428","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define chk-checkactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[append[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" />\n</$list>\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[remove[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> />\n</$list>\n\\end\n\n<th style=\"width:28px;\">\n<$checkbox checkactions=<<chk-checkactions>> uncheckactions=<<chk-uncheckactions>> />\n</th>"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-delete","created":"20170212102107998","modified":"20200323093720268","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n <span>\n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<<currentTable>>/>\n {{$:/core/images/delete-button}}\n </$button>\n </span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-expand","created":"20200209072944418","modified":"20200323093720276","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<th style=\"width:28px;\">\n <$list filter=\"[<tempTableExpand>indexes[]limit[1]]\">\n <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n <$action-setfield $tiddler=<<tempTableExpand>> text=\"\"/>\n </$button>\n </$list>\n</th>"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200323093720283","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:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/ui-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/edit-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs</$checkbox>\n\n\n\n\n"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"title":"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer","created":"20180907071314793","modified":"20200323125207226","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n<div class=\"sticky-footer\">\n{{!!sticky-footer}}\n</div>\n</$list>\n"}}}
{"tiddlers":{"$:/plugins/kookma/utility/author/author-tools":{"title":"$:/plugins/kookma/utility/author/author-tools","created":"20190912082519234","key":"((author-tools))","modified":"20200316130508400","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/kookma/utility/author/modal\" />"},"$:/plugins/kookma/utility/author/exclude-items":{"title":"$:/plugins/kookma/utility/author/exclude-items","caption":"Exclude items","created":"20200313124437263","modified":"20200322115519909","tags":"","type":"text/vnd.tiddlywiki","text":"\\define showItems(label, filter)\n<h2>$label$</h2>\n<$list filter=<<__filter__>> >\n<$checkbox tiddler=<<currentTiddler>> tag=\"excluded\"/> <$link to=<<currentTiddler>>><$text text=<<currentTiddler>>/></$link><br>\n</$list>\n\\end\n<!-- drag and drop -->\n<<showItems label:\"Disable drag and drop\" filter:\"[title[$:/config/DragAndDrop/Enable]]\">>\n<!-- side bar items -->\n<<showItems label:\"Sidebar tabs\" filter:\"[all[shadows+tiddlers]]+[tag[$:/tags/SideBar]]\">>\n<!-- viewtoolbar items -->\n<<showItems label:\"View toolbars\" filter:\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]]\">>\n<!-- Page controls -->\n<<showItems label:\"Page controls\" filter:\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]]\">>\n<$list filter=\"\">"},"$:/plugins/kookma/utility/author/individual-items":{"title":"$:/plugins/kookma/utility/author/individual-items","caption":"Hide individual UI element","created":"20200313141533701","modified":"20200322130601872","tags":"","type":"text/vnd.tiddlywiki","text":"Select individual items to hide in reader mode.\n\n! Site options\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-title\" tag=\"$:/tags/SideBarSegment\"/> Show site title<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-subtitle\" tag=\"$:/tags/SideBarSegment\"/> Show site subtitle<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/page-controls\" tag=\"$:/tags/SideBarSegment\"/> Show page controls<br/>\n\n! Right sidebar elements\n<$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> Show right sidebar toggle button<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/search\" tag=\"$:/tags/SideBarSegment\"/> Show search bar<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/tabs\" tag=\"$:/tags/SideBarSegment\"/> Show sidebar tabs<br/>\n<!-- reserved\n<$checkbox tiddler=\"$:/config/custom-segment\" tag=\"$:/tags/SideBarSegment\"/> Show custom menu -->\n\n! Sidebar tabs\n<$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> Show Open tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> Show Recent tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> Show Tools tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> Show More tab<br/>\n\n! Tiddler options\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit\" field=text checked=show unchecked=hide default=show /> Show edit button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close\" field=text checked=show unchecked=hide default=show /> Show close button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions\" field=text checked=show unchecked=hide default=show /> Show more actions button in the tiddler toolbar\n\n! Other items\n<$checkbox tiddler=\"$:/config/DragAndDrop/Enable\" field=text checked=no unchecked=yes default=yes /> Disable page dropzone\n"},"$:/plugins/kookma/utility/author/modal":{"title":"$:/plugins/kookma/utility/author/modal","created":"20190912073245120","modified":"20200316124818329","tags":"","type":"text/vnd.tiddlywiki","text":"<<tabs tabsList:\"$:/plugins/kookma/utility/author/tools $:/plugins/kookma/utility/author/individual-items\" default:\"$:/plugins/kookma/utility/author/tools\">>"},"$:/plugins/kookma/utility/author/switch-author":{"title":"$:/plugins/kookma/utility/author/switch-author","created":"20200315203327216","key":"((switch-author))","modified":"20200316130423198","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/utility/author/tools\n\n<$reveal type=nomatch state=<<configTid>> text=\"\">\n<<unhide-elements>>\n</$reveal>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<<hide-elements>>\n</$reveal>"},"$:/plugins/kookma/utility/author/tools":{"title":"$:/plugins/kookma/utility/author/tools","caption":"Hide bulk of UI elements","created":"20200313111922410","modified":"20200322160845236","type":"text/vnd.tiddlywiki","text":"\\define configTid() $:/config/utility/author\n\\define add-remove-tag(msg:\"\", tag:\"\")\n<$fieldmangler><!--msg: tm-add-tag tm-remove-tag-->\n<$action-sendmessage $message=\"$msg$\" $param=\"$tag$\"/>\n</$fieldmangler>\n\\end\n\n\\define hide-elements()\n<!-- hide side bar items -->\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!tag[excluded]]\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"$:/tags/SideBar\"/>\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-remove-tag\" tag=\"$:/tags/SideBar\"/>\n</$list>\n<!-- hide view toolbars -->\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<<currentTiddler>> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"show\"/>\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"hide\"/>\n</$reveal>\n</$list>\n<!-- hide page controls -->\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<<currentTiddler>> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"show\"/>\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"hide\"/>\n</$reveal>\n</$list>\n<!-- disable dropzone -->\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-setfield $tiddler=\"$:/config/DragAndDrop/Enable\" $field=\"text\" $value=\"no\"/>\n</$list>\n\\end\n\n\\define unhide-elements()\n<!-- Revert view toolbar and page controls -->\n<$list filter=\"[<configTid>indexes[]]\">\n<$reveal type=match stateTitle=<<configTid>> stateIndex=<<currentTiddler>> text=\"show\">\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"show\"/>\n</$reveal>\n</$list>\n<!-- Revert sidebar tabs -->\n<$list filter=\"[<configTid>indexes[]]\">\n<$reveal type=match stateTitle=<<configTid>> stateIndex=<<currentTiddler>> text=\"$:/tags/SideBar\">\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-add-tag\" tag=\"$:/tags/SideBar\"/>\n</$reveal>\n</$list>\n<!-- delete the configTid -->\n<$action-deletetiddler $tiddler=<<configTid>>/>\n<!-- enable dropzone -->\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-deletetiddler $tiddler=\"$:/config/DragAndDrop/Enable\"/>\n</$list>\n\\end\n\n<$reveal type=nomatch state=<<configTid>> text=\"\">\n<$button actions=<<unhide-elements>> tooltip=\"Unhide UI elements\">Author mode</$button>\n</$reveal>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<$button actions=<<hide-elements>> tooltip=\"Hide UI elements\">Reader mode</$button>\n</$reveal>\n<small><ul>\n<li>Author mode: all UI elements are visible</li>\n<li>Redaer mode: all UI elements are hidden except those excluded</li>\n</ul></small>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<details>\n<summary>Select items to be excluded</summary>\n<div style=\"padding-left:30px\">{{$:/plugins/kookma/utility/author/exclude-items}}\n</div>\n</details>\n</$reveal>"},"$:/plugins/kookma/utility/config/reveal-tags":{"title":"$:/plugins/kookma/utility/config/reveal-tags","created":"20200123085623608","modified":"20200123200112351","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/utility/history":{"title":"$:/plugins/kookma/utility/history","created":"20190930044127683","modified":"20200403062039433","tags":"","type":"text/vnd.tiddlywiki","text":"* ''2.1.2'' -- 2020.04.03 -- page control button issue fixed\n* ''2.1.1'' -- 2020.03.25 -- page control button improved and minor issues in css fixed\n* ''2.1.0'' -- 2020.03.23 -- new transclusion output for fields macro and disable drag and drop globally\n* ''2.0.0'' -- 2020.03.16 -- new author-reader mode switch\n* ''1.8.0'' -- 2020.03.13 -- admin panel added\n* ''1.7.0'' -- 2020.02.23 -- show tiddler raw content including the macros on demand\n* ''1.0.0'' -- 2019.10.13 -- stable release\n* ''0.5.0'' -- 2019.10.10 -- first beta release"},"$:/plugins/kookma/utility/images/view-fields.svg":{"title":"$:/plugins/kookma/utility/images/view-fields.svg","created":"20181010193706723","modified":"20200123200937680","tags":"","type":"text/vnd.tiddlywiki","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button tc-image-view-fields\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 11H1v2h6v-2zm2.17-3.24L7.05 5.64 5.64 7.05l2.12 2.12 1.41-1.41zM13 1h-2v6h2V1zm5.36 6.05l-1.41-1.41-2.12 2.12 1.41 1.41 2.12-2.12zM17 11v2h6v-2h-6zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24l2.12 2.12 1.41-1.41-2.12-2.12-1.41 1.41zm-9.19.71l1.41 1.41 2.12-2.12-1.41-1.41-2.12 2.12zM11 23h2v-6h-2v6z\"/></svg>"},"$:/plugins/kookma/utility/license":{"title":"$:/plugins/kookma/utility/license","created":"20190930044127683","modified":"20200325141629992","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\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<<<\n"},"$:/plugins/kookma/utility/macro/doc-svg":{"title":"$:/plugins/kookma/utility/macro/doc-svg","created":"20190722141637145","modified":"20200123200937669","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define doc-svg(tiddler:\"\", color:\"\")\n<span class=\"kk-doc\" style=\"fill:$color$;\"><$transclude tiddler=<<__tiddler__>> /></span>\n\\end"},"$:/plugins/kookma/utility/macro/find":{"title":"$:/plugins/kookma/utility/macro/find","created":"20181213121411187","modified":"20200325124037811","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=\"p1\" filter=\"[<fulltext>splitbefore<start>]\">\n<$list variable=\"p2\" filter=\"[<fulltext>removeprefix<p1>]\">\n<$list variable=\"p3\" filter=\"[<p2>splitbefore<stop>removesuffix<stop>]\">\n<$macrocall $name=<<output-macro>> p=<<p3>> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[<p2>removeprefix<p3>removeprefix<stop>]}}}\n begin=<<start>>\n end=<<stop>>\n output=<<output-macro>>\n/>\n</$reveal>\n</$list>\n</$list>\n</$list>\n</$vars>\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n<li><$text text=<<__p__>>/></li>\n\\end\n\n\n!! Summary\n* `find` is a macro to search a text and find all snippets delimited between values of `begin` and `end` delimiters\n* `simple` is a macro used by `find` to show the output in a simple format\n* `simple-list` is a macro used by `find` to show the output in a simple list format. The ordered and unordered list\ncan be used if the call to `find` macro wrapped in a `div` with suitable type e.g `ol` or `ul`."},"$:/plugins/kookma/utility/macro/lorem":{"title":"$:/plugins/kookma/utility/macro/lorem","author":"Jeremy Ruston","created":"20190316214433792","description":"creates few paragraphs of dumy text","modified":"20200123200937645","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define .lorem(np:1)\n<$list filter=\"[range[1,$np$]]\" variable=null>\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n<$list filter=\"[<__np__>!match[1]]\"><p/></$list>\n</$list>\n\\end"},"$:/plugins/kookma/utility/macro/show-macro":{"title":"$:/plugins/kookma/utility/macro/show-macro","created":"20190317174614898","description":"This is a customized version of `show-macro` used in TW-Yazd. This macro is used to display the macro codes in specified place.","modified":"20200123200937632","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define disp-macro-contents(p)\n<pre>\\define<$text text=<<__p__>> />\\end</pre>\n\\end\n\n\\define show-macro(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$macrocall $name='find'\n text={{{[<selected-tiddler>get[text]]}}}\n begin=\"\\define\"\n end=\"\\end\"\n output=\"disp-macro-contents\"/>\n\\end"},"$:/plugins/kookma/utility/macro/simple-navigation":{"title":"$:/plugins/kookma/utility/macro/simple-navigation","created":"20190823062102008","description":"create a new tiddler tagged with $:/tags/Viewtemplate and call simple-navigation with desired tag","modified":"20200126151115600","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define simple-navigation(tag:\"demo\", class, close:\"no\")\n<$list filter=\"[all[current]tag[$tag$]]\">\n<div class=\"$class$\">\n<$list filter=\"[tag[$tag$]before<currentTiddler>]\" variable=\"prevTiddler\">\n<$button to=<<prevTiddler>> tooltip=<<prevTiddler>> class=\"tc-btn-invisible $class$\">previous\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n<$list filter=\"[tag[$tag$]after<currentTiddler>] [tag[$tag$]before<currentTiddler>] +[count[]] -1\" variable=ignore>|</$list>\n<$list filter=\"[tag[$tag$]after<currentTiddler>]\" variable=\"nextTiddler\">\n<$button to=<<nextTiddler>> tooltip=<<nextTiddler>> class=\"tc-btn-invisible $class$\">next\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n</div>\n</$list>\n\\end"},"$:/plugins/kookma/utility/macro/transclusion":{"title":"$:/plugins/kookma/utility/macro/transclusion","created":"20190930050545887","modified":"20200324201449425","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define code(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$codeblock language={{{[<selected-tiddler>get[type]]}}} code={{{[<selected-tiddler>get[text]]}}}/>\n</$set>\n\\end\n\n\\define code-link(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$codeblock language={{{[<selected-tiddler>get[type]]}}} code={{{[<selected-tiddler>get[text]]}}}/>\n</$set>\n\\end\n\n\\define content(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$transclude tiddler=<<selected-tiddler>> mode=\"block\"/>\n</$set>\n\\end\n\n\\define fields(tiddler)\n<style>\n/*Borderless table*/\n.kk-utility-tbl-borderless, \n.kk-utility-tbl-borderless tr,\n.kk-utility-tbl-borderless td{border:0;}\n</style>\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$list filter='[<selected-tiddler>fields[]] -[enlist[text title created modified tags creator modifier]] +[limit[1]]' variable=\"ignore\"><!--check if there is any user field -->\n<table class=\"kk-utility-tbl-borderless\">\n<$list filter='[<selected-tiddler>fields[]] -[enlist[text title created modified tags creator modifier]]' variable=\"fld\">\n<tr><td style=\"text-align:right\"><<fld>>:</td><td><$text text={{{[<selected-tiddler>get<fld>]}}}/></td></tr>\n</$list>\n</table>\n</$list>\n</$set>\n\\end\n\n\\define description(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<dl><dt><$link to=<<selected-tiddler>>/></dt><dd><$transclude tiddler=<<selected-tiddler>> field=\"description\"/></dd></dl>\n</$set>\n\\end"},"$:/plugins/kookma/utility/macro/unique-id":{"title":"$:/plugins/kookma/utility/macro/unique-id","author":"Jeremy Ruston","created":"20200210134515855","description":"creates a unique id for permanent state tiddler","modified":"20200210134635362","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define create_id_from_timedata(prefix) $prefix$-<<now [UTC]YYYY0MM0DD0hh0mm0ssXXX>>\n\n\\define unique-id(prefix:id)\n<$wikify name=id text=<<create_id_from_timedata \"\"\"$prefix$\"\"\">> >\n<$button tooltip=\"create unique id\" class=\"tc-btn-invisible\" message=\"tm-copy-to-clipboard\" param=<<id>> >{{$:/core/images/copy-clipboard}} \n</$button> <$text text=<<id>>/>\n</$wikify>\n\\end\n"},"$:/plugins/kookma/utility/macro/wikitext-macros":{"title":"$:/plugins/kookma/utility/macro/wikitext-macros","created":"20150117184156000","modified":"20200123200937571","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define wikitext-example(src)\n<div class=\"doc-example\">\n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n\n... and the underlying HTML is:\n\n$$$text/vnd.tiddlywiki>text/html\n$src$\n$$$\n</div>\n\\end\n\n\\define wikitext-example-without-html(src)\n<div class=\"doc-example\">\n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n</div>\n\\end\n<!--\n; Credit\n:Jeremy Ruston TW 5.1.18\n\nThe wiki-text macros are set of macro for documenting TW codes.\n-->"},"$:/plugins/kookma/utility/pagecontrol/view-fields-button":{"title":"$:/plugins/kookma/utility/pagecontrol/view-fields-button","caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","created":"20181010190533135","description":"Show a toggle button for view fields","modified":"20200403115112475","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\define viewtemplateTid() $:/plugins/kookma/utility/viewtemplate/view-fields\n\\define fldshowstateTid() $:/keepstate/utility/toggle-view-fields\n\n\\define show-fields-button()\n\\whitespace trim\n\n<$reveal type=\"nomatch\" state=<<fldshowstateTid>> text=\"show\">\n <$button set=<<fldshowstateTid>> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=<<tv-config-toolbar-class>> >\n <<disp-on-pagecontrols>>\n <$action-setfield $tiddler=<<viewtemplateTid>> tags=\"$:/tags/ViewTemplate\"/>\n </$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<fldshowstateTid>> text=\"show\">\n <$button set=<<fldshowstateTid>> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n <<disp-on-pagecontrols>>\n <$action-setfield $tiddler=<<viewtemplateTid>> tags=\"\"/>\n </$button>\n</$reveal>\n\\end\n\n\\define disp-on-pagecontrols() \n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Utility/Caption}}/></span>\n</$list>\n\\end\n\n\n<<show-fields-button>>"},"$:/plugins/kookma/utility/readme":{"title":"$:/plugins/kookma/utility/readme","created":"20190930044127683","modified":"20200322194049962","tags":"","type":"text/vnd.tiddlywiki","text":"; Utility plugin\nThe utility plugin objective is to provide set of tools for developers and authors. These tools includes simple transclusions, show raw contents of tiddlers, author tools, wikitext macros, show fields in view mode, ...\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-Utility/\n* Code: https://github.com/kookma/TW-Utility\n"},"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example":{"title":"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example","caption":"Wikitext-example macrocall","created":"20181023161605661","modified":"20200123200937811","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"wikitext-example-without-html\" \nsrc=\"\"\"\n\"\"\"/>"},"$:/plugins/kookma/utility/snippet/wikitext-macro":{"title":"$:/plugins/kookma/utility/snippet/wikitext-macro","caption":"Wikitext-example","created":"20181007154126921","modified":"20200123200937797","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<<wikitext-example-without-html \nsrc:\"\"\"\n\"\"\">>"},"$:/plugins/kookma/utility/styles/doc-svg":{"title":"$:/plugins/kookma/utility/styles/doc-svg","text":".kk-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n\n.kk-ut-txt{\nmin-width:50%}","created":"20190722142023425","modified":"20200322091202744","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/tw-version":{"title":"$:/plugins/kookma/utility/styles/tw-version","text":"<pre>/* TW-version added to site title */\n.tc-site-title:before {\n content:\"TW <<version>>\";\n position:absolute;\n margin-top:-1.9em;\n color:silver;\n font-size:13px;\n}\n</pre>","created":"20180906042308596","modified":"20200325164200123","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/utility/styles/wikitext-macro":{"title":"$:/plugins/kookma/utility/styles/wikitext-macro","text":".doc-example { margin: 1em 0; padding: 0.8em 0; } .doc-example:hover { background-color: #f7f7f9; } .doc-example ul { margin-bottom: 0; padding-bottom: 0; margin-top: 0.2em; } .doc-example pre:first-child { margin-top: 0; } .doc-example-result { border-left: 5px solid #bbb; border-right: 5px solid #bbb; margin-left: 0; margin-right: 0; padding: 0 10px; } .doc-example-result ul { margin-left: 0; padding-left: 10px; } .doc-example-result ol { margin-left: 0; padding-left: 20px; }","created":"20180909042646908","modified":"20200325141241379","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/utility/ui/ControlPanel/Settings","caption":"Utility","created":"20190930212747824","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200322091210028","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Utility plugin.\n\n---\n\n;Show Utility setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/pagecontrol/view-fields-button\" tag=\"$:/tags/PageControls\"> Enable show fields</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/styles/tw-version\" tag=\"$:/tags/Stylesheet\"> Show the Tiddlywiki version badge</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content\" tag=\"$:/tags/ViewTemplate\"> Display the tiddler raw content</$checkbox><div style=\"padding-left:18px;\">\n<$list filter=\"[[$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content]tags[]search[$:/tags/ViewTemplate]]\" variable=ignore>\nFilters to reveal tiddlers content <$edit-text tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=\"text\" tag=input defualt=\"\" placeholder=\"enter a filter e.g. [tag[myTag]] \" class=\"kk-ut-txt\"/>\n</$list></div>\n\n"},"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content":{"title":"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content","created":"20181212041419278","description":"this view template displays the content of global macro tiddlers","modified":"20200126142626441","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$set name=\"revealFilters\" tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=text>\n<$list filter=\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]]\n [all[current]subfilter<revealFilters>] +[limit[1]]\">\n<$codeblock code={{!!text}} language=\"xml\" />\n</$list>\n</$set>\n\n"},"$:/plugins/kookma/utility/viewtemplate/view-fields":{"title":"$:/plugins/kookma/utility/viewtemplate/view-fields","created":"20181010162537613","description":"Toggle field handling in view mode","list-after":"$:/core/ui/ViewTemplate/tags","modified":"20200403082439483","tags":"","type":"text/vnd.tiddlywiki","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"},"$:/language/Buttons/Utility/Hint":{"title":"$:/language/Buttons/Utility/Hint","created":"20190930171301401","modified":"20191111154125882","tags":"","type":"text/vnd.tiddlywiki","text":"Show fields"},"$:/language/Buttons/Utility/Caption":{"title":"$:/language/Buttons/Utility/Caption","created":"20190930171340202","modified":"20191111154125886","tags":"","type":"text/vnd.tiddlywiki","text":"show fields"},"$:/config/ShortcutInfo/author-tools":{"title":"$:/config/ShortcutInfo/author-tools","created":"20190912083358612","modified":"20200316123519558","tags":"","type":"text/vnd.tiddlywiki","text":"Show Author tools dialog"},"$:/config/shortcuts/author-tools":{"title":"$:/config/shortcuts/author-tools","created":"20191121050813703","modified":"20200316123531677","type":"text/vnd.tiddlywiki","text":"ctrl-alt-A"},"$:/config/ShortcutInfo/switch-author":{"title":"$:/config/ShortcutInfo/switch-author","created":"20200315203528401","modified":"20200316123455880","type":"text/vnd.tiddlywiki","text":"Toggle the author-reader mode"},"$:/config/shortcuts/switch-author":{"title":"$:/config/shortcuts/switch-author","created":"20200315203409995","modified":"20200316123545221","type":"text/vnd.tiddlywiki","text":"ctrl+alt+L"}}}
{
"tiddlers": {
"$:/plugins/nico/notebook-mobile/js/notebookSidebarNav.js": {
"title": "$:/plugins/nico/notebook-mobile/js/notebookSidebarNav.js",
"text": "/*\\\ntitle: $:/themes/nico/notebook-mobile/js/notebookSidebarNav.js\ntype: application/javascript\nmodule-type: global\n\nCloses the notebook sidebar on mobile when navigating\n\n\\*/\n(function(){\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n const isOnMobile = () => {\n\t\tlet bottombar = document.querySelector('.nc-bottombar');\n\t\treturn bottombar && bottombar.getClientRects().length > 0;\n };\n\n const closeSidebar = () => {\n\t\t$tw.wiki.setText(\"$:/state/notebook-sidebar\", \"text\", undefined, \"no\");\n };\n\n const closeSidebarOnMobile = () => {\n\t\tif (isOnMobile()) {\n console.log(\"closing sidebar\");\n\t\t\tcloseSidebar();\n\t\t};\n };\n\n const setup = () => {\n\t\t$tw.hooks.addHook(\"th-navigating\",function(event) {\n\t\t\tcloseSidebarOnMobile();\n\t\t\treturn event;\n\t\t});\n };\n\n setup();\n\n exports.closeNotebookSidebar = closeSidebar;\n})();\n",
"type": "application/javascript",
"module-type": "global",
"created": "20200430151329085",
"modified": "20201210200127495",
"tags": ""
}
}
}
{
"tiddlers": {
"$:/plugins/tg/ro/advanced-search-button-style": {
"created": "20150519114003182",
"text": "/* Hide advanced search button */\n.tc-image-advanced-search-button.tc-image-button {\n padding-left: 15px;\n}",
"type": "text/css",
"title": "$:/plugins/tg/ro/advanced-search-button-style",
"tags": "$:/tags/advanced-search-button",
"modifier": "TonGerner",
"modified": "20191230134649191",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/change-settings": {
"created": "20161108100322449",
"text": "!!4) Settings\nTo customise the behaviour of TiddlyWiki\n\n{{$:/snippets/viewswitcher}}\n{{$:/plugins/tg/ro/sidebar-layout}}\n{{$:/core/ui/ControlPanel/Settings}}\n",
"title": "$:/plugins/tg/ro/change-settings",
"tags": "",
"modified": "20191230134715488",
"caption": "4. Settings"
},
"$:/plugins/tg/ro/help": {
"created": "20140716184603499",
"text": "!! Help\n\nBefore you 'publish' your ~TiddlyWiki:\n\n# Make a backup of your wiki\n# Get a defined start-up situation for your TW:\n#* Define your starting tiddler(s) in [[$:/DefaultTiddlers]]\n#* If required, define the state of the sidebar tabs\n#* If required create a tiddler (e.g. `xyz`) which transcludes $:/plugins/tg/ro/publish to create another option to return from readonly to edit mode\n#* If required change the keyboard shortut (Ctrl-Shift-Alt-P) for opening $:/plugins/tg/ro/publish via Control Panel > Keyboard Shortcuts\n# Follow the procedure given in tabs 1 to 5.\n\nThere are a few ways to return from readonly to edit mode:\n\n# Press the configured keyboard shortcut (default Ctrl-Shift-Alt-P), which opens $:/plugins/tg/ro/publish\n# Start the TW with `#xyz` appended which opens $:/plugins/tg/ro/publish\n# Search for:\n#* ''Publish'' to get to $:/plugins/tg/ro/publish\n#* ''~ControlPanel'' to get to ''$:/ControlPanel > Appearance > Publish''\n\n<<<\n''Note:''<br>\n@@.RED Although you can hide the 'Sidebar' and 'Advanced Search' button, they remain 'active'!@@\n<<<\n",
"title": "$:/plugins/tg/ro/help",
"modifier": "TonGerner",
"modified": "20200318122932944",
"creator": "TonGerner",
"caption": "Help"
},
"$:/plugins/tg/ro/hide-sidebar-buttons": {
"created": "20161108100124814",
"text": "!! Show/hide sidebar buttons\nUncheck to hide the appropriate sidebar button\n\n|Button |visible |note |h\n|Sidebar button (<<icn $:/core/images/chevron-left>>/<<icn $:/core/images/chevron-right>>) | <$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> | 1 |\n|Advanced search button (<<icn $:/core/images/advanced-search-button>>) | <$checkbox tiddler=\"$:/plugins/tg/ro/advanced-search-button-style\" tag=\"$:/tags/Stylesheet\" invertTag=\"yes\"/> | 1 |\n|Publish button (<<icn $:/plugins/tg/ro/images/publish>>) | <$checkbox tiddler=\"$:/plugins/tg/ro/publish-button\" tag=\"$:/tags/TopRightBar\"/> | 2 |\n\n<<<\n''Note:''\n\n# Although 'invisible' (`display:none;`), ''Sidebar'' and ''Advanced search'' buttons stay active!\n# The ''Publish'' button is invisible and inactive (`$:/tags/TopRightBar` removed)\n<<<",
"title": "$:/plugins/tg/ro/hide-sidebar-buttons",
"tags": "",
"modified": "20200316123412336",
"caption": "3. Sidebar buttons"
},
"$:/plugins/tg/ro/hide-sidebar-tabs": {
"text": "\\define check()\n<$checkbox\ntag=\"$:/tags/SideBar\"\nchecked=\"$:/tags/SideBar\"\nunchecked=\"$:/tags/hide\"\ndefault=\"$:/tags/SideBar\"\ncheckactions=\"\"\"<$action-deletefield tags/><$action-setfield tags=\"$:/tags/SideBar\"/>\"\"\"\nuncheckactions=\"\"\"<$action-deletefield tags/><$action-setfield tags=\"$:/tags/hide\"/>\"\"\"\n<$link to={{!!title}}> \n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$checkbox>\n\\end\n\n!! Show/hide sidebar tabs\nUncheck to hide the appropriate sidebar tab\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]]\"><br>\n<<check>>\n</$list>\n<$list filter=\"[tag[$:/tags/hide]]\"><br>\n<<check>>\n</$list>\n",
"title": "$:/plugins/tg/ro/hide-sidebar-tabs",
"tags": "",
"modified": "20200319201054427",
"created": "20161108100017749",
"caption": "2. Sidebar tabs"
},
"$:/plugins/tg/ro/hide-toolbar-buttons": {
"created": "20161108095713019",
"text": "!! Hide toolbar buttons\n\nDisable in Control panel (Appearance > Toolbars) the buttons you do not need in read-only mode.\n\n''//Disable at least the following buttons://''\n\n* ~ViewToolbar\n** Edit button <<icn $:/core/images/edit-button>>\n** More button <<icn $:/core/images/down-arrow>>\n** Info button <<icn $:/core/images/info-button>> (Tools tab contains button configuration!)\n* Page control buttons\n** New tiddler button <<icn $:/core/images/new-button>>\n** Control panel button <<icn $:/core/images/options-button>>\n** Save button <<icn $:/core/images/save-button>>\n** More button <<icn $:/core/images/down-arrow>>\n\n{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar $:/core/ui/ControlPanel/Toolbars/PageControls\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>",
"title": "$:/plugins/tg/ro/hide-toolbar-buttons",
"tags": "",
"modified": "20200319203659025",
"caption": "1. Buttons"
},
"$:/plugins/tg/ro/icon": {
"created": "20170322100000766",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n <metadata id=\"metadata7\">image/svg+xml</metadata>\n <g>\n <g stroke=\"null\" id=\"layer1\">\n <path stroke=\"#a0a0ff\" d=\"m62.98237,124.8691l-52.98313,-30.489l0,-60.97796l52.98313,-30.48897l52.98313,30.48897l0,60.97796l-52.98313,30.489z\" id=\"path4142\" stroke-miterlimit=\"4\" stroke-width=\"1.2218\" fill=\"#a0a0ff\"/>\n <g stroke=\"null\" transform=\"matrix(3.659923335400057,0,0,3.647856469142962,20.327076261330674,1218.0946222935067) \" id=\"g4657\">\n <path stroke=\"null\" d=\"m3.22135,-313.27808l4.72483,4.70973l10.79962,-10.7651l-4.72483,-4.70973l-10.79962,10.7651zm13.51982,-13.47661l-1.99364,1.98727l4.72409,4.70899l1.99364,-1.98727c0.6766,-0.67444 -0.00001,-1.34889 -0.00001,-1.34889l-3.37088,-3.3601c0,0 -0.6766,-0.67444 -1.3532,0zm-14.18411,14.11637l-0.99229,5.72125l5.7273,-1.00138l-4.735,-4.71987l-0.00001,0z\" id=\"editor_pencil_pen_edit_write_glyph\" fill=\"#000000\"/>\n <rect stroke=\"null\" stroke-width=\"null\" stroke-linejoin=\"null\" stroke-linecap=\"null\" x=\"-236.34445\" y=\"-219.86093\" width=\"26.11743\" height=\"2.10315\" id=\"svg_1\" transform=\"matrix(0.69825835,0.71584585,-0.71584585,0.69825835,11.119094,-4.6050809) \"/>\n </g>\n </g>\n </g>\n</svg>",
"type": "image/svg+xml",
"title": "$:/plugins/tg/ro/icon",
"tags": "",
"modified": "20191230134918451"
},
"$:/plugins/tg/ro/image-save-button": {
"created": "20140715185836189",
"text": "<svg class=\"tgc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n </g>\n</svg>",
"creator": "TonGerner",
"modified": "20191230134931683",
"modifier": "TonGerner",
"title": "$:/plugins/tg/ro/image-save-button"
},
"$:/plugins/tg/ro/images/publish": {
"created": "20170322105731731",
"text": "<svg class=\"tgc-publish-ro tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 486 438\">\n<style>\n .ro {\n fill:none;\n stroke-width:40;\n stroke:#FF00FF;\n }\n</style>\n <path class=\"ro\" d=\"m203.2 81.6l-141.6 0 0 311.7 313.3 0 0-139.5\"/>\n <path class=\"ro\" d=\"m176.4 279.6l0-60 188-188 60.5 60.5 -189.5 189.5 -59 0\"/>\n <path class=\"ro\" d=\"m326.9 69l61.1 61.1\"/>\n</svg>",
"title": "$:/plugins/tg/ro/images/publish",
"tags": "",
"modified": "20191230134946688"
},
"$:/plugins/tg/ro/license": {
"created": "20180124175202510",
"text": "[[Readonly plugin|http://tongerner.tiddlyspot.com/#Readonly%20plugin]] © Ton Gerner — 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
"title": "$:/plugins/tg/ro/license",
"tags": "",
"modified": "20191230135005582"
},
"$:/plugins/tg/ro/publish": {
"created": "20140715185723459",
"text": "!! Readonly plugin\n<<tabs \"$:/plugins/tg/ro/help $:/plugins/tg/ro/hide-toolbar-buttons $:/plugins/tg/ro/hide-sidebar-tabs $:/plugins/tg/ro/hide-sidebar-buttons $:/plugins/tg/ro/change-settings $:/plugins/tg/ro/save\" \"Help\">>\n\n\n\n\n\n",
"title": "$:/plugins/tg/ro/publish",
"tags": "$:/tags/ControlPanel/Appearance",
"modifier": "TonGerner",
"modified": "20191230135048784",
"creator": "TonGerner",
"caption": "Publish"
},
"$:/plugins/tg/ro/publish-button": {
"created": "20170506162930803",
"text": "<$button class=\"tc-btn-invisible\" tooltip=\"Publish read-only\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/ro/publish\" height=\"700px\" width=\"550px\"/>\n{{$:/plugins/tg/ro/images/publish}}\n</$button>",
"title": "$:/plugins/tg/ro/publish-button",
"tags": "$:/tags/publish-button $:/tags/TopRightBar",
"modifier": "TonGerner",
"modified": "20191231184447737",
"list-before": "$:/core/ui/TopBar/menu",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/readme": {
"text": "A plugin to make ~TiddlyWiki read-only.\n\nYou can hide:\n\n* ''All'' toolbar buttons\n* 'Sidebar' button (to switch Sidebar) and 'Advanced search' button (next to Search)\n* All Sidebar tabs tagged with $:/tags/SideBar.\n\nClick the Publish button <<icn $:/plugins/tg/ro/images/publish>> next to the sidebar button <<icn $:/core/images/chevron-left>>/<<icn $:/core/images/chevron-right>> to start making your TW 'publish-ready'. A new window with six tabs opens. Read the Help tab and follow the 5 steps.\n\n<<<\n''Note:''<br>@@.RED Although you can hide the 'Sidebar' button and 'Advanced Search' button, they remain 'active'!@@\n<<<\n\nThere are a few ways to return from readonly to edit mode, see [[Help|$:/plugins/tg/ro/help]].\n",
"title": "$:/plugins/tg/ro/readme",
"modifier": "TonGerner",
"modified": "20200319200627098",
"creator": "TonGerner",
"created": "20140821172500339"
},
"$:/plugins/tg/ro/save": {
"created": "20161108100434387",
"text": "! Save\n\n{{$:/core/ui/ControlPanel/Saving}}\n\n@@.BLUE ''Save''@@ {{$:/plugins/tg/ro/save-button}}\n",
"title": "$:/plugins/tg/ro/save",
"tags": "",
"modified": "20191230135228815",
"caption": "5. Save"
},
"$:/plugins/tg/ro/save-button": {
"created": "20170405200808621",
"text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}}>\n<span class=\"tc-dirty-indicator\">\n{{$:/plugins/tg/ro/image-save-button}}\n</span>\n</$button>",
"title": "$:/plugins/tg/ro/save-button",
"tags": "",
"modifier": "TonGerner",
"modified": "20191230135303043",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/sidebar-button-style": {
"created": "20140715185800387",
"text": "/* Hide sidebar button */\nsvg.tc-image-chevron-left {\n display: none;\n}\n\nsvg.tc-image-chevron-right {\n display: none;\n}\n",
"type": "text/css",
"title": "$:/plugins/tg/ro/sidebar-button-style",
"tags": "$:/tags/sidebar-button",
"modifier": "TonGerner",
"modified": "20191230135322974",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/sidebar-layout": {
"created": "20170307110734575",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\nSidebar layout: <$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select>\n",
"title": "$:/plugins/tg/ro/sidebar-layout",
"tags": "",
"modified": "20191230135338759"
},
"$:/plugins/tg/ro/styles": {
"created": "20161104132710834",
"text": "/* Slider style */\n\nhtml .tgc-slider {\n color: #5778D8;\n font-weight: bold;\n}\n\n.tgc-slider:hover {\n color: #5778D8;\n text-decoration: underline;\n}\n\n.RED {\n color: red;\n font-weight: bold;\n}",
"title": "$:/plugins/tg/ro/styles",
"tags": "$:/tags/Stylesheet",
"modified": "20191230135353718",
"type": "text/css"
},
"$:/plugins/tg/ro/macros/doc": {
"created": "20200316122632179",
"text": "\\define icn(icon)\n<button class=\"tc-btn-invisible\"> {{$icon$}}</button>\n\\end",
"title": "$:/plugins/tg/ro/macros/doc",
"tags": "$:/tags/Macro",
"modified": "20200316123614203"
},
"$:/plugins/tg/ro/shortcut/publish": {
"created": "20200317164804429",
"text": "<$navigator story=\"$:/StoryList\">\n<$action-navigate $to=\"$:/plugins/tg/ro/publish\"/>\n</$navigator>",
"title": "$:/plugins/tg/ro/shortcut/publish",
"tags": "$:/tags/KeyboardShortcut",
"modified": "20200317185519894",
"key": "((publish))"
},
"$:/config/ShortcutInfo/publish": {
"created": "20200317164006337",
"text": "Open Publish window",
"title": "$:/config/ShortcutInfo/publish",
"tags": "",
"modified": "20200317164305031"
},
"$:/config/shortcuts/publish": {
"created": "20200317164439679",
"text": "ctrl-shift-alt-P",
"title": "$:/config/shortcuts/publish",
"modified": "20200318102428021"
}
}
}
/* Hide advanced search button */
.tc-image-advanced-search-button.tc-image-button {
padding-left: 15px;
}
<$button class="tc-btn-invisible" tooltip="Publish read-only">
<$action-sendmessage $message="tm-open-window" $param="$:/plugins/tg/ro/publish" height="700px" width="550px"/>
{{$:/plugins/tg/ro/images/publish}}
</$button>
{
"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<req.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<configTiddlers.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\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);\n\t\t}\n\t});\n\tthis.cm.on(\"drop\",function(cm,event) {\n\t\tevent.stopPropagation(); // Otherwise TW's dropzone widget sees the drop event\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}\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 = CodeMirrorEngine;\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<=e&&(f=!(p=!1));var b=g&&(r||p&&(null==e||e<12.11)),x=d||w&&9<=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<t;--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<t.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<n.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<0||t<=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<e.length;++n)if(e[n]==t)return n;return-1}I.prototype.onTimeout=function(e){e.id=0,e.time<=+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<this.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<=i+l)return r+Math.min(l,t-i);if(i+=o-r,r=o+1,t<=(i+=n-i%n))return r}}var j=[\"\"];function X(e){for(;j.length<=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<e.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)||\"\"<e&&(e.toUpperCase()!=e.toLowerCase()||Z.test(e))}function J(e,t){return t?!!(-1<t.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<=e.charCodeAt(0)&&te.test(e)}function re(e,t,n){for(;(n<0?0<t:t<e.length)&&ne(e.charAt(t));)t+=n;return t}function ie(e,t,n){for(var r=n<t?-1:1;;){if(t==n)return t;var i=(t+n)/2,i=r<0?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<e.length;++i){var o=e[i];if(o.from<t&&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<i;++l)o.push((r=e.charCodeAt(l))<=247?se.charAt(r):1424<=r&&r<=1524?\"R\":1536<=r&&r<=1785?ae.charAt(r-1536):1774<=r&&r<=2220?\"r\":8192<=r&&r<=8203?\"w\":8204==r?\"b\":\"L\");for(var s=0,a=n;s<i;++s){var u=o[s];\"m\"==u?o[s]=a:a=u}for(var c=0,h=n;c<i;++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<i-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<i;++m){var v=o[m];if(\",\"==v)o[m]=\"N\";else if(\"%\"==v){for(var y=void 0,y=m+1;y<i&&\"%\"==o[y];++y);for(var b=m&&\"!\"==o[m-1]||y<i&&\"1\"==o[y]?\"1\":\"N\",w=m;w<y;++w)o[w]=b;m=y-1}}for(var x=0,C=n;x<i;++x){var S=o[x];\"L\"==C&&\"1\"==S?o[x]=\"L\":he.test(S)&&(C=S)}for(var L=0;L<i;++L)if(ce.test(o[L])){for(var k=void 0,k=L+1;k<i&&ce.test(o[k]);++k);for(var T=\"L\"==(L?o[L-1]:n),M=T==(\"L\"==(k<i?o[k]:n))?T?\"L\":\"R\":n,N=L;N<k;++N)o[N]=M;L=k-1}for(var A,O=[],D=0;D<i;)if(de.test(o[D])){var W=D;for(++D;D<i&&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<i&&\"L\"!=o[D];++D);for(var P=H;P<D;)if(fe.test(o[P])){H<P&&(O.splice(F,0,new ge(1,H,P)),F+=E);var I=P;for(++P;P<D&&fe.test(o[P]);++P);O.splice(F,0,new ge(2,I,P)),F+=E,H=P}else++P;H<D&&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<(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<n.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<t.length;++r)-1==R(n,t[r])&&n.push(t[r])}function Le(e,t){return 0<be(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<9)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<=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)<0||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<o){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<e.children.length;++r){var i=e.children[r],o=i.height;if(t<o){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return n+l}function tt(e,t){return t>=e.first&&t<e.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)<0?t:e}function at(e,t){return it(e,t)<0?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<e.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<t?rt(n.line,e):t<0?rt(n.line,0):n)}function ht(e,t){for(var n=[],r=0;r<t.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<this.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<e)return this.pos=e,!0},_e.prototype.backUp=function(e){this.pos-=e},_e.prototype.column=function(){return this.lastColumnPos<this.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<r.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<t.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<e;){var r=a[l];e<r&&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<l;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<s;--s){if(s<=o.first)return o.first;var a=$e(o,s-1),u=a.stateAfter;if(u&&(!n||s+(u instanceof dt?u.lookAhead:0)<=o.modeFrontier))return s;a=P(a.text,null,e.options.tabSize);(null==i||a<r)&&(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<i.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<10;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]<=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<this.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<this.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<t.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<c.start;)i(a=Math.min(c.start,a+5e3),u);u=f}c.start=c.pos}for(;a<c.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<e.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<e.length;++i){var o,l=e[i],s=l.marker;!(null==l.from||(s.inclusiveLeft?l.from<=t:l.from<t))&&(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<e.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<=t:l.from<t),(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<l.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<s.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<v&&l)for(var y=0;y<l.length;++y)null==l[y].to&&(m=m||[]).push(new Tt(l[y].marker,null,null));for(var b=0;b<v;++b)g.push(m);g.push(s)}return g}function At(e){for(var t=0;t<e.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<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function Dt(e,t){if(t){for(var n=0;n<t.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<r.length;++o)(i=r[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!n||Ft(n,i.marker)<0)&&(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<o.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<=u&&c<=0||u<=0&&0<=c)&&(u<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0<=it(a.to,n):0<it(a.to,n))||0<=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?it(a.from,r)<=0:it(a.from,r)<0)))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<n.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<n.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<n.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<o.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<=(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<3)}(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<d.length&&!((u=d[c]).to>s&&u.from<=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<n.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<r.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<=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)<0)&&(d=C)}else C.from>g&&y>C.from&&(y=C.from)}if(w)for(var k=0;k<w.length;k+=2)w[k+1]==y&&(c+=\" \"+w[k]);if(!d||d.from==g)for(var T=0;T<b.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<=g)break;for(var M=Math.min(p,y);;){if(v){var N,A=g+v.length;if(d||(N=M<A?v.slice(0,M-g):v,t.addToken(t,N,s?s+u:u,h,g+N.length==y?c:\"\",a,f)),M<=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<=1&&2<t.offsetHeight&&!(w&&v<8)));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<e.length&&!/ /.test(e))return e;for(var n=t,r=\"\",i=0;i<e.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<9?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<9?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<9&&(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<n;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<t.length;n++)t[n].call(null);for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n<t.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<n.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<e.length;++t)e[t]()}function an(e,t,n,r){for(var i=0;i<t.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<8&&(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<e.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<t.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<s.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<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var i=0;i<e.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<e.display.viewTo)return e.display.view[er(e,t)];e=e.display.externalMeasured;return e&&t>=e.lineN&&t<e.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<o.length-1;l++){var s=o[l],a=o[l+1];2<Math.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<4;c++){for(;s&&ne(t.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+a<o.coverEnd&&ne(t.line.text.charAt(o.coverStart+a));)++a;if((i=w&&v<9&&0==s&&a==o.coverEnd-o.coverStart?l.parentNode.getBoundingClientRect():function(e,t){var n=An;if(\"left\"==t)for(var r=0;r<e.length&&(n=e[r]).left==n.right;r++);else for(var i=e.length-1;0<=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<11&&(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<Math.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<s&&(u=r=\"right\"),i=e.options.lineWrapping&&1<(g=l.getClientRects()).length?g[\"right\"==r?g.length-1:0]:l.getBoundingClientRect();!(w&&v<9)||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<f.length-1&&!(d<f[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<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l=\"left\"):t<a?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,a<=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<e.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<e.rest.length;t++)e.measure.caches[t]={}}function Wn(e){e.display.externalMeasure=null,k(e.display.lineMeasure);for(var t=0;t<e.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<e.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<=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)<0)return Un(r.first,0,null,-1,-1);var i=et(r,n),o=r.first+r.size-1;if(o<i)return Un(r.first+r.size-1,$e(r,o).text.length,null,1,1);t<0&&(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<i.length;h++){var d,f=i[h];f.from>=a||f.to<=s||(d=1!=f.level,d=Mn(e,r,d?Math.min(a,f.to)-1:Math.max(s,f.from)).right,d=d<o?o-d+1e9:d-o,(!u||d<c)&&(u=f,c=d))}u=u||i[i.length-1];u.from<s&&(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<e&&(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<=i&&t.left<=r&&(h=e,d=t),1)},s,a),f=!1;{var p,g;d?(p=r-d.left<d.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<=i==u?\"after\":\"before\",u=Bn(n,rt(t,c,g),\"line\",e,o),p=u.left,f=i<u.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<r.length;++i){var o=r[i];o.marker.collapsed&&(null==o.from||o.from<t)&&(null==o.to||o.to>t)&&(!n||Ft(n,o.marker)<0)&&(n=o.marker)}return n}(l,s.ch+(0<s.xRel||0<s.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<=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<=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<49;++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<n&&(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<t&&(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<e.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<i.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)<0)return null;for(var n=e.display.view,r=0;r<n.length;r++)if((t-=n[r].size)<0)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<l.viewTo&&(null==l.updateLineNumbers||l.updateLineNumbers>t)&&(l.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=l.viewTo?kt&&Bt(e.doc,t)<l.viewTo&&rr(e):n<=l.viewFrom?kt&&Gt(e.doc,n+r)>l.viewFrom?rr(e):(l.viewFrom+=r,l.viewTo+=r):t<=l.viewFrom&&n>=l.viewTo?rr(e):t<=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<e.lineN?e.lineN+=r:t<e.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<i.lineN+i.size&&(r.externalMeasured=null),t<r.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<o;a++)s+=l[a].size;if(s!=t){if(0<r){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<0?0:l.length-1))return null;n+=r*l[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function or(e){for(var t=e.display.view,n=0,r=0;r<t.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<i.sel.ranges.length;a++)!t&&a==i.sel.primIndex||((n=i.sel.ranges[a]).from().line>=e.display.viewTo||n.to().line<e.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<0&&(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<e.length;++o){var l=e[o];(l.from<n&&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<=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<c.top&&T(S,u.bottom,null,c.top),T(s,c.top,n-s,c.bottom)),(!v||ur(u,v)<0)&&(v=u),ur(c,v)<0&&(v=c),(!y||ur(u,y)<0)&&(y=u),ur(c,y)<0&&(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<n.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<n.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<e.options.cursorBlinkRate?t.blinker=setInterval(function(){e.hasFocus()||pr(e),t.cursorDiv.style.visibility=(n=!n)?\"\":\"hidden\"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(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<t.view.length;r++){var i,o=t.view[r],l=e.options.lineWrapping,s=void 0,a=0;if(!o.hidden){w&&v<8?(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<u||u<-.005)&&(Qe(o.line,s),mr(o.line),o.rest))for(var c=0;c<o.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<e.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<o?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<0&&(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<r,r=t.bottom>s-r;t.top<i?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<10?l.scrollLeft=0:t.left<u?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)<2||(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)<2)&&!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<8&&(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<e.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<4&&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<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,n=0;n<t.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<n.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<t.length;r++)!function(e){e.updatedDisplay=e.mustUpdate&&Ur(e.cm,e.update)}(t[r]);for(var i=0;i<t.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<t.length;o++)!function(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+\"px\",e.maxScrollLeft<t.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<t.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<5;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<Math.abs(e.doc.scrollTop-s)&&(l=!0)),null!=u.scrollLeft&&(Tr(e,u.scrollLeft),1<Math.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<0?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<o.length;++s)o[s].lines.length||xe(o[s],\"hide\");if(l)for(var a=0;a<l.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<e.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<t.length;++o)i=t[o]!=e.styles[o];i&&u.push(a.line),e.stateAfter=a.save(),a.nextLine()}else e.text.length<=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<u.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<=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<o&&o-n.viewFrom<20&&(o=Math.max(r.first,n.viewFrom)),n.viewTo>l&&n.viewTo-l<20&&(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<=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<r&&(l.view=l.view.slice(er(o,r))),l.viewFrom=r,l.viewTo<i?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<o&&(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<a.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<=u&&h.lineNumber;h.changes&&(-1<R(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<o&&(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<=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<n.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<s.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<e.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<n.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<8&&(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<this.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<c.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<0?s=Math.max(0,s+n-50):a=Math.min(e.doc.height,a+n+50),Kr(e,{top:s,bottom:a})),Jr<20&&(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<this.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<this.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<this.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<this.ranges.length;n++){var r=this.ranges[n];if(0<=it(t,r.from())&&it(e,r.to())<=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<t.length;i++){var o,l=t[i],s=t[i-1],a=it(s.to(),l.from());(r&&!l.empty()?0<a:0<=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<=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)<0)return e;if(it(e,t.to)<=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<e.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<t;++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<g&&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<t.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<a.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<=(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<t.text.length;++i)r.push(function(e){if(!e)return null;for(var t,n=0;n<e.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<n.length;++i){var o=n[i],l=r[i];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.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<e.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<l.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<R(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)<0)!=it(n,r)<0?(r=t,t=n):e!=it(t,n)<0&&(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<e.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<e.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)<0?-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<t.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<o.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<=t.ch:s.from<t.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<0?1:-1),s=void 0;if((r<0?c:u)&&(h=Ui(e,h,-r,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(s=it(h,n))&&(r<0?s<0:0<s))return Bi(e,h,t,r,i)}a=a.find(r<0?-1:1);return(r<0?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<0&&0==t.ch?t.line>e.first?ct(e,rt(t.line-1)):null:0<n&&t.ch==(r||$e(e,t.line)).text.length?t.line<e.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<e.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<r.length;++o)for(var l=r[o],s=l.find(0),a=0;a<i.length;++a){var u,c,h,d=i[a];it(d.to,s.from)<0||0<it(d.from,s.to)||(u=[a,1],c=it(d.from,s.from),h=it(d.to,s.to),(c<0||!l.inclusiveLeft&&!c)&&u.push({from:d.from,to:s.from}),(0<h||!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<=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<s.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<=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<n.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<e.first?_i(e,t.text.length-1-(t.to.line-t.from.line)):t.from.line>e.lastLine()||(t.from.line<e.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<r.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<t-10)){for(var n=e.first,r=t-1;n<r;r--){var i=$e(e,r).stateAfter;if(i&&(!(i instanceof dt)||r+i.lookAhead<t)){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)<0&&(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<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function Qi(e,t,n,r){for(var i=0;i<e.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<o.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<o.changes.length;++a){var u=o.changes[a];if(n<u.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<=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<e.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<e.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<i;++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<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e<r;++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<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<o){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<25&&(1<this.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<this.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<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,n),i.lines&&50<i.lines.length){for(var l=i.lines.length%25+25,s=l;s<i.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<=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<e.children.length);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<o){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)<(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<t.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<e.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<i||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<=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<this.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<e.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<this.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<this.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<e.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<this.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<t.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<e.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<t.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<n.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<this.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<i.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<t.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)<0,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<=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<e.done.length;r++)e.done[r].ranges||++t;for(var i=0;i<e.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)<r.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<n.length;++r){var i=n[r];(null==i.from||i.from<=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<t.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<t.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<e)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<this.first||e.ch<0)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<n&&(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<t.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<this.linked.length;++t)if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),function(o){for(var e=0;e<o.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<t.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<n.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<r.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<u.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<e.length;r++){var i=e[r].CodeMirror;i&&n.push(i)}n.length&&n[0].operation(function(){for(var e=0;e<n.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<10;xo++)wo[xo+48]=wo[xo+96]=String(xo);for(var Co=65;Co<=90;Co++)wo[Co]=String.fromCharCode(Co);for(var So=1;So<=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<o.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<o.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<t.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<n.length;i++){for(var o=e(n[i]);r.length&&it(o.from,Y(r).to)<=0;){var l=r.pop();if(it(l.from,o.from)<0){o.from=l.from;break}}r.push(o)}Er(t,function(){for(var e=r.length-1;0<=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<0||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<0?\"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<0?Y(o):o[0],o=i<0==(1==e.level)?\"after\":\"before\";return 0<e.level||\"rtl\"==t.doc.direction?(l=Tn(t,n),s=i<0?n.text.length-1:0,a=Mn(t,l,s).top,s=ie(function(e){return Mn(t,l,e).top==a},i<0==(1==e.level)?e.from:e.to-1,s),\"before\"==o&&(s=Ho(n,s,1))):s=i<0?e.to:e.from,new rt(r,s,o)}}return new rt(r,i<0?n.text.length:0,i<0?\"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<=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<e?i.to>s.ch:i.from<s.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<0,d=u(s,h?1:-1);if(null!=d&&(h?d<=i.to&&d<=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<=e&&e<a.length;e+=t){var i=a[e],o=0<t==(1!=i.level),l=o?n.begin:u(n.end,-1);if(i.from<=l&&l<i.to)return r(l,o);if(l=o?i.from:u(i.to,-1),n.begin<=l&&l<n.end)return r(l,o)}},r=f(r+e,e,c);if(r)return r;c=0<e?c.end:u(c.begin,-1);return null==c||0<e&&c==n.text.length||!(r=f(0<e?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<n.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<n.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<n.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<r.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<e.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<=t;t--)r.replaceRange(r.doc.lineSeparator(),e[t].anchor,e[t].head,\"+input\");e=r.listSelections();for(var n=0;n<e.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<=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<e.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<11&&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<10)&&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<(i=l.contains(t))&&(it((i=l.ranges[i]).from(),t)<0||0<t.xRel)&&(0<it(i.to(),t)||t.xRel<0)?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<=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<v?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<t.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<=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<it(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<(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<0:0<a);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<n.from)&&setTimeout(Pr(d,function(){u==i&&e(t)}),150)):(r=t.clientY<a.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<e.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<11&&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<11?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<n*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<=1&&e.radiusY<=1}}(e)||tl(r,e)||(i.input.ensurePolled(),clearTimeout(n),t=+new Date,i.activeTouch={start:t,moved:!1,prev:t-o.end<=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<300&&(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<100)?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<cl.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<u)){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<u&&(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<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.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<r.ranges.length)if(dl&&dl.text.join(\"\\n\")==t){if(r.ranges.length%dl.text.length==0){u=[];for(var c=0;c<dl.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<=d;d--){var f=r.ranges[d],p=f.from(),g=f.to();f.empty()&&(n&&0<n?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<2&&(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<=r;r--){var i=n.ranges[r];if(!(100<i.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<o.electricChars.length;s++)if(-1<t.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<e.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<l?0:-1)),isNaN(t)?null:new rt(i.line,Math.max(0,Math.min(a.text.length,i.ch+o*(55296<=t&&t<56320?2:1))),-o)):s?Po(r.cm,a,i,o):Fo(a,i,o))){if(e||(n=i.line+u)<r.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<0)||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<0&&(o=1,n(),i.sticky=\"after\");break}if(p&&(c=p),0<o&&!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<n?t.bottom:t.top)+n*i):\"line\"==r&&(o=0<n?t.bottom+3:t.top-3);(l=Vn(e,a,o)).outside;){if(n<0?o<=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<e.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<(h?h.length:0);r++)for(var i=r<0?c.map:h[r],o=0;o<i.length;o+=3){var l=i[o+2];if(l==e||l==t){var s=Je(r<0?u.line:u.rest[r]),a=i[o]+n;return(n<0||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<=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<t.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<t.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<t.lastLine()&&(r=rt(r.line+1,0)),i.line<n.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<t.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<l.length&&1<s.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<d&&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<g&&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<l.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<=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<=v&&(this.hasSelection=n)):e||(this.prevInput=this.textarea.value=\"\",w&&9<=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<=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<s&&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<i.length||-1<i.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<=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<9&&i.scrollbars.setScrollTop(i.scroller.scrollTop=c),null!=o.selectionStart&&((!w||w&&v<9)&&h(),e=0,t=function(){i.selForContextMenu==r.doc.sel&&0==o.selectionStart&&0<o.selectionEnd&&\"\"==n.prevInput?Pr(r,Vi)(r):e++<10?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<=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<=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<t.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<e.length&&n(e[r])<=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<t.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<t.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<n;++s)hl(this,s,e);i=this.doc.sel.ranges;0==o.ch&&t.length==i.length&&0<i[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]<o)){t=n[2*l+2];break}r=1+l}}e=t?t.indexOf(\"overlay \"):-1;return e<0?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<i[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<r._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<this.doc.first?e=this.doc.first:r<e&&(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<=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<0&&(i=-1,t=-t);for(var o=ct(this.doc,e),l=0;l<t&&!(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<0?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<0?{from:t,to:e.head}:{from:e.head,to:t}})}),findPosV:function(e,t,n,r){var i=1,o=r;t<0&&(i=-1,t=-t);for(var l=ct(this.doc,e),s=0;s<t;++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<0?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<l.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<n&&l(t.charAt(n-1));)--n;for(;r<t.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<e.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<Math.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)<0&&(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<arguments.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<i.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<=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<e.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<e.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<e.length;n++)if(e[n]!=t[n])return;return 1}}(t.state.activeLines,n)&&t.operation(function(){f(t);for(var e=0;e<n.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<e.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<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.mime==t)return i;if(i.mimes)for(var a=0;a<i.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<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.ext)for(var a=0;a<i.ext.length;a++)if(i.ext[a]==t)return i}},e.findModeByFileName=function(t){for(var m=0;m<e.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<e.modeInfo.length;m++){var i=e.modeInfo[m];if(i.name.toLowerCase()==t)return i;if(i.alias)for(var a=0;a<i.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|<$link to=\"$:/config/codemirror/cursorBlinkRate\"><<lingo hint>></$link> |<$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|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$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|<$link to=\"$:/config/codemirror/indentUnit\"><<lingo hint>></$link> |<$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/indentWithTabs\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/indentWithTabs\"><<lingo info>></$link> </$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<$link to=\"$:/config/codemirror/keyMap\"><<lingo hint>></$link>\n\n<$select tiddler=\"$:/config/codemirror/keyMap\" default=\"default\">\n<option value=\"default\">default</option>\n<$list filter=\"[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]\">\n<option value=<<currentTiddler>>><$transclude><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/lineNumbers\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"false\"> <$link to=\"$:/config/codemirror/lineNumbers\"><<lingo info>></$link> </$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/lineWrapping\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/lineWrapping\"><<lingo info>></$link> </$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/showCursorWhenSelecting\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/showCursorWhenSelecting\"><<lingo info>></$link> </$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/smartIndent\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/smartIndent\"><<lingo info>></$link> </$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<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/styleActiveLine\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"false\"> <$link to=\"$:/config/codemirror/styleActiveLine\"><<lingo info>></$link> </$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|<$link to=\"$:/config/codemirror/tabSize\"><<lingo hint>></$link> |<$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<$link to=\"$:/config/codemirror/theme\"><<lingo hint>></$link>\n\n<$select tiddler=\"$:/config/codemirror/theme\" default=\"default\">\n<option value=\"default\">default</option>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]module-type[codemirror-theme]!has[draft.of]get[name]]\">\n<option value=<<currentTiddler>>><$transclude field=\"name\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$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<$set name=\"backgroundColour\" value=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">>>\n.cm-s-tiddlywiki.cm-fat-cursor .CodeMirror-cursor { background: <<backgroundColour>>; }\n.cm-s-tiddlywiki .cm-animate-fat-cursor { background-color: <<backgroundColour>>; }\n</$set>\n\\end\n\\define set-fat-cursor-background-colours(palette)\n<$macrocall $name=\"set-fat-cursor-background-css\" colour={{$palette$##foreground}} colourA=\"#77ee77\" colourB=\"#586e75\"/>\n\\end\n\\define set-fat-cursor-background()\n<$macrocall $name=\"set-fat-cursor-background-colours\" palette={{$:/palette}}/>\n\\end\n\\define set-selection-background-css(colour,colourA,colourB,tiddlerEditorBackground)\n<$wikify name=\"tiddlerEditorBackground\" text={{{ [[$tiddlerEditorBackground$]lowercase[]] }}}>\n<$set name=\"backgroundColour\" value=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">>>\n<$set name=\"backgroundColour\" value={{{ [<backgroundColour>lowercase[]match<tiddlerEditorBackground>then[]] ~[<backgroundColour>] }}}>\n.cm-s-tiddlywiki div.CodeMirror-selected { background: <<backgroundColour>>; color: <<colour foreground>>; }\n.cm-s-tiddlywiki.CodeMirror ::selection { background: <<backgroundColour>>; color: <<colour foreground>>; }\n.cm-s-tiddlywiki .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: <<backgroundColour>>; color: <<colour foreground>>; }\n.cm-s-tiddlywiki .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: <<backgroundColour>>; color: <<colour foreground>>; }\n</$set>\n</$set>\n</$wikify>\n\\end\n\\define set-selection-background-colours(palette)\n<$macrocall $name=\"set-selection-background-css\" colour={{$palette$##foreground}} colourA={{{ [{$palette$##selection-background}!match[]!prefix[<<]!suffix[>>]] ~#073642 }}} colourB={{{ [{$palette$##selection-background}!match[]!prefix[<<]!suffix[>>]] ~#eee8d5 }}} tiddlerEditorBackground={{$palette$##tiddler-editor-background}}/>\n\\end\n\\define set-selection-background()\n<$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 <<colour 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: <<colour tiddler-editor-background>>; color: <<colour foreground>>; }\n.cm-s-tiddlywiki .CodeMirror-gutters {background: <<colour tiddler-editor-background>>; border-right: 1px solid <<colour tiddler-editor-border>>;}\n.cm-s-tiddlywiki .CodeMirror-linenumber {color: <<colour foreground>>;}\n.cm-s-tiddlywiki .CodeMirror-cursor { border-left: 2px solid <<colour 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: <<colour background>>; background-color: <<colour primary>>; font-weight: normal;}\n.cm-s-tiddlywiki .CodeMirror-widget { text-shadow: none; }\n.cm-s-tiddlywiki .CodeMirror-dialog { background: <<colour 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<<set-fat-cursor-background>>\n<<set-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<<lingo hint>>\n\n<$link to=\"$:/plugins/tiddlywiki/codemirror/usage\"><<lingo usage>></$link>\n\n<$link to=\"$:/plugins/tiddlywiki/codemirror/keyboard\"><<lingo keyboard>></$link>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings/CodeMirror]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "<div class=\"tc-control-panel\">\n<$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</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<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$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 <<tag-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"
}
}
}
{
"tiddlers": {
"$:/plugins/tobibeer/appear/widget.js": {
"title": "$:/plugins/tobibeer/appear/widget.js",
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/widget.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nUse the appear widget for popups, sliders, accordion menus\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/widgets/widget.js\").widget,e=function(t,e){this.initialise(t,e)},i={};e.prototype=new t;e.prototype.render=function(t,e){this.parentDomNode=t;this.nextSibling=e;this.computeAttributes();this.execute();var i,s,r,a,h,n,l=[];if(this.handle){this.getHandlerCache(this.handle,1);this.refreshHandler()}else{s={type:\"button\"};s.attributes=this.setAttributes(s,\"button\");i=s.attributes[\"class\"].value.trim();s.attributes[\"class\"].value=i+\" appear-show\"+(this.handler?\" tc-popup-absolute\":\"\");s.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.show,{parseAsInline:true}).tree;h={type:\"reveal\",children:this.parseTreeNode.children};h.attributes=this.setAttributes(h,\"reveal\");h.isBlock=!(this.mode&&this.mode===\"inline\");if(h.attributes.type&&h.attributes.type.value===\"popup\"){s.attributes.popup=h.attributes.state;l.push(s);if(!this.handler){l.push(h)}else{s.attributes.handler=this.handler}}else{h.attributes.type={type:\"string\",value:\"match\"};h.attributes.text={type:\"string\",value:this.currentTiddler};s.attributes.set=h.attributes.state;s.attributes.setTo={type:\"string\",value:this.currentTiddler};a={type:\"reveal\",isBlock:this.block,children:[s],attributes:{type:{type:\"string\",value:\"nomatch\"},state:h.attributes.state,text:{type:\"string\",value:this.currentTiddler}}};if(!this.once){r=$tw.utils.deepCopy(s);r.attributes[\"class\"].value=i+\" appear-hide \"+(this.attr.button.selectedClass?this.attr.button.selectedClass:\"\");r.attributes.setTo={type:\"string\",value:\"\"};r.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.hide,{parseAsInline:true}).tree}n=$tw.utils.deepCopy(a);n.children=[];if(!this.once){n.children.push(r)}if(!this.handler){n.children.push(h)}n.attributes.type.value=\"match\";l.push(a,n)}this.makeChildWidgets(l);this.renderChildren(this.parentDomNode,e);if(this.handler){this.addToHandlerCache(h)}}};e.prototype.execute=function(){var t=this;this.attr={map:{reveal:{\"class\":1,position:1,retain:1,state:1,style:1,tag:1,type:1},button:{\"button-class\":1,\"button-style\":1,\"button-tag\":1,tooltip:1,selectedClass:1}},rename:{\"button-class\":\"class\",\"button-style\":\"style\",\"button-tag\":\"tag\"},button:{},reveal:{}};$tw.utils.each(this.attributes,function(e,i){var s;$tw.utils.each(t.attr.map,function(r,a){$tw.utils.each(Object.keys(r),function(r){if(r==i){t.attr[a][i]=e;s=false;return false}});return s})});this.currentTiddler=this.getVariable(\"currentTiddler\");this.show=this.getValue(this.attributes.show,\"show\");this.hide=this.getValue(this.attributes.hide,\"hide\");if(!this.hide){this.hide=this.show}this.once=this.attributes.once&&this.attributes.once!==\"false\";this.$state=this.attributes.$state;this.mode=this.getValue(this.attributes.mode,\"mode\");this.handle=this.attributes.handle;this.handler=this.attributes.handler;this.handlerVariables=(this.attributes.variables||\"\")+\" currentTiddler\";this.keep=[\"yes\",\"true\"].indexOf((this.getValue(this.attributes.keep,\"keep\")||\"\").toLocaleLowerCase())>-1;if(!this.attr.reveal.state){this.attr.reveal.state=this.getValue(undefined,\"default-state\")+this.currentTiddler+this.getStateQualifier()+\"/\"+(this.attr.reveal.type?this.attr.reveal.type+\"/\":\"\")+(this.mode?this.mode+\"/\":\"\")+(this.once?\"once/\":\"\")+(this.$state?\"/\"+this.$state:\"\")}};e.prototype.refresh=function(t){var e=this.computeAttributes();if(Object.keys(e).length){this.refreshSelf();return true}if(this.handle){this.refreshHandler()}return this.refreshChildren(t)};e.prototype.getValue=function(t,e){var i,s,r={show:\"»\",\"default-state\":\"$:/temp/appear/\"};if(t===undefined){i=this.wiki.getTiddler(\"$:/plugins/tobibeer/appear/defaults/\"+e);if(i){s=i.getFieldString(\"undefined\");if(!s||s===\"false\"){t=i.getFieldString(\"text\")}}}if(t===undefined){t=r[e]}return t};e.prototype.setAttributes=function(t,e){var i=this,s={};$tw.utils.each(Object.keys(this.attr.map[e]),function(r){var a,h=i.attr.rename[r];if(!h){h=r}a=i.getValue(i.attr[e][r],r);if(h===\"class\"){a=[\"appear\",\"appear-\"+e,e===\"reveal\"&&i.keep?\"tc-popup-keep\":\"\",i.mode?\"appear-\"+i.mode:\"\",i.once?\"appear-once\":\"\",a||\"\"].join(\" \")}if(a!==undefined){if(h===\"tag\"){t.tag=a}else{s[h]={type:\"string\",value:a}}}});return s};e.prototype.getHandlerCache=function(t,e){var s=i[t];if(!s||e){i[t]={handled:{},handle:{}};s=i[t]}return s};e.prototype.refreshHandler=function(){var t=this,e=this.getHandlerCache(this.handle),s=e.handle;if(Object.keys(s).length){$tw.utils.each(s,function(e,i){t.removeChildNode(i);t.children.push(t.makeChildWidget(e));t.children[t.children.length-1].render(t.parentDomNode,t.nextSibling)});i[this.handle].handle={}}};e.prototype.removeChildNode=function(t){var e=this;$tw.utils.each(this.children,function(i,s){if(i.children[0].state===t){i.removeChildDomNodes();e.children.splice(s);return false}})};e.prototype.addToHandlerCache=function(t){var e=this,i=t.attributes.state.value,s=this.getHandlerCache(this.handler),r=s.handled[i],a={type:\"vars\",children:[t],attributes:{}};$tw.utils.each((this.handlerVariables||\"\").split(\" \"),function(t){t=t.trim();if(t){a.attributes[t]={type:\"string\",value:(e.getVariable(t)||\"\").toString()}}});if(a!==r){s.handle[i]=a;this.wiki.setText(\"$:/temp/appear-handler/\"+this.handler,\"text\",undefined,i)}};exports.appear=e})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/tobibeer/appear/defaults/show": {
"title": "$:/plugins/tobibeer/appear/defaults/show",
"text": "»"
},
"$:/plugins/tobibeer/appear/defaults/mode": {
"title": "$:/plugins/tobibeer/appear/defaults/mode",
"text": "block"
},
"$:/plugins/tobibeer/appear/defaults/keep": {
"title": "$:/plugins/tobibeer/appear/defaults/keep",
"text": "yes"
},
"$:/plugins/tobibeer/appear/defaults/button-class": {
"title": "$:/plugins/tobibeer/appear/defaults/button-class",
"text": "tc-btn-invisible tc-tiddlylink"
},
"$:/plugins/tobibeer/appear/defaults/default-state": {
"title": "$:/plugins/tobibeer/appear/defaults/default-state",
"text": "$:/temp/appear/"
},
"$:/plugins/tobibeer/appear/popup.js": {
"title": "$:/plugins/tobibeer/appear/popup.js",
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/popup.js\r\ntype: application/javascript\r\nmodule-type: utils\r\n\r\nAn enhanced version of the core Popup to support:\r\n* absolute popups\r\n* preview popups\r\n* popup z-index\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/utils/dom/popup.js\").Popup,e=require(\"$:/core/modules/widgets/reveal.js\").reveal,s=e.prototype.refresh;t.prototype.show=function(t){var e,s=t.domNode,p=$tw.utils.hasClass(s,\"tc-popup-absolute\"),o=this.popupInfo(s),i=function(t){var e=t,s=0,p=0;do{s+=e.offsetLeft||0;p+=e.offsetTop||0;e=e.offsetParent}while(e);return{left:s,top:p}},l={left:s.offsetLeft,top:s.offsetTop};e=o.popupLevel;if(o.isHandle){e++}this.cancel(e);if(this.findPopup(t.title)===-1){this.popups.push({title:t.title,wiki:t.wiki,domNode:s})}l=p?i(s):l;t.wiki.setTextReference(t.title,\"(\"+l.left+\",\"+l.top+\",\"+s.offsetWidth+\",\"+s.offsetHeight+\")\");if(this.popups.length>0){this.rootElement.addEventListener(\"click\",this,true)}};t.prototype.popupInfo=function(t){var e,s=false,p=t;while(p&&e===undefined){if($tw.utils.hasClass(p,\"tc-popup-handle\")||$tw.utils.hasClass(p,\"tc-popup-keep\")){s=true}if($tw.utils.hasClass(p,\"tc-reveal\")&&($tw.utils.hasClass(p,\"tc-popup\")||$tw.utils.hasClass(p,\"tc-popup-handle\"))){e=parseInt(p.style.zIndex)-1e3}p=p.parentNode}var o={popupLevel:e||0,isHandle:s};return o};t.prototype.handleEvent=function(t){if(t.type===\"click\"){var e=this.popupInfo(t.target),s=e.popupLevel-1;if(e.isHandle){if(s<0){s=1}else{s++}}this.cancel(s)}};e.prototype.refresh=function(){var t,e,p=this.isOpen;e=s.apply(this,arguments);t=this.domNodes[0];if(this.isOpen&&(p!==this.isOpen||!t.style.zIndex)&&t&&(this.type===\"popup\"||$tw.utils.hasClass(t,\"tc-block-dropdown\")&&$tw.utils.hasClass(t,\"tc-reveal\"))){t.style.zIndex=1e3+$tw.popup.popups.length}return e}})();",
"type": "application/javascript",
"module-type": "utils"
},
"$:/plugins/tobibeer/appear/readme": {
"title": "$:/plugins/tobibeer/appear/readme",
"text": "This plugin provides the ''$appear'' widget that can render popups and sliders (inline or block) as well as accordion menus.\n\n!! Attributes\r\n; type\r\n: set to `popup` to have the content appear as a popup\r\n; show\r\n: the button label\r\n; hide\r\n: the hide button label\r\n; mode\r\n: either `block` or `inline`, with respect to the inner content\r\n: any other mode is interpreted as block mode, without the default styles applying, e.g. drop-shadows\r\n; once\r\n: allows to click the button once, then hides it (unless the state is deleted)\r\n; $state\r\n: the widget calculates a state for you, use this to append a simple id\r\n; state\r\n: alternatively, specify a fully qualified state\r\n; keep\r\n: make popups sticky when `yes` or `true`\r\n; handle / handler / variables\r\n: allows to take the popup contents out of the flow and render them elsewhere on the page\r\n: required to properly create popups in table cells and other constained elements\r\n: specify variables to take along\n\n<br>\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#appear\r\n"
},
"$:/plugins/tobibeer/appear/styles": {
"title": "$:/plugins/tobibeer/appear/styles",
"tags": "$:/tags/Stylesheet",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n<pre>.tc-reveal.appear-block,\r\n.tc-popup.appear {\r\n\tborder-radius: 5px;\r\n\tpadding: 1px 1em;\r\n\t<<box-shadow \"2px 2px 4px rgba(0,0,0,0.3)\">>;\r\n}\r\n.tc-popup.appear {\r\n\tpadding: 0 1em;\r\n\tbackground: <<colour background>>;\r\n}\r\n.appear-reveal.appear-inline{\r\nmargin-left:5px;\r\n}\r\n.appear-reveal.appear-inline.appear-once{\r\nmargin-left:0;\r\n}</pre>"
}
}
}
/*\
title: $:/plugins/tobibeer/appear/widget.js
type: application/javascript
module-type: widget
Use the appear widget for popups, sliders, accordion menus
@preserve
\*/
(function(){"use strict";var t=require("$:/core/modules/widgets/widget.js").widget,e=function(t,e){this.initialise(t,e)},i={};e.prototype=new t;e.prototype.render=function(t,e){this.parentDomNode=t;this.nextSibling=e;this.computeAttributes();this.execute();var i,s,r,a,h,n,l=[];if(this.handle){this.getHandlerCache(this.handle,1);this.refreshHandler()}else{s={type:"button"};s.attributes=this.setAttributes(s,"button");i=s.attributes["class"].value.trim();s.attributes["class"].value=i+" appear-show"+(this.handler?" tc-popup-absolute":"");s.children=this.wiki.parseText("text/vnd.tiddlywiki",this.show,{parseAsInline:true}).tree;h={type:"reveal",children:this.parseTreeNode.children};h.attributes=this.setAttributes(h,"reveal");h.isBlock=!(this.mode&&this.mode==="inline");if(h.attributes.type&&h.attributes.type.value==="popup"){s.attributes.popup=h.attributes.state;l.push(s);if(!this.handler){l.push(h)}else{s.attributes.handler=this.handler}}else{h.attributes.type={type:"string",value:"match"};h.attributes.text={type:"string",value:this.currentTiddler};s.attributes.set=h.attributes.state;s.attributes.setTo={type:"string",value:this.currentTiddler};a={type:"reveal",isBlock:this.block,children:[s],attributes:{type:{type:"string",value:"nomatch"},state:h.attributes.state,text:{type:"string",value:this.currentTiddler}}};if(!this.once){r=$tw.utils.deepCopy(s);r.attributes["class"].value=i+" appear-hide "+(this.attr.button.selectedClass?this.attr.button.selectedClass:"");r.attributes.setTo={type:"string",value:""};r.children=this.wiki.parseText("text/vnd.tiddlywiki",this.hide,{parseAsInline:true}).tree}n=$tw.utils.deepCopy(a);n.children=[];if(!this.once){n.children.push(r)}if(!this.handler){n.children.push(h)}n.attributes.type.value="match";l.push(a,n)}this.makeChildWidgets(l);this.renderChildren(this.parentDomNode,e);if(this.handler){this.addToHandlerCache(h)}}};e.prototype.execute=function(){var t=this;this.attr={map:{reveal:{"class":1,position:1,retain:1,state:1,style:1,tag:1,type:1},button:{"button-class":1,"button-style":1,"button-tag":1,tooltip:1,selectedClass:1}},rename:{"button-class":"class","button-style":"style","button-tag":"tag"},button:{},reveal:{}};$tw.utils.each(this.attributes,function(e,i){var s;$tw.utils.each(t.attr.map,function(r,a){$tw.utils.each(Object.keys(r),function(r){if(r==i){t.attr[a][i]=e;s=false;return false}});return s})});this.currentTiddler=this.getVariable("currentTiddler");this.show=this.getValue(this.attributes.show,"show");this.hide=this.getValue(this.attributes.hide,"hide");if(!this.hide){this.hide=this.show}this.once=this.attributes.once&&this.attributes.once!=="false";this.$state=this.attributes.$state;this.mode=this.getValue(this.attributes.mode,"mode");this.handle=this.attributes.handle;this.handler=this.attributes.handler;this.handlerVariables=(this.attributes.variables||"")+" currentTiddler";this.keep=["yes","true"].indexOf((this.getValue(this.attributes.keep,"keep")||"").toLocaleLowerCase())>-1;if(!this.attr.reveal.state){this.attr.reveal.state=this.getValue(undefined,"default-state")+this.currentTiddler+this.getStateQualifier()+"/"+(this.attr.reveal.type?this.attr.reveal.type+"/":"")+(this.mode?this.mode+"/":"")+(this.once?"once/":"")+(this.$state?"/"+this.$state:"")}};e.prototype.refresh=function(t){var e=this.computeAttributes();if(Object.keys(e).length){this.refreshSelf();return true}if(this.handle){this.refreshHandler()}return this.refreshChildren(t)};e.prototype.getValue=function(t,e){var i,s,r={show:"(''*'')","default-state":"$:/temp/appear/"};if(t===undefined){i=this.wiki.getTiddler("$:/plugins/tobibeer/appear/defaults/"+e);if(i){s=i.getFieldString("undefined");if(!s||s==="false"){t=i.getFieldString("text")}}}if(t===undefined){t=r[e]}return t};e.prototype.setAttributes=function(t,e){var i=this,s={};$tw.utils.each(Object.keys(this.attr.map[e]),function(r){var a,h=i.attr.rename[r];if(!h){h=r}a=i.getValue(i.attr[e][r],r);if(h==="class"){a=["appear","appear-"+e,e==="reveal"&&i.keep?"tc-popup-keep":"",i.mode?"appear-"+i.mode:"",i.once?"appear-once":"",a||""].join(" ")}if(a!==undefined){if(h==="tag"){t.tag=a}else{s[h]={type:"string",value:a}}}});return s};e.prototype.getHandlerCache=function(t,e){var s=i[t];if(!s||e){i[t]={handled:{},handle:{}};s=i[t]}return s};e.prototype.refreshHandler=function(){var t=this,e=this.getHandlerCache(this.handle),s=e.handle;if(Object.keys(s).length){$tw.utils.each(s,function(e,i){t.removeChildNode(i);t.children.push(t.makeChildWidget(e));t.children[t.children.length-1].render(t.parentDomNode,t.nextSibling)});i[this.handle].handle={}}};e.prototype.removeChildNode=function(t){var e=this;$tw.utils.each(this.children,function(i,s){if(i.children[0].state===t){i.removeChildDomNodes();e.children.splice(s);return false}})};e.prototype.addToHandlerCache=function(t){var e=this,i=t.attributes.state.value,s=this.getHandlerCache(this.handler),r=s.handled[i],a={type:"vars",children:[t],attributes:{}};$tw.utils.each((this.handlerVariables||"").split(" "),function(t){t=t.trim();if(t){a.attributes[t]={type:"string",value:(e.getVariable(t)||"").toString()}}});if(a!==r){s.handle[i]=a;this.wiki.setText("$:/temp/appear-handler/"+this.handler,"text",undefined,i)}};exports.appear=e})();
!! Show/hide sidebar tabs
Uncheck to hide the appropriate sidebar tab
|Tab |visible |h
|Open | <$checkbox tiddler="$:/core/ui/SideBar/Open" tag="$:/tags/SideBar"/> |
|Recent | <$checkbox tiddler="$:/core/ui/SideBar/Recent" tag="$:/tags/SideBar"/> |
|Tools | <$checkbox tiddler="$:/core/ui/SideBar/Tools" tag="$:/tags/SideBar"/> |
|More | <$checkbox tiddler="$:/core/ui/SideBar/More" tag="$:/tags/SideBar"/> |
{
"tiddlers": {
"$:/plugins/TWaddle/SideEditor/Button": {
"created": "20200708141207266",
"creator": "Mat von TWaddle",
"text": "\\whitespace trim\n<$list filter=\"[all[current]!tag[$:/tags/Macro]]\">\n <$button class=<<tv-config-toolbar-class>> >\n {{$:/core/images/right-arrow}}\n <$action-setfield\n $tiddler=\"$:/state/sideeditor\"\n text={{!!title}}\n display=\"block\" />\n <$action-deletetiddler\n $tiddler=\"$:/temp/SideEditor/macrotext\"/>\n </$button>\n</$list>\n<$list filter=\"[all[current]tag[$:/tags/Macro]]\">\n <$button class=<<tv-config-toolbar-class>>\n actions=\"\"\"<$action-setfield $tiddler='$:/temp/SideEditor/macrotext' text={{!!text}} />\"\"\" >\n {{$:/core/images/right-arrow}}\n <$action-setfield\n $tiddler=\"$:/state/sideeditor\"\n text={{!!title}}\n display=\"block\" />\n <$action-deletetiddler\n $tiddler='$:/temp/SideEditor/macrotext'/> \n </$button>\n</$list>",
"tags": "$:/tags/ViewToolbar",
"title": "$:/plugins/TWaddle/SideEditor/Button",
"modified": "20200708141340189",
"modifier": "Mat von TWaddle",
"description": "A live editor floating next to the story river...",
"caption": "{{$:/core/images/right-arrow}} SideEditor"
},
"$:/plugins/TWaddle/SideEditor/icon": {
"created": "20160421222805854",
"creator": "Mat von TWaddle",
"text": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAABISURBVDhP1ZAxDgAgCMR4Oj9H1EnDXRjOwSZl0oZg7h7MxJgrgJAFkjlqu4EKXYC5373eACENQDsBZuuITM0GiI8CzPvDadgAbYISbVw2M04AAAAASUVORK5CYII=",
"type": "image/png",
"title": "$:/plugins/TWaddle/SideEditor/icon",
"modifier": "Mat von TWaddle",
"modified": "20200708141352271"
},
"$:/plugins/TWaddle/SideEditor/StylesheetActive": {
"created": "20160514142353426",
"creator": "Mat von TWaddle",
"text": "/*\n * In-macro styles, i.e called from within the SideEditor macro, when that is active.\n * Do NOT tag it $:/tags/Stylesheet as that would make it permanently active.\n * Do NOT enclose in pre tags.\n */\n\n/* Hide regular sidebar scrollbar */\n.tc-sidebar-scrollable {overflow:hidden !important;}\n.tc-sidebar-scrollable:hover {overflow-y:auto !important;}\n\n/* Prioritize access to sidebar or river when they're hovered */\n.tc-sidebar-scrollable:hover,\n .tc-story-river:hover {\n z-index:2002;\n}\n.tc-sidebar-scrollable:hover {\n max-width:<<se-sidebar-hoverwidth>>;\n overflow-x:hidden;\n padding-left:1em;\n margin-left:-1em;\n}\n.tc-sidebar-scrollable:hover .tc-sidebar-header {\n background:<<colour page-background>>;\n padding-left:1em;\n margin-left:-1em;\n}\n/* lower sidebar area faded gray to indicate it blocks typing into SE */\n.tc-sidebar-scrollable:hover:after {\n position: absolute;\n z-index:-1;\n content: ' ';\n height:85vh;\n top:15vh;\n background: <<colour page-background>>;\n width: <<se-sidebar-hoverwidth>>;\n margin-left:-1em;\n opacity:.3;\n box-shadow: inset -1px 0px 0px 0px gray, inset 1px 0px 0px 0px gray;\n}\n\n/* Chrome adds ugly usability outline on the tiddler tool button */\n.se-tool-btn:focus {outline: 0px} \n\n/* Unclear why *some* SE content causes page horiz scrollbar */\nbody {overflow-x:hidden;}\n",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/TWaddle/SideEditor/StylesheetActive",
"modifier": "Mat von TWaddle",
"modified": "20200708141359884"
},
"$:/plugins/TWaddle/SideEditor/Stylesheet": {
"created": "20160514162106379",
"creator": "Mat von TWaddle",
"text": "<pre>\n#sideeditor {\n display:none;\n display:{{$:/state/sideeditor!!display}};\n}\n#sideeditor-main {\n position:fixed;\n z-index:2001;\n top:calc({{$:/plugins/TWaddle/SideEditor/Metrics!!top}}vh + 10px); \n right:0px; /* or triggers horizontal scroll */\n bottom:0; overflow:hidden;\n padding-left:20px; /* prevent mistakenly hovering sth else */\n background-color: transparent;\n}\n/* grayed area to indicate where SE blocks clicking: */ \n#sideeditor-main:hover { background: <<colour page-background>>;\n}\n\n#btnAndTitle { display:inline-block; background:white; }\n#btnAndTitle a { padding-right:10px; }\n#btnAndTitle svg { width:2em; margin-top:-4px; fill:lightgray;\n}\n\n.sideeditor-editor {\n resize:horizontal; overflow-y:auto;\n width:calc(100vw - 42px -\n {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}); \n max-width:calc({{$:/plugins/TWaddle/SideEditor/Metrics!!left}}vw - 40px);\n /* Edge needs this for smaller screens: */\n min-width:calc({{$:/plugins/TWaddle/SideEditor/Metrics!!left}}vw - 40px); \n max-height:calc(100vh - \n {{$:/plugins/TWaddle/SideEditor/Metrics!!top}}vmin - 40px); \n padding-left:5px;\n}\n\n.se-slider-top { /* Covers eventual sidebar scrollbar */\n position:fixed;\n transform:rotate(90deg);\n z-index:2001;\nx z-index:2005;\n width:100vh !important;\n height:22px; /* width to cover sidebar scrollbar */\n right:calc(-50vh + 10px);\n top:49vh; /* Magic numbers because of FF */\n background: <<colour page-background>> !important;\n}\n.se-slider-left {\n position:fixed;\n z-index:2003;\n bottom:0vmin;\n transform:rotate(180deg);\n width:100%; /* MS can't handle vmax here */\n}\n\n/************************ Range Slider styling ***********************/\n/*** CRED: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ ***/\n\n/** Applying base styles *******************/\n\n.se-sliders input[type=range] { /* for Firefox. */\n -webkit-appearance: none; width: 100%; background:transparent;\n}\n.se-sliders input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; }\n.se-sliders input[type=range]:focus { outline: none; }\n\n/** Styling the Thumb ***********************/\n\n/* Special styling for WebKit/Blink */\n.se-sliders input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\n border: 0px; border-radius: 0px;\n height: 20px; width: 6px;\n background: transparent;\n cursor: pointer;\n}\n\n/* All the same stuff for Firefox */\n.se-sliders input[type=range]::-moz-range-thumb {\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\n border: 0; border-radius: 0px;\n height: 20px; width: 6px;\n background: transparent;\n cursor: pointer;\n}\n\n/* All the same stuff for IE */\n.se-sliders input[type=range]::-ms-thumb {\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\n border: 0px solid blue; border-radius: 0px;\n /* height: 20px; width: 16px; */ \n background: transparent;\n cursor: pointer;\n}\n\n/** Styling the Track *************************/\n\n.se-sliders input[type=range]::-webkit-slider-runnable-track {\n width: 100%; height: 1px; margin-top:-10px;\n}\n.se-sliders input[type=range]::-moz-range-track { height: 0px; \n}\n.se-sliders input[type=range]::-ms-track{ height: 1px; margin-top:-10px;\n}\n</pre>",
"z-index": "2000",
"type": "text/vnd.tiddlywiki",
"top": "17",
"title": "$:/plugins/TWaddle/SideEditor/Stylesheet",
"tags": "$:/tags/Stylesheet",
"peek": "1px",
"modifier": "Mat von TWaddle",
"modified": "20200708141426907",
"left": "46",
"display": "none"
},
"$:/plugins/TWaddle/SideEditor/Revealer": {
"created": "20150601115921432",
"creator": "Mat von TWaddle",
"text": "<$macrocall $name=\"sideeditor\" tid={{$:/state/sideeditor}}/>",
"title": "$:/plugins/TWaddle/SideEditor/Revealer",
"tags": "$:/tags/PageTemplate",
"modifier": "Mat von TWaddle",
"modified": "20200708141440614"
},
"$:/plugins/TWaddle/SideEditor/readme": {
"created": "20150807204704723",
"creator": "Mat von TWaddle",
"text": "''SideEditor'' floats a tiddlers editor by the story river side, giving you a //live// view of the effects from your editing.\n\n''Usage''\n\n*''Activate'' it via the tiddler tool button <span class=\"about-icon\">{{$:/core/images/right-arrow}}</span>\n*''Re-size'' it via the \"handle bars\" at upper-right and lower-left corner\n*''Switch focus'' between //Sidebar, River// and //SideEditor// by ''hovering''\n\n;Note!\n:Specifically macros are not //live// updated. Instead the changes take effect when<br> the SideEditor <span class=\"about-icon\">{{$:/core/images/done-button}}</span> is clicked to close the editor.\n\n''Plugin home'': http://sideeditor.tiddlyspot.com/\n\n<br>//Mat <:-) von TWaddle//\n\n<style>.about-icon svg {display:inline; max-width:1em; max-height:1em; fill:gray}</style>",
"title": "$:/plugins/TWaddle/SideEditor/readme",
"modifier": "Mat von TWaddle",
"modified": "20200708141451230"
},
"$:/plugins/TWaddle/SideEditor/Metrics": {
"created": "20160514163926446",
"creator": "Mat von TWaddle",
"text": "",
"top": "22",
"title": "$:/plugins/TWaddle/SideEditor/Metrics",
"tags": "",
"modifier": "Mat von TWaddle",
"modified": "20200708141538093",
"left": "47"
},
"$:/plugins/TWaddle/SideEditor/Main": {
"created": "20160421132415018",
"creator": "Mat von TWaddle",
"text": "\\define se-sidebar-hoverwidth() 400px\n\n\\define se-resizer(field)\n<div class=\"se-sliders\">\n<$range tiddler=\"$:/plugins/TWaddle/SideEditor/Metrics\" field=\"$field$\"\n min=\"0\" max=\"100\" default=\"1\" increment=\"1\" class=\"se-slider-$field$\" /> \n</div>\n\\end\n\n\\define sideeditor(tid)\n<div id=\"sideeditor\">\n<$vars exists={{{ [{$:/state/sideeditor}is[tiddler]] [{$:/state/sideeditor}is[shadow]] +[first[]] }}} >\n<$list filter=\"\"\"[<exists>]\"\"\">\n <<se-resizer \"left\">><<se-resizer \"top\">>\n</$list>\n<div id=\"sideeditor-main\">\n<$list filter=\"\"\"[<exists>!tag[$:/tags/Macro]]\"\"\">\n <div id=\"btnAndTitle\">\n <$button class=\"tc-btn-invisible se-main-btn\"\n actions=\"\"\"<$action-deletetiddler $tiddler=\"$:/state/sideeditor\"/>\"\"\"> \n {{$:/core/images/done-button}}\n </$button>\n <$link to=\"\"\"$tid$\"\"\" />\n </div>\n <br>\n <$edit-text tiddler={{$:/state/sideeditor}} field=\"text\" \n tag=\"textarea\" class=\"sideeditor-editor\" />\n</$list>\n<$list filter=\"\"\"[<exists>tag[$:/tags/Macro]]\"\"\">\n <div id=\"btnAndTitle\">\n <$button class=\"tc-btn-invisible se-main-btn\"\n actions=\"\"\"<$action-deletetiddler $tiddler=\"$:/state/sideeditor\"/>\"\"\" > \n {{$:/core/images/done-button}}\n <$action-setfield\n $tiddler={{$:/state/sideeditor}}\n text={{$:/temp/SideEditor/macrotext}} />\n <$action-navigate\n $to={{$:/state/sideeditor}} $scroll=yes />\n </$button>\n <$link to=\"\"\"$tid$\"\"\" />\n </div>\n <br>\n <$edit-text tiddler=\"$:/temp/SideEditor/macrotext\" field=\"text\" \n tag=\"textarea\" class=\"sideeditor-editor\" />\n</$list>\n<$list filter=\"[[$:/state/sideeditor]display[block]]\">\n <style>{{$:/plugins/TWaddle/SideEditor/StylesheetActive}}</style>\n</$list>\n</div>\n</$vars>\n</div>\n\\end",
"title": "$:/plugins/TWaddle/SideEditor/Main",
"tags": "$:/tags/Macro",
"modifier": "Mat von TWaddle",
"modified": "20200708141549289"
}
}
}
{
"tiddlers": {
"$:/plugins/wikilabs/space-space-newline/history": {
"title": "$:/plugins/wikilabs/space-space-newline/history",
"text": "V 0.0.2 - 2020-12-25\n\n* update license\n\nV 0.0.1 - 2020-08-28\n\n* initial release\n"
},
"$:/plugins/wikilabs/space-space-newline/license": {
"title": "$:/plugins/wikilabs/space-space-newline/license",
"text": "[[Space Space Newline-Plugin|https://wikilabs.github.io/#space-space-newline]] (c) Mario Pietsch - 2020-2021\n\nhttps://opensource.org/licenses/BSD-3-Clause\n"
},
"$:/plugins/wikilabs/space-space-newline/readme": {
"title": "$:/plugins/wikilabs/space-space-newline/readme",
"text": "Adds a wikitext rule to create hard linebreaks with `<space><space><newLine>` or `<space><space><backslash>`\n\n```\nThere are 2 spaces and 1 linebreak at the end of this line \nSo we should see 2 lines\n```\n\n>There are 2 spaces and 1 linebreak at the end of this line \nSo we should see 2 lines\n\n---\n\n```\nThere are 2 spaces and a backslash at the end of this line \\\nSo we should see 2 lines\n```\n\n>There are 2 spaces and a backslash at the end of this line \\\nSo we should see 2 lines\n\n---\n\n```\nIf you want to have a visible backslash at the end of this line \\ \nYou need to add 2 spaces at the end of the line\n```\n\n>If you want to have a visible backslash at the end of this line \\ \nYou need to add 2 spaces after the backslash\n\n\nIt's possible to manipulate the rules behaviour with:\n\n`\\rules only ssnl` \n`\\rules excpet ssnl`\n"
},
"$:/plugins/wikilabs/space-space-newline/ssnl.js": {
"title": "$:/plugins/wikilabs/space-space-newline/ssnl.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/space-space-newline/ssnl.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for <space><space><new-line> example:\n\n```\n\tThere are 2 spaces and 1 linebreak at the end of this line\n\tSo we should see 2 lines\n```\n\n```\n\tThere are 2 spaces and a backslash at the end of this line \\\n\tSo we should see 2 lines\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except ssnl\n\\rules only ssnl\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false exports:false */\n\"use strict\";\n\nexports.name = \"ssnl\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([ ]{2}| \\\\)$/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\r?\\n/mg,{eatTerminator: true});\n\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"br\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
}
}
}
Cahier des ateliers théâtre du CASVP 5ème, animés par //''Jacques Turbé'''//
$:/core/ui/AdvancedSearch/Shadows
$:/core/ui/AdvancedSearch/Shadows
$:/core/ui/ControlPanel/StoryView
$:/core/ui/ControlPanel/Appearance
$:/core/ui/SideBar/Recent
{
"tiddlers": {
"$:/themes/nico/notebook/LICENSE": {
"title": "$:/themes/nico/notebook/LICENSE",
"created": "20200419141443144",
"modified": "20210118213330307",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\nMIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr\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 furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice (including the next\nparagraph) shall be included in all copies or substantial portions of the\nSoftware.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
},
"$:/themes/nico/notebook/themetweaks": {
"title": "$:/themes/nico/notebook/themetweaks",
"created": "20201217172915960",
"modified": "20210123211851680",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\nYou can tweak certain aspects of the ''Notebook'' theme.\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/nico/notebook/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/nico/notebook/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\">Reveal tiddler controls on mouseover</$link> |<$select tiddler=\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/nico/notebook/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/nico/notebook/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/nico/notebook/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/nico/notebook/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/nico/notebook/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/nico/notebook/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/nico/notebook/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/nico/notebook/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/nico/notebook/metrics/sidebar-width\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/nico/notebook/metrics/sidebar-width\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/nico/notebook/metrics/story-width\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/nico/notebook/metrics/story-width\" default=\"\" tag=\"input\"/> |\n\n"
},
"$:/themes/nico/notebook/base": {
"title": "$:/themes/nico/notebook/base",
"created": "20200419141443144",
"modified": "20210120224227503",
"tags": "$:/tags/Stylesheet",
"type": "text/vnd.tiddlywiki",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n\\define if-sidebar(text)\n <$reveal state=\"$:/state/notebook-sidebar\" type=\"match\" text=\"yes\">\n $text$\n </$reveal>\n\\end\n\n\\define if-reveal-tiddler-controls-on-hover(text)\n <$reveal state=\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\" type=\"match\" text=\"yes\">\n $text$\n </$reveal>\n\\end\n \n/* Top and bottom bars */\n\n/* Hide the top-right bar */\n.tc-topbar.tc-topbar-right {\n display: none;\n}\n\ndiv.tc-sidebar-header {\n padding: 0;\n min-height: 0;\n}\n\n.tc-story-river {\n padding: 6px 0 !important;\n width: 100% !important;\n max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;\n margin: 0 auto !important;\n margin-top: 34px !important;\n}\n\ndiv.tc-tiddler-frame {\n width: 100%;\n margin: 20px 0;\n background: <<colour tiddler-background>>;\n box-shadow: 0 5px 20px rgba(0,0,0, 0.12);\n border-radius: 6px;\n padding: 42px 60px 60px 60px;\n}\n\nh1.tc-site-title {\n margin-top: 14px;\n font-size: 1.5em !important;\n}\n\n.nc-bar {\n padding: 10px;\n height: {{$:/themes/nico/notebook/metrics/topbar-height}};\n background: <<colour page-background>>;\n display: flex;\n justify-content: space-between;\n}\n\n.nc-topbar-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\n z-index: 501;\n}\n\n.nc-bar.nc-topbar {\n top: 0;\n background: <<colour page-background>>ee;\n max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);\n padding: 10px 20px;\n margin: 0 auto;\n}\n\n.nc-bar.nc-bottombar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\n z-index: 501;\n}\n\n.nc-bar .left svg {\n fill: <<colour sidebar-controls-foreground>>;\n}\n\n.nc-bar input[type=\"search\"] {\n width: 200px;\n padding: .6em 1em;\n margin-top: -.2em;\n background: <<colour sidebar-button-foreground>>44;\n color: <<colour foreground>>cc;\n transition: all ease-in .2s;\n border: 1px solid transparent;\n outline: 0;\n}\n\n.nc-bar input[type=\"search\"]:focus {\n width: 300px;\n background: <<colour tiddler-background>>;\n color: <<colour foreground>>;\n border: 1px solid <<colour primary>>;\n box-shadow: 0 0 .2rem 0 <<colour primary>>;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button {\n -webkit-appearance: auto;\n}\n\n.nc-bar .tc-block-dropdown.tc-search-drop-down {\n margin-left: 0;\n width: 400px;\n border: 0;\n box-shadow: 0 0 6px 0 rgba(0,0,0,.2);\n border-radius: 6px;\n padding: 20px 0;\n}\n\n.nc-bar p {\n margin: 0;\n}\n\n.nc-bar .tc-page-controls {\n margin-top: 0;\n}\n\n.nc-bar .tc-page-controls button {\n margin-right: .8em;\n}\n\n.nc-bar .tc-page-controls button .tc-btn-text {\n font-size: 14px;\n}\n\n.nc-bar .tc-block-dropdown {\n max-height: 70vh;\n overflow: auto;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-topbar {\n display: none;\n }\n\n .tc-story-river {\n padding: 0 !important;\n margin-top: 0 !important;\n margin-bottom: 60px !important;\n }\n\n div.tc-tiddler-frame {\n margin: 0;\n box-shadow: none;\n border-radius: 0;\n border-top: 0;\n }\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-bottombar {\n display: none;\n }\n}\n\n@media(max-width: 1100px) {\n .nc-bar input[type=\"search\"] {\n width: 200px;\n }\n}\n\n/* Sidebar */\n\n@keyframes sidebar-appear {\n 0% {\n left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};\n }\n 100% {\n left: 0;\n }\n}\n\n<<if-sidebar \"\"\"\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-sidebar {\n animation: sidebar-appear .14s;\n padding-top: 10px;\n }\n}\n\"\"\">>\n\n.nc-sidebar {\n background: <<colour tiddler-background>>;\n border-right: 1px solid <<colour tiddler-border>>;\n width: {{$:/themes/nico/notebook/metrics/sidebar-width}};\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 500;\n}\n\n.nc-sidebar .segment {\n border-bottom: 1px solid rgba(0,0,0,.1);\n}\n\n.nc-sidebar ol {\n margin: 0;\n padding: 0;\n list-style: none;\n line-height: 1.8em;\n}\n\n.nc-sidebar ol ol {\n padding-left: 18px;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .mobile-only {\n display: none;\n }\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .desktop-only {\n display: none;\n }\n}\n\n.nc-sidebar h1.tc-site-title {\n margin: 0;\n}\n\n.nc-sidebar p {\n margin: 6px 0;\n}\n\n.nc-sidebar .tc-site-subtitle {\n color: <<colour site-title-foreground>>;\n}\n\n.nc-sidebar .section .label {\n padding: 2px 0;\n color: <<colour site-title-foreground>>;\n fill: <<colour site-title-foreground>>;\n font-weight: bold;\n line-height: 1.6em;\n display: block;\n width: 100%;\n text-align: left;\n padding: 8px 15px;\n border-radius: 0;\n}\n\n.nc-sidebar .section:not(.open) .label:hover {\n background: rgba(0,0,0,.06);\n}\n\n.nc-sidebar .section.open .label {\n color: <<colour tiddler-background>>;\n fill: <<colour tiddler-background>>;\n background: <<colour primary>>;\n border-bottom: 1px solid rgba(0,0,0,.1);\n}\n\n.nc-sidebar .section .label .caret {\n display: inline-block;\n width: 15px;\n float: right;\n}\n\n.nc-sidebar .content {\n padding: 6px 15px;\n font-size: 1em;\n}\n\n.nc-sidebar .tc-tiddlylink {\n color: <<colour primary>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-sidebar {\n position: fixed;\n left: 0;\n top: 0;\n bottom: 0;\n }\n}\n\n<<if-sidebar \"\"\"\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n @keyframes sidebar-slide {\n 0% {\n left: -100vw;\n }\n 100% {\n left: 0;\n }\n }\n .nc-sidebar {\n overflow: auto;\n position: fixed;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 48px;\n z-index: 3000;\n animation: sidebar-slide ease-in .2s;\n animation-fill-mode: forwards;\n }\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-page-container {\n margin-left: {{$:/themes/nico/notebook/metrics/sidebar-width}} !important;\n }\n\n .nc-topbar-wrapper {\n left: {{$:/themes/nico/notebook/metrics/sidebar-width}};\n }\n}\n\"\"\">>\n\n/* Animate the hamburger button */\n\n@keyframes menu-bars-1 {\n 0% {}\n 100% {\n transform: rotate(-45deg) translateY(-10px) translateX(-6px);\n fill: <<colour foreground>>;\n }\n}\n\n@keyframes menu-bars-2 {\n 0% {}\n 100% { opacity: 0; }\n}\n\n@keyframes menu-bars-3 {\n 0% {}\n 100% {\n transform: rotate(45deg) translateY(6px) translateX(2px);\n fill: <<colour foreground>>;\n }\n}\n\n.sidebar-toggle {\n /* position: fixed; */\n /* top: 6px; */\n /* left: 6px; */\n /* z-index: 600; */\n /* padding: 4px; */\n /* border-radius: 8px; */\n margin-right: 10px;\n transition: all ease-in-out .2s;\n fill: <<colour sidebar-controls-foreground>>;\n}\n\n.sidebar-toggle:hover,\n.sidebar-toggle.open {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n/* @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { */\n/* .sidebar-toggle { */\n/* top: auto; */\n/* bottom: 10px; */\n/* left: 10px; */\n/* } */\n/* } */\n\n.sidebar-toggle .bars .bar {\n transform: rotate(0) translateY(0) translateX(0);\n opacity: 1;\n transform-origin: 20px 10px;\n transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out;\n}\n\n.sidebar-toggle .bars .bar:nth-of-type(3) {\n transform-origin: 20px 20px;\n}\n\n.sidebar-toggle.open .bars .bar:nth-of-type(1) {\n animation: menu-bars-1 .6s;\n animation-fill-mode: forwards;\n}\n.sidebar-toggle.open .bars .bar:nth-of-type(2) {\n animation: menu-bars-2 .6s;\n animation-fill-mode: forwards;\n}\n.sidebar-toggle.open .bars .bar:nth-of-type(3) {\n animation: menu-bars-3 .6s;\n animation-fill-mode: forwards;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n div.tc-tiddler-frame {\n padding: 14px;\n }\n}\n\n/* Inputs */\n\ninput, textarea {\n transition: border .14s ease-in-out;\n background: <<colour tiddler-editor-background>>;\n border: 1px solid <<colour tiddler-editor-border>>;\n padding: .5em;\n border-radius: 4px;\n}\n\ninput:focus, textarea:focus {\n box-shadow: 0 0 0.2rem 0 <<colour primary>>;\n outline: 0;\n border-color: <<colour primary>>;\n}\n\nbutton {\n border-radius: 1.5em;\n border: 1px solid #ccc;\n background: <<colour tiddler-background>>;\n padding: .3em 1em;\n cursor: pointer;\n transition: box-shadow ease-in .1s;\n color: <<color foreground>>;\n}\n\nbutton:focus, button:active {\n outline: 0 none;\n}\n\nbutton.tc-btn-invisible {\n border-radius: 0;\n}\n\n.tc-editor-toolbar button,\n.tc-editor-toolbar button.tc-btn-invisible {\n border-radius: 3px;\n background: <<colour tiddler-editor-background>>;\n color: <<colour foreground>>;\n fill: <<colour foreground>>;\n border: 1px solid <<colour tiddler-editor-border>>;\n}\n\n.tc-editor-toolbar button:hover,\n.tc-editor-toolbar button:active {\n border-color: <<colour primary>>;\n background: <<colour primary>>;\n color: <<colour background>>;\n fill: <<colour background>>;\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 transition: border .14s ease-in-out;\n border: 1px solid <<colour tiddler-editor-border>>;\n background: <<colour tiddler-editor-background>>;\n padding: 4px;\n border-radius: 4px;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor:focus,\n.tc-tiddler-frame textarea.tc-edit-texteditor:focus,\n.tc-tiddler-frame iframe.tc-edit-texteditor:focus {\n box-shadow: 0 0 0.2rem 0 <<colour primary>>;\n outline: 0;\n border-color: <<colour primary>>;\n}\n\n.tc-tiddler-controls .tc-btn-text {\n font-size: 16px;\n}\n\n<<if-reveal-tiddler-controls-on-hover \"\"\"\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-tiddler-frame .tc-tiddler-controls svg {\n opacity: 0;\n transition: all .2s ease-in;\n }\n\n .tc-tiddler-controls svg.tc-image-close-button,\n .tc-tiddler-controls .py-toggle-todo-button svg,\n .tc-tiddler-controls svg.tc-image-done-button,\n .tc-tiddler-frame .tc-tiddler-controls:hover svg {\n opacity: 1;\n }\n\n .tc-tiddler-controls .py-toggle-todo-button .done svg {\n fill: #2da562;\n }\n}\n\"\"\">>\n\nbutton.tc-tag-label, span.tc-tag-label {\n padding: 0.3em 1em !important;\n}\n\n/* Fonts */\n\nhtml, body {\n font-family: {{$:/themes/nico/notebook/settings/fontfamily}};\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 font-family: {{$:/themes/nico/notebook/settings/editorfontfamily}};\n}\n\npre, code {\n font-family: {{$:/themes/nico/notebook/settings/codefontfamily}};\n}\n\n.tc-titlebar, .tc-site-title {\n font-size: 28px !important;\n line-height: 34px !important;\n font-weight: 600 !important;\n letter-spacing: -0.5px !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-weight: 600;\n}\n\n.tc-tiddler-body h1,\n.tc-tiddler-body h2,\n.tc-tiddler-preview-preview h1,\n.tc-tiddler-preview-preview h2 {\n font-weight: bold;\n}\n\ndiv.tc-tiddler-frame .tc-tiddler-body {\n font-size: {{$:/themes/nico/notebook/metrics/bodyfontsize}};\n line-height: {{$:/themes/nico/notebook/metrics/bodylineheight}};\n}\n\n/* Tabs */\n\ndiv.tc-tab-buttons {\n margin-bottom: -4px;\n}\n\ndiv.tc-tab-buttons button {\n font-weight: bold;\n font-size: 1.2em;\n line-height: 1em;\n padding: .6em .8em .4em .8em;\n border: 0;\n border-radius: 0;\n background: transparent;\n cursor: pointer;\n transition: background ease-in .2s;\n}\n\ndiv.tc-tab-buttons button:hover {\n background: rgba(0,0,0,.03);\n}\n\ndiv.tc-tab-buttons button.tc-tab-selected {\n border: 0;\n background: transparent;\n border-bottom: 4px solid <<colour primary>>;\n}\n\n/* Dropdowns */\n\n@keyframes pop {\n 0% {\n transform: scale(0.8);\n opacity: 0;\n }\n\n 80% {\n transform: scale(1.03);\n opacity: 1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.tc-drop-down {\n box-shadow: 0 0 10px rgba(0,0,0,.2);\n border-radius: 6px;\n padding: 10px 0 !important;\n animation: pop .15s ease-in forwards;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n padding: 3px 15px !important;\n}\n\n.tc-search-results {\n line-height: 2em;\n}\n\n.tc-search-results em {\n font-weight: bold;\n font-style: normal;\n}\n\n/* Draft list */\n\n.tc-drafts-list {\n font-size: .9em;\n left: auto;\n right: 0;\n}\n\n.tc-drafts-list a {\n padding: 6px 12px;\n font-weight: bold;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n display: inline-block;\n}\n\n.nc-refs {\n color: #888;\n font-size: .9em;\n}\n\n.nc-refs h4 {\n margin-bottom: 4px;\n}\n\n.nc-post-created {\n color: #acacac;\n font-size: .8em;\n}\n"
},
"$:/themes/nico/notebook/changelog": {
"title": "$:/themes/nico/notebook/changelog",
"caption": "ChangeLog",
"created": "20201217180707912",
"modified": "20210126204725545",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! 1.4.0\n\n!! Features\n\n* New redesigned topbar layout\n* Add a configuration setting for the story width\n* Add support for keyboard navigation in the search dropdown\n\n! 1.3.6\n\n!! Improvements\n\n* Improve the style of tabs\n* New animation for drop-downs\n* Use a lighter page background colour in the beige palette\n\n!! Fixes\n\n* Fix the default ctrl+shift+F shortcut for focusing the search input\n\n! 1.3.5\n\n!! Features\n\n* Add an option to reveal tiddler controls on mouseover\n\n! 1.3.4\n\n!! Improvements\n\n* Add a keyboard shortcut (alt+shift+s) to toggle Notebook sidebar\n* Add missing colours to tiddler editor fields in the dark palette\n\n!! Fixes\n\n* Fix the size of toolbar button labels when the $:/config/Toolbar/Text is set to yes\n\n! 1.3.3\n\n!! Improvements\n\n* Make the sidebar more generic by using the default sidebar sections\n\n! 1.3.2\n\n!! Improvements\n\n* Add colours for messages in the dark palette\n* Add colours for notification in the dark palette\n* Set colours for messages in the beige palette\n\n! 1.3.1\n\n!! Features\n\n* New font family settings distinct from the Vanilla theme\n\n!! Improvements\n\n* Use a slightly lighter colour as the search input background\n* Improve contrast of sidebar buttons in the dark palette\n\n!! Fixes\n\n* Fix tiddler control button colours in all three palettes\n* Fix tab colours in palette-dark\n\n! 1.3.0\n\n!! Improvements\n\n* New dark colour palette\n* Use a darker color for tiddler subtitles\n* Add back the WebKit search cancel button in search inputs\n\n!! Fixes\n\n* Fix the z-index of the topbar for the zoomin story view\n* Fix the font weight of tiddler titles in edit mode\n\n! 1.2.0\n\n!! Improvements\n\n* Better support for dark colour palettes\n\n!! Fixes\n\n* Fix rendering of overflowing/wrapping text in the sidebar\n\n! 1.1.0\n\n!! Features\n\n* New theme tweaks tab dedicated to Notebook in the control panel\n* Inputs in the edit template are now styled consistently with other inputs\n\n!! Fixes\n\n* Fixes the position of sticky tiddler titles when the option is turned on\n"
},
"$:/config/ShortcutInfo/notebook-focus-search": {
"title": "$:/config/ShortcutInfo/notebook-focus-search",
"text": "Focus on the topbar search field"
},
"$:/config/shortcuts/notebook-focus-search": {
"title": "$:/config/shortcuts/notebook-focus-search",
"text": "ctrl+shift+F"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "false"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": ""
},
"$:/themes/nico/notebook/images/bars": {
"title": "$:/themes/nico/notebook/images/bars",
"created": "20200428212322206",
"modified": "20201210210231235",
"type": "text/vnd.tiddlywiki",
"text": "<svg class=\"bars\" height=\"21pt\" viewBox=\"0 0 42 42\" enable-background=\"new 0 0 32 22.5\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g class=\"svg-menu-toggle\" sketch:type=\"MSLayerGroup\">\n <rect class=\"bar\" x=\"8\" y=\"28\" width=\"26\" height=\"4\"></rect>\n <rect class=\"bar\" x=\"8\" y=\"19\" width=\"26\" height=\"4\"></rect>\n <rect class=\"bar\" x=\"8\" y=\"10\" width=\"26\" height=\"4\"></rect>\n </g>\n</svg>\n"
},
"$:/themes/nico/notebook/images/caret-down": {
"title": "$:/themes/nico/notebook/images/caret-down",
"created": "20200429194348688",
"modified": "20201210210230919",
"type": "text/vnd.tiddlywiki",
"text": "<svg width=\"6pt\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"/></svg>\n"
},
"$:/themes/nico/notebook/images/caret-right": {
"title": "$:/themes/nico/notebook/images/caret-right",
"created": "20200429194305719",
"modified": "20201210210230909",
"type": "text/vnd.tiddlywiki",
"text": "<svg width=\"4pt\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 192 512\"><path d=\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"/></svg>\n"
},
"$:/themes/nico/notebook/images/color-switch": {
"title": "$:/themes/nico/notebook/images/color-switch",
"created": "20201210170859810",
"creator": "nico",
"modified": "20201210205606403",
"modifier": "nico",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<svg width=\"20px\" height=\"20px\" viewBox=\"0 0 16 16\" class=\"bi bi-circle-half\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" d=\"M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\"/>\n</svg\n"
},
"$:/themes/nico/notebook/metrics/bodyfontsize": {
"title": "$:/themes/nico/notebook/metrics/bodyfontsize",
"created": "20200428203454207",
"modified": "20201210205606363",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "15px\n"
},
"$:/themes/nico/notebook/metrics/bodylineheight": {
"title": "$:/themes/nico/notebook/metrics/bodylineheight",
"created": "20200428203454207",
"modified": "20201210205606363",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "22px"
},
"$:/themes/nico/notebook/metrics/sidebar-width": {
"title": "$:/themes/nico/notebook/metrics/sidebar-width",
"created": "20200429144554294",
"modified": "20201210210231246",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "350px\n"
},
"$:/themes/nico/notebook/metrics/story-width": {
"title": "$:/themes/nico/notebook/metrics/story-width",
"created": "20210123210054185",
"modified": "20210123211911688",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "800px\n"
},
"$:/themes/nico/notebook/metrics/topbar-height": {
"title": "$:/themes/nico/notebook/metrics/topbar-height",
"created": "20200428203454207",
"modified": "20201210205606363",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "52px\n"
},
"$:/themes/nico/notebook/options/stickytitles": {
"title": "$:/themes/nico/notebook/options/stickytitles",
"text": "no"
},
"$:/themes/nico/notebook/options/codewrapping": {
"title": "$:/themes/nico/notebook/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover": {
"title": "$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover",
"text": "no"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"created": "20200430072116835",
"modified": "20201217174129501",
"type": "text/vnd.tiddlywiki",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\nOverwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.\n"
},
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"created": "20201217163834291",
"modified": "20201217163914434",
"type": "text/vnd.tiddlywiki",
"text": "Overwritten by $:/themes/nico/notebook so that the Vanilla theme tweaks do not appear in the control panel. "
},
"$:/themes/nico/notebook/palettes/palette-beige": {
"title": "$:/themes/nico/notebook/palettes/palette-beige",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #c63636\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: #ddd\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: #da8548\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: #3F3B3B\nmessage-background: #e6f5e8\nmessage-border: #2b5532\nmessage-foreground: #2b5532\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: #f5f5ee\npre-background: #f6f6f6\npre-border: #cccccc\nprimary: #7f4bca\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: #a6a69c\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: <<colour sidebar-button-foreground>>\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: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: white\nsidebar-tiddler-link-foreground: <<colour tab-foreground>>\nsite-title-foreground: #353748\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: #888888\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #dbdbc7;\ntiddler-controls-foreground-hover: #888888;\ntiddler-controls-foreground-selected: #888888;\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: rgba(0,0,0,.2)\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: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #aaaaaa\ntiddler-title-foreground: #333\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",
"type": "application/x-tiddler-dictionary",
"description": "A beige colour palette for Notebook",
"name": "Notebook Beige",
"tags": "$:/tags/Palette $:/tags/notebook/Palette"
},
"$:/themes/nico/notebook/palettes/palette-dark": {
"title": "$:/themes/nico/notebook/palettes/palette-dark",
"text": "alert-background: #643b43\nalert-border: #3f181f\nalert-highlight: #881122\nalert-muted-foreground: #bc8b94\nbackground: #383e49\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-border:\nbutton-foreground:\ncode-background: #2c323b\ncode-border: #111\ncode-foreground: #dd1144\ndirty-indicator: #c63636\ndownload-background: #98be65\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: #111\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: #da8548\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #61afef\nexternal-link-foreground: #c678dd\nforeground: #c8ced8\nmessage-background: #2c323e\nmessage-border: #111\nmessage-foreground: #d5e2f1\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #3a5e39\nnotification-border: #192c19\npage-background: #262b33\npre-background: <<colour page-background>>\npre-border: <<colour tiddler-border>>\nprimary: #bf93ff\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: #5e646f\nsidebar-controls-foreground-hover: #cad2e5\nsidebar-controls-foreground: <<colour sidebar-button-foreground>>\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #cad2e5\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour tab-background-selected>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: white\nsidebar-tiddler-link-foreground: <<colour tab-foreground>>\nsite-title-foreground: <<colour foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour foreground>>\ntab-border: #cad2e5\ntab-divider: #cad2e5\ntab-foreground-selected: #ecf2ff\ntab-foreground: #cad2e5\ntable-border: #aaaaaa\ntable-footer-background: #a8a8a8\ntable-header-background: #262b33\ntag-background: #fcb671\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #111\ntiddler-controls-foreground-hover: #cad2e5\ntiddler-controls-foreground-selected: #cad2e5\ntiddler-controls-foreground: #5e646f\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: rgba(255, 255, 255, 0.3)\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: #2c323b\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #aaaaaa\ntiddler-title-foreground: <<colour foreground>>\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: #999999\nvery-muted-foreground: #888888\n",
"type": "application/x-tiddler-dictionary",
"description": "A dark colour palette for Notebook",
"name": "Notebook Dark",
"tags": "$:/tags/Palette $:/tags/notebook/Palette"
},
"$:/themes/nico/notebook/palettes/palette-grey": {
"title": "$:/themes/nico/notebook/palettes/palette-grey",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #c63636\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: #ddd\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: #da8548\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: #283c46\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour 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: #f4f4f4\npre-background: #f6f6f6\npre-border: #cccccc\nprimary: #127edd\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: #a6a69c\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: <<colour sidebar-button-foreground>>\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: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: white\nsidebar-tiddler-link-foreground: <<colour tab-foreground>>\nsite-title-foreground: #353748\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: #888888\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #ddd\ntiddler-controls-foreground-hover: #888888;\ntiddler-controls-foreground-selected: #888888;\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: rgba(0,0,0,.2)\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: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #aaaaaa\ntiddler-title-foreground: #333\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",
"type": "application/x-tiddler-dictionary",
"description": "A grey color palette for Notebook",
"name": "Notebook Grey",
"tags": "$:/tags/Palette $:/tags/notebook/Palette"
},
"$:/themes/nico/notebook/settings/codefontfamily": {
"title": "$:/themes/nico/notebook/settings/codefontfamily",
"created": "20210101213404232",
"modified": "20210101214210227",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\"Fira Mono\",\"Liberation Mono\",Menlo,Courier,monospace\n"
},
"$:/themes/nico/notebook/settings/fontfamily": {
"title": "$:/themes/nico/notebook/settings/fontfamily",
"created": "20210101213404232",
"modified": "20210101213411800",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\"Segoe UI\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"\n"
},
"$:/themes/nico/notebook/shortcuts/notebook-focus-search": {
"title": "$:/themes/nico/notebook/shortcuts/notebook-focus-search",
"created": "20201210122048919",
"key": "((notebook-focus-search))",
"modified": "20210115130024907",
"tags": "$:/tags/KeyboardShortcut",
"type": "text/vnd.tiddlywiki",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".nc-topbar input\"/>\n"
},
"$:/themes/nico/notebook/shortcuts/toggle-sidebar": {
"title": "$:/themes/nico/notebook/shortcuts/toggle-sidebar",
"created": "20210115130000707",
"key": "((toggle-sidebar))",
"modified": "20210115130021883",
"tags": "$:/tags/KeyboardShortcut",
"type": "text/vnd.tiddlywiki",
"text": "<$list\n filter=\"[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]\"\n emptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/state/notebook-sidebar\" text=\"yes\"/>\"\"\"\n>\n <$action-setfield $tiddler=\"$:/state/notebook-sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/themes/nico/notebook/stickytitles": {
"title": "$:/themes/nico/notebook/stickytitles",
"created": "20201217172915960",
"modified": "20201217180034682",
"tags": "$:/tags/Stylesheet",
"text": "<$reveal state=\"$:/themes/nico/notebook/options/stickytitles\" type=\"match\" text=\"yes\">\n\n.tc-tiddler-title {\n position: -webkit-sticky;\n position: -moz-sticky;\n position: -o-sticky;\n position: -ms-sticky;\n position: sticky;\n top: {{$:/themes/nico/notebook/metrics/topbar-height}};\n background: <<colour tiddler-background>>;\n z-index: 500;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-tiddler-title {\n top: 0;\n }\n}\n\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
},
"$:/themes/nico/notebook/tags/Sidebar": {
"title": "$:/themes/nico/notebook/tags/Sidebar",
"created": "20200429164516951",
"list": "$:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar/Headings $:/themes/nico/notebook/ui/Sidebar/Search $:/themes/nico/notebook/Sidebar/Sections",
"modified": "20201210205606504",
"type": "text/vnd.tiddlywiki"
},
"$:/themes/nico/notebook/tags/SidebarSection": {
"title": "$:/themes/nico/notebook/tags/SidebarSection",
"created": "20200429201017275",
"list": "$:/themes/nico/notebook/ui/Sidebar/Open $:/themes/nico/notebook/ui/Sidebar/Recent $:/themes/nico/notebook/ui/Sidebar/Tools $:/themes/nico/notebook/ui/Sidebar/More",
"modified": "20201210215658901",
"type": "text/vnd.tiddlywiki"
},
"$:/themes/nico/notebook/ui/Bottombar": {
"title": "$:/themes/nico/notebook/ui/Bottombar",
"created": "20200429113453340",
"modified": "20201210210230886",
"tags": "$:/tags/PageTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$reveal state=\"$:/state/notebook-bottombar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n <div class=\"nc-bar nc-bottombar\">\n <$list filter=\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\" variable=\"listItem\">\n <$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n <$transclude tiddler=<<listItem>> mode=\"block\"/>\n </$reveal>\n </$list>\n <div class=\"left\">\n {{$:/themes/nico/notebook/ui/Buttons/menu}}\n </div>\n <div class=\"right\">\n {{$:/core/ui/SideBarSegments/page-controls}}\n </div>\n </div>\n</$reveal>\n\n"
},
"$:/themes/nico/notebook/ui/Buttons/SwitchPalette": {
"title": "$:/themes/nico/notebook/ui/Buttons/SwitchPalette",
"created": "20201210171047824",
"description": "Toggle between grey/beige colour palette",
"modified": "20210118213335643",
"tags": "$:/tags/PageControls",
"type": "text/vnd.tiddlywiki",
"text": "<span class=\"desktop-only\">\n <$vars\n palettes=\"[all[tiddlers+shadows]tag[$:/tags/notebook/Palette]]\"\n popupTiddler=<<qualify \"$:/state/notebook/palette-dropdown\">>\n >\n <$button\n popup=<<popupTiddler>>\n tooltip=\"Switch colours\"\n aria-label=\"Switch colours\"\n class=<<tv-config-toolbar-class>>\n >\n <$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n\t{{$:/themes/nico/notebook/images/color-switch}}\n </$list>\n\n <$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n\t<span class=\"tc-btn-text\">Switch colours</span>\n </$list>\n\n <$reveal state=<<popupTiddler>> type=\"popup\" position=\"belowleft\" class=\"tc-drop-down\">\n\t<$list filter=<<palettes>>>\n\t <$button class=\"tc-btn-invisible\">\n\t {{!!name}}\n\t <$action-setfield $tiddler=\"$:/palette\" text={{!!title}}/>\n\t </$button>\n\t</$list>\n </$reveal>\n\n </$button>\n </$vars>\n</span>\n"
},
"$:/themes/nico/notebook/ui/Buttons/menu": {
"title": "$:/themes/nico/notebook/ui/Buttons/menu",
"created": "20200429115248943",
"modified": "20210124211756417",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$reveal state=\"$:/state/notebook-sidebar\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"no\">\n <$button set=\"$:/state/notebook-sidebar\" setTo=\"no\" tooltip=\"Toggle menu\" class=\"tc-btn-invisible sidebar-toggle open\">\n {{$:/themes/nico/notebook/images/bars}}\n </$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/state/notebook-sidebar\" text=\"yes\">\n <$button set=\"$:/state/notebook-sidebar\" setTo=\"yes\" tooltip=\"Toggle menu\" class=\"tc-btn-invisible sidebar-toggle\">\n {{$:/themes/nico/notebook/images/bars}}\n </$button>\n</$reveal>\n"
},
"$:/themes/nico/notebook/ui/Search": {
"title": "$:/themes/nico/notebook/ui/Search",
"created": "20200429191943257",
"modified": "20210126170723413",
"type": "text/vnd.tiddlywiki",
"text": "\\define advanced-search-actions()\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/notebook-search}}/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n\\end\n\n\\define input-accept-actions()\n<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\">\n <$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>\n <$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\">\n <$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/>\n <$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\\end\n\n<$vars editTiddler=\"$:/temp/search\"\n searchTiddler=\"$:/temp/search/input\"\n searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n <$macrocall $name=\"keyboard-driven-input\"\n\t tiddler=<<editTiddler>>\n\t storeTitle=<<searchTiddler>>\n\t selectionStateTitle=<<searchListState>>\n\t refreshTitle=\"$:/temp/search/refresh\"\n\t type=\"search\"\n\t tag=\"input\"\n\t focus={{$:/config/Search/AutoFocus}}\n\t focusPopup=\"$:/state/popup/notebook-search\"\n\t class=\"tc-popup-handle\"\n\t filterMinLength={{$:/config/Search/MinLength}}\n\t placeholder=\"Search...\"\n\t inputAcceptActions=<<input-accept-actions>>\n\t inputCancelActions=<<cancel-search-actions>>\n\t cancelPopups=\"yes\"\n\t configTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t />\n <$button\n tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}\n aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}\n class=\"tc-btn-invisible tc-page-controls\"\n >\n {{$:/core/images/advanced-search-button}}\n <<advanced-search-actions>>\n </$button>\n <$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/state/popup/notebook-search\" type=\"nomatch\" text=\"\" default=\"\">\n <$list filter=\"[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\" variable=\"listItem\">\n <div class=\"tc-block-dropdown tc-search-drop-down\">\n <$tiddler tiddler=<<configTiddler>>>\n {{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}\n </$tiddler>\n </div>\n </$list>\n </$reveal>\n</$vars>\n"
},
"$:/themes/nico/notebook/ui/Sidebar/Headings": {
"title": "$:/themes/nico/notebook/ui/Sidebar/Headings",
"created": "20200429160014174",
"modified": "20201210210231267",
"tags": "$:/themes/nico/notebook/tags/Sidebar",
"type": "text/vnd.tiddlywiki",
"text": "<div class=\"segment\">\n <div class=\"content\">\n <h1 class=\"tc-site-title\">\n {{$:/SiteTitle}}\n </h1>\n <div class=\"tc-site-subtitle\">\n {{$:/SiteSubtitle}}\n </div>\n </div>\n</div>\n"
},
"$:/themes/nico/notebook/ui/Sidebar/Search": {
"title": "$:/themes/nico/notebook/ui/Sidebar/Search",
"created": "20200429191943257",
"modified": "20210124220152702",
"tags": "$:/themes/nico/notebook/tags/Sidebar",
"type": "text/vnd.tiddlywiki",
"text": "<div class=\"mobile-only\">\n <div class=\"segment\">\n <div class=\"content search\">\n {{$:/themes/nico/notebook/ui/Search}}\n </div>\n </div>\n</div>\n"
},
"$:/themes/nico/notebook/ui/Sidebar/SearchResults": {
"title": "$:/themes/nico/notebook/ui/Sidebar/SearchResults",
"created": "20200429191943257",
"modified": "20210126164631418",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define searchResultList()\n <small>{{$:/language/Search/Matches/Title}}</small>\n\n <$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\">\n <span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n <$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n </span>\n </$list>\n\n <small>{{$:/language/Search/Matches/All}}</small>\n\n <$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\">\n <span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n <$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n </span>\n </$list>\n\\end\n\n<div class=\"tc-search-results\">\n <<searchResultList>>\n</div>\n"
},
"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate": {
"title": "$:/themes/nico/notebook/ui/Sidebar/SectionTemplate",
"created": "20200429161226897",
"modified": "20210112213723175",
"type": "text/vnd.tiddlywiki",
"text": "<$reveal state=\"$:/state/notebook-sidebar-section\" type=\"match\" text=<<currentTiddler>> default=\"no\" animate=\"no\">\n <div class=\"segment section open\">\n <$button set=\"$:/state/notebook-sidebar-section\" setTo=\"\" class=\"tc-btn-invisible label\">\n {{!!caption}}\n <span class=\"caret\">{{$:/themes/nico/notebook/images/caret-down}}</span>\n </$button>\n <div class=\"content\">\n <$transclude $tiddler=<<currentTiddler>>/>\n </div>\n </div>\n</$reveal>\n<$reveal state=\"$:/state/notebook-sidebar-section\" type=\"nomatch\" text=<<currentTiddler>> default=\"yes\" animate=\"no\">\n <div class=\"segment section\">\n <$button set=\"$:/state/notebook-sidebar-section\" setTo=<<currentTiddler>> class=\"tc-btn-invisible label\">\n {{!!caption}}\n <span class=\"caret\">{{$:/themes/nico/notebook/images/caret-right}}</span>\n </$button>\n </div>\n</$reveal>\n"
},
"$:/themes/nico/notebook/ui/Sidebar/Sections": {
"title": "$:/themes/nico/notebook/ui/Sidebar/Sections",
"created": "20200429163239707",
"modified": "20210112213620486",
"tags": "$:/themes/nico/notebook/tags/Sidebar",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[all[shadows+tiddlers]!has[draft.of]tag[$:/tags/SideBar]]\">\n {{||$:/themes/nico/notebook/ui/Sidebar/SectionTemplate}}\n</$list>\n"
},
"$:/themes/nico/notebook/ui/Sidebar": {
"title": "$:/themes/nico/notebook/ui/Sidebar",
"created": "20200428201218885",
"modified": "20210112213605486",
"tags": "$:/tags/PageTemplate",
"type": "text/vnd.tiddlywiki",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$reveal state=\"$:/state/notebook-sidebar\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"no\">\n <$scrollable fallthrough=\"no\">\n <div class=\"nc-sidebar\">\n <$list filter=\"[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]\" variable=\"listItem\">\n <$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n <$transclude tiddler=<<listItem>> mode=\"inline\"/>\n </$reveal>\n </$list>\n </div>\n </$scrollable>\n</$reveal>\n\n"
},
"$:/themes/nico/notebook/ui/Topbar": {
"title": "$:/themes/nico/notebook/ui/Topbar",
"created": "20200428203101797",
"modified": "20210124213834458",
"tags": "$:/tags/PageTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$reveal state=\"$:/state/notebook-topbar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n <div class=\"nc-topbar-wrapper\">\n <div class=\"nc-bar nc-topbar tc-adjust-top-of-scroll\">\n <$list filter=\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\" variable=\"listItem\">\n <$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n <$transclude tiddler=<<listItem>> mode=\"block\"/>\n </$reveal>\n </$list>\n <div class=\"left\">\n\t{{$:/themes/nico/notebook/ui/Buttons/menu}}\n {{$:/themes/nico/notebook/ui/Search}}\n </div>\n <div class=\"right\">\n {{$:/core/ui/SideBarSegments/page-controls}}\n </div>\n </div>\n </div>\n</$reveal>\n\n"
}
}
}
\define advanced-search-actions()
<$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/notebook-search}}/>
<$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/>
<$action-navigate $to="$:/AdvancedSearch"/>
\end
<$vars searchTiddler="$:/temp/notebook-search">
<div class="segment">
<div class="content search">
<$edit-text tiddler=<<searchTiddler>> tag="input" type="search" focusPopup="$:/state/popup/notebook-search" class="tc-popup-handle" placeholder="Chercher..." default=""/>
<$button
tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}
aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}
class="tc-btn-invisible tc-page-controls"
>
{{$:/core/images/advanced-search-button}}
<<advanced-search-actions>>
</$button>
<$reveal tag="div" class="tc-block-dropdown-wrapper" state="$:/state/popup/notebook-search" type="nomatch" text="" default="">
<$list filter="[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="" variable="listItem">
<div class="tc-block-dropdown tc-search-drop-down">
<$tiddler tiddler=<<configTiddler>>>
{{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}
</$tiddler>
</div>
</$list>
</$reveal>
</div>
</div>
</$vars>
{{$:/core/ui/SideBar/More}}
<div class="mobile-only">
<div class="segment">
{{$:/themes/nico/notebook/ui/Search}}
</div>
</div>
{{$:/core/ui/SideBar/Tools}}
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-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<<box-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<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-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<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-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<<background-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<<background-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<<background-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<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$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</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\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\ninput[type=\"search\"] {\n outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\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: <<colour 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<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-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: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour 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 <<colour 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: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-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: <<colour 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 left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour 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 right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-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: <<colour 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: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\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\ntable {\n\tborder: 1px solid <<colour 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 <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\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/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour 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: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour 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: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour 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: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo 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 <<colour 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: <<colour 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: <<colour 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: <<colour foreground>>;\n\tfill: <<colour 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 <<colour 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: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour 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 <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\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: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour 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: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour 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 <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour 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: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.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: <<colour 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: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour 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: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour 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\twhite-space: normal;\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: <<colour primary>>;\n\tcolor: <<colour 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: <<sidebarbreakpoint-minus-one>>) {\n\n\t.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: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.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: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\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: <<colour 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 font-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: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour 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: <<sidebarbreakpoint-minus-one>>) {\n\n\t.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<<if-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\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.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\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.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<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.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\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.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: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour 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: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour 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: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.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\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\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<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour 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: <<colour 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: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\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: <<colour 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 height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour 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: <<colour 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: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour 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\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\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\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\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: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour 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: <<colour 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: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour 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: <<colour 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: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour 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/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-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 fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour 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<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour 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 <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-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: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour 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: <<colour 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: <<sidebarbreakpoint>>) {\n\n\t.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** 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: <<sidebarbreakpoint>>) {\n\n\t.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: <<colour 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 <<colour dropdown-border>>;\n\tbackground-color: <<colour 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: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour 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: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-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: <<colour 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: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour 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 <<colour dropdown-border>>;\n\tbackground-color: <<colour 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: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour 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 <<colour 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: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour 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/*\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: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour 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\t.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\t.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 <<colour 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: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\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: <<colour notification-background>>;\n\tborder: 1px solid <<colour 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: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour 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: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour 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: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour 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 <<colour 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: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour 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: <<colour 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: <<colour 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-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 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 flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour 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: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour 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 <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.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: <<colour 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 <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour 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\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour 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: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-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: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 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 text-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 <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour 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: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour 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 <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour 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 <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour 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: <<colour table-header-background>>;\n\tborder-color: <<colour 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: <<colour 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: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour 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: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\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: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour 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 <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour 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 <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour 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 <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour 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<<filter \"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<<filter \"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: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: 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 color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour 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-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": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n system-ui,\n -apple-system, /* Firefox supports this but not yet `system-ui` */\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n Menlo,\n monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$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: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
https://septuas.tiddlyhost.com
<div class="gmail_default" style="font-family: arial, sans-serif; color: rgb(0, 0, 0); font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">Cet après-midi, les par coeurs de la semaine dernière et ceux entamés cette semaine :</dt><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><ol><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20I%2C1%20-%20BARBARA%20et%20GIACOMINA" target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520I%252C1%2520-%2520BARBARA%2520et%2520GIACOMINA&source=gmail&ust=1587203642373000&usg=AFQjCNGgo77Cpthl05_Sx1jds0TtprELkA" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; box-sizing: border-box; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-origin: initial; background-clip: initial; outline: 0px;">I,1 - BARBARA et GIACOMINA</a> (si Brigitte nous est revenue :)</li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20I%2C4%20-%20Nicoletto%20et%20Margarita." target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520I%252C4%2520-%2520Nicoletto%2520et%2520Margarita.&source=gmail&ust=1587203642373000&usg=AFQjCNHEp3UJ8dtpFsKvJsZQp5BwG-ZTAA" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; background: transparent; box-sizing: border-box; outline: 0px;"> I,4 - Nicoletto et Margarita.</a></li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20I%2C8%20BARBARA%20puis%20AGNESE" target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520I%252C8%2520BARBARA%2520puis%2520AGNESE&source=gmail&ust=1587203642373000&usg=AFQjCNFcWZQ0vZaDdvOHuBBDU7SFLkH_bg" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; box-sizing: border-box; background: transparent; outline: 0px;">I,8 BARBARA puis AGNESE</a></li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20I%2C9%20-%20LODOVICA%20et%20DANIELA." target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520I%252C9%2520-%2520LODOVICA%2520et%2520DANIELA.&source=gmail&ust=1587203642373000&usg=AFQjCNHjIxXBAnon5dVQkVRw0UEOAQa4pQ" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; box-sizing: border-box; background: transparent; outline: 0px;">I,9 - LODOVICA et DANIELA.</a></li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20II%2C6%20-%20Barbara%2C%20Agnese%2C%20Giacomina%2C%20puis%20Rocco%20et%20le%20gar%C3%A7on%20de%20boutique%20qui%20porte%20les%20pi%C3%A8ces%20de%20tissu." target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520II%252C6%2520-%2520Barbara%252C%2520Agnese%252C%2520Giacomina%252C%2520puis%2520Rocco%2520et%2520le%2520gar%25C3%25A7on%2520de%2520boutique%2520qui%2520porte%2520les%2520pi%25C3%25A8ces%2520de%2520tissu.&source=gmail&ust=1587203642373000&usg=AFQjCNEuZo8CG1EEZvROJP31h7hSsF_dWA" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; box-sizing: border-box; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-origin: initial; background-clip: initial; outline: 0px;">II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.</a> (avec Éveline au téléphone pour ROCCO)</li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20III%2C1%20-%20Chez%20Lodovica.%20Lodovica%2C%20Daniela%20et%20Nicoletto." target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520III%252C1%2520-%2520Chez%2520Lodovica.%2520Lodovica%252C%2520Daniela%2520et%2520Nicoletto.&source=gmail&ust=1587203642374000&usg=AFQjCNGgRIF8Sjze6q71wMHxWq5e6OVGxg" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-origin: initial; background-clip: initial; box-sizing: border-box; outline: 0px;">III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.</a></li><li><a href="http://septuas.tiddlyspot.com/#La%20Bonne%20M%C3%A8re%20II%2C14%20-%20Lunardo%20et%20Giacomina." target="_blank" data-saferedirecturl="https://www.google.com/url?hl=fr&q=http://septuas.tiddlyspot.com/%23La%2520Bonne%2520M%25C3%25A8re%2520II%252C14%2520-%2520Lunardo%2520et%2520Giacomina.&source=gmail&ust=1587203642374000&usg=AFQjCNGLcli3T8IFprfy8JpdUya-wbHjWA" style="font-family: arial, sans-serif; color: rgb(41, 166, 238); text-decoration: none; box-sizing: border-box; background: transparent; outline: 0px; text-align: center;">II,14 - Lunardo et Giacomina</a></li></ol></dt><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><br></dt><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><b><u>S'entraîner/s'entr'aider à bien marquer les ruptures de ton :</u></b></dt></div><blockquote style="color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; margin: 0px 0px 0px 40px; border: none; padding: 0px;"><div class="gmail_default" style="font-family: arial, sans-serif;"><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">Avant le jeu de chaque scène par les titulaires, manèges sur les extraits correspondants de la liste ci-dessous (vous pouvez en ajouter !)</dt></div><div class="gmail_default" style="font-family: arial, sans-serif;"><dt style="font-size: 18px; box-sizing: border-box; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">(soyez prêt à sauter rapidement du texte d'une scène à celui d'une autre</dt></div></blockquote><div class="gmail_default" style="font-family: arial, sans-serif; color: rgb(0, 0, 0); font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><font color="#cc0000" size="4">1</font></dt><dt style="font-size: 18px; box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">NICOLETTO.</dt><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Va à elle</span> Allez,</dd><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Lui secouant le bras :</span> qu'est-ce qu'on l'a dit ?</dd><dt style="font-size: 18px; box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">MARGARITA.</dt><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Faisant la fâchée </span>Eh ! mon petit jeune homme,</dd><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">si tu continues comme ça...</dd><dt style="font-size: 18px; box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">NICOLETTO.</dt><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Stressé </span>Qu'est-ce que tu veux dire ?</dd><dt style="font-size: 18px; box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">MARGARITA. <span style="box-sizing: border-box; background-color: rgb(221, 238, 255);">Lui faisant face</span></dt><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">Dis voir :</dd><dd style="font-size: 18px; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Geste inquisiteur : </span>qu'est-ce que tu vas y faire<dl style="box-sizing: border-box;"><dd style="box-sizing: border-box;"><u style="box-sizing: border-box;">rue de l'Oie</u> <button style="color: rgb(41, 166, 238); font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: 1.2; font-family: inherit; margin: 0px; overflow: visible; outline-color: rgb(41, 166, 238); padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-origin: initial; background-clip: initial; border-width: initial; border-style: none; border-color: initial;">»</button> ?</dd></dl></dd></div><div style="font-family: arial, sans-serif; color: rgb(0, 0, 0); font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><div dir="ltr" data-smartmail="gmail_signature" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><div dir="ltr" style="font-family: arial, sans-serif;"><p style="font-family: arial, sans-serif;"><span class="gmail_default" style="font-size: small;"><font color="#ff0000"><b>2</b></font></span></p><dl style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">MARGARITA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Gentil reproche </span>Oh ! mon garçon,</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">→ Silence embarrassé de Nicoletto </span>:</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Elle le cuisine </span>chez ces gens-là, ce n'est pas pour rien qu'on y va.</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">→ Silence encore plus embarrassé de Nicoletto </span>:</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Elle s'amuse à lui faire peur </span>Cette fille, je la connais.</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">→ Nicoletto est complètement paralysé </span>:</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Elle prend du champ, et le plaisante en tournant atour de lui</span></dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Elle rigole, rien qu'à y penser </span>Et elle, je ne dis pas,</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Au public </span>mais sa mère.</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Se tournant vers Nicoletto </span>Vous parlez d'une mère !</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Reprenant sa déambulation</span> :</dd></dl><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dl style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><dd style="box-sizing: border-box;">Elle en avait trois autres, des filles,</dd><dd style="box-sizing: border-box;">et elle s'en est vite débarrassée, mine de rien.</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Elle s'arrête et regarde gentiment Nicoletto</span></dd><dd style="box-sizing: border-box;">Je ne voudrais pas qu'elle te colle la quatrième, à toi.</dd></dl><p style="font-family: arial, sans-serif;"><span class="gmail_default" style="font-size: small;"><font color="#ff0000">3</font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Hochant la tête</span> : Sûr qu'en ce bas monde, on n'est pas heureux si on ne se contente pas de ce qu'on a.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je vous jure que pour moi, je m'en contente.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Court silence. Elle prend les mains d'Agnese.</span></dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Gravement </span>: Mon souci,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ce sont ces deux pauvres petits.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Reprenant sa position</span></dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Une fille à marier,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Très emphatique </span>: et un <u style="box-sizing: border-box;">garçon</u> !</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255);">Leger suspens, comme si elle jaugeait la jeune Agnese. Elle se décide</span></dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ce n'est pas pour dire,<dl style="box-sizing: border-box;"><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Éloge très appuyé de son fils, en ne quittant pas Agnese des yeux </span>: mais c'est une <u style="box-sizing: border-box;">perle</u></dd></dl></dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Question faussement banale </span>: ça fait longtemps que vous ne l'avez pas vu, mon fils ?</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default" style="font-size: small;"><font color="#ff0000"><b>4</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Des mauvais, sior'Agnese,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">des mauvais;</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">rien que des inventions pour faire du mal au pauvre monde.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">On voit que ce garçon a de la figure et de la conduite,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">on sait que Sior'Agnese a de l'affection pour moi,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">qu'elle n'en manque pas non plus pour lui,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">qu'elle est veuve, que lui cst à marier.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Et vlan,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">on sème le mal,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">de peur qu'un jour... vous comprenez ce que je veux dire ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Ma foi, vous me faites rire.</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>5</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">C'est vous qui dites une chose pareille ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Vous n'êtes pas chez vous ici ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Vous ne savez pas qu'ici tout le monde vous aime ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Tout le monde, vous savez !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Tout le monde, oui,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">tout le monde,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Fin sourire </span>: vous comprenez. ce que je veux dire ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Mais comme vous voilà gaillarde !</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>6</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ANIELA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">elle imagine son Nicoletto </span>:Sûrement qu'il n'ose pas,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">le pauvre.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Explosant </span>: Voyez moi ça !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je ne lui ai pas dit cent fois, moi :<dl style="box-sizing: border-box;"><dd style="box-sizing: border-box;">« <em style="box-sizing: border-box;">Je boirais bien un café</em> » ?</dd></dl></dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Et lui, il a ouvert une seule fois la bouche pour dire :<dl style="box-sizing: border-box;"><dd style="box-sizing: border-box;">« <em style="box-sizing: border-box;">Faites donc</em> » ?</dd></dl></dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">DANIELA. <span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">grimace se raidit </span>:</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Secouant la tête </span>: Moi, voyez-vous, je n'aime pas ça.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">→ Stupeur de Lodovica </span>.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Que vous quémandiez comme ça, je ne supporte pas.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Stupéfaite </span>: Moi non plus, je n'aime pas quémander.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Bougonne, secoue la tête et revient àla charge</span>:</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Mais pourquoi <u style="box-sizing: border-box;">personne</u> ne fait rien sans qu'on demande ?</dd><dd style="box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="color: rgb(0, 119, 0); box-sizing: border-box; background-color: rgb(221, 255, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Comme si ça devait être évident pour tout le monde </span><font color="#333333">: Sans mon café, moi, je ne tiens pas ;<span style="background-color: rgb(255, 255, 255);"><br></span></font><font color="#333333">et y a des fois où je n'aime pas le payer de ma poche.</font></dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>7</b></font></span></p><dl style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA, <em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">en rentrant.</code></em></dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Faisant la joyeuse </span>: Il est là,</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">sourire appuyé à sa fille </span>: madame sera contente.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Étonnée </span>: Qui c'est ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Chantonnant gaiement </span>: Sior Nicoleto !</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">inquiète </span>: Vous lui avez ouvert ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Très gracieusement </span>: Oui madame.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Sèchement </span>: Qui vous a dit de lui ouvrir ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;">Moi.</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Simulacre de révérence</span>: pour ne pas être <em style="box-sizing: border-box;">malgracieuse</em> <em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(en singeant Daniela)</code></em>.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Contrefaisant sa mère </span>: Et moi, voyez-vous,</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Simulacre de révérence</span> je suis capable d'aller m'énfermer dans ma chambre.</dd></dl><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dl style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Tendre </span>: Allez,</dd><dd style="box-sizing: border-box;">ne fais pas d'histoires,</dd><dd style="box-sizing: border-box;">reste-là,</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">→ Daniela prend plaisir à se faire prier</span></dd><dd style="box-sizing: border-box;">tiens-toi comme il faut</dd><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">en sortant elle insiste</span>: et reçois-le comme il le mérite.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA,</dt><dd style="box-sizing: border-box;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à part, en riant</code></em>. Oh ! la vieille folle.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Passe la tête et aussi rit </span>: Tu ris, hein ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">DANIELA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Elle rit </span>: Je ne devrais pas ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px;">LODOVICA.</dt><dd style="box-sizing: border-box;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Toute excitée </span>: Allez, allez, ris, sois heureuse,</dd><dd style="box-sizing: border-box;">quelque chose finira bien par arriver !</dd></dl><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>8</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh ! mais moi, pas question de m'en faire accroire, voyez-vous.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je ne laisse rien passer,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je ne lui passe rien.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">C'est pour cela qu'il me craint,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">pas de danger qu'il se laisse aller, je peux dormir tranquille ;</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">et quand il se mariera, celle qui tombera sur lui pourra dire :<dl style="box-sizing: border-box;"><dd style="box-sizing: border-box;">« <em style="box-sizing: border-box;">Je suis tombée sur de l'or en barre</em> ».</dd><dd style="box-sizing: border-box;">De l'or en barre, sior'Agnese,</dd><dd style="box-sizing: border-box;">de l'or en barre.</dd></dl></dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à part</code></em>. Oh ! il faut que je m'en aille, parce qu'elle m'en dit tant que</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">pour un peu,<br>pour un peu...</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>9</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à Agnese</code></em>. Vous entendez comment elle m'aime ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(Au garçon :)</code></em> Viens ici, donne-moi un coup de main ;</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">on va rapprocher la table.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(A Giacomina, en passant devant elle :)</code></em></dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Bon sang, que vous êtes belle !</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>10</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">C'est pour quoi faire ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Un sarrau.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Sapristi !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">L'affaire du siècle.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Vous pensiez qu'on allait vous vider la boutique ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh ! tant pis ;</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">dites toujours,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je suis là pour vous servir,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">même si vous n'en prenez qu'<a style="font-family: arial, sans-serif; box-sizing: border-box; background: transparent; text-decoration-line: none; color: rgb(41, 166, 238);">une coudée</a>,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">c'est pour qui, si je peux me permettre ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">montrant Giacomina.</code></em> Pour cette petite.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">si c'est pour cette petite, laissez-moi faire.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je ne voulais pas entamer de nouvelles pièces,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">mais s'il s'agit de vous, tout est à vous :</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">tout.</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA,</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>11</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA,.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Non, sior, non, sior:</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">quatre lires et dix sous.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Comme vous voudrez,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je ne discute pas.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Qu'il y gagne ou qu'il y perde, un marchand est là pour vendre.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(A Giacomina :)</code></em> Venez ici,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">c'est vous qui tiendrez l'aune.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Non, sior, non, sior :</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">c'est moi qui la tiendrai.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Comme vous voudrez.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(Il mesure le tissu.)</code></em></dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Hé !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ne comptez pas vos ongles avec !</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh ! misère de moi !</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Attention,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je veux que vous mesuriez large.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Que je mesure large,<br>en plus ?</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>12</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">La dot, combien vous voulez ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Voir la marchandise, discuter après.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Un petit millier de ducats au comptant, ça vous suffirait ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Ecoutez; parlons sérieusement :</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">moi, je ne suis pas riche, mais je ne cours pas après les sous.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Sûr qu'un petit quelque chose ne ferait de mal à personne, je ne dis pas,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">mais plutôt mille ducats avec une fille qui me plairait que quatre mille avec une qui ne me plairait pas.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">AGNESE.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Et mille de ce côté-ci, par exemple <em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(elle lui montre Giacomina)</code></em>, ça vous plairait ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Le papier, l'encre et la plume:</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je signe.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">BARBARA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Allons, allons, c'est bientôt fini ces singeries ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">ROCCO</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Et voilà, elle est toujours comme ça avec moi.</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>13</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à Lodovica</code></em>. Oh ! un peu, elle a dit.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Tu ne vois pas comme il t'aime, fillette ?.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Il a été à Rialto,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">il a été s'occuper de,ses affaires comme un petit rhomme,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">et puis tout de suite il est revenu.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Dis donc, sior Nicoletto, tu les as touchés, tes sous, à"Rialto ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Non, siora,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je ne les ai pas touchés.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Mais pourquoi tu ne les as pas touchés ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Parce que celui qui devait me les verser n'était pas encore arrivé</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">et moi,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">j'en ai eu assez d'attendre,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">je suis parti.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Voyez-moi ça !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">tu as eu tort, il fallait attendre.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">J'étais pressé de venir ici.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je mourais d'etvie de revoir Siora Daniela.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Tu n'es pas resté ici tout le matin ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Quel besoin tu avais de remettre à plus tard les affaires ?<br>En voilà des gamineries.</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>14</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">DANIELA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Si je n'étais pas sûre que vous m'aimez, j'irais me jeter à.l'eau,</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Sacré nom! je vous aime tant et plus.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Mais dans quelle intention ? Explique-toi.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Qu'est-ce que vous voulez que je vous dise ?</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Vous ne le savez pas ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">DANIELA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Eh là !</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">c'est à Ioî de parler, voyons.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Pour moi, sûr que je ne dis pas non.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh ! ce n'est ni à toi ni à lui, ma belle.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Il faut d'abord voir si moi, je veux.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Qu'est-ce que vous pourriez ne pas vouloir ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Je ne veux pas de godelureaux chez moi.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">J'ai tenu mes petites à l'oeil autant qu'il a fallu.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">J'en ai marié trois, mon garçon,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">et à tous j'ai dit la même chose.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Ou dedans, ou dehors.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">DANIELA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Ou vous parlez pour de bon, ou c'est pour vous moquer.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Si vous parlez pour de bon, autant que ça ne traîne pas.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à part.</code></em> Qu'est-ce que mes jambes tremblent !</dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>15</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Et tâche de te rappeler que ma fille n'a rien,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">que lu devras lui fournir jusqu'à sa chemise.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oh ! oui, siora, on s'en occupera.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">DANIELA</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Alors je verrai si tu m'aimes.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LODOVICA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Si tu dois faire des achats,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">fie-toi à moi,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">donne-moi l'argent, et tu verras combien je te ferai économiser.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">NICOLETTO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Oui, siora, oui, siora,<br>vous vous en occuperez.</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><br></dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><br></dd><p style="font-family: arial, sans-serif;"><span class="gmail_default"><font color="#ff0000" size="4"><b>16</b></font></span></p><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO. </dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Ma filleule,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">quel genre de dé tu as ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Essayant de faire écran </span>: Oh ! un vieux en laiton.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Se place à côté d'elle et se baisse à son niveau, poue voir </span>: Dis-moi,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">tu veux que je t'en achète un, <u style="box-sizing: border-box;">en argent</u> ?</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">commençant à s'exaspérer </span>: Merci, merci,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">le mien me suffit pour ce que j'ai à faire.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">S'approche encore", presque à lui frôler le visage </span>: Fais-moi donc voir ce que tu brodes de beau. <em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">(Il met ses lunettes.)</code></em></dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Elle l'écarte d'un coup de coude</span>:Oh! y a rien de beau là dedans.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Reprenant son équilibre, il la considère</span>:</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">Eh! si,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">: qu'il y a quelque chose de beau,</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">avec son sourire le plus charmeur </span>:</dd><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">là.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA,</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><em style="box-sizing: border-box;"><code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; color: rgb(221, 17, 68); background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; padding: 0px 3px 2px; border-radius: 3px;">à part.</code></em><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;"> Grinçante, au public </span>: Oh ! ce que j'en ai assez !</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Se penchant à nouveau</span>: Ma petite, laisse-moi prendre la mesure de ton dé, <span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">Il va pour lui prendre la main</span></dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GLACOMINA. <span style="box-sizing: border-box; background-color: rgb(221, 238, 255);">l'écartant brutalement</span></dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 255, 221); color: rgb(0, 119, 0); font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-caps: small-caps;">Exaspérée </span>: Non, sior.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">LUNARDO.</dt><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">: Allons.</dd><dt style="box-sizing: border-box; font-weight: bold; margin-top: 6px; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;">GIACOMINA,</dt><p style="font-family: arial, sans-serif;"><span class="gmail_default"></span></p><dd style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px;"><span style="box-sizing: border-box; background-color: rgb(221, 238, 255); font-weight: bold;">se lève vivement pour le giffler ...</span>: C'est fini, oui ?</dd><p style="font-family: arial, sans-serif;"><br></p><table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: none;"><tbody><tr><td valign="top" style="font-family: arial, sans-serif; font-size: 13px; border: none; padding: 0cm 5.4pt;"><p style="font-family: arial, sans-serif; margin-bottom: 0.0001pt;"><b><span style="font-size: 7.5pt; font-family: "Arial Black", sans-serif;">Jacques </span></b></p><p style="font-family: arial, sans-serif; margin-bottom: 0.0001pt;"><b><span style="font-size: 7.5pt; font-family: "Arial Black", sans-serif;"><br></span></b></p><p style="font-family: arial, sans-serif; margin-bottom: 0.0001pt;"><b><span style="font-size: 7.5pt; font-family: "Arial Black", sans-serif;"><br></span></b></p></td></tr></tbody></table></div></div></div></div></div></div></div></div></div>
!!!!Scène l
//Noir salle. Voix off: //
;Voix off
:J'ai mis trois mois pour écrire cette œuvre, mais il m'a fallu un temps assez long de ma vie pour la vivre. Je ne suis pas certain que cela aurait été mieux si c'était le contraire qui s'était produit, bien que cela eût été plus élégant. J'ai éprouvé comme de l'affection pour ces gens pendant que je m'intéressais à eux. Ils étaient quelquefois presque adultes. Ils disent bien des bêtises et, parfois, certaines choses raisonnables. Ils sont anxieux, gais, égoïstes, sots, gentils, sages, désintéressés, affectueux, emportés, tendres, sentimentaux, insupportables, aimables. Le tout dans un unique mélange. Voyons maintenant ce qu'il se passe. ..
://Musique. Dans les flash«s aveuglants apparaissent Mariane et Johan..//
;Johan
:Ce n'est pas facile... si je me décris comme quelqu'un de remarquablement intelligent, .jeune, dynamique, sexy, bien équilibré, on va dire que je me vante. Un type cultivé, branché. ayant beaucoup lu et dont on recherche la compagnie. Un bon camarade, sympathique même avec ceux qui ont eu moins de chance que lui. Sportif, bon père de famille. Bon fils. ça vous suffit ou vous voulez d'autres détails ? Ah ! j'oubliais, je suis un amant merveilleux, n'est-ce pas Marianne ?
;Marianne
: Qu'est-ce que .je peux bien dire ? Je suis la femme de Johan et ,j'ai deux petites filles... //(Un temps.)// Je ne vois rien à dire d'autre pour le moment. //(Un temps)// Je trouve que Johan. .. est très agréable à vivre;.
;Johan
:Merci, c'est gentil !
://Photo, flash.//
;Marianne
:Nous sommes mariés depuis dix ans.
;Johan
://(ironique)// je viens de renouveler le contrat.
://Rire//.
;Marianne
:Je ne suis peut-être pas aussi sûre de ma propre perfection que Johan. Mais c'est une vie qui me convient, j'en suis assez heureuse. Oui, c'est une vie très plaisante.
;Johan
:Marianne est très bien foutue.
;Marianne
:Tu rigoles tout le temps. Moi, j'essaie de répondre le plus sérieusement possible...
;Johan
://(sérieusement)// j'ai 36 ans ! Mais je fais beaucoup moins,vous ne trouvez pas ?
;Marianne
:J'en ai 35.
;Johan
:Nous sommes tous les deux d'origines si bourgeoises que c'en est presque indécent.
;Marianne
:Le père de Johan est médecin.
;Johan
:Et ma mère est mère. Terriblement mère.
;Marianne
:Mon père est avocat. Il avait toujours été entendu que je serais avocate moi aussi. Je suis la dernière d'une famille de cinq enfants. Ce qui est curieux dans notre cas, c'est que nous sommes toujours très heureux de nous retrouver avec nos parents. Il n'y a jamais vraiment eu de conflits entre nous.
;Johan
:Je suis chargé de cours à l'institut psychotechnique.
;Marianne
:Je suis spécialisée dans le droit de la famille. Je m'occupe surtout de divorces. //(Un temps.)// Je laisse le soin à Johan de raconter comment nous nous sommes rencontrés.
;Johan
:Oui, ça c'est intéressant.
;Marianne
:De toute façon, il n'y a pas eu de coup de foudre.
;Johan
:Je ne peux pas dire que l'on se soit fait une très grosse impression l'un sur l'autre. Marianne me trouvait prétentieux.
;Marianne
:Il était insupportable.
;Johan
:Mais nous sommes tombés amoureux.
;Marianne
:Très amoureux même.
;Johan
:On s'est mariés au bout de six mois. Les autres nous considéraient comme un couple idéal.
;Marianne
:Et ça n'a pas changé depuis. Nous n'avons pas de problèmes matériels. Nous avons de bonnes relations avec nos amis et notre famille. Chacun un bon métier qu'il aime. Une bonne santé.
;Johan
:Etc. C'en est quasi obscène. Ordre, sécurité, bien-être, loyauté.
:Une réussite, quoi !
;Marianne
:Johan se met si difficilement en colère que nous n'arrivons jamais à nous disputer.
;Johan
://(ironique)// Voilà, c'est merveilleux ! Pas plus tard qu'hier soir, un ami nous a dit que le manque de problèmes était en soi un sérieux problème. //(Un temps.)// Il y a sûrement du vrai !
://Photo, flash//.
;Marianne
:Je crois à la sympathie humaine. Si chacun, depuis sa tendre enfance, apprenait à faire attention à son voisin, le monde serait différent //(Un temps.)// je ne sais pas si notre vie est parfaitement réussie. Mais c'est vrai que nous vivons bien. Je veux dire que nous sommes heureux. Nous le sommes, certainement. //(Un temps.)// Bien sûr, nous avons des points de friction, mais sur l'essentiel nous sommes d'accord. //(Un temps.)// J'ai envie que tout reste pareil. Que rien ne change.//(Photo, flash.)// La fidélité? Je me demande si la fidélité peut être autre chose qu'une évidence. On ne peut jamais se promettre de rester fidèle. La fidélité existe ou n'existe pas.
:Moi, ça me plaît d'être fidèle à Johan, voilà pourquoi je suis fidèle. Mais j'ignore évidemment ce qu'il en sera demain ou la semaine prochaine...
://Photo, flash//.
;Johan
:L'avenir ? Si j'y pensais, je serais paralysé de peur.je pense qu'il faut mettre au point une technique qui permette de vivre et d'être satisfait de sa vie. Parce qu'il faut vraiment faire un effort pour ne pas s'angoisser de tout, tout le temps.
;Marianne
:L'amour, personne ne m'a jamais dit ce que c'est. Et je ne suis même pas sûre qu'il faille le savoir. Moi, je pense qu'il suffit d'être aimable avec son compagnon. La tendresse, c'est bien aussi. Et l'humour, la tolérance, la camaraderie. Ne pas attendre de l'autre des choses extraordinaires. Juste vivre ensemble, plus simplement, plus tendrement. Si l'on arrive à tout ça... l'amour, ce n'est plus tellement important.//(Elle se toume um Johan.)// Tu ne trouves pas ?
://Il la regarde sans savoir quoi répondre. Flash, photo//.
://Noix Musique à la radio//.
"""
Oui,
je pars, Fritz.
Je suis peut-être restée trop longtemps déjà,
tu dois m’en excuser,
mais…"""
* ^^//Elle s’arrête,
réfléchit,
et recommence autrement//^^.
"""
Fritz, il ne faut plus me retenir, tu ne peux pas…
Il est évident que je te fais du tort, je sais, tu n’es pas un poltron, tu ne crains pas la police,
mais il y a pire.
Ils ne te mettront pas dans un camp, mais demain, ou après, ils t’empêcheront d’aller à la clinique,
tu ne diras rien,
mais tu tomberas malade.
Je ne veux pas te voir ici, dans un fauteuil, passant ton temps à feuilleter des revues,
c’est pur égoïsme de ma part, si je m’en vais, rien d’autre.
Ne dis rien…
"""
!!!!Scène 2
`En Lettres lumineuses : La politique de l'autruche. ll fait des pompes, elle fait des fentes. En fond, toujours la radio...:`
;Marianne
:Bonjour l
;Johan
:Buongiorno, nii amor! Bien dormi ?
;Marianne
:Bof lje suis réveillée depuis 5 heures et impossible de me rendormir.
;Johan
:Pourquoi ?
;Marianne
:je ne sais pas, j'étais agacée. Je m'énervais toute seule dans le lit.
;Johan
:Tu dis ça comme si c'était ma faute...
;Marianne
:Non, rien à voir avec toi mon amour, pour une fois. .. C'est ce dîner chez mes parents. .. ça me rend dingue.
;Johan
:Mais on dîne chaque dimanche chez tes parents ou les miens.
;Marianne
:Oui, c'est débile.
;Johan
:Ça leur fait plaisir, c'est pour ça que nous le faisons.
;Marianne
:C'est aberrant, je vais annuler.
;Johan
:Mais qu'est-ce que ta mère va dire ?
;Marianne
:Ce qu'elle voudra, je m'en fous ! Je veux passer mon dimanche pour nous tout seuls, avec toi et les filles.
;Johan
://(il glousse)// Si tu y arrives, bravo !
;Marianne
:Compte sur moi... Je suis de très mauvaise humeur.
;Johan
:Toi, tu as tes règles !
;Marianne
:Tu dis toujours ça... Je peux être énervée pour d'autres raisons...
://Fin de La radio. Étirements pour Johan, et abdos pour Mariane.//
;Johan
:Qu'est-ce qu'il t'arrive ?
;Marianne
:Réfléchis. Notre vie est découpée en petits compartiments, par jour, par heure, par minute... Dans chaque compartiment, il y est écrit ce que l'on doit faire. Et s'il y a un espace vide, alors là, c'est la panique.
;Johan
:Et les vacances ?
;Marianne
:C'est encore pis. Tout est réglé comme du papier à musique. Petit déjeuner, courses, déjeuner, sieste, courses, apéro, dîner, dodo... et ça recommence...
://Un temps.//
;Johan
:Tu ne réveilles pas les filles ?
;Marianne
:Non. Je les laisse dormir. Karine n'a pas école et Éva avait un peu mal à la gorge hier soir.//(Furieuse.)// Si elle est malade dimanche, on aura droit aux remarques et commentaires... et ça va faire toute une histoire.
;Johan
:Je croyais que tu annulais.
;Marianne
:Han, han l... Dans mon idée, c'était toi qui allais le faire.
;Johan
:Moi ? Mais c'est ton idée. Je n'ai pas envie de me mettre mal avec ta mère, j'ai encore quelques cartouches avec elle. Débrouille-toi ! Je reste là et.je te soutiens moralement.
://Fin du sport pour Marianne.//
;Marianne
:OK l Je vais le faire...//(Un temps. Elle s'approche de Johan et lui prend la main.)// Sens comme mon cœur cogne... Bon, il faut bien un jour faire le premier pas.
;Johan
:Séquence 1/1ère ! Clap ! //(ça sonne... Un temps.)// Elle ne répond pas ? Ouf ! Sauvés !
;Marianne
:Comment tu vas ?... Tant mieux... Papa est déjà sorti ?... À la campagne ?. .. Mais tu le laisses sortir comme ça, tout seul ?... Ah ! avec Éric... C'est bien... Maman, je t'appelle parce qu'il faut que je te dise quelque chose... Je suis vraiment désolée mais...//(Une longue Pause où elle écoule sa mène.)// Oui, comment tu as deviné ?... Pas de raisons particulières... Parce que je veux être un peu seule avec Johan et les filles, au moins un dimanche. Non. .. Non... Simplement on ne veut pas venir... Tu crois vraiment que papa attend ce dîner avec une telle impa... OK maman, mais ça doit rester un plaisir, pas un devoir !... Ah bon l. .. Je comprends... Je comprends... Je ne savais pas... Parce que tu ne me l'avais pas dit... Pas vraiment emballée, pour être franche... OK... OK... Mettons que je n'ai rien dit... Non, s'il te plaît... Oui, on viendra... On essaiera... Oui, d'accord... Oui, je t'assure, il n'y a pas de problème...
: Johan t'embrasse... ça nous fera plaisir. .. Bisous...je te laisse, maman.
;Johan
:Coupez ! Étouffé dans l'œuf, //The Revolution//...
;Marianne
:Il y aura ma tante Elsa, il y a plus de six mois qu'elle n'est pas venue en France... Elle se fait une joie de voir les filles. Et elle a même un cadeau pour toi...//(Furieuse)// Putain !
;Johan
:Quand même, je salue ton courage...
;Marianne
:Fait chier, merde ! //(Un temps.)// Je ne sais pas ce que j'ai. .. Tous les deux on travaille, on voit tout le temps du monde, nous sommes avec les filles le plus souvent possible. .. On ne se dispute pratiquement jamais et, si ça arrive, nous trouvons toujours un compromis acceptable, bref, c'est parfait...
;Johan
:Oui, ça parai idéal l
;Marianne
:Et pourtant, ça m'angoisse...
;Johan
:Pourquoi tout est aussi compliqué aujourd'hui ?//(Un ange passe. Fin du sport pour Johan. Il vient embrasser Marianne rapidement sur les lèvres.)//
:On se retrouve directement au théâtre. 20 heures dans le hall ?
://Un silence. Elle le regarde//.
;Marianne
:Tu sais ce que j'aimerais ? Quel'on reste au lit, que l'on s'agrippe bien l'un à l'autre, collés, collés et que l'on reste comme ça, une bonne semaine... Et que l'on pleure tous les deux un bon coup...
;Johan
:Oui, c'est une bonne idée, mais est-ce que c'est la vie que l'on a choisie ?
;Marianne
:si.j'étais sûre qu'on l'avait choisie...//(Elle insiste.)// Tu imagines si l'on commençait à se mentir toi et moi. .. Si on commençait à se tromper...
;Johan
://(embarrassé)// Marianne, qu'est-ce que tu racontes ?
;Marianne
:je ne veux pas dire : comme ça, de temps en temps, ça n'est pas grave. .. Mais pour de bon. Je veux dire : si l'un de nous tombait amoureux de quelqu'un d'autre... Qu'est-ce que tu ferais ?
;Johan
://(comme une hypothèse absurde)// Je te tuerais l
;Marianne
://(elle soupire)// Parfois, j'aimerais...
;Johan
:Quoi ?
;Marianne
:Rien.//(Elle l'embrasse rapidement.)// On va partir loin l'été prochain, rien que toi et moi.
;Johan
:Comment ça, tu veux dire que l'on n'irait pas du tout à Biarritz ?
;Marianne
:On pourrait y passer au printemps.
;Johan
:Tu veux aller où ?
;Marianne
:N'importe... On n'est.jamais allés à Florence, par exemple...
:Ou sur la mer Morte ? Pourquoi pas... Ou en Afrique. Ou au Japon. Si l'on allait au Japon ?
;Johan
:Mais c'est quoi cette hystérie des voyages ?
;Marianne
:Tu ne penses pas que ce serait bien ? Juste partir comme ça... Juste partir toi et moi.
;Johan
:Je ne sais pas.
;Marianne
://(en colère)// Comme tous les ans alors...
://Un silence.//
;Johan
:Tu es déçue ?
;Marianne
:Tu aimes l'ordre et l'habitude.
;Johan
:Toi aussi. Le désordre te rend folle.
;Marianne
:J'en suis moins sûre que ça.
://Elle l'embrasse.//
;Johan
:Je ne crois pas avoir envie de me traîner au bout du monde sous une chaleur de bête, alors que,je pourrais être tranquillement assis dans mon.jardin face à l'océan.
;Marianne
:C'est quoi ce petit ton sarcastique ?
;Johan
:Non, pas sarcastique... Je pense sincèrement ce que je te dis.
;Marianne
:Bon, on fera comme d'habitude.
://Un temps.//
;Johan
:Marianne ?...
;Marianne
:Oui, Johan...
;Johan
:Tu penses que la vie est ennuyeuse ?
;Marianne
:Non, bien sûr que non ! Et toi ?
;Johan
:je ne sais pas.
;Marianne
:Moi,.j'ai toujours cru que la vie était passionnante. Mais, il y a des moments, j'aimerais.prendre chaque .jour comme il vient. Manger quand ,j'ai faim, dormir quand je suis fatiguée, faire l'amour quand j'ai envie, Bosser de temps en temps quand je m'ennuie... Des fois, je rêve .juste de me laisser flotter, voire même couler. ..
;Johan
:Qui n'a pas cette envie-là ?
;Marianne
: Toi !
;Johan
:Qu'est-ce que tu en sais ?
;Marianne
:Tu voulais vraiment une vie comme la nôtre ?
;Johan
:La vie a la valeur qu'on lui accorde, ni plus ni moins.//(ll l'observe.)//
:Ce que je te trouve belle, quand même...
;Marianne
:Je ne suis même pas maquillée.. .Je ne ressemble à rien...
;Johan
://(voix blanche)// Marianne...
;Marianne
://(alarmée)// Tu veux me dire quelque chose...
;Johan
:Est-ce que l'on peut se tromper au point que la vie aille complètement à la dérive. .. Sans que l'on sache pourquoi, imperceptiblement ?,..
;Marianne
://(faiblement)// Tu parles de nous ?...
;Johan
://(continuant en lui-même)//. .. Est-ce que c'est une question de choix ?. ..
:De faire le mauvais choix... À suivre toujours le même petit chemin sans réfléchir. .. Jusqu'à tomber dans le fossé...
;Marianne
:Johan, il est arrivé quelque chose ?. ..
;Johan
:Non, rien. Rien du tout, je t'assure...
;Marianne
:On se dit tout, toi et moi ... Non ?
;Johan
:Je suppose que oui.
;Marianne
:C'est mauvais de tout garder pour soi. On doit se dire les choses franchement, même si ça fait mal. .. Tu es d'accord ?
;Johan
://(irrité)// Mais oui.//(Un temps.)// Tu veux sans doute parler de notre vie sexuelle. On ne peut pas tout partager, ce serait épuisant.
;Marianne
://(brusquement)// Je t'aime tellement. .. Tu sais que je t'aime ?. ..
:Tu sais que j'ai une peur terrible de te perdre... Je devrais te le dire plus souvent, être plus gentille... Je sais que c'est important pour toi...j'ai peur de ne pas être très douée... Mais.je vais faire des progrès... Johan... Je l'aime, vraiment beaucoup... beaucoup.
;Johan
:Je vais tâcher de m'en souvenir.
;Marianne
:À ce soir, prends soin de toi.
://Noir//
* ^^//Elle s’arrête de nouveau,
et recommence tout.//^^
"""
Ne dis pas que tu n’es pas changé,
tu l’es !
La semaine dernière, tu as trouvé, en toute objectivité, que le pourcentage de savants juifs n’était pas si élevé.
Ça commence toujours par l’objectivité,
et pourquoi, maintenant, ne cesses-tu pas de me répéter que je n’ai jamais fait preuve d’un tel nationalisme juif ?
Evidemment je deviens nationaliste.
C’est un mal contagieux.
Oh, Fritz,
qu’est-ce qui nous est arrivé !
"""
,,<$list filter="[[Palette]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/> ,,
{{Prochaines séances}}
!!!! <center>► ''[[Sélection de textes de la Compagnie AFFABLE]]''</center>
!!!<center>
<$list filter="[[Écoutons Jouvet]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
<center>
|bluealtrows|k
| ''Page d'accueil de nos Ateliers''<br>,,FORUM CAHIERS AGENDA TEXTES LIENS,, |
| __''[[http://jacques.droppages.com/]]''__ |
<<<
.
!!<center><p style="color:red">
<$list filter="[[BARBARA]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
14:00 MOUFFETARD</p></center>
<<<
;► Recherche de mises en scène, et manèges pour :
* Scènes de Margarita, Giacomina, Rocco, Lunardo, Lodovica :
** [[I,4 - Nicoletto et Margarita|La Bonne Mère I,4 - Nicoletto et Margarita.]]
** [[I,1 - BARBARA et GIACOMINA|La Bonne Mère I,1 - BARBARA et GIACOMINA]] ou [[II,1 - AGNESE BARBARA GLACOMINA|La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
** Le marchandage ou l'a-parte ROCCO AGNESE de [[Barbara, Agnese, Giacomina, Rocco|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
** Lunardo et [[II,14 - avec Giacomina|La Bonne Mère II,14 - Lunardo et Giacomina.]]. ou [[II,16 - avec Margarita.|La Bonne Mère II,16 - Lunardo et Margarita.]]
** [[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
** Une tirade de __[[BARBARA]]__ (une que tu aimerais voir faire en manège, Chantal).
* La scène de Guitry dans ''[[On passe dans huit jours|On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]''
<<<
!!''<center><p style="color:red">Mardi 12 janvier 14:00 MOUFFETARD</p></center>''
!!!''Femme juive ''
* Filage (Michèle)
* Manèges sur le fragment final :<br><br>//[[7.- Dans le prochain pays où j’irai, cela ne devra plus se passer ainsi.]] // ... <br>
:::voix, sentiments exprimés, places...
!!!''[[On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]''
# Le groupe est le metteur en scène et dirige les deux comédiens,
#* parti, caractères, interactions etc.
# Lecture debout (//Mir Jac//) sous la direction du groupe
# Manèges sur fragments pour illustrer certaines indications possibles.
!!!''[[ALICE AU PAYS DES MERVEILLES - Un thé chez les fous|https://fr.www.affinibook.com/ebook/read?book_id=8671&chapter_id=7]]
''
Deux équipes de 4 : Alice, lièvre, chapelier, loir, récitant
* Recherche en improvisations de dispositif et d'interprétations avec chacune des deux équipes.
:
---
::
:::
!!!! <center>► ''[[Sélection de textes de la Compagnie AFFABLE]]''</center>
!!!<center>
<$list filter="[[Écoutons Jouvet]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
<center>
|bluealtrows|k
| ''Page d'accueil de nos Ateliers''<br>,,FORUM CAHIERS AGENDA TEXTES LIENS,, |
| __''[[http://jacques.droppages.com/]]''__ |
<<<
.
[[Programme de la séance|Mardi 19 janvier]]
Brecht :
* [[Femme Juive]]
* [[Les téléphones]]
* [[Avec son mari]]
Guitry :
* [[On passe dans huit jours|On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]
Saint-Exupéry :
* [[LE PETIT PRINCE ET LE RENARD • Saint-Exupéry]]
:
.
<<<
Il est très dangereux d'aborder un texte à jouer avec un sentiment a priori ou avec des idées générales, sous peine
* d'obscurités voire de trahisons dans le sens,
* ou du fatal ennui que provoque un débit trop uniforme, soit robinet d'eau tiède, soit mode amphigourique.
Il faut entrer dans le détail, et faire un sort théâtral à ce que nous livre l'auteur, jusqu'à la moindre ponctuation :
* trouver pourquoi l'auteur à voulu placer cet élément là, dans cette scène là, dans la bouche de ce personnage-là.
**Identifier les éléments de discours qui devront être mis en lumière
* trouver quel ressort interne au personnage le pousse à dire à cet instant-là ces mots là, détachés de cette manière-là.
C'est une infinité de micro-décisions à laquelle tous les comédiens doivent participer lors des premières lectures.
Ce sont les didascalies qui conservent la trace du travail de préparation au jeu
:► ce que l'on a convenu de //faire// ou d'//être// pour mettre en vie le texte qu'on va servir.
Bien sûr, rien n'empêche qu'au cours des répétitions on soit amenené à revoir, corriger, ou complémenter les didascalies initiales.
Le travail que nous faisons ensemble m'a conduit à en distinguer trois types (auxquels je donne dans le Cahier un code couleur spécifique).
<<<
---
{{Parti de mise en scène||parti}}
;Il s'agit de l'impression à produire sur le public, la trace que doit laisser la scène.
:→ il y a un parti pour chaque scène (séquence ou tableau), qui garantit la cohérence du jeu.
:→ C'est l'objectif à partager par tous les comédiens protagonistes.
---
{{Jeu de scène ||scn}}:
;Les mouvements, déplacements, gestes nécessaires à la mise en scène prévue.
:→ Ce que les comédiens doivent __au moins__ ''faire'' pour rester reliés les uns aux autres dans la progression de l'action.
:→ De nombreux autres jeux de scènes peuvent être ajoutés, propre à chaque personnage, pourvu qu'ils ne contrarient pas le jeu des autres, ni le parti de mise en scène.
---
{{Ressenti du personnage ||did}}:
;Les émotions, sentiments attitudes que le comédien prète à son personage et auxquels il donne vie.
:→ Ces ressentis varient sans cesse, ils peuvent être divers et même contradictoires au sein d'une même réplique.
:→ Ils caractérisent la spontanéité que l'on prête au personnage dans chacune de ses prise de parole, et qui sculptent (ou fragmente) son discours.
:→ À la limite chaque élément d'une réplique (chaque émission de voix entre deux respirations ou pauses) est justiciable d'un ressenti spécifique, qui le singularise et commande l'expression, l'intonaton et le degré de variation que le comédien va donner à cet instant au personnage.
---
!!!!Scène 3
;Johan
:Il s'est passé quand même pas mal de choses depuis cent ans. .. Et pas tellement dans le sens que voulût lbsen dans //Une maison de Poupée//. ..
;Marianne
:Moi, .je trouve que la pièce tient le coup.
;Johan
:Elle est poussiéreuse l C'est tellement « démodé », le féminisme.
:Bon, aujourd’hui les femmes sont libres. Mais qu'est-ce qu'elles font de cette liberté ? Rien ! Les femmes ont toujours eu la meilleure part. Mais, maintenant, elles sont arrivées à donner aux hommes une mauvaise conscience collective.
;Marianne
:Pardonne-moi, mais je trouve ça assez con ce que tu dis.
;Johan
:Sûrement. En plus, je n'en pense pas un mot. D'ailleurs, je m'en fous ! //(Un silence.)// Dis-moi, pourquoi faut-il toujours que deux êtres qui vivent ensemble finissent par se fatiguer l'un de l'autre ?
;Marianne
://(choquée)// Pas nous. Nous ne sommes pas lassés l'un de l'autre.
;Johan
:Un peu. Le désir s'atténue forcément...
;Marianne
:Il ne s'atténue pas. il est intact. C'est juste que l'on travaille trop, et le soir, ont est crevés...
;Johan
:Marianne, je ne te fais aucun reproche.
;Marianne
:Je n'en suis pas certaine.
;Johan
:je t'assure,
;Marianne
://(elle insiste)// Mais nous nous aimons !
;Johan
:Oui et non... Pas sur tous les plans en tout cas. Notre vie sexuelle n'est que prétextes et interdictions.
;Marianne
:Ce n 'est pas ma faute si je n'éprouve plus le même désir que toi pour le sexe. Si tu veux me donner mauvaise conscience, tu as réussi...
;Johan
:Ne pars pas au quart de tour.
;Marianne
:Je trouve que l'on s'en sort bien. Il y a moins de passion, c'est sûr ; mais ça pourrait être pis.
;Johan
:ça, c'est certain.
;Marianne
:Il n'y a pas que le sexe dans la vie...
;Johan
://(avec humour)// ça se discute. ..
;Marianne
://(au bord des larmes)// Si tu n'es pas content, tu n'as qu'à te trouver une fille plus excitante avec qui tu pourras t'épanouir complètement...
:Moi, je fais ce que je peux...
;Johan
:Oui, je suis au courant l
;Marianne
:Arrête avec ce regard...
;Johan
:Quel regard ?
;Marianne
:Ce regard et ce ton. Tu veux me dire quelque chose ? Allez, vas-y; déballe...
;Johan
:ça ne sert à rien, tu vas faire la gueule.
;Marianne
://(se dominant)// Non, je te promets. Je t'écoute et.je reste calme.
;Johan
:Pourquoi c'est si difficile en tre nous ? Coucher ensemble, ça devrait être naturel... ça n'a jamais été envisagé comme un énorme problème qui dominerait tout. Plus ça va, plus c'est compliqué. ..
://Un temps.//
;Marianne
:C'est ma faute, c'est ça ? C'est ma faute si l'on ne prend plus de plaisir à faire l'amour... Tu me rends responsable de notre tiédeur.
;Johan
:Tu viens de dire que tu faisais de ton mieux...
;Marianne
:Oui, je fais de mon mieux. Je fais vraiment de mon mi'eux, Johan.
;Johan
:C'est déprimant d'entendre ça. Tu n'entends pas comme ça sonne mal ?
;Marianne
:Tu crois que je mens ?
;Johan
:Hélas, non !
;Marianne
:Alors.je ne comprends pas !
;Johan
:Laisse tomber. On va se coucher, il est tard.
;Marianne
:Tu te fous de moi, là ? Tu commences une discussion « sérieuse » et là, d'un coup, tu as sommeil et tu veux aller te coucher ?
;Johan
:Marianne. //(Avec douceur)// peut-être que notre pauvre petite vie sexuelle ne mérite pas une discussion de fond...
;Marianne
://(désarmée)// Pourquoi il faut toujours que l'on s'engueule là- dessus ? Tu commences par m'agresser parce que je ne fais pas d'effort et ensuite parce que j'en fais...
;Johan
:Bon, OK, je m'y suis mal pris... Désolé...
;Marianne
:Tu ne veux pas être moins froid... plus gentil ? Et puis ça serait plus... efficace tu vois...//(Un temps.)// Mais il y a des choses qui doivent rester dans l'ombre. ..
;Johan
:Oui ! //(La consolant.)// Ne sois pas triste... J'ai eu tort.
;Marianne
:Ce n'est pas toujours bien de parler de ces choses-là. .. Même s'il vaut mieux tout se dire, mais, dans ce cas, ce n'est pas vrai,. je crois que c'est une erreur... On se fait du mal inutilement...
;Johan
://(Il a déjà entendu ça)// Oui, oui, c'est vrai, tu as raison... Je regrette d'avoir remué tout ça...
;Marianne
:J'en suis sûre. Et, quand on va se coucher, on en est toujours au même point. Et là... C'est comme si l'on se couchait sur. .. euh... un lit de cactus.
;Johan
://(il rit)// Ha, Ha !
;Marianne
:Qu'est-ce qui te fait rire ?
;Johan
:Le lit de cactus !
;Marianne
://(amusée elle aussi)// Eh bien l marre-toi...
;Johan
:On peut aller se coucher maintenant ?
;Marianne
:Reconnais que tu es particulièrement odieux.
;Johan
://(sincèrement)// Excuse-moi.
;Marianne
://(elle l'affirme)// Tu trouves que je ne suis pas assez tendre.
;Johan
:ça demande beaucoup de temps, la tendresse.
;Marianne
:Alors ça veut dire que tu en manques...
;Johan
:« Nous » en manquons et « nous » n'en donnons pas assez. Moi non plus, je ne suis pas assez tendre.
;Marianne
:C'est pour ça que je voulais que l'on parte cet été, juste tous les deux.
;Johan
:Parce que tu penses que l'affection doit être réservée aux vacances ?...
://Ils rient ensemble.//
;Marianne
:Tu as de jolis instants, mais, dans l'intervalle, tu peux vraiment être terriblement con...
;Johan
:Tu sais, après 35 ans, les cellules du cerveau crèvent tous les jours par milliers, et elles ne sont jamais remplacées.
;Marianne
:Chez toi, c'est des dizaines de milliers...
;Johan
:Tu sais que, quand tu t'énerves comme ça, tu es vachement bandante ?
://il s'approche, l'embrasse, lui touche les fesses...//
;Marianne
://(brusquement)// Je vais aller jeter un œil sur les filles...
://Il est calmé direct.//
;Johan
:Je dors debout !
://Un silence, elle ne bouge pas.//
;Marianne
:Johan ! Si tu veux que l'on fasse l'amour...
;Johan
:Merci de me le demander, mais,je dors déjà. Bonne nuit ma chérie !
;Marianne
:Bonne nuit !
://Elle sort.//
://Noir//
* ^^//Elle s’arrête de nouveau,
et recommence tout.//^^
"""
Je ne te l’ai pas dit que je voulais partir,
que je voulais partir depuis longtemps,
parce que je ne peux pas te parler quand je te regarde, Fritz.
Cela me semble alors tellement inutile, de parler.
Tout est déjà réglé.
Qu’est-ce qui leur a pris ?
Qu’est-ce qu’ils veulent ?
Qu’est-ce que je leur fais ?
Je ne me suis pourtant jamais occupée de politique !
Est-ce que j’ai été pour Thaelmann ?
Ne suis-je pas l’une de ces femmes de la bourgeoisie qui ont un train de maison, etc.
… Et d’un coup, seules les femmes blondes auraient le droit de vivre ainsi ?
Ces derniers temps, j’ai souvent pensé à ce que tu me disais, il y a des années,
qu’il y avait des individus précieux et des individus moins précieux,
et que les uns, en cas de diabète, avaient droit à l’insuline et les autres pas,
et j’approuvais, imbécile que j’étais !
Ils ont fait aujourd’hui une nouvelle classification de ce genre, et maintenant je suis ceux de ceux qui valent moins que rien.
Je l’ai bien mérité.
"""
* ^^//Elle s’arrête de nouveau,
et recommence tout.//^^
"""
Oui, je fais mes bagages.
Ne fais pas comme si tu ne t’étais aperçu de rien ces derniers jours.
Fritz, j’admets tout, sauf une chose,
que nous ne nous regardions pas en face pendant la dernière heure qui nous reste.
Ils n’ont pas le droit d’obtenir cela de nous, ces menteurs qui contraignent tout le monde au mensonge.
Une fois, il y a dix ans, quelqu’un avait fait réflexion que je n’avais pas le type juif,
tu avais dit aussitôt : "si, elle l’a !"
Et cela me plaisait.
C’était clair.
Aujourd’hui, pourquoi tergiverser ?
Je fais mes bagages parce que, sinon, ils ne te laisseront plus médecin-chef.
Et parce que déjà, dans ta clinique, ils ne te saluent plus,
parce que déjà, la nuit, tu n’arrives plus à dormir.
,,Citations choisies dans le recueil « Petit dictionnaire de Théâtre » de Bernard Bretonnière (Éditions Théatrales),,
# Le public est notre acoustique spirituelle. Il nous renvoie sous forme d'émotions vivantes ce qu'il a reçu de nous. <br>// Stanislavski//
#Sur scène, je sais où je vais. L’intéressant n’est pas de dire mais de faire ressentir.<br>// Catherine Hiegel //
# Un acteur n'entre pas en scène, il apparaît. <br>// Antoine Vitez //
# Je revendique l'artificialité du théâtre, chemin de liberté et imagination. Au sein de l'artifice il est d'autant plus important d'être vrai concret - de se donner la liberté d'imaginer. <br>// Jorge Lavelli //
# Une mise en scène n'est jamais neutre, il s'agit toujours d'un choix. <br>// Louis Jouvet //
# La théâtralité, c'est le contraste. Si on ne joue qu'une seule note, il n'y a plus de théâtralité. <br>// Jorge Lavelli //
# Une pièce de théâtre est une conversation. <br>// Louis Jouvet //
#Pour se rendre disponible à ce qui se passe au moment même, il faut se libérer de son texte, se libérer des intentions, se libérer de tout ce que l'on peut travailler, pour faire en sorte qu'au moment de la représentation on puisse respirer ce qui arrive comme ceux qui le regarde. Lorsque le rideau se lève, on doit se mettre dans la même situation que le spectateur au début du spectacle.<br>//Barbara ~Metais-Chastanier //
# Jouer ce n'est pas la réalité, c'est plus cruel que la réalité. C'est un acte de cruauté que l'on s'inflige. Cette cruauté a à voir avec la lucidité. En cela, c'est une chose très redoutée. <br>// Jeanne Moreau //
# J'en ai assez de ces représentations où on vient voir ce qu'on attend. Je ne vais pas au théâtre pour reconnaître, mais pour découvrir. <br>// Jacques Lassalle //
# Il y a dans l'acteur une part d'enfance non maîtrisée. C'est grâce à elle qu'on peut le capturer, l'apprivoiser, le ranger en troupe, le réduire en dépendance, en esclavage. <br>// Yves Reynaud //
# Le rêve au théâtre c'est vraiment l'émotion. <br>// Klaus Michael Grüber //
# Entrer en scène, c'est une demande d'amour. <br>// Yves Reynaud //
# Rien n'est si dangereux pour du théâtre que l'esprit. <br>// François Mauriac //
# Notre droit c'est d'avoir des émotions, notre devoir c'est d'en donner. <br>// Nikolaï Evreinoff //
# Un comédien, comme tout artiste, est un explorateur. <br>// Ariane Mnouchkine //
# Ne cherchez pas en vous, en vous il n'y a rien ; cherchez dans l'autre qui est en face de vous. <br>// Stanislavski //
# On ne brûle bien les planches que si on a le feu sacré. <br>// Henri Jeanson //
# L'idéal de l'acteur, c'est être et ressentir tout. <br>// Denise Péron //
# Le théâtre, c'est de l'imagination pour ceux qui n'en n'ont pas. <br>// Louis Scutenaire //
# L'effet du théâtre consiste en impressions, et non en enseignements. <br>// Louis-Sébastien Mercier //
# Et que ceux qui jouent le comique n'ajoute rien au texte de leur rôle ! Car il en est qui d'eux-mêmes se mettent à rire pour faire rire un certain nombre de spectateurs ineptes, au moment précis où il faudrait remarquer quelques points essentiels pour la pièce. Cela est indigne, et montre la plus pitoyable prétention chez le bouffon qui en use ainsi. <br>// William Shakespeare //
# Le public n'est pas intelligent. Il faut entendre par là que c'est plus sa sensibilité qui reçoit, que c'est plus une certaine disponibilité sensible du corps et de l'âme qui enregistre l'atmosphère, le ton et le sens général d'une œuvre dramatique que sa lucidité, que sa clairvoyance intellectuelle. <br>// Jean Vilar //
# Je suis trop lucide pour être un bon acteur. <br>// Philippe Minyana //
# Les bons moments, c'est lorsque tout à coup un spectateur a des larmes dans les yeux alors que l'acteur joue un moment d'enthousiasme, de bonheur et de rire. <br>// Ariane Mnouchkine //
# Au théâtre, on peut jouer dans le noir absolu, à condition de prononcer les mots distinctement. <br>// August Strindberg //
# Il y a deux manières de passionner la foule au théâtre : par le grand, et par le vrai. Le grand prend les masses, le vrai saisit l'individu. <br>// Victor Hugo //
# Un véritable metteur en scène end aide l'acteur à entrer dans les couches profondes d'une œuvre. Il doit aider à comprendre les phénomènes sociaux et le contexte historique qui ont suscité l'oeuvre. C'est un pédagogue sensible. <br>// Daniel Besnehard //
# L'art de bien dire et le premier pas vers le théâtre. L'art de tout exprimer est le point de perfection. <br>// Riccoboni fils //
# C'est seulement quand un comédien a son texte justque dans les pieds, et qu'il remonte à partir de là, qu'on a du théâtre. <br>// Heiner Muller //
# Une pièce de théâtre ne doit jamais être posée en tant que texte, style ou langue, mais en tant que jeu, personnages. <br>// Jens Smaerup Sorensen //
# Je hais la psychologie qui a tué le théâtre, à force de trop penser, avec des têtes qui enflent. <br>// Robert Wilson //
# Il ne faut pas donner au comédien un rôle où il est soi, mais lui donner le goût et la possibilité d'être quelqu'un d'autre. <br>// Robert Bober //
# Le théâtre exige un spectateur actif, c'est-à-dire qui a la responsabilité ultime de terminer la représentation : la scène n'est là que pour révéler le spectateur à lui-même. <br>// Jacques Lassalle //
# Le théâtre n'est pas chargé de représenter la psychologie, mais les passions, c'est tout autre chose. <br>// Ariane Mnouchkine //
# Le mot comprendre n'existe pas au théâtre. Le bonheur est que le vrai public ne comprend pas, il ressent. On peut donc tout lui montrer sans compromission et sans réticence. Ceux qui veulent comprendre au théâtre ne comprennent pas le théâtre. <br>// Jean Giraudoux //
# L'acteur n'est pas un robot, c'est un facteur de différence, même s'il dit les mêmes mots à la même heure tous les soirs. <br>// Alexis Martin //
# Il n'y a pas de petits rôles, il n'y a que des petits acteurs. <br>// Stanislavski //
# Il n'y a pas de science du théâtre <br>// Louis Jouvet //
# Ce qui compte c'est d'être ému comme les personnages ; ne pas être ému par les personnages. La sentimentalité est à rayer du vocabulaire de l'acteur. <br>// Jeanne Moreau //
# Les acteurs “somatisent” le texte. <br>// Valère Novarina //
# Ne serait-il pas tant de prouver que la tragédie est autre chose qu'une statue qui déclame, de montrer enfin qu'on peut agir en parlant, et marcher avec le cothurne ? <br>// Alfred de Musset //
Je ne veux pas que tu me dises que je ne dois pas partir.
Et je fais vite,
pour ne pas t’entendre me dire que je dois partir.
C’est une question de temps.
Le caractère, c’est une question de temps.
Ça dure plus ou moins, comme les gants.
Il y en a de bons, qui tiennent longtemps.
Mais ils ne tiennent pas éternellement.
D’ailleurs, je ne suis pas en colère.
Si, je le suis.
Pourquoi dirais-je toujours amen ?
Qu’est-ce qu’il y a de mal dans la forme de mon nez et dans la couleur de mes cheveux ?
Je dois quitter cette ville, où je suis née, pour qu’ils n’aient pas à me donner ma ration de beurre.
!!!!Scène 5
|!Paula|
://En lettres lumineuses: Paula. Marianne est allongée, elle dort: Johan entre et dépose une petite valise. Avant même qu 'il ait eu le temps d'enlever son manteau, -ellè se réveille. joyeuse, lui saute au cou et l'embrasse tout en lui parlant.//
;Marianne
:Ah, tu es là... Tu ne devais pas rentrer avant demain... Je suis trop contente... Tu as faim ? Tu veux un verre de vin ? Je te prépare un truc à grignoter. .. Les enfants dorment, nous nous sommes couchées de bonne heure.//(Johan approuve d'un mouvemenl de tête vague. Elle sort.)// Tu dois m'en vouloir ?
;Johan
:Pourquoi je t'en voudrais ?
;Marianne
:J'ai été nulle hier soir.
;Johan
:Pas grave.
;Marianne
:Je t'ai rappelé tout de suite mais tu étais sur messagerie...
;Johan
:Je me suis couché tôt.
;Marianne
:Pardon d'avoir été désagréable.
;Johan
://(voix blanche)// Oublie.
://Elle revient. Un long temps. Vraisemblablement, c'est plus grave.//
;Marianne
:Qu'est-ce qu'il y a Johan ? Il y a quelque chose qui ne va pas ?...
:Tu es triste. Dis-moi. ..
;Johan
:Je suis venu te dire quelque chose.//(Il se lance.)// Bon, voilà : je suis tombé amoureux. ça l'air absurde, ,je sais, et c'est peut-être une connerie affreuse. C'est même sûrement une connerie affreuse.//(Vite.)// Je l'ai rencontrée en juin, pendant mon séminaire. Elle est interprète. Elle prépare un doctorat pour enseigner les langues slaves. Elle s'appelle Paula. Elle n'est pas particulièrement jolie. .En fait, tu trouverais sûrement qu'elle est laide: Je ne sais pas du tout où je vais avec elle. Je n'en ai pas la moindre idée.je suis complètement perdu en fait. D'un côté, bien sûr, je suis heureux. Mais j'ai aussi très mauvaise conscience pour toi et les filles.., On s'en est toujours bien sortis, non ?. .. Je veux dire : ça n'était pas meilleur ou pire que dans n'importe quelle famille...//(Silence.)// Dis quelque chose, je t'en supplie.
;Marianne
:Je ne sais pas quoi dire,
;Johan
:j'aurais dû t'en parler plus tôt... Mais je ne savais pas comment ça évoluerait... Et puis je ne voulais pas t'inquiéter. Je pensais que ça passerait... Et puis non. ..
;Marianne
:... C'est bizarre...
;Johan
:Qu'est-ce qui est bizarre ?
;Marianne
:Je n'ai rien remarqué. Tout était comme d'habitude, plutôt mieux même... Je n'ai rien vu...//(Un temps.)// C'est monstrueux.
;Johan
:C'est vrai que tu n'as rien compris ; mais tu n'as.jamais été très perspicace, surtout en ce qui nous concerne.
://Silence.//
;Marianne
://(comme solidaire)// Qu'est-ce que l'on va faire maintenant ?//(Silence.)//
:Tu veux nous quitter ? Pourquoi tu viens me dire ça, là, maintenant... Pourquoi tu es si pressé ?
;Johan
:Je pars demain avec Paula pour Rome.//(Marianne le regarde, se tait.)//
:J'ai besoin de prendre de la distance pendant quelque temps. Il se trouve que Paula a une bourse d'études qu'elle peut utiliser là-bas... Je veux être avec elle. je ne peux pas imaginer vivre sans elle. Nous partons demain après-midi. //(Silence de Marianne, toujours.)// Mais, là, maintenant que je suis à la maison, maintenant que. je te dis tout ça, j'ai envie de tout foutre en l'air... Je suis fatigué et j'ai peur. Je sais très bien ce que tu penses... Mais je n'ai aucune excuse...
;Marianne
://(absente)// Comment tu peux savoir ce que je pense ?
;Johan
:J'essaie de ne pas culpabiliser, j'essaie et.je n'y arrive pas... Mais c'est comme ça, Marianne. On ne peut rien changer...//(Marianne le regarde sans rien dire.)// Il n'y a de toute façon rien de censé à dire. Tu sais maintenant la vérité. C'est le principal.
;Marianne
:Allons nous coucher ! Il est tard et je suppose que tu dois te lever tôt.
;Johan
:J'ai rendez-vous à 9 heures.
://Ils restent dans le silence un long moment sans bouger//
;Marianne
:Tu vas partir combien de temps ?
;Johan
:je ne sais pas, ça dépend. J'ai fait une demande pour six mois sabbatiques. On me les a accordés.
;Marianne
://(écrasée)// Ah !. ..
;Johan
:C'est aussi bien, ça fera une vraie coupure. Tant qu'à partir autant partir pour de bon.
;Marianne
:Hum, hum. Parce que tu crois que je serai toujours là à ton retour ?
;Johan
:je m'en fous.
;Marianne
:je vois.
;Johan
:Tu sais depuis combien de temps je pense à ça ? Bien avant de rencontrer Paula. .. Tu veux le savoir ?... De te quitter toi, les filles, cette vie ? Tu veux que je te le dise ?
;Màrlanne
: Arrête !
://Elle le regarde avec effroi.//
;Johan
:Quatre ans. Il y a quatre ans que j'y pense... Pas que je te déteste, il ne faut pas penser ça. ..
;Marianne
:Arrête !
;Johan
:Oui, tu as raison, ce n'est que du bavardage.
://Un temps.//
;Marianne
:Et comment tu comptes faire ?. .. Je veux dire financièrement...
:Il faudra bien que tu...
;Johan
:J'ai fait un emprunt. À partir de la fin du mois, tu recevras deux mille cinq cents euros par mois pour toi et les filles. ça pour commencer, ensuite on trouvera un arrangement. Avec ton métier, tu connais ça par cœur, non ? Je ne prends rien, sauf quelques livres, peut-être. je disparais sans laisser de traces ! Je paierai tout ce que je peux raisonnablement payer pour toi et les enfants... Ce que je veux, c'est sortir de tout ça, tu comprends ?//(Un temps.)// Tu sais ce que je ne supporte plus ? C'est notre vie merdique... Ce que l'on est censés faire ou pas, dire ou pas, ce que les gens vont penser, ce que les filles vont dire ! Comment fêter Noël, Pâques, les anniversaires, où et avec qui. .. et toutes ces conneries... Je sais que .je suis injuste et que c'est dur ce que.je dis.//(Un temps.)// En fait, je crois que .je t'aime toujours. D'une certaine façon, plus depuis que.j'ai rencontré Paula. Mais tu peux comprendre cette espèce de... d'amertume... Oui, cette amertume, il n'y a pas d'autre mot.
;Marianne
:Pourquoi tu ne m'as rien dit ?
;Johan
:Mais on ne peut pas parler quand il n'y a pas de mot pour ça. Comment dire que c'est ennuyeux de faire l'amour. Comment dire que j'ai envie de te frapper quand je te vois assise, là, parfaite, au petit déjeuner, en train de mâchouiller tes œufs à la coque.//(Fatigué.)// Je n'ai rien à te reprocher, Marianne. Seulement, tout s'est cassé la gueule. Et personne ne sait pourquoi.
;Marianne
:j'ai dû mal m'y prendre...
;Johan
:Je t'en supplie, arrête ce rôle de victime. C'est trop facile. je suis un monstre et, toi, tu es forte, noble, généreuse, sublime... Tu ne t'y es pas mal prise et moi non plus. C'est comme ça, le hasard, une coïncidence cruelle. .. Finalement, on n'est pas différents des autres... Tout ça est logique, parfaitement logique. Quoi que l'on fasse, quoi que l'on dise, on souffre. Tout n 'est que blessure. Partout. Nous sommes morts par manque d'oxygène.
;Marianne
:Mais peut-être que tu te trompes... Tu vas changer d'avis et finalement, tu vas rester avec nous. ..
;Johan
:Non, c'est impossible.
;Marianne
:Et si.je te supplie ?
;Johan
:Je t'en prie, arrête. .. C'est inutile et c'est pénible.
;Marianne
:Au moins retarde ton départ, laisse-nous une chance. ..
;Johan
:Non !
;Marianne
:je suis sûre que l'on va trouver une solution. ..Je vais parler avec Paula... Essayons ensemble de surmonter cette crise... On ne va pas tout arrêter quand on commence à peine à être honnêtes... On ne peut pas démolir tout ce que l'on a construit. Tu ne peux pas m'imposer une situation aussi insupportable et humiliante. Donne-moi une petite chance...//(Ils restenl un moment silencieux.)// Je veux que tu me parles de Paula.
;Johan
:À quoi ça sert ?
;Marianne
:S'il te plaît ! Elle est blonde, brune ? Et ses yeux ?
;Johan
:Tu fais quoi, là ? Tu veux te torturer ? On peut peut-être s'épargner ça ?
;Marianne
: Elle est.jeune ? Elle a quel âge ?
;Johan
://(il hésite)// 23 ans. Elle n'a pas été très heureuse en amour. Deux aventures importantes, mais ça s'est mal fini... Pas mal de mecs depuis, .je crois. ..
;Marianne
:C'est triste. ..
;Johan
:Elle a une franchise qui m'emmerde. Elle n'arrête pas de parler de ses ex et de ses histoires de cul, alors je suis.jaloux... Je veux dire, rétrospectivement... Elle ne se fait aucune illusion sur notre histoire et elle dit que contre toi, elle n'a aucune chance.
;Marianne
:Au lit, ça se passe comment ?
;Johan
:Au début, l'horreur. Tu sais, j'ai perdu l'habitude... Enfin, avec d'autres, je veux dire... Je me sentais nul... Mais elle m'a dit qu'elle n'avait .jamais rencontré quelqu'un d'aussi gentil et doux. .. J'ai voulu la quitter, même si j'étais déjà amoureux, parce que sans sexe... Mais elle était dans une déprime totale, j'ai eu peur qu'elle fasse une conne rie. .. Et puis, il y a eu cette semaine où l'on est partis ensemble. ..
;Marianne
:Ah ! vous êtes partis tous les deux. ..
;Johan
:Oui, tu te souviens, ma conférence à Rome en avril...
;Marianne
:Ah ! oui... En avril...
;Johan
:Là, soudain, le déclic.
;Marianne
:Le déclic...
;Johan
:On s'est mis à faire l'amour.jour et nuit. Elle m'a dit que ça n'avait .jamais été aussi bien pour elle. Moi, je me sentais valorisé... Forcément. .. Je sais ce que tu penses... Après ce voyage à Rome, nous avons beaucoup fait l'amour toi et moi. ..
;Marianne
:ça, tu l'as dit à Paula ?
;Johan
:Non. Je n'ai pas osé.
://Un temps.//
;Marianne
:Tu as une photo d'elle ?
;Johan
:S'il te plaît, Marianne !
;Marianne
:Tu en as certainement. Je t'en prie, sois gentil.
;Johan
:Tu ne viendras pas te plaindre après.//(Johan fouille dans la poche intérieure de sa veste.)// C'est une photo d'elle en vacances au bord de la mer Morte. Je la trouve assez ressemblante.
;Marianne
:Elle est bien faite.//(Un temps.)// De très jolis seins ?
;Johan
:Oui, elle a de jolis seins.
;Marianne
:Elle se teint les cheveux ? On dirait, non ?
;Johan
:Je n'y ai jamais pensé, peut-être.
;Marianne
:J'aime bien son sourire. .-//(Johan lui reprend la photo des mains. //
://Soudain.)// Tout ce que.je te demande, c'est de retarder ton voyage.
;Johan
:Paula ne voudra jamais, et elle aura raison... J'ai pris ma décision.
;Marianne
://(un vague sourire)// Mon pauvre...
;Johan
:C'est bon, garde ta pitié, s'il te plaît... //(Un temps.)//Toute ma vie j*ai été tellement raisonnable et modéré. Mais.je ne sais pas, je ne sais plus rien... J'essaie d'être franc et ce n'est pas facile. Je sais exactement à quoi tu penses... Je m'en fous, tu m'entends ? Je m'en fous. J'ai l'intention de me comporter en salaud. ça me fera. du bien.
;Marianne
:Viens près de moi, viens là...j'ai envie que tu me fasses l'amour.
:Tu peux au moins faire ça.
://Elle l'embrasse, ils s'embrassent, ils se touchent, se caressent. .. Et puis il la repousse.//
;Johan
:Je ne crois pas que,je pourrais, non. Je vais préparer mes affaires et partir, c'est mieux.
://Elle s'approche de lui, l'enlace.//
;Marianne
:On va s'endormir, tu vas voir, on a tous les deux besoin de se calmer.
://Un temps. Elle lui donne plusieurs baisers. Ils se regardent avec tendresse et désespoir.//
;Johan
:J'ai honte.
;Marianne
:Oublie tout, pour le moment... Maintenant.il n'y a plus que toi et moi. On a ces quelques heures pour nous. Juste toi et moi.//(Un long temps. Il se libère d'elle. Ils demeurent face à face, figés, hagards, incertains. Il se penche Pour l'embrasser sur la bouche mais elle se détourne. Il a un petit rire.)// Tu ne peux quand même pas me laisser sans le plus petit espoir. Je suis certaine que n'importe quelle autre solution aurait été meilleure que celle-là.
;Johan
://(voix blanche)// Si ça se trouve, je serai rentré dans une semaine.
://Silence.//
;Marianne
:Et aux enfants, qu'est-ce que tu veux que.je leur dise ?
;Johan
:Dis ce que tu veux.
;Marianne
:Est-ce que.je dois leur dire que tu es tombé amoureux d'une autre femme et que tu nous as plaquées ?
;Johan
:C'est une excellente formulation. Qui, en plus, a l'avantage d'être vraie. De ce côté-là. je ne m'attends à aucune compréhension.
://ll sort. Marianne reste seule. Elle tourne en rond dans la pièce... avanl de se mettre à parler au téléphone.//
;Marianne
:Allô l... Je te réveille ?. .. Pardon... Comment ça va ?... Ici c'est couvert, il a plu un peu... Ah ! super... Non. .. Je voulais te parler de quelque chose... Non, je voulais seulement parler à quelqu'un... Parce que tu es mon amie... Tout ça est tellement irréel... Tu sais. je risque de craquer d'une seconde à l'autre, mais.je ne veux pas pleurer... Johan est tombé amoureux d'une autre femme... Elle s'appelle Paula et ils partent pour Rome demain... Tu ne veux pas l'appeler pour lui conseiller d'attendre un peu ?... Comment ?... Comment tu lui as déjà dit !... Ah t,je vois... Donc tu es au courant ? ... Depuis le début. et... et tu ne m'as rien dit, .. Mais. .. mais c'est dégueulasse. .. Comment tu as pu... Je n'arrive pas à le croire... Et toutes les fois où l'on s'est vues, tu savais et tu ne m'as rien dit... Ah ! mais putain quelle genre d'amie tu es. ,. Ah non ! Tu ne m'expliques rien, tu vas te faire foutre, oui... Et combien de personnes sont au courant, que je me prépare. .. Un certain nombre... Mais c'est un cauchemar !...
://Elle raccroche et hurle un cri qui ne sort pas.//
!
://Musique. //
://Noir.//
!!Trompe-oreilles
<<<
Quelques exemples cités dans :
https://fr.wikipedia.org/wiki/Trompe-oreilles
Certains sont déjà connus !
!!!!!Michèle
<<<
# Le mur murant Paris rend Paris murmurant .,,(Cité par Beaumarchais en 1785, au sujet du mur d'octroi des Fermiers généraux qui suscita l'indignation des Parisiens) .,,
# Si six cents sangsues sont sur son sein sans sucer son sang, ces six cents sangsues sont sans succès
# Il est honteux mais tentant de tenter de tâter à tâtons les tétés de tata quand tonton n'est pas là
# Le riz tenta le rat, et le rat tenté tâta le riz tentant
# Un rat passe, le gay part et Thor tue tout le monde
# - Y a pas d'hélice, hélas !<br>
# - C’est là qu'est l'os... ,,(La Grande Vadrouille, quand ils découvrent les planeurs dans le hangar),,
# Allez, va ! C’est ce qu’ils disent tous !,,(prononcer : alléva c’est c’qu’y disent tous) # Ressemble à du latin : « //Alevasesquidistus// » — (François Pérusse),,
# Sous un arbre mare y’ ya,
# La cane a bu, la pie n’osa.
# – Tes laitues naissent-elles, Estelle ?<br>– Oui, mes laitues naissent.<br>– Si tes laitues naissent, mes laitues naîtront.
# La pie niche haut.<br>L’oie niche bas.<br>Où l’hibou niche-t-il ?<br>L’hibou niche ni haut ni bas.<br>L'hibou niche pas.
# – Qu’a bu l’âne au lac ?<br>– L’âne au lac a bu l’eau.<br>– L’âne a bu l’eau.
# La cavale au Valach avala l’eau du lac, et l’eau du lac qu’avala la cavale à Valach, lava la cavale au Valach.
# Chat vit rôt.<br>Rôt tenta chat.<br>Chat mit patte à rôt.<br>Rôt grilla patte à chat. ,,(Signé Furax (Hymne des Babus), de Pierre Dac et Francis Blanche),,
# Latte ôtée, mur gâté, trou s’y fit, rat s’y mit, chat l’y vit, chat l’y prit !
# Tas de riz, tas de rats.<br>Tas de riz tentant, tas de rats tentés,<br>Tas de riz tentant tenta tas de rats tentés,<br>Tas de rats tentés tâta tas de riz tentant.
# – Le blé se moud-il, l’habit se coud-il ?<br>– Oui le blé se moud, l’habit se coud. ,,prononcé : « Leblésmouti ? Labiscouti ? Oui, leblésmou, labiscou. ,,»
# Ver n’a os,<br>rat a patte et os,
# pie a haut nid,<br>caille a bas nid[1].<br>Âne a gros os<br>Coq a p’tits os<br>Ver n’a pas d’os, don de li do
# Sol facile à cirer si la cire est dorée. ,,Prononcé comme une gamme : « sol fa si la si ré si la si ré do ré »,,
# Si Rémi l'a raide aussi, la femme irait dodo ,,« si ré mi la ré do si la fa mi ré do do »,,
# Un ver vert sur un verre vert, l’ami l’a mis là.
# Un papillon volage près d’une pie passa, mais la pie fut fort sage et n’happa pas l’appât. Quel bel appât que la pie n’happa pas !
# Petit pêcheur part pour Paris, pour pêcher petit poisson pourri.
# Au bout du pont, la cane y coue ,,[« couve » dans le Poitou],,, <br>la poule y pond.
# Mon père est maire de Mamère et mon frère est masseur. ,,On comprend : « Mon père est mère de ma mère et mon frère est ma sœur.»,,
# Il vit le lit vide et le devint ,,[c.-à-d. livide].,,
# ''Raymond Devos, //Ouï-dire//'' : (...) — L’ouïe de l’oie de Louis a ouï. ''''— Ah oui ? Et qu’a ouï l’ouïe de l’oie de Louis ? ''''— Elle a ouï ce que toute oie oit... ''''— Et qu’oit toute oie ? ''''— Toute oie oit, quand mon chien aboie, le soir au fond des bois, toute oie oit : ouah ! ouah !, qu’elle oit, l’oie ! (...)
# Si ton tonton tond ton tonton, ton tonton tondu sera.
# Ôte ta gaine Berthe, que je tâte. ,,prononcé "ôtagain'bert'queuchtat", cette phrase ressemble à de l'allemand.,,
# À l'étranger, j'ai mangé des mets locaux ,,(l'interlocuteur comprend "des mélocos" et demande ce dont il s'agit) - Gustave Parking,,
# Didon dîna, dit-on, du dos dodu d'un dodu dindon.
# Si six scies scient six saucisses, six cent six scies scient six cent six saucisses aussi.
# Ton thé t'a-t-il ôté ta toux? Oui, mon thé m'a ôté ma toux.
# — Mais pas du tout, dit le tatou, je tousse tant que l’on m’entend de Tahiti à Tombouctou.
# — Oui, mon thé m’a ôté ma toux. Si ton thé t’a ôté ta toux, mon thé m’ôtera ma toux !
# Ton thé t’a-t-il ôté ta toux, demanda le matou tout tatoué au toutou tout tondu.
# Dis, à m'aimer consens, va! ,,(Boby Lapointe),,
# Mat aima Tic. Hélas, Tic mourut. C'est ainsi que l'on peut dire : Mat aima Tic et l'aime en terre. ,,(Mathématiques élastique mourut - Mathématiques élémentaires.),,
# Félix son porc tua. Sel n'y mit, ver s'y mit : porc gâta.
# Que lit Lili sous ce lilas-là ? Lili lit l'Iliade.
# C'est assez, dit la baleine, je me cache à l'eau car j'ai le dos fin ,,(Cétacé, dit la baleine, je me cachalot car j'ai le dauphin).,,
# Natasha n'attacha pas son chat Pacha qui s'échappa, cela fâcha Natasha qui chassa Pacha
# Ces cyprès sont si loin que d'ici on ne sait si c'en sont.
# Mes mensonges c'est vérité, sévérité même en songe ,,(Jean Cocteau),,
# Mes mémés m'aimaient mais pas papa ! (mé mé mé mé mé mé pa pa pa)
# Deux dodos de dos à dos de dinos ados.
# T'as tiqué quand Katie t'a quitté. ,,(adapté de la chanson Ta Katie t’a quitté de Boby Lapointe),,
# La vie c'est apprécier la vue, après scier la branche. ,,(Tempête, Nekfeu),,
Quels hommes vous êtes,
oui, toi aussi !
Vous inventez la théorie des quanta et vous vous laissez commander par des brutes qui vous donnent le monde à conquérir, mais qui vous retirent le droit de choisir votre femme.
Respiration artificielle et chaque coup fait mouche !
Vous êtes des monstres ou des larbins de monstres.
Oui, je ne suis pas raisonnable, mais dans un monde pareil à quoi sert la raison ?
Tu es assis là et tu vois ta femme faire ses bagages et tu ne dis rien.
Les murs ont des oreilles, n’est-ce pas ?
Mais rien, vous ne dites rien !
Les uns écoutent, et les autres se taisent.
Moi aussi, je devrais me taire.
Si je t’aimais, je me tairais.
Je t’aime vraiment.
Donne-moi ce linge là-bas.
C’est de la lingerie de luxe.
J’en aurai besoin.
J’ai trente-six ans, ce n’est pas trop vieux, mais je ne peux plus me permettre beaucoup d’expériences.
Dans le prochain pays où j’irai, cela ne devra plus se passer ainsi.
Le prochain homme que j’aurai devra avoir le droit de me garder.
Et ne dis pas que tu m’enverras de l’argent, tu sais bien que tu ne le pourras pas.
Et ne fais pas non plus comme si c’était seulement pour trois semaines.
Les choses, ici, dureront plus de trois semaines.
Tu le sais et je le sais aussi.
Alors, ne dis pas : en somme, c’est l’affaire de quelques semaines, en me donnant le manteau de fourrure dont je n’aurai besoin que l’autre hiver.
Et ne disons pas que c’est un malheur.
Disons que c’est une honte.
Oh, Fritz !
"""
Donne-moi ce linge là-bas.
C’est de la lingerie de luxe.
J’en aurai besoin.
J’ai trente-six ans, ce n’est pas trop vieux, mais je ne peux plus me permettre beaucoup d’expériences.
Dans le prochain pays où j’irai, cela ne devra plus se passer ainsi.
Le prochain homme que j’aurai devra avoir le droit de me garder.
Et ne dis pas que tu m’enverras de l’argent, tu sais bien que tu ne le pourras pas.
Et ne fais pas non plus comme si c’était seulement pour trois semaines.
Les choses, ici, dureront plus de trois semaines.
Tu le sais et je le sais aussi.
Alors, ne dis pas : en somme, c’est l’affaire de quelques semaines, en me donnant le manteau de fourrure dont je n’aurai besoin que l’autre hiver.
Et ne disons pas que c’est un malheur.
Disons que c’est une honte.
Oh, Fritz !
"""
Hier, l'atelier a été sur le plan technique, correct, sans problème notable.
!!''BUTS''
Par contre, si on considère notre fonctionnement, il y a des améliorations à apporter pour que chacun sorte satisfait, sans avoir le sentiment d'avoir perdu son temps :
:→ que personne ne reste durablement inactif
:→ que chaque //travail// débouche sur un nouveau progrès : un __acquis__ pour ceux qui sont en scène, un __apport__ pour ceux qui sont spectateurs.
:→ que notre collaboration soit générale et constante: __orientations__ en début et en fin de séquence, __acceptation__ des erreurs, __encouragement __des essais, __indications__ courtes, qui aident les comédiens.
:→ que les interruptions soient mieux gérées, tant pour ceux qui sont en train de travailler que pour ceux qui ressentent une urgence à intervenir.
::Je suis prêt à ajouter d'autres points à ce début de liste !
```
Il faut faire évoluer notre manière de travailler pour être à la fois impliqués, motivés, libres, confiants, créatifs, et en conséquence, performants.
```
!!''MODES DISPONIBLES''
Les modes de travail à notre disposition sont :
*''L'appropriation personnelle du texte'' (compréhension, enjeux, caractères, mobiles, sentiments, jeux ,,`Seuls (lectures, prises de notes)`,,<br>
*''L'appropriation collective du texte'' pour partager nos compréhensions, harmoniser nos approches, choisir un parti de jeu, mettre à jour nos priorités de travail. ,,`Lectures et décisions concertées en Atelier`,,<br>
*''L'apprentissage des répliques'' ,,`seuls ou en r-v avec partenaire(s)`,,<br>
*''Les italiennes'' : automatisme à acquérir (vélocité, tac au tac), détection des ruptures et interactions sur lesquelles revenir plus tard. ,,`r-v bilatéraux (ou avec moi si souhaité)`,,<br>
*''Les filages ''de scènes <br>à limiter drastiquement (consommation de beaucoup de temps pour peu de personnes ... et peu de progrès !)
**► pour ''valider l'état de représentation publique'', et définir (s'il y a lieu) ce qui reste à parfaire. ,,`En Atelier (jeu, puis consultation de tous)`,,<br>
**''→ Possible'' pour un objectif de travail particulier ,,`r-v hors atelier entre les comédiens et moi, spectateurs acceptés (publié dans l'agenda des Septuas)`,,<br>
* ''Les manèges '': multiplier les recherches d'interprétations d'un même fragment court, en impliquant la créativité de tous les présents. ,,`En atelier`,,<br>
* ''Les impros'' : transposer la situation de la scène à une situation analogue, vécue par tous, pour activer une fraîcheur et une liberté de mouvements (texte clair ou gromelots) cf la méthode des ''SI...'' de Stanislavski. ,,`En Atelier`,,<br>
* ''Exercices de style'' : pour mieux maîtriser une technique de base (articulation, respiration, expression, gestuelle, pose de la voix, etc.) ,,`En Ateliers`,,<br>
!!''MON CHOIX POUR L'ORGANISATION DU TRAVAIL EN ATELIERS''
*__Limiter les filages__ <br>(voir supra)<br>Favoriser la pratique ''[[Les mains en l'air!|http://septuas.tiddlyspot.com/#J'arr%C3%AAte]]''<br>
*__Multiplier le travail interactif__ :
**Manèges sur des fragments courts : le but n'est pas de faire "//bien//" ni "//mieux//" que d'autres, mais d'expérimenter un apport différent, une idée supplémentaire.
**Précédés chacun par l'italienne faite par les titulaires du fragment, et leur présentation des enjeux du fragment et ses difficultés possibles.
**Suivis de la formalisation dans les didascalies à rajouter ou préciser du choix d'interprétation privilégié,
**Terminés par sa démonstration par les titulaires.<br>
*''Exercices quand le besoin s'en manifeste'',<br>pour améliorer une technique, ou ressourcer la créativité (''Si...'')
| ,,Suggestion pour Jitsi ►<br>chaque fois que vous êtes en scène avec un partenaire, regardez votre partenaire affiché en plein écran pour rester dans la situation et "//à l'intérieur//" du personnage que vous jouez.,, |h
{{9 juin-Réussir}}
!!!!''Tous impliqués, tous responsabilisés !''
À partir de maintenant j'attends tous vos retours et vos avalanches de propositions, manèges, rendez-vous d’ici dimanche !
,,_063,,
<<<
!''POUR RÉUSSIR''
''Chacun doit apporter sa pierre à la construction:''
# En ''ayant appris ''chaque fois une nouvelle tranche de son texte
# En prenant vos ''rendez-vous'' bilatéraux pour italiennes
# .. ou aussi avec moi pour ''coaching''
# en m'indiquant __avant la séance__ ''vos souhaits'' de séquences à travailler (si différentes de ce qu'on aurait déjà convenu).
# en me proposant __avant la séance__ ''au moins deux fragments'' (__5 à 10 lignes__) intéressants à expérimenter ''en manège.''
# en m'indiquant __avant la séance__ toute ''envie ''pour cette séance.
# Je m'appuierai sur les éléments reçus pour publier un peu avant la séance l'__ordre du jour__ (horaires approximatifs) et conduire la séance.
<<<
!!Été 2020
!!!!Absences ÉTÉ
,,Je reporterai au fur et à mesure les prévisions d'absences signalées dans l'agenda : onglet "//''Indisponibilités''//" des Cahiers.,,
| Qui | Absences prévues |h
|BRIGITTE |absente en Juillet ; absente en Août du 1er au 15 et du 24 au 28|
|!CHANTAL |!Je serai absente du 12 au 31 août. |
|CLAUDINE|Je pense être absente du 26 juillet jusqu’à fin août.|
|DENISE|Il est très vraisemblable que je sois absente du 3 juillet au 3 septembre.|
|ÉVELINE|Présente tout l'été.|
|LIVIA |Début juillet au début septembre sans connaître encore les dates précises.|
|MICHÈLE|Présente tout l'été.|
|MIREILLE|Je pourrais être absente les 2 dernières semaines d’Aout.|
|NICOLE L|Je serai absente du 13 juillet au &( septembre //''(??)''//|
|NICOLE V|dernière semaine de juin.|
|NOELLA|je serai à Paris cet été.|
|ODILE|probablement une semaine courant septembre.|
|YVONNE|Présente tout l'été.|
|ISAAC|En retrait à cause du Covid.|
|LEE|Je suis normalement toujours à Paris sous réserve d'un court trajet bientôt sur NYC|
|JACQUES|Présent tout l'été.|
|GÉRARD||
.
''► [[Vidéo du mardi 23 juin]]''
{{► Lundi 29 juin 10h00 ♦ Atelier à distance ◄||prog}}
{{Lundi 29 juin}}
:,,''"Salle proyal" : [[https://meet.jit.si/proyal]]'',,
:,,Participation audio : Tél : ''01.84.88.64.78''<br>puis code : ''289 663 522#''
,,
{{Signalez-moi vos envies ou suggestions (forum, mail, sms) ||_hr}}
<iframe src="https://calendar.google.com/calendar/embed?src=c2eb8s66q4j0c0ftpigsprcr2s%40group.calendar.google.com&ctz=Europe%2FParis" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
;AGNESE
:Mais vous ne disiez pas qu'il est tout à fait repentant ?
;BARBARA.
:Repentant ? Vous le verriez, vraiment il fait pitié, je vous jure.
;AGNESE.
:Je vais vous dire, siora Barbara ; d'abord, je vous remercie pour l'affection que vous me témoignez et pour la confiance que vous avez eue en moi ; mais une femme comme vous n'aurait pas pu agir autrement. Je vous dirai ensuite ceci : moi aussi, je suis veuve, et je sais comment va le monde ; les jeunes gens, il y en a peu qui ne font pas de bêtises au jour d'aujourd'hui, et le proverbe dit: << //Qui ne les fait dans son jeune âge , les fera plus tard// >>. Au bout du compte, une fois n'est pas coutume.
:Si vous me garantissez qu'avec cette fille, il ne s'est rien passé, que Sior Nicoletto l'a vraiment quittée et qu'il est vraiment repentant, alors, pardonnez-lui, parce que moi aussi je lui pardonne.
;BARBARA.
:Ah ! sior'Agnese, là vous rendez vraiment la vie à une pauvre mère, et vous sauvez du gouffre une famille dont la perte était certaine.
:Moi, je ne sais pas comment vous remercier, mais le bien qu'ainsi vous me faites, à moi, soyez sûre que le ciel, à vous, le rendra au centuple.
;AGNESE.
:Appelez-le donc, Sior Nicoletto.
!!Alexandrins
"""
Alexandrins
“ Tout m’afflige et me nuit et conspire à me nuire”
Phèdre, Racine
“Et le désir s'accroît quand l'effet se recule”
Polyeucte martyr, Corneille
"A force de sagesse, on peut être blâmable."
Le misanthrope, Molière
"Noble et brillant auteur d’une triste famille<br>Toi dont ma mère osait se vanter d’être fille<br>Qui peut-être rougis du trouble où tu me vois<br>Soleil, je te viens voir pour la dernière fois !"
Phèdre, Racine
"On ne m’abuse point par des promesses vaines<br>Tant qu’un reste de sang coulera dans mes veines"
Iphigénie, Racine
"Seigneur ma folle ardeur malgré moi se déclare"
Phèdre, Racine
"Je n'écoute plus rien, et pour jamais adieu.<br>Pour jamais! Ah! Seigneur, songez-vous en vous-même<br>Combien ce mot cruel est affreux quand on aime ?"
Bérénice, Racine
"Objet infortuné des vengeances célestes, <br>Je m’abhorre encor plus que tu ne me détestes."
Phèdre, Racine
"Je le vis, je rougis, je pâlis à sa vue<br>Un trouble s’éleva dans mon âme éperdue<br>Mes yeux ne voyaient plus, je ne pouvais parler<br>Je sentis tout mon corps et transir et brûler"
Phèdre, Racine
"Pendant que d'une main il s'attache à la vôtre<br>Ne voit-il pas la mort qui l'épouse de l'autre"
Hernani, Victor Hugo
"Juste ciel ! tout mon sang dans mes veines se glace !<br>Ô désespoir ! ô crime ! ô déplorable race !"
Phèdre, Racine
"Le seul bruit de mon nom renverse les murailles,<br>Défait les escadrons, et gagne les batailles."
L'illusion comique, Corneille
“Un véritable roi n’est ni mari ni père.”
Nicomède, Corneille
"Elle flotte, elle hésite : en un mot, elle est femme.”
Athalie, Racine
"Ô rage ! ô désespoir ! ô viellesse ennemie !<br>N'ai-je donc tant vécu que pour cette infamie ?"
Le Cid, Corneille
"""
{{Prologue Antigone Ismène}}
;ANTIGONE
:Ne pleure plus, s'il te plaît, nounou. //(Elle l'embrasse)//
:Allons, ma vieille bonne pomme rouge.
:Tu sais quand je te frottais pour que tu brilles? Ma vieille pomme toute ridée.
:Ne laisse pas couler tes larmes dans toutes les petites rigoles, pour des bêtises comme cela
:pour rien.
:Je suis pure, je n'ai pas dautre amoureux qu'Hémon, mon fiancé, je te le jure.
:Je peux même te jurer, si tu veux, que je n'aurai jamais d'autre amoureux...
:Garde tes larmes, garde tes larmes; tu en auras peut-être besoin encore, nounou.
:Quand tu pleures comme cela, je redeviens petite... Et il ne faut pas que je sois petite ce matin.
://Entre Ismène//
;ISMENE
:Tu es déjà levée? Je viens de ta chambre.
;ANTIGONE
:Oui,
:je suis déjà levée.
;LA NOURRICE
:Toutes les deux alors!…
:Toutes les deux vous allez devenir folles et vous lever avant les servantes?
:Vous croyez que c’est bon d’être debout le matin à jeun, que c’est convenable pour des princesses?
:Vous nêtes seulement pas couvertes.
:Vous allez voir que vous allez encore me prendre mal.
;ANTIGONE
:Laisse-nous, nourrice.
:Il ne fait pas froid, je tassure;
:c'est déjà l'été.
:Va nous faire du café.
://(Elle sest assise, soudain fatiguée)//
:Je voudrais bien un peu de café, sil te plaît, nounou.
:Cela me ferait du bien.
;LA NOURRICE
:Ma colombe!
:La tête lui tourne dêtre sans rien et je suis là comme une idiote au lieu de lui donner quelque chose de chaud.
://Elle sort vite//
;ISMENE
:Tu es malade?
;ANTIGONE
:Ce nest rien. Un peu de fatigue.
://(Elle sourit)//
:C'est parce que je me suis levée tôt.
;ISMENE
:Moi non plus,
:je nai pas dormi.
;ANTIGONE, //sourit encore//
:Il faut que tu dormes.
:Tu serais moins belle demain.
;ISMENE
:Ne te moque pas.
;ANTIGONE
:Je ne me moque pas.
:Cela me rassure ce matin, que tu sois belle.
:Quand j'étais petite, j'étais si malheureuse,
:tu te souviens?
:Je te barbouillais de terre,
:je te mettais des vers dans le cou.
:Une fois,
:je tai attachée à un arbre
:et je tai coupé tes cheveux,
:tes beaux cheveux…
://(Elle caresse les cheveux d'Ismène)//
:Comme cela doit être facile de ne pas penser de bêtises avec toutes ces belles mèches lisses
:et bien ordonnées
:autour de la tête!
;ISMÈNE, //soudain//
:Pourquoi parles-tu d'autre chose?
;ANTIGONE, //doucement, sans cesser de lui caresser les cheveux//
:Je ne parle pas d'autre chose…
;ISMENE
:Tu sais,
:j’ai bien pensé, Antigone.
;ANTIGONE
:Oui.
;ISMENE
:Jai bien pensé
:toute la nuit.
:Tu es folle.
;ANTIGONE
:Oui.
;ISMENE
:Nous ne pouvons pas.
;ANTIGONE, //après un silence, de sa petite voix//
:Pourquoi?
;ISMENE
:Il nous ferait mourir.
;ANTIGONE
:Bien sûr.
:A chacun son rôle.
:Lui, il doit nous faire mourir,
:et nous,
:nous devons aller enterrer notre frère.
:C’est comme ça que ça été distribué.
:Qu’est-ce que tu veux que nous y fassions?
;ISMENE
:Je ne veux pas mourir.
;ANTIGONE, doucement
:Moi aussi
:j'aurais bien voulu ne pas mourir.
;ISMENE
:Ecoute,
:j’ai bien réfléchi toute la nuit.
:Je suis l'aînée. Je réfléchis plus que toi.
:Toi, c’est ce qui te passe par la tête tout de suite,
:et tant pis si c’est une bêtise.
:Moi,
:je suis plus pondérée. Je réfléchis.
;ANTIGONE
:Il y a des fois où il ne faut pas trop réfléchir.
;ISMENE :
:Si, Antigone.
:Dabord c’est horrible, bien sûr,
::et j’ai pitié moi aussi de mon frère,
:mais je comprends un peu notre oncle.
;ANTIGONE
:Moi je ne veux pas comprendre __un peu__.
;ISMENE
:Il est le roi, il faut qu’il donne l'exemple.
;ANTIGONE
:Moi, je ne suis pas le roi.
:Il ne faut pas que je donne l'exemple, moi…
:«Ce qui lui passe par la tête»,
::la petite Antigone,
::la sale bête,
::l'entêtée,
::la mauvaise,
:et puis
:on la met dans un coin ou dans un trou.
::Et c’est bien fait pour elle.
::Elle n'avait quà ne pas désobéir.
;ISMENE
:Allez! Allez!…
:Tes sourcis joints,
:ton regard droit devant toi
:et te voilà lancée sans écouter personne.
:Ecoute-moi.
:J'ai raison plus souvent que toi.
;ANTIGONE
:Je ne veux pas avoir raison.
;ISMENE
:Essaie de comprendre au moins!
;ANTIGONE
:Comprendre…
:Vous navez que ce mot-là dans la bouche,
:tous,
:depuis que je suis toute petite.
:Il fallait comprendre
::qu'on ne peut pas toucher à leau,
::::à la belle et fuyante eau froide
:::parce que cela mouille les dalles,
::à la terre
:::parce que cela tache les robes.
:Il fallait comprendre qu'on ne doit pas
::manger
:::tout à la fois,
::donner tout ce qu'on a dans ses poches
:::au mendiant quon rencontre,
::courir,
:::courir dans le vent jusquà ce quon tombe par terre et boire quand on a chaud
:::et se baigner
::::quand il est trop tôt
::::ou trop tard,
::mais pas juste quand on en a envie!
:Comprendre.
:Toujours comprendre.
:Moi,
:je ne veux pas comprendre.
::Je comprendrai quand je serai vieille. //(Elle achève doucement.)//
:::Si je deviens vieille.
:Pas maintenant.
;ISMENE
:Il est plus fort que nous, Antigone.
:Il est le roi.
:Et ils pensent tous comme lui dans la ville.
:Ils sont des milliers et des milliers autour de nous,
::grouillant dans toutes les rues de Thèbes.
;ANTIGONE
:Je ne técoute pas.
;ISMENE
:Ils nous hueront.
:Ils nous prendront avec leurs mille bras,
::leurs mille visages et leur unique regard.
:Ils nous cracheront à la figure.
:Et il faudra avancer dans leur haine sur la charrette
::avec leur odeur
::et leurs rires :
:jusquau supplice.
:Et là,
::il y aura les gardes avec leurs têtes dimbéciles,
::congestionnés sur leurs cols raides,
::leurs grosses mains lavées,
::leur regard de bœuf
:::qu’on sent qu’on pourra toujours crier,
:::essayer de leur faire comprendre,
::qu'ils vont comme des nègres
::et qu'ils feront tout ce qu’on leur a dit
::scrupuleusement,
::sans savoir si c’est bien ou mal…
:Et souffrir?
::Il faudra souffrir,
::sentir que la douleur monte,
:qu'elle est arrivée au point où l'on ne peut plus la supporter;
:qu’il faudrait qu'elle sarrête,
::mais qu'elle continue pourtant
::et monte encore,
::comme une voix aiguë…
:Oh! je ne peux pas,
:je ne peux pas…
;ANTIGONE
:Comme tu as bien tout pensé!
;ISMENE
:Toute la nuit.
:Pas toi?
;ANTIGONE
:Si, bien sûr.
;ISMÈNE
:Moi, tu sais, je ne suis pas très courageuse.
;ANTIGONE, //doucement//
:Moi non plus.
:Mais quest-ce que cela fait?
: //Il y a un silence, Ismène demande soudain: //
;ISMENE
:Tu n’as donc pas envie de vivre, toi?
;ANTIGONE, //murmure//
:Pas envie de vivre…
://(Et plus doucement encore, si c’est possible.)//
:Qui
::se levait la première, le matin, rien que pour sentir lair froid sur sa peau nue?
:Qui
::se couchait la dernière, seulement quand elle nen pouvait plus de fatigue,
::pour vivre encore un peu plus la nuit?
:Qui
::pleurait déjà toute petite, en pensant quil y avait tant de petites bêtes,
::tant de brins dherbe dans le pré
::et quon ne pouvait pas tous les prendre?
;ISMÈNE, //a un élan soudain vers elle//
:Ma petite sœur…
;ANTIGONE, //se redresse et crie.//
:Ah, non! Laisse-moi!
:Ne me caresse pas!
:Ne nous mettons pas à pleurnicher ensemble, maintenant.
:Tu as bien réfléchi, tu dis?
:Tu penses
::que toute la ville hurlante contre toi,
:tu penses
::que la douleur et la peur de mourir
:c’est assez?
;ISMÈNE, //baisse la tête//.
:Oui
;ANTIGONE
:Sers-toi de ces prétextes.
;ISMÈNE, //se jette contre elle.//
:Antigone!
:Je ten supplie!
:C’est bon pour les hommes de croire aux idées et de mourir pour elles.
:Toi, tu es une fille.
;ANTIGONE, //les dents serrées//
:Une fille, oui.
:Ai-je assez pleuré d’être une fille!
;ISMENE
:Ton bonheur est là
::devant toi
::et tu n’as quà le prendre.
:Tu es fiancée,
:tu es jeune,
:tu es belle…
;ANTIGONE, //sourdement//
:Non,
:je ne suis __pas__ belle.
;ISMENE
:Pas belle
::comme nous,
:mais autrement.
:Tu sais bien que c’est sur toi que se retournent les petits voyous dans la rue;
:que c’est toi que les petites filles regardent passer,
::soudain muettes,
::sans pouvoir te quitter des yeux jusquà ce que tu aies tourné le coin.
;ANTIGONE,//a un imperceptible sourire//.
:Des "voyous", des "petites filles"…
;ISMÈNE, //après un temps.//
:Et Hémon, Antigone?
;ANTIGONE, //fermée//
:Je parlerai tout à l'heure à Hémon:
:Hémon sera tout à lheure une affaire réglée.
;ISMENE
:Tu es folle.
;ANTIGONE, //sourit//
:Tu m'as toujours dit que jétais folle,
:pour tout,
:depuis toujours.
:Va te recoucher, Ismène…
:Il fait jour maintenant, tu vois,
:et, de toute façon, je ne pourrai rien faire.
:Mon frère mort est maintenant entouré d'une garde
::exactement comme s'il avait réussi à se faire roi.
:Va te recoucher.
:Tu es toute pâle de fatigue.
;ISMENE
:Et toi?
;ANTIGONE
:Je nai pas envie de dormir…
:Mais je te promets que je ne bougerai pas d'ici avant ton réveil.
:Nourrice va m'apporter à manger.
:Va dormir encore.
:Le soleil se lève seulement.
:Tu as les yeux tout petits de sommeil.
:Va…
;ISMENE
:Je te convaincrai, n’est-ce pas?
:Je te convaincrai?
:Tu me laisseras te parler encore?
;ANTIGONE, //un peu lasse. //
:Je te laisserai me parler, oui.
:Je vous laisserai tous me parler.
:Va dormir maintenant,
:je ten prie.
:Tu serais moins belle demain.
://(Elle la regarde sortir avec un petit sourire triste, puis elle tombe soudain lasse sur une chaise.)//
:Pauvre Ismène!
;LA NOURRICE //entre//.
:Tiens,
:te voilà un bon café et des tartines, mon pigeon.
:Mange.
;ANTIGONE
:Je n'ai pas très faim, nourrice.
;LA NOURRICE
:Je te les ai grillées moi-même
:et beurrées comme tu les aimes.
;ANTIGONE
:Tu es gentille, nounou.
:Je vais seulement boire un peu.
;LA NOURRICE
:Où as-tu mal?
;ANTIGONE
:Nulle part, nounou.
:Mais fais-moi tout de même bien chaud
::comme lorsque jétais malade…
::Nounou plus forte que la fièvre,
::nounou plus forte que le cauchemar,
::plus forte que l'ombre de l'armoire qui ricane et se transforme d'heure en heure sur le mur,
::plus forte que les mille insectes du silence qui rongent quelque chose, quelque part dans la nuit,
::plus forte que la nuit elle-même avec son hululement de folle qu’on nentend pas;
:nounou plus forte que la mort.
:Donne-moi ta main
::comme lorsque tu restais à côté de mon lit.
;LA NOURRICE
:Qu’est-ce que tu as, ma petite colombe?
;ANTIGONE
:Rien, nounou.
:Je suis seulement encore un peu petite pour tout cela.
:Mais
::il n’y a que toi qui dois le savoir.
La façon de former les comédiens ne fait pas l'unanimité, mais nombre des comédiens qui jouent actuellement sur nos scènes ont été exposés à la méthode du grand homme de théâtre russe Constantin Stanislavski (1863-1938) et à ses idées sur la façon de construire un personnage. Bien des programmes de formation de comédiens reposent encore sur les théories de base de Stanislavski. En voici un aperçu:
;Les circonstances objectives
:-dans un texte dramatique, tout ne se prête pas à l'interprétation. Certains éléments sont incontournables comme l'intrigue, la période historique, le caractère fondamental des personnages et leur condition sociale.
;Le « si » magique
:-un moyen pour le comédien de stimuler son imagination en se demandant : « Qu'est-ce que je ferais si j'étais réellement ce personnage et que je vivais cette situation?»
;La motivation
:-les motifs qui sous-tendent le comportement du personnage.
;Le sous-texte
:-le sens profond des répliques en ce qu'elles traduisent la vie intérieure du personnage.
;L'objectif
:-le but vers lequel tend le personnage pendant la scène, le résultat précis que le personnage voudrait obtenir.
;L'obstacle
:-ce qui empêche le personnage de réaliser son objectif.
;La concentration
:-la capacité d'un comédien de centrer toute son attention sur ce qu'il fait.
<<<
,,''Lee'' signale ce matin [[l'interview de Peter Brook par Patricia Martin|https://www.franceinter.fr/emissions/itw-societe-civile]].
Voici les phrases que j'ai cueillies au vol:,,
<<<
---
Être en contact : réussir à écouter aussi bien que le chat !
---
C'est ce qui se passe au moment même qui compte: la qualité de l'instant, de la forme, du résultat, dépend de la qualité de l'écoute.
---
L'écoute de ses partenaires apporte un résultat d'une bien plus grande finesse que que de rester prisonnier de sa technique, de son ego, de sa tentative de jouer bien.
---
L'unique objectif est de partager.
---
Développer avec plaisir et rigueur l'écoute est beaucoup plus important que de se soumettre au canons de telles ou telles règles apprises.
---
Le temps tourne sans arrêt, et on n'est jamais face au même présent la fois d'après. Pour cette raison si on essaie de refaire exactement ce qui a marché la fois précédente et a créé des applaudissements, on est foutu. Il faut à chaque fois que ce soit une re-création, avec toute la demande que cela implique. C'est une obligation d'improvisation continuelle.
---
On est là pour dire merci aux nouvelles difficultés. Elles sont un nouveau défi. __Hier__ pouvait être très réussi, mais __aujourd'hui__ restera toujours un défi.
---
''Le silence :'' il n'y a rien d'aussi vivant que le silence.
---
Le silence rend sensible à la plus infime vibration.
---
''Toucher :'' un de ces mots essentiels qu'aucun dictionnaire ne saura jamais définir, mais qui nous remplit de gratitude chaque fois qu'on le ressent.
---
→ [[La distribution par scènes|Grille des présences en scène]].
|>| 1 | //`2`// |h
|//J'aimerais// | //commencer par apprendre cette scène// | //`pour donner la réplique`// |h
| !Brigitte|[[La Bonne Mère II,14 - Lunardo et Giacomina.]]|''//`Jacques`//'' |
| !Chantal|[[La Bonne Mère I,8 BARBARA puis AGNESE]] |''//`Michèle`//'' |
| !Jacques|[[La Bonne Mère I,4 - Nicoletto et Margarita.]] |''//`Nadine`//'' |
| !Mireille|[[La Bonne Mère I,9 - LODOVICA et DANIELA.]]|''//`Claudine`//'' |
''► Lundi 6 avril'' chacun aura commencé à apprendre une scène.
Que ce soit l'occasion de prendre des rendez-vous entre vous !
!!Aragon et Castille
!!!!Boby Lapointe
:Au pays da-ga d'Aragon
:Il y avait tu gud'une fill'
:Qui aimait les glac's au citron
::Et vanille
:
:Au pays de-gue de Castille
:Il y avait te-gue d'un garçon
:Qui vendait des glaces vanill'
::Et citron
:
:Moi j'aime mieux les glac's au chocolat
::Poil au bras
:Mais chez mon pâtissier il n'y en a plus
::C'est vendu
:C'est pourquoi je n'en ai pas pris
::Tant pis pour lui
:Et j'ai mangé pour tout dessert
::Du camembert
:Le camembert c'est bon quand c'est bien fait
::Viv' l'amour
:A ce propos rev'nons à nos moutons
:
:Vendre des glac's c'est un très bon métier
::Poil aux pieds
:C'est beaucoup mieux que marchand de mouron
::Patapon
:Marchant d'mourron c'est pas marrant
:J'ai un parent
:Qui en vendait
::pour les oiseaux
:Mais les oiseaux
:N'en achetaient pas, ils préféraient l'crottin
::De mouton
:A ce propos rev'nons à nos agneaux
:
:Au pays da-ga d'Aragon
:Il y avait tu gud'une fill'
:Qui aimait les glac's au citron
::Et vanille
;
:Au pays de-gue de Castille
:Il y avait te-gue d'un garçon
:Qui vendait des glaces vanill'
::Et citron
:Mais la Castill' ça n'est pas l'Aragon
::Ah ! mais non
:Et l'Aragon ça n'est pas la Castille
::Et la fill'
:S'est passée de glac's au citron
::Avec vanille
:Et le garçon n'a rien vendu
::Tout a fondu
:Dans un commerc' c'est moch' quand le fond
::fond
::Poil au pieds
:A propos d'pieds, chantons jusqu'à demain
;
:Au pays da-ga d'Aragon
:Il y avait tu gud'une fill'
:Qui aimait les glac's au citron
::Et vanille
:Au pays de-gue de Castille
:Il y avait te-gue d'un garçon
:Qui vendait des glaces vanill'
::Et citron
;
[[Nos priorités de progrès]]
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!<center>
<$list filter="[[Le Bourgeois Gentilhomme : la leçon d’orthographe]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/> 14h30
</center>
{{Jitsi}}
;1. Échanges sur l'art du comédien :
En visionnant des fragments de ces deux mises en scène du dialogue Arsinoé-Célimène, nous réagirons et commenterons le jeu des comédiennes :
* Une interprétation contemporaine : https://youtu.be/81jFR_v2GGw?t=12
* Une interprétation classique : https://www.dailymotion.com/video/x2yvri2
;2. Manèges :
Je propose les quatre manèges ci-après (nous en ferons tout ou partie).
Celles qui ont la motivation et le temps (et savent faire un copier/coller), je vous invite à découper (retours chariot) le(s) texte(s) que vous avez envie de préparer en unité de souffle :
:: → lignes sans reprises de respiration
:: → lignes vides si vous prévoyez une pause
Ensuite, si vous pensez non pas à vous qui devez lire le texte, mais au personnage qui va prononcer les paroles :
* essayez d'imaginer (créativité !) l'impulsion qui le poussent à dire les mots de chacune de vos lignes,
* et déduisez-en, les inflexions - subtiles ou marquées - de voix, de rythme ou de physionomie (ce qui est visible sous Jitsi) - qui dénotent pour le spectateur, selon vous, son sentiment à l'instant.
//Les textes proposés en manège (cliquez pour avoir l'extrait) ://
<<list-links filter:"[regexp:manege[20/11/20]]">>
J.
* [[Site Web de Duo|https://duo.google.com/]]
* [[La collection desateliers à distance enregistrés|https://photos.app.goo.gl/a8ovboEg2oDn3HtJA]]
!!ATELIER DE MARDI 21 AVRIL
:Emplacement approximatif des scènes dans ''[[la captation de l'atelier Duo|https://photos.app.goo.gl/1CYUqcWfiverd1V78]]''
---
I,1 - BARBARA et GIACOMINA
2'08
---
I,2 - NICOLETTO et BARBARA.
5'13
---
I,3 - MARGARITA et les mêmes.
7'42
---
I,4 - Nicoletto et Margarita.
11'14
---
I,8 BARBARA puis AGNESE
19'31
---
I,9 - LODOVICA et DANIELA.
37'46
---
I,10 Nicoletto et les mêmes.
45'02
---
II,1 - AGNESE BARBARA GLACOMINA
52'58
---
II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.
58'46
---
II,7 - Nicoletto et les mêmes.
1:13'00
---
II,11 - Lunardo et les mêmes.
1:16'41
---
II,12 - Barbara et Lunardo.
1:19'51
1:21'08
---
II,14 - Lunardo et Giacomina.
1:22'18
---
II,15 - Margarita et les mêmes.
1:24'40"
---
II,16 - Lunardo et Margarita.
1:25'10"
---
II,17 - Barbara et les mêmes.
1:26'32" et 1:48'00"
manège 1 : 1:35'56" - manège 2 : 1:41'29"
---
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!!!Podcasts de France.tv
;`↑↑↑↑.`[[Un Fil à la patte|https://www.france.tv/spectacles-et-culture/theatre-et-danse/1367173-un-fil-a-la-patte.html]]
:avec : Hervé Pierre, Florence Viala, Guillaume Gallienne, Dominique Constanza, Georgia Scalliet, Thierry Hancisse, Claude Mathieu, Christian Hecq
:^^jusqu'au 19.04.20^^
;`↓↓↓↓.` [[L'Avare|https://www.france.tv/spectacles-et-culture/theatre-et-danse/1364643-l-avare.html]]
:avec : Denis Podalydès, Benjamin Jungers, Suliane Brahim, Stéphane Varupenne, Marie-Sophie Ferdane, Serge Bagdassarian, Dominique Constanza, Christian Blanc
:^^jusqu'au 06.07.20^^
;[[L'hôtel du Libre-échange|https://www.france.tv/france-5/passage-des-arts/897911-l-hotel-du-libre-echange.html]]
:avec : Anne Kessler, Bruno Raffaelli, Alain Lenglet, Florence Viala, Jérôme Pouly, Michel Vuillermoz, Christian Hecq, Laurent Lafitte
:^^jusqu'au 29.06.20^^
;[[« Peer Gynt » d'Henrik Ibsen par David Bobée|https://www.france.tv/spectacles-et-culture/theatre-et-danse/1073687-peer-gynt-d-henrik-ibsen-par-david-bobee.html]]
:Le anti-héros Peer Gynt fantasme d’autres vies et rêve de grandeur. Il abandonne famille, amours et nous propose une réflexion sur le monde, les Hommes et leurs travers.
:^^jusqu'au 21.09.20^^
;[[« Ruy Blas » de Victor Hugo au château de Grignan|https://www.france.tv/spectacles-et-culture/theatre-et-danse/1097593-ruy-blas-de-victor-hugo-au-chateau-de-grignan.html]]
:Mise en scène : Yves Beaunesne. Distribution : Thierry Bosc, Anne-Lise Binard, Francois Deblock, Zacharie Feron, Noemie Gantier, Elsa Guiet, Fabienne Lucchetti, Maximin Marchand, Guy Pion, Jean-Christophe Quenon, Marine Sylf.
:^^jusqu'au 24.10.20^^
//Elle s 'arrête. Une porte s'ouvre. Elle se recompose vite. Son mari entre.//
;LE MARI.
:Qu”est-ce que tu fais ? Tu ranges ?
;LA FEMME.
: Non.
;LE MARI.
:Pourquoi fais-tu les bagages ?
;LA FEMME.
: Je voudrais partir.
;LE MARI.
:Qu'est-ce que ça veut dire ? _
;LA FEMME.
: On s'était dit, tu te rappelles, que je pourrais partir quelque temps. Ce qui se passe ici, c'est plus très beau.
;LE MARI.
:C'est de la folie.
;LA FEMME.
: Tu veux que je reste ?
;LE MARI.
:Où vas-tu ?
;LA FEMME.
: Amsterdam. Juste partir.
;LE MARI.
:Mais là-bas tu n'as personne.
;LA FEMME.
: Non.
;LE MARI.
:Pourquoi ne veux-tu pas rester ici? A mon avis, tu ne devrais pas partir.
;LA FEMME.
: Non.
;LE MARI.
:Tu sais que je n'ai pas changé, le sais-tu, Judith ?
;LA FEMME.
: Oui.
//Il l'embrasse. Ils restent là sans parler, au milieu des valises.//
;LE MARI.
:Et il n'y a rien d'autre qui te fait partir?
;LA FEMME.
: Tu le sais bien.
;LE MARI.
:Ce n'est peut-être pas si bête. Tu as besoin d'un bol d”air. Ici on étouffe. Je viendrai te chercher. Deux jours hors de la frontière et je me sentirai déjà mieux.
;LA FEMME.
: Oui, fais ça.
;LE MARI.
:Ça ne pourra plus continuer longtemps. Je ne sais pas d'où ça viendra, mais ça va changer. Ça va retomber d'un coup, comme une inflammation. - C'est vraiment un manque de chance.
;LA FEMME.
: Bien sûr. Tu as vu Schöck?
;LE MARI.
:Oui, enfin, dans l'escalier simplement. Je crois qu'il regrette déjà de nous avoir snobés. Il était visiblement gêne. Ils ne pourront pas continuer comme ça à nous traiter de bestiaux á intellect et à nous humilier sans arrêt. Ce n'est pas avec des ignares sans colonne vertébrale qu'ils arriveront à faire la guerre. Les gens cessent d'être méprisants si on sait leur tenir tête. À quelle heure est ton train ?
;LA FEMME.
: Neuf heures quinze.
;LE MARI.
:Et à quelle adresse devrai-je t'envoyer l'argent?
;LA FEMME.
: Peut-être Amsterdam poste restante.
;LE MARI.
:Je vais me faire donner une autorisation exceptionnelle. Bon sang de bois, je ne peux quand même pas laisser ma femme partir avec dix marks par mois ! C'est dégueulasse, tout ça. Je me sens affreusement mal.
;LA FEMME.
: Quand tu viendras me chercher, tu te sentiras mieux.
;LE MARI.
:Pour une fois, lire un journal ou il y a quelque chose à lire.
;LA FEMME.
: J”ai appele Gertrud. Elle viendra s'occuper de toi.
;LE MARI.
:Tout à fait superflu. Pour quelques semaines.
;LA FEMME, ,,qui a recommencé ses valises,,.
:Maintenant, donne-moi le manteau de fourrure, veux-tu ?
;LE MARI,, le lui tend.,,
:Au fond, c'est juste quelques semaines.
:
!!! ENTRÉE DE BALLET.
`Toute la troupe des Septuas s'aligne en fond de scène.
Argan entre, aussi solennel que pompeux, Il va se placer de profil en avant-scène, pour répondre aux questions que chaque Docteur va venir lui poser.
Les Docteurs sont distribués en donnant la priorité à ceux qui ne jouaient pas dans le "Malade". `//`(les noms des septuas qui sont donnés ci-après le sont à titre d'exemple)`//
* `Ils se passent (pendant le refrain "Tous les docteurs") le` __`chapeau de Docteur`__ `et le` __`rouleau`__` sur lequel seront écrites toutes les répliques à lire, `
* `et ils viennent d'un pas dansé se placer face à Argan pour poser leur question), `
* `puis retournent d'un pas dansé à leur place au fond.`
//`(La Musique sera un fragment de "Bene, bene respondere" de Charpentier)`//
//`Il y a içi 5 Docteurs qui viennent poser les questions- On pourra en réduire le nombre si le besoin s'en fait sentir. Mais, dans tous les cas on terminera par le Grand Chancelier`//
;DOCTEUR 1
:Savantissimi doctores,
: Medicinæ professores,
: ¿ Quæ, in maladia
: Ditta hydropisia,
:[In malo caduco, apoplexia, convulsione et paralysia,]
: Convenit facere ?
;Argan.
: `Au début, il a du mal à mémoriser, au fil des répétitions il demandera au public de lui souffler`
{{Serment d'Argan}}
;Tous les docteurs
{{Bene respondere}}
;DOCTEUR 2
: ¿ Quæ remedia colicosis, fievrosis,
: Maniacis, nefreticis, freneticis,
: Melancolicis, demoniacis,
: Asthmaticis atque pulmonicis,
: Catharrosis, tussicolisis,
: Guttosis, ladris atque gallosis,
: In apostemasis plagis et ulcéré,
: In omni membro demis aut fracturé
: Covenit facere
;Argan //`(avec le Public)`//
{{Serment d'Argan}}
;Tous les docteurs
{{Bene respondere}}
;DOCTEUR 3
: ¿ Quæ remedia cæcis, surdis, mutis,
: Manchotis, claudis, atque omnibus estropiatis,
:Pro coris pedum, malum de dentibus, pesta, rabie
:Et nimis magna commotione in omni novo marie.
: Convenit facere.
;Argan //`(avec le Public)`//
{{Serment d'Argan}}
;Tous les docteurs
{{Bene respondere}}
;DOCTEUR 4
:Homo qualitatis et dives comme un Crésus.
: Habet grandam fievram cum redoublamentis,
: Grandam dolorem capitis,
: Cum troublatione spiriti et laxamento ventris ;
: Grandum insuper malum au côté [40],]
: Cum granda difficultate
: Et pena a respirare.
: Veuillas mihi dire,
: Docte bacheliere,
: ¿ Quid illi facere.
;Argan //`(avec le Public)`//
{{Serment d'Argan}}
;Tous les docteurs
{{Bene respondere}}
;DOCTEUR 5
: Mais, si maladia
: Opiniatria
: [Ponendo medicum a quia]
: Non vult se guarire,
: ¿ Quid illi facere ?
;Argan //`(avec le Public)`//
{{Serment d'Argan}}
: Reseignare, repurgare, et reclysterizare.
;Tous les docteurs
{{Bene respondere}}
;TOUS LES DOCTEURS
: Juras gardare statuta
: Per Facultatem præscripta,
: Cum sensu et jugeamento ?
;Argan //`(aux anges)`//
: ''Juro''.
;GRAND CHANCELIER
: Ego, cum isto boneto
: Venerabili et docto,
: Dono tibi et concedo
: [Puissanciam, vertutem atque licentiam
: Medicinam cum methodo faciendi :
: Id est,
;TOUS LES DOCTEURS
://`(à tour de rôle : chacun dit le mot qui suit)`//
: Clysterizandi,
: Seignandi,
: Purgandi,
: Sangsuandi,
: Ventousandi,
: Scarificandi,
: Perçandi,
: Taillandi,
: Coupandi,
: Trepanandi,
: Brulandi,
;GRAND CHANCELIER
:''Et nunc,''
:''Mangeare tous''
:''Le goûter !''
;TOUS LES DOCTEURS
:Que nous allons vous apporter !
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
;BARBARA.
Ecoutez ;
je vais vous dire ce qu'il en est, comme si j'étais devant le Doge.
Moi,
quand je me suis mariée,
j'ai eu quatre mille ducats de dot.
Quand mon pauvre mari est mort, j'ai voulu les toucher,
et il en manquait la moitié.
Les deux mille qu'on a pu récupérer, je les ai placés en fonds d'état,
et avec le peu qu'ils rapportent,
avec le petit héritage que m'a laissé un de mes oncles,
avec le peu que produit notre ouvrage,
nous nous en tirons du mieux que nous pouvons.
Si j'arrivais à caser mon fils,
si ce pauvre garçon pouvait s'en tirer sans avoir besoin de moi,
les deux mille ducats, moi, je les donnerais tout de suite à la petite.
Mais vous voyez bien,
pour l'instant je ne peux pas ôter au garçon pour donner à la fille.
J'espère seulement que le ciel interviendra.
C'est un si bon garçon que j'ai de l'espoir,
la fortune lui viendra forcément en aide.
N'est-ce pas, sior'Agnese ?
Vous aussi vous me donnez des raisons d'espérer ?
;BARBARA.
:{{ Coupant le gaminerie et prenant un ton sérieux||did}} Ma chère petite :
:{{Doigt levé||scn}} :
:acheter à crédit chez les marchands
:est __toujours__ un mauvais calcul.
::Ils te donnent ce qu'ils ont de pire dans leur boutique,
::ils te font le prix qui leur chante,
::et quand on a commencé avec eux on n'arrive plus à s'en dépêtrer,
::on est loùjours en reste,
::on leur doit toujours quelque chose ;
::{{ Elle secoue la tête||scn}}
::et ils ne sont jamais contents de l'ouvrage qu'on leur rend.
:{{ Posant les deux mains sur la planche, elle assène||scn}} :
:Non, non, ma fille,
:il vaut mieux faire comme je dis,
:moi :
:{{Elle énumère un à un devant sa fille||scn}} :
::On ramasse ses deux ou trois sous,
::on va à la [[Marzaria]],
::on regarde,
::on fait son choix,
::on dit ce qu'on veut,
::on marchande tant qu'on peut,
::on leur donne ses sous :
::{{Geste de conclusion triomphante||scn}} :
::__on a payé__ !
:{{Signe de "Bye bye"||scn}} :
:au revoir messieurs-dames !
:`(Appelant :)`
:Margarita ?
:tu me l'apportes, ce fer ?
;BARBARA {{ le houspille gentiment||scn}}
:Mais toi, d'abord,
:tu n'as qu'à l'ôter quand tu rentres,
:au lieu d'essuyer toutes les tables avec tes manchettes.
: {{Pause. Elle le regarde, et lui fait la leçon||scn}}
:Le linge coûte cher,
:et il y a plus de jours dans l'année que de saucisses dans le cellier !
::plus tu laves,
::plus le tissu part,
::et quand il a commencé à partir, mon garçon,
::il court comme le feu dans la mèche d'amadou.
: {{Pause. Doigt levé : ||scn}}
:Je suis là toute la journée, moi,
:l'aiguille aux doigts
:pour te tenir en état ces deux trois chemises fines de misère !
:{{ Elle se radoucit, et soulève un pan de chemise.||scn}}
:on voit presque au travers !
:{{Elle l' admoneste||scn}} : tu devrais au moins les garder pour les fêtes, toi,
:et ne pas être dehors
:toute la journée
:avec tes fanfreluches,
:ni avec ton bon manteau surtout ;
:{{ Inspectant la chemise ||scn}} :
:les manchettes qui te restent s'usent,
:à force, elles se racornissent,
:{{ Elle reprend son repassage, et bougonne : ||scn}}
:et au bout d'une heure que tu les as, elles ne sont plus présentables.
;BARBARA.
:Je ne voudrais pas que celle-ci me demande son congé,
:ou qu'elle se marie,
:ou que quelqu'un lui monte la tête pour qu'elle me réclame deux ou trois ducats de plus par an.
:Moi,
:s'il y a une chose que je déteste, c'est de changer de servante,
:et de voir me tourner autour des têtes nouvelles tous les trois jours.
:Celle-ci n'est pas une perle,
:mais au moins, le peu qu'elle fait,
:elle le fait de bon coeur.
:Et ce qui me plaît, jeune comme elle est, elle n'est pas coureuse.
::J'ai ce garçon,
::un agneau,
::le pauvre petit,
:et si la servante était une pas grand chose, elle pourrait le mener à sa perte.
::Mon bijou,
::il est innocent comme une colombe.
::Sois béni, vois-tu.
::Laisse,
::laisse, mon petit,
::tant que vivra ta mère,
::elle fera si bien qu'elle ne te laissera jamais sans un morceau de pain.
;BARBARA.
:{{Hochant la tête ||scn}} : Sûr qu'en ce bas monde, on n'est pas heureux si on ne se contente pas de ce qu'on a.
:Je vous jure que pour moi, je m'en contente.
:{{Court silence. Elle prend les mains d'Agnese. ||scn}}
:{{Gravement ||did}} : Mon souci,
:ce sont ces deux pauvres petits.
:{{Reprenant sa position ||scn}}
:Une fille à marier,
:{{Très emphatique ||did}} : et un __garçon__ !
;{{Leger suspens, comme si elle jaugeait la jeune Agnese. Elle se décide ||scn}}
:ce n'est pas pour dire,
::{{Éloge très appuyé de son fils, en ne quittant pas Agnese des yeux ||did}} : mais c'est une __perle__
:{{Question faussement banale ||did}} : ça fait longtemps que vous ne l'avez pas vu, mon fils ?
;AGNESE.
:Combien ça fait ?
:{{Fait mine de chercher ||did}} : Trois ou quatre jours.
;BARBARA.
:{{Première qualité ||did}} : N'est-ce pas qu'il a de la figure ?
;AGNESE.
:Oui, ma foi !
:{{Évoquant un souvenir qui l'avait touchée, elle dit avec une fougue surprenante ||did}} : on dirait un petit gentilhomme! {{Étincelle de plaisir dans les yeux de Barbara ||did}}
;BARBARA.
:{{Deuxième qualité ||did}} : Et __bon__, vous savez,
:{{Comme tranportée ||did}} : mais bon ;
:moi, je vous garantis que des bons garçons comme ça,
:on n'en trouve pas beaucoup !
:{{Agnese a l'air d'acquiescer ||did}} :
:{{Barbara en profite et pousse son avantage ||did}} : Eh oui ;
:au jour d'aujourd'hui, allez le trouver un garçon de dix-huit ans
::qui écoute ce qu'on lui dit, {{→ Agnese a l'air de confirmer||did}}
::qui rentre à ja maison de bonne heure, {{→ Agnese a l'air de confirmer||did}}
::qui n'a pas de fréquentations, {{→ Agnese a l'air de confirmer||did}}
::qui ne va nulle part sans demander la permission, {{→ Agnese a l'air de confirmer||did}}
::qui accepte de ne pas avoir un sou en poche. {{→ Agnese a l'air de confirmer||did}}
:{{Elle savoure de se sentir approuvée. Elle reprend de plus belle ||did}} :
:__Lui__, il ne prend jamais un café si ce n'est pas moi qui le paie,
::__lui__, il ne va jamais au théâtre si ce n'est pas avec moi, une fois par an ;
::il ne joue pas,
::il ne connaît même pas les cartes.
:Et vous savez,
:ne croyez pas que ce soit un benêt avec ça.
:{{Se frappant le front avec l'index ||scn}} :
:{{Troisième exceptionnelle qualité ||did}} : Il a une de ces __têtes__ !
:Tout ce que son maître trouvait à me dire, c'était :
:://Il est premier en ci//,
:://il est premier en ça//.
:{{Elle s'arrête, heureuse de son panégyrique, espérant avoir produit un bon effet ||did}} : Eh oui !
;BARBARA.{{Rassurée de voir que la porte n'est pas fermée ||did}} :
:{{Elle reprend l'initiative ||did}} : Vous, entre ce que vous aviez, voyez-vous, et ce que votre mari vous a laissé,
:vous êtes comme une reine,
:et je ne vous conseille pas, si vous vous remariez, de vouloir donner dans les grandeurs.
:Il suffirait {{regard entendu ||did}} : que vous trouviez quelqu'un
::qui ait envie de bien faire,
::qui ne vous croque pas votre bien,
::et qui vous aime.
::Surtout qui vous aime;
:et pouvoir dire:
::c'est moi qui commande, pas ma belle-mère, ni mon beau-père ;
::mon mari, c'est de moi qu'il tient son bonheur ;
:et prendre tranquillement votre bon temps avec lui sans chercher [[la mer à Ravenne]]. {{Elle rient||scn}} :
:{{Ravie de deviner Agnese en accord, elle plante le clou ||did}} : Oui, ma foi, si j'étais vous,
:{{Elle appuie ||did}} : c'est ça que je ferais.
;AGNESE.
:{{Nullement heurtée, elle creuse la situation ||did}} : Il faudrait que je trouve quelqu'un qui vienne habiter chez moi.
;BARBARA.
:{{Retrouvant son élan,maintenant persuadée d'être sur la bonne route ||did}} : Oh ! vous en trouverez tant et plus, de ceux-là.
;AGNESE.
:{{Cherchant à bien traduire les propos de Barbara, sous couvert de blague ||did}} : [[Il faudrait qu'il n'ait ni père ni mère]] ?
;AGNESE.
:{{Ne voulant ni brusquer, ni laisser s'abuser Barbara ||did}} Oui, oui, de l'innocence ;
:et
:une belle envie de se marier, aussi !
;BARBARA {{Comme une lionne ||did}} :
:Des mauvais, sior'Agnese,
:des mauvais;
:rien que des inventions pour faire du mal au pauvre monde.
:On voit que ce garçon a de la figure et de la conduite,
:on sait que Sior'Agnese a de l'affection pour moi,
:qu'elle n'en manque pas non plus pour lui,
:qu'elle est veuve, que lui Est à marier.
:Et vlan,
:on sème le mal,
:de peur qu'un jour... vous comprenez ce que je veux dire ?
;AGNESE.
:Ma foi, vous me faites rire. //`(Elle rit avec beaucoup de plaisir)`//
;BARBARA.
:Oh Nicolleto, mon mignon !
:Si j'y arrive, tu seras verni, mon garçon ;
:moi, je ne vais pas me faire faute d'essayer,
:et sans scrupules encore.
:Elle est riche, elle est seule, elle est jeune, elle est belle et bonne.
:Mon fils est un garçon qui ne peut que lui plaire.
:Lui aussi, elle lui plaira.
:Suffit que moi, je lui dise,
:alors elle lui plaira !
:Et puis, il ne sait rien,
:il n'a jamais parlé aux filles.
::C'est là que j'aurai du mal, pour lui faire comprendre ce que c'est que l'amour.
:O chair de ma chair !
::je bout d'impatience, mon coeur bat.
::Il est là ?
::C'est lui ?
:Oh! non, c'est la servante de Sior'Agnese qui s'en va.
::
:Je voudrais tant qu'il revienne ;
::j'ai du souci,
::je n'ai plus de paix.
:Oh toi, l'amour des mères, ta puissance est grande.
//Elle sort//.
: Bene, bene, bene, bene respondere.
: Dignus, dignus est intrare
: In nostro docto corpore.
.tc-tiddler-frame {
background-color: rgba(255,255,255,0.8);
}
;//Des pandoli//
:Des biscuits dont la pâte est celle du biscuit de Savoie mais dont la forme est semblable à celle de nos biscuits à la cuiller.
:Dire qu'on a trempé ce genre de biscuits dans du chocolat peut avoir une connotation vaguement obscène.
:De plus, un //pandolo// désigne aussi, metaphoriquement, un nigaud, comme en français un //cornichon//.
//Résille dans laquelle les hommes enserraient leurs cheveux quand ils ne portaient pas de perruque.//
Expression proverbiale ancienne dont l'origine est obscure (peut-être un souvenir des peines pour calomnie ?) et qui est relative au fait qu'attaquer un membre de sa propre famille revient à se nuire à soi-même.
!!!{{17 mai 22}}
<center>
|bluealtrows|k
| ''Page d'accueil de nos Ateliers''<br>,,FORUM CAHIERS AGENDA TEXTES LIENS,, |
| __''[[http://jacques.droppages.com/]]''__ |
</center>
;
.
;[[Quelle est la forme de l’univers ?|http://expositions.bnf.fr/monde-en-spheres/]]
:Un parcours en seize étapes de la BNF pour poser le cadre et lever quelques idées reçues.
;[[Les musées vénitiens|https://www.visitmuve.it/it/iorestoacasa-con-i-musei-civici-di-venezia/]]
:Les italiens recensé les ressources artistiques en ligne :
<<<
:{{Musées vénitiens}}
<<<
;[[Van Eyck, le retable de Gand|http://legacy.closertovaneyck.be/#home/sub=open]]
:À examiner de près...
;[[Pour la lecture, la nouvelle quotidienne des éditions Zulma|https://mailchi.mp/37cad424ece2/lesmurs]]
:Des nouvelles pour échapper aux nouvelles.
;[[À savourer, des productions de l’Opéra de Paris|https://www.art-critique.com/2020/03/lopera-de-paris-met-en-ligne-ses-spectacles/ ]]
:Un nouvel opéra ou ballet tous les six jours, en sus du ballet « Giselle » et de l’opéra « Les Indes galantes »
;[[Avec tout son corps, les suggestions dansées d’Anna Teresa de Keersmaeker|https://www.rosasdanstrosas.be/videos/]]
:Re:Rosas! est un projet en collaboration avec Danspunt.
;[[Pour le plaisir des yeux, Collection du Musée Niepce de Chalon|http://www.open-museeniepce.com/accueil]]
:Une collection de plus de 20 000 photographies.
;[[Films et documentaires sur Arte|https://www.arte.tv/fr/]]
:Pour rester bien calfeutré chez soi
:,,"L'indomptée" - "Iona" avec Ruth Negga - "Sauvage" - "Vénus beauté (institut)" - "All good children" - "Le père de mes enfants" de Mia Hansen-Løve - L'armée virtuelle du Kremlin - L'éthique, c'est chic ! - La double vie du Sergent Carney - Sur les traces d'une guerrière viking - Médecine douce ou imposture ? - Un voyage à travers l'espace et le temps - La Russie vue du ciel - Dialogues des Carmélites - Andris Nelsons dirige Beethoven et Rimski-Korsakov - Sur les traces de "Judith et Holopherne" - Ces lieux qui ont inspiré le peintre - Les secrets de "La ronde de nuit" - Laissez-moi dormir ! - Al Capone et la Prohibition - Vladimir Poutine ...,,
;[[Les replays de France Télévision|https://www.france.tv/]]
!!!et toujours :
;[[Tous les livres du domaine public|http://noslivres.net/]]
:Près de 15.000 titres téléchargeables gratuitement.
;[[Expositions BNF|http://expositions.bnf.fr/]]
:Galerie du livre et l'écrit - Galerie des écrivains et conteurs - Galerie d'histoire des représentations - Galerie des arts et de l'architecture - Galerie de la photographie - Galerie des cartes et globes
;[[Expositions virtuelles du Louvre|http://www.ecoledulouvre.fr/documentation/phototheque/expositions-virtuelles]]
:87 expositions, 17 thématiques
;[[Visites en ligne du Louvre|https://www.louvre.fr/visites-en-ligne]]
:Les salles du musée, les façades du palais. la vue
;[[Le British Museum|https://britishmuseum.withgoogle.com/]]
;[[Solomon R. Guggenheim Museum and Foundation|https://bit.ly/2WghQnb]]
;[[Rijksmuseum|https://bit.ly/3aTfzCq]]
{{Calfeutrés mais cultivés (2)}}
"""Goldoni avait emménagé l”automne précédent Calle delle Ballotte.
Il s'agit donc là d'un clin d'0eil au public vénitien qui n'était pas sans le savoir : ce changement d'habitation avait donné lieu, en décembre 1760, à la création de la pièce La //casa nova// (Le nouvel appartement) et à divers poèmes.
Quant au parcours que sont censés avoir fait ce matin-là Nicoletto et son parrain, il est parfaitement vraisemblable, mis à part sa durée (environ deux heures en marchant normalement) et concerne successivement les quartiers de San Marco, Castello, Cannaregio, Santa Croce, San Polo et San Marco à nouveau.
J'ai réuni ci-dessous la plupart des longues répliques de la bonne mère, que nous travaillerons dans nos prochains ateliers à distance.
Merci d'en choisir une - sans préjugé de casting - qui vous inspire des idées de jeu. Nous pourrons faire un manet un travail de table autour des premières que vous auriez choisies (et un peu préparées).
| <br>►Cet après-midi, après ces premiers manèges, nous donnerons la priorité de lectures des scènes avec ceux qui nous rejoignent aujourd'hui : Denise, Nadine et Lee.<br><br>► Éveline, est-ce qu'on a une chance de te voir nous rejoindre ?<br> |
```
{{Jouer Goldoni}}
!!I,1 BARBARA.
"""
Ma chère petite, acheter à crédit chez les marchands est toujours un mauvais calcul.
Ils te donnent ce qu'ils ont de pire dans leur boutique,
ils te font le prix qui leur chante,
et quand on a commencé avec eux on n'arrive plus à s'en dépêtrer,
on est loùjours en reste,
on leur doit toujours quelque chose ;
et ils ne sont jamais contents de l'ouvrage qu'on leur rend.
Non, non, ma fille,
il vaut mieux faire comme je dis, moi,
On ramasse ses deux ou trois sous,
on va à la Marzaria,
on regarde,
on fait son choix,
on dit ce qu'on veut,
on marchande tant qu'on peut,
on leur donne ses sous :
on a payé,
au revoir messieurs-dames.
(Appelant :)
Margarita ?
tu me l'apportes, ce fer ?
"""
---
!!I,4 MARGARITA.
"""
Oh ! mon garçon,
chez ces gens-là, ce n'est pas pour rien qu'on y va.
Cette fille, je la connais.
Et elle, je ne dis pas,
mais sa mère.
Vous parlez d'une mère !
Elle en avait trois autres, des filles, et elle s'en est vite débarrassée, mine de rien.
Je ne voudrais pas qu'elle te colle la quatrième, à toi.
"""
---
!!I,5 MARGARITA.
"""
Et toi avec ceux qui t'en fourrent plein la jappe.
Non mais,
quel furoncle !
Un beau petit saint qu'elle a élevé, la patronne,
y a pas à dire, son fils, c'est du propre.
La pauvre !
elle s'échine,
elle s'escrime pour ses enfants
et puis
vlan,
c'est ça le beau bijou qu'elle a élevé !
Mais les garçons, ils savent tout juste attacher leur culotte, les voilà dehors,
et j'te fréquente,
et j't'en entends,
et j't'en fais
et j't'en dis,
essayez donc de les tenir.
Oh ! la chance que c'est d'avoir des filles, à côté !
...
La voilà qui revient nom de nom.
Je ne sais pas si je dois lui dire :
si j'en parle, j'ai peur de mal faire ;
si je me tais, je ne voudrais pas faire pire.
"""
---
!!I,7 BARBARA.
"""
Je ne voudrais pas que celle-ci me demande son congé,
ou qu'elle se marie,
ou que quelqu'un lui monte la tête pour qu'elle me réclame deux ou trois ducats de plus par an.
Moi,
s'il y a une chose que je déteste, c'est de changer de servante,
et de voir me tourner autour des têtes nouvelles tous les trois jours.
Celle-ci n'est pas une perle,
mais au moins, le peu qu'elle fait,
elle le fait de bon coeur.
Et ce qui me plaît, jeune comme elle est, elle n'est pas coureuse.
J'ai ce garçon,
un agneau,
le pauvre petit,
et si la servante était une pas grand chose, elle pourrait le mener à sa perte.
Mon bijou,
il est innocent comme une colombe.
Sois béni, vois-tu.
Laisse,
laisse, mon petit,
tant que vivra ta mère,
elle fera si bien qu'elle ne te laissera jamais sans un morceau de pain.
"""
---
!!I,10 NICOLETTO.
"""
Dites donc,
pour qui vous me prenez ?
Pour un pouilleux ?
J'ai du bien, moi, vous savez,
et mes revenus, je m'en occupe moi-même;
j'ai douze mille ducais de rente
et ma mère a seize mille ducats de dot.
Mais moi, si je me marie, je ne veux pas de dot;
moi, je n'ai pas besoin de dot,
je veux une fille qui me plaise,
une fille qui m'aime, et c'est tout.
"""
---
!!II,2 - BARBARA.
"""
Ecoutez ;
je vais vous dire ce qu'il en est, comme si j'étais devant le Doge.
Moi,
quand je me suis mariée,
j'ai eu quatre mille ducats de dot.
Quand mon pauvre mari est mort, j'ai voulu les toucher,
et il en manquait la moitié.
Les deux mille qu'on a pu récupérer, je les ai placés en fonds d'état,
et avec le peu qu'ils rapportent,
avec le petit héritage que m'a laissé un de mes oncles,
avec le peu que produit notre ouvrage,
nous nous en tirons du mieux que nous pouvons.
Si j'arrivais à caser mon fils,
si ce pauvre garçon pouvait s'en tirer sans avoir besoin de moi,
les deux mille ducats, moi, je les donnerais tout de suite à la petite.
Mais vous voyez bien,
pour l'instant je ne peux pas ôter au garçon pour donner à la fille.
J'espère seulement que le ciel interviendra.
C'est un si bon garçon que j'ai de l'espoir,
la fortune lui viendra forcément en aide.
N'est-ce pas, sior'Agnese ?
Vous aussi vous me donnez des raisons d'espérer ?
"""
---
!!III,1 LODOVICA.
"""
Ecoute-moi bien, toi,
et tâche de te rappeler que tu viens de t'engager à ma fille,
que tu t'es engagé à une fille pauvre, oui, mais honnête,
qui a refusé pour toi trois ou quatre propositions;
et que si jamais tu lui manquais de foi,
pour commencer le ciel te punirait,
et puis,
il y a une justice dans ce pays,
et moi, tu sais, j'ai des protections qui pourraient te faire trembler.
"""
---
!!III,5 DANIELA
"""
Je ne comprends pas qu'à une jeune fille, vous veniez proposer une chose pareille.
Je suis jeune, mais je ne suis pas aussi gourde que vous croyez.
Les filles convenables ne vont pas comme gouvernantes chez un homme seul,
chez un homme qui a des amours en secret.
Ma mère serait là aussi, bien sûr,
mais ma mère,
je vous demande pardon,
sait moins bien se conduire que moi.
"""
---
!!III,9 AGNESE.
"""
Pauvre petit !
quel bon garçon !
J'en suis restée pantoise ;
quand il m'a raccompagnée, il m'a bien ramenée jusque devant ma porte,
mais de peur que sa mère le gronde, il est reparti tout de suite en courant,
il n'a même pas attendu que l'on m'ait ouvert.
"""
---
!!III,12 AGNESE.
"""
Je vais vous dire, siora Barbara ;
d'abord,
je vous remercie pour l'affection que vous me témoignez et pour la confiance que vous avez eue en moi ;
mais une femme comme vous n'aurait pas pu agir autrement.
Je vous dirai ensuite ceci :
moi aussi, je suis veuve,
et je sais comment va le monde ;
les jeunes gens, il y en a peu qui ne font pas de bêtises au jour d'aujourd'hui,
et le proverbe dit : << Qui ne les fait dans son jeune âge , les fera plus tard >>.
Au bout du compte, une fois n'est pas coutume.
Si vous me garantissez qu'avec cette fille, il ne s'est rien passé,
que Sior Nicoletto l'a vraiment quittée et qu'il est vraiment repentant,
alors,
pardonnez-lui,
parce que moi aussi
je lui pardonne.
"""
!Entrées sorties
|`PLACEMENT DES ACTEURS`|//Beaumarchais a eu l’attention d’écrire au commencement de chaque scène le nom des personnages dans l’ordre où le spectateur les voit//. |
<hr>
!! ''Acte I'' //(extrait)//
|`Annonce 1`|
```
La scène représente la chambre encore démeublée qui est destinée à devenir celle ds fiancés, entre l'appartement du Comte, à votregauche, et celui de la Comtesse à votre droite.
Suzanne accourt son beau chapeau de mariée à la main, suivie de Figaro.
```
<hr>
;I-Scène 1 //raccourcie// • Suzanne et Figaro
`Jardin →` //Suzanne et Figaro entrent vivementcomme pour un conciliabule, Suzanne est toute agitée//
Figaro
Eh ! qu'est-ce qu'il y a, bon Dieu ?
<hr>
!!!!!
Figaro
//mystérieusement//.
Quand je pourrai te le prouver du soir jusqu'au matin.
//On sonne une seconde fois.//
Suzanne
`→ vers Cour`//de loin, les doigts unis sur sa bouche//.
Voilà votre baiser, monsieur ; je n'ai plus rien à vous.
Figaro
//court après elle.//
Oh ! mais ce n'est pas ainsi que vous l'avez reçu.
;I-Scène 2 //raccourcie//
Figaro
//seul// `→ Public milieu`
La charmante fille ! toujours riante, verdissante, pleine de gaieté, d'esprit, d'amour et de délices ! mais sage !…
<hr>
... donner le change aux petites passions de monsieur le comte ;
…
et…
//Figaro s'interrompt en apercevant Marceline//
;I-Scène 3 //extrait//
Figaro `→ se penche Public Cour`
…Héééé, voilà Marceline, la fête sera complète.
//fort, criant par la fenêtre//
Hé bon jour, Marceline de mon coeur.
<hr>
"Pour n'aimer pas, faut-il qu'on se haïsse?"
Je m'en rapporte au Docteur.
//Il sort.// `→Jardin, prestement`
;I-Scène 4 MARCELINE devant Bartholo//raccourcie//
Marceline
//étonnée de se trouver seule// `→ s'avancevers Public milieu`
Je voudrais qu'on m'aide à épouser le beau, le gai, l'aimable Figaro
<hr>
//arrivant, un bonnet de femme avec un large ruban dans la main, une robe de femme sur le bras//
`Jardin→ Suzanne allait traverser fond de scène, et interdite, s'arrête pour écouter à l'insu de Marceline`
La honte la prenant au collet, elle continuera de refuser le comte,
lequel, pour se venger, appuiera l'opposition que j'ai faite à son mariage ;
alors le mien devient certain.
Ah! le bon tour !…
Ah ! quelle volupté de l'épouser, de l'épouser !…
`Elle danse de joie`
;I-Scène 5 • MARCELINE, Suzanne
Suzanne
L'épouser, l'épouser !
Qui donc ? mon Figaro ?
<hr>
Marceline
// outrée//
Aux duègnes ! aux duègnes !
Allons !
Car je n'y tiendrais pas.
Bonjour, madame.
//Une révérence.// `→ esc Cour (dans public)`
;I-Scène 6
Suzanne
//seule//. `Vitupère vers Cour`
Allez, madame ! allez, pédante ! Je crains aussi peu vos efforts que je méprise vos outrages.
`revient →public milieu`
— Voyez cette vieille sibylle ! parce qu'elle a fait quelques études et tourmenté la jeunesse de madame, elle veut tout dominer au château !
<hr>
`Suzanne repart →Cour, s'arrête (fausse sortie)`
Je ne sais plus ce que je venais prendre.
;I-Scène 7 • Suzanne avec Chérubin
`esc Jardin →` Chérubin
//accourant// `montant sur scène`
Ah ! Suzon, depuis deux heures j'épie le moment de te trouver seule.
`Contre Suzanne (égayée)` Hélas ! tu te maries, et moi je vais partir.
<hr>
!!''Acte II''
|`Annonce 2`|
```
Imaginez avoir mainteant sous les yeux une chambre à coucher superbe, celle de la Comtesse. Voici sa coiffeuse qui mérite bien son nom : c'est là où sa camériste, Suzanne prend soin de sa coiffure !
À votre gauche, au fond voici la porte par laquelle on entre, en venant des appartements du Comte.
Toujours à gauche, mais devant, la porte d'un cabinet. Ce réduit sera d'un grand secours à deux de nos personnages tout à l'heure.
À votre droite, au fond, la porte qui va chez les femmes.
Et içi, la partie droite de l'avant-scène figure la grande fenêtre qui donne sur le jardin en contre-bas (à vos pieds), puis sur la campagne au loin (derrière vous).
Oh, j'entends du bruit : la Comtesse arrive !
```
<hr>
;II-Scène I SUZANNE ; LA COMTESSE
`Jardin→ arrivée rapide, Comtese catastrophée, Suzanne très inquiète`
//LA COMTESSE entre par la porte à droite.//
La Comtesse
//se jette dans un bergère.//
Ferme la porte, Suzanne, et conte-moi tout dans le plus grand détail.
Suzanne
Je n'ai rien caché à madame.
<hr>
Suzanne
`→ sautillant vers Jardin` //court ouvrir en chantant.//
Ah ! c'est mon Figaro ! ah ! c'est mon Figaro !
;II-Scène II FIGARO, SUZANNE, LA COMTESSE assise
Suzanne
Mon cher ami, viens donc ! Madame est dans une impatience !…
Figaro
Et toi, ma petite Suzanne ? — Madame n'en doit prendre aucune. Au fait, de quoi s'agit-il ? d'une misère.
<hr>
Figaro
Que, pendant l'absence de monseigneur, je vais vous envoyer le Chérubin :
coiffez-le, habillez-le ; je le renferme et l'endoctrine ; et puis dansez, monseigneur.
//Il sort.// `→Jardin`
;II-Scène III SUZANNE ; LA COMTESSE assise
La Comtesse
//tenant sa boîte à mouches//.
Mon Dieu, Suzon, comme je suis faite !… ce jeune homme qui va venir !…
<hr>
La Comtesse
//revenant à elle//.
Qu'est-ce que vous dites donc, mademoiselle ?
;II-Scène IV CHÉRUBIN, l'air honteux ; SUZANNE, LA COMTESSE
`Jardin→ Chérubin se présente en entrée de scène`
Suzanne `lui fait signe de s'approcher avec une cérémonie exagérée`
Entrez, monsieur l'officier ; on est visible.
Chérubin
//avance en tremblant.//
<hr>
La Comtesse
Sur ma toilette, une baigneuse à moi.
//Suzanne entre dans le cabinet dont la porte est au bord du théâtre.// `→bord Jardin`
;II-Scène V CHÉRUBIN ; LA COMTESSE assise
La Comtesse
Jusqu'à l'instant du bal, le comte ignorera que vous soyez au château.
<hr>
La Comtesse
Déjà ? l'on a craint d'y perdre une minute. //Elle lit.// Ils se sont tant pressés, qu'ils ont oublié d'y mettre son cachet.
//Elle le lui rend.//
;II-Scène VI CHÉRUBIN, LA COMTESSE, SUZANNE
`bord Jardin→` //Suzanne entre avec un grand bonnet.//
Suzanne
Le cachet, à quoi ?
<hr>
La Comtesse
//d'un ton glacé//.
Occupez-vous plutôt de m'avoir du taffetas gommé dans ma toilette.
//Suzanne lui pousse la tête en riant ; il tombe sur les deux mains. Elle entre dans le cabinet au bord du théâtre.// `→bord Jardin`
;II-Scène VII CHÉRUBIN, à genoux ; LA COMTESSE
La Comtesse
// reste un moment sans parler, les yeux sur son ruban. Chérubin la dévore de ses regards.//
<hr>
Pour mon ruban, monsieur… comme c'est celui dont la couleur m'agrée le plus… j'étais fort en colère de l'avoir perdu.
;II-Scène VIII CHÉRUBIN, à genoux ; LA COMTESSE, assise ; SUZANNE
`bord Jardin→` Suzanne
//revenant.//
Et la ligature à son bras ?
//Elle remet à la comtesse du taffetas gommé et des ciseaux.//
<hr>
`→Cour fond` //Suzanne sort par la porte du fond, en emportant le manteau du page.//
;II-Scène IX CHÉRUBIN, à genoux ; LA COMTESSE assise
Chérubin
//les yeux baissés.//
Celui qui m'est ôté m'aurait guéri en moins de rien.
<hr>
La Comtesse
//l'interrompt, et lui essuie les yeux avec son mouchoir.//
Taisez-vous, taisez-vous, enfant. Il n'y a pas un brin de raison dans tout ce que vous dites.
//On frappe à la porte, elle élève la voix.//
`S'avance milieu de scène à mi-chemein de Jardin` Qui frappe ainsi chez moi ?
;II-Scène X CHÉRUBIN, LA COMTESSE ; LE COMTE, en dehors
Le Comte
//en dehors.//
Pourquoi donc enfermée ?
La Comtesse
//troublée, --se lève-- `se prend la tête dans les mains` //.
C'est mon époux ! grands dieux !…
<hr>
Chérubin `perdu, regarde à droiteà gauche par quelle issue s'enfuir`
//à part.//
Après les scènes d'hier et de ce matin, il me tuerait sur la place !
`→bord Jardin` //Il court au cabinet de toilette, y entre, et tire la porte sur lui.//
;II-Scène XI LA COMTESSE, seule
La Comtesse
//`prend la clef`, et court ouvrir au Comte//.
Ah ! quelle faute ! quelle faute !
<hr>
La Comtesse
//prend la clef, et court ouvrir au Comte//. `→Jardin`
Ah ! quelle faute ! quelle faute !
;II-Scène XII LE COMTE, LA COMTESSE
`Jardin→` Le Comte
//d'un ton un peu sévère//
Vous n'êtes pas dans l'usage de vous enfermer !
<hr>
La Comtesse
Je crois, en effet, que vous le voulez souvent ; mais voilà bien les soupçons les moins fondés…
;II-Scène XIII LE COMTE, LA COMTESSE ; SUZANNE
`Cour fond→`//SUZANNE entre avec des hardes et pousse la porte du fond.//
Le Comte
Ils en seront plus aisés à détruire. //Il crie en regardant du côté du cabinet.// Sortez, Suzon ; je vous l'ordonne !
//Suzanne s'arrête auprès de l'alcôve dans le fond.//
La Comtesse
Elle est presque nue, monsieur !
<hr>
La Comtesse
En vérité, monsieur, voilà bien la plus odieuse aventure…
`→Jardin` //Le Comte l'emmène et ferme la porte à la clef.//
;II-Scène XIV SUZANNE, CHÉRUBIN
Suzanne
`Cour fond→` //sort de l'alcôve, accourt au cabinet et parle à travers la serrure.//
Ouvrez, Chérubin, ouvrez vite, c'est Suzanne ; ouvrez, et sortez.
`→bord Jardin` Chérubin
//sort.//
Ah ! Suzon, quelle horrible scène !
<hr>
Chérubin
//exalté.//
Dans un gouffre allumé, Suzon ! oui, je m'y jetterais plutôt que de lui nuire… Et ce baiser va me porter bonheur.
//Il l'embrasse et court sauter par la fenêtre.// `→esc Cour→public`
;II-Scène XV SUZANNE, seule
Suzanne `milieu de scène, paniquée`
//cri de frayeur.//
Ah !…
//Elle tombe assise un moment. Elle va péniblement regarder à la fenêtre `bord Cour` et revient.//
Il est déjà bien loin. Ô le petit garnement ! aussi leste que joli ! Si celui-là manque de femmes…
`Traverse le bord de scène. Au milieu :` Prenons sa place au plus tôt.
`→bord Jardin` //En entrant dans le cabinet.//
Vous pouvez à présent, monsieur le comte, rompre la cloison, si cela vous amuse ; au diantre qui répond un mot !
//Elle s'y enferme.//
<hr>
`→bord Jardin`
Vous pouvez à présent, monsieur le comte, rompre la cloison, si cela vous amuse ; au diantre qui répond un mot !
//Elle s'y enferme.//
;II-Scène XVI LE COMTE, LA COMTESSE
`Fond Jardin→` Le Comte
//une pince à la main, qu'il jette sur le fauteuil.//
Tout est bien comme je l'ai laissé. Madame, en m'exposant à briser cette porte `il désigne bord Jardin` , réfléchissez aux suites : encore une fois, voulez-vous l'ouvrir ?
<hr>
`→bord Jardin` Le Comte
//ouvre la porte, et recule.//
C'est Suzanne !
;II-Scène XVII LA COMTESSE, LE COMTE, SUZANNE
Suzanne
//sort en riant.// Je le tuerai, je le tuerai ! Tuez-le donc, ce méchant page.
<hr>
Le Comte `recule, désarçonné en regardant alternativement Suzeanne et la Comtesse`
//à part//
Ah ! quelle école ! //Regardant la comtesse, qui est restée stupéfaite.// Et vous aussi, vous jouez l'étonnement ?… Mais peut-être elle n'y est pas seule.
`→bord Jardin` //Il entre.//
;II-Scène XVIII LA COMTESSE, assise ; SUZANNE
Suzanne
//accourt à sa maîtresse `en soutien souriant`.//
Remettez-vous, madame ; il est bien loin ;
il a fait un saut…
<hr>
La Comtesse `(s'affale sur sa bergère)`
Ah ! Suzon,
je suis morte !
;II-Scène XIX LA COMTESSE, SUZANNE, LE COMTE
`bord Jardin→` //Le Comte sort du cabinet d'un air confus. Après un court silence ://
Le Comte
Il n'y a personne, et pour le coup j'ai tort. — Madame… vous jouez fort bien la comédie.
Suzanne
//gaiement.//
Et moi, monseigneur ?
<hr>
Suzanne `se mettant au milieu des deux, face public`
Bon ! madame, avec eux ne faut-il pas toujours en venir là ?
//Le Comte baise ardemment la main de sa femme.//
;II-Scène XX SUZANNE, FIGARO, LA COMTESSE, LE COMTE.
Figaro
`Jardin→` //arrivant tout essoufflé//
On disait madame incommodée. Je suis vite accouru… Je vois avec joie qu'il n'en est rien.
<hr>
Le Comte
//à part//
Et Marceline, Marceline… //Haut.// Je voudrais être… au moins vêtu.
La Comtesse
Pour nos gens ! Est-ce que je le suis ?
;II-Scène XXI FIGARO, SUZANNE, LA COMTESSE, LE COMTE, ANTONIO.
`esc Cour→` Antonio
//demi-gris, tenant un pot de giroflées écrasées//
Monseigneur ! monseigneur !
Le Comte
Que me veux-tu, Antonio ?
<hr>
Le Comte
//rouvre le papier et le chiffonne de colère.//
Allons, il est écrit que je ne saurai rien. //À part.// C'est ce Figaro qui les mène, et je ne m'en vengerais pas !
//Il veut sortir avec dépit.// `va vers →jardin`
Figaro
//l'arrêtant//
Vous sortez sans ordonner mon mariage ?
;II-Scène XXII BASILE, BARTHOLO, MARCELINE, FIGARO, LE COMTE, GRIPE-SOLEIL, LA COMTESSE, SUZANNE, ANTONIO ; valets du Comte, ses vassaux.
`esc Cour→` Marceline
//au Comte//
Ne l'ordonnez pas, monseigneur ! Avant de lui faire grâce, vous nous devez justice. Il a des engagements avec moi.
<hr>
Figaro
Un billet, voilà tout, pour de l'argent prêté.
Marceline
//au comte//
Sous condition de m'épouser. Vous êtes un grand seigneur, le premier juge de la province…
Le Comte
Présentez-vous au tribunal, j'y rendrai justice à tout le monde.
`Le Comte sort à →Jardin, puis Maceline à →esc Cour`
;II-Scène XXIV SUZANNE, LA COMTESSE.
//La Comtesse et Suzanne échangent `en avant-scène`//
La Comtesse
Vous voyez, Suzanne, la jolie scène que votre étourdi m'a value avec son billet.
<hr>
La Comtesse
. . . //Elle se retourne.//
Ah ! le ruban ! Mon joli ruban, je t'oubliais !
//Elle le prend sur sa bergère et le roule.//
Tu ne me quitteras plus… tu me rappelleras la scène où ce malheureux enfant… . . . ?
`Elle sort à →Jardin `
;II-Scène XXVI
//. . . Pendant l'entracte, des valets arrangent la salle d'audience. On apporte les deux banquettes à dossier des avocats, que l'on place aux deux côtés du théâtre, de façon que le passage soit libre par-derrière. On pose une estrade à deux marches dans le milieu du théâtre, vers le fond, sur laquelle on place le fauteuil du comte. On met la table du greffier et son tabouret de côté sur le devant, et des sièges pour Brid'oison et d'autres juges, des deux côtés de l'estrade du comte//
<hr>
!! ''Acte III''
|`Annonce 3`|
```
Le théâtre représente maintenant la salle du château appelée salle du trône, et qu'on est en train d'installer en salle d’audience.
On devrait voir au fond le portrait du roi, mais nous sommes désolés, nous n'avons pas réussi à en trouver un pour notre représentation !
Voilà, la salle d’audience est finie d'arranger. De chaque côté, en vis-à-vis les sièges des avovats, Accusation à gauche, Défense à droite.
Au milieu, vers le fond, le fauteuil du Comte qui va présider, comme c'est l'usage, la séance.
Juste à sa gauche la table du greffier et le siège pour pour le juge Brid’oison.
Oh, voici le Comte !
Il parait tout désorienté !
```
<hr>
;III-Scène IV LE COMTE, seul, marche en rêvant.
`Jardin→` Le Comte `en circulant sur la scène`
— Ce billet . . . qui m'avertit d'une entreprise sur la Comtesse ; la camériste enfermée quand j'arrive ; la maîtresse affectée d'une terreur fausse ou vraie ; un homme qui saute par la fenêtre, et l'autre après qui avoue… ou qui prétend que c'est lui…
Le fil m'échappe. Il y a là-dedans une obscurité…
<hr>
— Ce Figaro se fait bien attendre !
Il faut le sonder adroitement,
`Fond Jardin→` //Figaro paraît dans le fond, il s'arrête//
et tâcher, dans la conversation que je vais avoir avec lui, de démêler d'une manière détournée s'il est instruit ou non de mon amour pour Suzanne.
;III-Scène V LE COMTE, FIGARO.
Figaro `immobile bord fond Jardin`
//à part//
Nous y voilà.
<hr>
Figaro
//à part// `avant-scène au public`
Il a joué au fin avec moi,
qu'a-t-il appris ?
;III-Scène VI - VII Le COMTE, un laquais, FIGARO.
`Bord Cour→` Le laquais
//annonçant.//
Dom Gusman Brid'oison.
<hr>
Figaro
Eh ! sans doute. C'est le juge ordinaire, le lieutenant du siège, votre prud'homme.
Le Comte
Qu'il attende.
// Le laquais sort.// `→Bord Cour`
;III-Scène VII LE COMTE, FIGARO
Figaro
//reste un moment à regarder le comte, qui rêve//
… Est-ce là ce que monseigneur voulait ?
Le Comte
//revenant à lui//
Moi ?… je disais d'arranger ce salon pour l'audience publique.
<hr>
Je vais renvoyer les frotteurs.
//Figaro sort.// `→jardin`
;III-Scène VIII LE COMTE, seul.
Le Comte
Le maraud m'embarrassait !
<hr>
`Perfide, en milieu avant-scène, au public`
Soyez amis, soyez amants, soyez ce qu'il vous plaira, j'y consens ; mais parbleu, pour époux…
;III-Scène IX SUZANNE, LE COMTE.
`Jardin→` Suzanne
//essoufflée.//
Monseigneur…
pardon, monseigneur.
Le Comte
//avec humeur//
Qu'est-ce qu'il y a,
mademoiselle ?
<hr>
Le Comte
//à part//
Elle est à moi.
//Il s'enfuit.// `→Jardin`
Suzanne
Allons vite rendre compte à madame. `→Cour`
;III-Scène X SUZANNE, FIGARO.
`Jadin→` Figaro `courant vers →Cour`
Suzanne, Suzanne ! où cours-tu donc si vite en quittant monseigneur ?
Suzanne
Plaide à présent, si tu le veux ; tu viens de gagner ton procès.
//Elle s'enfuit.// `→Cour`
Figaro
//la suit//
Ah ! mais, dis donc… `→Cour`
<hr>
Figaro
//la suit//
Ah ! mais, dis donc… `→Cour`
;XI LE COMTE rentre seul.
`Jardin→` Le Comte
Tu viens de gagner ton procès !
— Je donnais là dans un bon piège !
<hr>
`en avant scène`
Dans le vaste champ de l'intrigue il faut savoir tout cultiver , jusqu'à la vanité d'un sot.
//Il appelle par la fenêtre `av-sc Cour`.//
Anto…
//Il voit entrer Marceline, etc. Il sort.// `→Cour`
;III-Scène XII MARCELINE, BRID'OISON.
`esc Cour→ Marceline et Bridoison montent sur scène comme s'ils étaient déjà en discussion`
Marceline
//à Brid'oison//
Monsieur, écoutez mon affaire.
Brid'oison, en robe, et bégayant un peu.
Eh bien ! pa-arlons-en verbalement.
Bartholo
C'est une promesse de mariage.
<hr>
Marceline
//en soupirant//
C'est un grand abus que de les vendre !
Brid'oison
Oui ; l'on-on ferait mieux de nous les donner pour rien. Contre qui plai-aidez-vous ?
;III-Scène XIII MARCELINE, BRID'OISON ; FIGARO
`Jardin→` Figaro
//rentre en se frottant les mains//
Marceline
//montrant Figaro//
Monsieur, contre ce malhonnête homme.
Figaro
//très gaiement, à Marceline//
Je vous gêne peut-être.
<hr>
Brid'oison
San-ans doute. — Hé ! mais qu'est-ce donc qu'il dit ?
;III-Scène XIV BARTHOLO, MARCELINE, LE COMTE, BRID'OISON, FIGARO, UN HUISSIER.
`Jardin→` L'huissier
//précédant le Comte, crie.// `se plantant en av-sc jardin, solennel face public`
Monseigneur, messieurs.
Le Comte
En robe ici, seigneur Brid'oison !
Ce n'est qu'une affaire domestique : l'habit de ville était trop bon.
<hr>
Le Comte
//à l'huissier//
Faites entrer l'audience.
L'huissier
//va ouvrir en glapissant.//
L'audience !
`Entrent le greffier, ANTONIO, les valets du château, etc.`
;III-Scène XV Le COMTE BRI,D'OISON, le greffier, MARCELINE, BARTHOLO, FIGARO et ANTONIO, les valets du château, les paysans et paysannes en habits de fête
`Tous prennent leur place (en laissant unecirculation possible pour la circulation à vnir de Marceline)`
`//LE COMTE s'assied sur le grand fauteuil ; BRID'OISON, sur une chaise à côté ; le greffier, sur le tabouret derrière sa table ; les juges, les avocats, sur les banquettes ; MARCELINE, à côté de BARTHOLO sur labanquette de l'accusation (jardin) ; FIGARO, sur la banquette de la défense (cour); les paysans et les valets, Antonietta, debout derrière.//`
`Quand tous sont en place, le Comte fait signe au Juge de commencer.`
Brid'oison
//à Double-Main//
Double-Main, a-appelez les causes.
<hr>
Bartholo
//(vite.)//
Oui ; nous nous marions séparés de biens.
Figaro
//(vite)//
Et nous de corps,
dès que mariage n'est pas quittance.
`Le Comte signifie d'un geste la fin des plaidories, et fait signe aux gens de justice de se retirer avec lui pour délibérer →Fond de scène Jardin`
(Les juges se lèvent et opinent tout bas.)
Les parties se lèvent pour se dégourdir en attendant l'arrêt, et circulent dans la partie opposée de la scène (→ quart avant-scène côté Cour)
Bartholo `(en riposte à la derière réplique de Figaro)`
Plaisant acquittement !
Double-Main `(en délibération avec le Comte et Brid'Oison), s'irrite de l'interruption de Bartholo`
Silence, messieurs !
L'huissier `(comme un ressort)`
(glapissant.)
Silence !
<hr>
Antonio
En ce que tu ne seras plus mon neveu.
Grand merci, monseigneur !
L'Huissier
//glapissant.//
Passez, messieurs.
//Le peuple sort.//
;III-Scène XVI LE COMTE, MARCELINE, BARTHOLO, FIGARO, BRID'OISON.
//LE COMTE va de côté et d'autre ; Marceline s'assied.//
Marceline
Ah ! je respire.
Figaro
Et moi, j'étouffe.
Le Comte
//à part//
Au moins je suis vengé, cela soulage.
<hr>
Et vous, ma mère, embrassez-moi… le plus maternellement que vous pourrez.
//Marceline lui saute au cou.//
;III-Scène XVII BARTHOLO, FIGARO, MARCELINE, @Brid'oison,SUZANNE, ANTONIO, LE COMTE
//Suzanne accoure, une bourse à la main.//
Suzanne
Monseigneur, arrêtez ! qu'on ne les marie pas : je viens payer madame avec la dot que ma maîtresse me donne.
Le Comte
//à part//
Rosine ! Au diable ! Il semble que tout conspire…
`→ jardin` //Il sort.//
<hr>
Rosine ! Au diable ! Il semble que tout conspire…
`→ jardin` //Il sort.//
;III-Scène XVIII BARTHOLO, ANTONIO, SUZANNE, @Figaro //MARCELINE, BRID'OISON//
Antonio
//voyant Figaro embrasser sa mère, dit à Suzanne.//
Ah ! oui, payer ! Tiens, tiens.
Suzanne
//se retourne//
J'en vois assez : sortons, ma tante.
<hr>
Figaro
//exalté//
Chagrin, c'est maintenant que je puis te défier !
Atteins-moi, si tu l'oses, entre ces deux femmes chéries. !
| `RAJOUT` |
|''Antonio'',//à Figaro//. <br>Pas tant de cajoleries, s’il vous plaît. |
`Arrêt sur image, Figaro entre Marceline et Suzanne à l'avant-scène, mes autres présents en retrait les regardant selonleur personnage : l'ensemble compose un tableau touchant à la Greuze !`
`Shunt au noir`
`//Sortie de scène en tant que comédiens.//`
<hr>
!!ACTE QUATRE, <br> ,,début, augmenté du monologue de l'acte V scène 3,,
|`Annonce 4`|
```
Imaginez que vous soyez en ce moment, là où vous êtes assis, dans la salle des fêtes du château : une galerie ornée de candélabres, de
lustres allumés, de fleurs, de guirlandes, en un mot,
prête pour la fête. Quel endroit magnifique, hein ?
Sur scène, c'est le grand vestibule attenant d'où les officiels et nos héros du jour vont faire leur entrée.
Je vous salue, et
►►► QUE LA FÊTE COMMENCE !
```
<hr>
;IV-Scène I FIGARO, SUZANNE.
`jardin → • Ils arrivent tout joyeux-amoureux`
Figaro
//la tenant à bras-le-corps//
Eh bien ! amour, es-tu contente ?
<hr>
Suzanne
Je vais sur le champ répandre la nouvelle : enfin nous allons fêter notre mariage ! Attends là !
//Elle sort en courant, toute joyeuse ! . Il veut l'embrasser.// `→ jardin`
; Monologue de Figaro //repris de l'acte V scène 3//
Figaro
//seul…//
//il jubile//
Non, monsieur le comte, vous ne l'avez pas… vous ne l'avez pas !
<hr>
//Bruit de foule dans la coulisse, Suzanne réapparait la première//
;IV-Scène I FIGARO, SUZANNE. //deuxième partie//
Figaro
Ah, Suzon, Suzon, que tu me rends heureux !
Suzanne
J'aime ta joie, parce qu'elle est folle !
<hr>
Suzanne
Et comment ?
Figaro
En fait d'amour, vois-tu, trop n'est pas même assez.
;IV-Scène II FIGARO, SUZANNE, LA COMTESSE.
//La Comtesse entre, avec le Comte maussade, suivis de la bande réjouie des villageois et autres personnages, venus pour la fête.//
//La Comtesse s'avance, tout sourire.//
La Comtesse
Ah ! j'avais raison de le dire : en quelque endroit qu'ils soient, croyez qu'ils sont ensemble.
```
saluts
```
<hr>
`Ceci est encore une simple proposition de règles du jeu à inscrire dans notre Charte de réunions à distance.`
!Charte
*Cette charte recueille les règles du jeu sur l'application desquelles tous les partipants sont d'accord.
*Tout participant peut proposer une modification de règle, ou une nouvelle règle du jeu
**soit en fin de séance,
**soit entre deux séances.
*Toute modification de la Charte est mis à l'ordre du jour d'une séance (à moins qu'elle ait déjà été acceptée sur le forum).
* Tout participant est fondé à faire sur-le-champ une observation à celui ou celle qui en ne respectant pas une règle de la Charte nuirait au déroulement prévu.
*Le moyen de communication actuellement utilisé est //Jitsi//. Vous pouvez l'utiliser pour vos rendez-vous :
**Vous convenez du nom de salle (pas trop bateau !)
**La "salle" s'ouvre avec le premier qui se connecte à// https://meet.jit.si/nom_de_salle_pas_trop_bateau // et se ferme avec le dernier qui quitte.
!!Avant la séance
*L'ordre du jour est connu
**Il a été convenu en fin d'atelier précédent
**Il a été confirmé/détaillé par écrit (mail du forum, Cahier et agenda Septuas), avec les liens de connexion, le code pour la participation audio au téléphone, et les liens aux textes utilisés,
* « Si je ne peux me rendre suffisamment disponible, je signale mes contraintes de temps avant la séance ».
* « Je fais connaître les sujets/activités qui me paraissent importants à travailler ou discuter. »
* « Je teste ma maîtrise des moyens de communication dont j'aurai besoin. »
** La "salle" de réunion vidéo est toujours ouverte. « Je peux venir y tester image, son, commandes. »
**« Si je n'arrive pas à résoudre un problème technique je demande suffisamment tôt une assistance. »
!!Déroulement de la séance
!!!Ouverture
*Réglages techniques son, cadrages
*Demandes éventuelles de modification du déroulement prévu.
*Infos brèves intéressant le groupe
* J'arrive en séance à l'heure qui a été convenue.
**Si j'arrive plus tard, j'attend la fin du travail en cours et ne l'interromp pas
!!!Déroulement
*Le temps de séance ne doit pas être utilisé pour une assistance technique (sauf si c'est l'objet de la séance).
**Si j'ai besoin d'une assistance je sors de la séance avec qui peut m'aider,
***Utiliser la main-levée ou le mode conversation textuelle (commande : "C") pour demander une aide.
***Pour l'assistance, examiner le problème par téléphone, ou mieux, dans une autre salle éphémère du nom qu'on conviendra : lien// https://meet.jit.si/nom-salle // (elle est immédiatement ouverte par qui la crée).
* Toute question hors-sujet (par rapport au déroulement en cours) est notée pour être traitée en fin de séance.
!!Fin de séance
*On traite les questions soulevées en cours de séance qui ont été notées.
*On fait un bilan de satisfaction pour débusquer les points d'amelioration à portée.
*On se met d'accord sur l'ordre du jour de la prochaine séance et, s'il y a lieu, sur la répartition des choses à faire dans l'intervalle.
!!Séance close
*Prises de rendez-vous pour préparer, répéter, ou pour une assistance,.<br>^^soit en restant en connection vidéo, soit par tél, mail, sms.
{{Nos priorités de progrès}}
[[Émotions : laméthode du « Si »::'Être vrai pour faire vrai']]
Alors, à nos italiennes pour la chasse aux blancs !
!!''Scène IX''
!!!!!''LES FEMMES susdites.''
;ARTHÉNICE, //après avoir toussé et craché.//
:L'oppression dans laquelle nous vivons sous nos tyrans, pour être si ancienne, n'en est pas devenue plus raisonnable ;
;FEMME1
:n'attendons pas que les hommes se corrigent d'eux-mêmes.
;ARTHÉNICE
:L'insuffisance de leurs lois a beau les punir de les avoir faites à leur tête et sans nous, rien ne les ramène à la justice qu'ils nous doivent, ils ont oublié qu'ils nous la refusent.
;MADAME SORBIN
:Aussi le monde va, il n'y a qu'à voir.
;ARTHÉNICE
:Dans l'arrangement des affaires, il est décidé que nous n'avons pas le sens commun,
;FEMME2
:Tellement décidé que cela va tout seul, et que nous n'en appelons pas nous-mêmes.
;FEMME4
:Hé !
:que voulez-vous ?
:On nous crie dès le berceau : vous n'êtes capables de rien, ne vous mêlez de rien, vous n'êtes bonnes à rien qu'à être sages.
;FEMME3
:On l'a dit à nos mères qui l'ont cru, qui nous le répètent; on a les oreilles rebattues de ces mauvais propos ;
;UNE DES FEMMES
:nous sommes douces, la paresse s'en mêle, on nous mène comme des moutons.
;ARTÉNICE
:Pénétrons-nous donc un peu de ce que nous valons, non par orgueil, mais par reconnaissance.
;LINA
:Ah !
:si vous entendiez Persinet là-dessus, c'est lui qui est pénétré suivant nos mérites.
;FEMME2
:Persinet n'a que faire ici ;
;FEMME1
:il est indécent de le citer.
;ARTHÉNICE
:Examinons ce que nous sommes, et arrêtez-moi, si j'en dis trop.
:Qu'est-ce qu'une femme, seulement à la voir ?
:En vérité,
:ne dirait-on pas que les dieux en ont fait l'objet de leurs plus tendres complaisances ?
;FEMME4
:Plus j'y rêve, et plus j'en suis convaincue.
;FEMME1
:Cela est incontestable.
;FEMME3
:Absolument incontestable.
;FEMME2
:C'est un fait.
;ARTHÉNICE
:Regardez-la, c'est le plaisir des yeux.
;FEMME1
:Dites : les délices.
;ARTHÉNICE
:Souffrez que j'achève.
;FEMME4
:N'interrompons point.
;FEMME1
:Oui, écoutons.
;FEMME2
:Un peu desilence.
;FEMME1
:C'est notre chef qui parle.
;FEMME3
:Et qui parle bien.
;LINA
:Pour moi, je ne dis mot.
;MADAME SORBIN
:Se taira-t-on ?
:Car cela m'impatiente !
;ARTHÉNICE
:Je recommence :
:regardez-la, c'est le plaisir des yeux ;
:les grâces et la beauté,
:déguisées sous toutes sortes de formes,
:se disputant à qui versera le plus de charmes sur son visage et sur sa figure.
;FEMME3
:Eh !
:qui est-ce qui peut définir le nombre et la variété de ces charmes ?
:Le sentiment les saisit,
;FEMME2
:nos expressions n'y sauraient atteindre.
://(Toutes les femmes se redressent ici. Arthénice continue.)//
;ARTHÉNICE
:La femme a l'air noble, et cependant son air de douceur enchante.
://(Les femmes ici prennent un air doux.)//
;FEMME4
:Nous voilà.
;MADAME SORBIN
:Chut !
;ARTHÉNICE
:C'est une beauté fière, et pourtant une beauté mignarde ;
:elle imprime un respect qu'on n'ose perdre, si elle ne s'en mêle ;
:elle inspire un amour qui ne saurait se taire ;
;FEMME2
:dire qu'elle est belle, qu'elle est aimable, ce n'est que commencer son portrait ;
;FEMME4
:dire que sa beauté surprend, qu'elle occupe, qu'elle attendrit, qu'elle ravit, c'est dire, à peu près, ce qu'on en voit, ce n'est pas effleurer ce qu'on en pense.
;MADAME SORBIN
:Et ce qui est encore incomparable, c'est de vivre avec toutes ces belles choses-là,
:comme si de rien n'était ;
:voilà le surprenant !
:Mais ce que j'en dis n'est pas pour interrompre, paix !
;ARTHÉNICE
:Venons à l'esprit,
:et voyez combien le nôtre a paru redoutable à nos tyrans ;
:
:jugez-en par les précautions qu'ils ont prises pour l'étouffer,
:pour nous empêcher d'en faire usage ;
;FEMME1
:c'est à filer,
;FEMME2
:c'est à la quenouille,
;FEMME3
:c'est à l'économie de leur maison,
;MADAME SORBIN
:c'est au misérable tracas d'un ménage,
;FEMME4
:c'est à faire des noeuds,
;FEMME1 FEMME2
:Voilà à quoi ces messieurs nous condamnent.
;;FEMME3 FEMME4
:Véritablement, cela crie vengeance.
;FEMME1
:Ou bien, c'est à savoir prononcer sur des ajustements,
;FEMME2
:c'est à les réjouir dans leurs soupers,
;FEMME3
:c'est à leur inspirer d'agréables passions,
;FEMME4
:c'est à régner dans la bagatelle,
;FEMME3
:c'est à n'être nous-mêmes que la première de toutes les bagatelles ;
;ARTHÉNICE
:voilà toutes les fonctions qu'ils nous laissent ici-bas ;
;FEMME2
:à nous qui les avons polis,
;FEMME1
:à nous qui leur avons donné des moeurs,
;FEMME2
:à nous qui avons corrigé la férocité de leur âme ;
;FEMME3
:à nous, sans qui la terre ne serait qu'un séjour de sauvages, qui ne mériteraient pas lenom d'hommes.
;FEMME4
:Ah !
:les ingrats ;
;ARTHÉNICE
:allons, Mesdames, supprimons les soupers dès ce jour.
;FEMME4
:Et pour des passions, qu'ils en cherchent.
;MADAME SORBIN
:En un mot comme en cent, qu'ils filent à leur tour.
;ARTHÉNICE
:Il est vrai qu'on nous traite de charmantes, que nous sommes des astres, qu'on nous distribue des teints de lis et de roses, qu'on nous chante dans les vers, où le soleil insulté pâlit de honte à notre aspect, et, comme vous voyez, cela est considérable ;
;FEMME2
:et puis les transports, dont on nous régale,
;FEMME3
:les extases,
;FEMME1
:les désespoirs.
;MADAME SORBIN
:Vraiment, c'est de la friandise qu'on donne à cesenfants.
;FEMME4
:Friandise, dont il y a plus de six mille ans que nous vivons.
;ARTHÉNICE
:Et qu'en arrive-t-il ?
;FEMME1
:Que par simplicité nous nous entêtons du vil honneur de leur plaire,
;FEMME3
:et que nous nous amusons bonnement à être coquettes,
;FEMME2
:Eh, nous le sommes, il en faut convenir.
;FEMME4
:Est-ce notre faute ?
:Nous n'avons que cela à faire.
;ARTHÉNICE
:Sans doute ;
:mais ce qu'il y a d'admirable, c'est que la supériorité de notre âme est si invincible, si opiniâtre, qu'elle résiste à tout ce que nous disons là,
;FEMME2
:Elle éclate et perce à travers cet avilissement où nous tombons ;
;FEMME1
:nous sommes coquettes, d'accord, mais notre coquetterie même est un prodige.
;;FEMME3
:Oh oui !
:tout ce qui part de nous est parfait.
;ARTHÉNICE
:Quand je songe à tout le génie, toute la sagacité, toute l'intelligence que chacune de nous y met en se jouant,
:et que nous ne pouvons mettre que là !
;FEMME3
:cela est immense ;
;FEMME4
:il y entre plus de profondeur d'esprit qu'il n'en faudrait pour gouverner deux mondes comme le nôtre,
;FEMME1
:et tant d'esprit est en pure perte.
;MADAME SORBIN, //en colère.//
:Ce monde-ci n'y gagne rien ;
:voilà ce qu'il faut pleurer.
;ARTHÉNICE
:Tant d'esprit n'aboutit qu'à renverser de petites cervelles qui ne sauraient le soutenir, et qu'à nous procurer de sots compliments, que leurs vices et leur démence, et non pas leur raison, nous prodiguent;
;FEMME4
:leur raison ne nous a jamais dit que des injures.
;MADAME SORBIN
:Allons, point de quartier ;
:je fais voeu d'être laide, et notre première ordonnance sera que nous tâchions de l'être toutes.
://(À Arthénice.)// N'est-ce pas, camarade ?
;ARTHÉNICE
:J'y consens.
;FEMME3
:D'être __laides__ ?
;FEMME4
:Il me paraît à moi, que c'est prendre à gauche.
;FEMME2
:Je ne serai jamais de cet avis-là, non plus.
;FEMME1
:Eh !
:mais qui est-ce qui pourrait e1n être ?
;FEMMES 1,2,3 et 4
:Quoi ! S'enlaidir exprès pour se venger des hommes ?
;FEMME1
:Eh !
:tout au contraire, embellissons-nous, s'il est possible, afin qu'ils nous regrettent davantage.
;FEMME2
:Oui, afin qu'ils soupirent plus que jamais à nos genoux,
;FEMME3
:qu'ils meurent de douleur de se voir rebutés ;
;FEMME4
:voilà ce qu'on appelle une indignation de bon sens, et vous êtes dans le faux, Madame Sorbin, tout à fait dans le faux.
;MADAME SORBIN
:Ta, ta, ta, ta, je t'en réponds, embellissons-nous pour retomber ;
:de vingt galants qui se meurent à nos genoux, il n'y en a quelquefois pas un qu'on ne réchappe, d'ordinaire on les sauve tous ;
:ces mourants-là nous gagnent trop, je connais bien notre humeur, et notre ordonnance tiendra ;
:__On se rendra laides__ ;
:Au surplus,
:ce ne sera pas si grand dommage, Mesdames,
:et vous n'y perdrez pas plus que moi.
;FEMME4
:Oh !
:doucement, cela vous plaît à dire, vous ne jouez pas gros jeu, vous ;
:votre affaire est bien avancée.
;FEMME2
:Il n'est pas étonnant que vous fassiez si bon marché de vos grâces.
;FEMME3
:On ne vous prendra jamais pour un astre.
;LINA
:Tredame, ni vous non plus pour une étoile.
;FEMME1
:Tenez, ce petit étourneau, avec soncaquet.
;MADAME SORBIN
:Ah !
:pardi, me voilà bien ébahie ;
:eh !
:dites donc, vous autres pimbêches, est-ce que vous croyez être jolies ?
;FEMME4
:Eh !
:mais, si nous vous ressemblons, qu'est-il besoin de s'enlaidir ?
;FEMME2
:Par où s'y prendre ?
;FEMME3
:Il est vrai que la Sorbin en parle bien à son aise.
;MADAME SORBIN
:Comment donc, la Sorbin ?
:M’appeler la Sorbin ?
;LINA
:Mamère, une Sorbin !
;MADAME SORBIN
:Me perdre le respect de cette manière !
;ARTHÉNICE, //à l'autre femme.//
:Vous avez tort, ma bonne, et je trouve le projet de Madame Sorbin très sage.
;FEMME1
:Ah !
:je le crois ;
:vous n'y avez pas plus d'intérêt qu'elle.
;ARTHÉNICE
:Qu'est-ce que cela signifie ?
:M'attaquer moi-même ?
;MADAME SORBIN
:Mais voyez ces guenons, avec leur vision de beauté ;
:oui, Madame Arthénice et moi, qui valons mieux que vous, voulons, ordonnons et prétendons qu'on s'habille mal, qu'on se coiffe de travers, et qu'on se noircisse le visage au soleil.
;ARTHÉNICE
:Et pour contenter ces femmes-ci, notre édit n'exceptera qu'elles, il leur sera permis de s'embellir,
:... si elles le peuvent.
;MADAME SORBIN
:Ah !
:que c'est bien dit ;
:oui, gardez tous vos affiquets, corsets, rubans, avec vos mines et vos simagrées qui font rire, avec vos petites mules ou pantoufles, où l'on écrase un pied qui n'y saurait loger, et qu'on veut rendre mignon en dépit de sa taille, parez-vous, parez-vous, il n'y a pas de conséquence.
;FEMME1
:Juste ciel !
:qu'elle est grossière !
:N'a-t-on pas fait là un beau choix ?
;ARTHÉNICE
:Retirez-vous ;
:vos serments vous lient, obéissez ;
:je romps la séance.
;FEMME3
:Obéissez ?
:Voilà de grands airs.
;FEMME2
:Il n'y a qu'à se plaindre, il faut crier.
;TOUTES LES FEMMES
:Oui, crions, crions, représentons.
;MADAME SORBIN
:J'avoue que les poings me démangent.
;ARTHÉNICE
:Retirez-vous, vous dis-je, ou je vous ferai mettre aux arrêts.
;FEMME4, //en s'en allant avec les autres.//
:C'est votre faute, Mesdames, je ne voulais ni de cette boutiquière, ni de cette pimbêche,
:je n'en voulais pas,
:mais l'on ne m'a pas écoutée.
!!!!!''FIN''
^^[[Source|https://www.test-achats.be/hightech/telecom/dossier/appels-video]]^^
* Les interlocuteurs doivent utiliser le même service.
* Il faut un accès à un réseau wifi ou 4G.
|>| !Google Duo |
|Disponible sur le web (tout appareil connecté) et via des applis pour smartphones et tablettes Android et iOS. <br>Possibilité de laisser un message vidéo lorsque le correspondant ne répond pas. <br>Très bonne qualité vidéo en wifi. Mode économie de data efficace |Pour les appels uniquement ; pas de messages texte ou audio.<br>Limité à huit interlocuteurs simultanés. |
|>| !~FaceTime |
|Rien à installer, l’appli est intégrée à iOS et macOS. <br>Compatibilité des correspondants visible directement dans les Contacts. <br>Très bonne qualité d’appels audio et vidéo en wifi. |Fonctionne uniquement entre appareils Apple. <br>Appli réservée aux appels : pour les messages texte, audio ou vidéo, il faut utiliser iMessage. <br>Gestion des appels de groupe moins intuitive. |
|>| !Messenger |
|intégrée à Facebook. <br>Disponible sur beaucoup de plateformes : applis mobiles, Windows, web… |Facebook obligatoire et synchronisation les seuls contacts de Facebook, pas avec ceux du téléphone. <br>Publicités. <br>Mauvaise qualité vidéo. <br>Chiffrement optionnel restreint aux messages texte. |
|>| !Signal |
|Recommandée par Edward Snowden. <br>Cryptage et onfidentialité. <br>Sous Android, possibilité de sauver les conversations cryptées. <br>Très bonne qualité vidéo en wifi. |Appel audio et vidéo uniquement sur smartphones et tablette. <br>Consomme beaucoup pour les appels vidéo. |
|>| !Skype |
|Accessible sur de nombreuses plateforme. <br>Appels vers des fixes et mobiles contre achat de crédit ou forfait. <br>Très bonne qualité vidéo en wifi. |Disponible seulement sur les navigateurs EDGE et Chrome. <br>Manque de simplicité. <br>Chiffrement restreint aux messages et appels vocaux. |
|>| !Snapchat |
|Possibilité de passer des appels audio et vidéo. <br>Filtres et options fun destinés à un jeune public cible. |Davantage un réseau social. <br>Uniquement sur smartphone et tablette. <br>Liste des contacts liée au compte et non au téléphone. <br>Mauvaise qualité vidéo, même en wifi. <br>Peu claire sur la façon de protéger les échanges. |
|>| !~WhatsApp |
|Très répandue et disponible sur smartphone et ordinateur. <br>Diverses options de personalisation. |Liée à un numéro de mobile, reste liée à un seul appareil et n’est pas disponible sur tablette. <br>Pas d’appels audio ou vidéo sur la version pour ordinateur. |
;Compère, commère,
:Les noms par lesquels les parents appellent le parrain et la marraine de leur enfant.
:Symétriquement, le parrain et la marraine appellent //commère// la mère de leur filleul, et //compère// le père de celui-ci.
"""La montre se portait dans une petite poche, à la taille, à l'intérieur des chausses et non dans le gilet.
Le cordon s'arborait donc sur le ventre."""
[[Déclarations du jour|https://www.dailymotion.com/video/x7t07c8?playlist=x65cgm]] - [[À la une|https://www.dailymotion.com/video/x7t06qc?playlist=x5nmbq]]
!!!!L’Astronome de Didier Von Cauwelaert<br>^^(scène 1)^^
!Dans la salle d’attente du psychanalyste
!!!!!Mûre et Agnès
//^^( Découpage suggéré pour la diction )^^//
;MURE
://(au bout d’un moment.)//. Vous attendez ?
;AGNES.
:Non, non.
;MURE
://(un peu surprise)//. Ah bon.
://(Un temps.)// J’avais l’impression que vous attendiez.
;AGNES.
:Oui.
://Mûre la regarde d’une façon bizarre.
:Agnès sourit, placide.
:Un temps.//
;AGNES
://(tricotant)//. Je pense que ça doit être vous.
;MURE.
:Pardon ?
;AGNES.
:Que j’attendais.
;MURE.
:Comment cela ?
;AGNES.
:Il est cinq heures.
;MURE.
:Et alors ?
;AGNES.
:On devait se rencontrer à cinq heures.
://Un temps.
:Mûre ôte ses lunettes noires, la regarde.//
;MURE.
:Je ne comprends pas.
;AGNES.
:Eh bien… j’ai rendez-vous.
:Comme vous.
;MURE.
:A cinq heures ?
:C’est encore une secrétaire qui n’a rien compris…
:Vraiment !
:Quand on pense au nombre de chômeurs !
:Et elle n’est même pas là, il n’y a personne,
:elle est allée prendre le thé…
:Ah ! non…
:Et j’avais peur d’être en retard !
://(Sourire d’Agnès, qui la déconcerte.
:Elle va s’asseoir.)//
:Vous habitez le quartier ?
;AGNES.
:Oui.
;MURE.
:Moi aussi,
:hélas !
:Je voulais aller chez ~Rosen-Beaulieu,
::il paraît qu’il est extraordinaire,
:seulement il ne prend que des gens de son quartier.
:Je n’allais pas déménager.
:Et puis même,
::il paraît qu’il y a une liste d’attente,
::ça prend des années…
:Bientôt il faudra inscrire les enfants avant leur naissance.
://(Elle prend une cigarette, se ravise, la remet dans son sac.)//
:Et à part ça,
:il est comment ? Ambrosetti…
;AGNES.
:Ah, je ne sais pas.
:Je ne l’ai jamais vu.
;MURE.
:Ah bon ?
:Vous aussi, c’est la première fois ?
;AGNES.
:Non, non.
;MURE.
:Qu’est-ce que ça veut dire, ça ?
:En plus, il annule les rendez-vous ?
;AGNES.
:Mais non, puisque nous sommes là.
;MURE
://(se contenant)//. Bon alors, écoutez,
:j’ai pris rendez-vous avec le docteur Ambrosetti __il y a quatre mois__, hein?
:Bon.
:J’estime…
::je dis bien : j’estime…
:Non,
:au moins, euh… il est là ?
://Agnès a un regard vers la porte du bureau.//
;AGNES.
:Oh, je ne pense pas.
;MURE.
:Vous ne pensez pas.
:Et pourquoi,
:il est en retard,
:il est mort,
:il est malade ?
;AGNES.
:Il est en analyse.
:En __auto__-analyse.
;MURE.
:Qu’est-ce qu’il a ?
;AGNES.
:De toute façon il ne reçoit plus que ses confrères.
:Ils s’analysent entre eux.
;MURE.
:Et nous, alors ?
;AGNES.
:Nous aussi.
:On s’analyse entre nous.
://Un temps.//
;MURE.
:Alors,
:on est là…
;AGNES.
:Oui.
://(Sourire.)// Mais ce n’est pas plus désagréable.
;MURE.
:Non,
:mais enfin c’est un peu inconséquent.
:Je prends rendez-vous avec un spécialiste,
:je remplis des fiches à n’en plus finir
::que j’envoie par la poste pour préparer l’entretien
:et…
;AGNES.
:Oh ! ça, rassurez-vous,
:je peux vous dire que c’est bien fait.
:Ils mettent les fiches dans un ordinateur
:et c’est l’ordinateur qui sélectionne…
::d’après les personnalités,
::les problèmes de chacun.
:Et les gens complémentaires se rencontrent.
:C’est comme une agence matrimoniale.
;MURE
://(la regarde)//. Et vous êtes complémentaire ?
;AGNES
://(souriant)//. Faut croire…
;MURE
://(ramassant son sac)//. Oui alors, c’est très gentil,
:mais je n’ai pas dépensé deux mille francs pour…
:pour…
:C’est un monde !
:On ne peut plus aller nulle part !
::Les avocats passent leur temps à défendre leurs confrères devant le Conseil de l’Ordre,
::les médecins se font soigner,
::les architectes se construisent des maisons…
:Et nous
:pendant ce temps
::on doit se mettre l’essence dans la voiture,
::on est obligés de se servir au restaurant,
::et quand on a mal à une dent
:::on se l’arrache ?
:On s’autogère, quoi !
:C’est ça, le communisme ?
;AGNES
://(tricotant)//. Oui,
:ils n’auraient peut-être pas dû nationaliser les professions libérales.
;MURE
://(vivement)//. Vous êtes contestataire ?
;AGNES.
:Oh moi, vous savez… J’ai deux enfants.
://Un temps.//
;MURE
://(poursuivant)//. Et c’est avec notre argent, encore.
:Un impôt de plus.
:Comme ça maintenant,
::même si on n’a pas besoin d’un avocat,
::on le paie.
:C’est ce qu’ils appellent la solidarité.
:D’ailleurs plus personne n’a envie de travailler.
::Autrefois on voulait __s’élever__,
:maintenant on veut être __couvert__.
:Mais le nivellement par le bas, ça n’a qu’un temps,
::ils commencent à s’en rendre compte.
:Vous allez voir,
::pour remonter le niveau intellectuel,
::ils vont finir par nous balancer un impôt sur la connerie.
::Au lieu de déclarer les revenus, on fera des tests.
::Les gens iront dans un isoloir, répondre à un questionnaire.
::Ca remplacera les élections.
:Ils ne voudront plus être cons,
::ça coûte trop cher,
::ils feront des efforts.
::Plus d’intellectuels,
::plus de professeurs :
:le fisc !
://(Un temps.)//
:Moi j’étais socialiste à cause de la droite.
;AGNES.
:Ils s’appellent Christophe et Guillaume.
;MURE.
:Ah bon.
://(La regardant.)// Hein ?
;AGNES.
:Mes enfants.
://Un temps.
:Mûre hésite à poser son sac.//
;MURE.
:ET vous pensez qu’on a quelque chose à se dire ?
;AGNES.
:On va bien voir.
:[…]
//Extrait de L’Astronome Didier Von Cauwelaert, Papiers, 1986, p.5-7. //
|auteur||
|distribution|Livia Muriel|
|temps|08 mn|
|prochaines|Jeanne d'Arc; Mouffetard |
|anciennes|Jeanne d'Arc;|
[[Captation Jeanne d'Arc|https://photos.app.goo.gl/QmaVXf9USxT7p8RDA]]
[img(30%,)[23 fév 2018|http://preview.ibb.co/hDmfFx/Snapshot_267.png][https://photos.app.goo.gl/8sGNaanKYXnMekDR2]] [img(30%,)[mardi 19 février 2018|http://image.ibb.co/giq5DH/Snapshot_254.png][https://photos.app.goo.gl/HJUdBy2wsLjxwQKP2]]
---
!!Dernière Mise à Jour
!!!17 janvier
# Ordredu jour 17/1
# [[Garde à Vue]] : Corrections d'erreurs d'orthographe <br>Découpage diction rôle du Commissaire
# [[Le Malade Imaginaire - III sc 7 à 14]] : Maintenant le lien à la scène suivante affiche bien celle-ci à partir de sa première ligne !
# Lorsque le texte ou la suite de textes affichés devien très long, le nouveau bouton `triangle rouge` en bas à droite de l'écran vous permet de remonter immédiatement au début du texte affiché.
!!!!Rappel :
* Le chevron `«` ou `»` en haut à droite permet d'afficher ou de masquer le menu (recherche, onglets, commandes)
* N'oubliez pas que dans ce menu, l'icone `Palette` vous permet de choisir un jeu de couleur adapté à vos goûts.
---
,,→ [[Retour au monologue de Judith|LA FEMME JUIVE • Brecht]],,
!!!!!!Source :<br>''ÉLYSE BRUNEAU''<br>COMMUNICATIONS PARADOXALES ET CONFLIT INTÉRIEUR:<br>ANALYSE DE "LA GRAND-PEUR ET MISÈRE DU ~IllE REICH" DE BERTOLT BRECHT<br>Mémoire dans le cadre du programme "Littérature .et arts de la scène et de l'écran"<br>UNIVERSITÉ LAVAL - QUÉBEC
!!!!1. IL FAUT ( POUR TE PROTÉGER )
:Judith commence par lui dire qu'elle est « //restée trop longtemps déjà//», qu'il doit l'excuser, mais que maintenant il est temps pour elle de partir. «//Elle s'arrête, réfléchit, et recommence autrement//».
::
:Elle le supplie de ne pas la retenir, qu'elle ne lui cause que du tort, lui répliquant qu'elle sait bien qu'il n'est « //pas un poltron»// et qu'il ne craint « //pas la police// », mais que si elle demeure auprès de lui, ils finiront par lui interdire l'accès à sa clinique.
::
:Tout en simulant que son mari la retient, Judith lui dit que c'est par pur égoïsme de sa part et rien d'autre si elle quitte la maison, qu'elle ne supporterait pas de le voir malade et «//passant [son] temps à feuilleter des revues//». Elle termine ce premier essai en implorant Fritz de garder silence: -' « //Ne dis rien ...// »
:«//Elle s'arrête de nouveau//», puis recommence sa mise en scène, mais cette fois-ci
!!!!2. EN HAUSSANT LE TON : REPROCHES
:Brusquement, Judith reproche à son mari (ponctuation discordante anticipée) d'avoir changé (contredisant de ce fait l'affirmation faite à son amie Anne précédemment).
::
:Elle l'accuse aussi de tenir des propos méprisants envers son « //peuple// » et de sans cesse lui « //répéter [qu'elle n'a] jamais fait preuve d'un tel nationalisme juif// », ce à quoi elle rétorque: « //Évidemment je deviens nationaliste. C'est un mal contagieux// ».
::
:Elle s'arrête, tente de se calmer et de reprendre ses esprits,
!!!!3. SA DÉTRESSE : PLUS DE COMMUNICATION
:Judith recommence en métacommuniquant sur le fait qu'elle et lui ne communiquent plus jamais sur ce qu'ils pensent, sur ce qu'ils vivent, sur la peine qu'ils ressentent.
::
:Elle confesse qu'elle n'arrive même plus à lui parler quand elle le regarde, pressentant que «//tout est déjà réglé//» de toute façon ..
!!!!4. JUDITH DÉPORTE SA RÉVOLTE SUR LA SITUATION
:(rétroaction positive), répliquant à pleine voix à son interlocuteur invisible: « //Qu'est-ce qui leur a pris? Qu'est-ce qu'ils veulent? Qu'est-ce que je leur fais? //».
::
:Elle affirme avoir toujours mené un bon train de vie, et se demande pourquoi dorénavant «//seules les femmes blondes auraient le droit de vivre ainsi? //».
!!!!5. FINALEMENT, ELLE SE REPROCHE À ELLE-MÊME D'AVOIR CRU PENDANT SI LONGTEMPS AUX GRANDES IDÉES QUE SON MARI VÉHICULAIT,
:À savoir qu'il Y a des individus sur terre plus précieux que d'autres, et que certains, en cas de maladie, avaient le droit aux médicaments et d'autres non: «// Et j'approuvais, imbécile que j'étais! lis ont fait aujourd'hui une nouvelle classification de ce genre, et maintenant je suis de ceux qui valent moins que rien. Je l'ai bien mérité//» (relation de type symétrique face à son mari « virtuel »).
::
:Judith poursuit son discours en suppliant Fritz d'arrêter d'agir comme s'il ne voyait rien, qu'elle est prête à tout sauf une chose, qu'elle et son mari ne se regardent « //pas en face pendant la dernière heure qui [leur] reste//» : « //Il n'ont pas le droit d'obtenir cela de nous, ces menteurs qui contraignent tout le monde au mensonge// » ..
!!!!6. NOSTALGIE DES MOMENTS DE BONHEUR
:Elle invoque avec nostalgie certains moments de bonheur vécus à une époque où son mari pouvait encore la taquiner en faisant référence à son « //type juif// ». «//Aujourd'hui, pourquoi tergiverser//», la réalité désormais, c'est que si elle reste auprès de lui, ce n'est qu'«// une question de temps// » avant que son poste de médecin-chef lui soit enlevé, que déjà ses collègues de la clinique ne le saluent plus, et «//que déjà, la nuit, [il n'arrive] plus à dormir// ».
!!!!7. DÉSORIENTÉE ET ABATTUE, ELLE CRAQUE
:Désorientée et abattue par toutes ces émotions, Judith avoue à Fritz qu'elle n'en peut tout simplement plus, que toutes les idées se mélangent et s'entrechoquent en elle: « //Je ne veux pas que tu me dises que je ne dois pas partir. Et je fais vite, pour ne pas t'entendre me dire que je dois partir//».
!!!!8. IMPOSSIBILITÉ DE COMPRENDRE,
:Elle soutient malgré tout ne pas être en colère, pour spontanément affirmer le contraire: « //Si, je le suis// ». -De nouveau en furie contre elle-même et contre le monde entier, elle exige des explications, elle désire comprendre pourquoi on en veut à sa religion, à la forme de son nez, à la couleur de ses cheveux.
!!!!9. ENRAGÉE
:Enragée de devoir «quitter cette ville, où [elle est] née, pour qu'ils n'aient pas à [lui] donner [sa] ration de beurre», elle se demande bien quels genres d'hommes mauvais, incluant son mari, peuvent être à l'origine d'un tel chaos: «//Vous inventez la théorie des quanta et vous vous laissez commander par des brutes qui vous donnent le monde à conquérir, mais qui vous retirent le droit de choisir votre femme// » (dénonce une situation paradoxale).
::
:Comme si son mari la suppliait de se montrer raisonnable, elle lui réplique que «// dans un monde pareil, à quoi sert la raison?// ».
::
:Judith accuse Fritz d'être un monstre, le qualifie de lâche et d'être là à regarder « //sa femme faire ses bagages// » sans rien dire: « //Les murs ont des oreilles, n'est-ce pas· ?// ».
::
:Dans une dernière envolée, elle lui reproche à lui et au reste du monde ce silence qui assassine et n'épargne personne.
!!!!10. DÉCOURAGÉE
:Elle déclare à Fritz son éternel amour, tout en lui avouant que le prochain homme qu'elle aura devra avoir le « //droit// » de la garder.
::
:Judith ordonne à Fritz de s'ouvrir les yeux et d'arrêter de se raconter des histoires, qu'ils savent très bien tous les deux qu'il ne pourra pas lui faire parvenir de l'argent, et que malgré ce que les gens disent, les choses dureront plus que quelques semaines: « //Alors ne me dis pas: en somme, c'est l'affaire de quelques semaines, en me donnant le manteau de fourrure dont je n'aurai besoin que l'autre hiver//» (paradoxe).
!!!!11. RAVAGÉE
:Elle termine en disant à son mari que jamais elle n'acceptera de croire que toute cette histoire, que toutes les atrocités qu'ils subissent ne sont au fond qu'un triste « //malheur// », mais qu'ils doivent plutôt assumer haut et fort que c'est une véritable « //honte// ». Elle s'écroule et garde silence.
::::,,→ [[Retour au monologue de Judith|LA FEMME JUIVE • Brecht]],,
@@background-color:#DFD;color:#070;font-variant: small-caps;
{{!!title}}
@@
"""
Je dois retrouver le tableau où j’habitais.
Je dois courir
pour rattraper ce qui s’est effacé.
Cette vitesse m’est essentielle.
Je dois souffler pour que le feu reprenne.
Je suis là,
au cœur des choses,
je n’ai qu’à rassembler les morceaux,
tout devrait être simple.
J’allume une bougie pour accueillir un nouveau jour.
Il est très tôt.
Rester là,
attentive à tout ce qui fera irruption dans la chambre.
J’ouvre la fenêtre.
J’aime le début des jours.
Les premières lumières,
les premiers bruits.
Les nouveaux visages,
les premières phrases.
Régulièrement,
j’ouvre mon livre et j’y trace une couleur.
Je cours vers lui,
mais il marche toujours trop vite.
Il me fait signe,
je n’entends pas.
Il invente sous mes yeux une langue étrangère que je dois approcher,
lettre à lettre,
pore à pore.
Il me souffle que ma langue est étrangère,
que je dois retrouver le tableau où j’habitais,
juste avant que j’apprenne à parler.
Je ne comprends pas toujours ce qu’il me dit,
mais je le suis.
Il me souffle encore que je dois retrouver tout ce que j’ai entendu,
tout ce qui peut-être appartenait à l’autre génération,
bien avant que la France ne vienne //« protéger »//
la Tunisie.
Je dois rejoindre cette respiration qui court sous mes mots,
cette matière qui n’est
ni du language ,
ni des couleurs,
ni des odeurs,
ni des paysages,
non,
autre chose qui traverse le regard,
qui donne l’élan.
C’est cela,
la matière du tableau où j’habitais.
"""
MESROUR
:Il aurait fallu être aveugle pour ne pas voir que Mesrour était borgne.
:
:Il l’était de naissance ;
:mais
:c’était un borgne
::si content de son état
::qu’il ne s’était jamais avisé de désirer un autre œil.
:
:Il était simple crocheteur,
:et
:n’avait d’autre trésor que ses épaules ;
:
:mais il était
::heureux,
:[...]
:
:il travaillait le
:matin,
:mangeait et buvait le soir,
:dormait la nuit,
::en sorte que le soin de l’avenir ne le troublait jamais dans la jouissance du présent.
:
:Il était,
:comme vous le voyez,
:tout à la fois
::borgne,
::crocheteur,
:::et philosophe.
:
:
:Il vit passer dans un char brillant une grande princesse
::qui avait un œil de plus que lui,
:::ce qui ne l’empêcha pas de la trouver fort belle ;
:
:et,
:
:comme les borgnes ne diffèrent des autres hommes
:qu’en ce qu’ils ont un œil de moins,
::il en devint éperdument amoureux.
:[...]
:comme il n’y a point d’amour sans espérance,
:et que notre crocheteur aimait,
::il espéra.
:
:[...]
:Une bête fauve, effraya les chevaux,
:Il coupa les traits avec une adresse merveilleuse.
:la dame en fut quitte pour la peur.
:
:
:« je n’oublierai jamais que je vous dois la vie ;
:demandez-moi tout ce que vous voudrez ;
:tout ce que j’ai est à vous.
:
:— Ah !
:je puis avec bien plus de raison vous en offrir autant ;
:mais,
:en vous l’offrant,
:je vous en offrirai toujours moins :
::car je n’ai qu’un œil,
:
:mais un œil qui vous regarde vaut mieux
:que deux yeux qui ne voient point les vôtres.
:
:»
:
:La dame sourit,
::car les galanteries d’un borgne sont toujours des galanteries,
:::et les galanteries font toujours sourire.
:[...]
:
:Elle avait de fort petits pieds,
::et des souliers encore plus petits que ses pieds,
:en sorte qu’elle n’était ni faite ni chaussée de manière à soutenir une longue marche.
:[...]..
:
:Elle tomba de fatigue sur la place.
:[...]
:Elle essaie de se relever,
:mais retombe bientôt,
:et si malheureusement
::::que
:ce qu’elle laissa voir à Mesrour lui ôta le peu de raison que la vue du visage de la princesse avait pu lui laisser.
:
:Il oublia
::qu’il était crocheteur,
::qu’il était borgne,
:et il ne songea plus à la distance que la fortune avait mise entre elle et lui ;
:à peine se souvint-il qu’il était amant,
::car
::il manqua
:::à la délicatesse qu’on dit inséparable d’un véritable amour,
::et
::qui en fait quelquefois le charme,
:::et,
:::plus souvent,
::::l’ennui ;
:
:Il se servit des droits que son état de crocheteur lui donnait à la brutalité,
::il fut brutal
::et heureux.
:
:[...]
:
:« Puissant Mahomet !
:accorde-moi encore la faveur,
:d’être à ses yeux ce qu’elle serait à mon œil s’il faisait jour »
:
:Il finit de prier,
:et continua de jouir.
:.
:L’aurore, toujours trop diligente pour les amants,
:surprit Mesrour et Mélinade dans l’attitude où elle aurait pu être surprise elle-même un moment auparavant avec le Prince Tithon.
:
:C'est un petit chat noir
::effronté comme un page,
:
:Je le laisse jouer sur ma table
:souvent.
:
:Quelquefois
:il s'assied
:sans faire de tapage,
:
:On dirait un joli presse-papier vivant !
:
:Rien en lui,
:pas un poil de son velours
: ne bouge !
:
:Longtemps,
:il reste là,
: noir
: sur un feuillet blanc,
:
:A ces minets tirant leur langue de drap rouge, `??`
:Qu'on fait pour essuyer les plumes, ressemblant. `??`
:
:Quand il s'amuse, Il est extrêmement comique,
: Pataud et gracieux,
: tel un ourson drôlet.
:Souvent
:je m'accroupis pour suivre sa mimique Quand on met devant lui
: la soucoupe de lait.
::Tout d'abord
::de son nez délicat
::il le flaire,
::la frôle,
::puis,
::à coups de langue très petits,
:Il le happe !
::et dès lors il est à son affaire
:Et l’on entend, pendant qu'il boit,
:un clapotis.
:Il boit,
:bougeant la queue et sans faire une pause,
:Et ne relève enfin son joli museau plat Que
:lorsqu'il a passé sa langue rêche et rose __Partout__,
:bien proprement débarbouillé le plat.
:
:Alors
:il se pourlèche un moment les moustaches Avec l'air étonné
:d'avoir déjà fini !
:Et
:comme il s'aperçoit qu'il s'est fait quelques taches,
::Il se lisse à nouveau,
::lustre son poil terni.
:
:Ses yeux jaunes et bleus sont deux agates;
::Il les ferme à demi,
::parfois, en reniflant,
::Se renverse,
:::ayant pris son museau dans ses pattes,
:Avec des airs de __tigre étendu sur le flanc__ !
''{{Proposition (26/3/20):||did}}''
Voici la discussion que j'entrevois pour le moment, à confirmer ou réviser suivant :
:→ votre disponibilité suffisante pour le lourd travail de répétition //(après confinement)//
:→ les capacités de mémorisation dont vous vous sentez capables
:→ votre facilité d'adéquation aux personnages
:→ votre plaisir
::J'espère que l'arbitrage de vos envies ne sera pas trop difficile !
| BARBARA|veuve, et bonne mère. |//Chantal// |
| NICOLETTO|fils de Barbara. |//Jacques// |
| GIACOMINA|fille de Barbara. |//Brigitte ou Mireille ?// |
| LODOVICA|mère avide |//Denise// |
| DANIELA|fille de Lodovica. |//Mireille ou Brigitte ?// |
| MARGARITA|servante de Barbara. |//Nadine// |
| AGNESE|veuve, amie de Barbara. |//Michèle// |
| ROCCO|marchand de tissus et de mercerie. |//Claudine// |
| LUNARDO|compère de Barbara.|//Lee// |
| ,,Un garçon de boutique,,|,,qui ne parle pas.,,|//?// |
!!Dom Juan et Elvire//
^^Acte I - fin de scène2 et scène 3^^//
<<<
!!!![LE JEU] À mon sens cette scène est double :
#Elle produit un portrait réaliste d'une femme profondément blessée, en qui subsistait néammoins une lueur d'espoir amoureux.<br>
#Elle est une satire par Molière des grande scènes de tragédie : la conduite du héros est toute contraire à celle du héros tragique, c'est la victime qui singe les grandes tirades du héros déchiré.
Le comique de la scène est au second degré : il provient de ce que les acteurs jouent leur partition le plus sérieusement du monde, mais dans le plus parfait contre-pied de ce à quoi on s'attend d'habitude !
<<<
;DON JUAN.
://Tout guilleret, ravi de son plan//
:Ah ! Songeons à ce qui nous peut donner du plaisir.
:La personne qui m'occupe, est une jeune fiancée, la plus agréable du monde, qui a été conduite ici par celui même qu'elle y vient épouser ;
et le hasard me fit voir ce couple d'amants, trois ou quatre jours avant leur voyage.
Jamais je n'ai vu deux personnes être si contents l'un de l'autre, et faire éclater plus d'amour.
La tendresse visible de leurs mutuelles ardeurs me donna de l'émotion ; j'en fus frappé au coeur, et mon amour commença par la jalousie.
Oui, je ne pus souffrir d'abord de les voir si bien ensemble, le dépit alarma mes désirs,
et je me figurai un plaisir extrême, à pouvoir troubler leur intelligence, et rompre cet attachement,
dont la délicatesse de mon cœur se tenait offensée ;
mais jusques ici tous mes efforts ont été inutiles, et j'ai recours au dernier remède.
Cet époux prétendu doit aujourd'hui régaler sa maîtresse d'une promenade sur mer,
sans t'en avoir rien dit, toutes choses sont préparées pour satisfaire mon amour,
et j'ai une petite barque et des gens, avec quoi fort facilement je prétends enlever la belle.
;SGANARELLE.
:Ha ! Monsieur...
;DON JUAN.
:Hen ?
;SGANARELLE.
:C'est fort bien à vous, et vous le prenez comme il faut, il n'est rien tel en ce monde que de se contenter.
;DON JUAN.
:Prépare-toi donc à venir avec moi, et prends soin toi-même d'apporter toutes mes armes, afin que...
:://Il aperçoit Dona Elvire.//
:Ah !
Rencontre fâcheuse, traître, tu ne m'avais pas dit qu'elle était ici elle-même.
;SGANARELLE.
:Monsieur,
vous ne me l'avez pas demandé.
;DON JUAN.
:Est-elle folle, de n'avoir pas changé d'habit, et de venir en ce lieu-ci avec son équipage de campagne ?
!!!''SCÈNE III''.//
Dona Elvire, Don Juan, Sganarelle.//
//Don Juan se tient à distance, sans la saluer, ni la regarder, et même se détournant.
Silence glaçant.//
;DONA ELVIRE.
:Me ferez-vous la grâce, Don Juan, de vouloir bien me reconnaître, et puis-je au moins espérer que vous daigniez tourner le visage de ce côté ?
;DON JUAN.
://Sans aucun égard.// Madame, je vous avoue que je suis surpris, et que je ne vous attendais pas ici.
;DONA ELVIRE.
:Oui, je vois bien que vous ne m'y attendiez pas]
:://Dans cette réplique elle dit sa blessure,<br>mais en ne manifestant que colère contre elle-même, dans l'espoir fou - peut-être - d'obtenirune protestation d'amour de Don Juan.}//
:et vous êtes surpris, à la vérité, mais tout autrement que je ne l'espérais, et la manière dont vous le paraissez me persuade pleinement ce que je refusais de croire.
J'admire ma simplicité, et la faiblesse de mon coeur, à douter d'une trahison, que tant d'apparences me confirmaient.
J'ai été assez bonne, je le confesse, ou plutôt assez sotte pour me vouloir tromper moi-même, et travailler à démentir mes yeux et mon jugement.
J'ai cherché des raisons pour excuser à ma tendresse le relâchement d'amitié qu'elle voyait en vous ;
et je me suis forgé exprès cent sujets légitimes d'un départ si précipité, pour vous justifier du crime dont ma raison vous accusait.
Mes justes soupçons chaque jour avaient beau me parler,
j'en rejetais la voix qui vous rendait criminel à mes yeux,
et j'écoutais avec plaisir mille chimères ridicules qui vous peignaient innocent à mon cœur ;
mais enfin cet abord ne me permet plus de douter,
et le coup d'œil qui m'a reçue m'apprend bien plus de choses, que je ne voudrais en savoir.
Je serai bien aise pourtant d'ouïr de votre bouche les raisons de votre départ.
Parlez, Don Juan, je vous prie, et voyons de quel air vous saurez vous justifier !
;DON JUAN.
://Fuyant toute relation, ne serait-ce qu'oculaire, avec Dona Elvire.//
Madame, voilà Sganarelle, qui sait pourquoi je suis parti.
;SGANARELLE.
:Moi, Monsieur, je n'en sais rien, s'il vous plaît.
;DONA ELVIRE.
:Hé bien, Sganarelle, parlez, il n'importe de quelle bouche j'entende ses raisons.
;DON JUAN,
://faisant signe d'approcher à Sganarelle.//
:Allons, parle donc à Madame.
;SGANARELLE.
:Que voulez-vous que je dise ?
;DONA ELVIRE.
:Approchez, puisqu'on le veut ainsi, et me dites un peu les causes d'un départ si prompt.
;DON JUAN.
:Tu ne répondras pas ?
;SGANARELLE.
:Je n'ai rien à répondre, vous vous moquez de votre serviteur.
;DON JUAN.
:Veux-tu répondre, te dis-je ?
;SGANARELLE.
:Madame...
;DONA ELVIRE.
:Quoi ?
;SGANARELLE,
:se retournant vers son maître.
:Monsieur...
;DON JUAN.
:Si...
;SGANARELLE.
:Madame, les conquérants, Alexandre et les autres mondes sont causes de notre départ ; voilà, Monsieur, tout ce que je puis dire.
;DONA ELVIRE.
:Vous plaît-il, Don juan, nous éclaircir ces beaux mystères ?
;DON JUAN.
:Madame, à vous dire la vérité.
;DONA ELVIRE.
:Ah, que vous savez mal vous défendre pour un homme de Cour, et qui doit être accoutumé à ces sortes de choses !
:J'ai pitié de vous voir la confusion que vous avez.
:*Que ne vous armez-vous le front d'une noble effronterie ?
:://Autant que des piques rageuses d'une femme blessée, commence içi une satire par Molière du style amphigourique des tragédies.
- On peut imaginer que Dona Elvire exagère sa singerie, et qu'à chaque pique lancée, elle laisse un temps de suspens pour goûter la confusion dans laquelle elle enfonce Don Juan.
- Du même coup, le spectateur peut savourer la satire.//
:*Que ne me jurez-vous que vous êtes toujours dans les mêmes sentiments pour moi,
:*que vous m'aimez toujours avec une ardeur sans égale,
:*et que rien n'est capable de vous détacher de moi que la mort !
:*Que ne me dites-vous que des affaires de la dernière conséquence vous ont obligé à partir sans m'en donner avis,
:*qu'il faut que malgré vous vous demeuriez ici quelque temps,
:*et que je n'ai qu'à m'en retourner d'où je viens, assurée que vous suivrez mes pas le plus tôt qu'il vous sera possible :
:*qu'il est certain que vous brûlez de me rejoindre,
:*et qu'éloigné de moi, vous souffrez ce que souffre un corps qui est séparé de son âme ?
:Voilà comme il faut vous défendre,
et non pas être interdit comme vous êtes.
;DON JUAN.
:Je vous avoue, Madame, que je n'ai point le talent de dissimuler, et que je porte un coeur sincère.
:://Non seulement Don Juan joue la comédie, mais il montre le plus ostensiblement possible qu'il la joue.//
:://Son expression, son ton, son maintien démentent constamment les scrupules qu'il profère.//
:Je ne vous dirai point que je suis toujours dans les mêmes sentiments pour vous,
et que je brûle de vous rejoindre,
puisque enfin il est assuré que je ne suis parti que pour vous fuir ;
non point par les raisons que vous pouvez vous figurer, mais par un pur motif de conscience, et pour ne croire pas qu'avec vous davantage je puisse vivre sans péché.
Il m'est venu des scrupules, Madame, et j'ai ouvert les yeux de l'âme sur ce que je faisais.
J'ai fait réflexion que, pour vous épouser, je vous ai dérobée à la clôture d'un couvent, que vous avez rompu des vœux, qui vous engageaient autre part, et que le Ciel est fort jaloux de ces sortes de choses.
Le repentir m'a pris, et j'ai craint le courroux céleste.
J'ai cru que notre mariage n'était qu'un adultère déguisé, qu'il nous attirerait quelque disgrâce d'en haut, et qu'enfin je devais tâcher de vous oublier, et vous donner moyen de retourner à vos premières chaînes.
Voudriez-vous, Madame, vous opposer à une si sainte pensée, et que j'allasse, en vous retenant, me mettre le Ciel sur les bras, que par ...
;DONA ELVIRE.
:Ah ! Scélérat, c'est maintenant que je te connais tout entier
:://Içi, c'est le cri tragique de l'héroïne sacrifiée des grandes tragédies !
Dona Elvire ne joue plus.
Déchirée et vengeresse !//
:et pour mon malheur, je te connais lorsqu'il n'en est plus temps, et qu'une telle connaissance ne peut plus me servir qu'à me désespérer ;
mais sache que ton crime ne demeurera pas impuni, et que le même Ciel dont tu te joues, me saura venger de ta perfidie.
;DON JUAN.
:Madame.
;DONA ELVIRE.
:Il suffit.
Je n'en veux pas ouïr davantage
:://Pour rester dans une idée de satire de la part de Molière, on peut peut-être jouer cette réplique à contre-pied :
*accents tragiques quand elle prétend au contraire s'abstenir de reproches,
*calme olympien quand elle appelle la vengeance du ciel//
:et je m'accuse même d'en avoir trop entendu.
:C'est une lâcheté que de se faire expliquer trop sa honte, et sur de tels sujets, un noble coeur, au premier mot, doit prendre son parti.
N'attends pas que j'éclate ici en reproches et en injures, non, non, je n'ai point un courroux à exhaler en paroles vaines, et toute sa chaleur se réserve pour sa vengeance.
Je te le dis encore, le Ciel te punira, perfide, de l'outrage que tu me fais ;
et si le Ciel n'a rien que tu puisses appréhender, appréhende du moins la colère d'une femme offensée.
;SGANARELLE.
:Si le remords le pouvait prendre !
;DON JUAN,
://après une petite réflexion.//
:Allons songer à l'exécution de notre entreprise amoureuse.
;SGANARELLE.
:Ah, quel abominable maître me vois-je obligé de servir !
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!Don Juan acte I sc 2
{{Don Juan acte I sc 2 • Molière}}
!!Don Juan acte I sc 3
{{Don Juan acte I sc 3 • Molière}}
!!Don Juan acte IV sc 6
{{Don Juan acte IV sc 6}}
!!Don Juan acte V sc 2
{{Don Juan acte V sc 2 • Molière}}
!!!!!I-2 (extrait) DOM JUAN, SGANARELLE.
;SGANARELLE
:Monsieur, je vous dirai franchement que je trouve fort vilain d’aimer de tous côtés comme vous faites.
;DOM JUAN
:Quoi ? tu veux qu’on se lie à demeurer au premier objet qui nous prend, qu’on renonce au monde pour lui, et qu’on n’ait plus d’yeux pour personne ?
:Non, non, la constance n’est bonne que pour des ridicules, toutes les belles ont droit de nous charmer.
:Pour moi, la beauté me ravit partout où je la trouve. Je ne puis refuser mon cœur à tout ce que je vois d’aimable. Les inclinations naissantes ont des charmes inexplicables, et tout le plaisir de l’amour est dans le changement.
:On goûte une douceur extrême
::à réduire par cent hommages le cœur d’une jeune beauté,
::à voir de jour en jour les petits progrès qu’on y fait ;
::à combattre par des transports, par des larmes, et des soupirs, l’innocente pudeur d’une âme, qui a peine à rendre les armes,
::à forcer pied à pied toutes les petites résistances qu’elle nous oppose,
::à vaincre les scrupules, dont elle se fait un honneur,
:et la mener doucement, où nous avons envie de la faire venir.
::Mais lorsqu’on en est maître une fois, il n’y a plus rien à dire, ni rien à souhaiter, tout le beau de la passion est fini.
:Enfin, il n’est rien de si doux, que de triompher de la résistance d’une belle personne.
:J’ai sur ce sujet l’ambition des conquérants.
::Il n’est rien qui puisse arrêter l’impétuosité de mes désirs,
::je me sens un cœur à aimer toute la terre ;
::et comme Alexandre, je souhaiterais qu’il y eût d’autres mondes, pour y pouvoir étendre mes conquêtes amoureuses.
:Qu’as-tu à dire là-dessus ?
;SGANARELLE
: Monsieur, cela serait-il de la permission que vous m’avez donnée, si je vous disais que je suis tant soit peu scandalisé de la vie que vous menez ?
;DOM JUAN
:Comment, quelle vie est-ce que je mène ?
;SGANARELLE
: Fort bonne. Mais par exemple de vous voir tous les mois vous marier comme vous faites.
;DOM JUAN
:Y a-t-il rien de plus agréable ?
;SGANARELLE
: Il est vrai, je conçois que cela est fort agréable, et fort divertissant, mais, Monsieur, se jouer ainsi d’un mystère sacré, et [20] ...
;DOM JUAN
:Va, va, c’est une affaire entre le Ciel et moi, et nous la démêlerons bien ensemble, sans que tu t’en mettes en peine.
:Ah ! n’allons point songer au mal qui nous peut arriver, et songeons seulement à ce qui nous peut donner du plaisir.
:Une beauté me tient au cœur ; entraîné par ses appas, je l’ai suivie jusques en cette ville.
::La personne dont je te parle, est une jeune fiancée, la plus agréable du monde, qui a été conduite ici par celui même qu’elle y vient épouser ; et le hasard me fit voir ce couple d’amants, trois ou quatre jours, avant leur voyage.
::Jamais je n’ai vu deux personnes être si contents l’un de l’autre, et faire éclater plus d’amour.
::La tendresse visible de leurs mutuelles ardeurs me donna de l’émotion ; j’en fus frappé au cœur, et mon amour commença par la jalousie.
::Oui, je ne pus souffrir d’abord de les voir si bien ensemble, le dépit alarma mes désirs, et je me figurai un plaisir extrême, à pouvoir troubler leur intelligence, et rompre cet attachement, dont la délicatesse de mon cœur se tenait offensée ;
:mais jusques ici tous mes efforts ont été inutiles, et j’ai recours au dernier remède.
::Cet époux prétendu doit aujourd’hui régaler sa maîtresse d’une promenade sur mer ;
::sans t’en avoir rien dit, toutes choses sont préparées pour satisfaire mon amour,
::et j’ai une petite barque, et des gens, avec quoi fort facilement je prétends enlever la belle.
;SGANARELLE
: Ha ! Monsieur.
;DOM JUAN
:Hein ?
;SGANARELLE
: C’est fort bien fait à vous, et vous le prenez comme il faut, il n’est rien tel en ce monde, que de se contenter.
;DOM JUAN
:Prépare-toi donc à venir avec moi, et prends soin toi-même d’apporter toutes mes armes, afin que ...
:`S'apercevant de l'arrivée d'Elvire`
:Ah ! rencontre fâcheuse, traître tu ne m’avais pas dit qu’elle était ici elle-même.
;SGANARELLE
: Monsieur, vous ne me l’avez pas demandé.
;DOM JUAN
:Est-elle folle, de n’avoir pas changé d’habit, et de venir en ce lieu-ci, avec son équipage de campagne ?
!!!!!► [[Don Juan acte I sc 3 • Molière]]
!!!!!DONE ELVIRE, DON JUAN, SGANARELLE.
"""
Oui,
je vois bien que vous ne m’y attendiez pas ;
et vous êtes surpris,
à la vérité,
mais tout autrement que je ne l’espérais ;
et la manière dont vous le paraissez
me persuade pleinement ce que je refusais de croire.
J’admire ma simplicité,
et la faiblesse de mon cœur,
à douter d’une trahison
que tant d’apparences me confirmaient.
J’ai été assez bonne, je le confesse,
ou plutôt assez sotte
pour vouloir me tromper moi-même,
et travailler à démentir mes yeux et mon jugement.
J’ai cherché des raisons pour excuser
__à ma tendresse __
le relâchement d’amitié qu’elle voyait en vous ;
et je me suis forgé
__exprès__
cent sujets légitimes d’un départ si précipité,
pour vous justifier
du crime
dont ma raison vous accusait.
Mes justes soupçons chaque jour avaient beau me parler,
j’en rejetais la voix qui vous rendait criminel à mes yeux,
et j’écoutais
avec plaisir
mille chimères
ridicules,
qui vous peignaient innocent à mon cœur ;
mais enfin
cet __abord__
ne me permet plus de __douter__,
et le coup d’œil qui m’a reçue m’apprend bien plus de choses que je ne voudrais en savoir.
Je serai bien aise pourtant
__d’ouïr __
de votre bouche
les raisons de votre départ.
Parlez,
don Juan,
je vous prie,
et voyons de quel air vous saurez vous justifier.
"""
!!!!I-3 • DONE ELVIRE, DON JUAN, SGANARELLE.
!!!!!!◄ [[Don Juan acte I extrait scène 2]]
;Done Elvire
:Me ferez-vous la grâce, don Juan, de vouloir bien me reconnaître ?
:`Il se tient dos tourné`
:Et puis-je au moins espérer que vous daigniez tourner le visage de ce côté ?
;Don Juan
:Madame, je vous avoue que je suis surpris, et que je ne vous attendais pas ici.
;Done Elvire
:Oui, je vois bien que vous ne m’y attendiez pas ;
:`Comme il s'arrange pour ne pas croiser son regard, elle va tourner lentement autour de lui.`
:et vous êtes surpris, à la vérité, mais tout autrement que je ne l’espérais ;
:et la manière dont vous le paraissez me persuade pleinement ce que je refusais de croire.
::
:J’admire ma simplicité, et la faiblesse de mon cœur, à douter d’une trahison que tant d’apparences me confirmaient.
:J’ai été assez bonne, je le confesse, ou plutôt assez sotte pour vouloir me tromper moi-même, et travailler à démentir mes yeux et mon jugement.
:J’ai cherché des raisons pour excuser à ma tendresse le relâchement d’amitié qu’elle voyait en vous ;
::et je me suis forgé exprès cent sujets légitimes d’un départ si précipité, ::pour vous justifier du crime dont ma raison vous accusait.
::Mes justes soupçons chaque jour avaient beau me parler, j’en rejetais la voix qui vous rendait criminel à mes yeux,
::et j’écoutais avec plaisir mille chimères ridicules, qui vous peignaient innocent à mon cœur ;
:mais enfin
:cet abord ne me permet plus de douter,
:et le coup d’œil qui m’a reçue m’apprend bien plus de choses que je ne voudrais en savoir.
::
:Je serai bien aise pourtant d’ouïr de votre bouche les raisons de votre départ.
:`Il ne répond pas.`
:Parlez, don Juan, je vous prie, et voyons de quel air vous saurez vous justifier.
;Don Juan
:Madame, voilà Sganarelle qui sait pourquoi je suis parti.
;Sganarelle, `bas, à don Juan.`
:Moi, monsieur ? Je n’en sais rien, s’il vous plaît.
;Done Elvire
:Hé bien ! Sganarelle, parlez. Il n’importe de quelle bouche j’entende ces raisons.
;Don Juan, `faisant signe à Sganarelle d’approcher.`
:Allons, parle donc à madame.
;Sganarelle, `bas, à don Juan.`
:Que voulez-vous que je dise ?
;Done Elvire
:Approchez, puisqu’on le veut ainsi, et me dites un peu les causes d’un départ si prompt.
;Don Juan
:Tu ne répondras pas ?
;Sganarelle, `bas, à don Juan.`
:Je n’ai rien à répondre. Vous vous moquez de votre serviteur.
;Don Juan
:Veux-tu répondre, te dis-je ?
;Sganarelle
:Madame…
;Done Elvire
:Quoi ?
;Sganarelle, `se tournant vers son maître.`
:Monsieur…
;Don Juan
:Si…
;Sganarelle
:Madame, les conquérants, Alexandre et les autres mondes sont causes de notre départ.
:Voilà, monsieur, tout ce que je puis dire.
;Done Elvire
:Vous plaît-il, don Juan, nous éclaircir ces beaux mystères ?
;Don Juan
:Madame,
:à vous dire la vérité…
;Done Elvire
:Ah ! que vous savez mal vous défendre pour un homme de cour, et qui doit être accoutumé à ces sortes de choses !
:J’ai pitié de vous voir la confusion que vous avez.
::Que ne vous armez-vous le front d’une noble effronterie ?
::Que ne me jurez-vous que vous êtes toujours dans les mêmes sentiments pour moi,
::que vous m’aimez toujours avec une ardeur sans égale,
::et que rien n’est capable de vous détacher de moi que la mort ?
:::
::Que ne me dites-vous que des affaires de la dernière conséquence vous ont obligé à partir sans m’en donner avis ;
::qu’il faut que, malgré vous, vous demeuriez ici quelque temps,
::et que je n’ai qu’à m’en retourner d’où je viens, assurée que vous suivrez mes pas le plus tôt qu’il vous sera possible ;
::qu’il est certain que vous brûlez de me rejoindre,
::et qu’éloigné de moi vous souffrez ce que souffre un corps qui est séparé de son âme ?
:Voilà comme il faut vous défendre,
:`Il reste raide et sans expression.`
:et non pas être interdit comme vous êtes.
;Don Juan
:Je vous avoue, madame, que je n’ai point le talent de dissimuler, et que je porte un cœur sincère.
:Je ne vous dirai point que je suis toujours dans les mêmes sentiments pour vous, et que je brûle de vous rejoindre, puisque enfin il est assuré que je ne suis parti que pour vous fuir,
::non point pour les raisons que vous pouvez vous figurer,
:mais par un pur motif de conscience,
::et pour ne croire pas qu’avec vous davantage je puisse vivre sans péché.
:Il m’est venu des scrupules, madame,
::et j’ai ouvert les yeux de l’âme sur ce que je faisais.
::J’ai fait réflexion que pour vous épouser, je vous ai dérobée à la clôture d’un couvent,
::que vous avez rompu des vœux qui vous engageaient autre part,
::et que le ciel est fort jaloux de ces sortes de choses.
:Le repentir m’a pris,
::et j’ai craint le courroux céleste.
::J’ai cru que notre mariage n’était qu’un adultère déguisé,
::qu’il nous attirerait quelque disgrâce d’en haut,
::et qu’enfin
:je devais tâcher de vous oublier,
:et vous donner moyen de retourner à vos premières chaînes.
:`Elvire est prête d'exploser, il l'interromp d'un geste impérieux.`
:Voudriez-vous, madame, vous opposer à une si sainte pensée,
:et que j’allasse, en vous retenant, me mettre le ciel sur les bras ?
:que pour… ?
;Done Elvire
:Ah ! scélérat,
:c’est maintenant que je te connais tout entier ;
:et pour mon malheur, je te connais lorsqu’il n’en est plus temps,
:et qu’une telle connaissance ne peut plus me servir qu’à me désespérer ;
:mais sache que ton crime ne demeurera pas impuni,
:et que le même ciel dont tu te joues me saura venger de ta perfidie.
;Don Juan
:Sganarelle, le ciel !
;Sganarelle
:Vraiment oui, nous nous moquons bien de cela, nous autres.
;Don Juan
:Madame…
;Done Elvire
:Il suffit.
:Je n’en veux pas ouïr davantage,
:et je m’accuse même d’en avoir trop entendu.
::
:C’est une lâcheté que de se faire expliquer trop sa honte ;
:et, sur de tels sujets,
::un noble cœur,
::au premier mot,
:doit prendre son parti.
::
:N’attends pas que j’éclate ici en reproches et en injures ;
:non, non, je n’ai point un courroux à exhaler en paroles vaines,
:et toute sa chaleur se réserve pour sa vengeance.
::
:Je te le dis encore, le ciel te punira, perfide, de l’outrage que tu me fais ; ::
:et si le ciel n’a rien que tu puisses appréhender,
:appréhende du moins la colère d’une femme offensée.
!!!!!► [[Don Juan acte IV sc 6]]
!!!!!!◄ [[Don Juan acte I sc 3 • Molière]]
!!Don Juan Acte 4 SCÈNE VI DOM JUAN, DONE ELVIRE, SGANARELLE. [[•|jt-DJ4.6]]
;SGANARELLE
:Monsieur, voici une dame voilée qui vient vous parler.
;DOM JUAN
:Que pourrait-ce être ?
;SGANARELLE
:Il faut voir.
;DONE ELVIRE
:Ne soyez point surpris, Dom Juan, de me voir à cette heure et dans cet équipage. C’est un motif pressant qui m’oblige à cette visite, et ce que j’ai à vous dire ne veut point du tout de retardement. Je ne viens point ici pleine de ce courroux que j’ai tantôt fait éclater, et vous me voyez bien changée de ce que j’étais ce matin.
:Ce n’est plus cette Done Elvire qui faisait des vœux contre vous, et dont l’âme irritée ne jetait que menaces, et ne respirait que vengeance. Le Ciel a banni de mon âme toutes ces indignes ardeurs que je sentais pour vous, tous ces transports tumultueux d’un attachement criminel, tous ces honteux emportements d’un amour terrestre et grossier, et il n’a laissé dans mon cœur pour vous qu’une flamme épurée de tout le commerce des sens, une tendresse toute sainte, un amour détaché de tout, qui n’agit point pour soi, et ne se met en peine que de votre intérêt.
;DOM JUAN, `à SGANARELLE`
:Tu pleures, je pense.
;SGANARELLE
:Pardonnez-moi.
;Done Elvire
:C'est ce parfait et pur amour qui me conduit ici pour votre bien, pour vous faire part d'un avis du Ciel, et tâcher de vous retirer du précipice où vous courez.
:Pour moi, je ne tiens plus à vous par aucun attachement du monde ; je suis revenue, grâces au Ciel, de toutes mes folles pensées.
:Mais, j'aurais une douleur extrême qu'une personne que j'ai chérie tendrement devînt un exemple funeste de la justice du Ciel ; et ce me sera une joie incroyable si je puis vous porter à détourner de dessus votre tête l'épouvantable coup qui vous menace.
:De grâce, Don Juan, accordez-moi, pour dernière faveur, cette douce consolation ; ne me refusez point votre salut, que je vous demande avec larmes.
;Sganarelle,
:^^à part.^^
:Pauvre femme !
;DONE ELVIRE
:Je vous ai aimé avec une tendresse extrême, rien au monde ne m’a été si cher que vous, j’ai oublié mon devoir pour vous, j’ai fait toutes choses pour vous,
:et toute la récompense que je vous en demande, c’est de corriger votre vie, et de prévenir votre perte.
:Sauvez-vous, je vous prie, ou pour l’amour de vous, ou pour l’amour de moi. Encore une fois, Dom Juan, je vous le demande avec larmes, et si ce n’est assez des larmes d’une personne que vous avez aimée, je vous en conjure par tout ce qui est le plus capable de vous toucher.
;SGANARELLE
:Cœur de tigre !
;DONE ELVIRE
:Je m’en vais après ce discours, et voilà tout ce que j’avais à vous dire.
;DOM JUAN `galamment`
:Madame, il est tard, demeurez ici, on vous y logera le mieux qu’on pourra.
;DONE ELVIRE
:Non, Dom Juan, ne me retenez pas davantage.
;DOM JUAN
:Madame, vous me ferez plaisir de demeurer, je vous assure.
;DONE ELVIRE
:Non, vous dis-je,
::ne perdons point de temps en discours superflus,
::laissez-moi vite aller,
::ne faites aucune instance pour me conduire,
:et songez seulement à profiter de mon avis.
`Elle sort`
!!!!!''SCÈNE VII DOM JUAN, SGANARELLE, Suite.''
;DOM JUAN
:Sais-tu bien que j’ai encore senti quelque peu d’émotion pour elle,
:que j’ai trouvé de l’agrément dans cette nouveauté bizarre,
::et que son habit négligé,
::son air languissant
::et ses larmes
:ont réveillé en moi quelques petits restes d’un feu éteint ?
;SGANARELLE
:C’est-à-dire que ses paroles n’ont fait aucun effet sur vous.
;DOM JUAN
:Vite à souper.
;SGANARELLE
:Fort bien.
!!!!!► [[Don Juan acte V sc 2 • Molière]]
!!!!!!◄ [[Don Juan acte IV sc 6]]
!!!!!DOM JUAN, SGANARELLE.
//^^Extrait^^//
;DOM JUAN
:Quoi ? tu prends pour de bon argent ce que je viens de dire, et tu crois que ma bouche était d’accord avec mon cœur ?
;SGANARELLE
: Quoi, ce n’est pas... vous ne... votre... Oh quel homme ! quel homme ! quel homme !
;DOM JUAN
:Je veux bien, Sganarelle, t’en faire confidence,
:et je suis bien aise d’avoir un témoin du fond de mon âme et des véritables motifs qui m’obligent à faire les choses.
;SGANARELLE
: Quoi ? vous ne croyez rien du tout, et vous voulez cependant vous ériger en homme de bien ?
;DOM JUAN
:Et pourquoi non ?
:Il y en a tant d’autres comme moi qui se mêlent de ce métier, et qui se servent du même masque pour abuser le monde.
;SGANARELLE
: Ah ! quel homme ! quel homme !
;DOM JUAN
:Il n’y a plus de honte maintenant à cela,
::l’hypocrisie est un vice à la mode,
::et tous les vices à la mode passent pour vertus.
:Le personnage d’homme de bien est le meilleur de tous les personnages qu’on puisse jouer aujourd’hui,
:et la profession d’hypocrite a de merveilleux avantages.
::C’est un art de qui l’imposture est toujours respectée,
::et quoiqu’on la découvre, on n’ose rien dire contre elle.
::Tous les autres vices des hommes sont exposés à la censure,
::et chacun a la liberté de les attaquer hautement,
:mais l’hypocrisie est un vice privilégié,
::qui de sa main ferme la bouche à tout le monde,
::et jouit en repos d’une impunité souveraine.
:On lie à force de grimaces une société étroite avec tous les gens du parti,
::qui en choque un, se les jette tous sur les bras,
::et ceux que l’on sait même agir de bonne foi là-dessus, et que chacun connaît pour être véritablement touchés :
::ceux-là, dis-je, sont toujours les dupes des autres,
::ils donnent hautement dans le panneau des grimaciers,
::et appuient aveuglément les singes de leurs actions.
:Combien crois-tu que j’en connaisse, qui par ce stratagème
::ont rhabillé adroitement les désordres de leur jeunesse,
::qui se sont fait un bouclier du manteau de la religion,
::et, sous cet habit respecté,
::ont la permission d’être les plus méchants hommes du monde ?
:On a beau savoir leurs intrigues, et les connaître pour ce qu’ils sont,
::ils ne laissent pas pour cela d’être en crédit parmi les gens,
::et
::quelque baissement de tête,
::un soupir mortifié,
::et deux roulements d’yeux
:rajustent dans le monde tout ce qu’ils peuvent faire.
::
:C’est sous cet abri favorable que je veux me sauver, et mettre en sûreté mes affaires.
:Je ne quitterai point mes douces habitudes, mais
::j’aurai soin de me cacher,
::et me divertirai à petit bruit.
:Que si je viens à être découvert,
::je verrai sans me remuer prendre mes intérêts à toute la cabale,
::et je serai défendu par elle
::envers, et contre tous.
:Enfin, c’est là le vrai moyen de faire impunément tout ce que je voudrai.
::Je m’érigerai en censeur des actions d’autrui,
::jugerai mal de tout le monde,
::et n’aurai bonne opinion que de moi.
:Dès qu’une fois on m’aura choqué tant soit peu,
::je ne pardonnerai jamais,
::et garderai tout doucement une haine irréconciliable.
:Je ferai le vengeur des intérêts du Ciel,
:et sous ce prétexte commode,
::je pousserai mes ennemis,
::je les accuserai d’impiété,
::et saurai déchaîner contre eux des zélés indiscrets,
:::qui sans connaissance de cause crieront en public contre eux [14] ,
:::qui les accableront d’injures,
:::et les damneront hautement de leur autorité privée.
:C’est ainsi qu’il faut profiter des faiblesses des hommes,
:et qu’un sage esprit s’accommode aux vices de son siècle.
;SGANARELLE `s'enfuyant`
: Ô Ciel ! qu’entends-je ici ? Il ne vous manquait plus que d’être hypocrite pour vous achever de tout point.
`Dom Juan éclate de rire.`
!!!!!!FIN DE L'EXTRAIT
[[Don Juan acte I extrait scène 2]]
---
[[Don Juan acte I sc 3 • Molière]]
---
[[Don Juan acte IV sc 6]]
---
[[Don Juan acte V sc 2 • Molière]]
''{{Proposition (26/3/20):||did}}''
Voici la discussion que j'entrevois pour le moment :
:→ disponibilité suffisante pour le lourd travail de répétition //(après confinement)//
:→
| BARBARA|veuve, et bonne mère. |//Chantal// |
| NICOLETTO|fils de Barbara. |//Jacques// |
| GIACOMINA|fille de Barbara. |//Brigitte ou Mireille ?// |
| LODOVICA|mère avide |//Denise// |
| DANIELA|fille de Lodovica. |//Mireille ou Brigitte ?// |
| MARGARITA|servante de Barbara. |//Nadine// |
| AGNESE|veuve, amie de Barbara. |//Michèle// |
| ROCCO|marchand de tissus et de mercerie. |//Claudine// |
| LUNARDO|compère de Barbara.|//Lee// |
| ,,Un garçon de boutique,,|,,qui ne parle pas.,,|//?// |
!!Atteindre un état de sécurité
<<<
Aussitôt que quelqu'un commence à parler dans un état de sécurité, disant une série de phrases qui s'enchaînent bien,
''on l'écoute.''
<<<
!!Respirer juste
<<<
Si vous avez ''le sentiment juste'',
vous aurez la respiration juste.
<<<
!!Construire l'évolution du personnage
<<<
Une scène commence, s'installe avec des incidents successifs, et finit.
''Elle modifie l'état des personnages.''
<<<
!!Savoir attaquer les phrases
<<<
Il faut qu'il y ait au départ de chaque phrase __la charge de sentiment__ suffisante pour obtenir la décharge.
Pour que le sentiment ait la puissance voulue, i''l faut attaquer au départ''.
Le plus important dans une scène est ''le début''.
Si vous n'avez pas la charge de sentiment nécessaire pour attaquer, <br>''vous ne pourrez pas aller jusqu'au bout''
<<<
!!Immédiat
<<<
«__ ''Immédiat '':__ La première impulsion ressentie __profondément__ et __intimement__.
Le comédien vit, travaille dans l’immédiat, c’est-à-dire : un besoin d’exprimer __spontanément__.
Spontanéité qui est antagoniste avec la nécessité d'avoir d'abord ''lu'', puis ''dit'' à haute voix, gesticulé et extériorisé des sentiments dans une habitude de contrôle, avec une tête froide, au moins avec un sens critique, un second lui-même spectateur...
L’immédiat serait donc le premier acte spirituel de l’acteur,
le commencement de la connaissance en soi par le sentiment. »
<<<
L”image implicite est celle de la Vierge terrassant sous ses pieds le démon figuré sous la forme d”un dragon.
Édition 24-03-20
<<<
```
Ajout des notes de Ginette HERRY, la traductrice de LA BONNE MÈRE, sous forme de liens insérés dans le texte.
```
<<<
;[[•|jt-DJ4.6]]DONE ELVIRE
:Ne soyez point surpris, Dom Juan, de me voir à cette heure et dans cet équipage. C’est un motif pressant qui m’oblige à cette visite, et ce que j’ai à vous dire ne veut point du tout de retardement. Je ne viens point ici pleine de ce courroux que j’ai tantôt fait éclater, et vous me voyez bien changée de ce que j’étais ce matin.
:Ce n’est plus cette Done Elvire qui faisait des vœux contre vous, et dont l’âme irritée ne jetait que menaces, et ne respirait que vengeance. Le Ciel a banni de mon âme toutes ces indignes ardeurs que je sentais pour vous, tous ces transports tumultueux d’un attachement criminel, tous ces honteux emportements d’un amour terrestre et grossier, et il n’a laissé dans mon cœur pour vous qu’une flamme épurée de tout le commerce des sens, une tendresse toute sainte, un amour détaché de tout, qui n’agit point pour soi, et ne se met en peine que de votre intérêt.
;DOM JUAN, `à SGANARELLE`
:Tu pleures, je pense.
;SGANARELLE
:Pardonnez-moi.
;Done Elvire
:C'est ce parfait et pur amour qui me conduit ici pour votre bien, pour vous faire part d'un avis du Ciel, et tâcher de vous retirer du précipice où vous courez.
:Pour moi, je ne tiens plus à vous par aucun attachement du monde ; je suis revenue, grâces au Ciel, de toutes mes folles pensées.
:Mais, j'aurais une douleur extrême qu'une personne que j'ai chérie tendrement devînt un exemple funeste de la justice du Ciel ; et ce me sera une joie incroyable si je puis vous porter à détourner de dessus votre tête l'épouvantable coup qui vous menace.
:De grâce, Don Juan, accordez-moi, pour dernière faveur, cette douce consolation ; ne me refusez point votre salut, que je vous demande avec larmes.
;Sganarelle,
:^^à part.^^
:Pauvre femme !
;DONE ELVIRE
:Je vous ai aimé avec une tendresse extrême, rien au monde ne m’a été si cher que vous, j’ai oublié mon devoir pour vous, j’ai fait toutes choses pour vous,
:et toute la récompense que je vous en demande, c’est de corriger votre vie, et de prévenir votre perte.
:Sauvez-vous, je vous prie, ou pour l’amour de vous, ou pour l’amour de moi. Encore une fois, Dom Juan, je vous le demande avec larmes, et si ce n’est assez des larmes d’une personne que vous avez aimée, je vous en conjure par tout ce qui est le plus capable de vous toucher.
;SGANARELLE
:Cœur de tigre !
;DONE ELVIRE
:Je m’en vais après ce discours, et voilà tout ce que j’avais à vous dire.
"""
Anaïs <powellana@yahoo.fr>
"Brigitte"<brigitte.enriquez2@gmail.com>
"Chantal"<chantal.nahum@gmail.com>
Christiane <jcbaboulaz@orange.fr>
Claudine<korenbaum.c@gmail.com>
Denise<d.cadence27@gmail.com>
Gérard <g.baranes@laposte.net>
Isaac <harari.isaac@orange.fr>
Jacques<jacques.turbe@gmail.com>
Livia<liviapoenaru7@gmail.com>
Michèle <michele.turbe@gmail.com>
Mireille<mireilleboudrahem@yahoo.fr>
"Nicole"<nicolevincent007@yahoo.fr>
nicolleroux@gmail.com
Noella <rody.lebris@orange.fr>
Odile<odiledf75@gmail.com>
Yvonne <yvonne.joret@gmail.com>
Éveline<evelinkoro@gmail.com>
"""
Lorsque le comédien ne parvient pas à éveiller sa propre mémoire affective il gagne à faire appel à la méthode du " si ".
Le "// si //", mise en l'avant par Stanislavski, est beaucoup plus efficace que "// il faut que //".
L'approche devient alors différente.
Prenons l'exemple d'une scène où le personnage que vous jouez est prisonnier d'une grotte infestée de serpents.
Supposons que vous butiez sur le pénible sentiment " forcé " de la peur.
;Au lieu d'essayer de reproduire cette émotion,<br>abordez la question autrement en vous interrogeant :
:*''Si'' des centaines de serpents se trouvaient dans cette pièce où je suis assis?
:*''Si'' je devais me déplacer au milieu d'eux pour sortir de là?
:*''Si'' cette porte-là était verrouillée de l'extérieur… et la fenêtre trop haute pour que j'y grimpe?
:''ALORS''… Comment réagirais-je?
Il est étonnant de constater que le fait d'envisager la possibilité d'une situation nous dispose déjà à nous y préparer.
Grâce au " si " nous pouvons concevoir une situation plus vivante plutôt que de nous acharner à provoquer un sentiment qui n'existe pas.
!!Être vrai pour faire vrai
Que vous sollicitiez votre mémoire affective ou que vous appliquiez la Méthode, pensez toujours à jouer votre rôle avec vérité.
Plus votre personnage parlera, jouera, marchera avec vérité, plus votre rôle s'enveloppera de sincérité.
Le spectateur rencontrera l'émotion du personnage et votre message n'en sera que plus invitant pour lui.
<<list-links filter:"[tag[en répétition]]">>
!!!Exerçons-nous à l'aide d'un jeu sur les grandes répliques d'Elvire de [[la scène 1.3 de Don Juan|Don Juan acte I sc 3 • Molière]].
| [[JEU ► ET SI ELVIRE ÉTAIT ... ?]] |
*► Arriver à les dire au point qu'on croirait avoir la personne que vous jouez devant nous ?
*► Nous embarquer dans le bouleversement que vous prêtez à votre personnage, qui vous emporte dans ces quelques instants de face à face.
*► Nous laisser avec une impression mémorable !
;► Préparez-vous à les dire avec toute votre ardeur et votre sincérité !
<<<
,,[[Liste de 240 exercices de prononciation et de diction|https://charismedeveloppement.fr/exercice-de-prononciation/]],,
,,On en connait déjà certains. Bons essais,,,
!!!!!Brigitte
<<<
1 5 sacs de son 6 sacs de sciure 7 seaux de sel savez à quoi ça sert? A satisfaire celui qui le sait.
2 A califourchon sur son canasson un bachi-bouzouk achète un vieux bouc à six mamelouks assis dans un souk.
3 Agathe attaque Tac, Tac attaque Agathe.
4 Ah pourquoi Pépita, sans répit m’épies tu? Dans un pré Pépita, pourquoi te tapies tu? tu m’épies sans pitié, c’est piteux de m’épier…de m’épier Pépita, pourrais tu te passer ?
5 Alerte, Arlette allaite !
6 Allez ! allo ? aller allo ?… (à dire de plus en plus vite)
7 Anastase esquisse l’exquise extase.
8 Angèle et Gilles en gilet gèlent.
9 Babylas baladin emballe bonnement des balles tandis que Babette ballerine étoile du corps de ballet se balance mollement sur le bout d’une barre de bois.
10 bam dam gam vam zam bèm dèm gèm vèm zèm bom dom gom vom zom
11 Barbara à Ottawa, Bruno à Waterloo, Baudouin à Saint Ouen, et toi où ça ? Dans un wagon, sous un igloo ou bien à Rouen ?
12 Belle brune, belle prune. belle pelle, brune prune.
13 Boire un soir la poire noire et croire devoir reboire pour croire pouvoir s’asseoir.
14 Bonjour madame Sans Souci, combien sont ces six cent six saucissons-ci ? Ces six cent six saucissons-ci sont six sous. Six sous, ces six cent six saucissons-ci ! Si ces six cent six saucissons-ci sont six sous, ces six cent six saucissons-ci sont trop chers.
15 Brosse la bâche, baisse la broche.
16 Bruno bêche Benoît bine; Bruno bine Benoît bêche.
17 Bruno bêche Benoît bine; Bruno bine Benoît bêche.
18 C’est l’évadé du Nevada qui s’évada dans la vallée, dans la vallée du Nevada qu’il dévala pour s’évader sur un vilain vélo volé qu’il a volé dans une villa et le valet qui fut volé vit le vélo qui s’envola. Si l’évade du Nevada s’est évadé dans la vallée c’est qu’il pensait qu’on l’y verra. Il voulait pour se lever le divan de la Diva qui vit l’évadé s’affaler mais quand le valet le vit là, il se mit là pour l’éviter… Et l’évadé du Nevada fut délavé dans la vallée par toute l’eau qui tombait là et l’on vit l’évadé vanné s’avouer que la vie d’évadé ne valait pas la vie d’avant car en vélo quand il y a du vent on est vidé, c’est évident! Et l’évadé du Nevada a pédalé dans la vallée et l’évadé a dit là: « Là je dis que vous m’en voulez car toute l’eau qui m’a lave, et toute l’eau que j’ai avalé m’a dégoûté de m’évader dans la vallée du Nevada ». Et voilà.
19 C’est l’histoire d’un gars qui s’appelle Paul, qui meurt de froid en pleine région polaire, dans un amas de vêtements divers et décolorés, recherchant vainement une pierre précieuse avec un outil inapproprié, alors que sa fiancée tarde à lui téléphoner depuis sa voiture allemande. Moralité : Paul se pèle au pôle dans une pile de pulls et de polos pâles. Pas plus d’appel de la poule en Opel que d’opale dans la pelle à Paul.
20 C’est l’histoire de l’évadé du Nevada qui s’évada dans la vallée, dans la vallée du Nevada qu’il dévala pour s’évader sur un vilain vélo volé qu’il a volé dans la villa. Et l’évadé du Névada fut délavé dans la vallée par toute l’eau qui tombait là et l’on vit l’évadé vanné s’avouer que la vie d’évadé ne valait pas la vie d’avant car en vélo quand il y a du vent on est vidé c’est évident !
21 Ces cent six sachets – sachez cela – si chers qu’Alix à Nice tout en le sachant, chez Chasachax choisis, sont si chers chacun si chers qu’ils charment peu !
22 Ces fiches-ci sont à statistiquer.
23 César laisse, un soir, sécher chez Sachée, sur son sachet, ses six chaussettes et ses chaussons saucés.
24 Chat vit rat, rat tenta chat, chat mit patte à rat, rat brûla patte à chat.
25 Chat vit rôt, Rôt tenta chat, Chat mit patte à rôt, Rôt brûla la patte à chat.
26 Chez ce cher Serge, si doux dans sa chaumière sans chaux, s’agite chaque souche de susceptibilité.
27 Chez les Papous, y’a des papas Papous et des pas papa Papous.
28 Choisis 600 chouchous et si ces 600 chouchous sont chouettes, choisis-en 600 autres.
29 Choisissons ces saucisses aux choux et sachons saisir ces anchois séchés.
30 Ciel ! Si ceci se sait, ces soins sont sans succès.
31 Ciel si c’est cinq sous ces six ou sept saucissons-ci, c’est cent cinq sous ces cent sept saucissons aussi.
32 Cinq capucins portaient sur leur sein le seing du saint-père
33 Cinq ou six officiers gascons passant certains soirs à Soissons marchandèrent des saucissons: Combien ces cinq saucissons ? A vingt sous c’est cent sous. C’était cent sous ces saucissons.
34 Combien ces six saucissons-ci ? – C’est six sous, ces six saucissons-ci.
35 Cuis huit nuits huit iguanes.
36 Debout et déballe les débiles.
37 Déchu, l’ange déçu chut.
38 Des billes, des balles, des boules, des quilles.
39 Des poches plates, des plates poches.
40 Des singes agiles et sages, des singes sages et agiles.
41 Des zazous farfelus qui cherchèrent leurs chaussures chassèrent sans souci des serpents qui sifflaient.
42 Deux yeux bleus pleurent sur les oeufs des bœufs peureux.
43 Didon dîna, dit-on, de deux dodus dindons.
44 Dinon dîna dit-on du dos d’un dodu dindon. Didon dîna dit-on de dix dos dodus de dix dodus dindons.
45 Dis-moi gros gras grand grain d’orge, quand te dégros-gras-grand-grain-d’orgeras-tu ? Je me dégros-gras-grand-grain-d’orgerai, quand tous les gros gras grains d’orge se seront dégros-gras-grand-grain- d’orgés.
46 Dis-moi, petite pomme, quand te dépetitepommeras-tu ?Je me dépetitepommerai quand toutes les petites pommes se dépetitepommeront. Or, comme toutes les petites pommes ne se dépetitepommeront jamais, petite pomme ne se dépetitepommera, jamais.
47 Dodu don de dix dents de dedans dont deux dues.
48 Donnez-lui à minuit huit fruits cuits, et si ces huit fruits cuits lui nuisent, donnez-lui à midi huit fruits crus.
49 Donnez-lui, à minuit, huit fruits cuits… Et si ces huit fruits cuits lui nuisent, donnez-lui huit fruits crus. six chaises sèches, douze douches douces.
50 Du foie d’oie gras et du foie gras d’oie.
51 Éloise , l’exquise Marquise dyslexique esquisse une valse triste, glisse et brise un vase d’Onyx ou d’exhalantes fleurs de Lys agonisent.
52 Empoignons ces oignons et soignons ces rognons.
53 En haut du mat le pirate cria: Échec et mat!! En bas, sur son matelas, dans son mas en Provence Barbara mange de l’ananas, hélas en lisant un atlas avec ses doigts gras. Marc ouvre le cadenas de son vasistas et voit, là, en vrac un tas de tabac au bord du lac. C’est un cas ce gars là. Le jars, pas à pas, va par là et retire l’as du tas de cartes. Raz-de-marée sur le gaz! Halte là!
54 Faible et fiable, fiable et faible.
55 Fruit, fuite et frite firent frite fuite et fruit.
56 Gisèle gèle des aisselles sous l’échelle chez elle à Courchevel.
57 Gisèle songe à la chimie.
58 Graciles et gras quatre gros grands gredins grognons grignotent quatre gros grains grands. Trois grands gros grillons grattent la grise grève en grès, grignoti, grignoton, graines trouveront, graines grignoteront.
59 Hier dans mon cahier, j’étais fier de me fier volontiers au tiers comme au quart.
60 Il était une fois une marchande de foies dans la ville de Foix qui se dit » ma foi, c’est la première fois que je vends du foie dans la ville de Foix «
61 Il faut qu’un sage garde chasse sache chasser tous les chats qui chassent dans sa chasse.
62 Il faut qu’un sage garde-chasse sache chasser tous les chats qui chassent dans sa chasse.
63 Il faut que je roule, il faut que tu roules, il faut qu’il roule, il faut que nous roulions, il faut que vous rouliez, il faut qu’ils roulent.
64 J’ai bu de bleus beaux globules.
65 J’ai un point dans mon pourpoint qui me pique et qui me pointe, si je savais celui qui a mis ce point dans mon pourpoint qui me pique et qui nie pointe, je lui mettrais un point dans son pourpoint qui le pique et qui le pointe.
66 J’examine cet axiome de Xénophon sur les exigences, les excès et l’expiation.
67 J’examine cet axiome de Xénophon sur les exigences, les excès et l’expiation.
68 J’excuse cet exquis exploit, tu excuses cet exploit exquis, il excuse…
69 Je bois aux trois oies du bois du roi qui voit loi et droit à chaque fois qu’il parloit.
70 Je bois aux trois oies du bois du roi qui voit loi et droit chaque fois qu’il parloit.
71 Je chancelle sous la chance. Tu chancelles sous la chance. Il chancelle sous la chanson. Nous chancelons sous la chance. Vous chancelez sous la chance. Ils chancellent sous la chance.
72 Je cherche ces chiots chez Sancho. Je cherche ces chats chez Sacha. Je cherche ces seize cent seize chaises chez Sanchez.
73 Je crois que je vois la croix de bois de Blois.
74 Je crois que je vois trois fois trois foies d’oie, Tu crois que tu vois trois fois trois foies d’oie, Il croit qu’il voit trois fois trois foies d’oie, Nous croyons que nous voyons trois fois trois foies d’oie, Vous croyez que vous voyez trois fois trois foies d’oie, Ils croient qu’ils voient trois fois trois foies d’oie.
75 Je redorerai sûrement ces trente-trois grandes cuillères en or.
76 Je suis extraordinairement exaspéré, vous cherchez à vous excuser, malgré vos explications exposées, vous êtes sans excuses.
77 Je suis un original qui ne se désoriginalisera jamais.
78 Je veux et j’exige d’exquises excuses.
79 Je veux et j’exige dix-huit chemises fines et six fichus fins !
80 Je veux et j’exige un paroxysme spasmodique.
81 Je veux et j’exige, j’exige et je veux.
82 Jésus chez Zaché !
83 Jésus loge chez Zachée, chez Zachée loge Jésus.
84 L’abeille coule, l’abeille coule, l’abeille coule.
85 L’abeille coule, l’abeille coule, l’abeille coule…(à répéter rapidement)
86 L’assassin sur son sein suçait son sang sans cesse.
87 L’effroi du roi noir qui croit en toi s’accroît le soir sous la croix de bois.
88 L’énorme orme morne orne la morne vallée.
89 L’essence de la science donne l’aisance des sens.
90 L’essence de la science donne l’aisance des sens.
91 L’huile de ces huit huiliers huilent l’ouie de l’huissier.
92 L’hurluberlu ahuri à la lune hurle.
93 L’intrus obtus obture l’obus. L’intrus obture l’obus obtus.
94 L’œil de l’écureuil t’accueille sur le seuil de la feuille d’orgueil en deuil près du cercueil.
95 L’œuvre pieuse d’une pieuvre heureuse.
96 L’oiseau beau et gros, gros et beau, vole au dessus de l’eau, moins loin néanmoins qu’un pingouin malouin.
97 L’os à moelle est dans la poêle et la voile est dans la toile.
98 La cavale au Valaque avala l’eau du lac. L’eau du lac lava la cavale au Valaque.
99 La cavale du valaque avala l’eau du lac et l’eau du lac lava la cavale du valaque.
100 La chemise du chimiste sèche.
101 La grosse cloche sonne, la grosse cloche sonne, la grosse cloche sonne…
102 La maman du manant manie nos manies maniaques sans manière.
103 La nubienne nubile, la nubienne débile.
104 La pie niche haut l’oie niche bas, où niche l’hibou ? l’hibou niche où niche la pie !
105 La pie niche haut, l’oie niche bas, mais où niche l’hibou? L’hibou niche ni haut, ni bas, l’hibou niche là
106 La pie pond sans piper devant le paon pompeux qui papote.
107 Le beau barbu Barnabé perdit son bras par un débris d’obus.
108 Le chasseur Sacha sachant chasser les échasses sans changer son chien cherche son siège chez ce cher Serge !
109 Le chétif chef coupe-tifs chante.
110 Le cri cri de la crique crie son cri cru et critique car il craint que l’escroc ne le craque ou le croque.
111 Le Dalaï Lama a la dalle à Lima et casse la dalle à Dallas. Du Lima au Mali et du Mali au Lima il lit mal, le Dalaï Lama. La lame de la lime limant l’aimant qui le lie à la lie de l’ami de Lima qui l’aima qui l’eut dit : c’est dali en lama l’ami du Dalaï Lama de l’Himalaya.
112 Le fisc fixe exprès chaque taxe fixe excessive exclusivement au luxe et à l’exquis.
113 Le geai gélatineux geignait dans le jasmin.
114 Le juge rend justice.
115 Le magique moujik mugit gémissant sans génie s’ingéniant à gêner la muse. Amusé, le moujik a misé et la muse au musée a osé.
116 Le mastoc moustique excité mastique Max, le mystique mexicain masqué.
117 Le mur murant Paris rend Paris murmurant.
118 Le parfum du rhum guérit mon rhume.
119 Le postiche de l’archiduchesse est plein de glaise.
120 Le pragmatisme de l’astigmate agace.
121 Le rami fini, leur ami partit
122 Le respectable spectre du spectacle inspecte l’estrade esquintée.
123 Le ridicule ne nuit ni ne tue.
124 Le scout mange son casse-croutte cru.
125 Les ajoncs jonchant la Judée jouissent eu soleil généreux sous la junte de Jason.
126 Les chaussettes de la duchesse sont-elles sèches ou archi-sèches
127 Les chemises de l’archiduchesse sont-elles sèches, archi-sèches ?
128 Les chiens sont choux en Chine. Chouchous des chinois : les Pékinois s’en fichent, surtout en Mandchourie où les chows-chows mandchous rient.
129 Les cuisses cuivres grasses du chevreau que scrute le cuistot exalte son astigmatisme.
130 Les grains de gros grêlons dégradent Grenade.
131 Lise et José, lisons ensemble et sans hésiter les usages des honnêtes indigènes de Zanzibar.
132 Lorsqu’un cordier cordant veut sa corde accordée , trois cordons de la corde il décorde. Si le cordon de la corde décorde, le cordon décordé fait décorder la corde.
133 Ma main moite de moire mauve mort la mer.
134 Ma sœur a fait un nœud à ton cœur
135 Ma tante Tetine aime téter les tétons de ta tante Thérèse.
136 Madame S. est une Suissesse. Au sous-sol de sa maison, elle chausse ses souliers secs, saisit son sac et sort sur le seuil, seule dans le silence du soir. Quand soudain, elle aperçoit une scène sensationelle : « Sapristi! ». Sous les cent sapins, six cents six sots sans le sou sucent six cents six sucettes au cassis et six cents six saucisses salées. Surprise, madame S. sursaute, glisse sur le sol moussu, puis s’assied sur ses fesses, stupéfaite. Quel suspense! « Mais c’est… bien sûr! Ce sont six cents six petits Suisses sots, c’est aussi simple que ça! Ce n’est pas sorcier! », soupire madame S. en fronçant les sourcils. Le soleil disparaît bientôt et madame S., soulagée, va s’allonger sur son sommier, sans souci.
137 Miaou ! Raoul a son caoutchouc rempli d’aoûtats. Le paon est saoul comme un faon piqué par un taon en Août. Un peu de cacao et ce sera le chaos!
138 Mille filles jouent aux billes dans la ville.
139 Mille millions de merveilleux musiciens murmurent des mélodies multiples et mirifiques.
140 Monsieur de Fondcoutu dit à madame de Coutufond: »Il n’y a pas plus loin de Fondcoutu à Coutufond que Coutufond à Fondcoutu.
141 Mur gâté, trou s’y fit, rat s’y mit.
142 N’hésite et existe.
143 Natacha n’attacha pas son chat Pacha qui s’échappa, cela fâcha Sacha qui chassa Natacha.
144 Ninon ne nous l’avait pas donné ni ne nous l’avait nommé.
145 Nos rhinocéros sont des héros et vos albatros font le gros dos.
146 Nous partîmes six pour Sceaux, nous arrivâmes à Sceaux six, nous demandâmes qu’on nous serve là six saucisses sans choux et sans sauce.
147 Onze oncles, onze ongles, on jongle.
148 Onze oncles, onze ongles, on jongle. L’ongle de l’oncle, l’angle de l’ongle.
149 Oreille de chat, coprin chevelu, langue de bœuf, lépiote à crête, mycène à pied laineux, pleurote, vesse de loup, amanite tue-mouches, russule, malanolengue vulgaire, chanterelle : drôle d’omelette aux champipi aux champignons !
150 pam tam kam fam sam pèm tèm kèm fèm sèm pom tom kom fom som
151 Panse ta pénitence et bénis ta pitance.
152 Papa boit dans les pins. Papa peint dans les bois. Dans les bois, papa boit et peint.
153 Papa peint dans les bois, papa boit dans les pins, papa peint et boit dans les pins, papa boit et peint dans les bois
154 Papier piano panier, papier piano panier, papier piano panier…
155 Petit pot de beurre, quand te dépetit-pot-de-beurreriseras-tu ?- Je me dépetit-pot-de-beurreriserai quand tous les petits pots de beurre se dépetit-pot-de-beurreriseront.
156 Pie niche haut oie niche bas. Où niche hibou? Hibou niche nie haut ni bas. Hibou niche pas.
157 Pie niche haut, caille niche bas, ver n’a pas d’os, taupe en a, coq a pattes et os.
158 Pipelette quand donc te dépipeletteraseriseras-tu ? Je me dépipeletteriserai quand toutes les pipelettes se dépipeletteriseront.
159 Plate poche – Poche plate / Poche plate – Plate poche.
160 Porte cette couronne sur le trône et, parole! tu as le rôle. Celui de la grosse pomme sur l’épaule de Paul ou de la rose jaune sur la paume de Tom.
161 Poupons et poupées par papis et pépés mimiques et mounaques pour mamies et mémés.
162 Pour qui sont ces serpents qui sifflent sur vos têtes ?
163 Pruneau cru, pruneau cuit.
164 Qu’a bu l’âne au lac? – L’âne au lac a bu l’eau.
165 Quand un cordier cordant veut corder une corde, pour sa corde à corder, trois cordons il accorde. Mais si l’un des cordons de la corde décorde, le cordon décordant fait décorder la corde.
166 Quatre coquets coqs croquaient quatre croquantes coquilles.
167 Que lit Lili sous ces lilas-là ? Lili lit l’Iliade.
168 Rat vit rôt, rôt tenta rat, rat mit patte à rôt, rot brûla pattes à rat, rat secoua pattes et quitta rôt.
169 Sachez cacher votre angoisse.
170 Sachez soigner ces six chatons si soyeux.
171 Sachons que la chanson de Samson sèche dans le songe chaud de Dalila séchant ses cheveux.
172 Sachons que Zachée est un sage.
173 Sage chasseur âgé aux yeux chassieux, sachez chasser sans chien chose aisée, ce chat chauve caché sous ces six chiches souches de sauge sèche.
174 Salut sissi qui assise sur son sot , suçait son sang sur son sein.
175 Sans bruit sur le miroir des lacs profonds et calmes le cygne chasse l’onde et glisse.
176 Sèche linge, lèche singe.
177 Seize jacinthes jaunes sèchent dans seize sachets sales.
178 Si ces 500 sangsues sont sur son sein sans sucer son sang, ces 500 sangsues sont sans succès.
179 Si j’arrête ces six charrettes, ces six charrettes s’arrêtent
180 Si je mouille mes coudes. Mes coudes se mouillent -ils? Oui, mes coudes se mouillent.
181 Si l ‘Américain se désaméricaniserait comment le réaméricaniserions-nous, l’Américain ? On le réaméricaniserait comme on l’a désaméricanisé, l’Américain.
182 Si la cathédrale se décathédraliserait, comment. la recathédraliserait-on, la cathédrale ? On la recathédraliserait comme on l’a décathédralisées, la cathédrale.
183 Si la vache arrache et mâche, sache que çà gâche la mâche.
184 Si si ça c’est sûr.
185 Si six cents scies scient six cents cigares, six cent six scies scieront six cent six cigares.
186 Si six saucisses sont six sous, six cent saucisses sont six-cent sous.
187 Si six scies scient six cyprès, six cent sic scies scient six cent six cyprès.
188 Si tu m’eusses cru. Tu te fusses tu. Te fusses-tu tu, Tu m’eusses plus cru !
189 Six chérubins siciliens, juché sur six sièges, chuchotèrent ceci. Salut citoyen chaste et sage, au yeux chassieux et au sang chaud. Sache chasser, chose aisée, ce chat sauvage, dessous ces souches de sauge fraîche.
190 Six slips chics, six chics slips.
191 Son sage chat, son sage chien, son sage singe.
192 Sous chaque sac sale se cherchent chez Charles six chouettes moites par la sève suintante d’un sapin nain.
193 Sous un arbre, vos laitues naissent-elles? Oui mes laitues naissent ! et vos laitues naissent ? Si vos laitues naissent, vos navets naissent.
194 Suis-je chez ce cher Serge ?
195 Supercalifragilistique expialidocious, Supercalifragilistique expialidocious, Supercalifragilistique expialidocious…
196 Sur six souches couchées séchaient seize chemises et soixante chaussettes toutes sans dessus dessous.
197 Ta Kathie t’a quitté.
198 Ta tante a teint tantôt le thé d’hier.
199 Tas de riz, tas de rats, Tas de ris tentant, Tas de rats tentés, Tas de riz tentant tenta tas de rats tentés Tas de rats tentés tâta tas de riz tentant.
200 Tas tout un tas de tics et tu t’éteins ; tu t’attaques à ton teint en t’entêtant Totor, t’as tort, tu te tues et t’as tort.
201 Toi, daim têtu, tu t’es totalement trompé, tant dans tes totems que dans tes attitudes tatillonnes devant tes deux doux totems.
202 Ton tatou tatoué a tué ton toutou.
203 Ton temps têtu te tatoue.
204 Ton thé t’a-t-il ôté ta toux ?
205 Tonton toto, ton thé t’a t-il ôté ta toux? Tout étant à tenter, toto, pour que tout aille, ta tante et ton tonton t’ont ôté tour à tour, ta toque et ton tutu, atout de ta beauté…tant tentant son ton teint et ta tête et ta taille !
206 Totor t’as tort, tu t’uses et tu te tues, pourquoi t’entêtes-tu ? En t’entêtant, t’entends Totor, tu te tues et t’as tort.
207 Traître ! Ton traité intraitable traite Tristan trop tristement.
208 Très grand doreur, quand redoreras-tu sûrement et d’un goût rare mes trente trois ou trente quatre cuillères d’or trop argentées ? Je redorerai sûrement quatre grandes cuillères d’or trop argentées, quand j’aurai redoré sûrement et d’un goût rare tes trente trois ou trente quatre autres grandes cuillères d’or trop argentées.
209 Trois bonnes grosses grasses grand-mères aux beaux gros bras blancs croquent trois gros ronds radis roses.
210 Trois fraises fraîches et trois petites pipes fines.
211 Trois petites truites cuites, trois petites truites crues.
212 Trois tortues à triste tête trottaient sur trois toits très étroits.
213 Trois très gras rats gris dans trois très gros trous creux.
214 Trois très gros rats dans trois très gros trous rongèrent trois très gros grains d’orge.
215 Trois très gros, gras, grands rats gris grattent.
216 Trop ou trop peu qu’importe que la troupe soit trop peureuse si elle est trop heureuse.
217 Un ange qui songeait à changer son visage pour donner le change, se vit si changé, que loin de louanger ce changement, il jugea que tous les autres anges jugeraient que jamais ange ainsi changé ne rechangerait jamais, et jamais plus ange ne songea à se changer.
218 Un beau gros bras blanc.
219 Un chanteur enchanteur enchante sur le champ en chantant des chants touchants, touchant les champs.
220 Un chasseur sachant chasser chasse sans son chien.
221 Un chèque kitch c’est chic, un tchèque trotskiste çà choque.
222 Un clapotis clapotant crépitant caquetant capitule et calanche à la vue d’un képi.
223 Un clapotis clapotant crépitant caquetant capitule et calanche à la vue d’un képi.
224 Un crissant et cruel crin-crin crisseras-tu et crincrineras-tu sans trêve ?
225 Un crissant et cruel crin-crin crisseras-tu et crincrineras-tu sans trêve ?
226 Un dentiste en piste domptait dix dompteurs édentés.
227 Un deux trois du charbon de bois. Quatre cinq six, six cent six saucisses. Sept huit neuf, un barbecue neuf . Dix onze douze, au milieu d’la pelouse. Comptez jusqu’à treize, s’il reste des braises .Grillez les merguez.
228 Un faux fauve fautif faucha la fofolle Fanchon sans fanfare.
229 Un gradé dragon dégrade un dragon gradé.
230 Un jour Kiki la cocotte demande à Coco le concasseur de cacao de lui offrir un caraco kaki avec un col de caracul. Coco le concasseur de cacao voulu bien offrir à Kiki la cocotte le caraco kaki mais sans col de caracul. Or vint un coquin qui conquit le cœur de Kiki la cocotte. Il offrit à Kiki la cocotte le caraco kaki avec le col de caracul ! conclusion : Coco le concasseur de cacao fut cocu.
231 Un matin en prenant un bain j’ai mangé mon pain dans mon bain j’ai pris un pain j’ai pris un bain j’ai pris un bain pain.
232 Un pâtissier pâtissait chez un tapissier qui tapissait. Le tapissier qui tapissait dit au pâtissier qui pâtissait : » Pourquoi, pâtissier, viens-tu pâtisser chez un tapissier qui tapisse ? « . Le pâtissier qui pâtissait répondit au tapissier qui tapissait : » Un pâtissier peut aussi bien pâtisser chez un tapissier qui tapisse, qu’un tapissier peut tapisser chez un pâtissier qui pâtisse. «
!!''→ [[Le monologue|LA FEMME JUIVE • Brecht]]''
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!LA FOLLE JOURNÉE OU LE MARIAGE DE FIGARO
//Édition du 10 décembre 2019// (texte de référence )
|''[[Version pdf|https://drive.google.com/open?id=1znLSwgAVkjrKCNN1u-5FRf6npbks_EaD]] - [[Version TXT|https://drive.google.com/open?id=1JbrwVnq8VD--v5P1chePKfECT47b7Aqf]] - [[Version Imparato pour italiennes seul|https://www.imparato.io/plays/33609]]''|
//Suppression de Bartholo au premier acte, gommage de sa relation maritale avec Marceline, et des allusions à ses promesses de mariage avec Marceline suppression des deux dernières scènes de l'acte III avec Antonietta et Brid'Oison, suppression du Vaudeville final.//
* ''[[Changements de scènes]] ''
* ''[[Présentation de Beaumarchais]]''
!ACTE I
!![[I-1 Suzanne et Figaro]]
!![[I-Scènes 2 et 3 //raccourcie//]]
!![[I-Scène 4 MARCELINE //raccourcie//]]
!![[I-Scènes 5 et 6 • MARCELINE, SUZANNE]]
!![[I-Scène 7 • Suzanne avec Chérubin]]
!ACTE II
!![[II-Scène 1 • SUZANNE, LA COMTESSE assise]]
!![[II-Scène 2 FIGARO, SUZANNE, LA COMTESSE assise]]
!![[II-Scènes 3, 4 et 5 • SUZANNE ; LA COMTESSE assise]]
!![[II-Scène 6 • CHÉRUBIN, LA COMTESSE, SUZANNE]]
!![[II-Scène 8 • CHÉRUBIN, à genoux ; LA COMTESSE, assise ; SUZANNE]]
!![[II-Scène10 CHÉRUBIN, LA COMTESSE ; LE COMTE, en dehors]]
!![[II-Scène 12 LE COMTE, LA COMTESSE]]
!![[II-Scène 13 • LE COMTE, LA COMTESSE ; SUZANNE]]
!![[II-Scène 14 SUZANNE, CHÉRUBIN]]
!![[II-Scène 15 • SUZANNE, seule]]
!![[II-Scène 16 • LE COMTE, LA COMTESSE]]
!![[II-Scènes 17, 18 et 19 • LA COMTESSE, LE COMTE, SUZANNE]]
!![[II-Scène 20 • SUZANNE, FIGARO, LA COMTESSE, LE COMTE.]]
!![[II-Scène 21 • FIGARO, SUZANNE, LA COMTESSE, LE COMTE, ANTONIO.]]
!![[II-Scène 22 • BARTHOLO, MARCELINE, FIGARO, LE COMTE, GRIPE-SOLEIL, LA COMTESSE, SUZANNE, ANTONIO ; valets du Comte, ses vassaux.]]
!![[II-Scènes 24 et 25• SUZANNE, LA COMTESSE.]]
<<<
//. . . Pendant l'entracte, des valets arrangent la salle d'audience. On apporte les deux banquettes à dossier des avocats, que l'on place aux deux côtés du théâtre, de façon que le passage soit libre par-derrière. On pose une estrade à deux marches dans le milieu du théâtre, vers le fond, sur laquelle on place le fauteuil du comte. On met la table du greffier et son tabouret de côté sur le devant, et des sièges pour Brid'oison et d'autres juges, des deux côtés de l'estrade du comte//
<<<
!ACTE III
!![[III-Scène 4 • LE COMTE, seul, marche en rêvant.]]
!![[III-Scène 5 • LE COMTE, FIGARO.]]
!![[III-Scène 6 et 7 • Le COMTE, un laquais, FIGARO.]]
!![[III-Scène 8 • LE COMTE, seul.]]
!![[III-Scènes 9 et 10 • SUZANNE, LE COMTE.]]
!![[III-Scène 11 • LE COMTE rentre seul.]]
!![[III-Scène 12 • BARTHOLO, MARCELINE, BRID'OISON.]]
!![[III-Scène 13 • BARTHOLO, MARCELINE, BRID'OISON ; FIGARO]]
!![[III-Scène 14 • BARTHOLO, MARCELINE, LE COMTE, BRID'OISON, FIGARO, UN HUISSIER.]]
!![[III-Scène 15 Le COMTE BRI,D'OISON, le greffier, MARCELINE, BARTHOLO, FIGARO et ANTONIO, les valets du château, les paysans et paysannes en habits de fête]]
!![[III-Scène 16 • LE COMTE, MARCELINE, BARTHOLO, FIGARO, BRID'OISON.]]
!![[III-Scène 18 • BARTHOLO, ANTONIO, SUZANNE, FIGARO, MARCELINE, BRID'OISON]]
!ACTE IV,
//début, augmenté du monogue de l'acte V scène 3//
!![[IV-Scène 1 • FIGARO, SUZANNE.]]
!! [[Monologue de Figaro]]
!![[IV-Scène I FIGARO, SUZANNE. (deuxième partie)]]
!!!FIL À LA PATTE //Scène II//
!!VIVIANE, LA BARONNE
!!!!Feydeau
;LA BARONNE.
:,,//allant à Viviane, la regardant avec tendresse, l'embrasse, puis s'asseyant, près d'elle, sur la chaise longue //,,
:Eh bien ! ma chérie, nous voilà arrivées au grand jour !
;VIVIANE,
:,,//indifférente//,,
:Mon Dieu, oui !...
;LA BARONNE
: ,,//le bras passé autour de la taille de sa fille. //,,
:Tu es contente de devenir la femme de M. de Bois-d'Enghien ?
;VIVIANE.
:Moi ?... Oh ! ça m'est égal !
;LA BARONNE
: ,,//ahurie//,,
:Comment, ça t'est égal ?
;VIVIANE
:,,//positive//,,
:En somme, ça n'est jamais que pour en faire mon mari !
;LA BARONNE.
:Eh bien ! mais... il me semble que ça suffit ! Ah ! çà pourquoi crois-tu donc qu'on se marie ?
;VIVIANE.
:Oh ! pour faire comme tout le monde ! parce qu'il arrive un temps où, comme autrefois on a quitté sa bonne pour prendre une gouvernante, on doit quitter sa gouvernante pour prendre un mari.
;LA BARONNE
: ,,//renversée//,,
:Oh !
;VIVIANE,.
:C'est une dame de compagnie... homme, voilà !
;LA BARONNE.
:Mais il y a autre chose !... Et la maternité, qu'est-ce que tu en fais ?...
;VIVIANE,.
:Ah ! oui, la maternité, ça c'est gentil !... mais... qu'est-ce que le mari a à faire là-dedans ?
;LA BARONNE.
:Comment, "//ce qu'il a à faire//" ?
;VIVIANE
:,,//très logique//,,
:Mais dame ! est-ce qu'il n'y a pas un tas de demoiselles qui ont des enfants et un tas de femmes mariées qui n'en ont pas !... Par conséquent, si c'était le mari... n'est-ce pas ?...
;LA BARONNE
: ,,//va pour lui répondre, puis ne trouvant rien, se levant et gagnant la droite//,,
:Elle est déconcertante !
:,,//(À Viviane qui s'est levée.) //,,
:Enfin, en quoi ne te plaît-il pas, M. de Bois-d'Enghien ? Un beau nom ?...
;VIVIANE
:,,//gagnant l'extrême gauche et avec une moue//,,
:Pffeu ! noblesse de l'Empire !
;LA BARONNE.
:Il est bien de sa personne !...
;VIVIANE
:,,//remontant jusqu'au-dessus de la chaise longue//,,
:Oh ! pour un mari, on est toujours assez bien !... Regarde dans n'importe quel ménage, quand il y a deux hommes, c'est toujours le mari qui est le plus laid... alors !...
;LA BARONNE
: ,,//qui est remontée parallèlement à sa fille, redescend //,,
:Mais, ça n'est pas obligatoire ! Et puisqu'on se marie, autant chercher dans son époux son idéal complet, quand ça ne serait que pour éviter de le compléter ensuite !
;VIVIANE
:,,//allant à elle//,,
:Oh ! bien, oui ! mais comme moi, mon idéal d'homme, c'est justement toujours l'homme que je ne peux pas épouser...
;LA BARONNE.
:Pourquoi ça ?
;VIVIANE.
:Parce que tu me voudrais pas !... Moi, j'aurais désiré un homme très en vue...
;LA BARONNE.
:Eh bien ! mais je comprends très bien ça... un artiste, par exemple.
;VIVIANE.
:Non... un mauvais sujet.
;LA BARONNE
: ,,//bondissant//,,.
:Qu'est-ce que tu dis ?
;VIVIANE.
:Un homme comme M. de Frenel, tiens !
:,,//(Mouvement de la baronne.) //,,
:Je le cite comme j'en citerais tant d'autres. Tu sais, celui que nous avons vu l'été dernier à Trouville ! Ah ! voilà un mauvais sujet qui m'aurait convenu.
;LA BARONNE.
:Oh ! l'horreur... Un garçon qui a une réputation !...
;VIVIANE
:,,//appuyant sur le mot.//,,
:Détestable ! oui, maman... C'est ça qui vous pose un homme...
;LA BARONNE.
:Oh !
;VIVIANE,.
:Un monsieur dont on pouvait citer toutes les maîtresses !
;LA BARONNE
: ,,//scandalisée//,,
:"//Les maîtresses//" ! Viviane, où as-tu appris à prononcer ces mots-là ?
;VIVIANE
:,,//très naturellement //,,
:Dans l'histoire de France, maman.
:,,//(Récitant.)//,,
:Henri IV, Louis XIV, Louis XV, 1715-1774.
;LA BARONNE
:,,//avec candeur//,,
:Oh ! des rois ! donner un pareil exemple à des jeunes filles !
;VIVIANE,
:Il paraît qu'il y en a même trois qui sont mortes pour lui !
;LA BARONNE.
:Pour Louis XV ?
;VIVIANE,
:Mais non !... pour M. de Frenel... deux d'un coup de revolver et la troisième d'indigestion.
:,,//(Changement de ton.)//,,
:Aussi, ce que toutes les femmes couraient après lui, à Trouville !...
;LA BARONNE
: ,,//la ramenant à elle au moment où elle va pour gagner la gauche //,,
:Mais toi, toi ! ça ne me dit pas comment il t'a plu ?
;VIVIANE.
:Tiens ! c'est quand j'ai vu que toutes les femmes en avaient envie ! c'est comme en tout, ça ! Pourquoi désire-t-on une chose ? C'est parce que les autres la désirent... Qu'est-ce qui fait la valeur d'un objet ? C'est l'offre et la demande. Eh bien ! pour M. de Frenel...
;LA BARONNE.
:Il y avait beaucoup de demandes ?
;VIVIANE,.
:Tu y es ! Alors je me disais : "//Voilà comme j'aimerais un mari !//", parce qu'un mari comme ça, c'est flatteur ! ça devient comme une espèce de légion d'honneur ! et l'on est doublement fier de l'obtenir : d'abord pour la distinction dont on est l'objet, et puis... parce que ça fait rager les autres !...
;LA BARONNE.
:Mais c'est de la vanité, ça ! ce n'est pas de l'amour !...
;VIVIANE,.
:Je te demande pardon, c'est ça, l'amour ! C'est quand on peut se dire : "//Ah ! ah ! cet homme-là, vous auriez bien voulu l'avoir... Eh bien ! c'est moi qui l'ai, et vous ne l'aurez pas !//"
:,,//(Avec une petite révérence.) //,,
:C'est pas autre chose, l'amour !
;LA BARONNE
: ,,//descendant un peu//,,
:Qu'est-ce que tu veux, tu me déconcertes !
;VIVIANE
:,,//la rejoignant par derrière, et comme une enfant câline, la tête par-dessus l'épaule de sa mère, l'enserrant de ses deux bras //,,
:Non, vois-tu, maman, tu es encore trop jeune pour comprendre ça !...
;LA BARONNE
: ,,//riant//,,
:Il faut croire !
:,,//Elle l'embrasse.//,,
;VIVIANE
:Eh bien ! voilà justement ce que je reproche à M. de Bois-d'Enghien ; il est très gentil, très bien, mais... il ne fait pas sensation ! Enfin ! quand on pense... qu'il n'y a pas la plus petite femme qui se soit tuée pour lui !...
;LA BARONNE.
:Est-ce que ça l'empêchera de te rendre heureuse ?
;VIVIANE
:,,//quittant sa mère et gagnant la gauche //,,
:Oh ! ça, je n'en doute pas...
:,,//(Revenant à sa mère.) //,,
:Et puis, si ça n'était pas, avec le divorce, n'est-ce pas ? c'est simple !
:,,//Elle gagne la gauche.//,,
;LA BARONNE
:,,// au public//,,
:Allons ! elle me paraît en bonne disposition pour le mariage !...
!Garde à Vue
!!!!!« Un Roman Français//»
!!!!!de Frédéric Beigbeder //
;Le commissaire
:Ah, je vous reconnais !
;Frédéric
:Moi pas. Enfin un peu, vous me faites un peu penser à Yves Rénier dans le Commissaire Moulin.
;Le commissaire
:Passons au vrai sujet.
:Pourquoi vous êtes vous laissé aller à faire un tel geste ?
;Frédéric
:C'est peut-être un hommage à un romancier américain qui a beaucoup influencé mon travail.
:Il y a une scène où son héros sniffait sur le capot d'une Porsche
::en plein milieu de Manhattan.
:
:J'ai une passion pour la littérature américaine des années 20,
::comment la prohibition inspira Gatsby à Fitzgerald.
:C'est une époque au moins où les fumeurs de cigarettes n'étaient pas obligés par la loi de fumer dans la rue !
;Le commissaire
:Et bien vous allez pouvoir enrichir votre invention romanesque d'un passage dans la prison.
:Comme Giono.
:Saviez-vous que Giono a eu l'idée du //Hussard sur le Toit// en prison,
:lorsqu'il fut incarcéré à la Libération ?
;Frédéric
:Giono ?
::Si je m'attendais, ici !
:Je n'ai guère en tête de Giono que cette citation :
::“ //Mon livre est fini, je n'ai plus qu'à l'écrire.//”
:Je vous sais gré de l'étroitesse des conditions de ma garde à vue
::qui va contribuer à épanouir mon imaginaire.
:Me voilà enrôlé dans //Le Cercle des Poètes Détenus// :
::Villon
::Marot
::Cervantès
::Casanova
::Voltaire
::Sade
::Verlaine...
:Merci inspecteur,
:il ne me reste plus qu'à écrire
::“//Balade de ma geôle des Champs-Élysées// ”
://( Le commissaire glisse un papier dans sa machine et commence à taper )//
;Le commissaire
:Pourquoi vous droguez-vous ?
;Frédéric
:C'est un bien grand mot.
;Le commissaire
:Pourquoi consommez-vous ce produit toxique ?
;Frédéric
:Quête de plaisir fugace.
;Le commissaire
:Vous voulez mourir ?
;Frédéric
:Écouter commissaire, ma santé ne vous regarde pas, tant qu'elle n'attente pas à la vôtre.
;Le commissaire
:Vous vous détruisez !
;Frédéric
:Non, je m'ennuie, et ce ne devrait pas être votre problème. Je suis en désaccord avec cette société qui prétend protéger les gens contre eux-mêmes, les empêcher de s'abîmer , comme si l'être humain pouvait vivre autrement qu'en collectionnant les vices agréable et des addictions toxiques.
;Le commissaire
:Je ne suis pas responsable des lois,
:je suis là pour qu'elles soient appliquées.
:Vous ne faites pas de mal qu'à vous-même,
:vous avez une fille.
;Frédéric
:Comportement névrotique. J'ai remarqué que je m'éloigne de ceux que j'aime. Si vous me prêter un divan, je vais vous expliquer pourquoi. Combien de temps nous avons, 3 ans ?
;Le commissaire
:Non, mais 24 heures,
:ou 48,
:voire 72.
:Je peux prolonger la garde à vue autant qu'il le faudra.
:Vous êtes connu du grand public,
:vous donnez un mauvais exemple.
:On peut se permettre d'être plus sévère avec vous qu'avec un autre.
;Frédéric
(...)
Pourtant la France est le pays de la Liberté.
*Ce qui m'autorise à revendiquer le droit de me Brûler les Ailes,
*Le droit de tomber bien bas,
*le Droit de Couler à Pic.
Ce sont des droits de l'homme qui devraient figurer dans le préambule de la Constitution
*au même titre que le Le droit de tromper sa femme sans être photographié dans les journaux,
*le Droit de Coucher avec une Prostituée,
*Le droit de fumer une cigarette en avion ou de boire du whisky sur un plateau de télévision,
*Le droit de faire l'amour sans préservatif avec des personnes acceptant de courir ce risque,
*Le droit de mourir dans la dignité quand on est atteint d'une maladie Douloureusement incurable,
*Le droit de grignoter entre les repas,
*le droit de ne pas manger 5 fruits et légumes par jour,
*Le droit de coucher avec une personne de 16 ans consentante sans que celle-ci ne portent plainte 5 ans après pour corruption de mineur ...
:Je continue ?
;Le commissaire
:On s'éloigne du sujet.
:La drogue,
:c'est un fléau qui fout en l'air la vie de centaines de milliers de jeunes
:qui n'ont pas la même chance que vous.
:Vous êtes issu d'un bon milieu,
::je vois que vous gagnez bien votre vie,
::vous avez effectué des études supérieures.
:Vous n'êtes pas à plaindre.
;Frédéric
:Ah non ! Pas vous, pas ça ! Parce qu'on est un bourgeois on n'a pas le droit de se plaindre ? On m'a fait ce coup-là toute ma vie, merde !
;Le commissaire
:La plupart des délinquants enfermés ici sont très pauvres.
:Eux,
:je comprends mieux pourquoi il dérapent...
;Frédéric
:Si les riches étaient tous heureux, le capitalisme aurait toujours raison, et votre métier serait moins intéressant.
;Le commissaire
:Vous ne comprenez pas les dégâts de cette merde.
:Moi, je les vois tous les jours.
::La cocaïne a envahi tous les départements,
::les villes,
::les banlieues,
::jusqu'au plus petit village, les adolescents en trafiquent dans la cour de récréation !
:Que direz-vous quand votre fille en prendra à l'école ?
;Frédéric
:Si à 42 ans je désobéis aux lois,
:c'est parce que je n'ai pas assez désobéi à ma mère dans ma jeunesse.
:
:J'ai 20 ans de désobéissance à rattraper.
:
:Ma fille,
::je la préviens des dangers qui la menacent.
::Mais je n'en veux jamais à un enfant de désobéir :
:::il s'affirme.
::Bien sûr que je gronde ma fille quand elle fait un caprice,
::mais je serais nettement plus inquiet si elle n'en faisait jamais.
:Je vais écrire un livre sur mes origines.
::Puisque vous me traitez comme un môme,
::je vais essayer d'en redevenir un.
:Pour expliquer à ma fille que le plaisir est une chose très sérieuse :
::nécessaire mais dangereuse.
:Vous ne comprenez pas que cette affaire nous dépasse tous les deux ?
:Ce qui est en cause c'est notre façon de vivre.
:
:Au lieu de frapper les victimes,
:demandez vous pourquoi tant de jeunes
::sont désespérés,
:pourquoi
::ils crèvent d'ennui,
:pourquoi
::ils cherchent n'importe quelle sensation extrême
:plutôt que le sinistre destin
:de consommateur frustré,
:d'individu normalisé,
:de zombie formaté,
:de chômeurs programmés.
;Le commissaire
:Je suis flic, vous êtes écrivain.
:Chacun son boulot.
:Nous,
:quand un jeune fout le feu à une bagnole,
:on l'interpelle
:et on l'envoie devant un juge.
:Vous,
::vous essayez d'analyser les raisons de sa révolte nihiliste...
:Libre à vous.
;Frédéric
:Ce que vous refusez de vous voir, c'est que ce produit n'est qu'un prétexte pour se rapprocher des autres, un truchement entre inconnus, un biais pour tromper sa solitude, un lien idiot mais réelle entre égarés... Si vous connaissez un truc qui permette autant de fraterniser avec d'autres paumés, dites-le-moi.
;Le commissaire
:D'accord, d'accord ...
:Je me demande tout de même
:comment vous allez faire pour écrire sur vos origines ?
;Frédéric
:Ah bon, et pourquoi ça ?
;Le commissaire
:Bah, tout le monde le sait ...
;Frédéric
:Tout le monde sait quoi ?
;Le commissaire
:Enfin voyons,
:la coke
:fait perdre la mémoire.
;Frédéric
:Merde, voilà pourquoi je m'escrimais dans mon cachot à me souvenir de ce que j'avais oublié. Vous avez raison, cette drogue fait perdre la mémoire, vivre intensément dans le présent, et se sentir mal le lendemain. C'est la drogue des gens qui ne veulent ni se souvenir ni espérer. La coke brûle l'héritage ; si j'écris sur elle c'est parce qu'elle symbolise notre temps. La cocaïne est dans mes livres non pas pour faire branché ou trash mais parce qu'elle condense notre époque : Elle est la métaphore d'un présent perpétuel sans passé ni futur. Croyez-moi, un produit pareil ne pouvait que dominer le monde actuel ; nous n'en sommes qu'au début de l'intoxication planétaire.
;Le commissaire
:J'espère que vous vous trompez ...
;Frédéric
:Moi aussi.
://( Le commissaire tend à Frédéric un exemplaire de ses déclarations qui viennent de sortir de l'imprimante )//
;Le commissaire
:Relisez et signez en bas.
:L'audition est terminée,
:je vais vous raccompagner en cellule et faxer mon rapport au procureur.
;Frédéric
:Je sortirai quand ?
;Le commissaire
:Plus vite j'enverrai le fax,
:plus vite le magistrat décidera si on vous libère,
:et quand.
:Mais il ne faut pas compter avant 11h :
::il n'arrive pas à son bureau avant...
::Et comme vous êtes “connu”, il tient à s'occuper de votre affaire personnellement.
;Frédéric
:Mais vous ne pouvez rien faire ... je suis claustrophobe, je deviens dingue là-dedans, c'est l'horreur...
;Le commissaire
:Je sais :
:c'est fait pour.
:Les cellules de garde à vue sont spécialement conçues pour vous déstabiliser
:et vous mettre en situation de tout nous raconter.
:Mais ne vous en faites pas,
:votre cas est banal,
:normalement vous sortirez à midi. //(En souriant)//
:Je vais vous reconduire à votre cage.
;Frédéric
:La police française a toujours eu une façon très humaine d'être inhumaine.
//Ils sortent, on entend le bruit du cadenas. //
Dans notre jeu, et je pense dans l'esprit de Goldoni, si chaque personnage campe la silhouette bien typée et reconnaissable d'un caractère, il y a un trait qu'ils partagent tous, chacun à sa manière : __la malice__.
* Naîvement malicieuse Barbara<br>qui se croit fine stratège dans sa manière de caser sa progéniture.
* Bêtement malicieux Nicoletto<br>qui se prend les pieds dans ses mensonges multiples
* Très discrètement malicieuse Agnese<br>qui avec son empathie adroite réussit à savoir ce qu'elle veut et à conduire où elle le souhaite
* Malicieuse Giacomina<br>qui dit devant sa mère ce qu'elle attend qu'elle dise, sans rien en penser et qui n'en juge pas moins
* Malicieuse l'indiscrète Margarita<br>qui n'a de cesse de savoir ce qu'elle ne sait pas, de faire savoir ce qu'elle sait, mais qui ne veut surtout pas être celle qui l'aura dit.
* Lourdeurs malicieuses, croit-il, de Lunardo<br>dans ses approches dès qu'il se trouve seul avec une femme.
* Familiarités malicieuses, croit-il, de Rocco<br>quand il fait miroiter les avantages de ce qu'il propose pour son avantage commercial
* Mais Lodovica... Daniela ... , malicieuses ?
Là, sauf à vouloir à tout prix un effet de style, je bute !
:Et si, l'une avec son obsession d'argent, l'autre avec son rève de Prnce Charmant elles étaient franches du collier ?
:Si, contrepoint de ceux du beau quartier, ces habitantes de la rue de l'Oie étaient simples et transparentes ?
Une chose me parait sûre : Goldoni aime ses personnages.<br>Nous devons tous les faire aimer. Tous sont sympathiques, au travers de leurs tics ou de leurs stratégies, de leurs maladresses.
Chacun a son mobile qui l'anime. Ils peuvent être naïfs, curieux, moqueurs, mordants, primesautiers, ironiques, enjoués, provocateurs, duplices, soupçonneux, complices, ou malicieux. Tous mordent la vie à pleines dents. Leur joie de vivre est contaminante.
Ne laissons aucune grisaille s'introduire dans notre jeu.
!!!''Google propose enfin un outil complet [[https://duo.google.com/]] pour communiquer avec ses proches.''
```
Google Duo appels vidéo de groupe
jusqu'à douze participants simultanés.
```
|>| '',,Télécharger l'appli pour smartphone,,<br>^^ou tablette connectée^^'' |
| ^^[[Google Play Android|https://play.google.com/store/apps/details?id=com.google.android.apps.tachyon]]^^ | ^^[[AppStore Apple|https://itunes.apple.com/us/app/google-duo-simple-video-calling/id1096918571?mt=8]]^^ |
<<<
,,''-► [[Comparatif des services d'appels vidéo]]'',,
<<<
^^[[Source|https://www.generation-nt.com/google-duo-messagerie-appel-video-groupe-actualite-1965255.html]]^^
Pour son application Google Duo d'appel vidéo sur Android et iOS, Google déploie la fonctionnalité des appels vidéo de groupe. Il est ainsi possible de créer un groupe, choisir les contacts à appeler, puis procéder à un appel vidéo de groupe.
Jusqu'à huit personnes en tout peuvent prendre part à un appel vidéo . C'est moins que les trente-deux de ~FaceTime d'Apple et cinquante avec Skype. L'application de Google se positionne principalement pour les appels entre proches.
[img[https://img.generation-nt.com/google-duo-appel-video-groupe_04B002A801660524.png]]
[[Google précise|https://www.blog.google/products/duo/few-new-features-try-your-next-video-call-google-duo/]] que comme pour tous les appels et messages vidéo avec Duo, les appels vidéo de groupe profitent d'un ''chiffrement de bout en bout''.
Sur Android et sur Apple iOS, Google Duo ajoute en outre la personnalisation des messages vidéo avec du texte et des emojis, voire en dessinant sur le message.
<<<
!!!!!''Caractéristiques''
//^^Wikipedia^^//
Les principales fonctionnalités de l'application sont :
# une ''vidéo'' HD 720p ;
# une ''optimisation'' pour les réseaux mobiles à faible bande passante ; l'application s'adapte à la qualité du réseau;
# ''Knock Knock'', une fonctionnalité unique à Android qui présente une image de l'appelant avant que le destinataire accepte la communication, pour que, selon Google, l'appel ressemble plus à une invitation qu'à une interruption ;
# ''chiffrement de bout en bout'' par défaut ;
# la présence du ''Google Assistant'' ;
# l'''utilisation de numéros de téléphone'' comme identifiant pour permettre aux utilisateurs d'appeler facilement les personnes de leur liste de contacts ;
# la commutation automatique entre réseau ''Wi-Fi et réseau mobile'' en cas d'absence ou d'insuffisance du premier.
<<<
!!GRAPHOLOGIE^^
//de Catherine Blanchard//^^
>//L'Amour existe, je l'ai rencontré hier à 16 h 00 au supermarché et je n'étais même pas coiffée.//
;Elle.
:Bonjour, je connais quelqu'un depuis plusieurs mois, un homme très gentil
:et je voudrais être sûre de ses sentiments avant d'aller plus loin...
;Lui.
:Mais c'est tout naturel mademoiselle...
:Grâce à la graphologie, je peux mettre en lumière certains traits de caractère...
:si vous avez un mot écrit de sa main...
;Elle.
:Heu oui
:j'ai apporté... sa dernière lettre...
;Lui.
:Montrez... belle écriture... beaux jambages...
;Elle.
: Oui... il est très beau... très grand :
:1 mètre 80...
;Lui.
:Des pleins, des déliés...
:il est sûr de lui.
;Elle.
: Très, très.
;Lui.
:Voyons voir... //« Paulette... »//
;Elle.
: C'est mon prénom
;Lui.
:Il vous appelle par votre prénom... c' est un affectueux...
;Elle.
: Oui, il est très affectueux !
;Lui.
://«Pauvre gourde ! »// Ah ! Il vous connaît bien...
;Elle.
: Oui... il m'appelle toujours comme ça !
;Lui.
://« Pauvre gourde, tu t'es encore gourrée de date, ton chèque de 500 balles est arrivé trop tard, conclusion, faut que tu m'en fasses un autre sinon gare à toi ! »//
:On sent qu'il vous est très attaché et qu'il a besoin de vous.
;Elle.
: Ah bon, où ça ?
;Lui.
:Ça se voit très bien dans la forme de ses T...
:Regardez : Tu, Ton chèque, gare à Toi !
;Elle.
: Ah ! vous voyez tout ça dans ses //« T »//...
;Lui.
:Oui, et ça se confirme par ses //« F »//... //« Faut pas que tu me fasses faux bond maintenant ou je te fous sur la figure... »//
:Il vous aime vraiment et sincèrement...
:Regardez l'arrondi de son //« F »//...
;Elle.
: Oui, il est bien rond son //« F »//,
:c'est formidable de pouvoir lire entre les lignes comme ça...
:Remarquez je me doutais qu'il m'aimait, mais c'est difficile de croire au bonheur, depuis le temps que j'espérais rencontrer quelqu'un...
:Alors nous deux c'est du solide ?
;Lui.
:Ça, il est pas près de vous quitter à la manière dont il vous met les points sur les //« i »// ...
://« Si tu veux qu'on se voit samedi, tâche de t'habiller un peu mieux, on dirait ma grand-mère... »//
:Quand il pense à vous, ça lui rappelle sa famille... C'est bon signe !
;Elle.
: Oui...
:Ce n'est pas gênant la différence d'âge ?
;Lui.
:Non ...
://«et puis surtout boucle-là, ça t'évitera de dire des c... »//
:J'arrive pas à lire là...
:mais la boucle du //« b »// boucle-la, il veut vous protéger...
:entre vous il n'y a pas besoin de mots...
;Elle.
:Ça il n'a jamais voulu me dire qu'il m'aimait ... jamais...
;Lui.
:...Et il termine par... //« Oublie pas ta voiture si tu veux que je te ramène. Salut »//...
;Elle.
: Salut c'est un peu froid ?
;Lui.
:Non Le //« s »// touche le //« a »// ... Ça veut dire qu'il vous embrasse...
;Elle
:Merci, merci beaucoup.
:Voilà mon chèque...
;Lui.
:Au revoir Mademoiselle.
//(Elle sort.)//
:Elle a bien l'écriture d'une gourde !
!!GRAPHOLOGIE^^
//de Catherine Blanchard//^^
>//L'Amour existe, je l'ai rencontré hier à 16 h 00 au supermarché et je n'étais même pas coiffée.//
;Elle.
:Bonjour, je connais quelqu'un depuis plusieurs mois, un homme très gentil
:et je voudrais être sûre de ses sentiments avant d'aller plus loin...
;Lui.
:Mais c'est tout naturel mademoiselle...
:Grâce à la graphologie, je peux mettre en lumière certains traits de caractère...
:si vous avez un mot écrit de sa main...
;Elle.
:Heu oui
:j'ai apporté... sa dernière lettre...
;Lui.
:Montrez... belle écriture... beaux jambages...
;Elle.
: Oui... il est très beau... très grand :
:1 mètre 80...
;Lui.
:Des pleins, des déliés...
:il est sûr de lui.
;Elle.
: Très, très.
;Lui.
:Voyons voir... //« Paulette... »//
;Elle.
: C'est mon prénom
;Lui.
:Il vous appelle par votre prénom... c' est un affectueux...
;Elle.
: Oui, il est très affectueux !
;Lui.
://«Pauvre gourde ! »// Ah ! Il vous connaît bien...
;Elle.
: Oui... il m'appelle toujours comme ça !
;Lui.
://« Pauvre gourde, tu t'es encore gourrée de date, ton chèque de 500 balles est arrivé trop tard, conclusion, faut que tu m'en fasses un autre sinon gare à toi ! »//
:On sent qu'il vous est très attaché et qu'il a besoin de vous.
;Elle.
: Ah bon, où ça ?
;Lui.
:Ça se voit très bien dans la forme de ses T...
:Regardez : Tu, Ton chèque, gare à Toi !
;Elle.
: Ah ! vous voyez tout ça dans ses //« T »//...
;Lui.
:Oui, et ça se confirme par ses //« F »//... //« Faut pas que tu me fasses faux bond maintenant ou je te fous sur la figure... »//
:Il vous aime vraiment et sincèrement...
:Regardez l'arrondi de son //« F »//...
;Elle.
: Oui, il est bien rond son //« F »//,
:c'est formidable de pouvoir lire entre les lignes comme ça...
:Remarquez je me doutais qu'il m'aimait, mais c'est difficile de croire au bonheur, depuis le temps que j'espérais rencontrer quelqu'un...
:Alors nous deux c'est du solide ?
;Lui.
:Ça, il est pas près de vous quitter à la manière dont il vous met les points sur les //« i »// ...
://« Si tu veux qu'on se voit samedi, tâche de t'habiller un peu mieux, on dirait ma grand-mère... »//
:Quand il pense à vous, ça lui rappelle sa famille... C'est bon signe !
;Elle.
: Oui...
:Ce n'est pas gênant la différence d'âge ?
;Lui.
:Non ...
://«et puis surtout boucle-là, ça t'évitera de dire des c... »//
:J'arrive pas à lire là...
:mais la boucle du //« b »// boucle-la, il veut vous protéger...
:entre vous il n'y a pas besoin de mots...
;Elle.
:Ça il n'a jamais voulu me dire qu'il m'aimait ... jamais...
;Lui.
:...Et il termine par... //« Oublie pas ta voiture si tu veux que je te ramène. Salut »//...
;Elle.
: Salut c'est un peu froid ?
;Lui.
:Non Le //« s »// touche le //« a »// ... Ça veut dire qu'il vous embrasse...
;Elle
:Merci, merci beaucoup.
:Voilà mon chèque...
;Lui.
:Au revoir Mademoiselle.
//(Elle sort.)//
:Elle a bien l'écriture d'une gourde !
,,`En gras sur fond grisé, les scènes dont le texte est appris, ou en cours d'apprentissage.`,,
| | ,,Chantal,, | ,,Jacques,, | ,,Odile,, | ,,Michèle,, | ,,Nicole L.,, | ,,Éveline,, | ,,Mireille,, | ,,Gérard,, | ,,Yvonne,, | ,,Noella,, |h
|| ,,BARBA<br>RA,, | ,,NICO<br>LETTO,, | ,,GIACO<br>MINA,, | ,,AGNESE,, | ,,MARGA<br>RITA,, | ,,LODO<br>VICA,, | ,,DA<br>NIELA,, | ,,LU<br>NARDO,, |,,ROCCO,,|,,livr,,|h
| '',,ACTE I,,'' | | | | | | | | | | |
|>|>|>|>|>|>|>|>|>|>| !''//`Chez Barbara`//'' |
| I,1 | !CHA | | ODI | | | | | | | |
| I,2 | !CHA | JAC | | | | | | | | |
| I,3 | !CHA | JAC | | | NIC | | | | | |
| I,4 | | JAC | | | NIC | | | | | |
| I,5 | | | | | NIC | | | | | |
| I,6 | !CHA | | | | NIC | | | | | |
| I,7 | !CHA | | | | NIC | | | | | |
| I,8 | !CHA | | | MIC | | | | | | |
|>|>|>|>|>|>|>|>|>|>| ''//`Chez Lodovica`//'' |
| I,9 | | | | | | EVE | MIR | | | |
| I,10 | | JAC | | | | EVE | MIR | | | |
| '',,ACTE II,,'' | | | | | | | | | | |
|>|>|>|>|>|>|>|>|>|>| ''//`Chez Barbara`//'' |
| II,1 | CHA | | ODI | MIC | | | | | | |
| II,2 | CHA | | | MIC | | | | | | |
| II,3 | CHA | | ODI | MIC | | | | | | |
| II,4 | CHA | JAC | | MIC | | | | | | |
| II,5 | CHA | JAC | ODI | MIC | | | | | | |
| II,6 | CHA | | ODI | MIC | | | | | YVO | ?? |
| II,7 | CHA | JAC | ODI | MIC | | | | | YVO | ?? |
| II,8 | CHA | JAC | ODI | MIC | | | | | | |
| II,9 | CHA | | ODI | | | | | | | |
| II,10 | CHA | | ODI | | NIC | | | | | |
| II,11 | CHA | | ODI | | NIC | | | GER | | |
| II,12 | CHA | | | | | | | GER | | |
| II,13 | CHA | | ODI | | | | | GER | | |
| II,14 | | | ODI | | | | | GER | | |
| II,15 | | | ODI | | NIC | | | GER | | |
| II,16 | | | | | NIC | | | GER | | |
| II,17 | CHA | | | | NIC | | | GER | | |
| '',,ACTE III,,'' | | | | | | | | | | |
|>|>|>|>|>|>|>|>|>|>| ''//`Chez Lodovica`//'' |
| III,1 | | JAC | | | | EVE | MIR | | | |
| III,2 | CHA | JAC | | | | EVE | MIR | GER | | |
| III,3 | | | | | | EVE | MIR | GER | | |
| III,4 | | | | | | | MIR | GER | | |
| III,5 | | | | | | EVE | MIR | GER | | |
| III,6 | | | | | | EVE | | GER | | |
|>|>|>|>|>|>|>|>|>|>| ''//`Chez Barbara`//'' |
| III,7 | | | ODI | | NIC | | | | | |
| III,8 | | | ODI | MIC | NIC | | | | | |
| III,9 | | | ODI | MIC | | | | | | |
| III,10 | | | ODI | MIC | NIC | | | | | |
| III,11 | CHA | | ODI | MIC | | | | | | |
| III,12 | | | | MIC | | | | | | |
| III,13 | CHA | | | | | | | | | |
| III,14 | | | | MIC | NIC | | | | | |
| III,15 | | JAC | | MIC | | | | | | |
| III,16 | CHA | JAC | ODI | MIC | NIC | | | | YVO | |
| III,17 | CHA | JAC | ODI | MIC | NIC | EVE | MIR | GER | YVO | |
![[◄◄|Figaro 2019]]
//Suzanne et Figaro entrent comme pour un conciliabule, Suzanne est toute agitée//
;Figaro
:Eh ! qu'est-ce qu'il y a, bon Dieu ?
;Suzanne
:Il y a, mon ami, que, las de courtiser les beautés des environs, monsieur le comte Almaviva veut rentrer au château, mais non pas chez sa femme : c'est sur la tienne, entends-tu ? qu'il a jeté ses vues…
:Tu croyais, bon garçon, que cette dot qu'on me donne était pour les beaux yeux de ton mérite ?
;Figaro
:J'avais assez fait pour l'espérer.
;Suzanne
:Que les gens d'esprit sont bêtes !
;Figaro
:On le dit.
;Suzanne
:Mais c'est qu'on ne veut pas le croire !
;Figaro
:On a tort.
;Suzanne
:Apprends qu'il la destine à obtenir de moi, secrètement, certain quart d'heure, seul à seule, qu'un ancien droit du seigneur… Tu sais s'il était triste !
;Figaro
:Je le sais tellement, que si monsieur le comte, en se mariant, n'eût pas aboli ce droit honteux, jamais je ne t'eusse épousée dans ses domaines.
;Suzanne
:Eh bien ! s'il l'a détruit, il s'en repent ; et c'est de la fiancée qu'il veut le racheter en secret aujourd'hui.
;Figaro
//se frottant la tête//.
:Ma tête s'amollit de surprise, et mon front fertilisé…
:…
//On sonne de l'intérieur.//
;Suzanne
:Voilà madame éveillée ; elle m'a bien recommandé d'être la première à lui parler le matin de mes noces. …
;Figaro
:Pour m'ouvrir l'esprit, donne un petit baiser.
;Suzanne
:À mon amant aujourd'hui ? Je t'en souhaite ! Et qu'en dirait demain mon mari ?
//Figaro l'embrasse.//
;Suzanne
:Eh bien ! eh bien !
;Figaro
:C'est que tu n'as pas d'idée de mon amour.
;Suzanne
//se défripant//.
:Quand cesserez-vous, importun, de m'en parler du matin au soir ?
;Figaro
//mystérieusement//.
:Quand je pourrai te le prouver du soir jusqu'au matin.
//On sonne une seconde fois.//
;Suzanne
//de loin, les doigts unis sur sa bouche//.
:Voilà votre baiser, monsieur ; je n'ai plus rien à vous.
;Figaro
//court après elle.//
:Oh ! mais ce n'est pas ainsi que vous l'avez reçu.
![[►|I-Scènes 2 et 3 //raccourcie//]]
![[◄|I-Scènes 2 et 3 //raccourcie//]]
;Marceline
://étonnée de se trouver seule//
:Je voudrais qu'on m'aide à épouser le beau, le gai, l'aimable @Figaro
:Jamais fâché, toujours en belle humeur ; donnant le présent à la joie, et s'inquiétant de l'avenir tout aussi peu que du passé ; sémillant, généreux ; généreux comme un seigneur ; charmant enfin.
:Mais c'est le plus grand monstre !
:il croit ajouter à ses plaisirs en épousant Suzanne !
:Elle n'aurait pas, la rusée, si je réussissais à faire valoir un engagement que j'ai de lui.
:Il ne pourrait plus tromper mes espérances.
:Agissons avec adresse.
:Effrayons d'abord la Suzanne sur la divulgation des offres qu'on lui fait.
:La honte la prenant au collet, elle continuera de refuser le comte,
:lequel, pour se venger, appuiera l'opposition que j'ai faite à son mariage ;
:alors le mien devient certain.
:Ah! le bon tour !…
:Ah ! quelle volupté de l'épouser, de l'épouser !…
![[►|I-Scènes 5 et 6 • MARCELINE, SUZANNE]]
![[◄|I-Scènes 5 et 6 • MARCELINE, SUZANNE]]
;Chérubin
//accourant//
:Ah ! Suzon, depuis deux heures j'épie le moment de te trouver seule. Hélas ! tu te maries, et moi je vais partir.
;Suzanne
:Comment mon mariage éloigne-t-il du château le premier page de monseigneur ?
;Chérubin
//piteusement//
:Suzanne,
:il me renvoie.
;Suzanne
//le contrefait.//
:Chérubin, quelque sottise !
;Chérubin
:Il m'a trouvé hier au soir chez ta cousine Fanchette, à qui je faisais répéter son petit rôle d'innocente, pour la fête de ce soir : il s'est mis dans une fureur en me voyant !
:— Sortez ! m'a-t-il dit, petit…
:Je n'ose pas prononcer devant une femme le gros mot qu'il a dit :
:sortez, et demain vous ne coucherez pas au château.
:Si madame, si ma belle marraine ne parvient pas à l'apaiser, c'est fait, Suzon, je suis à jamais privé du bonheur de te voir.
;Suzanne
:De me voir, moi ? c'est mon tour ?
:Ce n'est donc plus pour ma maîtresse que vous soupirez
:en secret ?
;Chérubin
:Ah ! Suzon, qu'elle est noble et belle !
:mais qu'elle est imposante !
;Suzanne
:C'est-à-dire que je ne le suis pas, et qu'on peut oser avec moi…
;Chérubin
:Tu sais trop bien, méchante, que je n'ose pas oser.
:Mais que tu es heureuse ! à tous moments la voir, lui parler, l'habiller le matin et la déshabiller le soir, épingle à épingle…
:Ah ! Suzon, je donnerais…
:Qu'est-ce que tu tiens donc là ?
;Suzanne
//raillant//.
:Hélas ! l'heureux bonnet et le fortuné ruban qui renferment la nuit les cheveux de cette belle marraine…
;Chérubin
//vivement.//
:Son ruban de nuit ! donne-le-moi, mon cœur.
;Suzanne
//le retirant//.
:Eh ! que non pas ! — Son cœur ! Comme il est familier donc ! si ce n'était pas un morveux sans conséquence.
//Chérubin arrache le ruban.//
:Ah ! le ruban !
//Chérubin tourne autour du grand fauteuil.//
:Tu diras qu'il est égaré, gâté, qu'il est perdu. Tu diras tout ce que tu voudras.
;Suzanne
//tourne après lui.//
:Oh ! dans trois ou quatre ans, je prédis que vous serez le plus grand petit vaurien !…
:Rendez-vous le ruban ?
//Elle veut le reprendre.//
//Chérubin tire une romance de sa poche.//
:Laisse, ah ! laisse-le-moi, Suzon ; je te donnerai ma romance ; et, pendant que le souvenir de ta belle maîtresse attristera tous mes moments, le tien y versera le seul rayon de joie qui puisse encore amuser mon cœur.
![[►|II-Scène 1 • SUZANNE, LA COMTESSE assise]]
![[◄|I-1 Suzanne et Figaro]]
;Figaro
//seul//
:La charmante fille ! toujours riante, verdissante, pleine de gaieté, d'esprit, d'amour et de délices ! mais sage !…
//Il marche vivement en se frottant les mains.//
:Ah ! monseigneur ! mon cher monseigneur ! vous voulez m'en donner… à garder ! Je cherchais aussi pourquoi, m'ayant nommé concierge, il m'emmène à son ambassade, et m'établit courrier de dépêches. J'entends, monsieur le comte ; trois promotions à la fois : vous, compagnon ministre ; moi, casse-cou politique ; et Suzon, dame du lieu, l'ambassadrice de poche ; et puis fouette, courrier ! Pendant que je galoperais d'un côté, vous feriez faire de l'autre à ma belle un joli chemin ! Me crottant, m'échinant pour la gloire de votre famille ; vous, daignant concourir à l'accroissement de la mienne ! Quelle douce réciprocité !
:…
:Mais, monseigneur, il y a de l'abus. Faire à Londres, en même temps, les affaires de votre maître et celles de votre valet ! représenter à la fois le roi et moi dans une cour étrangère, c'est trop de moitié, c'est trop.
:Attention sur la journée, monsieur Figaro ! D'abord, avancer l'heure de votre petite fête, pour épouser plus sûrement ; écarter une Marceline qui de vous est friande en diable ; empocher l'or et les présents ; donner le change aux petites passions de monsieur le comte ;
:…
:et…
//Figaro s'interrompt en apercevant Marceline//
!!I-Scène 3 //extrait//
;Figaro
:…Héééé, voilà Marceline, la fête sera complète.
//fort, criant par la fenêtre//
:Hé bon jour, Marceline de mon coeur.
:Est-ce ma noce avec Suzon qui vous attire au château?
:Avez-vous toujours envie de plaider contre moi?
:"Pour n'aimer pas, faut-il qu'on se haïsse?"
:Je m'en rapporte au Docteur.
//Il sort.//
![[►|I-Scène 4 MARCELINE //raccourcie//]]
![[◄|I-Scène 4 MARCELINE //raccourcie//]]
;Suzanne
//arrivant, un bonnet de femme avec un large ruban dans la main, une robe de femme sur le bras//.
:L'épouser, l'épouser !
:Qui donc ? mon Figaro ?
;Marceline
// aigrement//
:Pourquoi non ?
:Je parlais, belle Suzon, du bonheur qu'il aura de vous posséder.!
:Sans compter monseigneur, dont on ne parle pas.
;Suzanne
//une révérence//.
:Votre servante, madame ; il y a toujours quelque chose d'amer dans vos propos.
;Marceline
// une révérence//
:Bien la vôtre, madame.
:Où donc est l'amertume ? n'est-il pas juste qu'un libéral seigneur partage un peu la joie qu'il procure à ses gens ?
;Suzanne
:Qu'il procure ?
;Marceline
:Oui, madame.
;Suzanne
:Heureusement la jalousie de madame est aussi connue que ses droits sur Figaro sont légers.
;Marceline
:On eût pu les rendre plus forts en les cimentant à la façon de madame.
;Suzanne
:Oh ! cette façon, madame, est celle des dames savantes.
;Marceline
:Et l'enfant ne l'est pas du tout !
:Innocente comme un vieux juge !
;Bartholo
//attirant Marceline.//
:Adieu, jolie fiancée de notre @Figaro
;Marceline
// une révérence//
:L'accordée secrète de monseigneur.
;Suzanne
//une révérence//.
:Qui vous estime beaucoup, madame.
;Marceline
// une révérence//
:Me fera-t-elle aussi l'honneur de me chérir un peu, madame ?
;Suzanne
//une révérence//.
:À cet égard, madame n'a rien à désirer.
;Marceline
// une révérence//
:C'est une si jolie personne que madame !
;Suzanne
//une révérence//.
:Eh ! mais assez pour désoler madame.
;Marceline
// une révérence//
:Surtout bien respectable !
;Suzanne
//une révérence//.
:C'est aux duègnes à l'être.
;Marceline
// outrée//
:Aux duègnes ! aux duègnes !
:Allons !
:Car je n'y tiendrais pas.
:Bonjour, madame.
//Une révérence.//
!!I-Scène 6
;Suzanne
//seule//.
:Allez, madame ! allez, pédante ! Je crains aussi peu vos efforts que je méprise vos outrages.
:— Voyez cette vieille sibylle ! parce qu'elle a fait quelques études et tourmenté la jeunesse de madame, elle veut tout dominer au château !
//Elle jette la robe qu'elle tient, sur une chaise.//
:Je ne sais plus ce que je venais prendre.
![[►|I-Scène 7 • Suzanne avec Chérubin]]
<<<
[[Carnaval de venise costume traditionnel|https://www.google.com/search?q=carnaval+de+venise+costume+traditionnel&tbm=isch&safe=off&safe=off&hl=fr&ved=2ahUKEwiN0q6Vmr7oAhUT8xoKHQkaAPMQrNwCKAB6BQgBEIcB&biw=1473&bih=782]]
[[Caractères de la Cmmedia dell'arte|https://www.pinterest.de/pin/345088390173070136/]]
[[La Blanchissuse|https://www.expertissim.com/ecole-jean-baptiste-greuze-la-blanchisseuse-tableau-12271739 ]]
[[La belle cuisinière|https://www.google.com/search?q=boucher+peintre&tbm=isch&hl=fr&ved=2ahUKEwjf6anpwr3oAhWagM4BHQjDC4IQrNwCKAJ6BQgBENYB&biw=1519&bih=754#imgrc=3QOK2YC2wZoX9M ]]
[[La paysanne|https://la-paysanne.fr/fe/_dsc7173/ ]]
[[Danseuses provençales|https://www.routard.com/photos/provence/9530-danseuses_provencales_en_costumes_anciens.htm ]]
[[La vie paysanne en Provence autrefois|http://viepaysanneautrefois.free.fr/chapitres/ch06/618_CTPHteBasProv_728a739.pdf ]] (pdf)
[[Musée du costume provençal|https://fr.tripadvisor.be/LocationPhotoDirectLink-g187224-d4063075-i305454362-Musee_du_Bijou_et_du_Costume_Provencal-Grasse_French_Riviera_Cote_d_Azur.html ]]
<<<
![[◄|I-Scène 7 • Suzanne avec Chérubin]]
//LA COMTESSE entre par la porte à droite.//
;La Comtesse
://se jette dans un bergère.//
:Ferme la porte, Suzanne, et conte-moi tout dans le plus grand détail.
;Suzanne
:Je n'ai rien caché à madame.
;La Comtesse
:Quoi ! Suzon, le Comte voulait te séduire ?
;Suzanne
:Oh ! que non ! monseigneur n'y met pas tant de façon avec sa servante : il voulait m'acheter.
;La Comtesse
:Et le petit page était présent ?
;Suzanne
:C'est-à-dire caché derrière le grand fauteuil. Il venait me prier de vous demander sa grâce.
;La Comtesse
:Sa grâce ? Pourquoi donc ?
;Suzanne
:Le Comte s'est mis dans une fureur en se trouvant nez à nez avec lui chez Fanchette ! //clin d'oeil entendu//:
:"Sortez ! Demain vous ne coucherez pas au château !"
;La Comtesse
:Hé ! pourquoi ne pas s'adresser à moi-même ? Est-ce que je l'aurais refusé, Suzon ?
;Suzanne
:C'est ce que j'ai dit : mais ses regrets de partir, et surtout de quitter madame !
:"Ah ! Suzon, qu'elle est noble et belle ! mais qu'elle est imposante !"
;La Comtesse
:Est-ce que j'ai cet air-là, Suzon ?
:Moi qui l'ai toujours protégé.
;Suzanne
:Puis il a vu votre ruban de nuit que je tenais ;
:il s'est jeté dessus…
;La Comtesse
//souriant//.
:Mon ruban ?… Quelle enfance !
;Suzanne
:J'ai voulu le lui ôter ; madame, c'était un lion ;
:ses yeux brillaient…
:"Tu ne l'auras qu'avec ma vie !", disait-il
:en forçant sa petite voix douce et grêle.
;La Comtesse
//rêvant//.
:Eh bien, Suzon ?
;Suzanne
:Eh bien, madame, est-ce qu'on peut faire finir ce petit démon-là ?
:Ma marraine par-ci ; je voudrais bien par l'autre : et parce qu'il n'oserait seulement baiser la robe de madame, il voudrait toujours m'embrasser, moi.
;La Comtesse
//rêvant//.
:Laissons… laissons ces folies…
:Enfin, ma pauvre Suzanne, mon époux a fini par te dire…
;Suzanne
:Que si je ne voulais pas l'entendre, il allait favoriser les vues de Marceline sur mon Figaro.
;La Comtesse
//se lève et se promène, en se servant fortement de l'éventail.//
:Il ne m'aime plus du tout.
;Suzanne
:Pourquoi tant de jalousie ?
;La Comtesse
:Comme tous les maris, ma chère ! uniquement par orgueil. Ah ! je l'ai trop aimé ;
:je l'ai lassé de mes tendresses et fatigué de mon amour :
:voilà mon seul tort avec lui ;
:mais je n'entends pas que cet honnête aveu te nuise, et tu épouseras Figaro.
:Lui seul peut nous y aider : viendra-t-il ?
;Suzanne
:Dès qu'il verra partir la chasse.
;La Comtesse
//se servant de l'éventail//.
:Ouvre un peu la croisée sur le jardin. Il fait une chaleur ici !…
;Suzanne
:C'est que madame parle et marche avec action.
//Elle va ouvrir la croisée du fond.//
;La Comtesse
//rêvant longtemps//.
:Sans cette constance à me fuir…
:Les hommes sont bien coupables !
;Suzanne
//crie, de la fenêtre.//
:Ah ! voilà monseigneur qui traverse à cheval le grand potager,
:suivi de Pédrille,
:avec deux, trois, quatre lévriers.
;La Comtesse
:Nous avons du temps devant nous.
//Elle s'assied.//
:On frappe, Suzon !
;Suzanne
//court ouvrir en chantant.//
:Ah ! c'est mon Figaro ! ah ! c'est mon Figaro !
![[►|II-Scène 2 FIGARO, SUZANNE, LA COMTESSE assise]]
![[◄|II-Scène10 CHÉRUBIN, LA COMTESSE ; LE COMTE, en dehors]]
;Le Comte
//d'un ton un peu sévère//
:Vous n'êtes pas dans l'usage de vous enfermer !
;La Comtesse
//troublée//.
:Je… je chiffonnais… Oui, je chiffonnais avec Suzanne ; elle est passée un moment chez elle.
;Le Comte
//l'examine.//
:Vous avez l'air et le ton bien altérés !
;La Comtesse
:Cela n'est pas étonnant… pas étonnant du tout… je vous assure… nous parlions de vous… Elle est passée, comme je vous dis…
;Le Comte
:Vous parliez de moi !… Je suis ramené par l'inquiétude : en montant à cheval, un billet qu'on m'a remis, mais auquel je n'ajoute aucune foi, m'a… pourtant agité.
;La Comtesse
:Comment, monsieur ?… quel billet ?
;Le Comte
:Il faut avouer, madame, que vous ou moi sommes entourés d'êtres… bien méchants ! On me donne avis que, dans la journée, quelqu'un que je crois absent doit chercher à vous entretenir.
;La Comtesse
:Quel que soit cet audacieux, il faudra qu'il pénètre ici : car mon projet est de ne pas quitter ma chambre de tout le jour.
;Le Comte
:Ce soir, pour la noce de Suzanne ?
;La Comtesse
:Pour rien au monde ; je suis très incommodée.
;Le Comte
:Heureusement le docteur Bartholo est ici, arrivé avec Marceline.
//Le page fait tomber une chaise dans le cabinet.//
:Quel bruit entends-je ?
;La Comtesse
//plus troublée//.
:Du bruit ?
;Le Comte
:On a fait tomber un meuble.
;La Comtesse
:Je… je n'ai rien entendu, pour moi.
;Le Comte
:Il faut que vous soyez furieusement préoccupée !
;La Comtesse
:Préoccupée ! de quoi ?
;Le Comte
:Il y a quelqu'un dans ce cabinet, madame.
;La Comtesse
:Hé… qui voulez-vous qu'il y ait, monsieur ?
;Le Comte
:C'est moi qui vous le demande ; j'arrive.
;La Comtesse
:Hé ! mais… Suzanne apparemment qui range.
;Le Comte
:Vous avez dit qu'elle était passée chez elle !
;La Comtesse
:Passée… ou entrée là ; je ne sais lequel.
;Le Comte
:Si c'est Suzanne, d'où vient le trouble où je vous vois ?
;La Comtesse
:Du trouble pour ma camériste ?
;Le Comte
:Pour votre camériste, je ne sais ; mais pour du trouble, assurément.
;La Comtesse
:Assurément, monsieur, cette fille vous trouble et vous occupe beaucoup plus que moi.
;Le Comte
//en colère//
:Elle m'occupe à tel point, madame, que je veux la voir à l'instant.
;La Comtesse
:Je crois, en effet, que vous le voulez souvent ; mais voilà bien les soupçons les moins fondés…
![[►|II-Scène 13 • LE COMTE, LA COMTESSE ; SUZANNE]]
![[◄|II-Scène 12 LE COMTE, LA COMTESSE]]
//SUZANNE entre avec des hardes et pousse la porte du fond.//
;Le Comte
:Ils en seront plus aisés à détruire. //Il crie en regardant du côté du cabinet.// Sortez, Suzon ; je vous l'ordonne !
//Suzanne s'arrête auprès de l'alcôve dans le fond.//
;La Comtesse
:Elle est presque nue, monsieur ; vient-on troubler ainsi des femmes dans leur retraite ? Elle essayait des hardes que je lui donne en la mariant ; elle s'est enfuie, quand elle vous a entendu.
;Le Comte
:Si elle craint tant de se montrer, au moins elle peut parler. //Il se tourne vers la porte du cabinet.// Répondez-moi, Suzanne ; êtes-vous dans ce cabinet ?
//Suzanne, restée au fond, se jette dans l'alcôve et s'y cache.//
;La Comtesse
//vivement, tournée vers le cabinet//.
:Suzon, je vous défends de répondre. //Au Comte.// On n'a jamais poussé si loin la tyrannie !
;Le Comte
//s'avance vers le cabinet.//
:Oh ! bien, puisqu'elle ne parle pas, vêtue ou non, je la verrai.
;La Comtesse
//se met au-devant.//
:Partout ailleurs je ne puis l'empêcher ; mais j'espère aussi que chez moi…
;Le Comte
:Et moi j'espère savoir dans un moment quelle est cette Suzanne mystérieuse. Vous demander la clef serait, je le vois, inutile ; mais il est un moyen sûr de jeter en dedans cette légère porte. Holà, quelqu'un !
;La Comtesse
:Attirer vos gens, et faire un scandale public d'un soupçon qui nous rendrait la fable du château ?
;Le Comte
:Fort bien, madame. En effet, j'y suffirai ; je vais à l'instant prendre chez moi ce qu'il faut…
//Il marche pour sortir, et revient.//
:Mais, pour que tout reste au même état, voudrez-vous bien m'accompagner sans scandale et sans bruit, puisqu'il vous déplaît tant ?… Une chose aussi simple, apparemment, ne me sera pas refusée !
;La Comtesse
//troublée//.
:Eh ! monsieur, qui songe à vous contrarier ?
;Le Comte
:Ah ! j'oubliais la porte qui va chez vos femmes ; il faut que je la ferme aussi, pour que vous soyez pleinement justifiée.
//Il va fermer la porte du fond et en ôte la clef.//
;La Comtesse
//à part//.
:Ô ciel ! étourderie funeste !
;Le Comte
//revenant sur elle.//
:Maintenant que cette chambre est close, acceptez mon bras, je vous prie ; //il élève la voix// et quant à la Suzanne du cabinet, il faudra qu'elle ait la bonté de m'attendre ; et le moindre mal qui puisse lui arriver à mon retour…
;La Comtesse
:En vérité, monsieur, voilà bien la plus odieuse aventure…
//Le Comte l'emmène et ferme la porte à la clef.//
![[►|II-Scène 14 SUZANNE, CHÉRUBIN]]
![[◄|II-Scène 13 • LE COMTE, LA COMTESSE ; SUZANNE]]
;Suzanne
//sort de l'alcôve, accourt au cabinet et parle à travers la serrure.//
:Ouvrez, Chérubin, ouvrez vite, c'est Suzanne ; ouvrez, et sortez.
;Chérubin
//sort.//
:Ah ! Suzon, quelle horrible scène !
;Suzanne
:Sortez, vous n'avez pas une minute !
;Chérubin
//effrayé.//
:Et par où sortir ?
;Suzanne
:Je n'en sais rien, mais sortez.
:Chérubin.
:S'il n'y a pas d'issue ?
;Suzanne
:Après la rencontre de tantôt, il vous écraserait, et nous serions perdues. — Courez conter à Figaro…
;Chérubin
:La fenêtre du jardin n'est peut-être pas bien haute.
//Il court y regarder.//
;Suzanne
//avec effroi.//
:Un grand étage ! impossible ! Ah ! ma pauvre maîtresse ! Et mon mariage ? ô ciel !
;Chérubin
//revient.//
:Elle donne sur la melonnière : quitte à gâter une couche ou deux.
;Suzanne
//le retient et s'écrie.//
:Il va se tuer !
;Chérubin
//exalté.//
:Dans un gouffre allumé, Suzon ! oui, je m'y jetterais plutôt que de lui nuire… Et ce baiser va me porter bonheur.
//Il l'embrasse et court sauter par la fenêtre.//
![[►|II-Scène 15 • SUZANNE, seule]]
![[◄|II-Scène 14 SUZANNE, CHÉRUBIN]]
;Suzanne
//cri de frayeur.//
:Ah !…
//Elle tombe assise un moment. Elle va péniblement regarder à la fenêtre et revient.//
:Il est déjà bien loin. Ô le petit garnement ! aussi leste que joli ! Si celui-là manque de femmes… Prenons sa place au plus tôt.
//En entrant dans le cabinet.//
:Vous pouvez à présent, monsieur le comte, rompre la cloison, si cela vous amuse ; au diantre qui répond un mot !
//Elle s'y enferme.//
![[►|II-Scène 16 • LE COMTE, LA COMTESSE]]
![[◄|II-Scène 15 • SUZANNE, seule]]
;Le Comte
//une pince à la main, qu'il jette sur le fauteuil.//
:Tout est bien comme je l'ai laissé. Madame, en m'exposant à briser cette porte, réfléchissez aux suites : encore une fois, voulez-vous l'ouvrir ?
;La Comtesse
:Eh ! monsieur, quelle horrible humeur peut altérer ainsi les égards entre deux époux ? Si l'amour vous dominait au point de vous inspirer ces fureurs, malgré leur déraison, je les excuserais ; j'oublierais peut-être, en faveur du motif, ce qu'elles ont d'offensant pour moi. Mais la seule vanité peut-elle jeter dans cet excès un galant homme ?
;Le Comte
:Amour ou vanité, vous ouvrirez la porte, ou je vais à l'instant…
;La Comtesse
//au-devant//.
:Arrêtez, monsieur, je vous prie !
:Me croyez-vous capable de manquer à ce que je me dois ?
;Le Comte
:Tout ce qu'il vous plaira, madame ; mais je verrai qui est dans ce cabinet.
;La Comtesse
//effrayée//.
:Eh bien, monsieur, vous le verrez. Écoutez-moi… tranquillement.
;Le Comte
:Ce n'est donc pas Suzanne ?
;La Comtesse
//timidement//.
:Au moins n'est-ce pas non plus une personne… dont vous deviez rien redouter…
:Nous disposions une plaisanterie… bien innocente, en vérité, pour ce soir… ;
:et je vous jure…
;Le Comte
:Et vous me jurez…
;La Comtesse
:Que nous n'avions pas plus dessein de vous offenser l'un que l'autre.
;Le Comte
//vite.//
:L'un que l'autre ? C'est un homme.
;La Comtesse
:Un enfant, monsieur.
;Le Comte
:Hé, qui donc ?
;La Comtesse
:À peine osé-je le nommer !
;Le Comte
//furieux.//
:Je le tuerai.
;La Comtesse
:Grands dieux !
;Le Comte
:Parlez donc !
;La Comtesse
:Ce jeune… Chérubin…
;Le Comte
:Chérubin ! l'insolent !
:Voilà mes soupçons et le billet expliqués.
;La Comtesse
//joignant les mains//.
:Ah ! monsieur ! gardez de penser…
;Le Comte
//frappant du pied.//
//À part.// Je trouverai partout ce maudit page ! //Haut.// Allons, madame, ouvrez ; je sais tout maintenant. Vous n'auriez pas été si émue, en le congédiant ce matin, il serait parti quand je l'ai ordonné, vous n'auriez pas mis tant de fausseté dans votre conte de Suzanne, il ne se serait pas si soigneusement caché, s'il n'y avait rien de criminel.
;La Comtesse
:Il a craint de vous irriter en se montrant.
;Le Comte
//hors de lui, et criant vers le cabinet.//
:Sors donc, petit malheureux !
;La Comtesse
// le prend à bras-le-corps, en l'éloignant.//
:Ah ! monsieur, monsieur, votre colère me fait trembler pour lui. N'en croyez pas un injuste soupçon, de grâce ! et que le désordre où vous l'allez trouver…
;Le Comte
:Du désordre !
;La Comtesse
:Hélas ! oui : prêt à s'habiller en femme, une coiffure à moi sur la tête, en veste et sans manteau, le col ouvert, les bras nus ; il allait essayer…
;Le Comte
:Et vous vouliez garder votre chambre ! Indigne épouse ! ah ! vous la garderez… longtemps ; mais il faut avant que j'en chasse un insolent, de manière à ne plus le rencontrer nulle part.
;La Comtesse
//se jette à genoux, les bras élevés//
:Monsieur le comte, épargnez un enfant ; je ne me consolerais pas d'avoir causé…
;Le Comte
:Vos frayeurs aggravent son crime.
;La Comtesse
:Il n'est pas coupable, il partait : c'est moi qui l'ai fait appeler.
;Le Comte
//furieux//
:Levez-vous. Ôtez-vous… Tu es bien audacieuse d'oser me parler pour un autre !
;La Comtesse
:Eh bien ! je m'ôterai, monsieur, je me lèverai
:je vous remettrai même la clef du cabinet
:mais, au nom de votre amour…
;Le Comte
:De mon amour, perfide !
;La Comtesse
//se lève, et lui présente la clef//
:Promettez-moi que vous laisserez aller cet enfant sans lui faire aucun mal ;
:et puisse, après, tout votre courroux tomber sur moi, si je ne vous convaincs pas…
;Le Comte
//prenant la clef.//
:Je n'écoute plus rien.
;La Comtesse
//se jette sur une bergère, un mouchoir sur les yeux//
:Ô ciel ! il va périr !
;Le Comte
//ouvre la porte, et recule.//
:C'est Suzanne !
![[►|II-Scènes 17, 18 et 19 • LA COMTESSE, LE COMTE, SUZANNE]]
![[◄|II-Scène 1 • SUZANNE, LA COMTESSE assise]]
;Suzanne
:Mon cher ami, viens donc ! Madame est dans une impatience !…
;Figaro
:Et toi, ma petite Suzanne ? — Madame n'en doit prendre aucune. Au fait, de quoi s'agit-il ? d'une misère.
:Monsieur le comte trouve notre jeune femme aimable, il voudrait en faire sa maîtresse ; et c'est bien naturel.
;Suzanne
:Naturel ?
;Figaro
:Puis il m'a nommé courrier de dépêches, et Suzon conseiller d'ambassade. Il n'y a pas là d'étourderie.
;Suzanne
:Tu finiras ?
;Figaro
:Et parce que ma Suzanne, ma fiancée, n'accepte pas le diplôme, il va favoriser les vues de Marceline : quoi de plus simple encore ?
:Se venger de ceux qui nuisent à nos projets en renversant les leurs, c'est ce que chacun fait, c'est ce que nous allons faire nous-mêmes.
:Eh bien, voilà tout, pourtant.
;La Comtesse
:Pouvez-vous, Figaro, traiter si légèrement un dessein qui nous coûte à tous le bonheur ?
;Figaro
:Qui dit cela, madame ?
;Suzanne
:Au lieu de t'affliger de nos chagrins…
;Figaro
:N'est-ce pas assez que je m'en occupe ?
:Or, pour agir aussi méthodiquement que lui, tempérons d'abord son ardeur de nos possessions, en l'inquiétant sur les siennes.
;La Comtesse
:C'est bien dit ; mais comment ?
;Figaro
:C'est déjà fait, madame ; un faux avis donné sur vous…
;La Comtesse
:Sur moi ? la tête vous tourne !
;Figaro
:Oh ! c'est à lui qu'elle doit tourner.
;La Comtesse
:Un homme aussi jaloux !…
;Figaro
:Tant mieux !
:pour tirer parti des gens de ce caractère, il ne faut qu'un peu leur fouetter le sang : c'est ce que les femmes entendent si bien !
:Puis, les tient-on fâchés tout rouge, avec un brin d'intrigue on les mène où l'on veut, par le nez, dans le Guadalquivir.
:Je vous ai fait rendre à Basile un billet inconnu, lequel avertit monseigneur qu'un galant doit chercher à vous voir aujourd'hui pendant le bal.
;La Comtesse
:Et vous vous jouez ainsi de la vérité sur le compte d'une femme d'honneur !…
;Figaro
:Il y en a peu, madame, avec qui je l'eusse osé, crainte de rencontrer juste.
;La Comtesse
:Il faudra que je l'en remercie !
;Figaro
:Mais dites-moi s'il n'est pas charmant de lui avoir taillé ses morceaux de la journée, de façon qu'il passe à rôder, à jurer après sa dame, le temps qu'il destinait à se complaire avec la nôtre !
:Il est déjà tout dérouté : galopera-t-il celle-ci ? surveillera-t-il celle-là ?
:Dans son trouble d'esprit, tenez, tenez, le voilà qui court la plaine, et force un lièvre qui n'en peut mais. L'heure du mariage arrive en poste ; il n'aura pas pris de parti contre, et jamais il n'osera s'y opposer devant madame.
;Suzanne
:Non ; mais Marceline, le bel esprit, osera le faire, elle.
;Figaro
:Brrrr. Cela m'inquiète bien, ma foi !
:Tu feras dire à monseigneur que tu te rendras sur la brune au jardin.
;Suzanne
:Tu comptes sur celui-là ?
;Figaro
:Oh ! dame, écoutez donc ; les gens qui ne veulent rien faire de rien n'avancent rien, et ne sont bons à rien.
:Voilà mon mot.
;Suzanne
:Il est joli !
;La Comtesse
:Comme son idée : vous consentiriez qu'elle s'y rendît ?
;Figaro
:Point du tout.
:Je fais endosser un habit de Suzanne à quelqu'un :
:surpris par nous au rendez-vous,
:le comte pourra-t-il s'en dédire ?
;Suzanne
:À qui mes habits ?
;Figaro
:Chérubin.
;La Comtesse
:Il est parti.
;Figaro
:Non pas pour moi ; veut-on me laisser faire ?
;Suzanne
:On peut s'en fier à lui pour mener une intrigue.
;Figaro
:Deux, trois, quatre à la fois ;
:bien embrouillées, qui se croisent. J'étais né pour être courtisan.
;Suzanne
:On dit que c'est un métier si difficile !
;Figaro
:Recevoir, prendre, et demander : voilà le secret en trois mots.
;La Comtesse
:Il a tant d'assurance qu'il finit par m'en inspirer.
;Figaro
:C'est mon dessein.
;Suzanne
:Tu disais donc…
;Figaro
:Que, pendant l'absence de monseigneur, je vais vous envoyer le Chérubin :
:coiffez-le, habillez-le ; je le renferme et l'endoctrine ; et puis dansez, monseigneur.
//Il sort.//
![[►|II-Scènes 3, 4 et 5 • SUZANNE ; LA COMTESSE assise]]
![[◄|II-Scènes 17, 18 et 19 • LA COMTESSE, LE COMTE, SUZANNE]]
;Figaro
://arrivant tout essoufflé//
:On disait madame incommodée. Je suis vite accouru… Je vois avec joie qu'il n'en est rien.
;Le Comte
://sèchement//
:Vous êtes fort attentif.
;Figaro
:Et c'est mon devoir. Mais puisqu'il n'en est rien, monseigneur, tous vos jeunes vassaux des deux sexes sont en bas avec les violons et les cornemuses, attendant, pour m'accompagner, l'instant où vous permettrez que je mène ma fiancée…
;Le Comte
:Et qui surveillera la comtesse au château ?
;Figaro
:La veiller ! elle n'est pas malade.
;Le Comte
:Non ; mais cet homme absent qui doit l'entretenir ?
;Figaro
:Quel homme absent ?
;Le Comte
:L'homme du billet que vous avez remis à Basile.
;Figaro
:Qui dit cela ?
;Le Comte
:Quand je ne le saurais pas d'ailleurs, fripon, ta physionomie, qui t'accuse, me prouverait déjà que tu mens.
;Figaro
:S'il est ainsi, ce n'est pas moi qui mens, c'est ma physionomie.
;Suzanne
:Va, mon pauvre Figaro, n'use pas ton éloquence en défaites ; nous avons tout dit.
;Figaro
:Et quoi dit ? Vous me traitez comme un Basile !
;Suzanne
:Que tu avais écrit le billet de tantôt pour faire accroire à monseigneur, quand il entrerait, que le petit page était dans ce cabinet, où je me suis enfermée.
;Le Comte
:Qu'as-tu à répondre ?
;La Comtesse
:Il n'y a plus rien à cacher, Figaro ; le badinage est consommé.
;Figaro
//cherchant à deviner//
:Le badinage… est consommé ?
;Le Comte
:Oui, consommé. Que dis-tu là-dessus ?
;Figaro
:Moi ! je dis… que je voudrais bien qu'on en pût dire autant de mon mariage ; et si vous l'ordonnez…
;Le Comte
:Tu conviens donc enfin du billet ?
;Figaro
:Puisque madame le veut, que Suzanne le veut, que vous le voulez vous-même, il faut bien que je le veuille aussi : mais à votre place, en vérité, monseigneur, je ne croirais pas un mot de tout ce que nous vous disons.
;Le Comte
:Toujours mentir contre l'évidence ! À la fin, cela m'irrite.
;La Comtesse
//en riant//.
:Eh ! ce pauvre garçon ! pourquoi voulez-vous, monsieur, qu'il dise une fois la vérité ?
;Figaro
//bas à Suzanne//
:Je l'avertis de son danger ; c'est tout ce qu'un honnête homme peut faire.
;Suzanne
//bas.//
:As-tu vu le petit page ?
;Figaro
//bas//
:Encore tout froissé.
;Suzanne
//bas.//
:Ah ! pécaïre !
;La Comtesse
:Allons, monsieur le comte, ils brûlent de s'unir : leur impatience est naturelle ; entrons pour la cérémonie.
;Le Comte
//à part//
:Et Marceline, Marceline… //Haut.// Je voudrais être… au moins vêtu.
;La Comtesse
:Pour nos gens ! Est-ce que je le suis ?
![[►|II-Scène 21 • FIGARO, SUZANNE, LA COMTESSE, LE COMTE, ANTONIO.]]
![[◄|II-Scène 20 • SUZANNE, FIGARO, LA COMTESSE, LE COMTE.]]
;Antonio
//demi-gris, tenant un pot de giroflées écrasées//
:Monseigneur ! monseigneur !
;Le Comte
:Que me veux-tu, Antonio ?
;Antonio
:Faites donc une fois griller les croisées qui donnent sur mes couches ! On jette toutes sortes de choses par ces fenêtres ; et tout à l'heure encore on vient d'en jeter un homme.
;Le Comte
:Par ces fenêtres ?
;Antonio
:Regardez comme on arrange mes giroflées !
;Suzanne
//bas à Figaro.//
:Alerte, Figaro, alerte !
;Figaro
:Monseigneur, il est gris dès le matin.
;Antonio
:Vous n'y êtes pas. C'est un petit reste d'hier. Voilà comme on fait des jugements… ténébreux.
;Le Comte
//avec feu//
:Cet homme ! cet homme ! où est-il ?
;Antonio
:Où il est ?
;Le Comte
:Oui.
;Antonio
:C'est ce que je dis. Il faut me le trouver, déjà. Je suis votre domestique ; il n'y a que moi qui prends soin de votre jardin ; il y tombe un homme, et vous sentez… que ma réputation en est effleurée.
;Suzanne
//bas à Figaro.//
:Détourne, détourne.
;Figaro
:Tu boiras donc toujours ?
;Antonio
:Eh ! si je ne buvais pas, je deviendrais enragé.
;La Comtesse
:Mais en prendre ainsi sans besoin…
;Antonio
:Boire sans soif et faire l'amour en tout temps, madame, il n'y a que ça qui nous distingue des autres bêtes.
;Le Comte
//vivement//
:Réponds-moi donc, ou je vais te chasser.
;Antonio
:Est-ce que je m'en irais ?
;Le Comte
:Comment donc ?
;Antonio
//se touchant le front//
:Si vous n'avez pas assez de ça pour garder un bon domestique, je ne suis pas assez bête, moi, pour renvoyer un si bon maître.
;Le Comte
//le secoue avec colère.//
:On a, dis-tu, jeté un homme par cette fenêtre ?
;Antonio
:Oui, mon Excellence ; tout à l'heure, en veste blanche, et qui s'est enfui, jarni, courant…
;Le Comte
//impatienté//
:Après ?
;Antonio
:J'ai bien voulu courir après ; mais je me suis donné contre la grille une si fière gourde à la main, que je ne peux plus remuer ni pied ni patte de ce doigt-là.
//Levant le doigt.//
;Le Comte
:Au moins tu reconnaîtrais l'homme ?
;Antonio
:Oh ! que oui-dà !… si je l'avais vu, pourtant !
;Suzanne
//bas à Figaro.//
:Il ne l'a pas vu.
;Figaro
:Voilà bien du train pour un pot de fleurs ! combien te faut-il, pleurard, avec ta giroflée ? Il est inutile de chercher, monseigneur ; c'est moi qui ai sauté.
;Le Comte
:Comment, c'est vous !
;Antonio
:Combien te faut-il, pleurard ? Votre corps a donc bien grandi depuis ce temps-là ? car je vous ai trouvé beaucoup plus moindre et plus fluet.
;Figaro
:Certainement ; quand on saute, on se pelotonne…
;Antonio
:M'est avis que c'était plutôt… qui dirait, le gringalet de page.
;Le Comte
:Chérubin, tu veux dire ?
;Figaro
:Oui, revenu tout exprès avec son cheval de la porte de Séville, où peut-être il est déjà.
;Antonio
:Oh ! non, je ne dis pas ça, je ne dis pas ça ; je n'ai pas vu sauter de cheval, car je le dirais de même.
;Le Comte
:Quelle patience !
;Figaro
:J'étais dans la chambre des femmes, en veste blanche : il fait un chaud !…
:J'attendais là ma Suzannette, quand j'ai ouï tout à coup la voix de monseigneur, et le grand bruit qui se faisait :
:je ne sais quelle crainte m'a saisi à l'occasion de ce billet ;
:et, s'il faut avouer ma bêtise, j'ai sauté sans réflexion sur les couches,
:où je me suis même un peu foulé le pied droit.
//Il frotte son pied.//
;Antonio
:Puisque c'est vous, il est juste de vous rendre ce brimborion de papier qui a coulé de votre vest, en tombant.
;Le Comte
//se jette dessus.//
:Donne-le-moi.
//Il ouvre le papier et le referme.//
;Figaro
//à part//
:Je suis pris.
;Le Comte
//à Figaro//
:La frayeur ne vous aura pas fait oublier ce que contient ce papier, ni comment il se trouvait dans votre poche ?
;Figaro
//embarrassé, fouille dans ses poches et en tire des papiers//
:Non sûrement… Mais c'est que j'en ai tant ! Il faut répondre à tout…
//Il regarde un des papiers.//
:Ceci ? ah ! c'est une lettre de Marceline, en quatre pages ; elle est belle !… Ne serait-ce pas la requête de ce pauvre braconnier en prison ?… Non, la voici… J'avais l'état des meubles du petit château dans l'autre poche…
//Le Comte rouvre le papier qu'il tient.//
;La Comtesse
//bas à Suzanne//.
:Ah ! dieux ! Suzon, c'est le brevet d'officier.
;Suzanne
//bas à Figaro.//
:Tout est perdu, c'est le brevet.
;Le Comte
//replie le papier//
:Eh bien ! l'homme aux expédients, vous ne devinez pas ?
;Antonio
//s'approchant de Figaro//
:Monseigneur dit si vous ne devinez pas ?
;Figaro
//le repousse.//
:Fi donc ! vilain, qui me parle dans le nez !
;Le Comte
:Vous ne vous rappelez pas ce que ce peut être ?
;Figaro
:A, a, a, ah ! povero ! ce sera le brevet de ce malheureux enfant, qu'il m'avait remis, et que j'ai oublié de lui rendre. O o, o, oh ! étourdi que je suis ! que fera-t-il sans son brevet ? Il faut courir…
;Le Comte
:Pourquoi vous l'aurait-il remis ?
;Figaro
//embarrassé//
:Il… désirait qu'on y fît quelque chose.
;Le Comte
//regarde son papier.//
:Il n'y manque rien.
;La Comtesse
//bas à Suzanne//.
:Le cachet.
;Suzanne
//bas à Figaro.//
:Le cachet manque.
;Le Comte
//à Figaro//
:Vous ne répondez pas ?
;Figaro
:C'est… qu'en effet, il y manque peu de chose. Il dit que c'est l'usage…
;Le Comte
:L'usage ! l'usage ! l'usage de quoi ?
;Figaro
:D'y apposer le sceau de vos armes. Peut-être aussi que cela ne valait pas la peine.
;Le Comte
//rouvre le papier et le chiffonne de colère.//
:Allons, il est écrit que je ne saurai rien. //À part.// C'est ce Figaro qui les mène, et je ne m'en vengerais pas !
//Il veut sortir avec dépit.//
;Figaro
//l'arrêtant//
:Vous sortez sans ordonner mon mariage ?
![[►|II-Scène 22 • BARTHOLO, MARCELINE, FIGARO, LE COMTE, GRIPE-SOLEIL, LA COMTESSE, SUZANNE, ANTONIO ; valets du Comte, ses vassaux.]]
![[◄|II-Scène 21 • FIGARO, SUZANNE, LA COMTESSE, LE COMTE, ANTONIO.]]
;Marceline
//au Comte//
:Ne l'ordonnez pas, monseigneur ! Avant de lui faire grâce, vous nous devez justice. Il a des engagements avec moi.
;Le Comte
//à part//
:Voilà ma vengeance arrivée.
;Figaro
:Des engagements ! de quelle nature ? Expliquez-vous.
;Marceline
:Oui, je m'expliquerai, malhonnête !
//La comtesse s'assied sur une bergère, Suzanne se tient derrière//
;Le Comte
:De quoi s'agit-il, Marceline ?
;Marceline
:D'une obligation de mariage.
;Figaro
:Un billet, voilà tout, pour de l'argent prêté.
;Marceline
//au comte//
:Sous condition de m'épouser. Vous êtes un grand seigneur, le premier juge de la province…
;Le Comte
:Présentez-vous au tribunal, j'y rendrai justice à tout le monde.
![[◄|II-Scènes 3, 4 et 5 • SUZANNE ; LA COMTESSE assise]]
//Suzanne entre avec un grand bonnet.//
;Suzanne
:Le cachet, à quoi ?
;La Comtesse
:À son brevet.
;Suzanne
:Déjà ?
;La Comtesse
:C'est ce que je disais. Est-ce là ma baigneuse ?
;Suzanne
//s'assied près de la comtesse.//
:Et la plus belle de toutes.
//Elle chante avec des épingles dans sa bouche.//
:Tournez-vous donc envers ici,
:Jean de Lyra, mon bel ami.
//Chérubin se met à genoux. Elle le coiffe.//
:Madame, il est charmant !
;La Comtesse
:Arrange son collet d'un air un peu plus féminin.
;Suzanne
//l'arrange.//
:Là… mais voyez donc ce morveux, comme il est joli en fille ! J'en suis jalouse, moi !
//Elle lui prend le menton.//
:Voulez-vous bien n'être pas joli comme ça ?
;La Comtesse
:Qu'elle est folle ! Il faut relever la manche, afin que l'amadis prenne mieux…
//Elle le retrousse.//
:Qu'est-ce qu'il a donc au bras ? Un ruban ?
;Suzanne
:Et un ruban à vous. Je suis bien aise que madame l'ait vu. Je lui avais dit que je le dirais, déjà !
:Oh ! si monseigneur n'était pas venu, j'aurais bien repris le ruban, car je suis presque aussi forte que lui.
;La Comtesse
:Il y a du sang !
//Elle détache le ruban.//
;Chérubin
//honteux.//
:Ce matin, comptant partir, j'arrangeais la gourmette de mon cheval ; il a donné de la tête, et la bossette m'a effleuré le bras.
;La Comtesse
:On n'a jamais mis un ruban…
;Suzanne
:Et surtout un ruban volé. — Voyons donc ce que la bossette… la courbette… la cornette du cheval… Je n'entends rien à tous ces noms-là. — Ah ! qu'il a le bras blanc ! c'est comme une femme ! plus blanc que le mien ! Regardez donc, madame !
//Elle les compare.//
;La Comtesse
//d'un ton glacé//.
:Occupez-vous plutôt de m'avoir du taffetas gommé dans ma toilette.
//Suzanne lui pousse la tête en riant ; il tombe sur les deux mains. Elle entre dans le cabinet au bord du théâtre.//
!!II-Scène VII CHÉRUBIN, à genoux ; LA COMTESSE
;La Comtesse
// reste un moment sans parler, les yeux sur son ruban. Chérubin la dévore de ses regards.//
:Pour mon ruban, monsieur… comme c'est celui dont la couleur m'agrée le plus… j'étais fort en colère de l'avoir perdu.
![[►|II-Scène 8 • CHÉRUBIN, à genoux ; LA COMTESSE, assise ; SUZANNE]]
![[◄|II-Scène 6 • CHÉRUBIN, LA COMTESSE, SUZANNE]]
;Suzanne
//revenant.//
:Et la ligature à son bras ?
//Elle remet à la comtesse du taffetas gommé et des ciseaux.//
;La Comtesse
:En allant lui chercher tes hardes, prends le ruban d'un autre bonnet.
//Suzanne sort par la porte du fond, en emportant le manteau du page.//
!!II-Scène IX CHÉRUBIN, à genoux ; LA COMTESSE assise
;Chérubin
//les yeux baissés.//
:Celui qui m'est ôté m'aurait guéri en moins de rien.
;La Comtesse
:Par quelle vertu ?
//Lui montrant le taffetas.//
:Ceci vaut mieux.
;Chérubin //hésitant.//
:Quand un ruban… a serré la tête… ou touché la peau d'une personne…
;La Comtesse
//coupant la phrase//.
:… Étrangère, il devient bon pour les blessures ? J'ignorais cette propriété. Pour l'éprouver, je garde celui-ci qui vous a serré le bras. À la première égratignure… de mes femmes, j'en ferai l'essai.
;Chérubin //pénétré.//
:Vous le gardez, et moi je pars !
;La Comtesse
:Non pour toujours.
;Chérubin
:Je suis si malheureux !
;La Comtesse
//émue//.
:Il pleure à présent ! Il craint pour sa vie !
;Chérubin
//exalté.//
:Ah ! je voudrais toucher à ce terme, Madame ! Sûr de mourir à l'instant, peut-être ma bouche oserait…
;La Comtesse
//l'interrompt, et lui essuie les yeux avec son mouchoir.//
:Taisez-vous, taisez-vous, enfant. Il n'y a pas un brin de raison dans tout ce que vous dites.
//On frappe à la porte, elle élève la voix.//
:Qui frappe ainsi chez moi ?
![[►|II-Scène10 CHÉRUBIN, LA COMTESSE ; LE COMTE, en dehors]]
![[◄|II-Scène 8 • CHÉRUBIN, à genoux ; LA COMTESSE, assise ; SUZANNE]]
;Le Comte
//en dehors.//
:Pourquoi donc enfermée ?
;La Comtesse
//troublée, se lève//.
:C'est mon époux ! grands dieux !…
//À Chérubin, qui s'est levé aussi.//
:Vous sans manteau, le col et les bras nus ! seul avec moi ! cet air de désordre, un billet reçu, sa jalousie !…
;Le Comte
//en dehors.//
:Vous n'ouvrez pas ?
;La Comtesse
:C'est que… je suis seule.
;Le Comte
//en dehors.//
:Seule ! avec qui parlez-vous donc ?
;La Comtesse
//cherchant//.
:Avec vous sans doute.
;Chérubin
//à part.//
:Après les scènes d'hier et de ce matin, il me tuerait sur la place !
//Il court au cabinet de toilette, y entre, et tire la porte sur lui.//
!!II-Scène XI LA COMTESSE, seule
;La Comtesse
//ôte la clef, et court ouvrir au Comte//.
:Ah ! quelle faute ! quelle faute !
![[►|II-Scène 12 LE COMTE, LA COMTESSE]]
![[◄|II-Scène 16 • LE COMTE, LA COMTESSE]]
;Suzanne
//sort en riant.// Je le tuerai, je le tuerai ! Tuez-le donc, ce méchant page.
;Le Comte
//à part//
:Ah ! quelle école ! //Regardant la comtesse, qui est restée stupéfaite.// Et vous aussi, vous jouez l'étonnement ?… Mais peut-être elle n'y est pas seule.
//Il entre.//
!!II-Scène 18 • LA COMTESSE, assise ; SUZANNE
;Suzanne
//accourt à sa maîtresse.//
:Remettez-vous, madame ; il est bien loin ;
:il a fait un saut…
;La Comtesse
:Ah ! Suzon,
:je suis morte !
!!II-Scène 19 • LA COMTESSE, SUZANNE, LE COMTE
//Le Comte sort du cabinet d'un air confus. Après un court silence ://
;Le Comte
:Il n'y a personne, et pour le coup j'ai tort. — Madame… vous jouez fort bien la comédie.
;Suzanne
//gaiement.//
:Et moi, monseigneur ?
//La comtesse, son mouchoir sur la bouche pour se remettre, ne parle pas.//
;Le Comte
//s'approche.//
:Quoi ! madame, vous plaisantiez ?
;La Comtesse
//se remettant un peu//.
:Eh pourquoi non, monsieur ?
;Le Comte
:Quel affreux badinage ! et par quel motif, je vous prie… ?
;La Comtesse
:Vos folies méritent-elles de la pitié ?
;Le Comte
:Nommer folies ce qui touche à l'honneur !
;La Comtesse
//assurant son ton par degrés//.
:Me suis-je unie à vous pour être éternellement dévouée à l'abandon et à la jalousie, que vous seul osez concilier ?
;Le Comte
:Ah ! madame, c'est sans ménagement.
;Suzanne
:Madame n'avait qu'à vous laisser appeler les gens !
;Le Comte
:Tu as raison, et c'est à moi de m'humilier… Pardon, je suis d'une confusion !…
;Suzanne
:Avouez, monseigneur, que vous la méritez un peu.
;Le Comte
:Pourquoi donc ne sortais-tu pas lorsque je t'appelais, mauvaise !
;Suzanne
:Je me rhabillais de mon mieux, à grand renfort d'épingles ; et madame, qui me le défendait, avait bien ses raisons pour le faire.
;Le Comte
:Au lieu de rappeler mes torts, aide-moi plutôt à l'apaiser.
;La Comtesse
:Non, monsieur ; un pareil outrage ne se couvre point. Je vais me retirer aux Ursulines, et je vois trop qu'il en est temps.
;Le Comte
:Le pourriez-vous sans quelques regrets ?
;Suzanne
:Je suis sûre, moi, que le jour du départ serait la veille des larmes.
;La Comtesse
:Et quand cela serait, Suzon ? J'aime mieux le regretter que d'avoir la bassesse de lui pardonner.
:Il m'a trop offensée.
;Le Comte
:Rosine !…
;La Comtesse
:Je ne la suis plus, cette Rosine que vous avez tant poursuivie !
:Je suis la pauvre comtesse Almaviva, la triste femme délaissée, que vous n'aimez plus.
;Suzanne
:Madame !
;Le Comte
//suppliant//
:Par pitié !
;La Comtesse
:Vous n'en aviez aucune pour moi.
;Le Comte
:Mais aussi ce billet… Il m'a tourné le sang !
;La Comtesse
:Je n'avais pas consenti qu'on l'écrivît.
;Le Comte
:Vous le saviez ?
;La Comtesse
:C'est cet étourdi de Figaro…
;Le Comte
:Il en était ?
;La Comtesse
:… Qui l'a remis à Basile.
;Le Comte
:Qui m'a dit le tenir d'un paysan.
:Ô perfide chanteur, lame à deux tranchants !
:C'est toi qui payeras pour tout le monde.
;La Comtesse
:Vous demandez pour vous un pardon que vous refusez aux autres ?
:Voilà bien les hommes !
:Ah ! si jamais je consentais à pardonner en faveur de l'erreur où vous a jeté ce billet, j'exigerais que l'amnistie fût générale.
;Le Comte
:Eh bien ! de tout mon cœur, comtesse.
:Mais comment réparer une faute aussi humiliante ?
;La Comtesse
//se lève//
:Elle l'était pour tous deux.
;Le Comte
:Ah ! dites pour moi seul. — Mais je suis encore à concevoir comment les femmes prennent si vite et si juste l'air et le ton des circonstances. Vous rougissiez, vous pleuriez, votre visage était défait… D'honneur, il l'est encore.
;La Comtesse
//s'efforçant de sourire//.
:Je rougissais… du ressentiment de vos soupçons. Mais les hommes sont-ils assez délicats pour distinguer l'indignation d'une âme honnête outragée, d'avec la confusion qui naît d'une accusation méritée ?
;Le Comte
//souriant//
:Et ce page en désordre, en veste, et presque nu…
;La Comtesse
//montrant Suzanne//.
:Vous le voyez devant vous. N'aimez-vous pas mieux l'avoir trouvé que l'autre ? En général vous ne haïssez pas de rencontrer celui-ci.
;Le Comte
//riant plus fort//
:Et ces prières, ces larmes feintes…
;La Comtesse
:Vous me faites rire, et j'en ai peu d'envie.
;Le Comte
:Nous croyons valoir quelque chose en politique, et nous ne sommes que des enfants. C'est vous, c'est vous, madame, que le roi devrait envoyer en ambassade à Londres ! Il faut que votre sexe ait fait une étude bien réfléchie de l'art de se composer, pour réussir à ce point !
;La Comtesse
:C'est toujours vous qui nous y forcez.
;Suzanne
:Laissez-nous prisonniers sur parole, et vous verrez si nous sommes gens d'honneur.
;La Comtesse
:Brisons là, monsieur le Comte. J'ai peut-être été trop loin ; mais mon indulgence, en un cas aussi grave, doit au moins m'obtenir la vôtre.
;Le Comte
:Mais vous répéterez que vous me pardonnez ?
;La Comtesse
:Est-ce que je l'ai dit, Suzon ?
;Suzanne
:Je ne l'ai pas entendu, madame.
;Le Comte
:Eh bien ! que ce mot vous échappe.
;La Comtesse
:Le méritez-vous donc, ingrat ?
;Le Comte
:Oui, par mon repentir.
;Suzanne
:Soupçonner un homme dans le cabinet de madame !
;Le Comte
:Elle m'en a si sévèrement puni !
;Suzanne
:Ne pas s'en fier à elle, quand elle dit que c'est sa camériste !
;Le Comte
:Rosine, êtes-vous donc implacable ?
;La Comtesse
:Ah ! Suzon, que je suis faible ! quel exemple je te donne !
//Tendant la main au comte.//
:On ne croira plus à la colère des femmes.
;Suzanne
:Bon ! madame, avec eux ne faut-il pas toujours en venir là ?
//Le Comte baise ardemment la main de sa femme.//
![[►|II-Scène 20 • SUZANNE, FIGARO, LA COMTESSE, LE COMTE.]]
![[◄|II-Scène 22 • BARTHOLO, MARCELINE, FIGARO, LE COMTE, GRIPE-SOLEIL, LA COMTESSE, SUZANNE, ANTONIO ; valets du Comte, ses vassaux.]]
//La Comtesse et Suzanne échangent en avant-scène//
;La Comtesse
//dans sa bergère//.
:Vous voyez, Suzanne, la jolie scène que votre étourdi m'a value avec son billet.
;Suzanne
:Ah ! madame, quand je suis rentrée du cabinet, si vous aviez vu votre visage ! il s'est terni tout à coup ; mais ce n'a été qu'un nuage, et par degrés vous êtes devenue rouge, rouge, rouge !
;La Comtesse
:Il a donc sauté par la fenêtre ?
;Suzanne
:Sans hésiter, le charmant enfant ! Léger… comme une abeille !
;La Comtesse
:Ah ! ce fatal jardinier ! Tout cela m'a remuée au point… que je ne pouvais rassembler deux idées.
;Suzanne
:Ah ! madame, au contraire ; et c'est là que j'ai vu combien l'usage du grand monde donne d'aisance aux dames comme il faut, pour mentir sans qu'il y paraisse.
;La Comtesse
:Crois-tu que le comte en soit la dupe ? Et s'il trouvait cet enfant au château !
;Suzanne
:Je vais recommander de le cacher si bien…
:. . .
//Suzanne entre dans le cabinet de toilette.//
:Scène XXV LA COMTESSE, seule.
;La Comtesse
:. . . //Elle se retourne.//
:Ah ! le ruban ! Mon joli ruban, je t'oubliais !
//Elle le prend sur sa bergère et le roule.//
:Tu ne me quitteras plus… tu me rappelleras la scène où ce malheureux enfant… . . . ?
![[►|III-Scène 4 • LE COMTE, seul, marche en rêvant.]]
![[◄|II-Scène 2 FIGARO, SUZANNE, LA COMTESSE assise]]
;La Comtesse
://tenant sa boîte à mouches//.
:Mon Dieu, Suzon, comme je suis faite !… ce jeune homme qui va venir !…
;Suzanne
:Madame ne veut donc pas qu'il en réchappe ?
;La Comtesse
://rêve devant sa petite glace.//
:Moi ?… tu verras comme je vais le gronder.
;Suzanne
:Faisons-lui chanter sa romance.
//Elle la met devant la Comtesse.//
;La Comtesse
:Mais c'est qu'en vérité mes cheveux sont dans un désordre…
;Suzanne
://riant//
:Je n'ai qu'à reprendre ces deux boucles, madame le grondera bien mieux.
;La Comtesse
://revenant à elle//.
:Qu'est-ce que vous dites donc, mademoiselle ?
!!II-Scène IV CHÉRUBIN, l'air honteux ; SUZANNE, LA COMTESSE
;Suzanne
:Entrez, monsieur l'officier ; on est visible.
;Chérubin
://avance en tremblant.//
:Ah ! que ce nom m'afflige, madame ! il m'apprend qu'il faut quitter des lieux… une marraine si… bonne !…
;Suzanne
:Et si belle !
;Chérubin
://avec un soupir.//
:Ah ! oui.
;Suzanne
://le contrefait.//
:Ah ! oui. Le bon jeune homme ! avec ses longues paupières hypocrites ! Allons, bel oiseau bleu, chantez la romance à madame.
;La Comtesse
://la déplie//.
:De qui… dit-on qu'elle est ?
;Suzanne
:Voyez la rougeur du coupable :
:en a-t-il un pied sur les joues !
;Chérubin
:Est-ce qu'il est défendu… de chérir…
;Suzanne
//lui met le poing sous le nez.//
:Je dirai tout, vaurien !
;La Comtesse
:Là… chante-t-il ?
;Chérubin
:Oh ! madame, je suis si tremblant !…
;Suzanne
//en riant.//
:Et gnian, gnian, gnian, gnian, gnian, gnian, gnian ; dès que madame le veut, modeste auteur ! . . .
//La Comtesse, assise, tient le papier pour suivre. Suzanne est derrière son fauteuil, et prélude en regardant la musique par-dessus sa maîtresse. Le petit page est devant elle, les yeux baissés. Ce tableau est juste la belle estampe d'après Vanloo, appelée LA CONVERSATION ESPAGNOLE.//
;Chérubin
:ROMANCE
//Air : Marlbroug s'en va-t-en guerre.//
//Premier couplet.//
:Mon coursier hors d'haleine,
:Que mon cœur, mon cœur a de peine !
:J'errais de plaine en plaine,
:Au gré du destrier.
:Au gré du destrier
//Huitième_couplet//
:Nenni, n'en faut parler :
:Je veux, traînant ma chaîne,
:Que mon cœur, mon cœur a de peine !
:Mourir de cette peine,
:Mais non m'en consoler.
:Mais non m'en consoler.
;La Comtesse
:Il y a de la naïveté…
:du sentiment même.
;Suzanne
//va poser la guitare sur un fauteuil.//
:Oh ! pour du sentiment, c'est un jeune homme qui…
:Ah çà, monsieur l'officier, vous a-t-on dit que, pour égayer la soirée, nous voulons savoir d'avance si un de mes habits vous ira passablement ?
;La Comtesse
:J'ai peur que non.
;Suzanne
//se mesure avec lui.//
:Il est de ma grandeur. Ôtons d'abord le manteau.
//Elle le détache.//
;La Comtesse
:Et si quelqu'un entrait ?
;Suzanne
:Est-ce que nous faisons du mal donc ? Je vais fermer la porte.
//elle court//
:Mais c'est la coiffure que je veux voir.
;La Comtesse
:Sur ma toilette, une baigneuse à moi.
//Suzanne entre dans le cabinet dont la porte est au bord du théâtre.//
!!II-Scène V CHÉRUBIN ; LA COMTESSE assise
;La Comtesse
:Jusqu'à l'instant du bal, le comte ignorera que vous soyez au château. Nous lui dirons après que le temps d'expédier votre brevet nous a fait naître l'idée…
;Chérubin
//le lui montre.//
:Hélas ! madame, le voici ; Basile me l'a remis de sa part.
;La Comtesse
:Déjà ? l'on a craint d'y perdre une minute. //Elle lit.// Ils se sont tant pressés, qu'ils ont oublié d'y mettre son cachet.
//Elle le lui rend.//
![[►|II-Scène 6 • CHÉRUBIN, LA COMTESSE, SUZANNE]]
<<storyViewer 'Scènes du Misanthrope'>>
[img[https://i.ytimg.com/vi/N8NXcB3gLi4/hqdefault.jpg]]
!!Le Misanthrope - ACTE III
''Arsinoé et Célimène''
!!!Scène II
!!!!!Célimène, Acaste, Clitandre
;CÉLIMÈNE
:Encore ici ?
;CLITANDRE
:L'amour retient nos pas.
;CÉLIMÈNE
:Je viens d'ouïr entrer un carrosse là-bas.
:Savez-vous qui c'est ?
;CLITANDRE
:Non.
!!!''Scène III''
!!!!!Célimène, Acaste, Clitandre, Basque
;BASQUE
:Arsinoé, madame,
:Monte ici pour vous voir.
;CÉLIMÈNE
:Que me veut cette femme ?
;BASQUE
:Éliante là-bas est à l'entretenir.
;CÉLIMÈNE
:De quoi s'avise-t-elle, et qui la fait venir ?
;ACASTE
:Pour prude consommée en tous lieux elle passe,
:Et l'ardeur de son zèle…
;CÉLIMÈNE
:Oui, oui, franche grimace.
:Dans l'âme elle est du monde ; et ses soins tentent tout
:Pour accrocher quelqu'un, sans en venir à bout.
:Elle ne saurait voir qu'avec un œil d'envie
:Les amants déclarés dont une autre est suivie ;
Et son triste mérite, abandonné de tous,
:Contre le siècle aveugle est toujours en courroux.
Elle tâche à couvrir d'un faux voile de prude
:Ce que chez elle on voit d'affreuse solitude ;
:Et, pour sauver l'honneur de ses faibles appas,
:Elle attache du crime au pouvoir qu'ils n'ont pas.
:Cependant un amant plairait fort à la dame,
:Et même pour Alceste elle a tendresse d'âme.
:Ce qu'il me rend de soins outrage ses attraits ;
:Elle veut que ce soit un vol que je lui fais ;
:Et son jaloux dépit, qu'avec peine elle cache,
:En tous endroits sous main contre moi se détache
:Enfin je n'ai rien vu de si sot à mon gré ;
:Elle est impertinente au suprême degré,
:Et…
!!!''Scène IV''
!!!!!Arsinoé, Célimène
;CÉLIMÈNE
:Ah ! quel heureux sort en ce lieu vous amène ?
:Madame, sans mentir, j'étais de vous en peine.
;ARSINOÉ
:Je viens pour quelque avis que j'ai cru vous devoir.
;CÉLIMÈNE
:Ah ! mon Dieu ! que je suis contente de vous voir !
:Clitandre et Acaste sortent en riant.
!!!''Scène V''
:Arsinoé, Célimène
;ARSINOÉ
:Leur départ ne pouvait plus à propos se faire.
;CÉLIMÈNE
:Voulons-nous nous asseoir ?
;ARSINOÉ
:Il n'est pas nécessaire.
:Madame, l'amitié doit surtout éclater
:Aux choses qui le plus nous peuvent importer ;
Et, comme il n'en est point de plus grande importance
:Que celles de l'honneur et de la bienséance,
:Je viens, par un avis qui touche votre honneur,
:Témoigner l'amitié que pour vous a mon cœur.
Hier j'étais chez des gens de vertu singulière,
:Où sur vous du discours on tourna la matière ;
Et là,
votre conduite, avec ses grands éclats,
:Madame, eut le malheur qu'on ne la loua pas.
Cette foule de gens dont vous souffrez visite,
:Votre galanterie, et les bruits qu'elle excite,
:Trouvèrent des censeurs plus qu'il n'aurait fallu,
:Et bien plus rigoureux que je n'eusse voulu.
Vous pouvez bien penser quel parti je sus prendre ;
:Je fis ce que je pus pour vous pouvoir défendre ;
Je vous excusai fort sur votre intention,
:Et voulus de votre âme être la caution.
Mais vous savez qu'il est des choses dans la vie
:Qu'on ne peut excuser, quoiqu'on en ait envie ;
Et je me vis contrainte à demeurer d'accord
:Que l'air dont vous vivez vous faisait un peu tort ;
:Qu'il prenait dans le monde une méchante face ;
Qu'il n'est conte fâcheux que partout on n'en fasse ;
Et que, si vous vouliez,
tous vos déportements
:Pourraient moins donner prise aux mauvais jugements.
:Non que j'y croie au fond l'honnêteté blessée ;
Me préserve le ciel d'en avoir la pensée !
Mais aux ombres du crime on prête aisément foi
:Et ce n'est pas assez de bien vivre pour soi.
:Madame, je vous crois l'âme trop raisonnable
:Pour ne pas prendre bien cet avis profitable,
:Et pour l'attribuer qu'aux mouvements secrets
:D'un zèle qui m'attache à tous vos intérêts.
;CÉLIMÈNE
:Madame, j'ai beaucoup de grâces à vous rendre,
:Un tel avis m'oblige ; et, loin de le mal prendre,
:J'en prétends reconnaître à l'instant la faveur,
:Par un avis aussi qui touche votre honneur ;
:Et, comme je vous vois vous montrer mon amie,
:En m'apprenant les bruits que de moi l'on publie,
:Je veux suivre, à mon tour, un exemple si doux,
:En vous avertissant de ce qu'on dit de vous.
:En un lieu, l'autre jour, où je faisais visite,
:Je trouvai quelques gens d'un très rare mérite,
:Qui, parlant des vrais soins d'une âme qui vit bien,
:Firent tomber sur vous, madame, l'entretien.
:Là, votre pruderie et vos éclats de zèle
:Ne furent pas cités comme un fort bon modèle ;
:*Cette affectation d'un grave extérieur,
:*Vos discours éternels de sagesse et d'honneur,
:*Vos mines et vos cris aux ombres d'indécence
Que d'un mot ambigu peut avoir l'innocence,
:*Cette hauteur d'estime où vous êtes de vous,
:*Et ces yeux de pitié que vous jetez sur tous,
:*Vos fréquentes leçons et vos aigres censures
:Sur des choses qui sont innocentes et pures
Tout cela, si je puis vous parler franchement,
:Madame, fut blâmé d'un commun sentiment.
:À quoi bon, disaient-ils cette mine modeste,
:Et ce sage dehors que dément tout le reste ?
:Elle est à bien prier exacte au dernier point ;
:Mais elle bat ses gens, et ne les paye point.
:Dans tous les lieux dévots elle étale un grand zèle ;
:Mais elle met du blanc, et veut paraître belle.
:Elle fait des tableaux couvrir les nudités ;
:Mais elle a de l'amour pour les réalités.
:Pour moi, contre chacun je pris votre défense,
:Et leur assurai fort que c'était médisance ;
:Mais tous les sentiments combattirent le mien,
:Et leur conclusion fut que vous feriez bien
:De prendre moins de soin des actions des autres,
:Et de vous mettre un peu plus en peine des vôtres ;
:Qu'on doit se regarder soi-même un fort long temps
:Avant que de songer à condamner les gens ;
:Qu'il faut mettre le poids d'une vie exemplaire
:Dans les corrections qu'aux autres on veut faire ;
:Et qu'encore vaut-il mieux s'en remettre, au besoin,
:À ceux à qui le ciel en a commis le soin.
:Madame, je vous crois aussi trop raisonnable,
:Pour ne pas prendre bien cet avis profitable,
:Et pour l'attribuer qu'aux mouvements secrets
:D'un zèle qui m'attache à tous vos intérêts.
;ARSINOÉ
:À quoi qu'en reprenant on soit assujettie,
:Je ne m'attendais pas à cette repartie,
:Madame ;
et je vois bien, par ce qu'elle a d'aigreur,
:Que mon sincère avis vous a blessée au cœur.
;CÉLIMÈNE
:Au contraire, madame ; et, si l'on était sage,
:Ces avis mutuels seraient mis en usage.
:On détruirait par là, traitant de bonne foi,
:Ce grand aveuglement où chacun est pour soi.
:Il ne tiendra qu'à vous qu'avec le même zèle
:Nous ne continuions cet office fidèle,
:Et ne prenions grand soin de nous dire, entre nous,
:Ce que nous entendrons, vous de moi, moi de vous.
;ARSINOÉ
:Ah ! madame, de vous je ne puis rien entendre ;
:C'est en moi que l'on peut trouver fort à reprendre.
;CÉLIMÈNE
:Madame, on peut, je crois, louer et blâmer tout ;
:Et chacun a raison, suivant l'âge ou le goût.
:Il est une saison pour la galanterie,
:Il en est une aussi propre à la pruderie.
:On peut, par politique, en prendre le parti,
:Quand de nos jeunes ans l'éclat est amorti ;
:Cela sert à couvrir de fâcheuses disgrâces.
:Je ne dis pas qu'un jour je ne suive vos traces ;
:L'âge amènera tout ; et ce n'est pas le temps,
:Madame, comme on sait, d'être prude à vingt ans.
:?
;ARSINOÉ
:Certes, vous vous targuez d'un bien faible avantage,
:Et vous faites sonner terriblement votre âge.
Ce que de plus que vous on en pourrait avoir,
:N'est pas un si grand cas pour s'en tant prévaloir ;
Et je ne sais pourquoi votre âme ainsi s'emporte,
:Madame, à me pousser de cette étrange sorte.
;CÉLIMÈNE
:Et moi, je ne sais pas, madame, aussi pourquoi
:On vous voit en tous lieux vous déchaîner sur moi.
:Faut-il de vos chagrins sans cesse à moi vous prendre ?
:Et puis-je mais des soins qu'on ne va pas vous rendre ?
:Si ma personne aux gens inspire de l'amour,
:Et si l'on continue à m'offrir chaque jour
:Des vœux que votre cœur peut souhaiter qu'on m'ôte,
:Je n'y saurais que faire, et ce n'est pas ma faute ;
:Vous avez le champ libre, et je n'empêche pas
:Que, pour les attirer, vous n'ayez des appas.
;ARSINOÉ
:Hélas !
et croyez-vous que l'on se mette en peine
:De ce nombre d'amants dont vous faites la vaine
:Et qu'il ne nous soit pas fort aisé de juger
:À quel prix aujourd'hui l'on peut les engager ?
Pensez-vous faire croire, à voir comme tout roule,
:Que votre seul mérite attire cette foule ?
Qu'ils ne brûlent pour vous que d'un honnête amour,
:Et que pour vos vertus, ils vous font tous la cour ?
:On ne s'aveugle point par de vaines défaites,
:Le monde n'est point dupe ; et j'en vois qui sont faites
:À pouvoir inspirer de tendres sentiments,
:Qui chez elles pourtant ne fixent point d'amants ;
Et de là nous pouvons tirer des conséquences,
:Qu'on n'acquiert point leurs cœurs sans de grandes avances ;
:Qu'aucun, pour nos beaux yeux, n'est notre soupirant,
:Et qu'il faut acheter tous les soins qu'on nous rend.
Ne vous enflez donc pas d'une si grande gloire,
:Pour les petits brillants d'une faible victoire ;
Et corrigez un peu l'orgueil de vos appas,
:De traiter pour cela les gens de haut en bas.
Si nos yeux enviaient les conquêtes des vôtres,
:Je pense qu'on pourrait faire comme les autres,
:Ne se point ménager, et vous faire bien voir
:Que l'on a des amants quand on en veut avoir.
;CÉLIMÈNE
:Ayez-en donc, madame, et voyons cette affaire ;
:Par ce rare secret efforcez-vous de plaire ;
:Et sans…
;ARSINOÉ
:Brisons, madame, un pareil entretien,
:Il pousserait trop loin votre esprit et le mien ;
Et j'aurais pris déjà le congé qu'il faut prendre,
:Si mon carrosse encore ne m'obligeait d'attendre.
;CÉLIMÈNE
:Autant qu'il vous plaira vous pouvez arrêter,
:Madame, et là-dessus rien ne doit vous hâter.
:Mais, sans vous fatiguer de ma cérémonie,
:Je m'en vais vous donner meilleure compagnie ;
:Et monsieur, qu'à propos le hasard fait venir,
:Remplira mieux ma place à vous entretenir.
<<storyViewer 'Scènes du Misanthrope'>>
![[◄|III-Scènes 9 et 10 • SUZANNE, LE COMTE.]]
;Le Comte
:Tu viens de gagner ton procès !
:— Je donnais là dans un bon piège !
:Ô mes chers insolents ! je vous punirai de façon…
:Un bon arrêt, bien juste…
:Mais s'il allait payer la duègne…
:Avec quoi ?…
:S'il payait…
:Eeeeh ! n'ai-je pas le fier Antonio, dont le noble orgueil dédaigne en Figaro un inconnu pour sa nièce ?
:En caressant cette manie…
:Pourquoi non ?
:Dans le vaste champ de l'intrigue il faut savoir tout cultiver , jusqu'à la vanité d'un sot.
//Il appelle.//
:Anto…
//Il voit entrer Marceline, etc. Il sort.//
![[►|III-Scène 12 • BARTHOLO, MARCELINE, BRID'OISON.]]
![[◄|III-Scène 11 • LE COMTE rentre seul.]]
;Marceline
//à Brid'oison//
:Monsieur, écoutez mon affaire.
:Brid'oison, en robe, et bégayant un peu.
:Eh bien ! pa-arlons-en verbalement.
;Marceline
:C'est une promesse de mariage...
:... accompagnée d'un prêt d'argent.
;Brid'oison
:J'en…entends, et cætera, le reste.
;Marceline
:Non, monsieur, point d'et cætera.
;Brid'oison
:J'en-entends : vous avez la somme ?
;Marceline
:Non, monsieur ; c'est moi qui l'ai prêtée.
;Brid'oison
:J'en-entends bien, vou-ous redemandez l'argent ?
;Marceline
:Non, monsieur ; je demande qu'il m'épouse.
;Brid'oison
:Eh ! mais, j'en-entends fort bien ; et lui veu-eut-il vous épouser ?
;Marceline
:Non, monsieur ; voilà tout le procès !
;Brid'oison
:Croyez-vous que je ne l'en-entende pas, le procès ?
;Marceline
:Non, monsieur.
//À Bartholo.// Où sommes-nous ?
//À Brid'oison//. Quoi ! c'est vous qui nous jugerez ?
;Brid'oison
:Est-ce que j'ai a-acheté ma charge pour autre chose ?
;Marceline
//en soupirant//
:C'est un grand abus que de les vendre !
;Brid'oison
:Oui ; l'on-on ferait mieux de nous les donner pour rien. Contre qui plai-aidez-vous ?
![[►|III-Scène 13 • BARTHOLO, MARCELINE, BRID'OISON ; FIGARO]]
![[◄|III-Scène 12 • BARTHOLO, MARCELINE, BRID'OISON.]]
;Figaro
//rentre en se frottant les mains//
;Marceline
//montrant Figaro//
:Monsieur, contre ce malhonnête homme.
;Figaro
//très gaiement, à Marceline//
:Je vous gêne peut-être.
:— Monseigneur revient dans l'instant, monsieur le conseiller.
;Brid'oison
:J'ai vu ce ga-arçon-là quelque part.
;Figaro
:Peut-être lorsque je faisais barbier, à Séville, monsieur le conseiller ?
;Brid'oison.
:Dan-ans quel temps ?
;Figaro
:Un peu moins d'un an avant la naissance de monsieur votre fils le cadet, qui est un bien joli enfant, je m'en vante
;Brid'oison.
:Oui, c'est le plus jo-oli de tous.
:On dit que tu-u fais ici des tiennes ?
;Figaro
:Monsieur est bien bon. Ce n'est là qu'une misère.
;Brid'oison
:Une promesse de mariage !
:A-ah ! le pauvre benêt !
;Figaro
:Monsieur…
;Brid'oison
:A-t-il vu mon-on secrétaire, ce bon garçon ?
;Figaro
:N'est-ce pas Double-Main, le greffier ?
;Brid'oison
:Oui ; c'è-est qu'il mange à deux râteliers.
;Figaro
:Manger ! je suis garant qu'il dévore.
:Oh ! que oui !
:je l'ai vu pour l'extrait
:et pour le supplément d'extrait ;
:comme cela se pratique, au reste.
;Brid'oison
:On-on doit remplir les formes.
;Figaro
:Assurément, monsieur ;
:si le fond des procès appartient aux plaideurs,
:on sait bien que la forme est le patrimoine des tribunaux.
;Brid'oison
:Ce garçon-là n'è-est pas si niais que je l'avais cru d'abord.
:Eh bien ! l'ami,
:puisque tu en sais tant,
:nou-ous aurons soin de ton affaire.
;Figaro
:Monsieur, je m'en rapporte à votre équité,
:quoique vous soyez de notre justice.
;Brid'oison
:Hein ?… Oui, je suis de la-a justice. Mais si tu dois, et que tu-u ne payes pas ?…
;Figaro
:Alors monsieur voit bien que c'est comme si je ne devais pas.
;Brid'oison
:San-ans doute. — Hé ! mais qu'est-ce donc qu'il dit ?
![[►|III-Scène 14 • BARTHOLO, MARCELINE, LE COMTE, BRID'OISON, FIGARO, UN HUISSIER.]]
![[◄|III-Scène 13 • BARTHOLO, MARCELINE, BRID'OISON ; FIGARO]]
;L'huissier
//précédant le Comte, crie.//
:Monseigneur, messieurs.
;Le Comte
:En robe ici, seigneur Brid'oison !
:Ce n'est qu'une affaire domestique : l'habit de ville était trop bon.
;Brid'oison
:C'è-est vous qui l'êtes, monsieur le comte.
:Mais je ne vais jamais san-ans elle, parce que la forme, voyez-vous, la forme !
:Tel rit d'un juge en habit court, qui-i tremble au seul aspect d'un procureur en robe.
:La forme, la-a forme !
;Le Comte
//à l'huissier//
:Faites entrer l'audience.
;L'huissier
//va ouvrir en glapissant.//
:L'audience !
![[►|III-Scène 15 Le COMTE BRI,D'OISON, le greffier, MARCELINE, BARTHOLO, FIGARO et ANTONIO, les valets du château, les paysans et paysannes en habits de fête]]
![[◄|III-Scène 14 • BARTHOLO, MARCELINE, LE COMTE, BRID'OISON, FIGARO, UN HUISSIER.]]
//LE COMTE s'assied sur le grand fauteuil ; BRID'OISON, sur une chaise à côté ; le greffier, sur le tabouret derrière sa table ; les juges, les avocats, sur les banquettes ; MARCELINE, à côté de BARTHOLO ; FIGARO, sur l'autre banquette ; les paysans et les valets, debout derrière.//
;Brid'oison
//à Double-Main//
:Double-Main, a-appelez les causes.
;Double-Main
//lisant//
//Bartholo et Figaro se lèvent.//
:"Barbe-Agar-Raab-Magdelaine-Nicole-Marceline de Verte-Allure, fille majeure
//Marceline se lève et salue// ;
:contre Figaro…"
:??
:Nom de baptême en blanc ?
;Figaro
:Anonyme.
;Brid'oison
:A-anonyme ! Què-el patron est-ce là ?
;Figaro
:C'est le mien.
;Double-Main
//écrivant.//
:Contre anonyme Figaro.
:Qualités ?
;Figaro
:Gentilhomme.
;Le Comte
:Vous êtes gentilhomme ?
//Le greffier écrit.//
;Figaro
:Si le ciel l'eût voulu, je serais fils d'un prince.
;Le Comte
//au greffier//
:Allez.
;L'Huissier
//glapissant.//
:Silence, messieurs !
;Double-Main
//lisant//
:"… Pour cause d'opposition faite au mariage dudit Figaro, par ladite de Verte-Allure.
:Le docteur Bartholo plaidant pour la demanderesse,
:et ledit Figaro pour lui-même,
:si la cour le permet,
:contre le vœu de l'usage et la jurisprudence du siège."
;Figaro
:L'usage, maître Double-Main, est souvent un abus.
:Le client un peu instruit sait toujours mieux sa cause que certains avocats, qui, suant à froid, criant à tue-tête, et connaissant tout, hors le fait, s'embarrassent aussi peu de ruiner le plaideur que d'ennuyer l'auditoire et d'endormir messieurs ; plus boursouflés après, que s'ils eussent composé l'Oratio pro Murena.
:Moi, je dirai le fait en peu de mots.
:Messieurs…
;Double-Main.
:En voilà beaucoup d'inutiles, car vous n'êtes pas demandeur, et n'avez que la défense.
:Avancez, docteur, et lisez la promesse.
;Figaro
:Oui, promesse !
;Bartholo
//mettant ses lunettes.//
:Elle est précise.
;Brid'oison
:I-il faut la voir.
;Double-Main.
:Silence donc, messieurs !
;L'Huissier
//glapissant.//
:Silence !
;Bartholo
//Il lit.//
:"Je soussigné reconnais avoir reçu de damoiselle, etc…
:… Marceline de Verte-Allure, dans le château d'Aguas-Frescas, la somme de deux mille piastres fortes cordonnées ;
:laquelle somme je lui rendrai à sa réquisition, dans ce château ;
:et je l'épouserai, par forme de reconnaissance, etc."
:Signé : Figaro, tout court.
:Mes conclusions sont au payement du billet et à l'exécution de la promesse, avec dépens.
//Il plaide.//
:Messieurs… jamais cause plus intéressante ne fut soumise au jugement de la cour ;
:et,
:depuis Alexandre le Grand,
:qui promit mariage à la belle Thalestris…
;Le Comte
//interrompant//
:Avant d'aller plus loin, avocat,
:convient-on de la validité du titre ?
;Brid'oison
//à Figaro//
:Qu'oppo… qu'oppo-osez-vous à cette lecture ?
;Figaro
:Qu'il y a, messieurs, malice, erreur ou distraction dans la manière dont on a lu la pièce, car il n'est pas dit dans l'écrit :
:laquelle somme je lui rendrai, ET je l'épouserai,
:mais :
:laquelle somme je lui rendrai, OU je l'épouserai ;
:ce qui est bien différent.
;Le Comte
:Y a-t-il et dans l'acte ; ou bien ou ?
;Bartholo
:Il y a et.
;Figaro
:Il y a ou.
;Brid'oison
:Dou-ouble-Main, lisez vous-même.
;Double-Main
//prenant le papier.//
:Et c'est le plus sûr, car souvent les parties déguisent en lisant.
//Il lit.//
:E. e. e. e.
:Damoiselle e. e. e. de Verte-Allure
:e. e. e.
:Ha !
:laquelle somme je lui rendrai à sa réquisition, dans ce château… ET… OU… ET… OU…
:Le mot est si mal écrit…
:il y a un pâté.
;Brid'oison
:Un pâ-âté ? je sais ce que c'est.
;Bartholo
//plaidant.//
:Je soutiens, moi, que c'est la conjonction copulative ET qui lie les membres corrélatifs de la phrase :
:Je payerai la demoiselle,
:ET
:je l'épouserai.
;Figaro
//plaidant//
:Je soutiens, moi, que c'est la conjonction alternative OU qui sépare lesdits membres :
:Je payerai la donzelle,
:OU
:je l'épouserai.
:À pédant, pédant et demi.
:Qu'il s'avise de parler latin, j'y suis Grec ; je l'extermine.
;Le Comte
:Comment juger pareille question ?
;Bartholo
:Pour la trancher, messieurs, et ne plus chicaner sur un mot, nous passons qu'il y ait OU.
;Figaro
:J'en demande acte.
;Bartholo
:Et nous y adhérons.
:Un si mauvais refuge ne sauvera pas le coupable.
:Examinons le titre en ce sens.
//Il lit.//
:Laquelle somme je lui rendrai dans ce château où je l'épouserai.
:C'est ainsi qu'on dirait, messieurs :
:Vous vous ferez saigner dans ce lit où vous resterez chaudement :
:c'est dans lequel.
:Il prendra deux gros de rhubarbe où vous mêlerez un peu de tamarin :
:dans lesquels on mêlera.
:Ainsi château où je l'épouserai, messieurs,
:c'est château dans lequel.
;Figaro
:Point du tout :
:la phrase est dans le sens de celle-ci :
:ou la maladie vous tuera, ou ce sera le médecin :
:ou bien le médecin ; c'est incontestable.
:Autre exemple :
:ou vous n'écrirez rien qui plaise, ou les sots vous dénigreront :
:ou bien les sots ;
:le sens est clair ; car, audit cas, sots ou méchants sont le substantif qui gouverne.
:Maître Bartholo croit-il donc que j'aie oublié ma syntaxe ?
:Ainsi, je la payerai dans ce château, virgule, ou je l'épouserai…
;Bartholo
//vite.//
:Sans virgule.
;Figaro
//vite//
:Elle y est.
:C'est, virgule, messieurs : ou bien je l'épouserai.
;Bartholo
//regardant le papier, vite.//
:Sans virgule, messieurs.
;Figaro
//vite//
:Elle y était, messieurs.
:D'ailleurs,
:l'homme qui épouse est-il tenu de rembourser ?
;Bartholo
//vite.//
:Oui ;
:nous nous marions séparés de biens.
;Figaro
//vite//
:Et nous de corps,
:dès que mariage n'est pas quittance.
//Les juges se lèvent et opinent tout bas.//
;Bartholo
:Plaisant acquittement !
;Double-Main.
:Silence, messieurs !
;L'Huissier
//glapissant.//
:Silence !
;Bartholo
:Un pareil fripon appelle cela payer ses dettes.
;Figaro
:Est-ce votre cause, avocat, que vous plaidez ?
;Bartholo
:Je défends cette demoiselle.
;Figaro
:Continuez à déraisonner, mais cessez d'injurier.
:C'est dégrader le plus noble institut.
//Les juges continuent d'opiner bas.//
;Antonio
//à Marceline, montrant les juges.//
:Qu'ont-ils tant à balbucifier ?
;Marceline
:On a corrompu le grand juge, il corrompt l'autre, et je perds mon procès.
;Bartholo
//bas, d'un ton sombre.//
:J'en ai peur.
;Figaro
//gaiement//
:Courage, Marceline !
;Double-Main
//se lève ; à Marceline.//
:Ah ! c'est trop fort ! je vous dénonce ; et, pour l'honneur du tribunal, je demande qu'avant faire droit sur l'autre affaire, il soit prononcé sur celle-ci.
;Le Comte
//s'assied//
:Non, greffier, je ne prononcerai point sur mon injure personnelle.
:Je vais vous motiver mon arrêt :
:tout juge qui s'y refuse est un grand ennemi des lois.
:Que peut requérir la demanderesse ?
:Mariage à défaut de payement ...
;Double-Main.
:Silence, messieurs !
;L'Huissier
//glapissant.//
:Silence !
;Le Comte
:Que nous répond le défendeur ? qu'il veut garder sa personne ;
:à lui permis.
;Figaro
//avec joie//
:J'ai gagné !
;Le Comte
:Mais comme le texte dit : « laquelle somme je payerai à sa première réquisition, ou bien j'épouserai,» etc. ; la cour condamne le défendeur à payer deux mille piastres fortes à la demanderesse, ou bien à l'épouser dans le jour.
//Il se lève.//
;Figaro
//stupéfait//
:J'ai perdu.
;Antonio
//avec joie.//
:Superbe arrêt !
;Figaro
:En quoi superbe ?
;Antonio
:En ce que tu ne seras plus mon neveu.
:Grand merci, monseigneur !
;L'Huissier
//glapissant.//
:Passez, messieurs.
//Le peuple sort.//
![[►|III-Scène 16 • LE COMTE, MARCELINE, BARTHOLO, FIGARO, BRID'OISON.]]
![[◄|III-Scène 15 Le COMTE BRI,D'OISON, le greffier, MARCELINE, BARTHOLO, FIGARO et ANTONIO, les valets du château, les paysans et paysannes en habits de fête]]
//LE COMTE va de côté et d'autre ; Marceline s'assied.//
;Marceline
:Ah ! je respire.
;Figaro
:Et moi, j'étouffe.
;Le Comte
//à part//
:Au moins je suis vengé, cela soulage.
;Figaro
//à part//
:… — //Au Comte qui sort.// Monseigneur, vous nous quittez ?
;Le Comte
:Tout est jugé.
;Figaro
//à Brid'oison//
:C'est ce gros enflé de conseiller…
;Brid'oison
:Moi, gros-os enflé !
;Figaro
:Sans doute. Et je ne l'épouserai pas : je suis gentilhomme une fois.
//Le Comte s'arrête.//
;Bartholo
:Vous l'épouserez.
;Figaro
:Sans l'aveu de mes nobles parents ?
;Bartholo
:Nommez-les, montrez-les.
;Figaro
:Qu'on me donne un peu de temps ; je suis bien près de les revoir : il y a quinze ans que je les cherche.
;Bartholo
:Le fat ! c'est quelque enfant trouvé !
;Figaro
:Enfant perdu, Monseigneur ; ou plutôt enfant volé.
;Le Comte…
:Volé, perdu, la preuve ? Il crierait qu'on lui fait injure !
;Figaro
:Monseigneur, quand les langes à dentelles, tapis brodés et joyaux d'or trouvés sur moi par les brigands n'indiqueraient pas ma haute naissance,
:la précaution qu'on avait prise de me faire des marques distinctives témoignerait assez combien j'étais un fils précieux :
:et cet hiéroglyphe à mon bras…
//Il veut se dépouiller le bras droit.//
;Marceline
//se levant vivement//
:Une spatule à ton bras droit ?
;Figaro
:D'où savez-vous que je dois l'avoir ?
;Marceline
:Dieux ! c'est lui !
;Figaro
:Oui, c'est moi.
;Bartholo
//à Marceline.//
:Et qui ? lui !
;Marceline
//vivement//
:C'est Emmanuel.
;Bartholo
//à Figaro.//
:Tu fus enlevé par des Bohémiens ?
;Figaro
//exalté//
:Tout près d'un château.
:Bon docteur si vous me rendez à ma noble famille,
:mettez un prix à ce service ;
:des monceaux d'or n'arrêteront pas mes illustres parents.
;Bartholo
//vivement//
:Voilà ta mère.
;Figaro
:… Nourrice ?
;Bartholo
:Ta propre mère.
;Le Comte
:Sa mère !
;Figaro
:Expliquez-vous.
;Marceline
//montrant Bartholo//
:Voilà ton père.
;Figaro
//désolé//
:O o oh ! aïe de moi !
;Marceline
:Est-ce que la nature ne te l'a pas dit mille fois ?
;Figaro
:Pas vraiment.
;Le Comte
//à part//
:Sa mère !
;Marceline
//s'échauffant par degrés//
:Je n'entends pas nier mes fautes, ce jour les a trop bien prouvées ! mais qu'il est dur de les expier après trente ans d'une vie modeste !
:J'étais née, moi, pour être sage,
:et je le suis devenue sitôt qu'on m'a permis d'user de ma raison.
:Mais dans l'âge des illusions, de l'inexpérience et des besoins,
:où les séducteurs nous assiègent,
:pendant que la misère nous poignarde,
:que peut opposer une enfant à tant d'ennemis rassemblés ?
:Tel nous juge ici sévèrement, qui, peut-être, en sa vie a perdu dix infortunées !
;Figaro
:Les plus coupables sont les moins généreux ;
:c'est la règle.
;Marceline
//vivement//
:Hommes plus qu'ingrats,
:qui flétrissez par le mépris les jouets de vos passions,
:vos victimes !
:c'est vous qu'il faut punir des erreurs de notre jeunesse ;
:vous et vos magistrats,
:si vains du droit de nous juger,
:et qui nous laissent enlever, par leur coupable négligence, tout honnête moyen de subsister.
:Est-il un seul état pour les malheureuses filles ?
:Elles avaient un droit naturel à toute la parure des femmes :
:on y laisse former mille ouvriers de l'autre sexe.
;Figaro
//en colère//
:Ils font broder jusqu'aux soldats !
;Marceline
//exaltée//
:Dans les rangs même plus élevés, les femmes n'obtiennent de vous qu'une considération dérisoire ;
:leurrées de respects apparents,
:dans une servitude réelle ;
:traitées en mineures pour nos biens, punies en majeures pour nos fautes !
:Ah !
:sous tous les aspects, votre conduite avec nous fait horreur ou
:pitié !
;Figaro
:Elle a raison !
;Le Comte
//à part//
:Que trop raison !
;Brid'oison
:Elle a, mon-on Dieu, raison.
;Marceline
:Mais que nous font, mon fils, les refus d'un homme injuste ?
:Ne regarde pas d'où tu viens, vois où tu vas ;
:cela seul importe à chacun.
:Dans quelques mois ta fiancée ne dépendra plus que d'elle-même ;
:elle t'acceptera, j'en réponds.
:Vis entre une épouse,
:une mère tendre
:qui te chériront à qui mieux mieux.
:Sois indulgent pour elles,
:heureux pour toi, mon fils ;
:gai, libre et bon pour tout le monde ;
:il ne manquera rien à ta mère.
;Figaro
:Tu parles d'or, maman, et je me tiens à ton avis.
:Qu'on est sot, en effet !
:Pourquoi me tourmenter et passer ainsi la vie à chamailler ! . . .
;Le Comte
//à part//
:Sot événement qui me dérange !
;Brid'oison
//à Figaro//
:Et la noblesse, et le château ? Vous impo-osez à la justice ?
;Figaro
:Elle allait me faire faire une belle sottise, la justice !
:après que j'ai manqué, pour ces maudits cent écus, d'assommer vingt fois monsieur, qui se trouve aujourd'hui mon père !
:Mais puisque le ciel sauve ma vertu de ces dangers, mon père, agréez mes excuses…
:Et vous, ma mère, embrassez-moi… le plus maternellement que vous pourrez.
//Marceline lui saute au cou.//
!!III-Scène 17 • BARTHOLO, FIGARO, MARCELINE, @Brid'oison,SUZANNE, ANTONIO, LE COMTE
//Suzanne accoure, une bourse à la main.//
;Suzanne
:Monseigneur, arrêtez ! qu'on ne les marie pas : je viens payer madame avec la dot que ma maîtresse me donne.
;Le Comte
//à part//
:Rosine ! Au diable ! Il semble que tout conspire…
//Il sort.//
![[►|III-Scène 18 • BARTHOLO, ANTONIO, SUZANNE, FIGARO, MARCELINE, BRID'OISON]]
![[◄|III-Scène 16 • LE COMTE, MARCELINE, BARTHOLO, FIGARO, BRID'OISON.]]
;Antonio
//voyant Figaro embrasser sa mère, dit à Suzanne.//
:Ah ! oui, payer ! Tiens, tiens.
;Suzanne
//se retourne//
:J'en vois assez : sortons, ma tante.
;Figaro
//l'arrêtant//
:Non, s'il vous plaît. Que vois-tu donc ?
;Suzanne
:Ma bêtise et ta lâcheté.
;Figaro
:Pas plus de l'une que de l'autre.
;Suzanne
//en colère//
:Et que tu l'épouses à gré, puisque tu la caresses.
;Figaro
//gaiement//
:Je la caresse, mais je ne l'épouse pas.
//Suzanne veut sortir, Figaro la retient.//
;Suzanne
//lui donne un soufflet//
:Vous êtes bien insolent d'oser me retenir !
;Figaro
//à la compagnie//
:C'est-il ça de l'amour !
:Avant de nous quitter, je t'en supplie, envisage bien cette chère femme-là.
;Suzanne
:Je la regarde.
;Figaro
:Et tu la trouves ?…
;Suzanne
:Affreuse.
;Figaro
:Et vive la jalousie ! elle ne vous marchande pas.
;Marceline
//les bras ouverts//
:Embrasse ta mère, ma jolie Suzannette.
:Le méchant qui te tourmente est mon fils.
;Suzanne
//court à elle//
:Vous sa mère !
//Elles restent dans les bras l'une de l'autre.//
;Antonio
:C'est donc de tout à l'heure ?
;Figaro
:… Que je le sais.
;Marceline
//exaltée//
:Non, mon cœur entraîné vers lui ne se trompait que de motif ; c'était le sang qui me parlait.
;Figaro
:Et moi le bon sens, ma mère, qui me servait d'instinct quand je vous refusais ; car j'étais loin de vous haïr, témoin l'argent que j'osais vous emprunter…
;Marceline
//lui remet un papier.//
:Il est à toi : reprends ton billet, c'est ta dot.
;Suzanne
//lui jette la bourse.//
:Prends encore celle-ci.
;Figaro
:Grand merci.
;Marceline
//exaltée//
:Fille assez malheureuse, j'allais devenir la plus misérable des femmes, et je suis la plus fortunée des mères !
:Embrassez-moi, mes deux enfants ;
:j'unis dans vous toutes mes tendresses.
:Heureuse autant que je puis l'être,
:ah ! mes enfants, combien je vais aimer !
;Figaro
//attendri, avec vivacité//
:Arrête donc, chère mère ! arrête donc !
:voudrais-tu me voir fondre en larmes ?
:Elles sont de joie, au moins.
:Mais quelle stupidité ! j'ai manqué d'en être honteux : je les sentais couler entre mes doigts : regarde ;
//Il montre ses doigts écartés//
:et je les retenais bêtement !
:Va te promener, la honte !
:je veux rire et pleurer en même temps ;
:on ne sent pas deux fois ce que j'éprouve.
//Il embrasse sa mère d'un côté, Suzanne de l'autre.//
;Marceline
:Ô mon ami !
;Suzanne
:Mon cher ami !
;Brid'oison
//s'essuyant les yeux d'un mouchoir//
:Et bien ! moi, je suis donc bê-ête aussi !
;Figaro
//exalté//
:Chagrin, c'est maintenant que je puis te défier !
:Atteins-moi, si tu l'oses, entre ces deux femmes chéries. !
//Il sort.//
![[►|IV-Scène 1 • FIGARO, SUZANNE.]]
![[◄|II-Scènes 24 et 25• SUZANNE, LA COMTESSE.]]
;Le Comte
:— Ce billet . . . qui m'avertit d'une entreprise sur la comtesse ; la camériste enfermée quand j'arrive ; la maîtresse affectée d'une terreur fausse ou vraie ; un homme qui saute par la fenêtre, et l'autre après qui avoue… ou qui prétend que c'est lui…
:Le fil m'échappe. Il y a là-dedans une obscurité…
:Des libertés chez mes vassaux, qu'importe à gens de cette étoffe ?
:Mais la comtesse ! si quelque insolent attentait…
:Où m'égaré-je ?
:En vérité, quand la tête se monte, l'imagination la mieux réglée devient folle comme un rêve !
:— Elle s'amusait ; ces ris étouffés, cette joie mal éteinte !
:— Elle se respecte ; et mon honneur… où diable on l'a placé !
:De l'autre part, où suis-je ?
:Cette friponne de Suzanne a-t-elle trahi mon secret ?… Comme il n'est pas encore le sien !…
:Qui donc m'enchaîne à cette fantaisie ? j'ai voulu vingt fois y renoncer
:… Étrange effet de l'irrésolution ! si je la voulais sans débat, je la désirerais mille fois moins.
:— Ce Figaro se fait bien attendre !
:Il faut le sonder adroitement,
//Figaro paraît dans le fond, il s'arrête//
:et tâcher, dans la conversation que je vais avoir avec lui, de démêler d'une manière détournée s'il est instruit ou non de mon amour pour Suzanne.
![[►|III-Scène 5 • LE COMTE, FIGARO.]]
![[◄|III-Scène 4 • LE COMTE, seul, marche en rêvant.]]
;Figaro
//à part//
:Nous y voilà.
;Le Comte
:… S'il en sait par elle un seul mot…
;Figaro
//à part//
:Je m'en suis douté.
;Le Comte
:… Je lui fais épouser cette vieille Marceline
:. . .
:… Et voyons ce que nous ferons de la jeune Suzanne
;Figaro
//à part//
:Ah ! ma femme, s'il vous plaît.
;Le Comte
//se retourne//
:Hein ? quoi ? qu'est-ce que c'est ?
;Figaro
//s'avance//
:Moi, qui me rends à vos ordres.
;Le Comte
:Et pourquoi ces mots ?…
;Figaro
:Je n'ai rien dit.
;Le Comte
//répète//
:"Ma femme, s'il vous plaît"?
;Figaro
:C'est… la fin d'une réponse que je faisais :
:Allez le dire à ma femme, s'il vous plaît.
;Le Comte
//se promène//
:Sa femme !…
:Je voudrais bien savoir quelle affaire peut arrêter monsieur, quand je le fais appeler ?
;Figaro
//feignant d'assurer son habillement//
:Je m'étais sali sur ces couches en tombant ;
:je me changeais.
;Le Comte
:Faut-il une heure ?
;Figaro
:Il faut le temps.
;Le Comte
:Les domestiques ici… sont plus longs à s'habiller que les maîtres !
;Figaro
:C'est qu'ils n'ont point de valets pour les y aider.
;Le Comte
:…Je n'ai pas trop compris ce qui vous avait forcé tantôt de courir un danger inutile, en vous jetant…
;Figaro
:Un danger ! on dirait que je me suis engouffré tout vivant…
;Le Comte
:Essayez de me donner le change en feignant de le prendre, insidieux valet ! Vous entendez fort bien que ce n'est pas le danger qui m'inquiète, mais le motif.
;Figaro
:Sur un faux avis, vous arrivez furieux, renversant tout, comme le torrent de la Morena ; vous cherchez un homme, il vous le faut, ou vous allez briser les portes, enfoncer les cloisons ! Je me trouve là par hasard : qui sait, dans votre emportement si…
;Le Comte
//interrompant//
:Vous pouviez fuir par l'escalier.
;Figaro
:Et vous, me prendre au corridor.
;Le Comte
//en colère//
:Au corridor !
//À part.// Je m'emporte, et nuis à ce que je veux savoir.
;Figaro
//à part//
:Voyons-le venir, et jouons serré.
;Le Comte
//radouci//
:Ce n'est pas ce que je voulais dire ; laissons cela. J'avais… oui, j'avais quelque envie de t'emmener à Londres, courrier de dépêches… mais, toutes réflexions faites…
;Figaro
:Monseigneur a changé d'avis ?
;Le Comte
:Premièrement, tu ne sais pas l'anglais.
;Figaro
:Je sais God-dam.
;Le Comte
:Je n'entends pas.
;Figaro
:Je dis que je sais God-dam.
;Le Comte
:Eh bien ?
;Figaro
:Diable ! c'est une belle langue que l'anglais, il en faut peu pour aller loin.
:Avec God-dam, en Angleterre, on ne manque de rien nulle part.
:Voulez-vous tâter d'un bon poulet gras ?
:entrez dans une taverne, et faites seulement ce geste au garçon. //Il tourne la broche.//
:God-dam !
:on vous apporte un pied de bœuf salé, sans pain.
:C'est admirable !
:Aimez-vous à boire un coup d'excellent bourgogne ou de clairet ? rien que celui-ci.
//Il débouche une bouteille.// God-dam !
:on vous sert un pot de bière, en bel étain, la mousse aux bords. Quelle satisfaction !
:Rencontrez-vous une de ces jolies personnes qui vont trottant menu,
:les yeux baissés,
:coudes en arrière,
:et tortillant un peu des hanches ?
:mettez mignardement tous les doigts unis sur la bouche.
:Ah !
:God-dam !
:elle vous sangle un soufflet de crocheteur : preuve qu'elle entend.
:Les Anglais, à la vérité, ajoutent par-ci, par-là, quelques autres mots en conversant ;
:mais il est bien aisé de voir que God-dam est le fond de la langue ;
:et si monseigneur n'a pas d'autre motif de me laisser en Espagne…
;Le Comte
//à part//
:Il veut venir à Londres ; elle n'a pas parlé.
;Figaro
//à part//
:Il croit que je ne sais rien ; travaillons-le un peu dans son genre.
;Le Comte
:Quel motif avait la comtesse pour me jouer un pareil tour ?
;Figaro
:Ma foi, monseigneur, vous le savez mieux que moi.
;Le Comte
:Je la préviens sur tout, et la comble de présents.
;Figaro
:Vous lui donnez, mais vous êtes infidèle.
:Sait-on gré du superflu à qui nous prive du nécessaire ?
;Le Comte
:… Autrefois tu me disais tout.
;Figaro
:Et maintenant je ne vous cache rien.
;Le Comte
:Combien la comtesse t'a-t-elle donné pour cette belle association ?
;Figaro
:Combien me donnâtes-vous à Séville, pour la tirer des mains du docteur Bartholo, votre rival ?
:Tenez, monseigneur, n'humilions pas l'homme qui nous sert bien, crainte d'en faire un mauvais valet.
;Le Comte
:Pourquoi faut-il qu'il y ait toujours du louche en ce que tu fais ?
;Figaro
:C'est qu'on en voit partout quand on cherche des torts.
;Le Comte
:Une réputation détestable !
;Figaro
:Et si je vaux mieux qu'elle ?
:Y a-t-il beaucoup de seigneurs qui puissent en dire autant ?
;Le Comte
:Cent fois je t'ai vu marcher à la fortune, et jamais aller droit.
;Figaro
:Comment voulez-vous ?
:La foule est là : chacun veut courir, on se presse, on pousse, on coudoie, on renverse ; arrive qui peut, le reste est écrasé. Aussi c'est fait ; pour moi, j'y renonce.
;Le Comte
:À la fortune ? //À part.// Voici du neuf.
;Figaro
//À part.// À mon tour maintenant.
//Haut.// Votre Excellence m'a gratifié de la conciergerie du château ;
:c'est un fort joli sort :
:à la vérité, je ne serai pas le courrier étrenné des nouvelles intéressantes ;
:mais, en revanche, heureux avec ma femme au fond de l'Andalousie…
;Le Comte
:Qui t'empêcherait de l'emmener à Londres ?
;Figaro
:Il faudrait la quitter si souvent, que j'aurais bientôt du mariage par-dessus la tête.
;Le Comte
:Avec du caractère et de l'esprit, tu pourrais un jour t'avancer dans les bureaux.
;Figaro
:De l'esprit pour s'avancer ? Monseigneur se rit du mien.
:Médiocre et rampant, et l'on arrive à tout.
;Le Comte
:…Il ne faudrait qu'étudier un peu sous moi la politique.
;Figaro
:Je la sais.
;Le Comte
:Comme l'anglais : le fond de la langue !
;Figaro
:Oui, s'il y avait ici de quoi se vanter.
:Mais feindre d'ignorer ce qu'on sait,
:de savoir tout ce qu'on ignore ;
:d'entendre ce qu'on ne comprend pas,
:de ne point ouïr ce qu'on entend ;
:surtout de pouvoir au delà de ses forces ;
:avoir souvent pour grand secret de cacher qu'il n'y en a point ;
:s'enfermer pour tailler des plumes,
:et paraître profond quand on n'est, comme on dit, que vide et creux ;
:jouer bien ou mal un personnage ;
:répandre des espions
:et pensionner des traîtres ;
:amollir des cachets,
:intercepter des lettres,
:et tâcher d'ennoblir la pauvreté des moyens par l'importance des objets :
:voilà toute la politique, ou je meure !
;Le Comte
:Eh ! c'est l'intrigue que tu définis !
;Figaro
:La politique, l'intrigue, volontiers ; mais, comme je les crois un peu germaines, en fasse qui voudra !
:J'aime mieux ma mie, oh gai ! comme dit la chanson du bon roi.
;Le Comte
//à part//
:Il veut rester. J'entends… Suzanne m'a trahi.
;Figaro
//à part//
:Je l'enfile, et le paye en sa monnaie.
;Le Comte
:Ainsi tu espères gagner ton procès contre Marceline ?
;Figaro
:Me feriez-vous un crime de refuser une vieille fille, quand Votre Excellence se permet de nous souffler toutes les jeunes ?
;Le Comte
//raillant//
:Au tribunal le magistrat s'oublie, et ne voit plus que l'ordonnance.
;Figaro
:Indulgente aux grands, dure aux petits…
;Le Comte
:Crois-tu donc que je plaisante ?
;Figaro
:Eh ! qui le sait, monseigneur ?
:Tempo è galant'uomo, dit l'Italien ;
:le temps dit toujours la vérité :
:c'est lui qui m'apprendra qui me veut du mal ou du bien.
;Le Comte
//à part//
:Je vois qu'on lui a tout dit.
:Il épousera la duègne.
;Figaro
//à part//
:Il a joué au fin avec moi,
:qu'a-t-il appris ?
![[►|III-Scène 6 et 7 • Le COMTE, un laquais, FIGARO.]]
![[◄|III-Scène 5 • LE COMTE, FIGARO.]]
;Le laquais
//annonçant.//
:Dom Gusman Brid'oison.
;Le Comte
:Brid'oison ?
;Figaro
:Eh ! sans doute. C'est le juge ordinaire, le lieutenant du siège, votre prud'homme.
;Le Comte
:Qu'il attende.
`→ Jardin` // Le laquais sort, Figaro aussi.//
![[►|III-Scène 8 • LE COMTE, seul.]]
![[◄|III-Scène 6 et 7 • Le COMTE, un laquais, FIGARO.]]
;Le Comte
:Le maraud m'embarrassait !
:En disputant, il prend son avantage, il vous serre, vous enveloppe…
:Ah ! friponne et fripon, vous vous entendez pour me jouer :
:Soyez amis, soyez amants, soyez ce qu'il vous plaira, j'y consens ; mais parbleu, pour époux…
![[►|III-Scènes 9 et 10 • SUZANNE, LE COMTE.]]
![[◄|III-Scène 8 • LE COMTE, seul.]]
;Suzanne
;//essoufflée.//
:Monseigneur…
:pardon, monseigneur.
;Le Comte
;//avec humeur//
:Qu'est-ce qu'il y a,
:mademoiselle ?
;Suzanne
:Vous êtes en colère ?
;Le Comte
:Vous voulez quelque chose apparemment ?
;Suzanne
:C'est que ma maîtresse a ses vapeurs.
:J'accourais vous prier de nous prêter votre flacon d'éther.
:Je l'aurais rapporté dans l'instant.
;Le Comte
//le lui donne//
:Non, non, gardez-le pour vous-même. Il ne tardera pas à vous être utile.
;Suzanne
:Est-ce que les femmes de mon état ont des vapeurs, donc ?
:C'est un mal de condition,
:qu'on ne prend que dans les boudoirs.
;Le Comte
:Une fiancée bien éprise, et qui perd son futur…
;Suzanne
:En payant Marceline avec la dot que vous m'avez promise…
;Le Comte
:Que je vous ai promise, moi ?
;Suzanne
//baissant les yeux//
:Monseigneur, j'avais cru l'entendre.
;Le Comte
:Oui, si vous consentiez à m'entendre vous-même.
;Suzanne
//les yeux baissés//
:Et n'est-ce pas mon devoir d'écouter Son Excellence ?
;Le Comte
:Pourquoi donc, cruelle fille, ne me l'avoir pas dit plus tôt ?
;Suzanne
:Est-il jamais trop tard pour dire la vérité ?
;Le Comte
:Tu te rendrais sur la brune au jardin ?
;Suzanne
:Est-ce que je ne m'y promène pas tous les soirs ?
;Le Comte
:Tu m'as traité ce matin si durement !
:. . . Cependant il y a un certain Figaro à qui je crains bien que vous n'ayez tout dit.
;Suzanne
:Dame ! oui, je lui dis tout… hors ce qu'il faut lui taire.
;Le Comte
//en riant//
:Ah ! charmante !
:Et tu me le promets ?
:Si tu manquais à ta parole, entendons-nous, mon cœur : point de rendez-vous, point de dot, point de mariage.
;Suzanne
//faisant la révérence//
:Mais aussi :
:point de mariage, point de droit du seigneur,
:monseigneur.
;Le Comte
:Où prend-elle ce qu'elle dit ?
:D'honneur, j'en raffolerai !
:Mais ta maîtresse attend le flacon…
;Suzanne
//riant et rendant le flacon//
:Aurais-je pu vous parler sans un prétexte ?
;Le Comte
//veut l'embrasser//
:Délicieuse créature !
//Suzanne s'échappe.//
:Voilà du monde.
;Le Comte
//à part//
:Elle est à moi.
//Il s'enfuit.//
;Suzanne
:Allons vite rendre compte à madame.
!!III-Scène 10 • SUZANNE, FIGARO.
;Figaro
:Suzanne, Suzanne ! où cours-tu donc si vite en quittant monseigneur ?
;Suzanne
:Plaide à présent, si tu le veux ; tu viens de gagner ton procès.
//Elle s'enfuit.//
;Figaro
//la suit//
:Ah ! mais, dis donc…
![[►|III-Scène 11 • LE COMTE rentre seul.]]
Pour qu'il puisse habiter chez elle :
:→ La norme, à Venise, au dix~huitième siècle, était que le jeune couple habite chez les parents du mari.
Le texte dit seulement :
<<<
« //Marg//. Oui, siora. //Barb//. Il sera allé chez son parrain. ››
<<<
Mais plus tard, à la fin de la scène II,12, quand elle est bien obligée de commencer à douter de son fils, Barbara dit en aparté :
<<<
« Et Margarita qui n°est pas là. Sûr, sûr, elle sait quelque chose. Cette Rue de l”Oie ne me dit rien qui vaille. ››
<<<
Or personne, jusque là, ne lui a parlé de la Rue de l”Oie.
Il m'a donc semblé nécessaire de compléter ici le texte.
```
À terme nous aboutirons sans doute à un schéma de chaque scène, ou séquence. Pour commencer il faut un système simple et économique pour fixer les placements et déplacements, qui viendra s'ajouter aux indications de jeu.
```
Je propose de coder ainsi le plan de scène (sachant que l'espace M2 sera plus grand que les autres) :
| ''EJ''<br>Entrée Jardin | ''J3''<br>Fond Jardin | ''M3''<br>Fond Milieu | ''C3''<br>Fond Cour | ''EC''<br>Entrée cour |
|~| ''J2''<br>Milieu Jardin | ''M2''<br>Milieu de scène | ''C2''<br>Milieu Cour |~|
|~| ''J1''<br>Avant-scène Jardin | ''M1''<br>Milieu avant-scène | ''C1''<br>Avant-scène Cour |~|
<<<
Selon les lieux le plan pourra être inversé droite-gauche (l'une des entrées est condamnée ou n'est pas praticable, sauf pour un effacement temporaire)
<<<
► Au-début de chaque scène on indiquera par ces codes l'emplacement approximatif des meubles et accessoires.
:://Par exemple// : ''''C3'''' : Siège, desserte et ouvrage Giacomina
► En cours de scène, a priori à chaque rupture de jeu dans une réplique, ces codes indiquerons le nouveau placement pour la suite d réplique, ou le déplacement en cours de réplique.
::Par exemple : "... ''`C1`'' La vieille folle ! " (si Lodovica se poste en milieu d'avant-scène pour lâcher ce commentaire au public).
:://Par exemple// : "..." ''`Table`'' "Vous en voulez combien ?" (si Rocco va à sa table __avant__ de poser sa question)
:://Par exemple// : Eh là, ''`→Table`'' vous les avez apportées, ces indiennes ? " (si Barbara pose sa question __en allant vers__ la table, et que la position de la table a déjà été indiquée).
://Exemple détaillé à l'extrême// :
''`→M1`'' Il faudrait que je sois partout,
que je m'occupe de tout,
que j'aie cent mains,
cent têtes ;
''`→J1`'' y a rien à faire, rien n'est jamais fait,
''`J1`''
personne ne fait rien. ''`→EJ`''
<iframe src="https://calendar.google.com/calendar/embed?src=1efu1c9h872ca802daff8jq40c%40group.calendar.google.com&ctz=Europe%2FParis" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
```
Voilà les scènes pour lesquelles nous pouvons faire des italiennes texte su.
→ Indiquez moi celles que je devrais (provisoirement !) retirer,
→ et celles qu'on pourrait maintenant rajouter :)
```
!!► [[Bien tirer parti de nos italiennes de La Bonne Mère|Nos italiennes de La Bonne Mère]]
!!!Italiennes
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!!ITALIENNES
| Nadine Jacques|[[I,4 - Nicoletto et Margarita|La Bonne Mère I,4 - Nicoletto et Margarita.]] |
|Chantal Michèle|[[I,8 BARBARA puis AGNESE|La Bonne Mère I,8 BARBARA puis AGNESE]] |
|Claudine Mireille|[[I,9 - LODOVICA et DANIELA|La Bonne Mère I,9 - LODOVICA et DANIELA.]]|
|Jacques `Claudine Mireille`|[[I,10 - Nicoletto et les mêmes|La Bonne Mère I,10 Nicoletto et les mêmes.]]|
| Brigitte `Lee ?`|[[II,14 - Lunardo et Giacomina|La Bonne Mère II,14 - Lunardo et Giacomina.]]|
![[◄|III-Scène 18 • BARTHOLO, ANTONIO, SUZANNE, FIGARO, MARCELINE, BRID'OISON]]
;Figaro
//la tenant à bras-le-corps//
:Eh bien ! amour, es-tu contente ?
:il n'y a que monseigneur qui rage,
:Ris donc un peu de ce bon résultat.
;Suzanne.
:As-tu rien vu de plus étrange ?
;Figaro
:Ou plutôt d'aussi gai. Nous ne voulions qu'une dot arrachée à l'Excellence ; en voilà deux dans nos mains, qui ne sortent pas des siennes. Une rivale acharnée te poursuivait ; j'étais tourmenté par une furie ! tout cela s'est changé, pour nous, dans la plus bonne des mères. Hier, j'étais comme seul au monde, et voilà que j'ai tous mes parents ; pas si magnifiques, il est vrai, que je me les étais galonnés, mais assez bien pour nous, qui n'avons pas la vanité des riches.
;Suzanne
:Aucune des choses que tu avais disposées, que nous attendions, mon ami, n'est pourtant arrivée !
;Figaro
:Le hasard a mieux fait que nous tous, ma petite. Ainsi va le monde ; on travaille, on projette, on arrange d'un côté ; la fortune accomplit de l'autre : … tous sont le jouet de ses caprices. Au moins nous a-t-elle laissé avec l'Amour…
//Il la reprend tendrement à bras-le-corps.//
;S
:Ah ! c'est le seul qui m'intéresse !
;Figaro
:Permets donc que, prenant l'emploi de la Folie, je sois le bon chien qui le mène à ta jolie mignonne porte ; et nous voilà logés pour la vie.
;Suzanne
//riant.//
:L'Amour et toi ?
;Figaro
:Moi et l'Amour.
;Suzanne
:Et vous ne chercherez pas d'autre gîte ?
;Figaro
:Si tu m'y prends, je veux bien que mille millions de galants…
;Suzanne
:Tu vas exagérer : dis ta bonne vérité.
;Figaro
:Ma vérité la plus vraie !
:…
;Suzanne
:Je vais sur le champ répandre la nouvelle : enfin nous allons fêter notre mariage ! Attends là !
//Elle sort en courant, toute joyeuse ! . Il veut l'embrasser.//
![[►|Monologue de Figaro]]
![[◄|Monologue de Figaro]]
;Figaro
:Ah, Suzon, Suzon, que tu me rends heureux !
;Suzanne
:J'aime ta joie, parce qu'elle est folle !
;Figaro
:Tu m'aimeras un peu ?
;Suzanne
:Beaucoup.
;Figaro
:Ce n'est guère.
;Suzanne
:Et comment ?
;Figaro
:En fait d'amour, vois-tu, trop n'est pas même assez.
!!IV-Scène II FIGARO, SUZANNE, LA COMTESSE.
//La Comtesse entre, avec le Comte maussade, suivis de la bande réjouie des villageois et autres personnages, venus pour la fête.//
//La Comtesse s'avance, tout sourire.//
;La Comtesse
:Ah ! j'avais raison de le dire : en quelque endroit qu'ils soient, croyez qu'ils sont ensemble.
:Allons donc, Figaro, c'est voler l'avenir, le mariage et vous-même, que d'usurper un tête-à-tête. On vous attend, on s'impatiente.
;Figaro
:Il est vrai, madame, je m'oublie.
:Je vais leur montrer mon excuse.
//Il se tourne avec Suzanne vers tous ceux qui sont au fond, la leur désigne, et tous deux, main dans la main, les saluent.//
//Puis ils se retournent et s'avancent vers le public, rejoints par la Comtesse et le Comte, et saluent//
//Enfin tous les autres personnages s'avancent sur une même ligne, et saluent.//
!''R I D E A U sur Figaro 2019''
![[◄◄|Figaro 2019]]
!!''COACHER''
Certains n'aiment pas intervenir dans les scènes pendant que les comédiens jouent. Ils préfèrent souvent laisser la scène aller à son terme et ne donner leurs impressions qu'ensuite.
Débriefer après une scène est utile, et c'est une bonne pratique (tant que cela reste concis et ne devient pas un débat qui dure plus longtemps que la scène), mais diriger pendant la scène peut être encore plus utile.
En intervenant pendant une scène, vous êtes en mesure de rectifier immédiatement lejeu des comédiens, ce qui leur permet de vivre la scène différemment. Le fait qu'ils ressentent la différence au lieu d'en parler présente un immense bénéfice pour eux. Sentir la différence quand quelque chose est rectifié est un moyen d'apprendre très efficace. Une expérience est toujours plus bénéfique que des explications.
La question est: __''comment ?''__
Le coach doit donner des indications claires, concises, efficaces. Toujours donner aux comédiens quelque chose à faire, et pas seulement leur dire ce qu'il ne faut pas faire. Cela devrait être ça, « diriger ›› des comédiens... ajuster leur jeu pour les remettre sur la bonne voie.
La pratique suivante est parfaite pour apprendre à (se) diriger.
<<<
LES MAINS EN L'AÍR
Deux comédiens jouent une scène.
Dès qu'un spectateur se déconnecte, s'ennuie ou sent l'énergie de la scène retomber, il ou elle lève simplement une main en l'air. Sa main reste en |'air, à moins qu'il se passe sur scène quelque chose qui l'intéresse de nouveau à l'histoire, auquel cas il ou elle rabaisse sa main. Si la majorité des spectateurs lèvent leur main :
* vous figez la scène en cours
* Vous demandez alors au public s'ils savent à quel moment les choses ont dérapé
* et s'ils sentent quel était le problème.
* Plus important encore, demandez au public ce que les comédiens devraient modifier pour résoudre le problème.
La suggestion du public est prise en compte et immédiatement appliquée par les comédiens qui continuent alors la scène. Le public peut figer et ajuster les comédiens aussi souvent qu'ils le souhaitent, mais seulement quand suffisamment de mains sont levées.
<<<
Les spectateurs regardent la scène comme s'ils étaient des gens normaux, et non des comédiens. S'ils se mettent dans cet état d'esprit, il leur sera assez facile de mettre le doigt sur les moments où ils se déconnectent et commencent a s'ennuyer. C'est votre outil le plus puissant pour apprendre à diriger et améliorer votre travail.
!!!Peter Brook a dit un jour:
!!!« L'outil le plus fiable d'un metteur en scène est peut-être sa capacité à s'ennuyer. ››
Tout ce que vous avez besoin de savoir c'est << est-ce que cette scène m'intéresse ou non ››. Cet << ennui ›› prendra plus probablement la forme d'une légère sensation de se déconnecter des comédiens que d'un extrême désintérêt.
Mais vous devez identifier le moment où vous vous déconnectez et où l'énergie de la scène retombe. Si vous l'identifiez, vous pouvez y remédier facilement. Si vous le laissez passer, alors le vrai ennui et le désintérêt peuvent s'installer, et il devient difficile de savoir d'où le problème est venu.
Il est bon que les comédiens commencent à prendre conscience du moment où, en tant que spectateurs, ils se déconnectent et qu'ils lèvent alors immédiatement la main. Gigoter, regarder sa montre, s'affaler sur sa chaise ou réaliser tout à coup que vous êtes en train de penser à autre chose sont tous des signes que vous vous êtes débranchés de la scène.
!!!!Au départ, les spectateurs n'ont pas besoin de savoir pourquoi ils se sont déconnectés.
Au début, le spectateur n'aura peut-être pas d'idée précise de ce qu'il faut modifier quand ils lève la main pour figer une scène. Dans ce cas, demandez à quel moment il pense que les choses ont dérapé. Le problème peut avoir commencé quinze, trente ou soixante secondes plus tôt dans la scène. Une fois le moment identifié, il devient plus facile de faire des suggestions quant à la façon de le modifier.
Quand les spectateurs apprennent à travailler de cette façon ils peuvent ne pas être immédiatement très clairs et ne pas savoir à quel moment précis les problèmes ont commencé. Dans ce cas, encouragez-les à faire simplement un choix et à travailler à partir de ce choix.
!!!Faire un choix et tester des idées dans la réalité est toujours plus bénéfique que de discuter et débattre du choix à faire.
Progressivement, les spectateurs apprendront à identifier les moments d'une impro où une indication est nécessaire. Identifier les moments où une scène se perd est la première chose à apprendre, ensuite vous devez les faire travailler sur les indications à donner pour remédier àla situation.
Les spectateurs peuvent parfois suggérer un ajustement qui n'aide pas du tout, voire fait empirer les choses. Ce n'est pas grave, et tout le monde doit comprendre que personne (comédiens ou spectateurs) n'a de solution parfaite. La même logique s'applique lorsque plus tard vous demanderez aux comédiens de prendre individuellement la responsabilité de diriger des scènes.
Les comédiens doivent autoriser les metteurs en scène à se tromper, sinon personne n'osera jamais rien faire. Au bout du compte, si une direction ne fonctionne pas, tout ce que vous avez à faire c'est revenir au moment où un problème est apparu, et essayer autre chose. La technique par essai et erreur est la meilleure façon d'apprendre.
!!!Les indications doivent être rapides, et efficaces
Ne laissez PAS un débat touchant les problèmes et les possibilités d'une scène commencer. Faites un choix et essayez-le. Utilisez ''//Les mains en l'air//'' pour entraîner vos comédiens-spectateurs à donner des indications efficaces qui utilisent le moins de mots possibles. Au lieu qu'un spectateur dise «Je veux voir les personnages se rapprocher et se prendre dans les bras ››, dites simplement << Prenez-vous dans les bras ›>. Au lieu de dire « Vous n'êtes pas connectés, prenez le temps d'être attentifs l'un à l'autre ››, dites « Regardez-vous dans les yeux ››.
Utilisez les moments des Mains en l'air pendant lesquels la scène est figée pour trouver la façon la plus efficace d'exprimer ce que le public veut modifier. Ce sera essentiel lorsque, lors d'évolutions ultérieures de l'exercice, un ou plusieurs comédiens prendront en charge une scène; plus leurs indications seront rapides, moins ils perturberont l'énergie de la scène. S'ils donnent des indications trop longues, ils créeront une rupture dans l'énergie de la scène et les comédiens auront constamment à redémarrer leur performance.
!!!Une bonne indication remet instantanément les comédiens sur la bonne voie, sans interrompre leur scène.
Les comédiens doivent appliquer les indications immédiatement. Si un comédien diffère l'exécution de l'indication, le moment est passé, et l'indication perd de son impact.
Souvent, diriger revient à donner aux comédiens la permission de faire quelque chose auquel ils sont peut-être en train de résister. Cette résistance peut venir de toutes sortes de sources, généralement de la peur du changement, de l'envie d'etre poli avec son partenaire, ou de la pression de trouver une « bonne ›› idée.
Cela peut aussi être simplement que les comédiens ne sont pas totalement conscients de ce qui se passe sur scène, par manque d'attention.
Souvent, le public peut percevoir qu'une action devrait être entreprise, ou une réplique dite autrement. Nous serons tous en train d'attendre, mais le comédien hésite, ou évite de le faire. Rien qu'en disant << Fais-le ›› vous pouvez donner aux comédiens l'autorisation de faire des choses qu'ils auraient sinon évitées ou manquées. Vous pouvez aussi leur permettre de revenir à des idées qu'ils ont laissées de côté, en les faisant répéter des effets intéressants ou en leur faisant remarquer des propositions physiques accroheuses.
Au fur et à mesure que vous progressez avec votre groupe, faites évoluer l'exercice, en faisant des comédiens les << metteurs en scène ››. Ces metteurs en scène ne doivent plus lever la main mais immédiatement donner aux comédiens une indication pour ajuster la scène.
''//Les mains en l'air//'' fonctionne parce qu'il est en réalité très facile pour le public de voir ce qui ne va pas dans une histoire. Les spectateurs voient tous les petits détails, perçoivent toutes les relations, et remarquent toutes les bascules possibles. Cette activité inconsciente ne leur demande aucun effort.
Néanmoins, lorsque vous demandez à un comédien de passer du public à la chaise du metteur en scène, il se passe quelque chose d'étrange. C'est comme si vous leur aviez retiré une partie du cerveau; tout à coup, ils ne voient plus aucun des détails qu'ils percevaient auparavant. Ils n'ont pourtant fait que bouger de quelques mètres et passer d'une chaise à une autre.
Ce blocage mental vient du fait que le comédien ressent la pression de la responsabilité de la scène. Comme le public ne ressent pas cette responsabilité, il suit l'histoire de manière très précise, et sait toujours quand elle fonctionne et ne fonctionne pas. Un bon metteur en scène regarde une scène comme la regarde un spectateur. Ce conseil ne s'applique pas qu'aux metteurs en scène. Je crois qu'un bon comédien est quelqu'un qui, tout en étant sur scène, voit tout ce qui se passe, exactement comme le public le voit.
Ce type de détachement exige une grande confiance en soi et un grand calme. Votre but est de voir ce qui se passe sur scène comme le voit le public; alors l'histoire semblera évidente. Elle est toujours claire pour le public, il n'y a pas de raison qu'elle ne puisse pas l'etre pour les comédiens.
Lorsque vous dirigez, vous devez moins vous préoccuper de raconter l'histoire, vque d'aider les comédiens à développer ce qu'ils ont déjà. Vous dirigez << la spontanéité juste ››, pas << l'intrigue ››.
Votre travail consiste à aider les comédiens à découvrir les enjeux relationnels de leurs personnages puis de les garder sur les rails en conservant et construisant sur ces enjeux.
Les bonnes indications sont celles qui ne donnent pas d'éléments de l'histoire aux comédiens, mais celles qui permettent aux comédiens de trouver leurs propres inspirations et de faire leurs propres choix. De bonnes indications laissent la créativité aux comédiens. Ils se sentent soutenus, et non manipulés.
''//Les mains en l'air//'' est utile pour apprendre à diriger, parce que tout le monde est impliqué dans le processus d'apprentissage. Les comédiens, comme les spectateurs, apprennent à identifier leurs instincts narratifs et assimilent des outils spécifiques qui permettent aux scènes de rester sur leurs rails.
Travailler avec ''//Les mains en l'air//'' rend conscients nos instincts inconscients. Comme dans n'importe quel processus d'apprentissage, une fois que les idées sont devenues conscientes, nous nous sentons bizarres et maladroits. Vous devez continuer à travailler jusqu'à ce que les idées redeviennent inconscientes. À ce moment-là, elles auront été assimilées et pourront refaire surface quand ce sera nécessaire, sans effort de votre part. Vos comédiens finiront par être capables d'utiliser les outils qu'ils ont appris dans n'importe quelle scène, qu'il y ait ou non un metteur en scène.
C'est votre but. Un bon improvisateur peut se diriger lui-même, en étant pendant une scène attentif à ses impulsions et en appliquant le bon outil pour rediriger immédiatement la performance.
Je pense que c'est signe de bonne santé qu'un groupe puisse jouer à ce jeu sans le transformer en débat. Il s'agit d'utiliser les compétences de tout le groupe et de trouver ensemble des solutions. Si un groupe peut régulièrement travailler de cette façon, le processus d'apprentissage en sera accéléré.
,,D'après Mark Jane, //Jeux et Enjeux, La boite à outil de l'improvisation théâtrale// Dixit Éditions (p.185 et sq),,
| ''Jacques Turbé''<br>//jacques.turbe@gmail.com//<br>'',,06 83 81 10 98,,''<br> |
La mort de Jean-Laurent Cochet a suscité la reprise de témoignages sur l'art du comédien, tel qu'il l'enseignait :
<<<
Jean-Laurent Cochet disait :
« Le talent, cela n’existe pas. Le théâtre, c’est un métier qui se travaille. Les dons, c’est parfois dangereux car un élève doué a tendance à ne pas travailler. »
«D’ailleurs, au bout de deux semaines, les paresseux s’en vont d’eux-mêmes, je n’ai même pas besoin de faire le tri.»
<<<
{{JLC-Luchini}}
{{JLC-Huppert}}
{{JLC-D'Aboville}}
; Antoine Schuurwegen ,,(présentateur belge),,
:«Il m'a appris à respirer et à penser. Un matin, il nous a expliqué que ce que nous apprenions auprès de lui nous servirait toute notre vie, peu importe le chemin que nous prendrions... Il avait raison...»
Choissez l'une des grandes répliques d'Elvire dans la [[scène I.3|Don Juan acte I sc 3 • Molière]].
Lisez-la avant l'atelier pour vous en imprégner.
__''Exercice d'assouplissement théâtral : ''__
<<<
Lisez la réplique en la détournant du contexte original, en adoptant (ou en combinant) pour le plaisir une (des) consigne(s) de jeu ci-après : __''ET SI...''__.
<<<
```
Vous vous interromprez quand il y aura trop de mains levées (si ça se produit) !
```
!!''ET SI''
;Juste avant d'entrer en scène, Elvire était :
:→ avide de retrouver sa tendresse pour Don Juan et balayer ses doutes ?
:ou
:→ anxieuse de voir comment DJ saurait se justifier des soupçons qui la taraude ?
:ou
:→ furieuse de sa trahison, venue pour rompre, lui dire son fait et jurer vengeance ?
:→ ou
: ...
;ET SI
;Cette scène avait été écrite par :
:→ Racine ?
:→ Corneille ?
:→ Beaumarchais ?
:→ Feydeau ?
:→ André Roussin ? ...
;OU SI Elvire était :
:→ Célimène ? Arsinoé ? La Comtesse ? Emma Bovary ? Gervaise ? ...
;ET SI vous étiez :
:→ Edwige Feuillère ?
:→ Delphine Seyrig ?
:→ Maria Casarès ?
:→ Alice Sapritch ?
:→ Jeanne Moreau ?
:→ Zabou Breitman ? ...
:::etc //(vous pouvez inventer d'autres hypothèses)//
<<<
|bluealtrows|k
| ''Participation à la réunion Jitsi'' |
| ''''__[[Participation vidéo|https://meet.jit.si/Plaisir_de_Dire]]__'''' En audio : ''01.84.88.64.78'', suivi de : ''735 859 842#'' |
<<<
;d'Aboville :
:Il nous faisait comprendre que l'art des comédiens était de faire oublier le texte et en extraire la vitalité première.
;Huppert :
:Poser les mots, rythmer, respirer les phrases, et chaque auteur devient limpide.
;Luchini :
:« Dans le cours de JeanLaurent Cochet, il fallait travailler le passage de texte, et pas la confidence personnelle.
:On devait d’abord apprendre à articuler pendant des heures.
:Cela ne suffit pas d’aimer et d’admirer Baudelaire ou Molière : il faut savoir les phraser. Comme un pianiste, avec ses gammes. »
Dans le théâtre de Goldoni, la plupart des répliques sont des "retours à la volée", réactions immédiates et spontannées à ce que vient de dire l'autre. Il s'ensuit un tourbillon incessant, qui tient réjoui le spectateur.
Chaque personnage, Barbara, mais pas seulement, a au cours de la pièce une poignée de longues répliques.
N'en faites surtout pas des tirades, à la française, qu'on débite glorieusement du début jusqu'à la fin pour cueillir l'admiration de tous.
Ici, on en voudrait au comédien qui casserait le rythme, évanouirait le naturel toujours rebondissant de la comédie italienne.
Pour garder le rythme et la vivacité endiablée, il faut désarticuler les textes plus longs, pour toujours rester un "mano en la mano" (zut, pas italienne cette expression !) entre le locuteur et tel protagoniste.
Comment ?
Par le mouvement, le jeu de scène, le suspens soudain, voire le gag, mais toujours en interaction avec la personne que l'on vise pour : la séduire, la moquer, la provoquer, la plaindre, la contester, la suspecter, l'admonester, l'embobiner ...
Pour le comédien l'ordre de travail est inverse de celui auquel nous habitue notre théâtre. Au lieu d'aller du texte aux personnages, nous irons des personages au texte :
→ au lieu d'apprendre le texte, d'en rendre sensible la structure, et de trouver comment bien le servir,
→ ici nous allons chercher les mobiles qu inspirent dans l'instant nos personages, puis en déduire les mouvements qui peuvent le mieux structurer la scène, et seulement une fois le ballet règlé, nous occupper d'en rythmer le texte.
```
► Comme vous le voyez, il faut une grande inventivité, et nous seront pas trop d'être tous ensemble à trouver des idées de jeu __en nous essayant en manège__ sur telle ou telle des longues répliques que j'ai réunies ici.
```
;[[•|Elvire : Ne soyez point surpris, Dom Juan, de me voir à cette heure]]DONE ELVIRE
:Ne soyez point surpris, Dom Juan, de me voir
::à cette heure
::et dans cet équipage.
:C’est un motif pressant qui m’oblige à cette visite, et ce que j’ai à vous dire ne veut point du tout de retardement.
::
:Je ne viens point ici
::pleine de ce courroux que j’ai tantôt fait éclater,
:et vous me voyez bien changée de ce que j’étais ce matin.
::
:Ce n’est plus cette Done Elvire
::qui faisait des vœux contre vous,
::et dont l’âme irritée ne jetait que menaces,
::et ne respirait que vengeance.
:Le Ciel a banni de mon âme
::toutes ces indignes ardeurs que je sentais pour vous,
::tous ces transports tumultueux d’un attachement criminel,
::tous ces honteux emportements d’un amour terrestre et grossier,
:et il n’a laissé dans mon cœur pour vous
::qu’une flamme
:::épurée de tout le commerce des sens,
::une tendresse
:::toute sainte,
::un amour
:::détaché de tout,
::qui n’agit point pour soi,
::et ne se met en peine que de votre intérêt.
;DOM JUAN, `à SGANARELLE`
:Tu pleures, je pense.
;SGANARELLE
:Pardonnez-moi.
;Done Elvire
:C'est ce
::parfait
::et pur
::amour qui me conduit ici pour __votre__ bien,
::pour vous faire part d'un avis du Ciel,
::et tâcher de vous retirer
:::du précipice où vous courez.
:Pour moi,
:je ne tiens plus à vous
::par aucun attachement du monde ;
:je suis revenue, grâces au Ciel, de toutes mes folles pensées.
:Mais,
:j'aurais une douleur extrême
:qu'une personne que j'ai chérie tendrement
::devînt un exemple funeste de la justice du Ciel ;
:et ce me sera une joie incroyable
:si je puis vous porter à détourner de dessus votre tête
::l'épouvantable coup qui vous menace.
:De grâce,
:Don Juan,
:accordez-moi,
:pour dernière faveur,
::cette douce consolation ;
:ne me refusez point votre salut,
::que je vous demande avec larmes.
;Sganarelle,
:^^à part.^^
:Pauvre femme !
;DONE ELVIRE
:Je vous ai aimé
::avec une tendresse __extrême__,
::rien au monde ne m’a été si cher que __vous__,
::j’ai oublié mon devoir __pour vous__,
::j’ai fait toutes choses __pour vous__,
:et toute la récompense que je vous en demande,
::c’est de corriger votre vie,
::et de prévenir votre perte.
:Sauvez-vous,
:je vous prie,
::ou pour l’amour de vous, ou pour l’amour de moi.
:Encore une fois,
:Dom Juan,
:je vous le demande avec larmes,
:et si ce n’est assez des larmes d’une personne que vous avez aimée,
:je vous en conjure par tout ce qui est le plus capable de vous toucher.
;SGANARELLE
:Cœur de tigre !
;DONE ELVIRE
:Je m’en vais
:après ce discours,
:et voilà
:tout
:ce que j’avais à vous dire.
;MARGARITA
{{LBM104-109}}
{{lbm 108-026}}
{{LBM 108-043}}
!!^^Knock^^
La Dame En Noir
,,Jules Romains,,
|Representations|8/3/18_JdArc<br>22/3/18_Lauriston<br>24/5/18_Éloi;|
*[img[http://preview.ibb.co/jb5uL7/Snapshot_274.png]][[https://photos.app.goo.gl/BXmrpzaCly8WSyFz2]] [img[https://image.ibb.co/d8dQDH/Snapshot_259.png]][https://photos.app.goo.gl/8qSnqncf07KmgTT03]] [img(30%,)[Dernier filage|https://image.ibb.co/h9BLMH/826_Knock.png][https://photos.app.goo.gl/XmOgiTuHAWOgiEyA2]]
*[[Extrait par Louis Jouvet|https://compagnieaffable.com/2015/10/21/knock-de-jules-romains-knock-la-dame-en-noir/]]
*[[KNOCK / Jules Romains / Cie du Berger au Théâtre de l'Epée de Bois|https://youtu.be/hCwKG8EJ0Dw?t=3620]]
*[[Knock - La Dame En Noir lu par François Périer|https://youtu.be/TP1qFc1g0zU?t=2370]]
*[[KNOCK joué à l'OLYMPIA d'ARCACHON / LA DAME EN NOIR|https://ibb.co/jT5fMH]]
*[[Knock o il trionfo della medicina|https://youtu.be/WGhG9Q5Y_PE?t=2523]]
!Knock – La Dame En Noir<br>^^//Jules Romains//^^
;KNOCK :
:Ah! voici les consultants. //`(A la cantonade.)`// Une douzaine, déjà? Prévenez les nouveaux arrivants qu’après onze heures et demie je ne puis plus recevoir personne, au moins en consultation gratuite. C’est vous qui êtes la première, madame? //`(Il fait entrer la dame en noir et referme la porte.)`// Vous êtes bien du canton?
;LA DAME EN NOIR :
:Je suis de la commune.
;KNOCK :
:De ~Saint-Maurice même?
;LA DAME :
:J’habite la grande ferme qui est sur la route de Luchère.
;KNOCK :
:Elle vous appartient?
;LA DAME :
:Oui, à mon mari et à moi
;KNOCK :
:Si vous l’exploitez vous-même, vous devez avoir beaucoup de travail?
;LA DAME :
:Pensez, monsieur! dix-huit vaches, deux bœufs, deux taureaux, la jument et le poulain, six chèvres, une bonne douzaine de cochons, sans compter la basse-cour.
;KNOCK :
:Diable! Vous n’avez pas de domestiques?
;LA DAME :
:Dame si. Trois valets, une servante, et les journaliers dans la belle saison.
;KNOCK :
:Je vous plains. Il ne doit guère vous rester de temps pour vous soigner?
;LA DAME :
:Oh! non.
;KNOCK :
:Et pourtant vous souffrez.
;LA DAME :
:Ce n’est pas le mot. J’ai plutôt de la fatigue.
;KNOCK :
:Oui, vous appelez ça de la fatigue. //`(Il s’approche d’elle.)`// Tirez la langue. Vous ne devez pas avoir beaucoup d’appétit.
;LA DAME :
:Non.
;KNOCK :
:Vous êtes constipée.
;LA DAME :
:Oui, assez.
;KNOCK, il l’ausculte :
:Baissez la tête. Respirez. Toussez. Vous n’êtes jamais tombée d’une échelle, étant petite?
;LA DAME :
:Je ne me souviens pas.
;KNOCK,
:`il lui palpe et lui percute le dos, lui presse brusquement les reins : `
:Vous n’avez jamais mal ici le soir en vous couchant? Une espèce de courbature?
;LA DAME :
:Oui, des fois.
;KNOCK,
:`il continue de I’ausculter :`
:Essayez de vous rappeler. Ça devait être une grande échelle.
;LA DAME :
:Ça se peut bien.
;KNOCK,
:`très affirmatif :`
:C’était une échelle d’environ trois mètres cinquante, posée contre un mur. Vous êtes tombée à la renverse. C’est la fesse gauche, heureusement, qui a porté.
;LA DAME :
:Ah oui!
;KNOCK :
:Vous aviez déjà consulté le docteur Parpalaid?
;LA DAME :
:Non, jamais.
;KNOCK :
:Pourquoi ?
;LA DAME :
:Il ne donnait pas de consultations gratuites.
://`Un silence.`//
;KNOCK,
:`la fait asseoir :`
:Vous vous rendez compte de votre état?
;LA DAME :
:Non.
;KNOCK,
:`il s’assied en face d’elle :`
:Tant mieux. Vous avez envie de guérir, ou vous n’avez pas envie?
;LA DAME :
:J’ai envie.
;KNOCK :
:J’aime mieux vous prévenir tout de suite que ce sera très long et très coûteux.
;LA DAME :
:Ah! mon Dieu! Et pourquoi ça?
;KNOCK :
:Parce qu’on ne guérit pas en cinq minutes un mal qu’on traîne depuis quarante ans.
;LA DAME :
:Depuis quarante ans?
;KNOCK :
:Oui, depuis que vous êtes tombée de votre échelle.
;LA DAME :
:Et combien que ça me coûterait?
;KNOCK :
:Qu’est-ce que valent les veaux, actuellement?
;LA DAME :
:Ca dépend des marchés et de la grosseur. Mais on ne peut guère en avoir de propres à moins de quatre ou cinq cents francs.
;KNOCK :
:Et les cochons gras?
;LA DAME :
:Il y en a qui font plus de mille.
;KNOCK :
:Eh bien! ça vous coûtera à peu près deux cochons et deux veaux.
;LA DAME :
:Ah! là! là! Près de trois mille francs? C’est une désolation, Jésus Marie!
;KNOCK :
:Si vous aimez mieux faire un pèlerinage, je ne vous en empêche pas.
;LA DAME :
:Oh! un pèlerinage, ça revient cher aussi et ça ne réussit pas souvent. //`(Un silence.)`// Mais qu’est-ce que je peux donc avoir de si terrible que ça?
;KNOCK, avec une grande courtoisie :
:Je vais vous l’expliquer en une minute au tableau noir. //`(Il va au tableau et commence un croquis.)`// Voici votre moelle épinière, en coupe, très schématiquement, n’est-ce pas? Vous reconnaissez ici votre faisceau de Turck et ici votre colonne de Clarke. Vous me suivez? Eh bien! quand vous êtes tombée de l’échelle, votre Turck et votre Clarke ont glissé en sens inverse //`(il trace des flèches de direction)`// de quelques dixièmes de millimètre. Vous me direz que c’est très peu. Évidemment. Mais c’est très mal placé. Et puis vous avez ici un tiraillement continu qui s’exerce sur les multipolaires. //`(Il s’essuie les doigts.)`//
;LA DAME :
:Mon Dieu! Mon Dieu!
;KNOCK :
:Remarquez que vous ne mourrez pas du jour au lendemain. Vous pouvez attendre.
;LA DAME :
:Oh! là! là! J’ai bien eu du malheur de tomber de cette échelle!
;KNOCK :
:Je me demande même s’il ne vaut pas mieux laisser les choses comme elles sont. L’argent est si dur à gagner. Tandis que les années de vieillesse, on en a toujours bien assez. Pour le plaisir qu’elles donnent!
;LA DAME :
:Et en faisant ça plus… grossièrement, vous ne pourriez pas me guérir à moins cher?… à condition que ce soit bien fait tout de même.
;KNOCK :
:Ce que je puis vous proposer, c’est de vous mettre en observation. Ça ne vous coûtera presque rien. Au bout de quelques jours vous vous rendrez compte par vaus-même de la tournure que prendra le mal, et vous vous déciderez.
;LA DAME :
:Oui, c’est ça.
;KNOCK :
:Bien. Vous allez rentrer chez vous. Vous êtes venue en voiture?
;LA DAME :
:Non, à pied.
;KNOCK,
: `tandis qu’il rédige l’ordonnance, assis à sa table `
:Il faudra tâcher de trouver une voiture. Vous vous coucherez en arrivant. Une chambre où vous serez seule, autant que possible. Faites fermer les volets et les rideaux pour que la lumière ne vous gêne pas. Défendez qu’on vous parle. Aucune alimentation solide pendant une semaine. Un verre d’eau de Vichy toutes les deux heures, et, à la rigueur, une moitié de biscuit, matin et soir, trempée dans un doigt de lait. Mais j’aimerais autant que vous vous passiez de biscuit. Vous ne direz pas que je vous ordonne des remèdes coûteux! A la fin de la semaine, nous verrons comment vous vous sentez. Si vous êtes gaillarde, si vos forces et votre gaieté sont revenues, c’est que le mal est moins sérieux qu’on ne pouvait croire, et je serai le premier à vous rassurer Si, au contraire, vous éprouvez une faiblesse générale, des lourdeurs de tête, et une certaine paresse à vous lever, l’hésitation ne sera plus permise, et nous commencerons le traitement. C’est convenu?
;LA DAME,
:`soupirant : `
:Comme vous voudrez.
;KNOCK,
:`désignant I’ordonnance : `
:Je rappelle mes prescriptions sur ce bout de papier. Et j’irai vous voir bientôt. //`(Il lui remet l’ordonnance et la reconduit. A la cantonade.)`// Mariette, aidez madame à descendre l’escalier et à trouver une voiture.
!!!!!//Scène 5 [[La Dame en violet|http://www.jacques-ramel.com/textes-theatre/Knock-dame-en-violet.pdf]] //
:://[[Extrait vidéo du film avec Louis Jouvet|blob:https://www.dailymotion.com/6cd0db7d-e52b-4c00-a52c-2cac56123076]], pour qui Jules Romains a écrit la pièce.//
<<<
//(Elle et Lui entrent, en tenue de safari, elle avec la jambe dans le plâtre). L'AMI : Roger, Josette, vous êtes revenus de vacances. (apercevant la jambe de Jossette) Mais qu'est-ce qui t'est arrivé ?//
<<<
;ROGER
: Figurez-vous qu'un jour nous avons reçu une documentation très alléchante de l'agence Voyages-Aventures, les spécialistes des vacances tous risques, et nous avons été séduits.
;JOSETTE
: Ça, je dois dire, tout de suite.
;L'AMI
: Des vacances tous risques… mais qu'est-ce que c'est ?
;ROGER
: Ils ont plusieurs formules intéressantes. Moi, j'avais un faible pour la traversée de la forêt amazonienne à vélo, avec baignade, piranhas et lutte avec des Indiens réducteurs de tête. Mais Josette préférait la formule "sécheresse et danger", c'est à dire le Sahara d'est en ouest avec tempêtes de sable, panne de voiture et pillards.
;JOSETTE
: Oui. Je ne sais pas pourquoi, mais moi, les Sud-Américains ne me donnent pas le frisson.
;ROGER
: Alors nous avons opté pour la formule désert à 1.800 € pour quinze jours et deux personnes.
;JOSETTE
: 2.OOO € avec le "supplément maladie".
;L'AMI
: Le supplément maladie ?
;ROGER
: Oui, ça n'était pas une mauvaise idée. En plus des garanties peur, blessures, insolation, soif, etc., ils proposaient un supplément maladie qui permettait un petit détour dans les zones infestées par la malaria ou la fièvre jaune. Pour 200 € de plus, reconnaissez que ça ne valait pas la peine de s'en priver.
;JOSETTE
: Mais on a senti la supercherie tout de suite, dès notre arrivée dans le petit bled de Tardouif. Ils nous avaient dit : première nuit dans un gourbi avec l'habitant et ses chèvres. En fait de gourbi, on s'est retrouvés dans une chambre avec doubles rideaux, salle de bains…
;ROGER
: Et, tenez-vous bien, eau chaude, baignoire et prise sèche-cheveux.
;JOSETTE
: Après cinq heures d'avion, je dois dire que ça ne met pas de bonne humeur !
;L'AMI
: C'est incroyable !
;ROGER
: Le lendemain, on part avec toute l'équipe. On roule, on roule, un jour, deux jours, trois jours, pas l'ombre, vous m'entendez bien, pas l'ombre d'une panne !
;JOSETTE
: Roger était dans un tel état d'énervement que le quatrième jour, je lui ai dit : "Écoute, crève une durite toi-même, sinon on ne s'en sortira pas."
;L'AMI
: Et tu l'as fait ?
;ROGER
: Ben, j'étais bien obligé sinon on dépassait la zone des tempêtes de sable.
;JOSETTE
: Qu'entre parenthèses on n'a jamais vues ! Pas la queue d'une ! C'est comme les ?scorpions?, pas un seul pendant tout le séjour. Ah non, ça alors je m'en souviendrai.
;ROGER
: Vous vous rendez compte l'organisation !
;L'AMI
: Et les pillards ?
;ROGER
: On les a rencontrés le onzième jour alors que par contrat nous devions être attaqués en fin de première semaine.
;JOSETTE
: Non, vous savez, quand on a quinze jours de vacances, c'est vraiment déprimant.
;ROGER
: D'ailleurs c'est ma femme qui les a vus la première derrière une dune.
;JOSETTE
: Oui.
;ROGER
: Je les évalue à une trentaine, une tribu du Sud, les Ouchimi, très dangereux, mangeurs d'hommes probablement.
;JOSETTE
: Oh ! oui, mais j'étais verte de terreur, c'était délicieux.
;ROGER
: Enfin les vraies vacances commençaient ! Tard, mais elles commençaient. Pour qu'ils nous pillent sans nous violenter, je décide de nous enterrer dans le sable. Tactique ?Lawrence d'Arabie?.
;JOSETTE
: On avait du sable dans les yeux, dans la bouche, j'étais à moitié morte, c'était formidable.
;ROGER
: Eh bien vous n'allez pas me croire, on n'était pas enterrés depuis cinq minutes qu'ils ont foncé sur nous, ils nous ont déterrés et ils nous ont dit : "Pas peur, pas peur, vous sauvés" et ils nous ont offert du thé. Je n'invente rien !
;JOSETTE
: Il y en a même un qui m'a fait un baisemain.
;ROGER
: Il ne faut quand même pas se foutre du monde !
;JOSETTE
: Calme-toi, chéri, c'est fini.
;L'AMI
: Et le supplément maladie ?
;ROGER
: Foutaise ! On est revenus avec deux kilos de plus chacun.
;JOSETTE
: Et bronzés !
;ROGER
: Heureusement ma femme s'est cassé la jambe au retour en descendant de l'avion à Roissy, sinon nous aurions eu l'air de quoi ?
;L'AMI
: Alors, pour vos vacances de l'année prochaine, toujours l'aventure ?
;JOSETTE
: Bien sûr, sinon c'est pas des vacances !
;ROGER
: Nous avons reçu une documentation d'une agence qui a l'air très sérieuse.
;L'AMI
: C'est à dire ?
;ROGER
: On prend l'avion à Roissy le ?dimanche soir à 21 heures?, direction l'Afghanistan, et sept heures après, c'est à dire ?à midi? heure locale, on nous fait sauter sur Kaboul. Ça a l'air pas mal.
;L'AMI
: Vous n'avez pas peur de vous faire berner une seconde fois ?
;ROGER
: Ça, on ne peut jamais être certain de rien. Mais ils mettent une clause qui nous a beaucoup rassurés.
;L'AMI
: aquelle ?
;ROGER
: Si on en revient…
;JOSETTE et ;ROGER
: …on est rem-bour-sés !
!!!!!!//( Extrait de la page : [[https://media.interieur.gouv.fr/deplacement-covid-19/]] )//
<div style="color: rgb(66, 66, 66); font-family: Arial, Helvetica, Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; border: 1px solid rgb(164, 164, 164); padding: 20px; margin-top: 20px; margin-bottom: 30px;"><div style="float: left; margin: 100px;"><a href="https://media.interieur.gouv.fr/deplacement-covid-19/" style="color: rgb(66, 66, 66); text-decoration: underline;"><img id="eZObject_121902" title="telecharger-numerique" view="embed" inline="false" alt="large" src="https://www.interieur.gouv.fr/var/miomcti/storage/images/media/dgsi/images/telecharger-numerique3/978671-1-fre-FR/telecharger-numerique_large.png" style="border: none;"></a></div><p style="margin: 20px; line-height: 1.25em; text-align: left;">Un dispositif de création numérique de l'attestation de déplacement dérogatoire est désormais disponible, en complément du dispositif papier toujours valide.<br><br>Après avoir rempli les informations sur un formulaire en ligne, un fichier<span> </span><strong>.PDF</strong><span> </span>est généré apposé d’un<span> </span><strong>QR Code</strong><span> </span>comprenant l’ensemble des données du formulaire, ainsi que la date et l’heure de génération du document. Ce fichier doit être présenté lors du contrôle sur smartphone ou tablette.<br><br>Ce service est accessible sur tout type de terminal mobile au travers d'un navigateur. Il a été conçu pour être facilement utilisable par les personnes en situation de handicap.<br><br>Par ailleurs, aucune donnée personnelle n'est collectée. Et aucun fichier n'est constitué.</p></div><span style="color: rgb(66, 66, 66); font-family: Arial, Helvetica, Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"> </span>
;Si vous entendez un écho sonore ou un retour audio pendant votre réunion, il existe 3 causes possibles :
* L'audio d'un participant est activé sur son ordinateur et son téléphone
* Les participants dont les haut-parleurs sur leur ordinateur ou téléphone sont trop près l'un de l'autre
* Plusieurs ordinateurs ont activé leur audio dans la même salle de conférence
Si vous êtes connecté à une salle de conférence sur plusieurs appareils, veuillez déconnecter l'audio de l'ordinateur sur les autres appareils.
De manière générale, si vous entendez un écho, cela signifie qu'un appareil est en train de canaliser votre son.
!!!!Pour isoler le participant :
* L'animateur peut mettre en sourdine les participants à tour de rôle
* L'animateur peut mettre en sourdine tout le monde et rétablir le son à tour de rôle
* Le participant peut se mettre en sourdine
!!!!La source de l'écho peut également provenir :
* De haut-parleurs (telle qu'une télévision ou barre audio) qui sont trop forts
* De l'échec de l'atténuation d'écho (problème d'appareil ou de performance)
* D'un mauvais micro
[[♦|https://support.zoom.us/hc/fr/articles/202050538-L-%C3%A9cho-sonore-dans-une-r%C3%A9union]]
:L'eusses-tu cru, mon ami, quand ton père fut lapin, il était trop aux pommes de terre pour aimer les tamarins.
:♦
:Je suis en prison, mon père a mangé ma porte et il en sort comme un vieil hareng saur.
:♦
:L'eusses-tu cru, mon ami, quand ton père fut là peint, il était trop homme de terre pour aimer l'état marin.
:♦
:Je suis en prison, mon père à manger m'apporte, il en sort comme un vieillard en sort.
!!!!!Chantal
!''I''
!!!Scène l ''La chambre du marquis''.
```
Le marquis Ottavio, en robe de chambre, assis à une table en train d'écrire, et la marquise Beatrice en grande toilette.
```
;Ottavio
:Oui, madame, j'ai compris ; laissez-moi écrire cette lettre.
;Beatrice
:Cet après-midi, il y a réception chez la comtesse.
;Ottavio
:J'en suis ravi. ''Il écrit.'' << //Mon très cher ami.// >>
;Beatrice.
:J'espère que vous irez aussi.
;Ottavio
:Je ne peux pas. << //Si je n'ai pas répondu à votre lettre...// >>
;Beatrice
:Mais qui me raccompagnera à la maison ?
;Ottavio.
:Je vous enverrai la gondole. << //Je vous prie de me le pardonner, car... //>>
;Beatrice
:Et vous voulez que je rentre seule à la maison ?
;Ottavio
:Faites-vous raccompagner. << //Je vous prie de me le pardonner car mes affaires...// >>
;Beatrice
:Mais par qui dois-je me faire raccompagner ?
;Ottavio.
:Par le diable, et qu'il vous emporte. << //Mes affaires m'en ont empêché.// >>
;Beatrice
:Vraiment, mon cher mari, vous êtes un fichu animal.
;Ottavio
:<< //Cependànt, je n'ai pas manqué de vous obéir... //>>
;Beatrice
:Avec vous, je ne peux plus vivre.
;Ottavio
:Alors crevez. << //J'ai parlé au marchand que vous savez... //>>
;Beatrice
:Quelle éducation !
;Ottavio
:« Il m'a garanti qu'incessamment... >>
;Beatrice
:incessamment, je quitterai cette maison.
;Ottavio,
:1e Ciel vous entende ! << Incessamment, il vous enverra le tissu... >>
;Beatrice
:ça, c'est une commission pour une femme.
;Ottavio
:Oui, madame. ''Il écrit.''
;Beatrice
:Je m'en réjouis pour elle.
;Ottavio
:Et moi de même. ''Il écrit.''
;Beatrice
:Vous feriez mieux de commander ce tissu pour moi, j'en ai besoin.
;Ottavio
:Chère madame la marquise, veuillez me faire le plaisir de partir.
;Beatrice
:Vous mériteriez d'avoir une femme comme je pense...
;Ottavio
:Pire que vous, je n'en trouverais aucune. ''Il écrit.''
;Beatrice
:Par la terre et le Ciel ! Que pourriez-vous me reprocher ?
;Ottavio
:Partez, partez ; rendez-moi ce service.
;Beatrice.
:Ma sagesse est connue...
;Ottavio
:Oui, m'dame. ''Il écrit.''
;Beatrice
:Ma rigueur est extrême.
;Ottavio
:Oui, m'dame. ''Il écrit.''
;Beatrice
:Je suis une femme d'honneur.
;Ottavio.
:Oui, m'dame. ''Il écrit.''
;Beatrice
:Vous êtes un fou.
;Ottavio
:Oui, m'dame...
:non.
:''Il écrit.''
!!!Scène 2·Brighella et les mêmes.
;Brighella
:Lustrissime, Monsieur le comte est là, il est venu vous prendre pour avoir l'honneur d'être votre chevalier servant ' lors de la réception.
;Beatrice
:Monsieur mon mari, puis-je vous être utile ? Ottavio. Non m'dame. ''Il écrit.''
;Beatrice
:Voulez-vous venir avec moi ?
;Ottavio
:Non, m'dame. ''Il écrit.''
;Beatrice
:Voulez-vous que je reste ?
;Ottavio
:Non, m'dame. ''Il écrit.''
;Beatrice
:Alors, je pars.
;Ottavio
:Oui, m'dame, oui, m'dame, oui, m'dame.
;Beatrice, à part.
:Je pars, je pars, et sans me faire prier.
:Tout notre art est là.
:Feindre avec son mari d'aimer ce que l'on déteste et de ne rien vouloir de ce que l'on désire.
:''Elle sort.''
!!!Scène 3 ''Le marquis Ottavio et Brighella''.
;Ottavio
:La maudite femme ! Je ne peux pas la voir et elle voudrait que je sois jaloux. Je serais trois fois fou. Fou parce qu'elle n'est pas d'une beauté à vous faire commettre des folies. Fou parce je ne l'aime pas : et fou parce que la jalousie est passée de mode.
!''II''
!!!Scène 12 ''Le marquis Ottavio et les mêmes''
;Ottavio
:Bonjour, mes belles.
;Catte.
:Lustrissime, sior marquis.
;Ottavio
:C'est vous, la Catte ?
;Catte
:Siora Catte, pour vous servir.
;Ottavio
:Et celle-ci, c'est la Bettina, votre sœur ?
;Catte.
:Oui, lustrissime.
;Bettina, à part.
:je transpire comme un œuf qu'on sort de la glacière.
;Ottavio, à Catte.
:Et pourquoi ne daigne-t-elle pas me saluer ?
;Catte
:La pauvre ! Elle est toute jeune, elle n'ose pas.
;Bettina, à part.
:Maudit soit ce logis.
:S'il y avait une autre porte, je m'en irais.
;Ottavio, à Bettina.
:La belle enfant, je vous salue.
;Bettina, avec rudesse.
:Strissime.
;Ottavio
:Mais pourquoi si mal polie ?
!!!Scène 13 ''Le marquis Ottavio et Bettina. ''
;Bettina, à part
:Elle n'a vraiment pas de jugeote, ma fichue sœur.
;Ottavio
:Venez ici ; asseyez-vous. ''Il s 'assoit.''
;Bettina
:Je ne suis pas fatiguée.
;Ottavio
:Mais pourquoi voulez-vous rester debout ?
;Bettina
:Parce que je veux grandir.
;Ottavio
:Vous êtes assez grande. Ce qu'il faudrait, c'est que vous grossissiez un peu.
;Bettina
:Vous, je n'ai pas à vous plaire.
;Ottavio
:Qui sait.
;Bettina
:Oh, moi, je vous dis que non.
;Ottavio
:Non vraiment ?
;Bettina
:Non absolument.
;Ottavio
:Mais asseyez-vous un peu ici.
;Bettina
:Je ne peux pas, je vous dis.
;Ottavio
:Vous ne pouvez pas ? Pourquoi ?
;Bettina
:Parce que je ne veux pas.
;Ottavio
:Bon. C'est donc moi qui me lèverai.
;Bettina, regardant vers la porte.
:Et ma sœur qui ne revient pas.
;Ottavio, en s 'approchant.
:Dites-moi, ils sont en or, ces bracelets ?
;Bettina d'un air rude.
:Oui, monsieur, en or ". '
;Ottavio.
:Laissez-les-moi voir un peu.
;Bettina.
:Allez voir ce qui est à vous.
;Ottavio
:Ne soyez pas si rude.
;Bettina
:Pour vous, je ne suis ni rude ni tendre.
;Ottavio.
:On laisse prendre sa main par courtoisie.
;Bettina.
:Moi, je ne suis pas de la cour, je suis du peuple.
;Ottavio
:Alors donnez-moi votre main par obéissance.
;Bettina.
:Allez commander à vos servantes.
;Ottavio
:Moi, je ne prétends pas vous donner des ordres, mais je vous dis cependant qu'un gentilhomme comme moi mérite plus de respect.
;Bettina
:Moi, je ne sais pas faire mieux, et si vous n'êtes pas content, fichez le camp.
;Ottavio
:Vous me mettez dehors ?
;Bettina
:Oh ! voilà beau temps que je vous envoie vous faire voir.
;Ottavio
:Mais vous oubliez que moi, je peux faire votre fortune ?
;Bettina
:Et quelle fortune ! Eh oui, ces gros messieurs, quand ils ont dépensé dix ducats, ils croient qu'ils ont fait la fortune d'une pauvre fille.
;Ottavio
:Vous ne me connaissez pas, c'est pour cela que vous parlez ainsi.
;Bettina
:Dites voir, vous me voulez peut-être pour femme ?
;Ottavio
:Moi, non, parce que j'ai déjà une femme.
;Bettina.
:Vous avez une femme et vous osez entrer chez une fille bien, chez une honnête fille ? Pour qui me prenez-vous ? Pour une chez qui on se paie du bon temps ? On est à Venise, vous savez. A Venise, on trouve de quoi s'amuser tant qu'on veut, mais pour ça, on va se promener Place Saint-Marc ; on va dans les maisons qui ont des jalousies et des coussins aux fenêtres, ou directement chez celles qui se tiennent sur le pas de leur porte ; mais dans les maisons honorables, à Venise, on ne vient pas frapper chez les jeunes filles avec un sans-gêne pareil. Vous, les gens d'ailleurs, dehors ; quand vous parlez de Venise et de ses femmes, vous les mettez toutes dans le même sac ; mais bon sang de bon sang ! on n'en est pas là.
:Les filles qui aiment leur chez soi, dans cette ville, elles ont de la jugeote et se conduisent avec une sagesse que sûrement, sûrement, on ne trouve en aucune autre cité. Les filles de Venise sont avenantes et parfois follettes ; mais pour ce qui est de l'honneur, je le dis avec le poète
::Les filles de Venise sont un trésor
::Qu'on ne peut pas se procurer si aisément Car elles sont honnêtes comme l'or
::Et qui voudra les dévoyer perdra son temps.
::Rome a eu pour sa gloire une Lucrèce,
::Mais pour savoir ce qu'est l'honneur, viens à Venise.
;Ottavio, en s'approchant d'elle.
:Bravo, ma Bettina.
;Bettina.
:Je vous dis d'aller vous occuper de vos affaires.
;Ottavio tire de sa poche un écrin avec une paire de pendants d 'oreille en diamants.
:Regardez ces boucles d'oreille. Elles vous plaisent ?
;Bettina
:Pas du tout.
;Ottavio
:Si vous les voulez, elles sont à vous.
;Bettina. Mettez-vous-les où je pense.
;Ottavio
:Ce sont des diamants, vous savez.
;Bettina
:Qu'est-ce que vous voulez que ça me fasse ?
;Ottavio
:Oh allez, j'ai compris. Vous voudriez les acheter à votre goût. Prenez cette petite bourse pleine de sequins. ''Il lui montre une petite bourse.''
;Bettina
:Moi, l'argent me laisse froide.
;Ottavio
:Mais qu'est-ce qui vous plaît ?
;Bettina
:Ma réputation.
;Ottavio
:Et je lui porte préjudice ?
;Bettina
:Oui, monsieur ; un gentilhomme chez une fille pauvre, on sait qu'il n'y va pas pour des feuilles de poireau.
;Ottavio
:Je vous marierai.
;Bettina
:Je n'ai pas besoin de vous pour ça.
;Ottavio
:Croyez-vous que j'ignore votre amour pour Pasqualino, le fils de Catinello ?
;Bettina
:Je suis bien contente que vous le sachiez.
:C'est lui que j'aime et je n'en veux pas d'autres.
;Ottavio.
:Alors apprenez que Catinello est mon gondolier.
;Bettina
:ça, ça m'est bien égal.
;Ottavio
:Vous voyez donc que je puis contribuer à votre bonheur.
;Bettina
:Notre mariage, vous n'avez rien à y voir du tout.
;Ottavio
:Je peux aussi vous donner une bonne dot.
;Bettina.
:Je vous dis que je n'ai pas besoin de vous.
;Ottavio.
:Ah oui, vous avez votre marchand. Lui, vous en avez besoin. Lui, il vous plaît.
;Bettina
:Lui, c'est un homme vieux. Il m'a connue toute petite, et personne ne peut y trouver à redire.
;Ottavio.
:Or ça, assez de discours. Il vient chez vous ?
:Je peux et je veux y venir aussi.
;Bettina
:Chez moi ?
;Ottavio
:Chez vous.
;Bettina
:Je voudrais voir ça.
;Ottavio
:Vous le verrez.
;Bettina
:Vous ne me faites pas peur, ni vous ni cinquante de vos pareils. Ici, il y a une justice et les sales trombines ne m'impressionnent pas, vous savez ?
:Et si vous voulez perdre le sens, le petit bout de femme que voilà et qui ne vaut pas trois sous s'arrangera pour vous le faire retrouver et pour vous empêcher tant que vous vivrez d'oublier Bettina la Vénitienne.
:Ottavio, à part.
:Une vraie possédée, cette fille-là.
!''III''
!!!Scène 10 ''Chez Bettina.''
!!!!Bettina puis Pasqualino.
;Bettina
:J'ai beau tendre l'oreille, je n'entends pas siffler. Pasqualin ne veut pas que j'aille sur l'altane, et j'ai peur qu'il passe et que je ne l'entende pas. C'est quelque chose, l'amour. Toutes les nuits, je rêve de lui. Toutes mes pensées sont avec lui. Sans lui, je suis sur des charbons ardents et quand il arrive, mon cœur jubile. Je n'en peux plus d'attendre qu'il vienne à la maison tout son saoul. J'ai bon espoir que Sior Pantalon acceptera. Il dit qu'il ne veut pas, mais
:il est si bon qu'il finira par faire ce que je veux. '
;Pasqualino
:Bettina, vous êtes seule ?
;Bettina
:Qu'est-ce que je vois ? Vous ici ? Qui vous a donné la permission d'entrer chez moi ?
;Pasqualino
:Excusez-moi, je n'ai pas pu faire autrement.
:Il n'y a pas de temps à perdre. Il faut que vous veniez avec moi.
;Bettina
:Doucement, doucement, monsieur, avec votre : Il faut que vous veniez avec moi. Je ne suis pas votre femme.
;Pasqualino
:Vous serez ma femme si vous venez avec moi.
;Bettina
:Une mode nouvelle. Partir d'abord avec son promis et se marier après ? Non, mon cher, vous vous êtes trompé de porte.
;Pasqualino
:Où croyez-vous que je veux vous emmener ?
;Bettina
:Épousez-moi, et après, j'irai où vous voudrez. Pasqualino. Allez, dépêchons-nous, donnons-nous la main.
;Bettina
:Mais oui, marions-nous comme des chiens.
:Vous êtes devenu fou ou quoi ?
;Pasqualino
:Si vous saviez tout, vous ne diriez pas ça. Bettina. Qu'est-ce qu'il y a de nouveau ? J'ai tout de même le droit de le savoir. Sans moi, la fête ne se fait pas.
;Pasqualino
:Mon père ne veut pas que je me marie avec vous. Sior Pantalon ne veut pas que vous me preniez pour mari. Tout le monde est contre nous.
;Bettina
:Et alors, qu'est-ce que vous voulez faire ? M'emmener courir le monde en chantant des chansons dans les rues ?
;Pasqualino
:Je vous emmènerai chez Monsieur le marquis.
;Bettina
:Bravo ! C'est du joli ! J'imagine que Monsieur le marquis sera content.
;Pasqualino
:Bien sûr, c'est lui qui l'a dit. Il s'est disputé avec Sior Pantalon à cause de moi ; il m'aime que c'en est incroyable, et il m'attend chez lui avec ma promise.
;Bettina
:Et moi, je dois aller chez cet individu ? Pasqualino. Mais oui. Pourquoi pas ? Bett1na. Il est venu chez moi faire le joli cœur ; il voulait me donner une paire de boucles d'oreille, il voulait me prendre la main, et vous voudriez m'emmener chez lui ?
;Pasqualino
:Oh, qu'est-ce que j'entends ? Maudit marquis de l'enfer ! Maintenant, j'ai compris l'affecticm qu'il a pour moi. Non, non, ma petite, je ne vous emmène plus là-bas, ne craignez rien. Moi, pauvre crétin, je l'ai cru ; mais vous m'avez ouvert lçs yeux, et mon père, il sait ce qu'il dit. Donc, il est venu ici ; il voulait... ce que vous dites et tout ça.
;Bettina
:Eh oui, mais il pouvait se serrer la ceinture. Pasqualino. Oh, quelle fripouille, ce marquis. Bettina. Il avait tout bien manigancé, mais ça n'a pas marché.
;Pasqualino
:Mais alors, qu'est-ce qu'on va faire ? Si on a contre nous mon père et Sior Pantalon, et si je n'ai µws la protection de Monsieur le marquis, je ne sais pas quelle solution trouver.
:Bet71na. Patience, mon cher petit, le Ciel nous aidera. Pasqualino. J'ai peur de vous perdre. Bett1na. N'ayez crainte.
:Pasqualjno. Ah, Bettina, si vous m'aimiez ! Bettina. Mon cœur est tout à vous. Pasqualino. Allons, le moment est venu de me prouver que vous m'aimez. Nous sommes seuls, personne ne nous voit. Prenez vos affaires, et fuyons ensemble.
;Bettina
:Moi, m'enfuir ? Bettina, commettre une action pareille ? Pasqualin, vous ne me connaissez pas encore tout à fait. Je vous aime de tout mon cœur, de toutes mes entrailles, mais je ne veux pas perdre à cause de vous ma réputation. Rien ne sert de me répéter : Partons, je vous épouserai. Quand le mal est
:fait, on le répare en se mariant ; mais il vaut mieux ne pas faire le mal pour ne pas avoir après à chercher comment le réparer. Même si j'étais votre femme, tout le monde me montrerait du doigt, tout le monde dirait : << Regardez-la, celle-là qui s'est enfuie de chez elle. Encore heureux qu'il l'a épousée >>. Et vous aussi, avec tout l'amour que vous avez pour moi, quand vous seriez en colère, vous me diriez des méchancetés et vous me croiriez capable de faire avec d'autres ce que j'aurais fait avec vous.
;Pasqualino
:Mais cœur de mon cœur, qu'est-ce que nous allons faire ?
;Bettina
:Continuer à nous aimer et prendre patience.
;Pasqualino.
:Sior Pantalon vous mariera avec un autre.
;Bettina.
:Oh, ça, sûrement pas.
;Pasqualino.
:Mon père m'enverra loin de Venise.
;Bettina.
:Il faudra lui obéir.
;Pasqualino.
:Et Bettina ?
;Bettina.
:Bettina vous attendra.
;Pasqualino.
:Non, ma chérie, vous vous découragerez.
;Bettina.
:Plutôt mourir que de renoncer à vous.
;Pasqualino.
:Je sens mon cœur éclater.
;Bettina. :
:Ne me faites pas pleurer par pitié.
;Pasqualino.
:Je vous aime tant.
;Bettina.
:Je me sens mourir.
;Pasqualino.
:Ah, Bettina, nous voilà tous les deux en sanglots et nous pourrions être si heureux.
;Bettina
:Comment ?
;Pasqualino
:Si vous vouliez venir avec moi.
;Bettina.
:Si vous m'aimez, ne m'en parlez plus jamais.
;Pasqualino.
:Vous êtes trop têtue.
;Bettina.
:Je suis une honnête fille.
;Pasqualino.
:Je vous épouserai.
;Bettina.
:Alors, je viendrai avec vous.
;Pasqualino.
:Et en attendant ?
;B ettjna.
:En attendant, aimons-nous.
;Pasqualino
:Et si je mourais en attendant ?
;Bettina.
:Plutôt mourir que perdre l'honneur.
<style>.rouge { color: red;}</style>
!!!<center>^^,,//`Nicole V et Lee ?`//,,^^ ''L’ÉCOLE DES FEMMES''
,,''Alain'', //paysan, valet d'Arnolphe//
''Georgette ''//paysanne, servante d'Arnolphe//.,,
</center>
| {{Scène vide. Depuis la coulisse, on entend la colère terrifiante d'Arnolphe s'abattre sur ses deux domestiques.||did}} |
<<<
;Arnolphe.
:Paix. Venez çà tous deux.
:Passez là ; passez là. Venez là, venez, dis-je.
;Georgette, //'',,effrayée,,''//
: @@.rouge ''Ah ! vous me faites peur, et tout mon sang se fige.''@@
;Arnolphe.
:C'est donc ainsi qu'absent vous m'avez obéi ?
:Et tous deux de concert vous m'avez donc trahi ?
;Georgette, //'',,elle crie.,,''//
:@@.rouge ''Eh ! ne me mangez pas, Monsieur, je vous conjure !''@@
;Arnolphe.
:Vous avez donc souffert, ô canaille maudite,
:Qu'un homme soit venu ?... Tu veux prendre la fuite !
:Quiconque remûra, par la mort ! je l'assomme.
:Comme est-ce que chez moi s'est introduit cet homme ?
;Alain et Georgette //'',,crient, effrayés,,''//.
:@@.rouge ''Ah ! ah !'' @@
;Georgette, //'',,cri de détresse.,,''//
:@@.rouge ''Le cœur me faut ! ''@@
;Alain, //'',,pleur déchirant,,''//
:@@.rouge ''Je meurs !''@@
;Arnolphe.
:Levez-vous, et rentrant, faites qu'Agnès descende !
<<<
!!!!<center>''ACTE II Scène III'' </center>
| {{Georgette terrorisée, suffocante entre en scène,<br>suivie d'Alain, bouleversé qui tente de la rassurer.||did}} |
;Georgette.
:Mon Dieu ! qu'il est terrible !
Ses regards m'ont fait peur,
mais une peur horrible ;
Et jamais je ne vis un plus hideux chrétien.
;Alain.
:Ce Monsieur l'a fâché : je te le disais bien.
;Georgette.
:Mais que diantre est-ce là, qu'avec tant de rudesse
Il nous fait au logis garder notre maîtresse ?
D'où vient qu'à tout le monde il veut tant la cacher,
Et qu'il ne saurait voir personne en approcher ?
;Alain.
:C'est que cette action le met en jalousie.
;Georgette.
:Mais d'où vient qu'il est pris de cette fantaisie ?
;Alain.
:Cela vient...
cela vient
de ce qu'il est jaloux.
;Georgette.
:Oui ;
mais pourquoi l'est-il ?
et pourquoi ce courroux ?
;Alain.
:C'est que la jalousie...
... entends-tu bien, Georgette,
Est une chose...
là...
qui fait qu'on s'inquiète...
Et qui chasse les gens d'autour d'une maison.
Je m'en vais te bailler une comparaison,
Afin de concevoir la chose davantage.
Dis-moi,
n'est-il pas vrai,
quand tu tiens ton potage,
Que si quelque affamé venait pour en manger,
::Tu serais en colère,
et voudrais le charger ?
;Georgette.
:Oui, je comprends cela.
;Alain.
:C'est justement tout comme :
::La femme est
en effet
le potage de l'homme ;
:Et quand un homme voit d'autres hommes parfois
Qui veulent dans sa soupe aller tremper leurs doigts,
::Il en montre
aussitôt
une colère extrême.
;Georgette.
:Oui ; mais pourquoi chacun n'en fait-il pas de même,
Et que nous en voyons qui paraissent joyeux
Lorsque leurs femmes sont avec les biaux Monsieux.
;Alain.
:C'est que chacun n'a pas cette amitié goulue
Qui n'en veut que pour soi.
;Georgette.
:Si je n'ai la berlue,
Je le vois qui revient.
;Alain.
:Tes yeux sont bons, c'est lui.
;Georgette.
:Vois comme il est chagrin.
;Alain.
:C'est qu'il a de l'ennui.
====================
SAVOIR ENTRER EN SCÈNE SELON LOUIS JOUVET
;Éprouver en soi le sentiment
:Ce que tu as à apprendre :
:* l’art de dire ;
:* la façon d’entrer en scène, d’__attaquer__ une scène,
:* éprouver en toi __le sentiment__ que tu dois avoir pour jouer cette scène,
:* savoir ce que c’est qu’une situation dramatique.
;Attaquer juste
* Ce qu’il y a de plus important dans une scène, c’est l’attaque, le commencement de la scène.
* Le moment de l’entrée en scène est __bref__ et __incisif__ :
''//<center>Attaquer juste demande attention et stratégie.</center>//''
:• Regarde le gymnaste entrer. Ça paraît un peu ridicule – décontracté, saluant le public – la façon dont il se frotte les pieds sur la colophane et brusquement ça part. Il y a deux raisons à cela :
:#Le type ne soit pas être tendu à l’entrée ;
:#l’attaque du morceau doit être nette, franche.
:– C’est la même chose pour le comédien.
;On ne peut pas ratrapper une entrée en scène
:Ce que tu crois sentir, tu ne réussiras à l'exprimer que si le vrai départ est là.
:Tu ne peux pas monter les marches d'un escalier, il te faut prendre l’ascenseur et être à l’étage voulu tout de suite.
''//<center>Tu ne peux pas te rattraper, ce n’est pas possible.</center>//''
;Il faut trouver l’entrée en scène.
:Si tu arrives au ton juste au début de la scène, tu joueras le reste tout seul.
:Comme le toboggan : une fois qu’on est lancé, on descend, on file forcément. Prendre le temps de trouver le début de la scène. Les premiers ressorts de la scène sont dans le texte.
:Une fois que tu les auras bien touchés, bien trouvé comment ils. fonctionnent, tu n’auras plus qu’à t’y introduire et à tourner la clé.
:La scène suit toute seule après.
;La scène comme une succession de sentiments
: Pas de préjugé sur le rôle.
:Moi, je ne peux pas te donner une conception de Bajazet ; je vois la scène telle qu’elle est __écrite__.
:Je vois la scène comme une succession de sentiments
::Quand tu as une certaine sensation, cela te donne un certain sentiment.
''//<center>Tout ce que je t’indique,<br>je ne te l’indique pas pour que tu le fasses,<br>mais pour que tu le transposes.</center>//''
;Pas de jugement préalable sur le personnage
:Au point où tu en es maintenant, tu fais trop de ‘‘//conception//’’ ; tu raisonnes ton personnage d’avance ; tu fais de la psychologie ; tu fais ce que font les commentateurs qui disent : ‘‘//Junie est une personne qui… etc…//’’
:C’est beaucoup plus simple !
::
:__Il y a une technique__:
::
:Elle est de l’ordre des « trucs », de l’astuce, de l’impulsion :
''//<center>Aller vers la sensation du personnage sans raisonner le texte</center>//''
;La concentration pour mobiliser le physique
:Nous savons l’importance du texte ; nous devons nous convaincre de celle du corps,
::« Je pars du __//physique//__ pour arriver à la __//conception//__. »
Le corps entre bien sur scène par la concentration à la fois psychique et physique.
''//<center>Si tu n’as pas le sentiment dans le corps,<br>tu ne l’auras pas dans la bouche non plus</center>//''
;Concentration maximum en coulisses
:Il faut plus que jamais de la concentration avant d’entrer en scène. On ne peut pas chasser le trac par des bavardages ou cabrioles.
:Si tu veux obtenir cette nécessité de parler, ce besoin de t’exprimer par les phrases d’un texte, il faut ce recueillement, cette concentration, incompatible avec l’art de gambader avant de se mettre en place
''//<center>Cette concentration a un but :<br>donner à l’acteur la « nécessité de parler. »</center>//''
;La sensation physique
:Il y a autant de sensations physiques que de rôles et que de situations à l’intérieur de ceux-ci.
:L’acteur doit trouver, dans son corps, la voie d’accès vers le personnage. Avant d’entrer en scène c'est la sensation physique qui doit être travaillée.
:Le personnage qui va parler dans un état physique déterminé, qu'il faut l'avoir fait émerger en soi. Si on ne l'atteint pas, pas la peine de commencer la scène.
Deux voies d’accès, parmi d'autres, pour entrer sur scène
*** ''la marche du personnage''
*** ''la respiration.''
;Marcher juste
!!!!//Exemple de la deuxième scène d'Elvire (Dom Juan IV 6)//
:Tu es là pour une logique purement dramatique.
:→ Quelqu’un qui entre pour nous dire quelque chose.
''//<center>Je me fiche de savoir ce que tu penses ;<br>je veux __voir__.</center>//''
<<<
:Ce que tu penses n’est pas intéressant pour le spectateur.
:Ce qui est intéressant, c’est ce que tu indiques.
:Dès ton entrée, par ta marche, par ta mimique, il faut qu’on pense :
::‘‘//C’est un personnage qui…//’’
:Ce que tu penses n’a pas d’importance.
:Tu peux penser à tout autre chose ;
::‘‘//Misère, j’ai oublié de fermer le robinet de la salle de bain.//’’
:Il faut entrer en scène, c’est l’important
<<<
:L’acteur n'a pas à être dans un travail d’introspection : il peut rendre visible une chose sans la ressentir, l’intérêt étant de donner des « __//indications//__ » au spectateur.
• Pour véritablement entrer en scène, trois critères :
* se mettre au diapason de ce qui entoure l’acteur,
* être dans un élan continu,
* avoir la démarche nécessaire.
Sans cela il n’entre pas !
;La démarche appropriée
:* est un signe pour le spectateur
:* permet à l’acteur de rencontrer la sensation physique du personnage<br>et partant son sentiment.
:Pour atteindre à la justesse de cette marche, point de psychologie mais une bonne appréhension de la situation du personnage.
<<<
;La marche d’entrée d'Elvire
:C’est quelqu’un qui entre dans un état d’égarement total.
:Cette femme qui entre est touchée par la grâce ;
::entre la matinée où elle est venue engueuler Don Juan dans cet hôtel et le moment où elle vient chez lui, l’après-midi, elle a été touchée intérieurement par l’idée de la damnation de Don Juan.
<<<
//''<center>Jouvet ne demande jamais à ses acteurs d’exécuter tel ou tel geste<br>ne se soucie pas de mise en scène dans ses cours.</center>''//
;Respirer le texte pour bien y entrer
:Entrer sur scène c’est être entré dans le texte.
:L’acteur doit trouver la respiration juste.
::Quelquefois, on travaille un rôle en essayant de « //respirer// » les phrases,
::et, en « //respirant// » les phrases, le sentiment finit par vous atteindre.
:::– C’est comme lorsqu’on apprend à nager.
:::Quand on est parvenu à accorder sa respiration avec ses mouvements physiques, on a trouvé le rythme de la nage
//''<center>L’acteur qui entre en respirant correctement son texte<br>ressent alors la nécessité impérieuse __de le dire__.</center>''//
;La nécessité de dire
:Avant de rentrer, quand tu es en encore encoulisse,il faut que soit monté en toi le besoin de dire ce que tu as à dire.
:Oublie si tu veux le sentiment dramatique, oublie l’humeur, mais retiens ça :
:Tu dois sentir en toi la nécessité de dire ce que tu as à dire…
//''<center>• Alors, un miracle se produit sur scène, <br>ce n’est plus l’acteur qui entre, <br>mais le personnage</center>''//
<<<
:Quand Sarah Bernhardt entrait,
::c’était un personnage qui rentrait,
::qui disait des choses vers lesquelles on tendait l’oreille et le cœur.
:
::C’était angoissant en soi
::parce que c’était l’expression sonore d’un vers,
::et parce que ce n’était encombré de rien d’autre.
:
::Les répliques, les unes après les autres, venaient vers nous,
::teintées d’une inflexion qui correspondait au sens du vers,
::mais il n’y avait rien de plus,
::pas de jeu qui alourdit le sens de la scène, qui fait que ça fatigue.
:
::Même pour les sourds c’était angoissant à voir.
:
::C’était hallucinant de netteté, cette espèce d’énigme qu’il y a dans un personnage qui entre en scène.
<<<
;L’acteur, pour entrer en scène, doit se débarrasser de ses propres intentions concernant le personnage.
//''<center>L'acteur, en entrant, doit être dans un état de concentration totale. </center>''//
:La concentration, spécifique à chaque rôle, ne s’obtient pas par une « //conception// » intellectualisée du personnage mais par la « //sensation physique// » de ce dernier.
::
:L’acteur y parvient par un travail et une préparation technique du corps, comme un compétiteur sportif avant l’épreuve, répétant la démarche et concentrant son énergie vitale.
::
:Ce travail physique et mental lui permet d’aller à la rencontre du personnage. ::
:Par ailleurs, la répétition du texte et le travail du rythme de la respiration, permettent à l’acteur de s’imprégner du verbe.
::
:Il s’approprie ainsi le texte et son interprétation
:et c’est l’urgence de le dire qui le porte sur scène comme la prière transcende le croyant.
::
:Et voici que l’entrée en scène réussie, presque « //miraculeuse// », qui porte l’acteur comme sur un « //toboggan// », est mise à notre portée avec simplicité par l'homme de théâtre au sommet de son art.
```
• On se sent seul parce qu’on se dit : Je rentre et je vais être Alceste.
Je me sens tout seul parce que je ne suis que Jouvet.
Mais si Jouvet rentre en scène avec Alceste, Alceste est devant moi, je le pousse devant moi.
Je l’invente Alceste, mais je ne le suis pas et je ne le serai jamais.
Tu pousses ton exécution d’un bout à l’autre d’une pièce en te disant : je ne suis pas le personnage, mais j’essaie de le dresser devant moi à l’aide du texte de l’auteur.
Tu arrives à ce dédoublement dont parle Diderot et qui est nécessaire.
Tu te sens seul parce que tu crois être le personnage, mais on ne doit pas se sentir seul, on doit se sentir investi d’un personnage, avec le personnage devant soi.
```
//''<center>•Avec l’entrée en scène, c’est tout le rapport au personnage qui s’engage,<br>qui se joue précisément à cet instant : <br>l’acteur n’entre pas seul en scène, <br>il y « conduit » avec lui le personnage.</center>""//
,,[[Source|https://journals.openedition.org/agon/2391#tocto1n1]],,
!L’OURS
,,Tchékov //(extrait)//,,
;MME POPOVA
:` Elle entre tenant la main le portrait de son mari. Elle s'assied et contemple le portrait avec une infinie tendresse, en s'apitoyant sur elle-même.`
:Ma vie est finie… Il est dans la tombe ; moi, je me suis enterrée entre quatre murs… `Regard dans le vide, avec des trémolos dans la voix. `Nous sommes morts tous les deux. depuis que Nicolaï Mikhaïlovitch est mort, la vie a perdu pour moi tout son prix. `Elle embrasse tendrement l'image. `Il te semble que je vis ; mais ce n’est qu’en apparence. J’ai fait le serment de ne jamais quitter ce deuil, et de ne pas voir le monde jusqu’à ma tombe… Il y a plus d’un an que je ne suis pas sortie de la maison… Et je n’en sortirai jamais… Pour quoi faire ? `Elle va pour remettre le portrait à sa place. `
://Brusque coup de sonnette.//
;MME POPOVA
://tressaillant//. – Qu’est-ce ? `Se tournant vers l'entrée, d'une voix lasse et tragique. `Dis que je ne reçois personne.
;VOIX
:Madame, il y a là quelqu’un qui vous demande. Il veut vous voir.
;MME POPOVA
: `Comme exaspérée. ` Mais tu as __dit__ que depuis la mort de mon mari je ne recevais personne ?
;VOIX
:Je l’ai dit, mais il ne veut rien entendre ; il dit que c’est une affaire très urgente.
;MME POPOVA
:Je-ne-re-çois-pas !
;VOIX
:Je le lui ai dit, mais… c’est un vrai diable… Il jure et file tout droit dans les chambres ; il est déjà dans la salle à manger.
;MME POPOVA
://irritée//. – Bien ; `Elle se rajuste, et se tient droite face à la porte d'entrée. ` fais-le entrer… `Elle gronde pour elle-même. `Comme ils sont grossiers !
;SMIRNOV
://(Avec dignité, voyant M me Popova.)// `Droit, raideur militaire. `Madame, j’ai l’honneur de me présenter : lieutenant d’artillerie en retraite Grigori Stepanovitch Smirnov. Je suis contraint de vous déranger pour une affaire très sérieuse…
;MME POPOVA
://sans lui tendre la main.// – ` Rogue, avec hauteur. `Que désirez-vous ?
;SMIRNOV
:Feu votre mari, que j’ai eu l’honneur de connaître, est resté me devoir douze cents roubles en deux billets. ` Posture de celui qui donne un ordre. `Comme je dois payer demain des intérêts à la Banque territoriale, je vous prierai, madame, de me donner cet argent aujourd’hui même.
;MME POPOVA
:Douze cents roubles… Et pourquoi mon mari vous les devait-il ?
;SMIRNOV
:Pour un achat d’avoine.
;MME POPOVA
:Si Nicolaï Mikhaïlovitch vous doit, il va de soi que je vous paierai, mais, excusez-moi, s’il vous plaît ; aujourd’hui, je n’ai pas d’argent disponible. Après-demain, mon intendant reviendra ; je lui ordonnerai de vous payer ce qui est dû ; pour l’instant, je ne puis satisfaire votre désir… ` Prenant sa posture de tragédienne. `Il y a exactement sept mois aujourd’hui que mon mari est mort et je ne suis pas du tout en état de m’occuper d’affaires d’argent
: ` Ils se font face, de profil, chacun à une extrémité de la scène. `.
;SMIRNOV
:Et moi, si je ne paie pas les intérêts demain, on saisira ma terre !
;MME POPOVA
:Après-demain, vous aurez votre argent.
;SMIRNOV
:` Avançant d'un pas. `
:J’ai besoin d’argent aujourd’hui, et non après-demain.
;MME POPOVA
: ` Avançant d'un pas. `
:Excusez-moi ; aujourd’hui, je ne puis vous payer.
;SMIRNOV
:Et moi, je ne puis pas attendre jusqu’après-demain.
;MME POPOVA
:Que faire, si je n’ai rien à présent !
;SMIRNOV
: ` Avançant d'un pas. `
:Vous ne pouvez pas payer ?
;MME POPOVA
: ` Avançant d'un pas, ils sont maintenant front à front. `
:Je ne peux pas…
;SMIRNOV
:C’est votre dernier mot ?
;MME POPOVA
:Le dernier.
;SMIRNOV
:Absolument ? le dernier ?
;MME POPOVA
:Absolument.
` Elle tourne les talons, prend du champ, et lui lance de loin. `J’ai dit clairement, il me semble, que, dès que mon intendant rentrera, vous serez payé.
;SMIRNOV
` Faisant deux enjambées dans sa direction, et la pointant d'un doigt menaçant.
:`Je ne suis pas venu trouver votre intendant, mai
;MME POPOVA
:Excusez, monsieur, je ne suis pas habituée à ce ton… Je ne vous écoute plus. //Elle sort rapidement.//
;SMIRNOV
:` Il pivote sur les talons, face au public. `
:Voyez un peu ! Son état d’esprit ! Sept mois que son mari est mort !…
:` Un pas vers le public. `Mais moi, dois-je payer les intérêts, oui ou non ? Je vous le demande : dois-je payer les intérêts ?…
:` Il tourne en rond, furieux, bousculant ce qui se trouve sur son passage. `
:Je ne permettrai pas qu’on se moque de moi, que diable ! Je reste et resterai ici jusqu’à ce qu’elle me paie ! Brrr !… ` Crescendo. `Comme je suis furieux aujourd’hui ! Comme je suis furieux ! De colère, toutes mes artères tremblent ; et la respiration me manque.
:`Il suffoque et chancelle.` Mon Dieu, je me trouve même mal !
:Ouf ! //( Il s’assied et s’examine.)// Il n’y a pas à dire, j’ai une jolie figure ! Couvert de poussière ; des bottines sales ; pas lavé; pas coiffé ; sur mon gilet de la paille… La petite dame m’a sans doute pris pour un brigand. //( Il bâille.)// Ce n’est guère poli de se montrer dans un salon sous un pareil aspect, mais qu’importe !… Je ne suis pas un invité, mais un créancier. ` D'une voix forte. `Pour les créanciers, il n’y a pas de tenue obligatoire…
: ` Crescendo maxissimo. `Ah ! comme je suis en colére, comme je suis en colère !
;MME POPOVA
://Elle entre en baissant les yeux//. – Monsieur, dans ma solitude je me suis depuis longtemps déshabituée de la voix humaine et je ne supporte pas les cris ; je vous prie instamment de ne pas troubler mon repos.
;SMIRNOV
:` Il avance d'un pas. Ils sont maintenant face à face, de profil par rapport au public, campés sur leurs positions, en combat de coq. `
:Donnez-moi mon argent et je partirai.
;MME POPOVA
:Je vous ai dit, en langue russe, que je n’en avais pas de disponible pour l’instant ; attendez jusqu’après-demain.
;SMIRNOV
:J’ai eu aussi l’honneur de vous dire, en langue russe, que j’avais besoin d’argent aujourd’hui, et pas après-demain ; si vous ne me payez pas aujourd’hui, demain je serai obligé de me pendre.
;MME POPOVA
:Mais que faire, si je n’ai pas d’argent ?… ` Grimace à part, face au public. `Comme c’est étrange !…
;SMIRNOV
:Alors vous ne me paierez pas sur-le-champ ? Non ?
;MME POPOVA
:Je ne peux pas…
;SMIRNOV
:En ce cas je reste ici, jusqu’à ce que je touche… //( Il s’assied.)// Vous ne paierez qu’après-demain ? Fort bien ! Jusqu’après-demain, je resterai comme cela. Voilà… //
` Un temps. Il se défient du regard. `
( Il bondit.)// Je vous le demande : dois-je, oui ou non, payer demain des intérêts ?… Ou pensez-vous que je plaisante ?
;MME POPOVA
: `Elle crie. `Monsieur, je vous prie de ne pas crier ! Vous n’êtes pas dans une écurie !
;SMIRNOV
:Je ne vous parle pas d’écurie, mais de ceci : dois-je, oui ou non, payer demain des intérêts ?…
;MME POPOVA
:Vous ne savez pas vous tenir en société féminine !
;SMIRNOV
:Bien sûr que si !
;MME POPOVA
:` Elle crache sa salve. `
:Non, vous ne savez pas !
:Vous êtes un homme mal élevé, grossier !
:Les gens comme il faut ne parlent pas ainsi aux femmes !
;SMIRNOV
:Ah ! l’étonnante chose ! Comment voulez-vous qu’on vous parle ? En français ?… //(Il se fâche et zézaie.)// Madame, jé vous pri (3)… Comme je suis heureux que vous ne me rendiez pas mon argent… Ah ! pardon(4) de vous avoir dérangée ! Quel temps magnifique aujourd’hui. Et ce deuil vous va si bien ! `Il s’incline et joint les talons.`
;MME POPOVA
:Ce n’est pas spirituel, et c’est grossier.
;SMIRNOV
://la contrefaisant//. – Pas spirituel et grossier !
:Je ne sais pas me tenir en société féminine !
:Madame, dans ma vie, j’ai vu bien plus de femmes que vous n’avez vu de moineaux !
:Je me suis battu trois fois en duel pour des femmes ; j’ai quitté douze femmes ; neuf autres m’ont lâché.
:Oui !
:Il fut un temps où j’étais stupide ; j’étais sucré comme du miel, doux comme du lait d’amandes ; je me déroulais comme des perles ; je joignais les talons… J’aimais ; je souffrais ; je soupirais sous la lune ; je me liquéfiais ; je fondais ; je devenais glacé… J’aimais passionnément, avec rage, de toutes les manières, que le diable m’emporte !… Je parlais comme une pie de l’émancipation des femmes ; les sentiments tendres m’ont coûté la moitié de ma fortune.
:Mais maintenant, votre humble serviteur !
:Maintenant, on ne me trompera pas ! Suffit !
:Yeux noirs, yeux passionnés, lèvres rouges, fossettes aux joues, lune, « murmure, respiration craintive(5) », pour tout cela, madame, je ne donnerai pas désormais un rouge liard !
:Exception pour les personnes présentes, mais toutes les femmes, petites ou grandes, sont des mijaurées, des maniérées, des cancanières, haineuses, menteuses jusqu’à la moelle des os, frivoles, mesquines, sans pitié, d’une logique révoltante et, en ce qui concerne cela //( il se touche le front)//, pardonnez ma sincérité : un quelconque moineau peut rendre des points à une philosophe en jupons !
: ` Il la regarde, satisfait de sa charge. Elle est tout estomaquée. Il reprend. `
:Regardez une créature poétique ;
::c’est de la mousseline, de l’éther, une demi-déesse, un million d’enchantements ;
:mais jetez un coup d’œil dans son âme…
::c’est un crocodile ordinaire !
://`( Il prend une chaise par le dossier ; le dossier craque et se casse.)`//
:Et le plus révoltant, c’est que ce crocodile s’imagine que son chef-d’œuvre, son privilège et son monopole, ce sont les sentiments tendres !
:Mais que le diable me prenne tout entier et que l’on me pende à ce clou les pieds en l’air, est-ce qu’une femme sait aimer qui que ce soit, hormis les petits chiens ?…
:En amour, elle ne sait que pleurer et se lamenter. Où l’homme souffre et se sacrifie, son amour à elle ne se traduit qu’en ce qu’elle joue de sa traîne et tâche de nous prendre très fort par le nez.
:Vous avez le malheur d’être femme ; vous connaissez par vous-même la nature féminine : dites-moi, en conscience, si vous avez vu dans votre vie une femme qui soit sincère, fidèle et constante ?…
:` La fureur monte aux joues de Madame Popova. `
:Vous n’en avez pas vu ?…
:Seules sont fidèles et constantes les vieilles femmes, et les monstres !
:Vous rencontrerez plutôt une chatte à cornes ou une bécasse blanche qu’une femme constante !
;MME POPOVA
: ` Cinglante. `
:Permettez ! Qui donc, selon vous, est fidèle et constant en amour ? Ce ne sont pas les hommes ?
;SMIRNOV
:Si, madame, les hommes !
;MME POPOVA
:Les hommes !
://`( Avec un rire méchant.)`// L’homme est fidèle et constant en amour ?… Dites, en voilà du nouveau !…
://`(Avec feu.)`// Et quel droit avez-vous de dire cela ?
:Les hommes sont fidèles et constants !… Si on en vient là, je vous dirai que de tous les hommes que je connais et connaissais, le meilleur était mon mari…
:Je l’aimais passionnément, de toute mon âme, comme seulement peut aimer une femme jeune et sérieuse. Je lui ai donné toute ma jeunesse, mon bonheur, ma vie, ma fortune ; je ne vivais que pour lui. Je l’adorais comme fait une païenne, et… et quoi ?…
:Ce meilleur des hommes me trompait de la manière la plus odieuse à chaque pas ! Après sa mort, j’ai trouvé dans sa table un tiroir plein de lettres d’amour ; et, de son vivant, c’est affreux de s’en souvenir, il me laissait seule des semaines entières. Il faisait la cour aux autres femmes sous mes yeux et me trompait.
:Il dépensait mon argent, se moquait de mon amour…
: ` Elle reprend son souffle, et, d'une voix déchirée `
:Et malgré tout cela, je l’aimais !… Je lui étais fidèle…
:Il est mort… je lui suis encore fidèle et constante. Je me suis enterrée pour toujours entre quatre murs et ne quitterai plus ce deuil jusqu’à ma mort…
;SMIRNOV
://avec un rire méprisant//.
:– Le deuil !… Je ne me rends pas compte pour qui vous me prenez !
: Comme si je ne savais pas pourquoi vous portez ce domino noir et vous êtes enterrée entre quatre murs !
:Parbleu, oui ! C’est si mystérieux ! si poétique !
:Vienne à passer par ici un aspirant-officier, ou un poète courtaud, il regardera les fenêtres et pensera :
::« Ici demeure la mystérieuse Tamara, qui, par amour pour son mari, s’est enterrée entre quatre murs ! »
:Nous connaissons ces manières-là !…
;MME POPOVA
://avec emportement//.
:– Quoi ?… Comment osez-vous me dire tout cela ?
;SMIRNOV
:Vous vous enterrez vivante, mais vous n’oubliez pas de vous poudrer !
;MME POPOVA
:Comment osez-vous me dire cela ?
;SMIRNOV
:Ne criez pas ; je ne suis pas votre intendant !
:Permettez-moi d’appeler les choses par leur nom. Je ne suis pas une femme, et j’ai l’habitude de dire mon avis, tout droit ; veuillez ne pas crier !
: ` À nouveau, face-à-face en combat de coqs. `
;MME POPOVA
: ` Elle hurle. `
:Je ne crie pas ; c’est vous qui criez ! Veuillez me laisser en paix !
;SMIRNOV
:Donnez-moi mon argent, et je m’en vais.
;MME POPOVA
:Je ne vous donnerai pas d’argent !
;SMIRNOV
:Si, madame, vous m’en donnerez !
;MME POPOVA
:Je ferai exprès de ne pas vous en donner ; vous n’aurez pas un kopeck !
:Vous pouvez me laisser la paix !
;SMIRNOV
:Je n’ai pas le plaisir d’être votre époux ou votre fiancé ; ne me faites pas de scènes.
://`( Il s’assied.)`//
:Je n’aime pas cela.
;MME POPOVA
://`étouffant de rage`//.
:– vous vous êtes assis !
;SMIRNOV
:Oui.
;MME POPOVA
:Je vous prie de partir !
;SMIRNOV
:Donnez-moi mon argent…
://`( À part.)`//
:Que je suis en colère ! que je suis en colère !
;MME POPOVA
:Je n’ai pas envie de tenir conversation avec des insolents ; allez-vous-en !
://`( Une pause.)`//
:Vous ne vous en irez pas ? Non ?
;SMIRNOV
:Non.
;MME POPOVA
:Non ?
;SMIRNOV
:Non !
;MME POPOVA
:Veuillez vous en aller !
;SMIRNOV
:Soyez plus polie.
;MME POPOVA
://`serrant les poings et trépignant`//.
:– Vous êtes un moujik ! Un ours grossier ! Un officier de fortune. Un monstre.
;SMIRNOV
:Comment ! Qu’avez-vous dit ?
;MME POPOVA
:J’ai dit que vous étiez un ours, un monstre !
;SMIRNOV
://marchant vers elle//. – Permettez ? Quel droit avez-vous de m’insulter ?
;MME POPOVA
:Oui, je vous insulte !
:Et après ?
:Vous pensez que j’ai peur de vous ?
;SMIRNOV
:Et vous pensez que, parce que vous êtes une créature poétique, vous pouvez insulter les gens impunément ? Oui ? Sur le pré!
:Au pistolet !
;MME POPOVA
:Parce que vous avez de bons poings et un gosier de bœuf, vous croyez que je vous crains ?
:Quel butor vous êtes !
;SMIRNOV
:Sur le pré !
:Je ne permettrai à personne de m’insulter, bien que vous soyez une femme, une faible créature !
;MME POPOVA
://`tâchant de crier plus fort`//.
:– Ours ! Ours ! Ours !
;SMIRNOV
:Il est temps de se défaire enfin des préjugés que, seuls, les hommes doivent rendre compte de leurs injures.
:L’égalité est l’égalité, que diable !
:Sur le pré !
;MME POPOVA
:Vous voulez vous battre au pistolet ?
:À vos ordres !
;SMIRNOV
:À l’instant même !
;MME POPOVA
:À l’instant même !
:Mon mari a laissé des pistolets…
:Je les apporte à l’instant…
://`( Elle sort rapidement et reparaît.)`//
:Avec quelles délices je planterai une balle dans votre front d’airain !
:Que le diable vous emporte !
://`Elle sort.`//
;SMIRNOV
:Je la tuerai comme un poussin !
:Je ne suis pas un gamin, un blanc-bec sentimental ; pour moi, les faibles créatures n’existent pas ! Se battre, voilà ce qui est de l’égalité, de l’émancipation ! Ici les deux sexes sont égaux ! Je la tuerai par principe !
: ` Il fait quelques pas vers l'avant-scène. Avec une admiration croissante. `
:Mais quelle femme ! //( Il la contrefait.)// « Que le diable vous emporte ! Je planterai une balle dans votre front d’airain… » Hein !… Elle est devenue rose, ses yeux brillent… Elle a accepté ma provocation… Ma parole d’honneur, c’est la première fois de ma vie que j’en vois une pareille !… Ça, c’est une femme ! Je comprends ça ! Une vraie femme !… ce n’est pas une mollasse, une chiffe ; mais du feu, de la poudre, une fusée ! Il est même dommage de la tuer ! Positivement, elle me plaît ! Positivement !… Malgré ses fossettes aux joues, elle me plaît. Je suis même prêt à lui passer ma dette… ma colère est envolée… C’est une femme étonnante !
;MME POPOVA
://`entrant avec les pistolets`//.
:– Voici les pistolets…
:Mais avant que nous nous battions, vous voudrez bien me montrer comment il faut tirer ; je n’ai de ma vie tenu une arme.
;SMIRNOV
://`examinant les pistolets`//. – Voyez-vous, il existe plusieurs sortes de pistolets…
:Il y a, pour le duel, des pistolets spéciaux, à capsules, de Mortimer.
:Et vous avez là des pistolets du système Smith et Wesson, à triple action, avec extracteur et percussion centrale…
:Des pistolets magnifiques !… La paire vaut au moins quatre-vingt-dix roubles… Il faut tenir le pistolet ainsi…
://`( À part.)`// Quels yeux, quels yeux ! C’est une femme incendiaire !
;MME POPOVA
:Comme cela ?
;SMIRNOV
:Oui, comme cela… Puis vous levez le chien… Vous visez ainsi… La tête un peu en arrière ! Étendez le bras comme il faut… Voilà… Puis, de ce doigt, vous appuyez sur cette machine, et c’est tout. Seulement, la règle principale est de ne pas s’agiter, et de viser sans se presser… Il faut que la main ne tremble pas.
;MME POPOVA
:Bien… Toutefois il n’est pas commode de se battre dans des chambres ; allons au jardin.
;SMIRNOV
:Allons-y. Mais je vous préviens que je tirerai en l’air.
;MME POPOVA
:Il ne manquait plus que cela ! Pourquoi ?
;SMIRNOV
:Parce que… parce que… C’est mon affaire !…
;MME POPOVA
:Vous avez peur ? Oui ? Aha ! Non, monsieur, ne vous dérobez pas ! Veuillez me suivre ! Je ne me calmerai pas avant d’avoir percé ce front que je déteste tant ! Vous avez peur ?
;SMIRNOV
:Oui, j’ai peur.
;MME POPOVA
:Vous mentez ! Pourquoi ne voulez-vous pas vous battre ?
;SMIRNOV
:Parce que… parce que vous… me plaisez…
;MME POPOVA
://`avec un rire méchant`//.
:– Je lui plais ! Il ose me dire que je lui plais ! //`(Lui montrant la porte.)`// Vous pouvez…
;SMIRNOV
://`il pose en silence le pistolet, prend sa casquette et s’en va. Il s’arrête devant la porte. Tous deux se taisent une demi-minute, et se regardent. Puis Smirnov s’approche irrésolument de M me Popova. `//
:Écoutez… Vous êtes toujours fâchée ?…
:Je suis furieux aussi comme le diable, mais comprenez… comment m’exprimer ?… Le fait est, voyez-vous, qu’une histoire de ce genre est, à proprement parler… //`( Il crie.)`// Eh bien ! oui, est-ce ma faute si vous me plaisez ? //`( Il prend une chaise par le dossier ; la chaise craque et se casse.)`// Diable, quel meuble fragile vous avez ! Vous me plaisez ! Vous comprenez ? Je… je suis presque amoureux !…
;MME POPOVA
:Éloignez-vous de moi – je vous déteste !
;SMIRNOV
:Dieu, quelle femme ! Je n’ai jamais vu de ma vie rien de pareil ! Je suis perdu ! Je péris ! Je suis tombé comme une souris dans une souricière !
;MME POPOVA
:Éloignez-vous, ou je vais tirer !
;SMIRNOV
:Tirez ! Vous ne pouvez comprendre quel bonheur j’aurai de mourir sous des yeux aussi beaux, de mourir par le pistolet que tient cette main de velours… Je suis fou !… Pensez et décidez tout de suite, parce que, si je m’en vais d’ici, nous ne nous reverrons plus jamais ! Décidez !… Je suis gentilhomme, honnête homme, j’ai dix mille roubles de revenu… j’atteins avec une balle un kopeck lancé en l’air… j’ai d’excellents chevaux… Voulez-vous être ma femme ?
;MME POPOVA
://`indignée, le menaçant du pistolet`//.
:– Il faut nous battre ! Sur le pré !
;SMIRNOV
:Je suis fou… Je ne comprends rien. //`( Il crie.)`// Quelqu’un ! De l’eau !
;MME POPOVA
:criant. – Sur le pré !
;SMIRNOV
:Je suis fou, je suis amoureux comme un gamin, comme un imbécile !
://`( Il lui prend la main ; elle crie de douleur.)`//
:Je vous aime !
://`( Il se met à genoux.)`//
:J’aime comme je n’ai jamais aimé ! J’ai quitté douze femmes ; neuf m’ont lâché ; mais je n’ai aimé aucune d’elles comme je vous aime… Je suis flapi, à sec, ramolli… Je suis à genoux comme un imbécile, et j’offre ma main… Honte, turpitude ! Il y a cinq ans que je n’ai été amoureux ; j’ai fait le serment de ne plus l’être ; et tout d’un coup, je vais me planter comme une flèche d’équipage dans le carrosse d’autrui ! Je vous offre ma main. Répondez, oui ou non ? Vous ne voulez pas ? N’en parlons plus ! //`Il se lève et va à grands pas vers la porte.`//
;MME POPOVA
:Attendez !
;SMIRNOV
://`s’arrêtant`//. – Eh bien ?
;MME POPOVA
:Rien, partez… Restez !… Non ! partez, partez ! Je vous déteste ! Ou plutôt non… Ne vous en allez pas ! Ah ! si vous saviez comme je suis en colère, comme je suis en colère ! //`( Elle jette le pistolet sur la table.)`// J’ai les doigts engourdis par cette horreur… //`( De colère, elle déchire son mouchoir.)`// Pourquoi restez-vous ? Déguerpissez !
;SMIRNOV
:Adieu.
;MME POPOVA
:Oui, oui, partez !… //`( Criant.)`// Où allez-vous ? Attendez… Allez-vous-en tout de même. Ah ! que je suis en colère ! N’approchez pas ; n’approchez pas !
;SMIRNOV
:`s’approchant d’elle.`
:– Comme je suis furieux après moi ! Je suis amoureux comme un lycéen ; je me suis mis à genoux… J’en ai la chair de poule. //`( Brutalement.)`// Je vous aime ! J’avais bien besoin de tomber amoureux de vous ! Demain, il faut payer les intérêts ; on a commencé à faire les foins, et vous venez… //`( Il la prend par la taille.)`// Je ne me pardonnerai jamais cela…
;MME POPOVA
:Sur le pré ! À bas les mains ! Je vous déteste… Arrière !
://`Baiser prolongé`//.
!!!!!!RIDEAU`
:
<<<
| //Chantal//| BARBARA |veuve, et bonne mère. |
| //Jacques//| NICOLETTO |fils de Barbara. |
| //Odile//| GIACOMINA |fille de Barbara. |
| //Éveline//| LODOVICA |mère avide |
| //Mireille//| DANIELA |fille de Lodovica. |
| //Nicole L//| MARGARITA |servante de Barbara. |
| //Michèle//| AGNESE |veuve, amie de Barbara. |
| //Gérard//| LUNARDO |compère de Barbara.|
| //Yvonne//| ROCCO |marchand de tissus et de mercerie. |
| //Noella//| ,,Un garçon de boutique,, |,,qui ne parle pas.,,|
<<<
```
La scène est à Venise, en partie chez Barbara, en partie chez Lodovica.
```
!!!► [[Idées pour les costumes]]
!!► [[Grille des présences en scène]]
!!► [[Apprentissage du texte]]
{{LBM-acte1}}
{{LBM_acte 2}}
{{LBM_acte3}}
,,Une pièce chez Barbara.,,
//Barbara qui repasse des chemises et de la lingerie, et Giacomina qui fait de la broderie ; puis Margarita.//
;BARBARA`, appelant`.
:Margarita.
:{{Barbara au centre pose son fer refroidi. <br>Giacomina, assise un peu en retrait s'énerve sur sa broderie, avec ses doigts gourds qui la rendent maladroite.||scn}}
;MARGARITA`, de la coulisse`.
:Siora.
;BARBARA.
:Regarde mon autre fer, et s'il est chaud, apporte-le.
;MARGARITA`, de la coulisse`.
:Oui, siora, je m'en occupe.
:{{Barbara essaie de se réchauffer les mains||scn}}
;BARBARA.
:Nom de nom,
:avec le froid qu'il fait, les fers sont tout de suite glacés.
;GIACOMINA. {{ Sans lever la tête de sa broderie||scn}}
:Moi, j'ai les mains tellement gonflées que l'aiguille m'échappe des doigts.
;BARBARA.
:Réchauffe-les, ma petite.
;GIACOMINA. {{idem||scn}}
:Comment voulez-vous que je fasse ?
;BARBARA.
:Tu n'as pas ta chaufferette ?
;GIACOMINA.
:Si, maman,
:{{ Se tournant vers sa mère||scn}}
:mais si je me réchauffe les doigts, je ne brode pas,
:et je voudrais finir le feston de mes manchettes pour ce soir.
;BARBARA. Oui, oui, ma fille,
:dépêche-toi.
:{{ Doucement et affectueusement||did}}
:Si tu travailles vite,
:si tu travailles bien,
:Sior Rocco te donnera à nouveau de l'ouvrage, //,,`On sent que Sior ROCCO est un personnage important et considéré.`,,//
:{{ Sourire, et voix chantonnante||scn}} :
::et tu gagneras des beaux petits sous,
::et tu te feras quelque chose pour toi.
;GLACOMINA.
:{{Faisant la gamine||scn}} : J'ai tellement envie d'un sarrau en indienne
:{{ Elle insiste pour souligner||did}}
:en belle indienne !
;BARBARA.
:{{ Grand sourire encourageant||scn}} : Travaille,
:et tu l'auras !
;GIACOMINA.:{{soufflant à sa mère l'arrangement qu'elle devrait proposer à Rocco||scn}}
:Si Sior Rocco voulait me la donner à crédit !
::Il se paierait au fur et à mesure sur mon ouvrage.
{{BARBARA I1 - Acheter à crédit chez les marchands est toujours un mauvais calcul}}
;GIACOMINA. {{se levant vivement, posant sa broderie, et prenant sa chaufferette||scn}} :
:Attendez, je vais y aller, je me dégèlerai un peu les doigts.
;BARBARA.
:Oui, ma petite,
::{{Au moment où Giacomina disparait, elle lance avec agacement ||scn}} :
:et dis-lui qu'elle se remue !
;GIACOMINA.
:J'en profiterai pour reprendre un peu de braise.
:{{Elle sort avec sa chaufferette||scn}}.
-► [[La Bonne Mère I,2 - NICOLETTO et BARBARA.]]
| La mère et la fille sont en `M2j` (`M2` côté `J2`) pour Lodovica, et `M2c`( `M2` côté `C2`) pour Daniela |h
;NICOLETTO.
:`EJ→` Serviteur, mesdames,
:`→Daniela` serviteur, siora Daniela.
;DANIELA.
:`M2c` {{Petite génuflexion enamourée :||scn}} Servante, sior Nicoletio.
;LODOVICA.
:`M2j` //{{(Ho, tu me passes devant comme çà ?)||did}}// Bonjour, mon garçon !
;NICOLETTO.
:`→M2j` Votre serviteur, siora Lodovica
;LODOVICA.
:{{Malicieuse||did}} Tu n'as pas entendu tes oreilles tinter ?
;NICOLETTO.
:`M2` {{Entre les deux en léger recul||scn}} Quand ?
;LODOVICA.
:{{Elle rigole, avec un clin d'oeil à sa fille||did}} Depuis un moment.
;NICOLETTO.
:Sérieusement,
:vous parliez de moi ?
;LODOVICA.
:Un bout de temps qu'on parle de toi, //`(à Daniela :)`// pas vrai, ma fille ?
;DANIELA.
:Oh ! oui, c'est vrai.
;NICOLETTO.
:{{Il prend une pose avantageuse||scn}} Je suis venu tôt, n'est-ce pas ?
:{{(Il tripote ostensiblement un cordon censé être le cordon de sa montre)||scn}} ,,[[Cordon de montre]],,
;DANIELA.
:Oh ! pas si tôt que ça.
;LODOVICA.
:Un bout de temps qu'on t'attend.
;NICOLETTO.
:Quelle heure est-il ? {{(même jeu)||scn}} .
;DANIELA.
:Onze heures, moi, je crois.
;LODOVICA.
:Pas loin de midi, je le crains.
;NICOLETTO.
:Je viens de regarder :
:il n'était qu'onze heures et quart {{(même jeu)||scn}} .
;LODOVICA.
:`→Nicoletto` Eh hé ! qu'est-ce que tu en dis, Daniela ?
:Sior Nicoletto a une montre.
;DANIELA.
:Bravo, bravo, ça me fait bien plaisir.
;LODOVICA, //`à Nicoletto`//.
:Fais voir.
;NICOLETTO.
:Oh ! pourquoi ?
:`→J2` Une breloque.
;DANIELA.
:Vous l'avez achetée ?
;NICOLETTO.
:Oui, siora.
;LODOVICA.
:`→J2` Combien tu l'as payée :
;NICOLETTO.
:Oh! pas cher,
:une occasion.
;LODOVICA.
:Mais combien lu l'as payée ?
;NICOLETTO.
:`→J1` Pas cher, je vous dis,
:[[trente sequins]].
;LODOVICA.
:`→J1` Pas cher,lu dis ?
:Elle est en or ?
;NICOLETTO.
:`→M1` Oui, siora, en or.
;LODOVICA.
:`→M1` Fais-moi voir, s'il te plait.
;NICOLETTO.
:`M1` Vous faire voir quoi ?
:Vous n'avez jamais vu de montre ?
:`→M2` Et vous voudriez que je vienne ici pour me pavaner avec une montre de quatre sous ?
;DANIELA.
:`→M2` Allons, ne vous fâchez pas ;
:puisque vous ne voulez pas, n"en parlons plus.
;LODOVICA, ,,//à part//.,,
:`J1` Moi, j'te parie que c'est une médaille qu'il a attachée à son cordon.
;NICOLETTO, ,,//`à Daniela`//.,,
:`→Daniela` Vous êtes debout depuis longtemps ?
;DANIELA.
:Oh! bientôt deux heures.
;NICOLETTO.
:Malédiction !
:`M2` je voulais venir plus tôt, et je n'ai pas pu.
;LODOVICA.
:`→M2` [[Tu as pris ton chocolat à la maison]] ?
:`Rassemblés en M2, Nicoletto au milieu`
;NICOLETTO.
:Oui, siora.
;LODOVICA.
:Tu aurais dû venir ici pour le prendre.
;NICOLETTO.
:J'ai bu mon chocolat en trempant dedans six [[biscuits]] et quatre petits pains d'Espagne.
;LODOVICA.
:Et moi,
:{{Gourmande||did}} tu m'as apporté quelque chose ?
;NICOLETTO.
:Malédiction !
:je voulais venir ici de bonne heure,
:je voulais qu'on prenne le chocolat ensemble ;
:`→M1` mais j'ai attendu mon tailleur, et il m'a tenu tout ce temps.
;DANIELA.
:`→M1` Vous vous faites faire quelque chose de neuf ?
;NICOLETTO.
:`M1` Oui, siora, un habit de fine étoffe,
:si fine qu'elle se soulève quand on respire;
:avec des boutons d'argent qui brillent, on dirait des diamants.
:Et un gilet de brocart magnifique, avec un galon de quatre doigts.
;DANIELA.
:`M1` Oh ! depuis quand met-on du galon aux gilets de brocard ?
;NICOLETTO.
:La mode, la mode, Paris, la mode,
:Paris.
;LODOVICA.
:`M2` Dis voir, sior Nicoletto, tu ne serais pas un peu artilleur ?
;NICOLETTO.
:Comment ça, artilleur ?
;LODOVICA.
:Tu les craches dru comme mitraille.
;NICOLETTO.
:Dites donc,
:pour qui vous me prenez ?
:Pour un pouilleux ?
:{{Il va se planter à ||scn}}`C2` {{et fait face||scn}}
:J'ai du bien, moi, vous savez,
:et mes revenus, je m'en occupe moi-même;
:j'ai douze mille ducais de rente
:et ma mère a seize mille ducats de dot.
:`→Daniela` Mais moi, si je me marie, je ne veux pas de dot;
:moi, je n'ai pas besoin de dot,
:je veux une fille qui me plaise,
:une fille qui m'aime, et c'est tout.
;DANIELA.
:{{Fondante, prenant sa mère à témoin||scn}} Oh ! qu'il est mignon Sior Nicoletto !
;NICOLETTO.
:Oh ! bénie sois-tu, toi ! {{Il veut prendre la main de Daniela.||scn}}
;LODOVICA, ,,//le rappelant à l'ordre//.,,
:Eh là, eh là, mon petit monsieur, on se croit déjà au dessert ?
;NICOLETTO.
:`→Lodovica` Oh ! la bonne petite mémée !
:`→Daniela` {{(Il fait des cajoleries à Lodovica et veut lui prendre la main.)||scn}}
;LODOVICA.
:{{S'interpose||scn}} Bas les pattes, je te dis !
;NICOLETTO.
:{{S'échappant prestement||scn}} `→C1` Je me sens tout fringant, moi, ce matin.
;LODOVICA. ,,`(M2)`,,
:{{Elle rigole||scn}} Sûr que tu te sens fringant.
:{{Pointant du doigt le ventre du garçon||scn}} Avec du chocolat et des gâteries plein le ventre.
:`→Daniela`
:Nous deux, misère, on n'a même pas encore bu le café.
;NICOLETTO.
:`C1` C'est bientôt l'heure du déjeuner.
;LODOVICA. `M2`
:Bientôt ?
:S'il n'est qu'onze heures et quart !
;NICOLETTO.
:Oh ! c'est vrai {{(Il feint de consulter sa montre discrètement. Lodovica esaie de voir aussi)||scn}}
:Alors,
:vous avez vu ?
;LODOVICA.
:Moi, rien du tout.
;NICOLETTO.
:Il est midi passé.
;LODOVICA.
:Sacré nom !
:vous nous la faites voir cette montre, ou quoi ?
:Vous avez peur qù'on vous la mange ?
;NICOLETTO.
:Il est midi passé ;
:qu'est-ce que vous voulez voir de plus ?
:midi passé.
;DANIELA, ,,//à part.//,,
:Mais quelle femme !
:`→M1` elle me met dans une rage !
;NICOLETTO.
:`→M1` Vous avez une montre, vous, siora Daniela ?
;DANIELA.
:{{Interloquée||did}} Moi ?
:non.
;NICOLETTO.
:Vous voulez que je vous en achète une ?
;DANIELA.
:Oh! les jeunes filles ne portent pas de montre.
;NICOLETTO.
:Je vous en offrirai une quand vous vous marierez.
;DANIELA.
:{{Elle pirouette||did}} Quand je me marierai :
:c'est mon mari qui m'en achètera une !
;NICOLETTO.
:{{Taquin||did}} Votre mari ?
:Et qui ce sera, votre mari ?
;DANIELA
:{{avec une tendresse un peu appuyée.||did}} Je n'en sais rien, moi, voyez-vous.
;NICOLETTO.
:Vous en avez un en chantier ?
;DANIELA.
:Oh !
:ça ne vous coûte rien de plaisanter, à vous, sior Nicoletto.
;NICOLETTO.
:{{il lui décoche une estocade.||scn}} Ah !
;DANIELA.
:Qu'est-ce qui vous prend ?
;NICOLETTO.
:Je vous ai fait peur ?
;LODOVICA. ,,`(M2)`,,
:Te voilà bien gaillard.
;NICOLETTO, ,,//à Lodovica.//,,
:→C2 Ah ! je me sens fringant.
;LODOVICA.
:Oh ! je le sais, moi, ce qu'il te faudrait pour que ça te passe.
;NICOLETTO.
:Quoi ?
;LODOVICA.
:Une promise.
;NICOLETTO, //`en embrassant Lodovica.`//
:Oh ! la bonne petite mémée !
;LODOVICA.
:Non mais, laisse-moi tranquille.
;NICOLETTO.
:Je suis désolé,
:il faut que je m'en aille.
;DANIELA.
:Déjà ?
;NICOLETTO.
:Une affaire à régler.
:Il faut que j'aille à la Bourse de Rialto toucher une créance de sept ou huit cents ducats.
;LODOVICA.
:Vas-y,
:touche ton dû et reviens après.
;NICOLETTO.
:Oui, siora, à tout à l'heure.
;DANIELA.
:Ne m'oublie pas.
;NICOLETTO.
:Ma petite pomme d'amour !
;LODOVICA.
:Reviens vite.
;NICOLETTO.
:Ma petite [[mémée d'amour]] ! //`(Il veut l'émbrasser. )`//
;LODOVICA.
:Non mais, effronté. //`(Elle se défend. )`//
;NICOLETTO.
:Bénie sois-tu ! //`(Il recommence, mais il perd un morceau de sa chemise.)`//
;LODOVICA.
:Laisse-moi tranquille ;
:attention, tu perds ta manche.
;NICOLETTO.
:Maudites soient ces demi-manches.
:Serviteur.
://`Il sort`//
;LODOVICA.
:Eh là, il a des bouts de chemise.
;DANIELA.
:Qu'est-ce que ça peut faire ?
:Il a du galon à ses habits.
;LODOVICA.
:Et si tout ça, c'était de la frime ?
;DANIELA.
:Et alors!
:il mange à sa faim ?
:je mangerai aussi.
://`Elle sort`//.
;LODOVICA.
:Alors
:voilà!
:Coeur satisfait brave misère.
://`Elle sort`//.
[[La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
;NICOLETTO. {{ Rentrer en chemise débraillée||scn}}
:Maman,
:vous me donnez une chemise propre ?
;BARBARA.
:Eh mon mignon !
:{{ Reproche affectueux : ||did}} Je ne t'en ai pas donné une dimanche ?
;NICOLETTO. {{ Mine piteuse||scn}}
:Regardez-la,
:elle est sale à vomir.
{{BARBARA I2 - Le linge coûte cher}}
;NICOLETTO//`, suppliant`.//
:S'il vous plaît,
:{{ Injonction d'enfant gâté ||did}} : donnez-moi une chemise propre.
;BARBARA {{céde||scn}}
:Bon,
:attends que j'aie fini de repasser,
:{{ Elle pose son fer, et le regarde en souriant, croyant lui faire plaisir : ||scn}}
:je te donnerai ces demi-manches.
;NICOLETTO. {{Haut-de-corps immédiat||scn}} :
:{{ Petit Chef : ||scn}}Je ne veux pas de demi-manches, moi,
:je ne veux pas de morceaux de chemise.
;BARBARA.
:{{Elle arrête son manège en lui adressant un regard sévère ||scn}} :
:{{ Sèchement. : ||scn}} Vous parlez sérieusement, mon petit monsieur ?
;NICOLETTO.
:{{ Air buté||scn}} Je ne veux pas mettre de morceaux de chemise,
:je ne veux pas qu'on m'appelle //Sior moitié d'chemise//.
;BARBARA.
:{{Hausssant les épaules||scn}} : Qui s'en apercevra ?
:Qui ira y voir ?
;NICOLETTO.
:Un accident est si vite arrivé.
;BARBARA.
:Voyez-moi ça !
:{{Cinglante ||did}} : tu dois aller jouer au ballon, peut-être ?
;NICOLETTO.
:Sacré nom !
:j'aimerais mieux...
;BARBARA.
:{{Mouvement de giffle||scn}}Pas un mot de plus,
:j'en ai assez.
:{{Elle se retient et passe sa colère sur Margarita qui ne revient pas||did}}
:A la fin des fins, il vient ce fer ?
-► [[La Bonne Mère I,3 - MARGARITA et les mêmes.]]
`Vidéo LBM 21-4 → 7'42`
;MARGARITA
:J'arrive, j'arrive.
://`Elle entre`//
:Il n'était pas assez chaud, patronne.
;BARBARA//`, en repassant`//.
:Rien, personne ne pense à rien ici.
:Ils croient que les choses me tombent du ciel droit sur le balcon, et pourtant il a l'âge de raison.
:Dix-huit ans sur le derrière, il a, et il ne pense à rien.
;MARGARITA//`, bas à Nicoletto`//.
:Qu'est-ce qu'il y a eu ?
;NICOLETTO//`, bas à Margarita`//.
:Rien,
:je lui ai demandé une chemise et la voilà dans tous ses états.
;MARGARITA//`, bas à Nicoletto`//.
:Vous ne la connaissez pas ?
:Elle est comme ça, la patronne,
:elle se monte pour un rien ;
:mais elle a bon coeur, elle vous la donnera.
;BARBARA//`, en repassant`//.
:Depuis quand tu n'es pas allé voir ton parrain ?
;NICOLETTO.
:Je ne sais pas, je ne me souviens pas.
;BARBARA, //`en repassant.`//
:Va le voir,
:et demande-lui qu'il s'occupe de toi.
:Il a promis de te caser, de te trouver une place dans un bureau ;
:mais si personne n'y va, qui y pensera ?
;NICOLETTO.
:Vous voulez que j'y aille avec ma chemise sale ?
;BARBARA.
:Attends, tu vas enfiler ces demi-manches.
;NICOLETTO.
:Malédiction !
:en fine toile, au moins ?
;BARBARA.
:Et comment !
:J'ai décousu quatre chemises en linon de ton pauvre père,
:et j'en ai tiré trois devants et trois paires de demi-manches,
:impeccables.
:Regarde,
:j'y ai cousu des attaches,
:elles tiendront ;
:qui ira voir ce que tu as sous ta veste ?
;MARGARITA.
:Moi, si je les avais à moi, ce serait mon plus beau trésor.
;NICOLETTO//`, à part, à propos de Margarita`//.
:La baffe que je lui mettrais de bon coeur à celle-là !
://`(Haut :)`// Puisque je vais voir mon parrain, je prends mon beau manteau.
;BARBARA//`, à Marganita.`//
:Tu l'as brossé son manteau ?
;MARGARITA.
:Je n'ai pas encore eu le temps, patronne.
;BARBARA.
:Et voilà !
:quand ce n'est pas moi qui fais,
:pas de danger que quelqu'un fasse.
://`(A NICOLETTO :)`//
:Va t'habiller, va t'habiller,
:j'irai le brosser moi-même.
;MARGARITA, //`à Barbara.` //
:Attendez, j'y vais, moi.
;BARBARA.
:Toi ?
:allons donc, tu ne fais rien comme il faut.
:L'autre jour, tiens, tu l'as brossé,
:et moi, après, j'ai regardé :
:il restait de la saleté haut comme ça au col.
://`(A Nicoletto :)`//
:Mais tâche donc d'être un peu plus soigneux, mon garçon,
:n'abîme pas tes affaires comme tu fais.
:Nettoie-la ta bourse de cheveux <$appear type="popup">{{bourse de cheveux}}</$appear>,
:toute la poudre va se fourrer dans le col et après, plus moyen qu'elle s'en aille ;
://`(A Marganita :)`// et toi, quand il rentre, nettoie-le tout de suite son manteau,
:ne le range pas comme ça, la poudre l'encrasse comme du goudron.
:Ah ! quand on ne fait pas les choses de bon coeur !
://`(En sortant :)`//
::Il faudrait que je sois partout,
::que je m'occupe de tout,
::que j'aie cent mains,
::cent têtes ;
:y a rien à faire, rien n'est jamais fait,
:personne ne fait rien.
-► [[La Bonne Mère I,4 - Nicoletto et Margarita.]]
`Vidéo LBM 21-4 → 11'14`
{{Où l'on voit que Nicoletto et Margarita ont une relation complice,<br>que Margarita n'est pas née de la dernière pluie<br>et que Nicoletto n'est sans doute pas celui que croit sa mère.||parti}}
;MARGARITA.
:{{grognonne après Barbara||did}} Et pourtant, je n'ai pas l'impression de rester à ne rien faire, moi.
;NICOLETTO. {{arrivant par derrière, très gamin||scn}}
:{{À mi-voix, pour ne pas risquer de se faire entendre par sa mère||did}}Hé, Margarita.
;MARGARITA. {{Petite révérence malicieuse||scn}}
:Sior.
;NICOLETTO.
:{{Maintenant, baucoup plus déluré : ||did}} Tu me rendrais un service ?
;MARGARITA.
:{{Faisant mine de s'esquiver ||did}} Faudrait déjà que je puisse.
;NICOLETTO.
:{{Jouant à faire le gosse||did}}Je t'en prie, ne me dis pas non.
;MARGARITA.
:{{Jouant à faire la maîtresse||did}}Si vous ne me dites pas ce que c'est...
;NICOLETTO.
:Ecoute ;
:prête-moi un ducat
;MARGARITA.
:{{Elle s'esclaffe||did}}Moi ?
:{{lui riant au nez ||did}} Où voulez-vous que je le prenne ?
;NICOLETTO.
:{{effrayé||did}}Pas si fort, que ma mère n'entende pas.
:{{suppliant||did}}Je t'en prie, prête-m'en un.
;MARGARITA.
:{{Mi colère - mi rieuse ||did}} Vous allez me faire parler de travers, vous.
:{{Elle __esquisse__ legeste ||scn}} Je les ponds par le derrière, les ducats ?
;NICOLETTO.
:{{Rigolant||did}}Oh la mauvaise,
:{{L'air du séducteur éconduit ||did}} même pas moyen qu'on vous rende un service.
{{LBM104-34 Pourquoi vous ne Je demandez pas à votre mère}}
;NICOLETTO.
:{{ Stressé ||did}} Qui t'a parlé de la Rue de l'Oie ?
;MARGARITA.
:{{ Elle fait la mystérieuse ||did}} Quelqu'un m'en a parlé.
;NICOLETTO.
:{{ Effrayé ||did}} Ma mère sait quelque chose ?
;MARGARITA.
:{{ Elle pouffe ||did}} Misère de toi si elle savait !
;NICOLETTO.
:{{ Il se reprend, et essaie de faire le petit maître ||did}} Attention à toi, ne va pas me trahir, me détruire.
;MARGARITA.
:{{Sans se démonter, gentiment inquisitrice ||did}} Qu'est-ce que tu vas y faire chez cette fille ?
;NICOLETTO.
:{{Essayant de jouer l'indifférence ||did}} Moi,
:rien.
{{LBM 104-093}}
{{LBM104-109}}
;MARGARITA,// `ironique`//.
:Oui, //patron//!
:tout de suite.
://`(Sérieuse :)`// Je n'en ai pas un seul,
:mais même si j'en avais un, je ne le donnerais pas.
;NICOLETTO.
:Mets-toi-le où je pense !
;MARGARITA.
:{{Petite révérence ||scn}}: Merci.
;NICOLETTO//`, d'un air menaçant`//.
:Et puis,
:{{Tout près d'elle, doigt levé ||did}}:
:écoute,
:ne va pas dire quoi que ce soit à ma mère,
:parce que,
:sacré nom de nom...
;MARGARITA.
:{{Elle le laisse s'embourber, puis avec malice ||did}}: Tu me ferais quoi ?
;NICOLETTO.
:Eh ho,
:{{Menaçant ||did}}: tu le vois ce couteau ? //`(Il lui fait voir le couteau qu 'il a à la ceinture.)`//
;MARGARITA.
:{{Elle écarquille les yeux ||did}}: Un couteau, mon petit monsieur ?
;NICOLETTO.
:Oui, __madame__,
:{{Reprénant une voix normale ||did}}:
:qu'est-ce que je suis à la fin ?
:un gamin ?
:{{Il explique||did}}:
:C'est Sior Gasparo qui me l'a donné,
:je suis assez grand pour en avoir un,
:et je veux en avoir un,
:et
:{{Air menaçant ||did}}: si tu dis un mot, sacré nom de Dieu d'nom de Dieu...
;MARGARITA//`, ironique`//.
:{{Nullement impressionnée ||did}}: Bravo !
;NICOLETTO.
:Tu ne veux pas me donner ce ducat ?
;MARGARITA//`, se fâchant`//.
:Je ne veux rien vous donner du tout.
;NICOLETTO.
:Va au diable,
:avec ceux qui te fourrent les pieds au chaud. `[??]`
//`Il sort.`//
-► [[La Bonne Mère I,5 Margarita seule.]]
!!Scène 5 Margarita seule.
;MARGARITA.
:Et toi avec ceux qui t'en fourrent [[plein la jappe]].
:Non mais,
:quel furoncle !
:Un beau petit saint qu'elle a élevé, la patronne,
:y a pas à dire, son fils, c'est du propre.
:La pauvre !
::elle s'échine,
::elle s'escrime pour ses enfants
::et puis
::vlan,
::c'est ça le beau bijou qu'elle a élevé !
:Mais les garçons, ils savent tout juste attacher leur culotte, les voilà dehors,
::et j'te fréquente,
::et j't'en entends,
::et j't'en fais
::et j't'en dis,
::essayez donc de les tenir.
:Oh ! la chance que c'est d'avoir des filles, à côté !
:...
:La voilà qui revient nom de nom.
:Je ne sais pas si je dois lui dire :
:* si j'en parle, j'ai peur de mal faire ;
:* si je me tais, je ne voudrais pas faire pire.
-► [[La Bonne Mère I,6 - Barbara et Margarita.]]
;BARBARA.
:Allez, pourquoi tu restes là les bras croisés ?
:La poussière n'est toujours pas faite à côté.
;MARGARITA.
:J'y vais, j'y vais;
:mais je voulais vous dire quelque chose.
;BARBARA
:Eh bien, dis-le.
://`(Elle s'assoit là où était Giacomina auparavant et se met à broder les manchettes.)`//
;MARGARITA.
:Il est sorti, Sior Nicoletto ?
;BARBARA.
:Non, il est à côté,
:il s'habille.
:Sa soeur l'aide.
:Pauvre petite,
:que je lui fasse vite deux ou trois points à ses manchettes.
;MARGARITA.
:Eh !
:vous au moins, vous ne perdez pas votre temps.
;BARBARA.
:Retiens cela :
:ne jamais rester à ne rien faire.
:Alors,
:qu'est-ce que tu voulais me dire ?
;MARGARITA.
:Eh ! je vous le dirai après,
:ça ne presse pas.
:Je vais d'abord finir le ménage.
://`(A part :)`// Je ne voudrais pas que le diable donne envie à ce poison de venir écouter aux portes.
;BARBARA.
:Si c'est une chose importante, dis-la.
;MARGARITA.
:Voilà, moi,...
:Attendez que je voie...
;BARBARA.
:On frappe...
;MARGARITA.
:Oh ! oui, c'est vrai, on frappe :
:je vais voir qui c'est ;
:je vous dirai après,
:je vous dirai.
://`(A part :)`// A la bonne heure, j'aime mieux ça.
://`Elle sort.`//
-► [[La Bonne Mère I,7 - Barbara, puis Margarita.]]
{{BARBARA I7 - Je déteste, changer de servante}}
;MARGARITA//`, qui revient.` //
:Vous savez qui c'est ?
;BARBARA.
:Qui ?
;MARGARITA.
:Sior'Agnese.
;BARBARA.
:Tu lui as ouvert ?
;MARGARITA.
:Oui, siora.
;BARBARA. Bon ; fais-la entrer.
:Tiens,
:tiens !
:porte ces manchettes à côté,
:donne-les à ma fille et dis-lui qu'elle ne vienne pas ici si je ne l'appelle pas.
;MARGARITA.
:Pourquoi vous ne voulez pas que Sior'Agnese la voie ?
;BARBARA.
:Ne t'occupe pas de ça ;
:je n'ai pas à te rendre ce genre de comptes, à toi.
;MARGARITA.
:Bon, bon,
:excusez-moi.
;BARBARA.
:Il est parti, Nicoletto ?
;MARGARITA.
:Oui, siora.
:[[Il sera déjà Rue de l'Oie]].
;BARBARA.
:Rue de l'Oie ?
:Non,
:il est allé chez son parrain .
;MARGARITA.
://`avec ironie et en faisant des mines moqueuses`//.
:Eh oui, siora,
:chez sa marraine.
;BARBARA.
:Sa marraine ?
:Son parrain n'est pas marié, voyons.
;MARGARITA.
:Eh, je sais.
;BARBARA.
:Alors, qu'est-ce que tu dis ?
;MARGARITA.
:ça m'a échappé.
;BARBARA,
:Oh ! ne commence pas à me mettre martel en tête.
;MARGARITA.
:Oh ! que non.
:Sior'Agnese est là.
;BARBARA.
:Si tu sais quelque chose, parle.
;MARGARITA.
:Non, rien, je vous assure.
://`(A part :)`//
:Pour l'instant je ne veux pas la tracasser avec ça.
://`Elle sort.`//
[[La Bonne Mère I,8 BARBARA puis AGNESE]]
;BARBARA.
:Ces folles, elles parlent, et elles ne savent pas ce qu'elles disent.
:Elle m'avait retourné les sangs.
::Mais il n'y a pas de danger.
::Je connais Nicoletto.
{{LBM 108-006 AGNESE : Servante, siora Barbara}}
;BARBARA.
{{LBM 108-043}}
;AGNESE.
:{{Admiration sincère ||did}} : Soyez bénie d'avoir un si bon naturel.
:{{Toute charmée ||did}} : Ma foi, vous feriez envie.
;BARBARA.
:{{Petit rire modeste ||did}} : Oh ! en moi, ma chère enfant, il n'y a rien qu'on puisse envier.
;AGNESE.
:{{Toute réjouie ||did}} : Et moi, je vous parie qu'il y a des gens nantis de huit ou dix mille ducats de rente qui n'ont pas comme vous le coeur content !
;BARBARA.
:Sûr qu'en ce bas monde, on n'est pas heureux si on ne se contente pas de ce qu'on a.
:Je vous jure que pour moi, je m'en contente.
://^^Court silence. Elle prend les mains d'Agnese. Soupir : ^^//
:Mon souci,
:ce sont ces deux pauvres petits.
:
:* Une fille à marier,
:* et __un garçon__ !
:
://^^Leger suspens, comme si elle jaugeait la jeune Agnese. Elle se décide^^//
:ce n'est pas pour dire,
::mais c'est une perle !
:ça fait longtemps que vous ne l'avez pas vu, mon fils ?
;AGNESE.
:Combien ça fait ?
:Trois ou quatre jours.
;BARBARA.
:N'est-ce pas qu'il a de la figure ?
;AGNESE.
:Oui, ma foi !
://,,avec une fougue surprenante :,,//
:on dirait un petit gentilhomme!
://^^Étincelle de plaisir dans les yeux de Barbara^^//
;BARBARA.
:Et __bon__, vous savez,
:Comme tranportée : mais __bon__ ;
::moi, je vous garantis que des bons garçons comme ça,
::on n'en trouve pas beaucoup !
://,,Agnese a l'air d'acquiescer :,,//
:Eh oui ;
:au jour d'aujourd'hui, allez le trouver un garçon de dix-huit ans
:*qui écoute ce qu'on lui dit,
:*qui rentre à ja maison de bonne heure,
:*qui n'a pas de fréquentations, ?
:*qui ne va nulle part sans demander la permission,
:*qui accepte de ne pas avoir un sou en poche. ?
::Lui, il ne prend jamais un café si ce n'est pas moi qui le paie,
::lui, il ne va jamais au théâtre si ce n'est pas avec moi, une fois par an ;
:::il ne joue pas,
:::il ne connaît même pas les cartes.
:Et vous savez,
:ne croyez pas que ce soit un benêt avec ça.
::Il a une de ces têtes !
::Tout ce que son maître trouvait à me dire, c'était :
:::Il est premier en ci,
:::il est premier en ça.
://,,Elle s'arrête, espérant avoir produit un bon effet : ,,//
:Eh oui !
;AGNESE.
:{{Mais Agnese ne commente pas, et revient sur un terrain factuel ||did}} : Qu'est-ce que vous comptez lui faire faire à ce garçon?
;BARBARA.
:{{Légèrement désarçonnée- revient à la réalité présente ||did}} : Je vais vous dire :
:{{Elle parle très franchement ||did}} : si j'avais les moyens, je voudrais qu'il soit avocat ;
:mais il faut de l'argent, il faut du temps,
:et puis il y en a tellement, tout le monde me le déconseille.
:Pour l'instant, je vois deux choses :
:→ sous-intendant sur un domaine,
:→ ou employé aux écritures chez un marchand.
{{LBM 108-124 AGNESE : Il serait capable de s'occuper d'un domaine}}
;AGNESE.
:{{Très professionnelle (comme un recrutement) ||did}} : C'est dommage qu'un garçon comme lui n'ait pas de bien.
;BARBARA.{{s'alarmant aussitôt ||did}} :
:Il est jeune ;
:il aura sa chance.
;AGNESE.
:{{Même jeu ||did}} : Quel âge a-t-il ?
;BARBARA.
:{{Fièrement ||did}} : Dix-huit ans depuis le douze du mois dernier.
;AGNESE.
:{{Coincidence touchante, qui les rapproche ||did}} : Juste l'âge où je me suis mariée, moi.
;BARBARA.
:{{« Finalement, elle est à peine moins jeune que mon Nicoletto » ||did}} : Et vous retrouver veuve __si jeune__ !
;AGNESE.
:Oui !
:{{Elle ne répond pas à l'arrière pensée de Barbara ||did}} : qu'est-ce que vous voulez.
:On n'y peut rien,
;BARBARA.
:{{Elle, elle s'accroche encore ||did}} : Vous vous remarierez.
;AGNESE.
:{{Regarde profondément son amie, puis répond avec un léger sourire ||scn}} : Qui sait ?
:{{En confiance, elle se livre un peu ||did}} : peut-être que oui.
:{{Redoutant d'être déçue ||did}} : Mais c'est tellement difficile de trouver son aise.
{{BARBARA I8 c - Vous, vous êtes comme une reine}}
;BARBARA.
:Pourquoi ?
:Moi, voyez-vous,
:{{Toute heureuse, croyant toucher au but, elle se découvre ||did}} :
:s'il arrivait à mon fils une chance pareille,
:je vous le donnerais
::en vous baisant les mains !
:Je l'aime ;
::mais ce n'est pas une raison pour l'empêcher d'aller habiter chez sa femme, tout de même.
:Oh ! non, siora,
:non et non;
:plût à dieu que ça lui arrive.
;AGNESE.
:{{Ne veut pas se laisser entraîner davantage sur le sujet (trop brûlant ?) de Nicoletto maintenant ||did}} : Et Siora Giacomina ?
:Qu'est-ce qu'elle fait ? Elle va bien ?
;BARBARA.
:{{Tirant une tronche ||did}} : Oh! oui, siora, elle va bien,
:{{Ayant perdu son allant ||did}} : vous la verrez tout à l'heure.
://`(A part :)`// {{rageuse ||did}} : Oh ! la voilà qui me ripe entre les doigts !
:{{N'ayant pasplus d'informations à recueillir dans le moment, elle choisit de partir. Elle se lève, ||scn}} :
;AGNESE,//` en se levant`//.
:{{Très affectueusement, à son amie qui peut-être un jour sera partie de sa famille (//« qui sait ? »//) ||did}}
: On pourrait l'embrasser avant de s'en aller ?
;BARBARA.
:{{Affolée ||did}} : Vous partez déjà ?
:{{Cherchant à la retenir ||did}} : Vous êtes si pressée ?
;AGNESE.
:Il faut que je parte,
:{{Elle a son prétexte prétexte ||did}} : ma servante est venue avec moi, et les lits ne sont pas faits,
:la poussière non plus,
:{{Petit sourire d'excuse ||did}} : rien n'est fait chez moi.
{{LBM108-149-qui voulez-vous qui me raccompagne}}
{{LBM108-289-Peut-être bien que ce n'est pas vrai, ce qu'on m'a raconté}}
::Il ne sait rien, vous savez,
::mais rien de rien ;
::l'autre jour, tenez,
::il a dit qu'il voulait se marier avec sa soeur.
:Ce n'est pas de l'innocence, ça ?
{{BARBARA I8 d - Des mauvais, sior'Agnese}}
;BARBARA.
:{{Lui tendant les bras ||scn}} : Je vous en prie, donnez-moi votre châle.
;AGNESE.
:Bon,
:pour vous faire plaisir.
;BARBARA.
:Venez ici ;
:laissez-moi faire.
://`(En la débarrassant :)`//
:Regardez-moi le beau brin de femme,
:mais regardez la mine qu'elle a !
:Oh !
:si j'héritais d'une bru pareille, c'est pour le coup que mon fils pourrait dire qu'il n'est pas né sans sa petite chemise.
;AGNESE.
:Je vais lui dire, à ma servante, qu'elle rentre à la maison.
;BARBARA.
:Faites-la venir ici.
;AGNESE.
:{{Elle a absolument besoin de se concerter avec sa servante ||did}} : Non, non, j'ai quelque chose à lui dire
: vous permettez ?
;BARBARA.
:Ecoutez, profitez-en pour aller faire une surprise à ma fille.
;AGNESE.
:Où est-elle ?
;BARBARA.
:Dans sa chambre.
;AGNESE.
:Je ne voudrais pas qu'elle pense que j'exagère.
;BARBARA.
:C'est vous qui dites une chose pareille ?
:Vous n'êtes pas chez vous ici ?
:Vous ne savez pas qu'ici tout le monde vous aime ?
:Tout le monde, vous savez !
:Tout le monde, oui,
:tout le monde,
:{{Fin sourire ||did}} : vous comprenez. ce que je veux dire ?
;AGNESE.
:Mais comme vous voilà gaillarde !
;BARBARA.
:Sois bénie, toi !// `(Elle l'embrasse.)`//
;AGNESE, //`à part en sortant. `//
:La bonne et brave femme !
::et les cajoleries qu'elle me fait !
:{{Elle délibère un instant en son for intérieur, leger soupir ||did}} : Qui sait ?
::on ne sait jamais. //`Elle sort`//
{{BARBARA I8 e - Si j'y arrive, tu seras verni, mon garçon}}
-► [[La Bonne Mère I,9 - LODOVICA et DANIELA.]]
`Vidéo LBM 21-4 → 37'46`
{{Où l'on fait connaissance d'une mère et d'une fille<br>qui aiment à se crèper le chignon<br>mais ne peuvent se passer l'une de l'autre||parti}}
```
Une pièce chez Lodovica.
Impression moins soignée que chez Barbara.
Le ton habituel est moins souriant et affectueux.
```
:{{Daniela entre toute occuppée à son allure||scn}}
;DANIELA.
:Mes cheveux sont bien arrangés comme ça, maman ?
;LODOVICA.
:{{Presque sans regarder ||did}}: Oui, ma fille, ça te va bien,
;DANIELA. {{insiste ||did}}:
:Et mon œillet , il est bien, là ?
;LODOVICA.
:{{Venant inspecter, comme une myope ; ||scn}}{{suspicieuse ||did}}: Qui le l'a donné, cet œillet ?
;DANIELA.
:{{Vivement (comme si ça devait être évident) ||did}}: Qui voulez-vous qui me donne des œillets ?
;LODOVICA. {{s'approchant ||scn}}:
:{{avec une grimace ||did}}: C'est un vrai ?
;DANIELA.
:Alors ça ! un vrai !
:{{un peu agacée ||did}}: vous voyez bien que c'est un [[oeillet de Vicence]], en soie !
;LODOVICA.
:{{collant son nez comme une myope ||scn}}: Tiens donc,
:{{Elle tâte l'œillet ||scn}}: on dirait qu'on vient de le cueillir !
:{{Levant les yeux sur sa fille ||scn}}: Je pensais que c'était Sior Gasparo qui te l'avait donné ?
;DANIELA.
:{{Soupir ||did}}: Oh ! Sior Gasparo,
:{{Ton de dépit ||did}}: ça fait un moment qu'il ne crache plus rien.
;LODOVICA.
:{{Ton de dépit ||did}}: Moi aussi, j'ai l'impression qu'il s'est un peu refroidi.
;DANIELA.
:{{Rageusement ||did}}: Oh ! plutôt.
;LODOVICA.
:{{Toujours tenant l'œillet ||scn}}: Tu crois qu'il veut se tirer ?
;DANIELA.
:{{Rageuse ||did}}: S'il veut se tirer, qu'il se tire,
:{{Grinçante, à sa mère ||scn}}:
:{{Méprisante ||did}}: ce n'est pas moi qui le retiens !
{{LBM 109-042 Depuis que Sior Nicoletto vient ici, Sior Gasparo n'est plus le même ma fille}}
;LODOVICA.
:{{Imitant le "//sacré vice//" de Daniela ||did}}: Une sacrée affaire voyez-vous !
:{{sourire grinçant ||did}}: la fin du monde, c'est ça ?
;DANIELA,.
:{{Sérieuse, lassée par ce comportement ||did}}: Moi, je ne veux pas que vous demandiez rien à personne.
;LODOVJCA.
:Oh !
:{{Elle rouspète ||did}}: moi je ne veux pas de petits rapiats chez moi.
;DANIELA.
:{{Riposte ||did}}: Moi, je ne vais chercher personne.
;LODOVJCA.
:{{Tac au tac ||did}}: Alors il ne viendra personne !
;DANIELA.{{elles rient ||did}}:
:C'est fou le tournis que ça me donne.
;LODOVICA.
:{{Gentiement ||did}}: Eh, tu ferais mieux de te mettre au travail.
;DANIELA.
:{{Un peu lasse ||did}}: Donnez-moi du travail,
:{{sourire de complaisance ||did}}: je le ferai.
:{{On frappe. ||scn}}
{{LBM 109-116 On frappe Va voir qui c'est}}
;LODOVICA.
:{{Tendre ||did}}: Allez,
:ne fais pas d'histoires,
:reste-là,
:{{→ Daniela prend plaisir à se faire prier ||did}}
:tiens-toi comme il faut
:{{en sortant elle insiste ||scn}}: et reçois-le comme il le mérite.
;DANIELA,
://`à part, en riant`//. Oh ! la vieille folle.
;LODOVICA.
:{{Passe la tête et aussi rit ||did}}: Tu ris, hein ?
;DANIELA.
:{{Elle rit ||did}}: Je ne devrais pas ?
;LODOVICA.
:{{Toute excitée ||did}}: Allez, allez, ris, sois heureuse,
:quelque chose finira bien par arriver !
-► [[La Bonne Mère I,10 Nicoletto et les mêmes.]]
;BARBARA, //`à Giacomina`//
:Allons, allons, laisse donc ton ouvrage.
:Tiens un peu compagnie à sior Agnese.
:Qu'est-ce que tu veux qu'elle dise ?
:Qu'elle est venue ici pour moisir d'ennui ?
;AGNESE
:Oh ! Ne vous gênez pas pour moi.
:Quand je suis à la maison, moi non plus je ne reste pas les bras croisés !
;GIACOMINA
:Encore quelques points, s'il vous plaît.
:Regardez,
:plus que ce morceau à festonner, et j'ai fini ma manchette.
;AGNESE
:Oui, ma petite,
:finissez-la.
;BARBARA
:La pauvre enfant,
:elle voudrait s'acheter de l'indienne pour se faire un sarrau.
;AGNESE
:Vraiment ?
;GIACOMINA
:Mais fine, je la veux.
;BARBARA
:Oh ! Ma fille,
:si tu tiens à ta fine indienne, tu n'as pas fini de broder !
;AGNESE
:Cher siora Barbara,
:si vous ne le prenez pas mal,
:je vous ferais bien une proposition.
;BARBARA
:Laquelle, siora Agnès ?
;AGNESE
:Une proposition qui vient du cœur,
:en gage d'amitié,
:pour rien au monde je ne voudrais vous blesser.
;BARBARA
:Allons, je vous en prie,
:avec moi pas besoin de toutes ces précautions.
;AGNESE
:Si vous acceptiez,
:si vous vouliez bien,
:j'aimerais le lui offrir moi-même, son sarrau, à cette petite.
;GLACOMINA,
:Alors ça !
:pourquoi ce serait vous ?
://`(A part :)`// Le rouge me monte à la figure.
;BARBARA.
:Chère sior'Agnese,
:rien ne vous oblige à vous donner vous-même cette peine.
;AGNESE
:Comment, cette peine ?
:Sacré nom !
:Moi, je dis que c'est un plaisir que vous me feriez si vous acceptiez.
;BARBARA.
:Qu'est-ce que tu en dis, Giacomina ?
;GIACOMINA.
:Qu'est-ce que vous voulez que je dise ?
://`(Elle essuie ses yeux pleins de larmes.)`//
;AGNESE
:Oh ! misère de moi !
:je vous ai froissée ?
:Ma chère petite, je vous demande pardon.
;BARBARA.
:Chère sior'Agnese, excusez-la.
:Bien qu'elle soit jeune, comme vous voyez,
:il lui arrive parfois, la pauvrette, de se rappeler qu'elle est de naissance honorable,
:et que les malheurs de son pauvre père nous ont réduits à l'état où nous voilà ;
:elle n'a pas encore assez de raison pour comprendre qu'avec une amie véritable, nous n'avons pas à rougir.
:Bien sûr, nous aimons mieux manger notre pain sec
:que d'agir comme certaine engeance et de n'être pas comme il faut :
::chez moi, personne n'y entre,
::plutôt mourir abandonnées.
:Mais avec Sior'Agnese ?
:Autant dire que c'est comme ma soeur.
::Oui, ma petite fille, laisse-la t'acheter ton tissu;
::remercie-la de l'affection qu'elle a pour nous,
::et ne rougis pas.
:Parce que vois-tu, mon coeur,
:si quémander est honteux,
:refuser par orgueil ne vaut pas mieux.
;AGNESE
:Ma foi, siora Barbara,
:vous allez me faire pleurer aussi.
;BARBARA.
:Vous avez donc le coeur bien tendre ?
;AGNESE
:Oh oui alors !
:je vous jure que j'ai le coeur sensible ;
:ce n'est pas pour dire,
:mais du coeur, j'en ai comme personne.
;BARBARA.
:Nous deux aussi, voyez-vous.
:Je vous jure que pour du sentiment,
:nous en avons, du sentiment;
:et mon garçon?
:le pauvret,
::il ne supporte pas qu'on fasse du mal à une mouche.
::Du sucre candi,
::pas une goutte de fiel dans le corps ;
::et pourtant, vous savez, quand il est en train, c'est le petit fou le plus adorable du monde.
:Crénom !
:s'il avait du bien, on pourrait croire que Sior'Agnese a été faite exactement pour lui.
;AGNESE
:Il met tout ce temps à rentrer ?
;BARBARA.
:Son parrain l'aura emmené quelque part.
:Il s'est pris d'une vraie passion pour ce garçon .
;AGNESE
:Dites-moi,
:vous voulez que nous nous occupions tout de suite de ce sarrau ?
;BARBARA.
:C'est vous qui voyez.
;AGNESE
:Quel genre d'indienne voudriez-vous, siora Giacomina ?
:Allons, mais pourquoi ?
:n'ayez pas honte,
:dites-le-moi.
;BARBARA.
:Allons,
:parle, je te le permets.
;GIACOMINA.
:J'en voudrais de la belle,
:avec des fleurs rouges.
;AGNESE
:Cela ne se fait plus, vous savez, les fleurs rouges.
;GLACOMINA,
:Oh ! ça m'est égal,
:moi, je les aime.
;AGNESE
:Vous voulez que nous fassions venir un marchand, pour que vous choisissiez ?
;GIACOMINA.
:On pourrait demander à Sior Rocco.
;BARBARA.
:C'est celui qui lui donne de l'ouvrage, vous savez.
:Ces manchettes, c'est pour lui.
:Mais il la paie si mal.
;GIACOMINA.
:Je ne gagne même pas six sous par jour.
;AGNESE
:Ce Sior Rocco,
:c'est celui de la boutique à l'enseigne du Crabe ?
;BARBARA.
:Oui, siora, c'est bien lui.
;AGNESE
:Oh ! oui, on trouve de tout chez lui.
:Je m'y fournis parfois, moi aussi.
;BARBARA.
:Oh !
:en quelques années, il a fait ses affaires.
;AGNESE,
://`à Barbara discrètement.`// Cet homme-là,
:écoutez voir, siora Barbara,
:cet homme-là, voyezvous,
:ce serait l'occasion rêvée pour votre fille.
;BARBARA.
:Passe à côté, ma petite,
:dis à Margarita qu'elle aille sur le balcon appeler 1'Efflanqué
:et qu'elle lui dise d'aller trouver Sior Rocco,
:Tissus-Mercerie,
:pour qu'il apporte ici un choix de ses indiennes.
;GLACOMINA,
:Oui, maman,
:tout de suite.
://`Elle sort.`//
→ [[La Bonne Mère II,2 - Barbara et Agnese.]]
;MARGARITA.
:Siora.
;BARBARA.
:Regarde s'il y a quelqu'un en bas qu'on puisse envoyer chez Sior Rocco lui demander un peu de fil pour coudre le sarrau d'indienne.
;MARGARITA.
:Vous voulez que moi, j'y fasse un saut ?
;BARBARA.
:Oui, vas-y, toi, mais fais vite.
;MARGARITA.
:Dites, vous savez pour les deux mouchoirs ?
;BARBARA.
:Quels mouchoirs ?
;MARGARITA.
:Ceux que Sior Nicoletto a pris.
;BARBARA.
:Qui t'en a parlé ?
;MARGARITA.
:Le garçon de Sior Rocco.
;BARBARA.
:Eh oui, je sais, ·i1 les a pris pour son parrain.
;MARGARITA.
:Pour son parrain ?
;BARBARA.
:Oui madame ; et tu recommences, toi, avec tes yeux ronds ?
;MARGARITA.
:Eh ! je ne dis rien.
://`(A part :)`// Elle s'en apercevra bien toute seule.
://`Elle sort.`//
;BARBARA,
://`à part`//.
:Je ne voudrais pas que celle-ci soit amoureuse de mon fils et qu'elle s'acharne après lui
:parce que c'est un bon garçon et que ces choses-là ne l'intéressent pas.
:Oh ! je vais ouvrir l'oeil.
;MARGARITA,
://`qui revient.`// Vous savez qui est en bas ?
;BARBARA.
:Qui ?
;MARGARITA.
:Votre compère, Sior Lunardo.
;BARBARA.
:Tant mieux, je suis contente.
;MARGARITA.
:Parlez-lui des deux mouchoirs.
;BARBARA.
:Allons, allons, madame je-sais-tout, dislui qu'il monte.
;MARGARITA,
://`à part, en sortant`//. Elle est complètement aveugle, la pauvre.
;GLACOMINA.
:Vous voulez que j'aille à côté ?
;BARBARA.
:Non, non, ma fille, reste donc.
:`//(A part :)//` Mon compère, je le connais;
:et nom de nom, je m'y fierais même si j'en avais dix des filles, au lieu d'une;
:c'est un brave homme,
:et puis, à son âge,
:pas de danger que quelqu'un y trouve à redire.
;GIACOMINA,
://`à part`//. Il me met dans une de ces rages, ce parrain,
:je ne peux pas le sentir.
:Il me dit de ces choses,
:il me fait de ces gestes...
::je ne l'ai encore pas dit à ma mère,
::mais s'il continue,
::sûr que je lui dis.
;BARBARA.
:Il en met du temps pour monter !
;GLACOMINA.
:Il a du mal, sûrement, avec sa douleur.
;BARBARA.
:Tu n'as pas entendu Nicoletto dire qu'il est complètement guéri ?
:qu'il a traversé à pied quasiment la moitié de Venise ?
;GIACOMINA.
:Si, maman,
:je n'y pensais plus.
;BARBARA.
:Le voilà, le voilà.
[[La Bonne Mère II,11 - Lunardo et les mêmes.]]
`Vidéo LBM 21-4 ? 1:16'41`
;LUNARDO.
:{{Il entre en boitant, et en s'appuyant sur sa canne.||scn}}
:{{Banal||did}} : Serviteur, ma commère.
;BARBARA.
:Servante, mon compère.
;LUNARDO.
:{{Onctueux, d'une voir douce||did}} : Ma filleule,
:{{Obséquiosité marquée||did}} : serviteur, ma petite.
;GIACOMINA.
:{{Réponse minimum||did}} : Servante.
;LUNARDO.
:{{À Giacomina, toujours onctueux||did}} : Vous pouvez me donner une chaise.
:{{Supplique enjôleuse||did}} : par pitié,
:{{Giacomina le toise d'un air "Prenez-la vous-même !"||scn}} :
:{{Il prend son air le plus douloureux pour se justifier||scn}} : que je m'assoie.
;BARBARA.
:{{Coupe le manège en s'interposant||scn}} :
:Qu'est-ce que vous avez ?
;LUNARDO.
:Vous savez bien, ma commère.
:{{Grimace||scn}} :
:Ma douleur,
:{{fataliste||did}} : comme d'habitude.
;BARBARA.
://` à Giacomina`//. Allez,
:donne-lui une chaise.
;GIACOMINA.
:{{Avec sa plus mauvaise volonté du monde||did}} : Oui, maman,
:tout de suite.
:{{Elle va prendre une chaise, et la pousse vers lui - comme un bouclier - en la faisant bien crisser sur le parquet.||scn}}
;BARBARA.
:{{Perplexe||did}} : Mais vous n'étiez pas guéri ?
;LUNARDO.
:{{Expression misérable pour appitoyer||scn}} : Non, ma petite ;
:{{L'air tragique||did}} : depuis trois quatre jours, c'est pire que jamais.
:Mais
:{{Grand soupir||did}} : qu'est-ce qu'on peut y faire ?
:{{Air du pêcheur soumis à Dieu||did}} : C'est le ciel qui le veut,
:pour me mortifier.
://`(A Giacomina :)`//{{avec effusion||did}} : Merci, petite,
:{{Il tente une caresse||scn}} : bénie sois-tu. {{Giacomina esquive prestement la bénédiction||scn}} :
:{{Il surjoue sa douleur en essayant de bien s'installer||did}} : Aie, aie.
;BARBARA.
:{{Reproche bourru||did}} : Et pourquoi avoir fait ce matin un trajet pareil ?
;LUNARDO.
:Ma chère petite, :{{regardant autant Giacomina que Barbara||scn}} ça faisait un bout de temps que je ne t'avais pas vue.
::{{Plaintif||did}} : De chez moi jusqu'ici, j'ai bien mis deux heures.
;BARBARA.
:{{dans un crescendo de plus en plus angoissé, Lunardo faisant un non de la tête ahuri à chaque question||scn}}
:Et vous n'êtes pas allé à Castello ? {{Signe que non de Lunardo||scn}}
:à 1'Arsenal ? {{Signe que non de Lunardo||scn}}
:sur les Fondamente nuove ? {{Signe que non de Lunardo||scn}}
:à Rialto... ? {{Signe que non de Lunardo||scn}}
;LUNARDO.
:{{Réussissant à l'interrompre||scn}} : Eh ! eh !
:{{Il rit||scn}} : même en un mois, je n'en fais pas autant.
;BARBARA.
: //`à part`//. {{Prise de vertige||scn}} :Oh! misère de moi !
://`(A Lunardo ')`// {{Espère encore une confirmation||did}} : Vous avez vu __mon fils__ ce matin ?
;LUNARDO.
:{{Sourire||did}}Non, siora, {{Il se gratte la tête||scn}}
:ça fait bien quinze jours qu'il n'est pas venu me trouver.
;BARBARA.
: //`à part`//. {{En rage et en détresse||did}} : Oh ! misère de moi !
:oh ! misère de moi !
;GIACOMINA,
://`à part`//.{{Sur l'air : "//Ah, quand même ! Je suis bien contente// !"||did}} : Eh hé ! les mensonges ont les jambes courtes.
;BARBARA.
:{{Se resaisissant||did}} : Dites-moi, mon cher compère,
:{{Elle veut obtenir une explication qui 'sauverait' Nicoletteo||did}} : vous avez demandé à mon fils d'acheter pour vous __deux mouchoirs__ ?
;LUNARDO.
:Chère siora,
:{{Patience agacée||did}} : je ne viens pas de te dire que je ne l'ai pas vu depuis quinze jours.
;BARBARA.
:{{Extrêmement tendue,||did}} : Mais avant,
:{{elle insiste||did}} : vous lui aviez __demandé__ ?
;LUNARDO.
:Non, ma petite,
:{{Secouant gentiment la tête||did}} : je ne lui ai rien demandé.
;BARBARA.
:{{Elle s'écarte brutalement, dos tourné pour cracher sa rage||scn}} : //`à part`//. Ah ! l'assassin ! ah ! l'infâme !
:{{au bord des larmes||did}} : ah ! c'est comme ça que tu trahis ta pauvre mère !
;LUNARDO.
:{{cheche à apaiser pour éviter ces complications d'humeurs féminines !||did}} : :Qu'est-ce qu'il y a, ma commère ?
:{{Ennuyé, sans conviction||did}} : Qu'est-ce qui s'est passé ?
;BARBARA.
:{{Se redresse et fait face l'air féroce et déterminé||scn}} :
:{{Injonction||did}} : Giacomina !
;GIACOMINA.
:{{Inquiète||did}} : Maman.
;BARBARA.
:Vite,
:{{Impérative||did}} : va me chercher ma veste et mon châle.
;GIACOMINA.
:{{? "Maman a son air que j'ai pas intérêt à lui poser une question !"||did}} : Oui, maman, tout de suite.
:{{En sortant en a parte au public||scn}} : Oh ! misère de nous !
:il ne manquerait plus que ça que mon frère tourne mal.
://`Elle sort.`//
? [[La Bonne Mère II,12 - Barbara et Lunardo.]]
`Vidéo LBM 21-4 → 1:19'51`
;BARBARA.
://` à part`//. Je veux aller chez Sior'Agnese ;
:et tout de suite ;
:je ne voudrais pas qu'il réussisse à m'échapper.
:Le chien,
:le voleur,
:l'assassin,
:comment je vais te le piler et te l'[[écrabouiller sous mes pieds]] !
;LUNARDO.
:Allons, ma commère,
:on peut savoir ce que vous avez ?
;BARBARA.
:Oh ! mon compère,
:je suis désespérée.
;LUNARDO.
:Non, ma commère, ne parlez pas ainsi ;
:il ne faut jamais désespérer.
;BARBARA.
:Mais il s'agit de mon fils,
:d'un fils que je me suis échinée tant et plus à élever ;
:en me privant de tout pour lui,
:en mangeant plus souvent mes larmes que mon pain;
:et quand je crois trouver bientôt ma récompense,
::je découvre que c'est un menteur,
::plein de filouteries,
::plein d'inventions.
:Et vous ne voulez pas que je parle ainsi ?
:Vous ne voulez pas que je me désespère ?
;LUNARDO.
:Ah ! sacrée jeunesse !
:Il a des fréquentations ?
;BARBARA.
:Je n'en sais rien,
:j'ai peur que oui.
;LUNARDO.
:Ah ! les fréquentations,
:elles sont la ruine de la jeunesse.
;BARBARA.
://` à part`//. Et Margarita qui n'est pas là.
:Sûr, sûr, elle sait quelque chose.
:Cette Rue de l'Oie ne me dit rien qui vaille.
[[La Bonne Mère II,13 - Giacomina et les mêmes.]]
`Vidéo LBM 21-4 → 1:21'08`
{{Où l'on voit que GIACOMINA n'a aucune envie de rester en tête à tête avec LUNARDO<br>qui, lui, devient de plus en plus souriant et attentionné||parti}}
;GIACOMINA,
://`en donnant châle et veste à sa mère`//.
:Tenez;
:qu'est-ce que vous voulez faire, maman ?
;BARBARA,
://`en s'habillant`//. Rien, rien,
:{{Regard interrogateur de Giacomina ||scn}}
:attends-moi,
:{{Pour tranquilliser sa fille :||did}} je serai vite de retour.
;GLACOMINA.
:{{Après avoir jeté un regard inquiet sur Lunardo ||did}} Vous en avez pour longtemps ?
;BARBARA.
:Je vais chez Sior'Agnese et je reviens.
:{{Giacomina lui désigne Lunardo, dont la présence l'agace ||scn}}
:{{Pour la tranquilliser :||did}} C'est à deux pas.
;GIACOMINA. {{agacée, insiste ||did}}
:Margarita aussi est sortie !
:... Elle est chez le mercier.
;BARBARA,
:{{en finissant de s'habiller, sans regarder sa fille ||scn}}
:{{Sous texte : je suis une bonne mère qui ne laisserait pas seule sa fille||did}} Je te laisse Sior Lunardo ;
:{{Toujours occupée à s'habiller, un argument pour rassurer||did}} jusqu'à mon retour, il te tiendra compagnie,
:{{avec un grand sourire à Lunardo : ||did}} n'est-ce pas ?
;LUNARDO.
:{{Petite révérence avec un large sourire||scn}} Si cela peut vous rendre service...
:{{Il regarde très affectueusement sa filleule||scn}}
;GIACOMINA.
:{{Renfrognée||did}} Eh non, non,
:{{sourire forcé||did}} si vous voulez partir, partez,
:{{Bravache ||did}} moi, je n'ai pas peur.
;LUNARDO.
:{{Assurant avec autorité, devant Barbara, son rôle de tuteur ||did}} Eh non, petite, les jeunes filles ne doivent pas rester seules à la maison.
:{{À Giacomina, avec un grand sourire : ||did}} Je ne bouge pas d'ici, moi,
:{{À Barbara : ||did}} je ne bouge pas.
;BARBARA. {{en sortant, très pressée ||scn}}
:Avec votre permission, mon compère ;
:attendez-moi,
:je reviens.
:{{Elle sort||scn}}
:{{Mais réapparait||scn}} Mais
:{{se forçant à rigoler||did}} regardez mon châle,
:{{Elle se rajuste, énervée ||did}} comment je l'ai mis !
:{{En sortant à nouveau, en grande agitation||scn}} Je ne sais même plus ce que je fais, ni ce que je dis.
:{{repassant la tête ||scn}} Je suis hors de moi.
:Jésus, tiens-moi les mains ! {{..qu'elle joint, faisant tomber un effet, qu'elle ramasse aussitôt||scn}}
://`Elle sort.`//
[[La Bonne Mère II,14 - Lunardo et Giacomina.]]
`Vidéo LBM 21-4 → 1:22'18`
{{Où l'on découvre un LUNARDO particulièrement collant et entreprenant<br>au point d'insupporter GLACOMINA||parti}}
;LUNARDO.
://` à part.`// {{En fond de scène (par exemple fond Jardin), il est manifestement ravi de la situation qui le laisse seul avec la belle Giacomina||did}} Voyez-moi ça,
:quand on dit que le hasard...
:Une occasion comme celle-ci,
:je ne savais plus ce que c'était.
;GLACOMINA.
:{{En avant-scène Cour, tournant ostensiblement le dos à Lunardo sous prétexte d'avoir une bonne lumière||scn}}
://`debout, festonne sa manchette.`//
;LUNARDO. {{Un pas vers elle||scn}}
:{{Exagérément obséquieux ||sc}}: Qu'est-ce que vous faites, siora Giacomina ?
;GLACOMINA.
:{{Sans s'interrompre ||did}}: Vous ne voyez pas ?
:{{Tournant à peine la tête ||did}}: Je brode.
;LUNARDO. {{Un nouveau pas vers elle||scn}}
:Pourquoi vous ne vous asseyez pas ?
;GIACOMINA.
:{{Sans s'interrompre ||did}}:Parce que je ne suis pas fatiguée.
;LUNARDO. {{Lui rapprochant un siège||scn}}
:Allons,
:{{Affable ||did}}: asseyez-vous.
;GIACOMINA.
:{{Sans s'interrompre ||did}}:Oh ! je suis bien debout.
;LUNARDO.
:Allons, assèyez-vous.
:{{→ Elle ne bouge pas ||did}}
:{{Maître d'école ||did}}: C'est un ordre.
:{{Pédagogique ||did}}: A son parrain, on doit obéissance;
:{{Insistant ||did}}: asseyez-vous.
;GLACOMINA.
:{{Grand soupir ||did}}: Oui, sior,
:j'obéis.
://`Elle prend une chaise et va s'asseoir loin de Lunardo.`//{{en la traïnant le plus bruyamment possible avec la meilleure mauvaise volonté du monde ||scn}}
;LUNARDO.
:{{Il suit le manège de giacomina, médusé ||did}}:
:Pourquoi vous vous mettez si loin ?
;GIACOMINA.
:{{Le nez sur son ouvrage, sèchement ||did}}: Pour y voir clair.
;LUNARDO.
:{{Un instant décontenancé, il trouve une parade, va prendre une chaise et arbore un grand sourire ||did}}:
:Vous avez raison.
:Je vais me mettre un peu plus par là aussi.
://`(Avec sa chaise, il veut se rapprocher de Giacominq, mais sa douleur le gêne :)`//
:Aie, aie, la maudite douleur l
;GLACOMINA,
://`à part. `//{{pouffe en prenant le public à témoin ||sc}}: C'est bien fait pour lui.
;LUNARDO. {{avance en claudicant péniblement, et regarde par dessus l'épaule de Giacomina ||scn}}:
:Ma filleule,
:quel genre de dé tu as ?
;GLACOMINA.
:{{Essayant de faire écran ||did}}: Oh ! un vieux en laiton.
;LUNARDO.
:{{Se place à côté d'elle et se baisse à son niveau, poue voir ||did}}: Dis-moi,
:tu veux que je t'en achète un, __en argent__ ?
;GLACOMINA.
:{{commençant à s'exaspérer ||did}}: Merci, merci,
:le mien me suffit pour ce que j'ai à faire.
;LUNARDO.
:{{S'approche encore", presque à lui frôler le visage ||did}}: Fais-moi donc voir ce que tu brodes de beau. //`(Il met ses lunettes.)`//
;GLACOMINA.
:{{Elle l'écarte d'un coup de coude ||scn}}:Oh! y a rien de beau là dedans.
;LUNARDO.
:{{Reprenant son équilibre, il la considère ||scn}}:
:Eh! si,
:{{Admiratif ||sc}}: qu'il y a quelque chose de beau,
:{{avec son sourire le plus charmeur ||did}}:
:là.
;GLACOMINA,
://`à part.`//{{Grinçante, au public ||did}}: Oh ! ce que j'en ai assez !
;LUNARDO.
:{{Se penchant à nouveau ||scn}}: Ma petite, laisse-moi prendre la mesure de ton dé, {{Il va pour lui prendre la main ||scn}}
;GLACOMINA. {{l'écartant brutalement ||scn}}
:{{Exaspérée ||did}}: Non, sior.
;LUNARDO.
:{{Suave ||sc}}: Allons.
;GIACOMINA,
:{{se lève vivement pour le giffler ... ||scn}}: C'est fini, oui ?
{{... quand arrive Margarita. ||scn}}
[[La Bonne Mère II,15 - Margarita et les mêmes.]]
`Vidéo LBM 21-4 → 1:24'40"`
;MARGARITA.
:Voilà, j'ai le fil.
;GLACOMINA.
:Donne, donne.
;MARGARITA.
:Où est la patronne ?
;GLACOMINA.
:Elle n'est pas là. Elle va revenir. //`(Elle veut sortir.)`//
;LUNARDO.
:Où vas-tu, ma filleule ?
;GLACOMINA.
:Couper un sarrau.
;LUNARDO.
:Tu veux que je vienne avec toi ?
://`Il essaie de se lever et n'y parvient pas.`//
;GLACOMINA.
:Non, sior, non, sior.
;LUNARDO.
:Aide-moi, que je puisse me lever.
;GLACOMINA.
://`à part`//. Eh ! qu'il aille se faire voir.
://`Elle sort.`//
[[La Bonne Mère II,16 - Lunardo et Margarita.]]
`Vidéo LBM 21-4 → 1:25'10"`
;MARGARITA.
:Vous voulez que moi, je vous aide ?
;LUNARDO.
:Oui, petite, fais-moi ce plaisir.
;MARGARITA.
:Bien sûr.
://`Elle l'aide à se lever.`//
;LUNARDO.
:Bénie sois-tu.
:Tu es une brave fille comme je les aime,
:tu as du coeur.
:Toi, au moins, tu n'es pas malpolie comme cette Siora Giacomina.
;MARGARITA.
:Crénom ! quand on peut rendre service.
;LUNARDO.
:Pas vrai, petite ?
:Aide-moi, s'il te plaît.
;MARGARITA.
:Vous voulez partir ?
;LUNARDO.
:Un courant d'air qui vient du balcon :
:je voudrais m'installer un peu plus par là.
;MARGARITA.
:Qu'est-ce que vous avez que vous ne pouvez pas marcher ?
;LUNARDO.
:Une douleur dans un genou.
;MARGARITA.
:D'où elle a pu venir ?
;LUNARDO.
:Je n'en sais rien, ma petite fille;
:le mal vient quand il l'a décidé.
:Et pourtant, tu sais, sur moi,
:il n'y a rien à redire.
:J'ai toujours fait attention.
;MARGARITA.
:Vous êtes un homme si bien !
;LUNARDO.
:Qui t'a dit ça, petite, que je suis un homme bien ?
;MARGARITA.
:La patronne.
;LUNARDO.
:Grâce au ciel, j'ai cette réputation.
:Apporte ma chaise ici.
;MARGARITA.
:Bien sûr.
://`· Elle lui apporte sa chaise.`//
;LUNARDO,
://`en s'asseyant`//. Aie, aie.
;MARGARITA.
:Pauvre homme, vous me faites pitié.
{{LBM216-052_Assieds-toi aussi toi à côté de moi.}}
;LUNARDO.
:Comment tu t'appelles ?
;MARGARITA.
:Margarita.
;LUNARDO.
:Margarita, tu m'aimes ?
;MARGARITA.
:Bien sûr.
://`(A part .')`// Oh ! le vieux dégoûtant !
:Mais regardez-moi où la rage d'amour ne va pas se fourrer.
;LUNARDO.
:Pas un mot à ta patronne, hein.
;MARGARITA.
:Oh ! non, sior,
:pas de danger.
;LUNARDO.
:Tu viendras me voir ?
;MARGARITA.
:Oh !
:qu'est-ce que les gens diraient ?
;LUNARDO.
:Je suis à marier aussi, moi.
;MARGARITA.
:Vous avez l'intention de vous marier ?
;LUNARDO.
:Pourquoi pas ?
;MARGARITA.
://`à part`//. S'il n'avait pas sa douleur.
;LUNARDO.
:Ecoute,
:je suis riche, tu sais.
;MARGARITA.
:Oh ! voici la patronne.
://`Elle se lève.`//
;LUNARDO.
:Tu te tais, hein.
;MARGARITA.
:Oh ! je me tais.
[[La Bonne Mère II,17 - Barbara et les mêmes.]]
:`Vidéo LBM 21-4 → 1:26'32"`
:^^//`manège 1 → 1:35'56"`// - //`manège 2 → 1:41'29"`//^^
:`LBM 21-4 → 1:48'00"`
;BARBARA.
://`à Margarita`//. Mon fils n'est pas rentré ?
;MARGARITA.
:Non, siora.
;BARBARA.
:Ah ! misère de moi ! où peut-il bien être ?
;MARGARITA.
:Il n'a pas ramené Sior'Agnese chez elle ?
;BARBARA.
:Si madame, et j'y suis allée. Elle m'a dit qu'à peine arrivé devant sa porte, il est reparti en courant, et je ne sais pas où il est; misère de moi, je ne sais pas où il est.
;MARGARITA.
:Il est sûrement Rue de l'Oie.
;BARBARA.
:Mais chez qui Rue de l'Oie ? Si tu sais quelque chose, dis-le.
;MARGARITA.
:Mais ma chère patronne, quand je le dis, vous ne me croyez pas,
:vous me sautez aux yeux
:vous me dites que je veux semer le mal.
;BARBARA.
:Ma chère Margarita, si tu m'aimes, dismoi tout,
:dis-moi ce que tu sais.
:Je vois bien que mon garçon n'est plus le même.
:J'ai découvert que c'est un menteur,
:je ne m'y fie plus.
:Mais essayons de trouver un moyen,
:s'il y en a un;
:vous aussi, mon compère,
:dans l'embarras où je suis, ne m'abandonnez pas,
:par pitié.
;LUNARDO.
:Je ferai ce que je pourrai.
://`(A. part :)`// Vivement que je sois parti.
;MARGARITA.
:Vous voulez que je vous raconte ?
;BARBARA.
:Oui, raconte-moi.
;MARGARITA.
:Si vous voulez que je vous raconte, alors je vous raconte.
:Figurez-vous que Sior Nicoletto, il va chez une fille,
:Rue de l'Oie,
:et cette fille, elle vit avec sa mère.
:Mais la mère,
:elle a déjà marié ses trois autres filles sans dot,
:et Sior Nicoletto,
:les deux mouchoirs,
:il en a donné un à la fille, l'autre à la mère.
:Et vous savez qui c'est qui l'a poussé à aller chez ces gens-là ?
:Sior Gasparo Latughetta,
:un joueur fini, un dévergondé,
:et votre fils, vous savez, il voulait que moi,
:je lui prête un ducat,
:et comme j'ai dit non,
:il m'a envoyée au diable et il a dit «//sacré nom de Dieu // » ;
:et vous voulez que je vous raconte la meilleure ?
:Il a un couteau sur lui...
;BARBARA.
:Qui ?
;MARGARITA.
:Sior Nicoletto...
;BARBARA.
:Mon fils ?
;MARGARITA.
:Oui, parole d'honnête fille.
;BARBARA.
:Misère de moi, misère !
:vous avez entendu, mon compère ?
;LUNARDO.
:J'ai entendu, moi, oui.
;BARBARA.
:Si ce n'est pas du tourment, dites ?
;LUNARDO.
:Ah ! je l'ai toujours dit.
:Les femmes sont la ruine du monde.
;MARGARITA, //`à part`//.
:Elles ne lui font pourtant pas des brûlures d'estomac non plus, à lui.
;BARBARA.
://`à Marganita`//. Tu sais où elles habitent ces femmes, Rue de l'Oie ?
;MARGARITA.
:Vous savez celle qui le sait ?
:celle qui les connaît ?
:et qui m'a tout raconté ?
:La blanchisseuse,
:elle lave aussi pour elles,
:et si vous voulez,
:si vous lui donnez une pièce de trente sous, je suis sûre qu'elle vous conduira jusqu'à leur porte,
:et qu'elle vous fera même ouvrir, et monter chez elles.
;BARBARA.
:Où peut-on la trouver, la blanchisseuse ?
;MARGARITA.
:Tout à l'heure, en revenant de chez le mercier, je l'ai vue sur la place
:commencer une lessive.
;BARBARA.
:Va la chercher,
:dis-lui qu'elle vienne avec moi ;
:je lui donnerai ses trente sous,
:je lui donnerai un ducat,
:je lui donnerai tout ce qu'elle voudra.
;MARGARITA.
:Oui, siora,
:j'y vais tout de suite.
://`(A part :)`// Sale petit garnement,
:ça t'apprendra à envoyer les gens au diable.
://`Elle sort.`//
;BARBARA.
:Mon compère,
:je vous en supplie, venez avec moi.
;LUNARDO.
:Comment voulez-vous que je fasse ?
:Vous savez bien que je ne peux pas marcher ?
;BARBARA.
:On prendra une gondole.
;LUNARDO.
:S'il vous plaît, ne me demandez pas cela.
;BARBARA.
:Ne me laissez pas seule à mon désespoir,
:je suis capable de tout.
;LUNARDO.
:Oh ! misère de moi.
://`Il se lève et peine à mancher.`//
;BARBARA.
:Appuyez-vous sur moi. //`(Elle l'aide.)`//
;LUNARDO.
:Une maison où il n'y a que des femmes, moi, ce n'est pas ma place,
:je n'aime...
;BARBARA.
:De quoi vous avez peur ?
:vous êtes avec moi.
:Plus vite, mon compère.
;LUNARDO.
:Mais j'ai tellement de mal à marcher.
;BARBARA.
:Dépêchons-nous, je vais vous aider.
://`(Elle le soutient.)`//
:Qui aurait pu dire une chose pareille ?
:un si bon garçon !
://`Elle s'échauffe en parlant et se meut avec bmsquenie, déséquilibrant Lunardo qui s'en plaint.`//
;LUNARDO.
:Aie !
;BARBARA.
:Il était la chair de ma chair,
:il était toute ma joie.
:Ils me l'ont tué.
;LUNARDO.
:Aie !
;BARBARA.
:Mon compère,
:par pitié.
://`Elle le pousse en avant d'un geste vigourelK et sort, tout agitée.`//
;LUNARDO.
:Ma commère, ne me fais pas dégringoler.
://`Il vacille, puis retrouve son équilibre et sort en boitant.`//
[[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
;BARBARA.
:Je lui ai demandé de sortir, vous savez,
:parce que...
;AGNESE
:Oh !
:vous avez agi là en femme de...
;BARBARA.
:Pour vous dire ce qu'il en est,
:pour vous parler à coeur ouvert,
:moi aussi j'avais jeté les yeux sur ce Sior Rocco;
:et de son côté,
:j'ai l'impression,
:j'ai l'impression qu'il la reluque, la petite,
:et pourtant, vous savez,
:quand il vient ici, on le tient à distance,
:mais vraiment à distance ;
:Giacomina ne lui a jamais dit un mot,
:et quand il s'approche d'elle pour regarder son ouvrage,
:je lui fais de ces yeux, moi,
:il en tremble de peur.
;AGNESE
:Oh ! chère siora Barbara,
:Mais il ne faut pas non plus être si...
;BARBARA.
:Oh ! mon amie !
:Quand on sait qu'une fille est pauvre, on se croit tout permis ;
::on a vite fait,
::on a plus vite dit,
::et votre réputation est fichue,
::on jase sur vous dans les boutiques.
;AGNESE
:C'est vrai ;
:mais il faut penser aussi au moyen de la marier.
;BARBARA.
:Ecoutez ;
:je vais vous dire ce qu'il en est, comme si j'étais devant le Doge.
:Moi,
:quand je me suis mariée,
:j'ai eu quatre mille ducats de dot.
:Quand mon pauvre mari est mort, j'ai voulu les toucher,
:et il en manquait la moitié.
:Les deux mille qu'on a pu récupérer, je les ai placés en fonds d'état,
::et avec le peu qu'ils rapportent,
::avec le petit héritage que m'a laissé un de mes oncles,
::avec le peu que produit notre ouvrage,
::nous nous en tirons du mieux que nous pouvons.
:Si j'arrivais à caser mon fils,
:si ce pauvre garçon pouvait s'en tirer sans avoir besoin de moi,
:les deux mille ducats, moi, je les donnerais tout de suite à la petite.
:Mais vous voyez bien,
:pour l'instant je ne peux pas ôter au garçon pour donner à la fille.
:J'espère seulement que le ciel interviendra.
:C'est un si bon garçon que j'ai de l'espoir,
:la fortune lui viendra forcément en aide.
:N'est-ce pas, sior'Agnese ?
:Vous aussi vous me donnez des raisons d'espérer ?
;AGNESE
:Moi,
:oui, mon amie;
:mon coeur nie dit que Sior Nicoletto aura sa chance et fera des prouesses.
;BARBARA.
:Oh !
:béni soit votre coeur !
[[La Bonne Mère II,3 - Giacomina et les mêmes.]]
;GLACOMINA,
:Maman,
:Nicoletto est rentré.
;BARBARA.
:Oh ! tant mieux.
:Où il est ?
;GLACOMINA,
:Je viens de lui ouvrir.
;BARBARA.
:Tu as dit à Margarita ?
;GLACOMINA,
:Oui, maman.
:L'Efflanqué n'était pas là, elle y a envoyé Le Furoncle.
;AGNESE.
:En voilà des drôles de noms ?
;BARBARA.
:Des noms de traîne-savates, mon amie.
:Des gaillards, en bas, sur la place,
:que j'envoie de temps en temps me faire une commission pour que Margarita ne soit pas toujours dehors.
:Où il est passé, Nicoletto ?
;GIACOMINA.
:Sûrement qu'il se change.
;BARBARA.
:Va lui dire qu'il vienne ici avant de se changer.
;GLACOMINA,
:Oui, maman.
;BARBARA.
:Et toi, reste à côté :
:quand Sior Rocco arrivera, je t'appellerai.
;GIACOMINA.
:Comme vous voudrez.
://`(A part, en s'en allant .')`// ça lui prend de temps en temps de dire des choses que moi, je n'ai pas à entendre.
[[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
;AGNESE.
:Et cette fois, pourquoi vous la faites sortir ?
;BARBARA.
:Parce que, voyez-vous,
:si elle reste ici :
:- elle va écouter,
:- elle va rêvasser,
:- elle ne fera rien.
;AGNESE.
:Sacré nom !
:vous la menez à la baguette.
;BARBARA.
:Le voilà,
:le voilà,
:mon bijou.
;NICOLETTO.
:Serviteur, mesdames.
;AGNESE.
:Servante, sior Nicoletto.
://`(A part :)`// Mais
:... quel charmant garçon !
;BARBARA.
:Venez un peu ici, monsieur le fripon,
:où vous avez été jusqu'à maintenant ?
;NICOLETTO.
:Chez mon parrain.
;BARBARA.
:Tout ce temps chez ton parrain ?
;NICOLETTO.
:Tout ce temps,
:depuis que je suis parti jusqu'à maintenant. '
;BARBARA.
:Attention, vois-tu,
:je le saurai.
;NCOLETTO.
:Vous n'avez qu'à lui demander.
;BARBARA,
://`bas à Agnese.`// Oh ! pas de danger, vous savez.
;AGNESE,
://`bas à Barbara.`// Oh ! ça se voit.
;BARBARA.
:Qu'est-ce qu'il fait, mon compère ?
;NICOLETTO.
:Il va bien,
:il m'a dit de vous dire bonjour.
;BARBARA.
:Comment va sa douleur ?
;NICOLETTO.
:Elle lui a passé.
;BARBARA.
:Vraiment ?
:Tant mieux qu'elle lui ait passé.
:Alors il marche normalement ?
;NICOLETTO.
:Normalement.
://`(A part :)`// Oh ! toutes les craques que je lui colle.
;BARBARA.
:Tu es sorti avec lui ?
;NICOLETTO.
:Oui, maman.
;BARBARA.
:Allez,
:raconte à Sior'Agnese où vous avez été.
;NICOLETTO.
:Qu'est-ce que ça peut lui faire, à Sior'Agnese, où j'ai été ?
;AGNESE.
:Mais si, mon garçon,
:j'aurai plaisir à t'entendre, moi aussi.
:On dit que tu parles si bien.
:Raconte-moi un peu.
;NICOLETTO.
:On est passés par tant d'endroits que je ne me rappelle plus.
;BARBARA.
:Allons donc,
:tu te rappelles bien quelque chose.
;NICOLETTO.
:On a d'abord été Place Saint-Marc,
:on a longé la Riva dei Schiavoni,
:on a tourné vers 1'Arsenal,
:et on s'est retrouvés à Barbania délie Tole.
:Alors on a pris vers les Fondamente nuove,
:on a coupé par Calle délia Testa pour arriver au Fontego dei Tedeschi
:et de là on est remontés dans Cannaregio,
:on a traversé à Riva de Biasio pour aller faire une commission aux Tre Ponti,
:et puis,
:par le pont de Rialto,
:on est allés voir un ami à lui [[Calle delle Ballotte]].
;AGNESE.
:Eh eh,
:vous avez fait trois milles au moins. //,,`trois fois 1,5 km environ`,,//
;BARBARA.
:Comment a-t-il fait, mon compère, pour marcher autant ?
;NICOLETTO.
:Sacré nom, il marche!
:tout juste si j'arrive à le suivre.
;BARBARA.
:C'est qu'il est vraiment guéri, alors.
://`(A Agnese :)`// Et pourtant, vous savez, il a eu une douleur qui l'a tenu deux mois cloué dans son lit,
:et ça fait tout juste une semaine qu'il met le pied dehors.
;AGNESE.
:Et vous voudriez qu'il ait fait un trajet pareil ?
:Oh !
:c'est impossible.
;BARBARA.
:Oh! mon fils ne dit pas de mensonges.
;NICOLETTO.
:Moi, des mensonges ?
:Je ne sais même pas quelle couleur ils ont, les mensonges.
;BARBARA.
:Malheur à lui s'il disait des mensonges !
;AGNESE.
:Vous me ramènerez chez moi, sior Nicoletto ?
;NICOLETTO.
:Oui, siora, avec plaisir.
;AGNESE.
:Vous n'êtes pas fatigué ?
;NICOLETTO.
:Oh ! moi,
:fatigué ?
;BARBARA.
:Oh ! les jeunes gens ne sont jamais fatigués, mon amie.
:Et puis, vous ne voyez pas le colosse que c'est ?
;AGNESE.
:Oh ! oui, il est solide pour son âge.
;NICOLETTO.
:Regardez comment je suis fatigué.
:Ah!
:ah !
:ah ! //`(Il se met à sauter et à danser.)`//
;BARBARA.
:Non mais,
:regardez-le !
:il en fait de belles, n'est-ce pas ?
;AGNESE.
:C'est de son âge.
;NICOLETTO.
:Ah !
:ah ! //`(même jeu.)`//
;BARBARA.
:Hé la, hé la !
://`(Elle découvre le cordon de la montre)`//
:Qu'est-ce que c'est que ce cordon ?
;NICOLETTO.
:Rien, rien.
://`(A part :)`// Malédiction, j'avais oublié.
;BARBARA.
:Tu as une montre Nicoletto ? Alors ça !
:Je te parie que ton parrain t'aura donné une montre ?
;NICOLETTO.
:Oui, maman,
:mon parrain m'en a donné une.
;BARBARA.
:Fais voir un peu.
://`(Elle s'approche de Nicolerto.)`//
;NICOLETTO.
:Alors ça!
;BARBARA.
:Allez,
:je veux voir cette montre.
;NICOLETTO.
:Qu'est-ce qu'il y a à voir 7
;BARBARA.
:Dépêche-toi, sinon je me fâche.
;NICOLETTO, //`bas à Barbara`//.
:Tenez, regardez.
://`(Il lui montre en cachette la clé qu'il a attachée au cordon)`//
;BARBARA.
:Qu'est-ce que c'est que ces façons, espèce de m”as-tu-vu ?
;NICOLETTO, //`bas à Barbara`//.
:Ne me faites pas railler par Sior'Agnese.
;AGNESE, //`d'une voix forte`//.
:Qu'est-ce que c'est ?
:une babiole en plomb ?
;BARBARA.
:Non, siora ;
://`(avec mépris :)`// une clé.
;AGNESE.
:Oh ! mais oui, siora,
:combien j'en ai vu le faire !
;BARBARA, //`à Nicoletto`//.
:Qu'est-ce que c'est que ces fariboles ?
:Qu'est-ce que c'est que ces airs qu'on se donne ?
:Pas de ça, tu m'entends :
:c'est la première fois et c*est la dernière,
:compris ?
://`(Bas à Agnese :)`// Des bêtises de jeune homme.
;AGNESE,//` à Barbara`//.
:Eh oui, des broutilles.
;BARBARA.
:Un jour, si tu es raisonnable,
::toi aussi tu pourras faire bonne figure, comme les autres ;
::tu auras une montre à toi,
::tu auras tout ce qu'il te faut.
:Pas vrai, sior'Agnese ?
;AGNESE.
:Bien sûr,
:si tel est son désir
:et s'i1 s'y tient ferme.
;NICOLETTO.
:Je ne me tiens pas bien pour l'instant ?
;BARBARA.
:Cette histoire ne m'a pas plu.
::Ce n'est pas beau,
::ce n'est pas bien,
::et c'est ta mère qui te le dit,
:et elle te le dit devant quelqu'un qui pourrait lui en remontrer,
:et qui a de l'affection pour nous.
;NICOLETTO.
:Pour moi, sior'Agnese ?
;AGNESE.
:Oui, sior,
:pour toi aussi,
:comme pour ta mère et ta soeur.
;NICOLETTO..
:Mais pour moi,
:...plus.
;AGNESE.
:Pourquoi plus pour toi ?
;NICOLETTO.
:Je vous en prie,
:dites-moi que oui.
;AGNESE, //`bas à Barbara`//.
:C'est qu'il y entendrait malice, le drôle.
;BARBARA, //`bas à Agnese`//.
:Rien, je vous dis,
:il ne sait rien.
[[La Bonne Mère II,5 - Giacomina, qui entre en travaillant à sa broderie, et les mêmes.]]
;GLACOMINA,
:Le marchand est là.
;BARBARA.
:Fais-le entrer.
;NICOLETTO.
:Qui c'est ?
;GLACOMINA,
:Sior Rocco.
;NICOLETTO,
://`à part`//. Nom de nom, je ne voudrais pas qu'il parle des deux mouchoirs que je lui ai pris à crédit.
://`(Haut :)`// Avec votre permission.
://`(En se dirigeant vers la porte :)`//
:J'ai une commission à faire.
;AGNESE.
:Rappelle-toi que ru dois me ramener chez moi.
;NICOLETTO.
:Oui, siora,
:je reviens tout de suite.
[[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
`Vidéo LBM 21-4 ? 58'46`
;BARBARA
://`à Agnese`//. Qu'est-ce que vous dites de cet écervelé avec son histoire de montre ?
;AGNESE.
:Oh ! ce n'est pas grave.
;BARBARA.
:Oh ! mais moi, pas question de m'en faire accroire, voyez-vous.
:Je ne laisse rien passer,
:je ne lui passe rien.
---
:C'est pour cela qu'il me craint,
:pas de danger qu'il se laisse aller, je peux dormir tranquille ;
---
:et quand il se mariera, celle qui tombera sur lui pourra dire :
::« //Je suis tombée sur de l'or en barre// ».
::De l'or en barre, sior'Agnese,
::de l'or en barre.
;AGNESE.
://`à part`//. Oh ! il faut que je m'en aille, parce qu'elle m'en dit tant que
:pour un peu,
:pour un peu...
;ROCCO
://`en entrant`//.
: {{suivi du garçon portant un énorme ballot de tissu en tous genres. Les 3 femmes sont encore regroupées en avant scène cour. Rocco s'incline légèrement pour les saluer avec un sourire chaleureux ||scn}}
:Votre serviteur, mesdames.
;BARBARA.
:{{accueillante||did}} Bonjour, sior Rocco.
;AGNESE.
:{{bienveillante||did}} Bonjour, sior Rocco.
;ROCCO
:{{il s'approche du groupe, et particulièrement de Giacomina. Très galamment :||scn}}
:Votre serviteur, siora Giacomina,
:votre serviteur.
;GLACOMINA,
:{{Polie, sans affect||did}} Servante.
;ROCCO
:{{S'approchant d'elle, faisant mine de chercher à voir son ouvrage,affectueux||scn}}
:Vous avez fini les manchettes ?
;GLACOMINA. {{va à la desserte où elle a posé son ouvrage||scn}}
:{{idem||did}} Presque.
;ROCCO {{la rejoint||scn}}
:Du travail soigné ?
:{{Il se penche pour examiner, (très proche d'elle)||scn}}
:Faites voir ça.
;BARBARA
://`à Rocco`//. Eh là !
:{{ Souriante mais impérative ||scn}} c'est à nous que vous devez vous intéresser, sior.
;AGNESE.
://`à Barbara`//. Sacré nom! il --l'a-- nous a à peine regardées.
;ROCCO
://`à Barbara.`// {{ Se tournant vers elles en riant||scn}} Je ne peux même pas regarder ce qui m'appartient ?
;BARBARA.
:{{ Sévérité amicale ||did}} : Vous les regarderez quand elles seront finies.
;ROCCO {{ Revenant vers elles ||scn}}
:{{ Avec un grand rire ||scn}} : Mais qu'elle est mauvaise, cette Siora Barbara !
;BARBARA
:{{ Grimace de douleur par plaisanterie ||scn}} : Vous ne saviez pas que j'ai des brûlures d'estomac ?
;AGNESE.
:{{ Gentiment ||did}} : Et pourtant elle vous aime bien, voyez-vous.
:{{ Malicieusement ||did}} : Si vous saviez ce qu'elle m'a dit de vous.
;ROCCO
:{{Se rengorge||did}}Qu'est-ce qu'elle a dit ?
;BARBARA. {{coupe vite||scn}}
:Eh là,
:vous les avez apportées, ces indiennes ?
;ROCCO
:Oui, siora ;
:{{ Il va à la table où le garçon à disposé les tissus||scn}}
:vous en voulez beaucoup ?
;BARBARA
:{{rudement||did}} : Juste ce qu'il nous faut !
:ni plus, ni moins.
;ROCCO
:{{à Agnese, en s'esclaffant ||did}} : Vous entendez comment elle m'aime ?
:{{Au garçon||scn}} : Viens ici, donne-moi un coup de main ;
:on va rapprocher la table.
:{{A Giacomina, en passant devant elle||scn}} :
:{{ Flagorneur ||did}} : Bon sang, que vous êtes belle !
;GLACOMINA,
:{{Vanne directe||did}} : Plus que vous, c'est sÛr, voyez-vous !
;BARBARA
:{{à Rocco et à Giacomina, pour les rappeler à l'ordre||scn}} : Eh là, dites donc...
;AGNESE.
:{{à Barbara||scn}} : Chut !
:{{A Giacomina, souriante||scn}} : Vous le trouvez laid, Sior Rocco ?
;GIACOMINA,
:{{à Agnese||scn}} : Et vous ?
:{{comme un rire de surprise||did}} : vous le trouvez beau ?
;AGNESE.
:{{A Giacomina||scn}} : Si votre mère vous le donnait pour mari...
:... vous n'en voudriez pas ?
;GLACOMINA,
:{{à Agnese, en regardant droit devant, comme une leçon bien apprise||scn}} :
:Si ma mère me le donnait pour mari,
:je n'aurais pas à savoir s'il est beau ou laid.
;AGNESE.
://`à part`//. Sapristi !
:quelle sagesse,
: une sibylle.
;ROCCO {{après que tout ait bien été diposé sur la table ||scn}}
:Bon, c'est prêt.
:{{Devanr son étal, se tourne vers elles, commercial||scn}}
:Quelle qualité vous désirez ?
;AGNESE. {{Un geste bers les tissus||scn}}
:{{Sourire||did}} Faites voir.
;ROCCO
:{{Sourire||did}} C'est pour quoi faire ?
;AGNESE.
:Un sarrau.
;ROCCO
:{{Jouant la mine déconfite||scn}} : Sapristi !
:L'affaire du siècle !
;BARBARA.
:{{Moqueuse||scn}} : Vous pensiez qu'on allait vous vider la boutique ?
;ROCCO
:{{Jouant la victime||scn}} : Oh ! tant pis !
:dites toujours,
::je suis là pour vous servir,
::même si vous n'en prenez qu'[[une coudée]],
:{{Parcourant le groupe du regard, aimablement||scn}} : c'est pour qui, si je peux me permettre ?
;AGNESE.
:{{Mettant en valeur Giacomina||scn}} : Pour cette petite.
;ROCCO
:Oh !
:{{Se tournant vers elle avec un énorme sourire||scn}}
:si c'est pour cette petite, laissez-moi faire.
::Je ne voulais pas entamer de nouvelles pièces,
::mais s'il s'agit de vous, tout est à vous :
:__tout__.
;GLACOMINA,
:{{Soulevant dédaigneusement le bout d'un tissu||scn}} : Vous n'aurez apporté que des vieilleries, oui !
;ROCCO
:{{Se moque, comme si dans un a parte vers Agnese||scn}} : Mais que je n'ai donc pas de chance avec ces femmes-là !
::la mère est mauvaise,
::et la fille est pire !
;AGNESE.
:{{Finement||scn}} : Celui qui dénigre veut acheter,
:voyez-vous,
:sior Rocco.
;ROCCO {{rigolant||scn}}
:Bravo, sior'Agnese.
:Moi aussi, voyez-vous, parfois je dis :
::« //C'est de la cochonnerie// » ;
:mais si je pouvais acheter,
:j'achèterais !
;BARBARA. {{coupe, en désignant l'étal||scn}}
:Alors quoi ?
:elle vient votre mirifique indienne ?
;ROCCO
:Oh !
:la voilà.
:{{Il va choisir un tissu||scn}}
:Elle fera votre affaire.
:{{Il le lui tend||scn}}
:Regardez,
:et dites-moi si vous avez jamais vu la pareille.
;BARBARA.
:Oh ! {{Moue négative||scn}}
:beaucoup trop d'apprêt !
;AGNESE. {{Presque en même temps||scn}}
:Au premier lavage, une vraie loque.
;GLACOMINA, {{Presque en même temps||scn}}
:Et ces fleurs !
:toutes passées !
;ROCCO
:{{Habitué à ça, il rit||scn}} : J'ai compris, j'ai compris.
://`(Au garçon :)`// Remballe-moi ça.
:{{Il revient à Giacomina avec un tissu bariolé||scn}}
://`(A Giacomina :)`// {{Sourire énorme||scn}} : Voyez celle-ci.
;GLACOMINA,
:Oh ! quelle cochonnerie !
;BARBARA.
:C'est ça que vous avez à nous montrer ?
;ROCCO
:Ne vous fâchez pas, allez,
:ne vous fâchez pas:
:en voici une autre.
;GLACOMINA.
:Oh ! qu'elle fait vieille !
;AGNESE.
:Ce sont des laissés pour compte.
;BARBARA.
:Oui, siora, rien que des laissés pour compte.
;ROCCO
:Ça, des laissés pour compte ?
:Je voudrais en avoir beaucoup des laissés pour compte pareils.
:Tenez, celle-ci,
:vous ne direz pas que c'est un laissé pour compte :
:j'en ai vendu vingt-huit coudées ce matin pour un trousseau de mariée.
://`(A Giacomina :)`// Allons, prenez celle-ci,
:elle vous portera bonheur.
;AGNESE.
:Elle vous plaît, siora Giacomina ?
;GLACOMINA.
:Comme ci comme ça.
;ROCCO
:Mais que vous êtes difficile à contenter !
;BARBARA.
:Ce n'est pas le Pérou,
:mais elle est mieux que les autres.
;AGNESE.
:Sûr que ce qu'ils ont de mieux, ils le sortent toujours en dernier.
;BARBARA.
:Ils cherchent d'abord à se débarrasser de leurs rebuts.
;ROCCO
:Vous avez beau dire,
:mais des indiennes comme celles-ci, vous auriez du mal à lui en trouver dans tout Venise.
;AGNESE.
:Combien la coudée ?
;ROCCO
:Vous voulez mon dernier prix ?
;BARBARA.
:Allez-y,
:on vous écoute.
;ROCCO
:Pour quelqu'un d'autre, je la ferais à [[six lires la coudée]] ;
:mais pour vous,
:tout ce que vous voudrez à cinq lires et demie,
:avec l'honneur de vous avoir servie.
;AGNESE.
:Eh eh!
:cinq lires et demie ?
;BARBARA.
:Quand elle n'en vaut même pas quatre.
;ROCCO
:Cinq lires, je les donnerais à l'achat, moi, si j'en trouvais cinquante pièces,
:et je m'en ferais des dix sous et des dix sous en la revendant !
;AGNESE.
:Vous nous la laissez à quatre lires et demie ?
;ROCCO
:On m'en donnerait plus au ghetto. //,,`si je la mettais en gage`,,//
;BARBARA.
:Oh !
:elle ne vaut pas quatre lires et demie.
;GLACOMINA.
:Sûr,
:pour nous c'est plus cher que pour les autres !
;ROCCO
:Je vous la donne pour rien si vous voulez,
:mais puisqu'il s'agit de vendre, je ne peux pas faire de tort à la marchandise.
;AGNESE.
:Taisez-vous donc, vous savez y faire.
;ROCCO
:Oh ! ma chère, soyez bénie.
:Combien il vous en faut ?
;AGNESE.
:Trois coudées,
:n'est-ce pas, mon enfant ?
;ROCCO
:Oh ! elle est grande, vous savez,
:trois et demie pour elle.
;BARBARA.
:Oh ! trois suffiront.
;AGNESE.
:Non, sior, non, sior, trois et demie.
;ROCCO
:Bravo, il vaut mieux trop que pas assez.
://`(Au garçon :)`// Passe-moi les ciseaux,
;BARBARA
://`à Rocco`//. Mais à combien ?
;ROCCO
:On s'arrangera.
;BARBARA.
:Quatre lires et demie,
:pas un sou de plus.
;ROCCO.
:Voyez vous-même ce que vous voulez mettre au bout.
:Tenez:
:prenez-la pour quatre lires et quinze sous.
;BARBARA,.
:Non, sior, non, sior:
:quatre lires et dix sous.
;ROCCO.
:Comme vous voudrez,
:je ne discute pas.
:Qu'il y gagne ou qu'il y perde, un marchand est là pour vendre.
://`(A Giacomina :)`// Venez ici,
:c'est vous qui tiendrez l'aune.
;BARBARA.
:Non, sior, non, sior :
:c'est moi qui la tiendrai.
;ROCCO
:Comme vous voudrez.
://`(Il mesure le tissu.)`//
;AGNESE.
:Hé !
:ne comptez pas vos ongles avec !
;ROCCO
:Oh ! misère de moi !
;GLACOMINA.
:Attention,
:je veux que vous mesuriez large.
;ROCCO
:Que je mesure large,
:en plus ?
;BARBARA.
:Coupez ici.
://`(Elle lui montre où elle veut qu'il coupe.)`//
;AGNESE.
:Ici, ici. //`(Pour en avoir un peu plus.)`//
;GLACOMINA.
:Un peu plus vers moi. //`(Pour en avoir encore un peu plus.)`//
;ROCCO
:Oh ! le bénéfice que je fais avec vous ! //`(Il coupe le tissu.)`//
:Tenez, vous aurez un sarrau de jeune mariée.
{{LBM206-281 Combien on vous doit}}
;AGNESE.
:Alors, tenez.
:Voici deux ducats.
;GLACOMINA,
:Cinq sous à lui rendre.
;ROCCO
:Vous avez peur que je les garde ?
:Les voilà.
:Si vous voulez les donner à ce garçon.
;AGNESE.
:Oui, oui, allez, donnez-les-lui.
;BARBARA
://`à Rocco.`// Y a pas, vous savez vous y prendre.
;ROCCO
:Vous avez besoin d'autre chose ?
;BARBARA.
:Rien d'autre pour le moment.
;ROCCO
:Si vous voulez j'ai de la toile de Cambrai
:superbe,
:et pas chère !
:Vous voulez la voir ?
;BARBARA.
:Non, non, nous ne voulons plus rien.
;ROCCO
:Prenez-la,
:vous me la paierez quand vous voudrez.
:A déduire sur la façon des manchettes.
;GLACOMINA.
:Non, non, sior,
:quand j'ai fini mon ouvrage, j'aime avoir en main mes chers petits sous.
;ROCCO
:Je reviens les prendre quand ?
;BARBARA
:On vous les fera porter à la boutique.
;ROCCO
:Vous ne voulez pas que je revienne ?
:Tant pis.
:Vous ne m'aimez pas, vous deux.
:Et pourtant je compte bien encore me marier un jour, vous savez.
;AGNESE.
:Quand, sior Rocco ?
;ROCCO
:Le plus vite possible.
;AGNESE.
:Vous avez quelqu'un en vue ?
;ROCCO
:Pour l'instant non,
;AGNESE.
:Vous voulez que moi, je vous déniche quelqu'un ?
;ROCCO
:Plût au ciel !
;AGNESE.
:La dot, combien vous voulez ?
;ROCCO
:Voir la marchandise, discuter après.
;AGNESE.
:Un petit millier de ducats au comptant, ça vous suffirait ?
;ROCCO
:Ecoutez; parlons sérieusement :
:moi, je ne suis pas riche, mais je ne cours pas après les sous.
:Sûr qu'un petit quelque chose ne ferait de mal à personne, je ne dis pas,
:mais plutôt mille ducats avec une fille qui me plairait que quatre mille avec une qui ne me plairait pas.
;AGNESE.
:Et mille de ce côté-ci, par exemple //`(elle lui montre Giacomina)`//, ça vous plairait ?
;ROCCO
:Le papier, l'encre et la plume:
:je signe.
;BARBARA
:Allons, allons, c'est bientôt fini ces singeries ?
;ROCCO
:Et voilà, elle est toujours comme ça avec moi.
;AGNESE.
:Sior Rocco, venez me trouver.
;ROCCO
:Quand ?
;AGNESE.
:Aujourd'hui.
:Apportez-moi des mouchoirs.
;ROCCO
:Quel genre ?
;AGNESE.
:Prenez-en un assortiment.
;ROCCO
:Des mouchoirs de femme ?
;AGNESE.
:Des mouchoirs de femme.
;ROCCO
:Comme ceux qu'a pris Sior Nicoletto ?
;BARBARA
:Quel Nicoletto ?
;ROCCO
://`à Barbara.`// Votre fils.
;BARBARA
:Mon fils vous a pris des mouchoirs ?
;ROCCO
:Oui, siora, votre fils,
:qui ne me les a toujours pas payés.
[[La Bonne Mère II,7 - Nicoletto et les mêmes.]]
`Vidéo LBM 21-4 → 1:13'00`
;NICOLETTO.
:Maman, oui, maman, c'est vrai.
:Je les ai pris pour mon parrain.
;BARBARA.
://`à part`//. C'est bien ce que je me disais.
://`(A Nicoletto :) `//Pourquoi tu ne me l'as pas dit ?
;NICOLETTO.
:ça m'était sorti de la tête.
;ROCCO
:Bon ! serviteur, mesdames.
://`(A Agnese .')`// Je passerai dans la journée.
;AGNESE. :
:Oui, je vous attends.
;ROCCO
:Serviteur, siora Giacomina.
;GLACOMINA.
:Servante.
;ROCCO,
://`avec une politesse affectée`//. Votre serviteur, siora Barbara.
;BARBARA.
://`en le singeant`//. Votre servante, sior Rocco.
;ROCCO
:Soyez bénie. Qui sait ? J'en ai assez dit.
://`(A part :) `// Si j'étais sûr qu'elle a ces mille ducats...
:Mais j'ai bien peur qu'elle en ait zéro en chiffres.
://`Il sort.`//
[[La Bonne Mère II,8 - Barbara, Agnese, Giacomina et Nicoletto.]]
;GLACOMINA.
:Merci, vous savez, sior'Agnese.
;AGNESE.
:Oh ! qu'est-ce que vous dites là ?
:Pas besoin de me remercier pour si peu.
;BARBARA.
:Tu vois, mon garçon ?
:Sior'Agnese vient d'offrir un sarrau à ta soeur.
;NICOLETTO.
:Et moi,
:vous ne me donnez rien ?
;AGNESE.
:Qu'est-ce que vous voulez que je vous donne ?
;NICOLETTO.
://`en riant`//. Un sarrau, à moi aussi.
;BARBARA.
://`à Agnese`//. Oh ! le tout fou !
:vous entendez ses pitreries ?
;NICOLETTO.
://`à part`//. Si seulement elle m'en donnait un !
:je le porterais Rue de l'Oie.
;AGNESE.
:Bon,
:si vous permettez, siora Barbara, je vais rentrer.
;BARBARA.
:Je vous dirais bien de rester manger avec nous, mais la pénitence serait trop grande pour vous.
;AGNESE.
:Merci, merci, siora Barbara.
:Je dois rentrer, j'attends du monde.
:Oh ! mais, dites-moi,
:si Sior Rocco vient me trouver,
:vous voulez que je la mette en route, cette affaire ?
;BARBARA.
:Oh! qu'est-ce que vous voulez mettre en route ?
:Comment voulez-vous qu'aujourd'hui je lui promette mille ducats au comptant, sans compter tout le reste ?
;AGNESE.
:Mais vous m'avez bien parlé de deux mille ducats ?
;BARBARA.
:Et mon fils, le pauvre ?
;AGNESE.
:Pour votre fils, On verra ;
:ne vous faites pas de souci pour votre fils.
:Passez-moi ma veste et mon châle.
;BARBARA.
:Allons, remue-toi, Giacomina.
;GLACOMINA.
:Tout de suite.
://`Elle va prendre les affaires d'Agnese et l'aide à les passer.`//
;BARBARA.
://`à part`//. Oh ! si le ciel le voulait ! Je crois que moi, j'en mourrais de bonheur.
://`(A Nicoletto :) `// Allons, va mettre ton manteau.
;NICOLETTO.
:Tout de suite.
://`(A part :)`// Je suis drôlement content, nom de nom!
:je vais pouvoir [[me faufiler une deuxième fois]] Rue de 1'Oie"
://`Il sort.`//
;BARBARA.
://`à Agnese.`// Vous voyez comme il est heureux de vous raccompagner ?
;AGNESE.
://`en finissant de s'habiller`//. Oh ! ce garçon, il va falloir en faire un petit homme.
;BARBARA.
:Vous seule pouvez l'y aider.
;AGNESE.
:A condition de connaître ses intentions.
;BARBARA.
:Ses intentions ?
:Se tenir tranquille et faire ce qu'on lui dit,
:les voilà ses intentions.
;NICOLETTO.
://`qui revient awc son manteau.`// Je suis prêt, vous voulez qu'on y aille ?
;AGNESE.
:Oui, allons-nous-en.
:Votre servante, mesdames.
;BARBARA.
:Votre servante.
;GLACOMINA.
:Votre servante.
;BARBARA.
://`à Nicoletto.`// Pense à l'aider, tu sais, en descendant l'escalier.
;NICOLETTO.
:Oui, maman.
;AGNESE.
:Eh! il fera les choses comme il faut.
;BARBARA.
:Sapristi ! laissez-le faire.
;NICOLETTO.
://`à part`//. Si je pouvais lui soutirer quelque chose !
;AGNESE.
:Au revoir, et à bientôt.
://`Elle sort avec Nicoletto.`//
;BARBARA.
:A votre service.
[[La Bonne Mère II,9 - Barbara et Giacomina.]]
://`Giacomina déplie son indienne et la contemple.`//
;BARBARA.
:Tu vois, tu avais envie d'un sarrau, et le ciel y a pourvu.
;GLACOMINA.
:Je peux commencer à le faire ?
;BARBARA.
:Finis tes manchettes.
;GLACOMINA.
:Maman,
:laissez-moi commencer mon sarrau.
;BARBARA.
:Bon, commence-le.
;GLACOMINA.
:Qu'elle est belle mon indienne !
:Donnez-moi du fil.
;BARBARA.
:Mais je ne sais pas si j'en ai.
:Sacré nom, j'ai oublié d'en demander à Sior Rocco.
:Vite, vite, il faut que j'envoie quelqu'un chez lui et je veux qu'il me fasse cadeau du fil, pour l'achat du tissu.
;GLACOMINA.
:En attendant, je vais reprendre mes manchettes.
://`Elle s 'assoit et se remet à broder.`//
;BARBARA.
:Margarita !
[[La Bonne Mère II,10 - Margarita et les mêmes.]]
;LODOVICA.
:Bravo, bravo, sior Nicoletto, tu as bien fait de revenir.'
;NICOLETTO.
://`à Daniela`//. Et vous, vous êtes contente que je sois revenu ?
;DANIELA
:Vous le demandez ?
:Si seulement yous étiez toujours avec moi.
;LODOVICA.
:Qui sait ? Peut-être qu'un jour il y sera ;
:pas vrai mon garçon ?
;NICOLETTO.
: Moi, j'ai bon espoir.
;DANIELA
:Si vous m'aimiez.
;NICOLETTO.
: Vous croyez qde je ne vous aime pas ?
;DANIELA
:Si, un peu.
;NICOLETTO.
://`à Lodovica`//. Oh ! un peu, elle a dit.
;LODOVICA.
:Tu ne vois pas comme il t'aime, fillette ?.
:Il a été à Rialto,
:il a été s'occuper de,ses affaires comme un petit rhomme,
:et puis tout de suite il est revenu.
:Dis donc, sior Nicoletto, tu les as touchés, tes sous, à"Rialto ?
;NICOLETTO.
:Non, siora,
:je ne les ai pas touchés.
;LODOVICA.
:Mais pourquoi tu ne les as pas touchés ?
;NICOLETTO.
:Parce que celui qui devait me les verser n'était pas encore arrivé
:et moi,
:j'en ai eu assez d'attendre,
:je suis parti.
;LODOVICA.
:Voyez-moi ça !
:tu as eu tort, il fallait attendre.
;NICOLETTO.
:J'étais pressé de venir ici.
:Je mourais d'etvie de revoir Siora Daniela.
;LODOVICA.
:Tu n'es pas resté ici tout le matin ?
:Quel besoin tu avais de remettre à plus tard les affaires ?
:En voilà des gamineries.
;DANIELA
:Le pauvre !
:C'est parce qu'il m'aime.
;LODOVICA.
:Oh ! il t'aime, il t'aime...
:l'amour ne suffit pas.
:S'il avait touché son dû, s'il était revenu ici avec six ou sept cents ducats en poche,
:ç'aurait été plus convenable.
;NICOLETTO.
:Vous croyez que je n'ai pas d'argent ?
:Si vous voyiez tout ce que j'en ai à la maison !
;LODOVICA.
:Et jamais sur toi ?
;NICOLETTO.
:Je n'en ai pas sur moi parce que je suis trop donnant ;
:il me file entre les doigts.
:Quand j'en ai, je ne peux pas le garder.
:Si quelqu'un m'en demande, je ne sais pas dire non.
:j'ai bien dans les trois à quatre mille ducats de sortis comme ça.
;LODOVICA.
:Et moi, j'ai dans l'idée, sior Nicoletto,
:que tu n'es qu'un fichu hâbleur.
;DANIELA
:Allons,
:ne lui dites pas des choses pareilles.
;NICOLETTO.
:Moi, un hâbleur ?
:Pourquoi ?
;LODOVICA.
:Parce que toutes ces largesses, chez nous, on n'en a jamais vu la couleur.
;NICOLETTO.
:Qu'est-ce que vous voulez ?
:Dites.
;LODOVICA.
:Oh ! moi, je ne veux rien, tu sais.
:Ni moi ni ma fille on n'est de cette engeance.
:Mais quand on vient chez les gens, quand on les aime, et qu'on a de quoi, et qu'on a du coeur,
:on s'arrange pour le montrer discrètement,
:on a la manière,
:et on ne vient pas faire le mariolle: E//t moi j'ai ci, et moi j'ai ça//.
:Si tu en as tant que ça, colle-toi-les où je pense.
;NICOLETTO.
://`mortifié`//. D'un côté, vous avez raison.
:Ce que je n'ai pas fait, je le ferai.
;LODOVICA.
:Tu l'as mal pris, mon garçon ?
:Je te parle comme une mère, tu sais.
:Parce que, vois-tu, je voudrais que Daniela soit sûre que tu l'aimes.
;NICOLETTO.
:Si je ne l'aimais pas, je ne viendrais pas.
;LODOVICA.
:Oh ! oui, oui;
:mais des fois on vient comme ça, pour s'amuser,
;DANIELA
:Si je n'étais pas sûre que vous m'aimez, j'irais me jeter à.l'eau,
;NICOLETTO.
:Sacré nom! je vous aime tant et plus.
;LODOVICA.
:Mais dans quelle intention ? Explique-toi.
;NICOLETTO.
:Qu'est-ce que vous voulez que je vous dise ?
:Vous ne le savez pas ?
;DANIELA
:Eh là !
:c'est à Ioî de parler, voyons.
:Pour moi, sûr que je ne dis pas non.
;LODOVICA.
:Oh ! ce n'est ni à toi ni à lui, ma belle.
:Il faut d'abord voir si moi, je veux.
;NICOLETTO.
:Qu'est-ce que vous pourriez ne pas vouloir ?
;LODOVICA.
:Je ne veux pas de godelureaux chez moi.
:J'ai tenu mes petites à l'oeil autant qu'il a fallu.
:J'en ai marié trois, mon garçon,
:et à tous j'ai dit la même chose.
:Ou dedans, ou dehors.
;DANIELA
:Ou vous parlez pour de bon, ou c'est pour vous moquer.
:Si vous parlez pour de bon, autant que ça ne traîne pas.
;NICOLETTO.
://`à part.`// Qu'est-ce que mes jambes tremblent !
;LODOVICA.
:Qui a autorité sur toi ?
;NICOLETTO.
:Personne.
;DANIELA
:C'est votre mère qui décide pour vous ?
;NICOLETTO.
:Alors ça ! je ne suis pas un gamin tout de même.
;DANIELA
:Pourquoi vous nous lanternez ?
;LODOVICA.
:Parce qu'il ne t'aime pas assez.
;DANIELA,
://`avec passion`//. S'il ne m'aime pas, qu'il me laisse tranquille.
;LODOVICA.
:Quand on ne veut pas, et qu'on ne peut pas, on ne vient pas entortiller les filles.
;NICOLETTO.
:Sacré nom de nom !
:je n'ai pas dit que je ne la veux pas.
;LODOVICA.
:Mais tu n'as pas dit non plus que tu veux la prendre.
;NICOLETTO.
:Si, siora, je la prendrai.
;DANIELA
:Oh ! que tu sois béni !
:il a dit qu'il me prendra.
;LODOVICA.
:J'ai ta promesse ?
;NICOLETTO.
:Vous l'avez.
;DANIELA
:Et moi, Nicoletto, je t'engage ma foi.
;NICOLETTO.
:Et moi, la mienne.
;LODOVICA.
:Ecoute-moi bien, toi,
:et tâche de te rappeler que tu viens de t'engager à ma fille,
:que tu t'es engagé à une fille pauvre, oui, mais honnête,
:qui a refusé pour toi trois ou quatre propositions;
:et que si jamais tu lui manquais de foi,
:pour commencer le ciel te punirait,
:et puis,
:il y a une justice dans ce pays,
:et moi, tu sais, j'ai des protections qui pourraient te faire trembler.
;DANIELA
:Sacré nom !
:s'il faisait une chose pareille, je lui arracherais le coeur.
;NICOLETTO.
://`à Lodovica`//. S'il vous plaît, donnez-moi une chaise.
;LODOVICA.
:Qu'est-ce que tu as ?
://`Elle lui donne une chaise, il s'assoit.`//
;DANIELA
:Tu le sens mal ?
;NICOLETTO.
:Non, siora.
://`Il s'essuie le visage.`//
;LODOVICA.
:Tu regrettes déjà, peut-être !
;NICOLETTO.
:Oh ! qu'est-ce que vous dites !
;DANIELA
:Eh là ! ce qui est fait est fait, vois-tu.
;LODOVICA.
:La bague,
:quand est-ce que tu l'apportes ?
;NICOLETTO.
:Un de ces jours.
;DANIELA
:Attention
:qu'elle soit belle, hein !
;LODOVICA.
:Et que ça ne traîne pas,
:et qu'elle aille habiter chez toi.
;NICOLETTO.
://`à part`//. Oh ! misère de moi !
:qu'est-ce que ma mère dira ?
;LODOVICA.
:Et tâche de te rappeler que ma fille n'a rien,
:que lu devras lui fournir jusqu'à sa chemise.
;NICOLETTO.
:Oh ! oui, siora, on s'en occupera.
;DANIELA
:Alors je verrai si tu m'aimes.
;LODOVICA.
:Si tu dois faire des achats,
:fie-toi à moi,
:donne-moi l'argent, et tu verras combien je te ferai économiser.
;NICOLETTO.
:Oui, siora, oui, siora,
:vous vous en occuperez.
;DANIELA
:Et ta mère ?
;NICOLETTO.
:Oh ! tant pis.
;DANIELA
:Elle ne dira rien ?
;NICOLETTO.
:Qu'est-ce que tu veux qu'elle dise ?
;LODOVICA.
:Ce n'est pas elle qui décide pour toi quand même.
;NICOLETTO.
:Oh ! que non.
;LODOVICA.
:On a frappé, je crois.
;DANIELA
:Oui, je crois.
;LODOVICA.
:Va voir qui c'est.
;NICOLETTO,//` avec crainte`//.
:Je t'en prie, regarde bien qui c'est.
;DANIELA
:Qui crains-tu que ce soit ?
;NICOLETTO.
:Je ne sais pas, moi je ne crains rien.
;DANIELA
:Si c'est un enquiquineur, je l'envoie promener.
://`Elle sort.`//
;LODOVICA.
:Oh! chez moi, mon garçon, il ne vient personne.
;NICOLETTO.
:Sior Gasparo,
:il ne vient plus ?
;LODOVICA.
:Oh ! Daniela l'a mis à la porte.
:A cause de toi, tu sais.
:Et pourtant, il la voulait à tout prix ;
:avec lui aussi, elle aurait été comme une reine.
:Mais faut croire qu'elle t'était destinée.
;NICOLETTO.
://`à part`//. Moi,
:je ne sais plus dans quel monde je suis.
;DANIELA,
://` qui revient`//. Voilà.
;LODOVICA.
:Qui c'était ?
;DANIELA
:La blanchisseuse.
;LODOVICA.
:Qu'est-ce qu'elle voulait ?
;DANIELA
:Elle a son panier.
:Elle doit rapporter du linge.
;LODOVICA.
:Je n'ai rien donné à laver, moi, cette semaine.
:Tu lui as ouvert ?
;DANIELA
:Oui, maman.
;NICOLETTO.
:J'aimerais mieux qu'elle ne me voie pas.
;LODOVICA.
:Oh !
:ne sois donc pas si timide.
;DANIELA
:Oh ! surtout pas avec elle.
;LODOVICA,
://`appelant`//. Hé ! donna Fùrega ! //,,`Dame fouine`,,//
;NICOLETTO.
:Donna Fùrega ?
;LODOVICA.
:Oui, sior, tu la connais ?
;NICOLETTO.
:C'est elle qui lave pour nous.
;DANIELA
:Tiens, tiens, elle ne nous l'a jamais dit.
;NICOLETTO.
:Elle va me dénoncer ?
;DANIELA.
:A qui ?
:De qui tu as peur ?
;LODOVICA.
:Faudrait donc que ça ne se sache pas ?
:Entrez, donna Fùrega.
[[La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.]]
;MARGARITA,
://`à Giacomina.`// Votre mère arrive.
;GLACOMINA.
:Oui ?
:Oh ! que je suis contente !
;AGNESE.
:Et Sior Nicoletto ?
;MARGARITA.
:Lui aussi.
:Moitié mort, le petit jeune homme, vous verriez !
;AGNESE.
:C'est qu'il n'a pas mangé, le pauvre.
;MARGARITA
://`ironique.`// Eh oui, siora,
:c'est qu'il n'a pas mangé.
;GIACOMINA.
:Mais dépêche-toi donc,
:va au devant d'eux.
:Vois s'ils n'ont besoin de rien.
;MARGARITA.
:Oui, siora, j'y vais, n'ayez pas peur.
//`Elle sort.`//
[[La Bonne Mère III,11 - Agnese, Giacomina, puis Barbara.]]
;GLACOMINA.
://`à part.`// Mais quelle grande langue !
;AGNESE.
:Elle n'en reviendra pas de me voir !
;GLACOMINA.
:C'est sûr.
;AGNESE.
:Et Sior Nicoletto.
;GLACOMINA.
:Non plus.
;BARBARA.
://`qui entre.`// Oh ! vous êtes là, sior'Agnese ?
;AGNESE.
:Me voilà, oui,
:je suis venue vous déranger.
;GLACOMINA.
:Servante, maman.
://`(Elle lui baise la main.)`//
;BARBARA.
:Oui, bonjour, petite.
://`(Des larmes tombent de ses yeux, elle les essuie.)`//
;AGNESE.
:Qu'est-ce que vous avez, siora Barbara ?
;BARBARA.
:Rien, mon amie,
:le vent dans la rue,
:qui brûle les yeux.
;AGNESE.
:Où est Sior Nicoletto ?
;BARBARA.
://`avec tristesse.`// Il est à côté,
:il se change.
;AGNESE.
:Vous me dites cela d'une façon !
;BARBARA.
:Je n'ai pas mangé, vous savez,
:je ne tiens plus sur mes jambes.
;AGNESE.
:Des intérêts à vous, n'est-ce pas ?
;BARBARA.
:Oui, siora, des intérêts à moi.
;AGNESE.
:Moi, je ne veux pas vous déranger plus longtemps :
:vous voulez manger tranq uillement et vous avez raison.
:Juste deux mots et je vous laisse.
;BARBARA.
:Va à côté, Giacomina.
;AGNESE.
:Eh non, qu'elle reste,
:j'ai commencé à lui en parler de toute façon.
;BARBARA.
:Non, non,
:va donc à côté, petite.
;GLACOMINA.
:Oui, maman, tout de suite.
://`Elle sort.`//
[[La Bonne Mère III,12 - Agnese et Barbara.]]
;AGNESE.
:Siora Barbara, j'ai parlé avec Sior Rocco, et comme ça, d'une plaisanterie, je pense qu'on va pouvoir faire une chose sérieuse.
:Moi, je sais de source sûre que cet homme-là est très à son aise.
;BARBARA.
:Ma chère Agnese...
;AGNESE.
:Laissez-moi continuer.
:Son commerce, il l'a hérité d'un oncle qui lui a bien laissé dans les six mille ducats;
:et lui, depuis, il les a fait fructifier.
:Vous savez ce que cela veut dire fructifier ?
;BARBARA.
:Je comprends, mais croyez-moi...
;AGNESE.
:Laissez-moi terminer.
:Il les a doublés,
:et peut-être, peut-être plus que doublés.
:D'où je me dis, moi, que la petite serait vraiment...
;BARBARA.
:Sior'Agnese...
;AGNESE.
:Ecoutez.
:On ne peut guère lui donner moins de mille ducats au comptant et quatre cents en trousseau, n'est-ce pas ?
:Sur vos deux mille ducats, il en reste donc six cents pour vous.
;BARBARA.
:Vous avez terminé ?
;AGNESE.
:Je sais ce que vous voulez me dire.
:Vous voulez me dire : Tant que le garçon n'est pas casé, impossible de rien prévoir, impossible de rien décider.
:Chère siora Barbara, deux mots encore et j'ai fini.
:Venez ici, venez m'embrasser.
:Vous savez toute l'affection que j'ai pour vous.
:Je sais comment vous avez élevé vos enfants;
:votre garçon, je sais quel bon garçon il est.
:Alors voilà, je vous ouvre mon coeur ;
:il me plaît,
:je l'aime
:et si cela vous convient...
;BARBARA.
:Oh ! sior'Agnese, sior'Agnese !
:Soutenez-moi,
:je tombe, je n'en peux plus.
;AGNESE.
:Quelle idée aussi, chère siora, de rester sans manger jusqu'à des heures pareilles :
:forcément, vous vous sentez mal.
;BARBARA.
:Non, mon amie, je ne me sens pas mal.
:C'est mon cœur qui a mal.
;AGNESE.
:Qu'est-ce qu'il y a ?
:Qu'est-ce qui vous est arrivé ?
;BARBARA.
:Attendez que je me reprenne un peu, et je vous dirai.
;AGNESE.
:Vous voulez de l'eau de mélisse ?
;BARBARA.
:Oui, siora,
:je veux bien.
;AGNESE.
:Tenez.
://`(Elle lui passe un flacon d'eau de Mélisse.)`//
:Elle vient de la boutique du Ponte del Lovo.
:Vous savez qu'ils ne vendent que du meilleur.
;BARBARA
://`elle boit.`//
:Tenez.
://`(Elle lui rend le flacon. )`//
:Merci.
:Sior'Agnese, je vois que vous êtes vraiment mon amie,
:et je vous ai tant d'obligations que ma vie ne suffira pas à vous payer ma dette.
;AGNESE.
:Allons donc ! qu'est-ce que vous dites ?
;BARBARA.
:Et moi qui suis une femme d'honneur, je ne dois pas abuser de votre amitié,
::j'ai au contraire le devoir de vous parler avec toute la sincérité,
::avec toute la franchise qui s'imposent.
:Vous vous offrez à épouser mon fils, et cela devrait être pour moi la plus grande satisfaction que je puisse avoir en ce monde.
::Une fortune meilleure,
::je ne pouvais pas la désirer pour mon fils.
::C'est exactement cela qu'intérieurement j'ai désiré de toutes mes forces,
::j'ai d'ailleurs, par mes petites ruses, tâché d'en faire naître moi-même l'idée,
::et peut-être que le ciel veut me punir de trop aimer mon fils
::et d'avoir un peu usé d'artifice en la circonstance.
:A présent il faut vous dire la vérité ;
::je ne veux pas vous trahir,
::je ne peux pas vous laisser dans l'illusion.
:Mon fils
::qui a toujours obéi à sa mère,
::qui s'est toujours tenu à l'écart des fréquentations,
::qui a toujours fui les occasions,
:::on me l'a assassiné,
:::on l'a mené chez une fille ;
:::là, elles l'ont ensorcelé,
:::elles l'ont entortillé,
:il avait même donné sa foi,
:et je suis allée là-bas, moi, le prendre sur le fait, au risque de nous perdre ;
::et je l'ai empoigné,
::et je l'ai traîné dehors,
::et je l'ai tancé,
::je l'ai frappé,
::je lui en ai fait,
::je lui en ai dit,
::et il a pleuré toutes ses larmes.
::Il s'est jeté à mes genoux encore et encore, il m'a demandé pardon,
::oh ! pardon,
::il m'a dit et redit : << //Jamais plus// >> ;
::il l'a même juré,
:et je ne sais pas
::si c'est l'amour qui m'aveugle,
::ou l'habitude que j'ai de ce garçon,
::mais il me semble,
::il me semble que je peux m'y fier.
:Ce n'est pourtant pas une raison pour que j'aille dire à Sior'Agnese : << //Prenez-le// >>.
::Je suis sûre qu'avec cette fille il ne s'est rien passé.
::Je suis sûre qu'il ne la reverra plus,
::qu'il la chassera complètement de son esprit.
:Mais Sior'Agnese doit savoir.
::Moi, je dois lui dire,
::parce que je ne veux pas qu'un jour elle puisse me reprocher : << //Vous le saviez, et vous me l'avez caché// ».
:Tant pis,
:il en sera comme le ciel voudra.
:Si je dois souffrir, je souffrirai ;
::je pâtirai,
::ma fille pâtira,
::nous pâtirons tous,
::et ce pauvre vaurien,
::à cause d'un mauvais camarade,
::à cause d'une erreur de jeunesse,
::aura perdu sa chance et restera toute sa vie un misérable.
://`(Elle s'essuie les yeux.)`//
;AGNESE
://`après être restée un moment silencieuse, en s'essuyant les yeux.`//
:Mais vous ne disiez pas qu'il est tout à fait repentant ?
;BARBARA.
:Repentant ?
:Vous le verriez,
:vraiment il fait pitié, je vous jure.
;AGNESE.
:Je vais vous dire, siora Barbara ;
:d'abord,
:je vous remercie pour l'affection que vous me témoignez et pour la confiance que vous avez eue en moi ;
:mais une femme comme vous n'aurait pas pu agir autrement.
:Je vous dirai ensuite ceci :
::moi aussi, je suis veuve,
::et je sais comment va le monde ;
::les jeunes gens, il y en a peu qui ne font pas de bêtises au jour d'aujourd'hui,
::et le proverbe dit : << //Qui ne les fait dans son jeune âge , les fera plus tard// >>.
:Au bout du compte, une fois n'est pas coutume.
:Si vous me garantissez qu'avec cette fille, il ne s'est rien passé,
:que Sior Nicoletto l'a vraiment quittée et qu'il est vraiment repentant,
:alors,
::pardonnez-lui,
::parce que moi aussi
::je lui pardonne.
;BARBARA.
:Ah ! sior'Agnese,
:là vous rendez vraiment la vie à une pauvre mère,
:et vous sauvez du gouffre une famille dont la perte était certaine.
:Moi, je ne sais pas comment vous remercier,
:mais le bien qu'ainsi vous me faites, à moi,
:soyez sûre que le ciel, à vous,
:le rendra au centuple.
;AGNESE.
:Appelez-le donc, Sior Nicoletto.
;BARBARA.
:Oh ! s'il vous plaît,
:il est si terrifié que si je l'appelle, moi,
:s'il arrive et que moi, je sois là,
:il ne fera que pleurer, nous ne pourrons pas lui tirer un mot.
:Je vais passer à côté, plutôt, et vous l'envoyer.
:Ecoutez,
:faites-le parler, vous ;
::voyez si vous croyez pouvoir vous y fier,
::et moi, je vous laisse juge :
::décidez s'il mérite ou non vos bonnes grâces.
:Est-ce que je peux vous dire mieux ?
;AGNESE.
:Bien,
:envoyez-le moi.
;BARBARA.
:Ecoutez,
:je dois vous dire encore une chose, pour que vous ne l'appreniez pas par d'autres.
:Comme je vous disais, cet écervelé,
:sans penser à rien,
:sans même savoir à quoi il s'engageait,
:a dit à cette fille : << //Je vous prendrai// >>.
:Et ces femmes prétendent qu'il a engagé sa foi.
:Mais vous voyez bien de quel genre de foi il s'agit.
:Pas de papier signé, pas de témoins,
:rien, si vous comprenez ce que je veux dire.
;AGNESE.
:Bien sûr,
:mais elles vont nous harceler.
;BARBARA.
:Eh ! pour ce qui est de ça, elles sont d'un genre à vite se calmer si on leur tient un certain langage.
;AGNESE.
:Très bien, il faudra en passer par là, et attendre.
;BARBARA.
:Vous auriez voulu ne pas laisser traîner ?
;AGNESE.
:Pourquoi pas, après tout.
;BARBARA.
:Oh ! soyez bénie !
[[La Bonne Mère III,13 - Margarita et les mêmes.]]
;MARGARITA.
:Sior Rocco le marchand est là.
;AGNESE.
:Oh ! c'est maintenant qu'il vient s'en mêler!
:Voilà ce que vous allez faire, siora Barbara.
:Passez à côté, vous, avec Sior Rocco.
:Ecoutez ce qu'il a à vous dire:
:il m'avait chargée de vous la demander.
:Voyez par vous-même, et faites ce que vous jugerez bon de faire.
;BARBARA.
:Oui, vous avez raison.
:Je vous envoie mon fils.
:Ma chère Agnese, il est entre vos mains.
;AGNESE.
:Eh ! n'ayez crainte, il est dans de bonnes mains.
;BARBARA.
:Oui, oui, je me fie à vous.
://`(A part :)`// Elle s'en est emberlucoquée, nom de nom.
:Mais pour nous, c'est une sacrée providence !
//`Elle sort.`//
[[La Bonne Mère III,14 - Agnese et Margarita.]]
;MARGARITA.
:Vous savez ?
;AGNESE.
:Je sais.
;MARGARITA.
:Qu'est-ce que vous en dites ?
;AGNESE.
:Qu'est-ce que vous voulez que j'en dise ?
;MARGARITA.
:Qui aurait pu imaginer ça ?
;AGNESE.
:En ce monde, il ne faut s'étonner de rien.
;MARGARITA.
:Et qu'est-ce que vous dites de cette babiole ?
://`(Elle lui montre le couteau que portait Nicoletto.)`//
;AGNESE.
:Qu'est-ce que c'est que ce couteau ?
;MARGARITA.
:Sa mère le lui a ôté de la ceinture.
;AGNESE.
:A Nicoletto ?
;MARGARITA.
:A Sior Nicoletto. Ouh ! le voilà, le voilà ; je me sauve.
//`Elle sort.`//
→ [[La Bonne Mère III,15 - Agnese puis Nicoletto.]]
;AGNESE.
:Je ne sais que faire ;
:j'en entends,
:j'en entends.
:Le fait est que je l'aime,
:que depuis longtemps je l'aime.
:Mais je ne voudrais pas avoir à m'en repentir.
:Voyons ce qu'il va pouvoir dire.
;NICOLETTO
://`mortifié`//. Sior'Agnese, serviteur.
;AGNESE.
:Servante.
;NICOLETTO
:Que voulez-vous de moi ?
;AGNESE.
://`avec une réserve hautaine.`// Vous faire mes respects.
;NICOLETTO
:Oh non ! pas vos respects,
:vos reproches plutôt.
;AGNESE.
:Des reproches, pourquoi ?
://`(ironique :)`// un bon garçon comme toi.
;NICOLETTO
:Oui, oui, un bon garçon !
:Je vous en prie, ne me faites pas pleurer,
:j'ai tant pleuré que quasiment je n'y vois plus.
;AGNESE.
:Mais tu es vraiment repentant ?
;NICOLETTO
:Nom de nom !
:Quand je repense à ma mère qui est venue me chercher chez ces gens, j'en ai des sueurs froides.
;AGNESE.
:Tu regrettes d'avoir dû quitter cette fille ?
;NICOLETTO
:Moi, non, voyez-vous ;
:quand je pense à l'imbécillité que j'étais en train de faire, je suis heureux comme un roi.
;AGNESE.
:Mais tu l'aimais, pourtant.
;NICOLETTO
:Oh ! je l'aimais!
:j'aimais m'amuser.
:J'allais là-bas une heure ou deux.
:Je leur racontais des balivernes.
;AGNESE.
:Mais pourquoi avoir engagé ta foi ?
;NICOLETTO
:Je n'en sais rien moi-même.
;AGNESE.
:Voyons !
:un garçon comme toi, te perdre aussi misérablement !
:Si tu veux te marier,
:tu ne peux pas le faire avec honneur, et pour la satisfaction de ta mère ?
;NICOLETTO
:Oh ! qu'on ne me parle plus de me marier ;
:je ne me marierai pas, même si on m'y traîne avec des chaînes.
;AGNESE.
:Tu ne veux plus te marier ?
;NICOLETTO
:Non, siora.
;AGNESE.
:Pour garder ta foi à cette fille, je parie.
;NICOLETTO
:Crénom ! si je la rencontre, je trisse à trois lieues.
;AGNESE.
:Pourquoi tant de haine tout d'un coup ?
;NICOLETTO
:Si vous aviez entendu ce que ma mère m'a dit.
;AGNESE.
://`à part.`// Voilà l'effet d'une semonce en temps opportun.
://`(Haut :)`// Donc tu ne veux plus te marier.
;NICOLETTO
:Non, siora, je vous dis.
;AGNESE.
:Mais pourquoi ?
;NICOLETTO
:Parce que je repense à ce que m'a dit ma mère,
::que je suis un jeune homme pauvre,
::que je n'ai rien de rien,
::que je ne suis pas capable de me nourrir moi-même ;
:alors pensez,
:comment je pourrais nourrir ma femme !
;AGNESE.
:Et si tu trouvais une femme qui puisse te nourrir, elle ?
;NICOLETTO
:Il y en a, des femmes qui nourrissent leur mari ?
;AGNESE.
:Il y en a ;
:mais de plusieurs sortes.
:Dismoi, ta mère ne t'a donc rien dit ?
;NICOLETTO
:De quoi ?
;AGNESE.
:De son intention de te marier.
;NICOLETTO
:Eh ! je vous en prie, ne me faites pas enrager, j'ai déjà assez de chagrin.
;AGNESE.
:De moi, elle ne t'a rien dit ?
;NICOLETTO
:De vous ? rien.
;AGNESE.
://`à part.`// Devoir le lui dire moi-même, ce n'est pas du tout convenable.
;NICOLETTO
:Moi, je vais vous en dire une bien bonne.
;AGNESE.
:Allons, dis.
;NICOLETTO
:On n'a même pas encore mangé.
;AGNESE.
:Tu veux venir manger avec moi ?
;NICOLETTO
:Si ma mère le permet.
;AGNESE.
:Tu aimerais venir avec moi ?
;NICOLETTO
:Moi, oui, voyez-vous.
;AGNESE.
:Tu resterais avec moi ?
;NICOLETTO
:Si ma mère voulait...
;AGNESE.
:Mais tu ne veux pas te marier, n'est-ce pas ?
;NICOLETTO
:Nom de nom ! jamais de la vie.
;AGNESE.
://`à part.`// Nous voilà beaux.
;NICOLETTO
:Mais pourquoi vous me parlez tout le temps de me marier ?
;AGNESE.
:Parce que, si tu voulais,
:tu en aurais l'occasion.
;NICOLETTO
:Mais je vous dis que je ne veux pas en entendre parler.
://`(A part :)`// Oh ! elle dit ça pour me tirer les vers du nez.
;AGNESE.
://`à pan.`// Me voilà mal partie si c'est comme ça.
:Oh ! Siora Barbara qui revient ;
:si elle n'y met pas du sien, c'est fichu.
→ [[La Bonne Mère III,16 - Barbara, Rocco, Giacomina et les mêmes, puis Margarita]]
;BARBARA.
:Nous voici, sior'Agnese.
;ROCCO.
:Nous voici, voyez-vous.
://`(En plaisantant :)`// Le tant du mois: Mais oui monsieur, c'est ça monsieur, etc... On est tombés d'accord.
;AGNESE.
:Sérieusement ?
:Bravo, siora Giacomina, j'en suis très heureuse pour vous.
;GLACOMINA.
:Merci.
;BARBARA.
:Et vous, comment ça va ?
;AGNESE.
:Oh ! mal, je crois.
;BARBARA.
:Comment, mal ?
;AGNESE.
:Ecoutez.
://`(Bas à Barbara :)`// Il dit qu'il ne veut absolument pas se marier.
;BARBARA.
://`bas à Agnese.`// Il faut le comprendre.
:Il est encore tout épouvanté.
:Il a peur de moi.
:On va le réveiller maintenant, on va le réveiller.
://`(Haut :)`// Nicoletto.
;NICOLETTO
:Ma mère.
;BARBARA.
:Tu vois ?
:Sior Rocco est le fiancé de ta soeur.
;NICOLETTO
:Elle se marie, ma soeur ?
;BARBARA.
:Tu n'as pas entendu ce que je te dis ?
;NICOLETTO
://`à part.`// Tout le monde se marie, et moi, on m'empêche de me marier.
;ROCCO.
:Beau-frère, embrasse-moi.
;NICOLETTO
://`bas à Rocco.`// Je t'en prie, excuse-moi pour les mouchoirs.
;ROCCO,
://`bas à Nicoletto.`// Eh ! ce n'est rien, aujourd'hui on tire un trait sur toutes les dettes.
;BARBARA.
:Viens ici, Nicoletto.
;NICOLETTO
:Qu'est-ce que vous voulez ?
;BARBARA.
:Et toi,
:tu aimerais te marier ?
;NICOLETTO
://`avec crainte.`// Moi, ma mère ?
:moi, non, voyeZ-vous.
;BARBARA.
:Si je te la donnais, moi, ta fiancée,
:tu la prendrais ?
;NICOLETTO
:Alors ça !
:vous ?
;BARBARA.
:Si je te donnais Sior'Agnese ?
;NICOLETTO
://`en rougissant.`// Oh ! Sior'Agnese !
;AGNESE.
:Donc, moi, tu ne me prendrais pas ?
;NICOLETTO
://`bas à Agnese.`// Moi, si, que je vous prendrais.
;AGNESE.
://`à Barbara, en riant.`// Ouh ! il a dit oui, qu'il me prendrait !
;NICOLETTO
:Oh vous !
:tout de suite aller lui répéter.
;BARBARA.
:Allons, allons, mon garçon.
:Tout ce q ui s'est passé, on n'en parle plus.
:Sior'Agnese a de l'affection pour moi, elle en a pour toi,
:et si toi, tu veux bien, moi, je te la donne:
:c'est elle qui sera ta fiancée.
;NICOLETTO
://`il saute de joie et embrasse sa mère.`// Oh ! soyez bénie !
;BARBARA.
://`à Agnese.`// Une colombe, vous savez, une vraie colombe.
;AGNESE.
://`à Nicoletto.`// Tu vois ?
:toi qui disais que tu ne voulais pas te marier.
;NICOLETTO
:Mais je ne savais rien, moi, je ne savais pas.
;AGNESE.
:Tu veux bien ?
;NICOLETTO
:Moi, oui, quand ?
;AGNESE.
:ça ! quand on pourra.
;BARBARA.
:Laissez-moi faire, sior'Agnese, je vais arranger...
;AGNESE.
://`à Nicoletto.`// Et rappelle-toi bien que les couteaux à la ceinture, c'est fini.
;NICOLETTO
:Qui vous a parlé du couteau ?
;AGNESE.
:Margarita.
;NICOLETTO
:Pas fichue de tenir sa langue, celle-là !
;BARBARA.
:Margarita a ce travers ;
:mais je le lui ferai passer, moi.
;MARGARITA.
://`en entrant.`// Siora patronne...
;BARBARA.
:Même le couteau, il a fallu que tu en parles.
;MARGARITA.
:Oh ! il s'agit bien du couteau !
:Vous savez qui a frappé ?
:Vous savez qui est en bas ?
;BARBARA.
:Qui ?
;MARGARITA.
:Celles de la Rue de l'Oie.
;NICOLETTO
:Oh !
:misère de moi !
;BARBARA.
:Ouvre-leur, ouvre-leur, laisse-les monter ;
:chez moi, elles ne feront pas d'esclandre.
;AGNESE.
://`à Nicoletto.`// Ton coeur bat, petit ?
;NICOLETTO
:Jamais de la vie.
→ [[La Bonne Mère III,17 - Lodovica, Daniela puis Lunardo et les mêmes.]]
;LODOVICA.
:Votre humble servante, madame. BARBARA. Servante.
;DANIELA
:Servante.
;BARBARA.
:Votre servante. Vous désirez, mesdames ?
;LODOVICA.
:On est venues vous dire, vous savez, qu'on est des honnêtes gens,
:que chez nous on n'entortille pas la jeunesse..
:Que votre fils, on ne saurait pas quoi en faire et que ma fille est fiancée.
;BARBARA.
:J'en suis très heureuse, ma foi.
;DANIELA
:Oui, siora, je vais me marier,
:et pour qu'on ne jase pas sur mon compte, vu que je tiens à ma réputation, j'ai amené avec moi mon fiancé.
;BARBARA.
:Où est-il ce fiancé ?
;LUNARDO.
://`qui s'avance en boitant.`// Serviteur, ma commère.
;BARBARA.
:C'est vous, mon compère, le fiancé ?
;LUNARDO.
:Eh bien, c'est moi, oui, moi.
;NICOLETTO.
:{{En regardant Lunardo : ||scn}} Mon parrain aussi est fiancé ?
;AGNESE.
:{{En regardant Lunardo : ||scn}} Avec sa douleur ?
;GLACOMINA
:{{En regardant Lunardo : ||scn}} Vous me laisserez tranquille ?
;MARGARITA.
:{{En regardant Lunardo : ||scn}} Vous ne me direz plus de venir vous trouver ?
;LUNARDO.
:{{En se débattant : ||scn}} Femmes, il faut me comprendre.
:{{Prenant un peu de champ pour respirer : ||scn}}
:Moi aussi je suis encore de ce monde.
:{{devant l'incrédulité des autres, il plaide : ||did}} Dans l'état où je suis, j'avais besoin qu'on soccupe de moi.
:{{Ultime argument : ||did}} Le ciel n'abandonne aucun de ses enfants.
;BARBARA.
:{{Aimable mais ferme : ||did}} Mais chez moi, mon compère, vous me ferez le plaisir de n'y plus revenir.
;LUNARDO.
:{{Il se fait humble : ||did}} Tu as raison, ma fille, tu as raison.
:{{Puis se redresse et essaie de plaisanter : ||did}}
:Mais reconnais au moins qu'en épousant moi-même cette enfant, je rends sa liberté à ton fils.
;AGNESE.
:Oui, sior, c'est ma foi vrai.
:{{Se tournant, accueillante, vers Nicoletto : ||scn}}
:Sior Nicoletto peut m'épouser à présent.
;NICOLETTO.
:{{Explosant de joie : ||did}}Vivement que oui !
:{{Ils restent face à face, comme pris d'une dernière timidité : ||scn}}
;BARBARA.
:{{Les rapprochant, très gentiment : ||scn}}
:Donnez-vous la main, si vous voulez.
;AGNESE.
:{{Sourire heureux : ||did}} Voici la mienne, mon petit.
;NICOLETTO
:{{Rayonnant : ||did}} Et voici la mienne.
://`(Ils se donnent la main. )` // {{et restent un instant à se regarder, émus||scn}}
: {{Nicoletto se tourne vers les autres, radieux : ||scn}}
:Je suis marié.
:Je suis un homme, je suis marié //`(il saute de joie)`//.
;ROCCO.
:{{Interroge du regard Agnese, qui l'encourage à se déclarer : ||scn}}
:{{Se tournant avec un sourire plein d'espoir vers Barbara : ||scn}} Et moi, siora Barbara ?
;BARBARA.
:{{Elle lui donne sa bénédiction avec un sourire chaleureux : ||did}} Oui, vous aussi.
;ROCCO.
:Vous voulez bien, siora Giacomina ?
;GIACOMINA.
:{{Jouant une dernière fois la petite fille obéissante : ||did}} Qu'est-ce que vous en dites, maman ?
;BARBARA.
:Oui, petite ;
{{Les rapprochant, très gentiment : ||scn}}
:donne ta main à Sior Rocco.
;GIACOMINA.
:La voici ;
:et de bon coeur.
://`Ils se donnent la main.`//
;ROCCO.
:De bon coeur ?
;GLACOMINA
:{{Gracieuse génuflexion : ||scn}} Oui, sior.
;ROCCO.
:{{L'embrassant : ||scn}} Mon petit bijou !
;LODOVICA.
:Oh ! que de noces !
:oh ! que de fiancés !
:il m'en viendrait quasiment l'envie aussi, moi, de me fiancer.
;LUNARDO.
:Toi, allons donc!
:tu n'es qu'une vieille folle, et chez moi, tâche de ne jamais y mettre les pieds.
:Je te donnerai vingt sous par jour, par charité.
:Tu les croqueras où tu voudras, mais chez moi, je ne veux pas t'y voir.
:Serviteur.
://`Il sort avec Daniela.`//
;LODOVICA.
://`à part.`// Oh ! avec vingt sous par jour, moi, je me marie.
://`(Haut :)`// Servante.
://`Elle sort.`//
;AGNESE.
:Tout s'est bien arrangé, ma foi,
:tout s'est arrangé on ne peut mieux.
;BARBARA.
:Tu vois, ma fille ?
:Quand on agit dans une bonne intention, le ciel intervient, et tout s'arrange.
::Moi, j'ai joué mon rôle de Bonne Mère,
::toi, tu as joué celui d'une bonne amie,
::et nous voilà satisfaites toutes les deux
::et bientôt vont l'être aussi mes chers petits.
!!!!!Fin de la comédie.
;BARBARA.
:Je suis votre servante, mesdames.
;NICOLETTO.
://`à part`//. Oh ! misère de moi !
;LODOVICA.
://`à Barbara`//. Qui êtes-vous ?
;DANIELA
://`à Barbara`//. Comment êtes-vous entrée ?
;BARBARA.
://`à Nicoletto`//. Qu'est-ce que vous faites ici, monsieur ?
;NICOLETTO.
://`en tremblant`//. Rien.
;LODOVICA.
://`à Barbara`//. C'est à moi que vous devez répondre. Qui êtes-vous ?
;BARBARA.
:Si vous voulez savoir qui je suis,
:je suis la mère de ce garçon,
:madame.
;LODOVICA.
://`à Daniela`//. Eh là !
:c'est ta siora bellemère.
;DANIELA
:Tant mieux,
:j'en suis très heureuse.
;BARBARA.
:Qu'est-ce que ça veut dire ce
://ta siora belle-mère// ?
:Je ne comprends pas qu'une mère qui a des enfants puisse avoir le coeur
:d'assassiner
:un jeune homme de la sorte.
;DANIELA
:Qu'est-ce que vous dites, madame ?
;LODOVICA.
:Un peu de respect,
:nous sommes des gens comme il faut.
;BARBARA.
:Si vous étiez des gens comme il faut, vous ne feriez pas ce que vous faites.
;DANIELA
:Qui a été le chercher, votre fils ?
;LODOVICA.
:Qui lui a dit de venir compromettre ma petite ?
;BARBARA.
:Allons, monsieur le forban,
:monsieur le propre à rien,
:hors d'ici
:et tout de suite.
;NICOLETTO.
:Oui, maman,
:je viens.
;DANIELA
://Oui maman//,
:tu lui dis ?
;LODOVICA.
://Oui maman//, tu lui dis ?
;DANIELA
:Tu as peur de lui dire que tu es mon promis ?
;LODOVICA.
:Tu n'oses pas lui dire qu'elle est ta fiancée ?
;BARBARA.
:Oh ! misère de moi !
:sa //fiancée// ?
:son //promis// ?
:Le vaurien, le chien,
://`(aux deux femmes :)`// vous l'avez assassiné,
:assassiné.
;LODOVICA.
:Hé là, hé là.
;DANIELA
:Qu'est-ce que vous dites ?
;LUNARDO.
://`qui entre.`// Du calme, du calme, femmes.
:Pas de scandale.
;DANIELA
:Avec son homme de main, en plus ?
;LODOVICA.
:Tu ne vois pas qu'il ne tient pas sur ses jambes ?
;BARBARA.
:Pauvre vaurien !
:pauvre insensé !
:Tu as donc eu le coeur de t'assassiner, et d'assassiner ta pauvre mère ?
:Te marier ?
:Toi, te marier ?
:et prendre une fille qui n'a rien de rien ?
:Comment tu feras pour la nourrir, gros malin ?
:Tu n'as pas de bien, tu n'as pas d'emploi ;
:jusqu'à présent, c'est moi qui t'ai nourri
::avec le peu de dot qui me reste,
::avec mon ouvrage,
::avec celui de ta pauvre soeur ;
:nous nous sommes dépouillées pour te nantir.
:Tu sais ce que j'ai fait pour toi.
:Je n'ai pas honte de le dire, j'ai quasiment demandé l'aumône
::pour t'élever avec dignité,
::pour te donner de l'instruction,
::pour que tu vives honorablement et selon ta naissance.
:Oh ! malheureux que tu es,
::dans la fleur de ta jeunesse,
::quand la vie s'ouvre devant toi,
::tu fais ainsi ta propre perte,
::tu te brises toi-même l'échine ?
:Ah ! femmes,
:pardonnez-moi.
:Pardonnez-moi, femmes,
:et pensez-y bien vous aussi
:Ce garçon n'est qu'un assassin,
:il m'a assassinée, moi,
:et il vous assassine vous aussi.
:Toi, tu vas épouser un gueux.
:Tu seras dans la misère.
:Et moi pauvre veuve,
:et moi pauvre mère,
:après avoir tant trimé et tant pleuré,
:j'aurai la douleur de voir souffrir mon sang
:et de dire :
:Ce pain que tu t'es ôté de la bouche a nourri
:un sans coeur,
:un traître.
://`L'un après l'autre, Nicoletto d'abord puis Lodovica.`//
;NICOLETTO.
://`à part`//. Maudit soit le jour où je suis entré ici.
;LUNARDO.
:Quand je vois pleurer des femmes, je ne peux pas me retenir.
;BARBARA.
://`avec tendresse, en soupirant`//. Nicoletto.
;NICOLETTO.
://`mortifïé`//. Maman.
;BARBARA.
:Regarde-moi.
://`Il éclate en sanglots.`//
;BARBARA.
:Tu pleures, ah ! tu pleures.
::Les larmes d'un fils, ou des larmes de crocodile ?
;NICOLETTO.
:Je sens que mon coeur se brise.
;LODOVICA.
:Ton coeur se brise, ah ?
:Monsieur le faufilou,
:monsieur le menteur;
:venir ici entortiller cette pauvre innocenre;
:et moi bonne pâte,
:moi qui n'ai jamais voulu d'histoires chez moi,
::il m'a ensorcelée,
::je ne sais pas comment il s'y est pris,
::il m'a ensorcelée.
;BARBARA.
:Chère siora,
:voilà "un mal qui peut se guérir.
:Il l'a épousée, ta fille ?
;LODOVICA.
:Il ne l'a pas épousée, mais il s'est engagé à l'épouser,
:et elle a refusé pour lui d'autres propositions,
:tout le monde le sait:
:s'il ne l'épouse pas, la voilà belle.
://`ils se sont tous mis à pleurer, puis Daniela, puis Lunardo,`//
;DANIELA
:Faudrait tout de même penser qu'on va se mettre à clabauder sur mon compte
:et qu'on dira de l'honnête fille que je suis :
::Elle fréquentait un tel,
::il était même son promis,
::et du moment qu'il n'en veut plus, il doit y avoir une sacrée raison !
;BARBARA.
:Mais tu n'as donc pas compris :
:il n'a pas le sou.
;DANIELA
:Moi, ça m'est complètement égal.
:Sans toit, sans pain, sans rien,
:mais c'est lui que je veux.
;LODOVICA.
:Faudrait tout de même pas oublier notre réputation.
;LUNARDO.
://`à part.`// La pauvre! elle me fait pitié.
;BARBARA.
:Bon, ce qui ressort de tout ça, c'est que vous êtes des femmes prêtes à tout.
:Mais mon fils ne l'a pas encore prise,
:et
:sacré nom de nom !
:il ne la prendra pas.
;LODOVICA.
:S'il a quelque chose au ventre,
:il faudra bien qu'il la prenne.
;BARBARA.
://`à Nicoletto`//. Allons, du coeur,
:rentre à la maison avec moi.
;NICOLETTO.
:Oui, maman, je viens.
;DANIELA
:Nicoletto, mon petit, mon coeur.
;NICOLETTO.
:Hou ! //`(Il se frappe la tête à coups de poing.)`//
;BARBARA.
:Espèce de bourrique, espèce d'animal. (//`Elle lui flanque une claque retentissante.)`//
;NICOLETTO.
:Battez-moi, tuez-moi,
:vous avez raison.
;LODOVICA.
://`à Barbara.`// En voilà des façons pour une mère!
;BARBARA.
://`à Lodovica.`// Tais-toi, vois-tu,
:tais-toi, toi,
:et ce nom de mère, respecte-le ;
:et si ton coeur est si mauvais qu'il ne te permet même pas de reconnaître ce qu'est le devoir d'une mère,
:apprends-le de moi.
://`(A Nicoletto, en le saisissant par une main :)`// Allons, courage, sors d'ici avec moi.
;DANIELA
:Ah ! tout est perdu.
;LODOVICA,
://` à Nicoletto`//. Tu ne partiras pas d'ici comme ça.
://`Elle s 'empare de son autre main pour le retenir. `//
;BARBARA.
://`en tirant Nicoletto vers la porte`//. Viens avec moi et ne t'occupe pas du reste.
;LODOVICA.
:Je te dis de ne pas bouger d'ici.
;LUNARDO.
://`à Lodovica`//. Allons, madame, laissez-le partir.
;LODOVICA.
://`en tirant`//. Je ne veux pas.
;BARBARA.
://`en tirant`//. C'est mon fils.
;LODOVICA.
://`en tirant`//. Il doit prendre ma fille.
;BARBARA.
:Que le diable la prenne, et vous avec.
://`Elle repousse violemment Lodovica qui va heurter Lunardo et tous deux tombent à terre ,' Daniela se jette sur une chaise et Barbara part en courant, traînant Nicoletto dernière elle.`//
→ [[La Bonne Mère III,3 - Lunardo Lodovica et Daniela]]
;LUNARDO.
://`à terre.`// Oh ! misère ! aidez-moi.
;LODOVICA.
://`à terre`//. Donne-moi un coup de main, Daniela.
;DANIELA
:Oh! maman, je ne tiens pas sur mes jambes.
;LODOVICA.
:Oh ! misère de moi, misère !
://`Elle se relève.`//
;LUNARDO.
:Si vous ne m'aidez pas, moi, je ne me relève pas.
;LODOVICA.
:Allez, réveille-toi, viens ici,
:aide donc ce brave homme, il peut te faire du bien, lui.
:Si c'est un homme juste, il s'arrangera pour que Nicoletto tienne la parole qu'il t'a donnée.
;DANIELA
:Oh ! moi, je suis née malchanceuse.
://`Elles aident toutes deux Lunardo à se relever. `//
;LUNARDO.
:Que le ciel vous sache gré du bien que vous me faites.
://`Il va s 'asseoir.`//
;LODOVICA.
://`bas à Daniela, en la tirant à l'écart.`// Dis voir toi, petite.
:Ecoute,
:tu l'aimes donc tant que ça, ce garçon ?
;DANIELA
:Moi, je ne dis pas que je l'aime à la folie,
:mais je l'aime, voilà tout ;
:et puis
:je pense que chaque année qui passe est une année qui passe,
:et si je manque cette occasion, va savoir quand je me marierai.
;LUNARDO.
://`à part.`// Il pouvait m'arriver pire ? //`(Haut :) `//Si ma douleur ne passe pas, moi, je ne peux pas m'en aller.
;LODOVICA.
://`comme plus haut.`// Ecoute,
:ou bien il faudra qu'il t'épouse,
:ou bien il te donnera une compensation.
;DANIELA
:Je veux le traîner en justice.
:Si moi, il ne me prend pas, je ne veux pas qu'il en prenne une autre,
:ça, c'est sûr.
;LODOVICA.
://`comme plus haut`//. Voyons ce qu'en dit ce brave homme.
:Il m'a l'air d'un homme de coeur.
;DANIELA
:Ça doit être un de ses parents,
:il sera contre nous.
;LODOVICA.
://`comme plus haut.`// Essayons,
:faisons-lui des cajoleries.
:On ne sait jamais.
://`Elle s'approche de Lunardo`//.
;DANIELA
:Oh ! c'est dur, tout de même.
:Avoir l'âge que j'ai,
:vouloir me marier et ne pas pouvoir !
://`Elle s 'approche de Lunardo elle aussi.`//
;LODOVICA.
:Vous vous êtes fait mal ?
;LUNARDO.
:Un peu.
;DANIELA
:Qu'est-ce qu'elle a votre jambe ?
;LUNARDO.
:Une fluxion que j'ai attrapée voilà deux trois ans,
:mais cette année, elle me tourmente plus que d'habitude.
:Je suis resté couché deux mois sans pouvoir me retourner dans mon lit.
:Depuis deux ou trois jours, j'allais mieux;
:mais maintenant,
:après ta bûche que je viens de prendre,
:je ne sais pas ce que ça va donner.
;LODOVICA.
:Mon pauvre !
:Il est parent avec vous, Sior Nicoletto ?
;LUNARDO.
:Non, siora.
:C'est mon filleul.
;LODOVICA.
:Qu'est-ce que vous dites de tout ça ?
;LUNARDO.
:Pauvre petite !
:vrai, elle me fait pitié.
;LODOVICA.
:Qu'est-ce que vous en pensez ?
:C'est une enfant qu'on peut maltraiter de la sorte ?
;LUNARDO.
://`il met ses lunettes`//. Vous voulez que je vous dise ?
:Un sacré beau brin de fille.
;DANIELA
:Vous êtes trop bon, je n'en mérite pas tant.
;LODOVICA.
:Et mci, je devrai supporter qu'à cause d'un fripon de fils et de la possédée qu'il a pour mère,
:cette pauvre enfant reste là à pourrir sur pied ?
;LUNARDO.
:Non, ma petite, le ciel y pourvoira.
:Asseyez-vous, femmes,
:ne restez pas debout;
:moi, je ne peux pas me lever.
;DANIELA
:Oh ! ça n'a pas d'importance,
:restez assis.
;LODOVICA.
:Vous avez très mal ?
;LUNARDO.
:Pour l'instant, pas trop ;
:mais quand je suis tombé, j'ai cru m'évanouir.
;DANIELA
:Vous voulez un peu d'eau ?
;LODOVICA.
:Non,
:un café vous ferait plus de bien.
;LUNARDO.
:Le café me ferait du bien ?
;LODOVICA.
:Oui, sapristi !
:Vous voulez qu'on envoie en chercher ?
;LUNARDO.
:Vous me rendriez service.
;LODOVICA.
:C'est comme si c'était fait ;
:j'appelle une gamine qui habite en face, et elle va le commander.
;LUNARDO.
:Pour vous deux aussi, vous savez.
;LODOVICA.
:Tu entends, Daniela ?
;LUNARDO.
:Daniela, mais quel beau nom !
;DANIELA
:Oh ! moi, je vous remercie.
:Du café, je n'en veux pas.
;LUNARDO.
:Qu'est-ce que vous voulez ?
;DANIELA
:Rien.
;LODOVICA.
://`à part`//. Oh ! la sainte-nitouche.
;LUNARDO.
://`à Daniela`//. Je vous en prie, prenez quelque chose.
;LODOVICA.
:Eh ! oui, oui, pour elle aussi. Vous permettez.
://`Elle sort.`//
[[La Bonne Mère III,4 - Lunardo et Daniela.]]
;DANIELA
://`à part`//. Ma fichue mère, pour un café, je ne sais pas ce qu'elle ferait.
;LUNARDO.
:Mais pourquoi vous ne vous asseyez pas ?
;DANIELA
:Parce que je veux grandir.
;LUNARDO.
:Eh eh!
:encore ?
:Je n'arrive déjà pas à vous voir, nom de nom !
://`(Il met ses lunettes. Elle s'assoit assez loin de lui.)`//
:Je vous en prie,
:aidez-moi à venir près de vous.
;DANIELA
:Bien sûr
://`Elle l'aide.`//
;LUNARDO.
:Mais les belles grandes mains que vous avez !
;DANIELA
:Oh ! qu'est-ce que vous dites ?
[[La Bonne Mère III,5 - Lodovica et les mêmes.]]
;LODOVICA.
:J'ai fait la commission. Bravo, on s'amadoue! On s'est même assise.
;DANIELA
:Vous n'avez qu'à vous asseoir aussi.
;LUNARDO.
:Oh ! si vous avez quelque chose à faire, ne vous gênez pas.
;LODOVICA.
:Je vais m'asseoir en attendant le café.
://`(Elle s 'assoit.)`//
:Je regrette que vous soyez arrivé un mauvais jour, où vous nous voyez toutes tourneboulées;
:autrement, on vous aurait fait meilleur accueil.
;DANIELA
:Si vous saviez !
:je me sens si humiliée que je ne peux même pas en parler.
;LUNARDO.
:Ecoute, petite, d'un côté je te plains;
:mais de l'autre, tu peux être sûre que ce n'était pas une affaire pour toi.
:Que veux-tu que fasse un pauvre garçon qui n'a rien de rien ?
;LODOVICA.
:Si vous aviez entendu comment il la ramenait !
;DANIELA
:Il en disait des choses, il en disait.
;LUNARDO.
:Au jour d'aujourd'hui, la jeunesse ne sait plus se servir que de sa langue.
:Oh ! moi, petite, si tu m'avais connu dans mon bel âge !
;LODOVICA.
:Vous êtes marié ?
;LUNARDO.
:Non, siora.
;LODOVICA.
:Vrai, vous n'êtes pas marié ?
;LUNARDO.
:Puisque je vous le dis.
;DANIELA
:Pourquoi vous ne vous êtes pas marié ?
;LUNARDO.
:Je vais te dire, petite;
:tant que je me suis bien porté, ça ne me servait à rien de me marier.
:Maintenant que me voilà dans cet état, personne ne me veut.
;LODOVICA.
:Eh hé ! Daniela;
:personne ne le veut.
;DANIELA
:On dit ça pour dire.
;LUNARDO.
:Qui voudriez-vous qui me prenne dans l'état où je suis ?
;LODOVICA.
:Vous avez autre chose en plus de la fluxion ?
;LUNARDO.
:Rien d'autre, grâce au ciel.
;LODOVICA.
:Qui s'occupe de vous chez vous ?
;LUNARDO.
:Ah ! si vous saviez !
:personne de confiance.
:Je suis entre les mains d'une servante et d'un valet qui me font devenir fou.
;LODOVICA.
:Tu entends, Daniela ?
:Il a servante et valet.
;DANIELA
:ça se voit tout de suite que c'est une personne de conséquence, non ?
;LODOVICA.
:Pauvre homme !
:vous auriez besoin qu'une femme s'occupe de vous !
;LUNARDO.
://`à part.`// Quelle bougresse, cette vieille-là !
;LODOVICA.
:Oh !
:le café qui arrive.
:Entrez donc...
;LUNARDO.
:Non, non, allez le prendre vous même ;
:pas besoin que ces gens-là nous voient.
;LODOVICA.
:Oui, oui, vous avez raison.
://`(A part :)`// Oh ! cet homme-là sait y faire !
://`Elle va chercher le café puis revient.`//
;LUNARDO.
://`à Daniela`//. Il faut être prudent quand on aime les gens.
;DANIELA
:Oh ! vous avez raison.
;LODOVICA.
:Vous souhaitez prendre beaucoup de sucre ?
;LUNARDO.
:Servez-vous les premières.
;LODOVICA.
:Non, sior, vous d'abord.
:Fais le service, Daniela, tu le fais si bien.
:Oh ! si vous saviez la merveilleuse maîtresse de maison que c'est, cette enfant !
;DANIELA,
://`lui montrant le sucre qu 'elle met dans sa tasse`//. Comme ça ?
;LUNARDO.
:Oui, siora, c'est parfait.
://`Daniela remplit les trois tasses tandis qu 'ils continuent à parler.`//
;LODOVICA.
:Dites, comment vous vous appelez ?
;LUNARDO.
:Lunardo.
:Lunardo Cubàtoli pour vous servir.
:Bien connu dans la ville,
::vivant de ses rentes,
::avec la réputation,
::grâce au ciel,
::d'un homme de bien qui ne fait de mal à personne
::et qui fait du bien à tous,
:s'il peut.
;DANIELA
:Vous n'avez jamais été amoureux ?
;LUNARDO.
:Jamais en public.
;LODOVICA.
:Et en secret ?
;LUNARDO.
:Chaque fois que j'ai pu.
;LODOVICA.
:Mais le brave homme!
:mais qu'il est plaisant !
;DANIELA
:Dites-moi, s'il vous plaît,
:pour quelle raison vous êtes venù ici aujourd'hui.
;LUNARDO.
:Ma commère,
:c'est elle qui m'a traîné ici de force.
;LODOVICA.
:Pour l'amour de son fils, hein ?
;LUNARDO.
:Pour l'amour de son fils.
;DANIELA
:Et moi, il m'a roulée !
;LODOVICA.
:Oh ! allez, n'en parlons plus.
:Celui-là, toi, tu dois te le sortir de la tête.
:Il n'était pas pour toi.
:Le ciel sait ce qu'il fait.
:Si tu dois un jour avoir ta chance, tu l'auras.
:Tu vois ?
:C'est un homme du genre de cet homme-ci qu'il te faudrait, à toi.
;DANIELA
:Oh !
:moi, je ne suis pas digne d'un homme comme lui !
;LUNARDO.
://`à part.`// Elle a je ne sais quoi d'attendrissant, cette enfant,
:qui me fait vraiment de l'effet !
;LODOVICA.
:puis-je faire remporter les tasses ?
;LUNARDO.
:Oui, siora, comme vous voudrez.
;LODOVICA.
:Puis-je renvoyer le garçon ?
;LUNARDO.
:Renvoyez-le donc.
;LODOVICA,
://`à part`//. Il ferait beau voir que j'aie à le payer moi-même, le café !
;LUNARDO.
:Sérieusement, siora Daniela...
;LODOVICA.
:Vous avez de la monnaie, vous ?
;LUNARDO.
:Oh ! c'est ma foi vrai, j'oubliais.
:J'étais tellement sous le charme de cette enfant que ça m'était sorti de l'esprit.
;LODOVICA.
:C'est comme ça.
::Je ne sais pas ce qu'elle a.
::Tous ceux qui la voient tombent sous le charme.
;LUNARDO.
:Tenez,
:c'est une pièce de quinze sous ?
;LODOVICA.
:Oui, sior.
://`(Bas à Daniela :)`// Tu as vu toutes les pièces qu'il a ?
:pas comme l'autre morveux !
://`Elle remporte les tasses.`//
;DANIELA
://` à part`//. Oh ! s'il voulait de moi, sa douleur me serait bien égale.
;LUNARDO.
://`à part`//. Je vais les mettre à l'épreuve.
:Je veux savoir quelle race de gens c'est, ces femmeslà.
;LODOVJCA,
://`qui revient, à Lunardo`//. Voilà,
:je suis à vous.
;LUNARDO.
:Siora... comment vous vous appelez ?
;LODOVICA.
:Lodovica, pour vous servir.
://`Elle se rassoit.`//
;LUNARDO.
:Siora Lodovica, je m'aperçois que l'une comme l'autre,
:votre fille et vous,
:vous êtes bien disposées à mon égard ;
:je voudrais vous faire une proposition.
;LODOVICA.
:Dites. Et vous savez,
:même comme me voilà, je suis une femme que...
:bon,
:ce n'est pas pour dire...
;LUNARDO.
:Moi, comme je disais,
:je suis seul chez moi...
;LODOVICA.
:Ecoute aussi, toi,
:Daniela.
;DANIELA
:Oh ! j'écoute.
;LUNARDO.
:Je n'ai personne à qui me fier,
:et dans l'état où je suis, j'ai besoin qu'on m'aide,
:j'ai besoin qu'on s'occupe de moi.
;LODOVICA.
:Sacré nom !
:ma fille, pour ça, un vrai prodige.
:Tu serais contente de le faire, Daniela ?
;DANIELA
:Vous le demandez ? et comment !
;LUNARDO.
://`à Lodovica`//. Et vous, vous pourriez mettre aussi la main à la pâte.
;LODOVICA.
:Moi ?
:Vous me voyez bien, moi ?
:Vieille comme je suis, je prendrais encore sur mon dos le fracas d'un ménage.
;LUNARDO.
:Très bien ;
:alors, si vous voulez venir habiter chez moi toutes les deux
::vous ne manquerez de rien ;
::je vous confierai la direction du ménage ;
::je vous verserai tant par an pour vous rhabiller,
::et puis,
::bon,
::vous aurez tout ce que vous voudrez.
;LODOVICA.
:Oui, sior, moi, ça m'irait.
;LUNARDO.
://`à Daniela`//. Ah ! qu'est-ce que tu en dis, petite ?
;DANIELA
:Qu'est-ce que je serais au juste, chez vous, sior ?
;LUNARDO.
:Ma gouvernante.
;LODOVICA.
:Oui, sior,
:la gouvernante.
;DANIELA
:Je ne comprends pas qu'à une jeune fille, vous veniez proposer une chose pareille.
:Je suis jeune, mais je ne suis pas aussi gourde que vous croyez.
:Les filles convenables ne vont pas comme gouvernantes chez un homme seul,
:chez un homme qui a des amours en secret.
:Ma mère serait là aussi, bien sûr,
:mais ma mère,
:je vous demande pardon,
:sait moins bien se conduire que moi.
://`Elle sort.`//
[[La Bonne Mère III,6 - Lunardo et Lodovica.]]
;LUNARDO.
: //`à part`//. Elle m'a occis.
;LODOVICA.
://`à part`//. La garce ! //`(Haut :)`// Elle plaisante, vous savez.
;LUNARDO.
:Non, siora, elle ne plaisante pas. Elle parle sérieusement, et je vais parler sérieusement aussi, moi. Mais vous, siora... Aidez-moi à me lever.
;LODOVICA.
:Voilà ; qu'est-ce que vous avez contre moi ?
;LUNARDO.
:Passons à côté, allons retrouver votre fille, j'ai à lui parler.
;LODOVICA.
:Oui, sior, allons-y.
;LUNARDO.
://` à part.`// Maintenant je suis sûr que c'est une fille qui sait se conduire.
;LODOVICA.
:On ira habiter chez vous ?
;LUNARDO.
:Elle oui,
:et vous
::non.
://`Il sort en boitant.`//
;LODOVICA.
:Oh ! bancroche du diable !
:je veux manger aussi, moi.
://`Elle sort.`//
[[La Bonne Mère III,7 - Chez Barbara. Giacomina et Margarita.]]
;GLACOMINA.
:Je t'en prie, arrête de me casser les oreilles avec mon fichu frère.
:C'est ma mère qui m'inquiète,
:je ne la vois toujours pas revenir.
;MARGARITA.
:C'est loin, vous savez, où elle est allée.
;GLACOMINA.
:Voilà beau temps aussi qu'elle est partie.
;MARGARITA.
:Elle est allée Rue de l'Oie.
;GLACOMINA.
:Moi, je ne sais pas où c'est.
;MARGARITA.
:Et puis !
:qui sait ce qui a pu se passer !
;GLACOMINA.
:Écoute, ne m'ôte pas le peu de coeur qui me reste.
;MARGARITA.
:Si vous saviez les femmes que c'est !
;GLACOMINA.
:Mais puisque je ne veux pas le savoir.
;MARGARITA.
://`avec mépris`//. Vous auriez une de ces belles-sœurs !
;GLACOMINA.
:J'espère bien que non.
;MARGARITA.
://`en pleurant.`// Oh !
:je ne suis plus votre petite Margarita,
:non.
;GLACOMINA.
:Si que tu l'es,
:madame.
:Viens ici.
://`Elles s 'embrassent et s 'essuient les yeux récçproquement.`//
;MARGARITA.
:On frappe.
;GLACOMINA.
:Oh ! si seulement c'était ma mère !
;MARGARITA.
://`en allant vers la porte et en parlant assez fort pour que Giacomina l'entende`//.
:Sa mère, pensez-vous !
:Elle n'est pas près de revenir !
:Qui sait quel raffût du diable ça aura fait là-bas ?
:Qui sait si elles ne se sont pas battues ?
:J'ai peur d'apprendre une catastrophe.
://`Elle sort.`//
→ [[La Bonne Mère III,8 - Giacomina, puis Margarita, puis Agnese.]]
;GIACOMINA.
:Mais quelle drôle de fille !
:elle veut avoir raison, y a pas, elle veut avoir raison.
:Je le vois bien toute seule qu'elle parle par affection et parce qu'elle prend les choses à coeur,
:mais elle s'en fiche complètement de me donner du tourment, à moi.
;MARGARITA.
://`qui revient`//. C'est Sior'Agnese.
;GLACOMINA.
:Deux fois le même jour ?
;MARGARITA.
:Une affaire pressante, faut croire.
;GLACOMINA.
:ça m'ennuie que ma mère ne soit pas là.
;MARGARITA.
:Et qui sait quand elle rentrera ?
;GLACOMINA.
:Ne va rien lui dire, toi, à Sior'Agnese.
;MARGARITA.
:Oh ! je me tais.
;AGNESE
://`qui entre.`// Servante, siora Giacomina.
;GLACOMINA.
:Servante.
;AGNESE.
:Où est Siora Barbara ?
;MARGARITA.
:Elle n'est pas là, voyez-vous.
;AGNESE.
:Où est-elle allée ?
;GLACOMINA.
:Faire une commission près d'ici.
;AGNESE.
:Elle va bientôt rentrer ?
;GLACOMINA.
:Moi, je dirais que oui.
;MARGARITA.
:Pensez donc, elle n'a pas encore mangé.
;GIACOMINA
://`à part.`// Quel besoin elle avait de lui dire qu'on n'a pas mangé ?
;AGNESE.
:Vous n'avez pas encore mangé ?
:Il faut donc qu'elle ait des affaires bien pressantes.
;MARGARITA.
:Oh ! si elles sont pressantes !
://`Giacomina tousse pour inviter Margarita à se taire, celle-ci tousse en réponse.`//
;AGNESE
://`à Giacomina.`// Sior Nicoletto est là ?
;MARGARITA.
://`devançant Giacomina`//. Non, siora. "
;AGNESE
://`à Margarita`//. Où est-il ?
;GIACOMINA
://`devançant Margarita`//. Avec sa mère.
;AGNESE.
:Oh ! bravo !
:quand je parle à l'une, c'est l'autre qui répond.
;GIACOMINA
://`à Margarita`//. S'il te plaît, rends-moi un service,
:va donc faire deux ou trois points à mon sarrau.
;MARGARITA.
://`à part`//. J'ai compris,
:elle veut que je m'en aille pour que je me taise.
:Vaut mieux que je parte, parce que si je reste ici, moi je parle, c'est sûr.
://`Elle sort.`//
[[La Bonne Mère III,9 - Giacomina et Agnese.]]
;AGNESE.
:J'aimerais bien qu'ils reviennent.
;GLACOMINA.
:Vous avez quelque chose à lui dire, à ma mère ?
;AGNESE.
:Oui, siora.
;GLACOMINA.
:Et moi,
:je ne peux pas savoir ?
;AGNESE.
:Oh! vous le saurez aussi.
:Tant qu'à faire, je vais ôter mon châle.
://`(Elle enlève son châle.)`//
;GIACOMINA
:Oui, oui,
:débarrassez-vous.
://`(Elle l'aide.)`//
;AGNESE.
:Siora Giacomina, j'ai bien l'impression que nous vous avons fiancée.
;GLACOMINA.
:Moi ?
;AGNESE.
:Tout juste.
;GLACOMINA.
:Oh ! allez.
;AGNESE.
:Si, je vous assure.
;GLACOMINA.
:Avec qui, s'il vous plaît ?
;AGNESE.
:Avec Sior Rocco.
;GLACOMINA.
:Avec Sior Rocco ?
;AGNESE.
:Cela vous convient ?
;GLACOMINA.
:Si cela convient à ma mère, et si je suis sûre de pouvoir y trouver mon aise,
:moi,
:cela me conviendra tout à fait.
;AGNESE.
:Mais il n'y a pas à dire, avec vos principes, vous êtes bien la digne fille d'une mère comme la vôtre.
;GLACOMINA.
://`à part`//. Oh ! si elle pouvait rentrer !
;AGNESE.
:Sior Nicoletto est donc sorti avec elle ?
;GLACOMINA.
:Oui, siora.
;AGNESE.
:Pauvre petit !
:quel bon garçon !
:J'en suis restée pantoise ;
:quand il m'a raccompagnée, il m'a bien ramenée jusque devant ma porte,
:mais de peur que sa mère le gronde, il est reparti tout de suite en courant,
:il n'a même pas attendu que l'on m'ait ouvert.
;GLACOMINA.
://`à part.`// Je prie le ciel que rien ne soit découvert.
;AGNESE.
:Il est rentré aussitôt ?
;GLACOMINA.
:Moi, je ne sais pas, voyez-vous,
:parce que moi, je travaillais à ma broderie.
://`(A part :)`// Dire des mensonges me fait mal partout,
:mal partout.
→ [[La Bonne Mère III,10 - Margarita et les mêmes.]]
!!''Scène première''
!!!!!''ARTHÉNICE, MADAME SORBIN''
;ARTHÉNICE
:Ah çà !
:Madame Sorbin, donnons-nous la main,
:unissons-nous et n'ayons qu'un même esprit toutes les deux.
:Depuis qu'il a fallu nous sauver avec eux dans cette île où nous sommes fixées, le gouvernement de notre patrie a cessé.
:Nous voici chargées du plus grand intérêt que notre sexe ait jamais eu,
:et cela dans la conjoncture du monde la plus favorable pour discuter notre droit vis-à-vis les hommes.
;MADAME SORBIN
:Oui, il en faut un tout neuf ici,
:et l'heure est venue ;
:nous voici en place d'avoir justice, et de sortir de l'humilité ridicule qu'on nous a imposée depuis le commencement du monde :
:plutôt mourir que d'endurer plus longtemps nosaffronts.
:Les hommes vont dans un moment s'assembler sous des tentes, afin d'y choisir entre eux deux hommes qui nous feront des lois ;
:Ils ont battu le tambour pour convoquer l'assemblée.
;ARTHÉNICE
:Eh bien ?
;MADAME SORBIN
:Eh bien ?
:Il n'y a qu'à enjoindre à nos femmes de s'assembler avec nous, et d'avoir à mépriser les règlements de ces messieurs,
:Dressons tout de suite une belle et bonne ordonnance de séparation d'avec les hommes.
:Ils ne se doutent encore de rien. On verra la fin de leur monde,
:la race des hommes s'éteindra !
:Voici déjà une de nos compagnes qui accourt pour vous reconnaître.
!!''Scène VII''
!!!!!''LES DÉPUTÉES, ARTHÉNICE, MADAME SORBIN, LINA, UNE FEMME qui arrive.''
;LA FEMME
:Je me hâte de venir rendre hommage à nos souveraines, et de me ranger sous leurs lois.
;ARTHÉNICE
:Embrassons-nous, mes amies.
:Considérons d'abord l'abaissement où nous avons langui jusqu'à ce jour.
;MADAME SORBIN
:Il y a des bancs là-bas, il n'y a qu'à les approcher.
://(À Lina.)// Allons, petitefille, alerte.
;LINA
:Je vois Persinet qui passe,
:il est plus fort que moi,
:et il m'aidera, si vous voulez.
;UNE DES FEMMES
:Quoi !
:Nous emploierions un homme ?
;ARTHÉNICE
:Pourquoi non ?
;MADAME SORBIN
:C'est bien dit ; dans l'occurrence présente, cela nous portera bonheur.
://(À Lina.)// Appelez-nous ce domestique.
;LINA appelle.
:Persinet !
:Persinet !
!!''Scène VIII''
!!!!!''Tous les acteurs précédents, PERSINET''
;PERSINET accourt.
:Qu'y a-t-il, mon amour ?
;LINA
:Aidez-moi à pousser ces bancs jusqu'ici.
;PERSINET
:Avec plaisir,
:mais n'y touchez pas, vos petites mains sont trop délicates,
:laissez-moi faire.
://Il avance les bancs, Arthénice et Madame Sorbin, après quelques civilités, s'assoient les premières ; Persinet et Lina s'assoient tous deux aumême bout.//
;ARTHÉNICE, à Persinet.
:J'admire la liberté que vous prenez, petit garçon,
:ôtez-vous de là, on n'a plus besoin de vous.
;MADAME SORBIN
:Votre service est fait, qu'on s'en aille.
;LINA
:Il ne tient presque pas de place, ma mère,
:il n'a que la moitié de la mienne.
;MADAME SORBIN
:À la porte, vous dit-on.
;PERSINET
:Voilà qui est bien dur !
{{Colonie-sc10}}
!!!!!!//Michèle →//
!!LA FEMME JUIVE
!!//Grand-peur et misère du IIIème Reich
//<br>^^de Brecht^^
!!!!!!''Francfort, 1935.''
{{Les téléphones}}
::
<center> <br>
^^__Manèges :__^^ <$list filter="[[1.- Oui, je pars, Fritz.]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
//C’est le soir.
une femme fait ses malles.
Elle trie ce qu’elle va emporter.
[…] Elle se promène de long en large.
Puis elle commence à parler,
elle répète le petit discours qu’elle compte tenir à son mari.
On doit voir sur quelle chaise il est supposé être assis.//
{{---------------------}}
{{1.- Oui, je pars, Fritz.}}
{{2.- Ne dis pas que tu n’es pas changé, tu l’es !}}
{{---------------------}}
{{3.- Je ne te l’ai pas dit que je voulais partir, que je voulais partir depuis longtemps.}}
{{4.- Oui, je fais mes bagages.}}
{{5.- Je ne veux pas que tu me dises que je ne dois pas partir.}}
{{---------------------}}
{{6.- Quels hommes vous êtes...Oui, je ne suis pas raisonnable.}}
{{7.- Dans le prochain pays où j’irai, cela ne devra plus se passer ainsi.}}
{{Avec son mari}}
:
.
Ravenne n'est plus, en effet, au bord de la mer, celleci ayant reculé.
Donc : //chercher son bonheur là où il n'est pas, chercher midi à quatorze heures//.
!La souffleuse
,,{{(Arrivée de Christine... Elle marche à la recherche de Perdican.)||scn}},,
;Catherine
:Ah ! La voilà la jeune première... Eh bien j'espère qu'elle sait son texte aujourd'hui... Par ce que je voudrais bien finir mon pull-over... Regardez-moi ça... Ça veut faire l'actrice... Elle ne sait pas marcher... En jean ça passe mais en robe, zéro ! Qu'est-ce qu'elle fait sur les planches celle-là ! Elle devrait être dans le trou à ma place !
;Christine
:" Bonjour cousin, j'ai cru m'apercevoir à tort ou à raison... Que vous me quittiez tristement ce matin... "
;Catherine
:Ça ne m'étonne pas... Il est bien ce garçon et puis il sait son texte... Lui.
;Christine
:" //Vous m'avez pris la main malgré moi, je viens vous demander la vôtre. Je vous ai refusé un baiser. Le voilà.// "
;Catherine
:Ça, pour se faire bécoter, elle est forte... On sait comment elle a eu le rôle.
;@@Perdican@@
:" //Avais-je fait un rêve ou en fais-je un autre en ce moment ?// "
;Catherine
:Un vrai cauchemar, oui ! Enfin passons, pourvu qu'elle arrive au bout de sa première réplique que je puisse terminer mon rang, c'est tout ce que je demande.
;Christine
:" //Je suis d'humeur changeante. Mais vous m'avez dit un mot très juste ce matin...// " Heu… heu… Qu'est-ce que je dis ?
;Catherine
:Je n'en sais rien... Une minute, laissez-moi le temps de souffler.
;Christine
:Vite...
;Catherine
:Ça va, j'ai perdu la page... Bon, alors : " //bonjour cousin, j'ai cru//... Etc. //Je suis d'humeur changeante...// " Bon, ça c'est dit... C'est mal dit mais c'est dit ! " //Puisque nous ne quittons, quittons nous bons amis// ".
;Christine
:" //Puisque nous nous quittons, quittons-nous bons amis.// "
;Catherine
:C'est pas du tout ça !
;Christine
:C'est ce que vous m'avez dit !
;Catherine
:D'accord, mais mettez plus d'émotion Mademoiselle.
;Christine
:" //Puisque nous nous quittons, quittons-nous bons amis.// " Ça va ?
;Catherine
:C'est un peu mieux.
;Christine
:" //Vous ne savez pas la raison pour laquelle je pars et je viens vous la dire, je vais prendre le voile.// "
;Catherine
:C'est ça, bonne idée... Va te cacher avant que ce soit le public qui les mette les voiles ! Un vrai massacre, pauvre Musset... Il méritait pas ça !
;@@Perdican@@
:Chut... Je peux parler : <br>" //Ne m'interrogez pas là-dessus, car je ne me ferai jamais moine !// "
;Catherine
:Tant mieux, un acteur de sa virilité, ce serait dommage avec toutes ces folles.
;Christine
:" //Je vous ai paru brusque et hautaine, cela est tout simple, j'ai renoncé au monde. Cependant euh… Cependant...// " ^^//{{(Elle tape du pied.)||scn}}//^^ ... La suite...
;Catherine
:C'est les liaisons dangereuses : " //Je vous ai paru brusque et hautaine, cela est tout simple. J'ai renoncé au monde... //"
;Christine
:Je l'ai déjà dit ça !
;Catherine
:Eh bien redites-le moi, je n'ai rien entendu et je suis aux premières loges ; ça m'étonnerait qu'ils aient entendu dans la salle.
;Christine
:Dites donc, ça va bien, Madame, vous êtes souffleuse, pas metteur en scène !
;Catherine
:Heureusement pour vous, par ce que je ne vous aurais pas engagée personnellement !
;@@Perdican@@
:C'est fini... Oui ? Chut... J'attends la réplique.
;Catherine
:Excusez-moi. " //Dites-moi, avez-vous eu des maîtresses ?// "
;@@Perdican@@
:^^//{{(S'adressant à la souffleuse.)||did}}//^^ " //Pourquoi cela ?// "
;Catherine
:" //Répondez-moi sans modestie et sans fatuité.// "
;Christine
:" //Répondez-moi...// " Regarde moi quand je joue... Ça m'aide.
;Catherine
:Oui mais lui, ça ne l'aide pas... Il préfère regarder une professionnelle. Hein ?
;Christine
:Vous, taisez-vous, laissez-moi faire mon métier. Parfaitement ! C'est facile de critiquer tout ce que je fais. Essayez, vous, si vous êtes si maligne.
;Catherine
:Alors, ça elle ne va pas me parler sur ce ton-là, non mais je le sais sur le bout du doigt, moi. Attention : 25 ans de métier, ma petite. " //Oui Perdican, c'est moi...// " Ça va te changer de l'autre pomme moi, je te le dis... " //Je viens revivre un quart d'heure de la vie passée...// "
;@@Perdican@@
:Non ! C'est pas possible...
;Catherine
:Ben forcément... J'ai pas le costume... Faut pas s'arrêter à ça... Donne-moi la robe...
,,//{{(Elle essaie d'arracher la robe de Christine
le public siffle : " Hou ! Hou ! ")||scn}}//,,
;Christine
:C'est une folle, baissez le rideau !
;Catherine
:C'est bien ça, jalouse, elle veut briser ma carrière ! J'ai pas la robe mais je le sais le texte moi ! Laissez-moi à mon public !
:,,//{{(Sifflements du public avec le lancement de projectiles)||scn}}//,,.
!!!LA SURPRISE DE L'AMOUR :
!!Pierre et Jacqueline<br>//^^Acte I scène 1^^//
!!!!Pierre Marivaux
;PIERRE
:Tiens, Jacquelaine, t'as une himeur qui me fâche.
:Pargué encore faut-il dire queuque parole d'amiquié aux gens.
;JACQUELINE
:Mais, qu'est-ce qu'il te faut donc :
:Tu me veux pour ta femme,
:eh bian,
:est-ce que je recule à cela ?
;PIERRE
:Bon, qu'est-ce que ça dit !
:Est-ce que toutes les filles n'aimont pas à devenir la femme d'un homme ?
;JACQUELINE
:Tredame !
:C'est donc un oisiau bien rare qu'un homme, pour en être si envieuse ?
;PIERRE
:Hé là, là,
:je parle en discourant,
:j savons bien que l'oisiau n'est pas rare ;
:mais quand une fille est grande, alle a la fantaisie d'en avoir un,
:et il n'y a pas de mal à ça, Jacquelaine,
:car ça est vrai
:et tu n'iras pas là contre.
;JACQUELINE
:Acoute,
:n'ons-je pas d'autres amoureux que toi ?
:Est-ce que Blaise et le gros Colas ne sont pas affolés de moi tous deux,
:est-ce qu'ils ne sont pas des hommes aussi bian que toi.
;PIERRE
:Eh mais,
:je pense qu'oui.
;JACQUELINE
:Eh bian, Butor,
:je te baille la parfarence,
:qu'as-tu à dire à ça ?
;PIERRE
:C'est que tu m'aimes mieux qu'eux tant seulement ;
:mais
:si je ne te prenais pas moi, ça te fâcherait-il ?
;JACQUELINE
:Oh dame, t'an veux trop.
;PIERRE
:Eh morguenne, voilà le //tu autem//,
:je veux de l'amiquié pour la parsonne de moi tout seul :
:quand tout le village vienrait te dire : //Jacqueleine épouse-moi// ;
:je voudrais que tu fis bravement la grimace à tout le village,
:et que tu lui disis : //nennin-da, je veux être la femme de Piarre//,
:et pis c'est tout.
:Pour ce qui est d'en cas de moi, si j'allais être un parfide,
:je voudrais que ça te fâchit rudement,
:et que t'en pleurisse tout ton soûl ;
:et velà margué ce qu'en appelle aimer le monde.
:Tians, moi qui te parle,
:si t'allais me changer, il n'y aurait pu de çarvelle cheux moi,
:c'est de l'amiquié que ça.
:Tatigué que je serai content si tu pouvais itou devenir folle !
:Ah !
:que ça serait touchant !
:Ma pauvre Jacqueleine,
:dis-moi queuque mot qui me fasse comprendre que tu pardrais un petit brin l'esprit.
;JACQUELINE
:Va, va, Piarre,
:je ne dis rian, mais
:je n'en pense pas moins.
;PIERRE
:Eh,
:penses-tu que tu m'aimes par hasard ?
:Dis-moi oui ou non.
;JACQUELINE
:Devine lequel.
;PIERRE
:Regarde-moi entre deux yeux,
:tu ris tout comme si tu disais oui ;
:hé, hé, hé, qu'en dis-tu ?
;JACQUELINE
:Eh,
:je dis franchement que je serai bian empêchée de ne pas t'aimer,
:car t'es bien agriable.
;PIERRE
:Eh, jarni,
:velà dire les mots et les paroles.
;JACQUELINE
:Je t'ai toujours trouvé une bonne philosomie d'homme :
:tu m'as fait l'amour ;
:et
:franchement
:ça m'a fait plaisir ;
:mais l'honneur des filles les empêche de parler après ça,
:ma tante disait toujours qu'un amant c'est comme un homme qui a faim :
:pu il a faim et pu il a envie de manger ;
:pu un homme a de peine après une fille, et pu il l'aime.
;PIERRE
:Parsanguenne,
:il faut que ta tante ait dit vrai ;
:car je meurs de faim, je t'en avertis, Jacqueleine.
;JACQUELINE
:Tant mieux,
:je t'aime de cette himeur-là,
:pourvu qu'alle dure ;
:mais j'ai bin peur que monsieur Lélio, mon maître, ne consente à noute mariage,
:et qu'il ne me boute hors de chez li, quand il saura que je t'aime,
:car il nous a dit qu'il ne voulait point voir d'amourette parmi nous.
;PIERRE
:Et pourquoi donc ça,
:est-ce qu'il y a du mal à aimer son prochain ?
:Et morgué:
:je m'en vas lui gager, moi, que ça se pratique chez les Turcs,
:et si ils sont bien méchants.
;JACQUELINE
:Oh, c'est pis qu'un Turc, à cause d'une dame de Paris qui l'aimait beaucoup,
:et qui li a tourné casaque pour un autre galant plus mal bâti que li :
:noute monsieur a fait du tapage ;
:il li a dit qu'alle devait être honteuse ;
:alle lui a dit qu'alle ne voulait pas l'être.
:Et voilà bian de quoi ! ç'a-t-elle fait,
:et pis des injures :
:vous êtes cun indeigne, et voyez donc cet impertinent, et je me vengerai, et moi, je m'en gausse.
:Tant y a qu'à la pafin alle li a farmé la porte sur le nez :
:li qui est glorieux a pris ça en mal,
:et il est venu ici pour vivre en harmite, en phisolophe,
:car velà comme il dit.
:Et depuis ce temps, quand il entend parler d'amour,
:il semble qu'en l'écorche comme une anguille.
:Son valet Arlequin fait itou le dégoûté :
:quand il voit une fille à droite, ce drôle de corps se baille les airs d'aller à gauche,
:à cause de queuque mijaurée de chambrière qui li a, à ce qu'il dit, vendu du noir.
;PIERRE
:Quiens, véritablement
:c'est une piquié que ça,
:il n'y a pas de police ;
:an punit tous les jours de pauvres voleurs,
:et an laisse aller et venir les parfides.
:Mais
:velà ton maître,
:parle-li.
;JACQUELINE
:Non,
:il a la face triste,
:c'est peut-être qu'il rêve aux femmes...
:Je sis d'avis que j'attende que ça soit passé :
:va, va,
:il y a bonne espérance pisque ta maîtresse est arrivée et qu'alle a dit qu'alle lui en parlerait..
!!! __''//" Et alors. là :<br> qu"est-ce que je fais ? "//''__
<div style="padding-left: 50px";>Savoir le texte n'est que le premier pas.
Après le travail de comédien commence : réussir à le mettre en vie de manière à stimuler en permanence l'intérêt du spectateur à votre personnage.
Pas trop de problème pour les répliques courtes, lancées du tac au tac à un protagoniste.
Mais nous avons du mal à maintenir l'écoute tout au long d'une longue tirade,
nous avons du mal à nous tenir démonstrativement lorsque c'est notre partenaire qui égrène sa longue tirade.</div>
!!!L'approche détaillée du jeu
* raison d'être dramatique du fragment, évolution de la relation avec chaque partenaire, progression à rendre visible
* sentiments propulseurs des paroles dites, ou impact des paroles entendues
* destination des paroles, expression et inflexions de la voix
* ruptures, pauses, changements de pied à marquer
* soulignement du caractère du personnage et des singularités qu'on peut lui prêter ; recherche des mouvements signifiants, involontaires, voulus,
* mise à profit de l'espace et des accessoires
* renforcements possibles par des inventions de jeu hors-texte : manœuvres, alliances, accidents, gags...
L'approche détaillée du jeu peut être réfléchie et préparée sous Jitsi, pour être ensuite validée à Mouffetard quand nous y reviendrons.
Et si certains de ces fragments ne seront pas représentés, le travail passé dessus nous aura fait progresser dans nos méthodes de mise en vie des textes.
!ACTE I
{{La Bonne Mère I,1 - BARBARA et GIACOMINA}}
{{La Bonne Mère I,2 - NICOLETTO et BARBARA.}}
{{La Bonne Mère I,3 - MARGARITA et les mêmes.}}
{{La Bonne Mère I,4 - Nicoletto et Margarita.}}
{{La Bonne Mère I,5 Margarita seule.}}
{{La Bonne Mère I,6 - Barbara et Margarita.}}
{{La Bonne Mère I,7 - Barbara, puis Margarita.}}
{{La Bonne Mère I,8 BARBARA puis AGNESE}}
{{La Bonne Mère I,9 - LODOVICA et DANIELA.}}
{{La Bonne Mère I,10 Nicoletto et les mêmes.}}
!ACTE II
{{La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA}}
{{La Bonne Mère II,2 - Barbara et Agnese.}}
{{La Bonne Mère II,3 - Giacomina et les mêmes.}}
{{La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.}}
{{La Bonne Mère II,5 - Giacomina, qui entre en travaillant à sa broderie, et les mêmes.}}
{{La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.}}
{{La Bonne Mère II,7 - Nicoletto et les mêmes.}}
{{La Bonne Mère II,8 - Barbara, Agnese, Giacomina et Nicoletto.}}
{{La Bonne Mère II,9 - Barbara et Giacomina.}}
{{La Bonne Mère II,10 - Margarita et les mêmes.}}
{{La Bonne Mère II,11 - Lunardo et les mêmes.}}
{{La Bonne Mère II,12 - Barbara et Lunardo.}}
{{La Bonne Mère II,13 - Giacomina et les mêmes.}}
{{La Bonne Mère II,14 - Lunardo et Giacomina.}}
{{La Bonne Mère II,15 - Margarita et les mêmes.}}
{{La Bonne Mère II,16 - Lunardo et Margarita.}}
{{La Bonne Mère II,17 - Barbara et les mêmes.}}
!ACTE III
{{La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.}}
{{La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.}}
{{La Bonne Mère III,3 - Lunardo Lodovica et Daniela}}
{{La Bonne Mère III,4 - Lunardo et Daniela.}}
{{La Bonne Mère III,5 - Lodovica et les mêmes.}}
{{La Bonne Mère III,6 - Lunardo et Lodovica.}}
{{La Bonne Mère III,7 - Chez Barbara. Giacomina et Margarita.}}
{{La Bonne Mère III,8 - Giacomina, puis Margarita, puis Agnese.}}
{{La Bonne Mère III,9 - Giacomina et Agnese.}}
{{La Bonne Mère III,10 - Margarita et les mêmes.}}
{{La Bonne Mère III,11 - Agnese, Giacomina, puis Barbara.}}
{{La Bonne Mère III,12 - Agnese et Barbara.}}
{{La Bonne Mère III,13 - Margarita et les mêmes.}}
{{La Bonne Mère III,14 - Agnese et Margarita.}}
{{La Bonne Mère III,15 - Agnese puis Nicoletto.}}
{{La Bonne Mère III,16 - Barbara, Rocco, Giacomina et les mêmes, puis Margarita}}
{{La Bonne Mère III,17 - Lodovica, Daniela puis Lunardo et les mêmes.}}
La Bonne Mère I,8 BARBARA puis AGNESE
16 546 car | 2 729 mots =>
;BARBARA.
://^^Elle repasse^^//.
;AGNESE.
:Servante, siora Barbara.
;BARBARA.
://^^Etonnement^^// Sior'Agnese, servante.
:Par quel miracle ?
;AGNESE.
://^^Se prennant dans les bras.^^// N'est-ce pas ?
:Je suis venue vous déranger. //,,Discret regard autour d'elle, comme pour savoir qui est présent.,,//
;BARBARA.
:Sacré nom !
:c'est un honneur que vous me faites.
;AGNESE.
:J'avais vraiment envie de vous voir.
;BARBARA.
:Moi aussi, ma foi.
:Mais moi, vous le savez, je ne passe jamais ma porte.
;AGNESE.
:Eh !
:pour nous autres, pauvres veuves, c'est fini.
;BARBARA.
:Oh ! chère sior'Agnese,
://^^Elle fait asseoir Agnese^^//
:il ne faut pas nous mettre dans le même sac, vous et moi.
:Vous n'avez pas d'enfants, et vous ne manquez de rien ;
://^^Gaiement^^//
:tandis que moi, misère,
:je me retrouve là
::avec deux petits à faire vivre,
:et je n'ai pas honte de le dire,
::il me faut trimer et me tarabuster pour les faire vivre un peu dignement,
::tout calculer au plus juste,
::ne jamais me passer une fantaisie,
::ne jamais m'offrir de bon temps, un amusement ;
:je n'ai même pas une minute pour me mettre une fois ou l'autre au balcon.
;AGNESE.
:Et pourtant, dieu merci, je vous retrouve là
:toute belle,
:toute fraîche,
:avec une mine à faire envie.
;BARBARA.
:Je vais vous dire
:je ne me laisse pas ronger par les soucis, moi.
::Puisqu'il faut faire,
::autant faire de bon coeur tant qu'à faire.
:Qu'est-ce que je deviendrais si je devais faire à contrecoeur.
:Je me dis :
::le ciel veut que tu passes par ce chemin,
::que sa volonté soit faite.
::Qu'est-ce qu'on y peut ?
:Quand j'ai fini ce qu'il y a à faire dans la maison,
:* c'est avec mon ouvrage que je m'amuse,
:* avec mes enfants que je ris,
:* avec la servante aussi.
:* Et puis j'ai un chat,
:j'ai un chat,
:et c'est lui mon petit bateleur ;
:si vous voyiez l'amour de bête !
::Où tu es le minou, Mascarin ?
;AGNESE.
:Soyez bénie d'avoir un si bon naturel.
:Ma foi, vous feriez envie.
;BARBARA.
:Oh !
:en moi, ma chère enfant, il n'y a rien qu'on puisse envier.
;AGNESE.
:Et moi, je vous parie qu'il y a des gens nantis de huit ou dix mille ducats de rente qui n'ont pas comme vous le coeur content !
;BARBARA.
:Sûr qu'en ce bas monde, on n'est pas heureux si on ne se contente pas de ce qu'on a.
:Je vous jure que pour moi, je m'en contente.
://^^Court silence. Elle prend les mains d'Agnese. Soupir : ^^//
:Mon souci,
:ce sont ces deux pauvres petits.
:
:* Une fille à marier,
:* et __un garçon__ !
:
://^^Leger suspens, comme si elle jaugeait la jeune Agnese. Elle se décide^^//
:ce n'est pas pour dire,
::mais c'est une perle !
:ça fait longtemps que vous ne l'avez pas vu, mon fils ?
;AGNESE.
:Combien ça fait ?
:Trois ou quatre jours.
;BARBARA.
:N'est-ce pas qu'il a de la figure ?
;AGNESE.
:Oui, ma foi !
://,,avec une fougue surprenante :,,//
:on dirait un petit gentilhomme!
://^^Étincelle de plaisir dans les yeux de Barbara^^//
;BARBARA.
:Et __bon__, vous savez,
:Comme tranportée : mais __bon__ ;
::moi, je vous garantis que des bons garçons comme ça,
::on n'en trouve pas beaucoup !
://,,Agnese a l'air d'acquiescer :,,//
:Eh oui ;
:au jour d'aujourd'hui, allez le trouver un garçon de dix-huit ans
:*qui écoute ce qu'on lui dit,
:*qui rentre à ja maison de bonne heure,
:*qui n'a pas de fréquentations, ?
:*qui ne va nulle part sans demander la permission,
:*qui accepte de ne pas avoir un sou en poche. ?
::Lui, il ne prend jamais un café si ce n'est pas moi qui le paie,
::lui, il ne va jamais au théâtre si ce n'est pas avec moi, une fois par an ;
:::il ne joue pas,
:::il ne connaît même pas les cartes.
:Et vous savez,
:ne croyez pas que ce soit un benêt avec ça.
::Il a une de ces têtes !
::Tout ce que son maître trouvait à me dire, c'était :
:::Il est premier en ci,
:::il est premier en ça.
://,,Elle s'arrête, espérant avoir produit un bon effet : ,,//
:Eh oui !
;AGNESE.
:Qu'est-ce que vous comptez lui faire faire à ce garçon?
;BARBARA.
:Je vais vous dire :
::si j'avais les moyens, je voudrais qu'il soit avocat ;
:::mais il faut de l'argent, il faut du temps,
:::et puis il y en a tellement, tout le monde me le déconseille.
::Pour l'instant, je vois deux choses :
:::- sous-intendant sur un domaine,
:::- ou employé aux écritures chez un marchand.
;AGNESE.
:Il serait capable de s'occuper d'un domaine ?
;BARBARA.
:Sacré nom, en voilà une question ?
::Si vous le voyiez faire des comptes !
::Lui,
::en un tournemain !
::il vous réussit des opérations que combien ne feraient pas en trois heures.
;AGNESE.
:Mais savoir compter ne suffit pas.
;BARBARA.
:Oh ! siora,
:avec lui, si ;
:*pour acheter,
:*pour vendre,
:*pour passer des commandes,
:un vrai prodige !
::
:A la maison :
:qu'est-ce que je deviendrais si je ne l'avais pas !
:*C'est lui qui s'occupe de faire rentrer l'argent,
:*lui qui va sur place,
:*lui qui a J'oeil à tout,
:*qui fait tout.
::
::*Tout, je vous dis,
:::__tout__ !
;AGNESE.
:Ma foi, tant mieux.
:Il trouvera forcément à se caser.
;BARBARA.
://^^rapproche son siège, comme pour entrer en confidence ^^//:
:Dites-voir, sior'Agnese,
::vous en avez un, vous, d'intendant ?
;AGNESE.
:Oui, siora ;
:j'ai celui qu'avait déjà mon pauvre mari.
://^^regard déconfit de Barbara^^//
:Il me l'a confié, et je ne peux pas le renvoyer.
::Sinon, ma foi,
::je le prendrais moi-même, votre garçon, siora Barbara.
;BARBARA.
:Prenez-le comme sous-intendant.
;AGNESE.
:Plût au ciel.
:Seulement, mon intendant a son fils avec lui, voyez-vous ;
://^^Avec douceur :^^// c'est impossible.
;BARBARA.
:Sacré nom,
:c'est bien ma veine.
;AGNESE.
://^^La réconforte affecctueusement :^^// Laissez, on lui trouvera autre chose.
://^^Comme si elle avait une inspiration :^^// Envoyez-le moi, Sior Nicoletto.
:Dites-lui qu'il vienne me trouver.
;BARBARA.
:^^Soulagée :^^ Oui, siora !
:Chez vous, je le laisserai y aller,
:de bon coeur !
;AGNESE.
:C'est dommage qu'un garçon comme lui n'ait pas de bien.
;BARBARA.
:Il est jeune ;
:il aura sa chance.
;AGNESE.
:Quel âge a-t-il ?
;BARBARA.
:Dix-huit ans depuis le douze du mois dernier.
;AGNESE.
::Juste l'âge où je me suis mariée, moi.
;BARBARA.
:Et vous retrouver veuve si jeune !
;AGNESE.
:Oui !
::Qu'est-ce que vous voulez.
::On n'y peut rien,
;BARBARA.
:Vous vous remarierez.
;AGNESE.
://^^Regarde profondément son amie, puis répond avec un léger sourire :^^//
:Qui sait ?
::peut-être que oui.
:Mais c'est tellement difficile de trouver son aise.
;BARBARA.
:Vous, entre ce que vous aviez, voyez-vous, et ce que votre mari vous a laissé,
:vous êtes comme une reine,
:et je ne vous conseille pas, si vous vous remariez, de vouloir donner dans les grandeurs.
::
:Il suffirait que vous trouviez quelqu'un
:
:* qui ait envie de bien faire,
:* qui ne vous croque pas votre bien,
:* et qui vous aime.
::
:Surtout qui vous aime;
:et pouvoir dire:
::
:* c'est moi qui commande, pas ma belle-mère, ni mon beau-père ;
:* mon mari, c'est de moi qu'il tient son bonheur ;
:* et prendre tranquillement votre bon temps avec lui sans chercher la mer à Ravenne.
:
://^^Elle rient :^^//
:Oui, ma foi, si j'étais vous,
:__c'est ça __que je ferais.
;AGNESE.
:Il faudrait que je trouve quelqu'un qui vienne habiter chez moi.
;BARBARA.
:Oh !
:vous en trouverez tant et plus, de ceux-là.
;AGNESE.
:Il faudrait qu'il n'ait ni père ni mère ?
;BARBARA.
:Pourquoi ?
:Moi, voyez-vous,
:s'il arrivait à mon fils une chance pareille,
:je vous le donnerais
::en vous baisant les mains !
:Je l'aime ;
::mais ce n'est pas une raison pour l'empêcher d'aller habiter chez sa femme, tout de même.
:Oh ! non, siora,
:non et non;
:plût à dieu que ça lui arrive.
;AGNESE.
:Et Siora Giacomina ?
:Qu'est-ce qu'elle fait ?
:Elle va bien ?
;BARBARA.
:Oh! oui, siora, elle va bien,
: vous la verrez tout à l'heure.
://^^(A part :)^^// Oh ! la voilà qui me ripe entre les doigts !
;AGNESE.
://^^en se levant.^^//
:On pourrait l'embrasser avant de s'en aller ?
;BARBARA.
://^^Affolée :^^// Vous partez déjà ?
:Vous êtes si pressée ?
;AGNESE.
:Il faut que je parte,
:Ma servante est venue avec moi, et les lits ne sont pas faits,
:la poussière non plus,
:rien n'est fait chez moi.
;BARBARA.
:Dites à votre servante de rentrer, et restez un peu avec moi.
::
:Allez, je vous en prie,
::
:ôtez votre châle.
;AGNESE.
://^^Retenant le châle :^^// Et
:... qui voulez-vous qui me raccompagne ?
;BARBARA.
://^^étincelle réjouie : ^^// __Mon fils__ vous raccompagnera !
::C'est un petit homme, vous savez !
::C'est mon cavalier servant.
;AGNESE.
:Il est là, Sior Nicoletto ?
;BARBARA.
:Il va rentrer.
::Il est allé chez son parrain.
;AGNESE.
:Chez son parrain ?
;BARBARA.
:Oui, siora ;
::chez mon compère Ventura.
;AGNESE.
:Dites-moi, chère siora Barbara,
::excusez ma curiosité.
:Ce parrain
::... a des filles chez lui ?
;BARBARA.
://^^éclate de rire :^^//
:Oh non !
:voyez-vous, mon compère Ventura n'est pas marié :
::il n'a pas de soeurs,
::il n'a personne.
:::
:Oh ! si vous saviez le drôle de bonhomme que c'est !
:__Les femmes !__
::il ne peut vraiment pas les voir ;
:c'est un homme de coeur qui aime faire le bien,
::et Nicoletto n'a pas son pareil pour se faire aimer;
:les câlineries qu'il lui fait !
::Dans ces cas-là, on en mangerait ma foi, on en mangerait ;
::oui, on en mangerait.
;AGNESE. à part.
://^^ à part.^^// Peut-être bien que ce n'est pas vrai, ce qu'on m'a raconté...
;BARBARA.
:Pourquoi vous m'avez demandé s'il y avait des filles chez Sior Ventura ?
;AGNESE.
:Pour rien,
:comme ça ;
:par curiosité.
;BARBARA,
://^^ à part.^^// Nom de nom, y a de l'espoir.
;AGNESE.
:Il va souvent chez d'autres gens, Sior Nicoletto ?
;BARBARA.
://^^Haut-le-corps sincère : ^^ //Oh jamais!
:Il ne va jamais chez les gens !
;AGNESE.
:Vous en êtes sÛre ?
;BARBARA.
:Archisûre.
:Il ne fait pas un pas sans que moi, je le sache.
;AGNESE.
:Regardez-moi ça, quand on dit qu'il y a des mauvaises langues !
;BARBARA.
:Oh ! misère de moi !
:on dit quelque chose sur mon fils ?
;AGNESE.
:On dit qu'il aurait une fréquentation...
:...qu'il irait voir une fille...
;BARBARA
:Où ?
:quand ?
:qui dit ça ?
;AGNESE.
://^^élude :^^// Je n'en sais pas plus.
;BARBARA
://,,Cri du coeur,,//
:Oh ! coeur de mon coeur !
:lui, des filles ?
:lui, des fréquentations ?
::
:Si vous saviez, sior'Agnese,
:si vous saviez ce qu'il peut être innocent !
:Il ne sait rien, vous savez,
:mais rien de rien ;
::l'autre jour, tenez,
::il a dit qu'il voulait se marier avec sa soeur.
:Ce n'est pas de l'innocence, ça ?
;AGNESE.
:Oui, oui, de l'innocence ;
:et
:une belle envie de se marier, aussi !
;BARBARA
:Des mauvais, sior'Agnese,
:des mauvais;
:rien que des inventions pour faire du mal au pauvre monde.
:*On voit que ce garçon a de la figure et de la conduite,
:*on sait que Sior'Agnese a de l'affection pour moi,
:*qu'elle n'en manque pas non plus pour lui,
:*qu'elle est veuve, que lui Est à marier.
:Et vlan,
:*on sème le mal,
:de peur qu'un jour...
::vous comprenez ce que je veux dire ?
;AGNESE.
:Ma foi, vous me faites rire.
;BARBARA.
://^^Lui tendant les bras :^^//
:Je vous en prie, donnez-moi votre châle.
;AGNESE.
:Bon,
:pour vous faire plaisir.
;BARBARA.
:Venez ici ;
:laissez-moi faire.
://^^(En la débarrassant :)^^//
:Regardez-moi le beau brin de femme,
:mais regardez la mine qu'elle a !
::Oh !
:si j'héritais d'une bru pareille, c'est pour le coup que mon fils pourrait dire qu'il n'est pas né sans sa petite chemise.
;AGNESE.
:J'ai quelque chose à dire à ma servante,
:vous permettez ?
;BARBARA.
:Ecoutez, profitez-en pour aller faire une surprise à ma fille.
;AGNESE.
:Où est-elle ?
;BARBARA.
:Dans sa chambre.
;AGNESE.
:Je ne voudrais pas qu'elle pense que j'exagère.
;BARBARA.
:C'est vous qui dites une chose pareille ?
::Vous n'êtes pas chez vous ici ?
::Vous ne savez pas qu'ici tout le monde vous aime ?
:Tout le monde, vous savez !
:Tout le monde,
:oui,
:__tout le monde__,
://^^Fin sourire : ^^//vous comprenez. ce que je veux dire ?
;AGNESE.
:Mais comme vous voilà gaillarde !
;BARBARA.
:Sois bénie, toi !
://^^(Elle l'embrasse.)^^//
;AGNESE.
://,,à part en sortant. ,,//
:La bonne et brave femme !
:et les cajoleries qu'elle me fait !
://^^leger soupir :^^// Qui sait ?
:on ne sait jamais.
://,,Elle sort,,//
;BARBARA.
:Oh Nicolleto, mon mignon !
:Si j'y arrive, tu seras verni, mon garçon ;
::moi, je ne vais pas me faire faute d'essayer,
::et sans scrupules encore.
:*Elle est riche,
:*elle est seule,
:*elle est jeune,
:*elle est belle
:*__et bonne__.
:Mon fils est un garçon qui ne peut que lui plaire.
:Lui aussi, elle lui plaira.
::Suffit que moi, je lui dise,
::alors elle lui plaira !
:Et puis,
::il ne sait rien,
::il n'a jamais parlé aux filles.
://,,Elle sort.,,//
::
:{{Finement ||did}} j'ai bien peur que ça soit vrai, moi, ce qu'on m'a dit.
;NICOLETTO. {{Sursaute||scn}}
:{{Inquiet ||did}}Qu'est-ce qu'on t'a dit ?
;MARGARITA.
:{{Dos tourné, face public, bouche en coeur ||did}} Rien, rien.
;NICOLETTO.
:{{Va à elle ||scn}} Allez,
:{{Lui secouant le bras : ||scn}} qu'est-ce qu'on l'a dit ?
;MARGARITA.
:{{Faisant la fâchée||did}} Eh ! mon petit jeune homme,
:si tu continues comme ça...
;NICOLETTO.
:{{Stressé||did}} Qu'est-ce que tu veux dire ?
;MARGARITA. {{Lui faisant face||scn}}
:Dis voir :
:{{Geste inquisiteur : ||did}} qu'est-ce que tu vas y faire
::__rue de l'Oie__ <$appear type="popup">{{Note LBM1-4}}</$appear> ?
;MARGARITA.
:{{ Gentil reproche ||did}} Oh ! mon garçon,
:{{ → Silence embarrassé de Nicoletto||did}}:
:{{ Elle le cuisine ||did}} chez ces gens-là, ce n'est pas pour rien qu'on y va.
:{{ → Silence encore plus embarrassé de Nicoletto ||did}}:
:{{ Elle s'amuse à lui faire peur ||did}} Cette fille, je la connais.
:{{ → Nicoletto est complètement paralysé||did}}:
:{{Elle prend du champ, et le plaisante en tournant atour de lui ||scn}}
:{{ Elle rigole, rien qu'à y penser ||did}} Et elle, je ne dis pas,
:{{ Au public ||did}} mais sa mère.
:{{Se tournant vers Nicoletto ||did}} Vous parlez d'une mère !
:{{Reprenant sa déambulation ||scn}} :
;AGNESE.
:Servante, siora Barbara.
;BARBARA.
:{{Etonnement ||did}} Sior'Agnese, servante.
:{{Se lève ||scn}} Par quel miracle ?
;AGNESE.
:{{Se prennent dans les bras. ||scn}} N'est-ce pas ?
:Je suis venue vous déranger. {{Discret regard autour d'elle, comme pour savoir qui est présent. ||scn}}
;BARBARA.
:{{Se reculent ||scn}} Sacré nom !
:{{Respect ||did}}c'est un honneur que vous me faites.
;AGNESE.
:{{Très sincère ||did}} : J'avais vraiment envie de vous voir.
;BARBARA.
:Moi aussi, ma foi.
:{{Sourire d'excuse ||did}} : Mais moi, vous le savez, je ne passe jamais ma porte.
;AGNESE.
:Eh !
:{{Sourire d'empathie ||did}} : pour nous autres, pauvres veuves, c'est fini.
{{lbm 108-026}}
;AGNESE.
:{{Un compliment sorti du coeur ||did}}: Et pourtant, dieu merci, je vous retrouve là
::toute belle,
::toute fraîche,
:{{Vrai témoignage d'admiration ||did}}: avec une mine à faire envie.
;BARBARA.
:Oh ! chère sior'Agnese, {{Elle fait asseoir Agnese ||scn}} il ne faut pas nous mettre dans le même sac, vous et moi.
:{{Sourire bienveillant ||did}}: Vous n'avez pas d'enfants, et vous ne manquez de rien ;
:{{Soupir ||did}}: tandis que moi, misère,
:je me retrouve là
:avec deux petits à faire vivre, {{geste pour désigner son petit appartement ||scn}}:
:{{Yeux dans les yeux avec un petit sourire ||did}}: et je n'ai pas honte de le dire,
:il me faut trimer et me tarabuster pour les faire vivre un peu dignement,
::{{concentrée sur e qu'elle vit ||did}}: tout calculer au plus juste,
::ne jamais me passer une fantaisie,
::ne jamais m'offrir de bon temps, un amusement ;
:{{Sourire désolé à Agnese ||did}}: je n'ai même pas une minute pour me mettre une fois ou l'autre au balcon.
:Je vais vous dire {{Elle s'assied en face d'Agnese ||scn}} : je ne me laisse pas ronger par les soucis, moi.
:Puisqu'il faut faire,
:autant faire de bon coeur tant qu'à faire.
:{{Elle secoue la tête ||scn}}Qu'est-ce que je deviendrais si je devais faire à contrecoeur.
:Je me dis {{elle lève les yeux vers le ciel ||scn}}:
::le ciel veut que tu passes par ce chemin,
::que sa volonté soit faite.
:Qu'est-ce qu'on y peut ?
:{{Elle énumère avec le sourire de la femme heureuse de faire bien ||did}}
::Quand j'ai fini ce qu'il y a à faire dans la maison,
::c'est avec mon ouvrage que je m'amuse,
::avec mes enfants que je ris,
::avec la servante aussi.
:Et puis j'ai un chat,
::j'ai un chat, et c'est lui mon petit bateleur ;
::si vous voyiez l'amour de bête !
:Où tu es le minou, Mascarin ?
;AGNESE.
:{{Pour s'informer ||did}} : Il serait capable de s'occuper d'un domaine ?
;BARBARA.
:Sacré nom, en voilà une question ?
:{{Barbara sent qu'il lui faut remettre un coup de gomme ||did}} : Si vous le voyiez faire des comptes !
:Lui,
:en un tournemain !
:il vous réussit des opérations que combien ne feraient pas en trois heures.
;AGNESE.
:{{Sourire professionnel, très //matter of fact// ||did}} : Mais savoir compter ne suffit pas.
;BARBARA.
:{{Comme blessée ||did}} : Oh ! siora,
:{{avec fougue ||did}} : avec lui, si ;
::pour acheter,
::pour vendre,
::pour passer des commandes,
:un vrai prodige !
:{{Elle sent qu'il lui faut encore bétonner pour ébranler Agnese ||did}} :
:A la maison :
:qu'est-ce que je deviendrais si je ne l'avais pas !
::C'est __lui__ qui s'occupe de faire rentrer l'argent,
::__lui__ qui va sur place,
::__lui__ qui a J'oeil à tout,
::qui fait __tout__.
:{{Agnese est souriante, mais n'a pas l'air de répondre à l'enthousiasme de Barbara ||did}} :
:__Tout__, je vous dis,
:{{Grand sourire, effort désespéré pour enfin convaincre ||did}} : __tout__ !
;AGNESE.
:{{Très gentiment ||did}} : Ma foi, tant mieux.
:{{Sourire rassurant ||did}} : Il trouvera forcément à se caser.
;BARBARA.
:{{Cherche un moyen pour repartir à l'assaut. Elle rapproche son siège, comme pour entrer en conciliabule ||scn}} :
:Dites-voir, sior'Agnese,
:{{Pleine d'espoir ||did}} : vous en avez un, vous, d'intendant ?
;AGNESE.
:Oui, siora ;
:j'ai celui qu'avait déjà mon pauvre mari.
:{{→ regard déconfit de Barbara ||did}}
:{{Gentiment ||did}} : Il me l'a confié, et je ne peux pas le renvoyer.
:{{Sourire rassurant ||did}} : Sinon, ma foi, je le prendrais moi-même, votre garçon, siora Barbara.
;BARBARA.
:{{Dernière chance, presqu'une supplique ||did}} : Prenez-le comme sous-intendant.
;AGNESE.
:{{Secouant la tête, désolée ||did}} : Plût au ciel.
:{{Toujours très gentiment ||did}} : Seulement, mon intendant a son fils avec lui, voyez-vous ;
:{{Avec douceur ||did}} : c'est impossible.
;BARBARA.{{craque ||did}} :
:Sacré nom,
:{{Terriblement déçue ||did}} : c'est bien ma veine.
;AGNESE.
:{{Elle a vu le désarroi de son amie, et la réconforte affecctueusement ||did}} : Laissez, on lui trouvera autre chose.
:{{Comme si elle avaitune soudine inspiration ||did}} : Envoyez-le moi, Sior Nicoletto.
:{{Elle lui souffle ||did}} : Dites-lui qu'il vienne me trouver.
;BARBARA.
:{{Visiblement soulagée ||did}} : Oui, siora ;
:{{Toute réjouie ||did}} : chez vous, je le laisserai y aller de bon coeur !
;LODOVICA.
:{{Finesse inquisitrice ||did}}: Depuis que Sior Nicoletto vient ici, Sior Gasparo n'est plus le même, ma fille.
;DANIELA.
:Qu'est-ce que ça me fait ?
:{{Sèchement ||did}}: C'est lui qui l'a poussé à venir.
:Il n'avait qu'à ne pas me l'amener.
;LODOVICA.
:{{l'admonestant ||did}}: Mais quel besoin tu avais, toi, de lui faire tant de cajoleries ?
;DANIELA.
:{{Vivement ||did}}: Voyez-moi ça ;
:ce n'est pas vous qui m'avez dit de lui en faire ?
;LODOVICA.
:{{Vivement ||did}}: Si madame,
:{{Petit rire ||did}}: mais pas tant.
;DANIELA.
:{{Haussant les épaules ||scn}}: Ça ne se mesure pas à l'aune.
;LODOVICA.
:{{Pincée ||did}}: Sior Gasparo venait pour le bon motif, en attendant.
;DANIELA.
:{{Tac au tac ||did}}: Et Sior Nicoletto,
:il n'est pas à marier ?
;LODOVICA.
:Si, ma fille,
:{{Elle joint le geste à la parole ||scn}}: mais il a la bourse complètement à plat, je le crains.
;DANIELA.
:Moi,
:{{elle imagine son Nicoletto ||did}}
: je vois qu'il est bien élevé,
:bien habillé ;
:{{Elle en sourit ||did}}:
:pourquoi il aurait la bourse plate ?
;LODOVICA.
:{{Vivement ||did}}: Est-ce qu'il a jamais un sou en poche ?
:{{Se plantant devant sa fille, et la prenant à témoin ||scn}}:
:Depuis qu'il vient ici,
::est-ce qu'il m'a jamais payé ''un'' café ?
::Apporté ''une'' gâterie ?
;DANIELA.
:{{elle imagine son Nicoletto ||did}}:Sûrement qu'il n'ose pas,
:le pauvre.
;LODOVICA.
:{{Explosant ||did}}: Voyez moi ça !
:{{La prenant encore à témoin ||scn}}:Je ne lui ai pas dit cent fois, moi :
::« //Je boirais bien un café// » ?
:Et lui, il a ouvert une seule fois la bouche pour dire :
::« //Faites donc// » ?
;DANIELA. {{grimace se raidit ||did}}:
:{{Secouant la tête ||did}}: Moi, voyez-vous, je n'aime pas ça.
:{{→ Stupeur de Lodovica ||did}}.
:{{Elle plante le clou ||did}}: Que vous quémandiez comme ça, je ne supporte pas.
;LODOVICA.
:{{Stupéfaite ||did}}: Moi non plus, je n'aime pas quémander.
:{{Bougonne, secoue la tête et revient àla charge ||scn}}:
:Mais pourquoi __personne__ ne fait rien sans qu'on demande ?
:{{Comme si ça devait être évident pour tout le monde ||did}}: Sans mon café, moi, je ne tiens pas ;
:{{→ Daniela rit sous cape ||did}}:
:{{Lodovica plante son clou ||did}}: et y a des fois où je n'aime pas le payer de ma poche.
;DANIELA.
:{{Tout en réjustant son œillet ||scn}}: Un sacré vice que vous avez, de le vouloir tous les matins votre café.
;LODOVICA.
:On frappe.
;DANIELA.
:{{Indifférence affichée ||did}}: Et après ?
;LODOVICA.
:{{Insistante ||did}}: Va voir qui c'est.
;DANIELA.
:{{Butée ||did}}: Moi, non,
:{{air de défi ||did}}: voyez-vous.
;LODOVICA.
:{{Doucement ||did}}: Pourquoi tu ne veux pas y aller ?
;DANIELA.
:{{Butée ||did}}: Parce que,
:{{Fermement ||did}}: s'il y a quelqu'un, moi, je ne veux pas ouvrir,
:et je ne veux pas {{Simulacre de révérence ||scn}}: être __malgracieuse__.
;LODOVICA.
:{{Elle cède en rigolant ||did}}: Sale fille ! //`(Elle se dirige vers la porte.)`//
;DANIELA.
:{{Sourire narquois ||did}}: Puisque c'est vous qui le dites.
;LODOVICA.
:{{Elle assène ||did}}: J'y vais, __moi__,
:j'y vais,
:voir qui c'est.
;DANIELA.
:{{Jouant la plus totale indifféernce ||did}}: C'est ça, allez y.
;LODOVICA.
:{{En allant ouvrir, à la cantonade ||scn}}: Si au moins c'en était un qui me paie un café. //`Elle sort.`//
;DANIELA. {{venant grommeler en avant-scène ||did}}:
:C'est ça, c'est ça,
:qu'elle dise donc tout ce qu'elle veut, elle a bien raison.
:{{Profonde inspiration ||scn}}:
:Mais elle a de la chance que je ne sois pas ce qu'elle dit, sinon...
:{{Soupir ||scn}}:
:Vaut mieux que je me taise.
:{{Elle secoue la tête ||scn}}:
:Si j'en dis du mal, je m'émaille le nez moi-même
:et [[c'est sur ma bouche que le sang coule]] .
;LODOVICA, //`en rentrant.`//
:{{Faisant la joyeuse ||did}}: Il est là,
:{{sourire appuyé à sa fille ||did}}: madame sera contente.
;DANIELA.
:{{Étonnée ||did}}: Qui c'est ?
;LODOVICA.
:{{Chantonnant gaiement ||did}}: Sior Nicoleto !
;DANIELA.
:{{inquiète ||did}}: Vous lui avez ouvert ?
;LODOVICA.
:{{Très gracieusement ||did}}: Oui madame.
;DANIELA.
:{{Sèchement ||did}}: Qui vous a dit de lui ouvrir ?
;LODOVICA.
:Moi.
:{{Simulacre de révérence ||scn}}: pour ne pas être //malgracieuse// //`(en singeant Daniela)`//.
;DANIELA.
:{{Contrefaisant sa mère ||did}}: Et moi, voyez-vous,
:{{Simulacre de révérence ||scn}} je suis capable d'aller m'énfermer dans ma chambre.
!!ACTE II
# [[La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
# [[La Bonne Mère II,2 - Barbara et Agnese.]]
# [[La Bonne Mère II,3 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
# [[La Bonne Mère II,5 - Giacomina, qui entre en travaillant à sa broderie, et les mêmes.]]
# [[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
# [[La Bonne Mère II,7 - Nicoletto et les mêmes.]]
# [[La Bonne Mère II,8 - Barbara, Agnese, Giacomina et Nicoletto.]]
# [[La Bonne Mère II,9 - Barbara et Giacomina.]]
# [[La Bonne Mère II,10 - Margarita et les mêmes.]]
# [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
# [[La Bonne Mère II,12 - Barbara et Lunardo.]]
# [[La Bonne Mère II,13 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
# [[La Bonne Mère II,15 - Margarita et les mêmes.]]
# [[La Bonne Mère II,16 - Lunardo et Margarita.]]
# [[La Bonne Mère II,17 - Barbara et les mêmes.]]
!!ACTE III
# [[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
# [[La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.]]
# [[La Bonne Mère III,3 - Lunardo Lodovica et Daniela]]
# [[La Bonne Mère III,4 - Lunardo et Daniela.]]
# [[La Bonne Mère III,5 - Lodovica et les mêmes.]]
# [[La Bonne Mère III,6 - Lunardo et Lodovica.]]
# [[La Bonne Mère III,7 - Chez Barbara. Giacomina et Margarita.]]
# [[La Bonne Mère III,8 - Giacomina, puis Margarita, puis Agnese.]]
# [[La Bonne Mère III,9 - Giacomina et Agnese.]]
# [[La Bonne Mère III,10 - Margarita et les mêmes.]]
# [[La Bonne Mère III,11 - Agnese, Giacomina, puis Barbara.]]
# [[La Bonne Mère III,12 - Agnese et Barbara.]]
# [[La Bonne Mère III,13 - Margarita et les mêmes.]]
# [[La Bonne Mère III,14 - Agnese et Margarita.]]
# [[La Bonne Mère III,15 - Agnese puis Nicoletto.]]
# [[La Bonne Mère III,16 - Barbara, Rocco, Giacomina et les mêmes, puis Margarita]]
# [[La Bonne Mère III,17 - Lodovica, Daniela puis Lunardo et les mêmes.]]
!!ACTE I
# [[La Bonne Mère I,1 - BARBARA et GIACOMINA]]
# [[La Bonne Mère I,2 - NICOLETTO et BARBARA.]]
# [[La Bonne Mère I,3 - MARGARITA et les mêmes.]]
# [[La Bonne Mère I,4 - Nicoletto et Margarita.]]
# [[La Bonne Mère I,5 Margarita seule.]]
# [[La Bonne Mère I,6 - Barbara et Margarita.]]
# [[La Bonne Mère I,7 - Barbara, puis Margarita.]]
# [[La Bonne Mère I,8 BARBARA puis AGNESE]]
# [[La Bonne Mère I,9 - LODOVICA et DANIELA.]]
# [[La Bonne Mère I,10 Nicoletto et les mêmes.]]
:Elle en avait trois autres, des filles,
:et elle s'en est vite débarrassée, mine de rien.
:{{Elle s'arrête et regarde gentiment Nicoletto ||scn}}
:Je ne voudrais pas qu'elle te colle la quatrième, à toi.
;NICOLETTO.
:{{ Essayant de faire le måle sûr de lui ||did}} Oh ! à moi,
:pas de danger
;MARGARITA, //`ironique.`//
:Oh ! non,
:{{ Moqueuse ||did}} tu es trop malin.
;NICOLETTO.
:{{ Vexé ||did}} {{$:/lbm/piquenidouille}}
;MARGARITA.
:{{ Elle lui fait la leçon ||did}} Combien se sont fait attraper, mon garçon,
:qui auraient pu t'en remontrer, à toi,
:et à dix autres de ton espèce.
;NICOLETTO.
:{{ Avec dédain ||did}} Comment je pourrais être attrapé ?
;MARGARITA.
:{{ Elle anonne pour le narguer ||did}} En te retrouvant marié avec.
;NICOLETTO, //`stupéfait`//.
:{{ Il secoue la tête ||did}} Alors ça !
;MARGARITA.
:{{ Elle insinue ||did}} On en a vu d'autres.
;NICOLETTO.
:Je n'en voudrais pas pour...
;MARGARITA.
:{{ Elle l'interrompt, goguenarde ||did}} Tout l'or ...
:... de sa dot ?
;NICOLETTO.
:{{ Renfrogné, il riposte sans la regarder ||did}} Elle n'en a pas, de dot.
;MARGARITA.
:{{Se moquant ||did}}: Tu crois donc me l'apprendre ?
;NICOLETTO.
:{{ Pour lui, face public ||did}} Et elle n'est pas si belle que ça.
;MARGARITA.
:{{Sur le ton «//Comment oses-tu dire ça !//» ||did}} Oh !
:on ne peut tout de même pas dire qu'elle est moche.
;NICOLETTO.
:{{Embarrassé ||did}} Non, je ne dis pas qu'elle est moche.
;MARGARITA.
:{{Guettant la réaction de Nicoletto ||did}}: Elle est bien faite.
;NICOLETTO.
:{{Spontanément||did}} Oh ! oui,
:{{Il s'illumine ||did}} elle est drôlement bien faite.
;MARGARITA.
:{{même jeu ||did}} Et elle parle bien.
;NICOLETTO.
:{{idem ||did}} Sacré nom,
:quand elle parle, j'en reste ébaubi.
;MARGARITA.
:{{même jeu ||did}} Elle n'est pas si mal.
;NICOLETTO.
:Oui,
:{{Comme s'il pesait le pour et le contre ||did}}on dira ce qu'on voudra, mais c'est une fille pas mal.
;MARGARITA.
:{{Elle éclate de rire ||did}} Eh hé, compère,
:{{Triomphante ||did}} je t'ai fait cracher le morceau, moi !
;NICOLETTO.
:{{Ahuri ||did}} Quoi ?
:qu'est-ce que tu m'as fait cracher ?
:{{Elle se moque, il enrage :||did}}
:quoi ?
;MARGARITA//`, ironique`//.
:{{Se retenant de pouffer ||did}}Oh ! rien.
;NICOLETTO.
:{{Essayant de sourire ||did}} Tu me mets dans une rage !
;MARGARITA.
:{{Souriante affectueuse ||did}} Pas la peine de rougir.
;NICOLETTO.
:{{Se maîtrisant ||did}} Je rougis, bien sûr je rougis.
:Tu me mets en rage.
:Tu voudrais que je ne rougisse pas ?
;MARGARITA.
:{{Malicieusement ||did}} Pourquoi tu y vas chez cette fille?
;NICOLETTO.
:{{Un peu brusque ||did}} Pour faire plaisir à quelqu'un, j'y vais.
;MARGARITA.
:{{Malicieusement ||did}} Pour faire plaisir à qui ?
;NICOLETTO.
:Voilà.
:{{Il se rapproche d'elle pour se confier.||scn}}
:Figure-toi que Sior Gasparo Latughetta...
:Tu le connais Sior Gasparo Latughetta ?
;MARGARITA.
:Oui, je le connais.
;NICOLETTO.
:Alors, voilà.
:{{Il réfléchit aux mots qu'il va dire.||did}}
:Sior Gasparo sort souvent,
:il connaît du monde; c'est lui qui m'a poussé à y aller.
:{{Faux-jeton ||did}} Parce que moi, penses-tu. Jamais de la vie.
;MARGARITA.
:{{Elle tisonne la jalousie de Nicoletto ||did}} Sior Gasparo est un jeune homme qui a les moyens,
:et s'il veut,
:{{doucement, en observant l'expression de Nicoletto ||did}}: il peut se marier avec.
;NICOLETTO,
:Oui, hein ?
:{{Il réalise → voix sourde ||did}}: Il peut se marier avec.
;MARGARITA.
:{{Le tisonnant encore plus ||did}}: Sûr.
:Il a du bien.
:Il a un commerce.
;NICOLETTO//`, mortifié`//.
:{{Vaincu ||did}}: Et moi, je suis jeune,
:je n'ai pas d'emploi ;
:moi,
:{{Tristement ||did}}: je ne peux pas me marier avec.
;MARGARITA.
:Mais ces gens-là, mon garçon, ça s'accroche à tout ce que ça trouve.
;NICOLETTO.
:Entre nous,
:{{Inquiet ||did}} tu crois que Sior Gasparo se marierait avec elle ?
;MARGARITA.
:{{Posément ||did}}: Tu dois le savoir mieux que moi.
;NICOLETTO, //`agité`//. {{Coup de talon sur le sol.||scn}}
:Moi, je ne peux pas croire qu'il se marierait avec elle.
;MARGARITA.
:{{Satisfaite ||did}}: Non, hein ?
;NICOLETTO.
:Moi, je crois que non.
;MARGARITA.
:{{Malicieusement ||did}}: ça t'ennuierait qu'il se marie avec elle ?
;NICOLETTO.
:{{Il s'agace ||did}}: Sapristi,
:tu es bien finaude, ma petite dame.
:Mais moi non plus je ne suis pas né d'hier.
:{{Doigt pointé ||scn}}: J'ai compris où tu veux en venir.
:{{Il se campe, en homme résolu...||scn}}: Mais je ne marche pas,
:je ne marche pas, parce que je ne pense pas à ça,
::{{... mais se dégonfle progressivement||did}}
::parce qu'elle n'est pas pour moi,
::parce que je vais là-bas... comme ça,
::par politesse,
::pour faire plaisir.
:{{Niant l'évidence ||did}}: De moi-même... penses-tu...
:{{Il tend le bras comme s'il prètait serment||scn}} : jamais de la vie.
;MARGARITA//`, ironique.`//
:{{Elle l'imite ||scn}} : Jamais venu à l'idée.
;NICOLETTO.
:Ho !
:{{Fermement ||did}}: tu me le donnes ce ducat ?
;MARGARITA.
:{{Le défiant ||did}} Pourquoi vous ne Je demandez pas à votre mère ?
;NICOLETTO.
:Parce que,
:{{Il s'approche||scn}}
:{{Tout doux ||did}} si je lui demande, elle ne me le donnera pas.
;MARGARITA.
:{{S'écarte, en haussant les épaules ||scn}} Vous n'avez qu'à lui dire pour quoi c'est.
;NICOLETTO.
:{{Souriant plaintivement ||did}} Si je lui dis, elle ne voudra pas.
;MARGARITA.
:{{Elle lui fait face. Vivement : ||scn}} Qu'est-ce que vous voulez donc en faire ?
;NICOLETTO.
:{{Il lui fait face. Posément : ||scn}} Je veux m'acheter __une paire d'escarpins__.
;MARGARITA.
:{{jouant l'offusquée ||did}} Vous n'avez pas vos bons souliers ?
;NICOLETTO.
:Non, madame ;
:{{Il martèle : ||did}} je veux des escarpins.
;MARGARITA.
:{{Lui fait la leçon, moqueuse :||did}}
::Les escarpins,
::la chemise propre,
::le beau manteau :
{{LBM 104-067}}
;NICOLETTO.
:{{Complètement désarçonné ||did}} Moi,
:{{Il s'étrangle ||did}} Rue de l'Oie ?
;MARGARITA.
:{{S'amuse de le voir si troublé. puis ||did}} :
:{{toute caressante ||did}} Pauvre petit !
:Regardez, {{Moqueuse ||did}}: il est tout rouge.
;BARBARA.
:{{Ne se laissant pas avoir, aimable mais ferme ||did}} : Dites à votre servante de rentrer, et restez un peu avec moi.
:{{Elle insiste ||did}} : Allez, je vous en prie,
:{{Elle commence déjà à mettre les mains sur le châle d'Agnese ||scn}} : ôtez votre châle.
;AGNESE.
:{{Retenant le châle ||scn}} : Et
:... qui voulez-vous qui me raccompagne ?
;BARBARA.
:{{Triomphante ||did}} : __Mon fils__ vous raccompagnera !
:{{En femme aguichée ||did}} :
:C'est un petit homme, vous savez !
:{{Très fièrement ||did}} : C'est mon cavalier servant.
;AGNESE.
:{{Ne dit pas non, mais il faut s'assurer des intentions de Nicoletto, qui ne s'est pas encore montré ||did}} : Il est là, Sior Nicoletto ?
;BARBARA.
:Il va rentrer.
:{{Elle explique ||did}} : Il est allé chez son parrain.
;AGNESE.
:Chez son parrain ?
;BARBARA.
:Oui, siora ;
:chez mon [[compère]] Ventura.
;AGNESE.
:{{Fronçant le sourcil ||did}} : Dites-moi, chère siora Barbara, excusez ma curiosité.
:{{Prudemment ||did}} : Ce parrain
:... a des filles chez lui ?
;BARBARA.
:Oh non !
:voyez-vous, mon compère Ventura n'est pas marié :
::il n'a pas de soeurs,
::il n'a personne.
:Oh ! si vous saviez le drôle de bonhomme que c'est !
::Les femmes, il ne peut vraiment pas les voir ;
;BARBARA.
:{{Ne se laissant pas avoir, aimable mais ferme ||did}} : Dites à votre servante de rentrer, et restez un peu avec moi.
:{{Elle insiste ||did}} : Allez, je vous en prie,
:{{Elle commence déjà à mettre les mains sur le châle d'Agnese ||scn}} : ôtez votre châle.
;AGNESE.
:{{Retenant le châle ||scn}} : Et
:... qui voulez-vous qui me raccompagne ? //{{Elle espère la réponse mais ne veut pas la demander directement||did}}//
;BARBARA.
:{{Perçoit l'attente de Agnese (petite étincelle réjouie), et d'un ton affectueux ||did}} : __Mon fils__ vous raccompagnera !
:{{Clin d'oeil aguicheur ||scn}} :
:C'est un petit homme, vous savez !
:{{Se redresse fièrement, faisant comme si elle était en train de se promener en donnant le bras à Nicoletto||scn}} : C'est mon cavalier servant.
;AGNESE.
:{{Secrètement satisfaite, s'inquiète quand même des intentions de Nicoletto, qui ne s'est toujours pas montré ||did}} : Il est là, Sior Nicoletto ?
;BARBARA.
:{{Persuadée que son fils va revenir d'un instant à l'autre, elle rassure Agnese||did!}} : Il va rentrer.
:{{Elle explique ||did}} : Il est allé chez son parrain.
;AGNESE.
:{{N'est pas certaine de qui il s'agit||did}} : Chez son parrain ?
;BARBARA.
:Oui, siora ;
:{{air interrogatif d'Agnese||scn}}
:chez mon [[compère]] Ventura.
;AGNESE.
:{{Revisualisant le côté sulfureux du personnage, elle feint une banale curiosité ||did}} : Dites-moi, chère siora Barbara, excusez ma curiosité.
:{{Prudemment ||did}} : Ce parrain
:{{suspicieuse||did}} : ... a des filles chez lui ?
;BARBARA.
:{{Aveugle comme toujours, et persuadée du contraire elle éclate de rire||did}} : Oh non !
:voyez-vous, mon compère Ventura n'est pas marié :
::il n'a pas de soeurs,
::il n'a personne.
:{{Elle reprend son souffle||did}} : .
:Oh ! si vous saviez le drôle de bonhomme que c'est !
::Les femmes !
:::{{Elle rigole||scn}} : .il ne peut vraiment pas les voir ;
:c'est un homme de coeur qui aime faire le bien, et Nicoletto n'a pas son pareil pour se faire aimer;
:les câlineries qu'il lui fait !
://`(Dans un grand élan de tendresse :)`//
:Dans ces cas-là, on en mangerait ma foi, on en mangerait ;
:oui, on en mangerait.
;AGNESE, //`à part`//.
:{{N'ayant pas la réponse à sa suspicion, elle fait mine de parler pour elle-même, mais de manière a être entendue ||did}} : Peut-être bien que ce n'est pas vrai, ce qu'on m'a raconté...
;BARBARA.
:{{Petit sursaut inquiet, elle ne comprend pas||scn}}
:Pourquoi vous m'avez demandé s'il y avait des filles chez Sior Ventura ?
;AGNESE.
:{{Constatant qu'elle ne tirera rien de la mère et qu'il faudra enquêter ailleurs, elle élude ||did}} : Pour rien,
:comme ça ;
:par curiosité.
;BARBARA,
://`(à part, touce heureuse de sentit Agnese s'accrocher à Nicoletto.)`// Nom de nom, y a de l'espoir.
;AGNESE.
:{{Ne pouvant s'empêcher de revenir à sa suspicion qui la tracasse, elle brusque||did}} : : Il va souvent chez d'autres gens, Sior Nicoletto ?
;BARBARA.
:{{Haut-le-corps sincère||scn}} : Oh jamais!
:{{Grande conviction||did}} : Il ne va jamais chez les gens !
;AGNESE.
:{{défiante ||did}} : Vous en êtes sÛre ?
;BARBARA.
:Archisûre.
:{{Un brin décontenancée, elle se reprend et confirme :||did}}
:Il ne fait pas un pas sans que moi, je le sache.
;AGNESE.
:{{Elle lâche le morceau, sous couvert de réflexion plaisante ||did}} : Regardez-moi ça, quand on dit qu'il y a des mauvaises langues !
;BARBARA {{s'affole ||did}} :
:Oh ! misère de moi !
:{{Rageuse :||did}}
:on dit quelque chose sur mon fils ?
;AGNESE.
:{{Très calmement, comme si elle était neutre||did}} : On dit qu'il aurait une fréquentation...
:{{→ Stupeur de Barbara||scn}} :
:...qu'il irait voir une fille...
;BARBARA, //`avec anxiété`//.
:{{S'agitant comme une folle : ||scn}}
:Où ?
:quand ?
:qui dit ça ?
;AGNESE.
:{{Inutile de bousculer davantage la brave Barbara, il faudra enquêter ailleurs, elle élude||did}} : Je n'en sais pas plus.
;BARBARA {{En pleine dénégation elle va et vient sur scène||scn}} : .
:Oh ! coeur de mon coeur !
::lui, des filles ?
::lui, des fréquentations ?
::{{Les yeux injecté de larmes d'indignation elle se plante en face d'Agnese : ||scn}}
::Si vous saviez, sior'Agnese,
::{{Secouant les mains d'Agnese, comme une désespérée||scn}} :
::si vous saviez ce qu'il peut être innocent !
;AGNESE.
:Combien on vous doit ?
;ROCCO
://`en pliant le tissu.`// Faites le compte vous même.
:Au prix qui vous convient : quatre lires et demie.
;AGNESE.
:Quatre et quatre huit et quatre douze.
:Douze lires.
;ROCCO
:Quatre lires et demie; plus la demi-coudée.
;BARBARA.
:Ce qui fait en tout quatre et quatre huit
:et deux dix
:et deux douze
:et deux ...
:quatorze lires et cinq sous.
;ROCCO
:Non, voyez-vous, [[quinze lires et cinq sous]],
:si vous voulez savoir,
;GLACOMINA,
:Mais non, sior.
:Quatre lires et demie et quatre lires et demie égalent huit et un neuf,
:plus quatre lires et demie égalent neuf et un dix et un onze et demi et deux combien ça fait ?
;AGNESE.
:Non, c'est moi qui compte.
:S'il y en avait quatre coudées, ça ferait seize lires
:et une dix-sept et une dix-huit.
:J'ôte une demi-coudée, c'est à dire deux lires et cinq sous ;
:deux lires et cinq sous ôtés de dix-huit,
:restent quinze, non ?
;BARBARA.
:Non, siora, vous êtes au dessus.
;GLACOMINA.
:Mais non, en dessous.
;BARBARA.
:Taisez-vous, vous, madame la savante.
;ROCCO
:Si vous voulez me donner exactement ce q ui me revient,
:ça fait quinze lires et quinze sous.
;LUNARDO.
:Assieds-toi aussi, toi, à côté de moi.
;MARGARITA.
:Oui, vous voulez bien ? Voilà.
://`Elle s'assoit.`//
;LUNARDO.
:Tu es à marier ?
;MARGARITA.
:Oui, sior.
;LUNARDO.
:Pourquoi tu ne te maries pas ?
;MARGARITA.
:Parce que je suis pauvre, et personne ne me veut.
;LUNARDO.
:Combien se marient pourtant, et sans dot.
;MARGARITA.
:Si j'étais belle !
;LUNARDO.
:Tais-toi donc,
::avec tes yeux qui brûlent.
;MARGARITA.
:Vous dites ça pour de bon ?
;LUNARDO.
:Si tu savais ce que tu me plais !
;MARGARITA.
:Même avec votre douleur ?
;LUNARDO.
:Ecoute,
:il te plaît ce mouchoir ?
;MARGARITA.
:Il est beau,
:il est beau,
:vraiment.
;LUNARDO.
:Si tu le veut il est à toi.
;MARGARITA.
:Merci, vous me faites bien plaisir.
://`(Elle prend le mouchoir.)`//
!!!Le Bourgeois Gentilhomme :
!!la leçon d’orthographe<br>//(acte II, scène 4)//
!!!!Molière
;MAÎTRE DE PHILOSOPHIE, //en raccommodant son collet//
:Venons à notre leçon.
;MONSIEUR JOURDAIN
:Ah ! Monsieur,
:je suis fâché des coups qu’ils vous ont donnés.
;MAÎTRE DE PHILOSOPHIE
:Cela n’est rien.
:Un philosophe sait recevoir comme il faut les choses,
:et je vais composer contre eux une satire du style de Juvénal,
:qui les déchirera de la belle façon.
:Laissons cela.
:Que voulez-vous apprendre ?
;MONSIEUR JOURDAIN
:Tout ce que je pourrai,
:car j’ai toutes les envies du monde d’être savant,
:et j’enrage que mon père et ma mère ne m’aient pas fait bien étudier dans toutes les sciences, quand j’étais jeune.
;MAÎTRE DE PHILOSOPHIE
:Ce sentiment est raisonnable, //Nam sine doctrina vita est quasi mortis imago//.
:Vous entendez cela,
:et vous savez le latin sans doute.
;MONSIEUR JOURDAIN
:Oui,
:mais faites comme si je ne le savais pas.
:Expliquez-moi ce que cela veut dire.
;MAÎTRE DE PHILOSOPHIE
:Cela veut dire que sans la science,
:la vie est presque une image de la mort.
;MONSIEUR JOURDAIN
:Ce latin-là a raison.
;MAÎTRE DE PHILOSOPHIE
:N’avez-vous point quelques principes,
:quelques commencements des sciences ?
;MONSIEUR JOURDAIN
:Oh oui,
:je sais lire et écrire.
;MAÎTRE DE PHILOSOPHIE
:Par où vous plaît-il que nous commencions ?
:Voulez-vous que je vous apprenne la logique ?
;MONSIEUR JOURDAIN
:Qu’est-ce que c’est que cette logique ?
;MAÎTRE DE PHILOSOPHIE
:C’est elle qui enseigne les trois opérations de l’esprit.
;MONSIEUR JOURDAIN
:Qui sont-elles, ces trois opérations de l’esprit ?
;MAÎTRE DE PHILOSOPHIE
:La première,
:la seconde,
:et la troisième.
:La première est, de bien concevoir par le moyen des universaux.
:La seconde, de bien juger par le moyen des catégories.
:et la troisième, de bien tirer une conséquence par le moyen des figures.
://Barbara, celarent, darii, ferio, baralipton//, etc.
;MONSIEUR JOURDAIN
:Voilà des mots qui sont trop rébarbatifs.
:Cette logique-là ne me revient point.
:Apprenons autre chose qui soit plus joli.
;MAÎTRE DE PHILOSOPHIE
:Voulez-vous apprendre la morale ?
;MONSIEUR JOURDAIN
:La morale ?
;MAÎTRE DE PHILOSOPHIE
:Oui.
;MONSIEUR JOURDAIN
:Qu’est-ce qu’elle dit cette morale ?
;MAÎTRE DE PHILOSOPHIE
:Elle traite de la félicité ;
:enseigne aux hommes à modérer leurs passions,
:et...
;MONSIEUR JOURDAIN
:Non, laissons cela.
:Je suis bilieux comme tous les diables ;
:et il n’y a morale qui tienne,
:je me veux mettre en colère tout mon soûl,
:quand il m’en prend envie.
;MAÎTRE DE PHILOSOPHIE
:Est-ce la physique que vous voulez apprendre ?
;MONSIEUR JOURDAIN
:Qu’est-ce qu’elle chante cette physique ?
;MAÎTRE DE PHILOSOPHIE
:La physique est celle qui explique les principes des choses naturelles, et les propriétés du corps ;
:qui discourt de la nature des éléments,
:des métaux, des minéraux, des pierres, des plantes, et des animaux,
:et nous enseigne les causes de tous les météores,
:l’arc-en-ciel, les feux volants, les comètes, les éclairs, le tonnerre, la foudre, la pluie, la neige, la grêle, les vents, et les tourbillons.
;MONSIEUR JOURDAIN
:Il y a trop de tintamarre là dedans,
:trop de brouillamini.
;MAÎTRE DE PHILOSOPHIE
:Que voulez-vous donc que je vous apprenne ?
;MONSIEUR JOURDAIN
:Apprenez-moi l’orthographe.
;MAÎTRE DE PHILOSOPHIE
:Très volontiers.
;MONSIEUR JOURDAIN
:Après vous m’apprendrez l’almanach,
:pour savoir quand il y a de la lune, et quand il n’y en a point.
;MAÎTRE DE PHILOSOPHIE
:Soit.
:Pour bien suivre votre pensée,
:et traiter cette matière en philosophe,
:il faut commencer selon l’ordre des choses,
:par une exacte connaissance de la nature des lettres,
:et de la différente manière de les prononcer toutes.
:Et là-dessus j’ai à vous dire,
:que les lettres sont divisées en voyelles,
:ainsi dites voyelles, parce qu’elles expriment les voix ;
:et en consonnes,
:ainsi appelées consonnes, parce qu’elles sonnent avec les voyelles,
:et ne font que marquer les diverses articulations des voix.
:Il y a cinq voyelles, ou voix,
:A, E, I, O, U.
;MONSIEUR JOURDAIN
:J’entends tout cela.
;MAÎTRE DE PHILOSOPHIE
:La voix, A, se forme en ouvrant fort la bouche,
:A.
;MONSIEUR JOURDAIN
:A, A,
:Oui.
;MAÎTRE DE PHILOSOPHIE
:La voix, E, se forme en rapprochant la mâchoire d’en bas de celle d’en haut, :A, E.
;MONSIEUR JOURDAIN
:A, E,
:A, E.
:Ma foi oui.
:Ah que cela est beau !
;MAÎTRE DE PHILOSOPHIE
:Et la voix, I, en rapprochant encore davantage les mâchoires l’une de l’autre,
:et écartant les deux coins de la bouche vers les oreilles,
:A, E,
:I.
;MONSIEUR JOURDAIN
:A, E, I, I, I, I.
:Cela est vrai.
:Vive la science.
;MAÎTRE DE PHILOSOPHIE
:La voix, O,
:se forme en rouvrant les mâchoires,
:et en rapprochant les lèvres par les deux coins, le haut et le bas,
:O.
;MONSIEUR JOURDAIN
:O, O.
:Il n’y a rien de plus juste.
:A, E, I, O, I, O.
:Cela est admirable !
:I, O, I, O.
;MAÎTRE DE PHILOSOPHIE
:L’ouverture de la bouche fait justement comme un petit rond qui représente un O.
;MONSIEUR JOURDAIN
:O, O, O.
:Vous avez raison, O.
:Ah la belle chose, que de savoir quelque chose !
;MAÎTRE DE PHILOSOPHIE
:La voix, U, se forme en rapprochant les dents
:sans les joindre entièrement,
:et allongeant les deux lèvres en dehors,
:les approchant aussi l’une de l’autre sans les rejoindre tout à fait,
:U.
;MONSIEUR JOURDAIN
:U, U.
:Il n’y a rien de plus véritable,
:U.
;MAÎTRE DE PHILOSOPHIE
:Vos deux lèvres s’allongent comme si vous faisiez la moue :
:d’où vient que si vous la voulez faire à quelqu’un, et vous moquer de lui, :vous ne sauriez lui dire que U.
;MONSIEUR JOURDAIN
:U, U.
:Cela est vrai.
:Ah que n’ai-je étudié plus tôt, pour savoir tout cela.
;MAÎTRE DE PHILOSOPHIE
:Demain, nous verrons les autres lettres, qui sont les consonnes.
;MONSIEUR JOURDAIN
:Est-ce qu’il y a des choses aussi curieuses qu’à celles-ci ?
;MAÎTRE DE PHILOSOPHIE
:Sans doute.
:La consonne, D, par exemple, se prononce en donnant du bout de la langue au-dessus des dents d’en haut :
:DA.
;MONSIEUR JOURDAIN
:DA, DA.
:Oui.
:Ah les belles choses ! les belles choses !
;MAÎTRE DE PHILOSOPHIE
:L’F, en appuyant les dents d’en haut sur la lèvre de dessous,
:FA.
;MONSIEUR JOURDAIN
:FA, FA.
:C’est la vérité.
:Ah ! mon père, et ma mère, que je vous veux de mal !
;MAÎTRE DE PHILOSOPHIE
:Et l’R, en portant le bout de la langue jusqu’au haut du palais ;
:de sorte qu’étant frôlée par l’air qui sort avec force,
:elle lui cède,
:et revient toujours au même endroit,
:faisant une manière de tremblement,
:RRA.
;MONSIEUR JOURDAIN
:R, R, RA ; R, R, R, R, R, RA.
:Cela est vrai.
:Ah l’habile homme que vous êtes !
:et que j’ai perdu de temps !
:R, r, r, ra.
;MAÎTRE DE PHILOSOPHIE
:Je vous expliquerai à fond toutes ces curiosités.
;MONSIEUR JOURDAIN
:Je vous en prie.
:Au reste il faut que je vous fasse une confidence.
:Je suis amoureux d’une personne de grande qualité,
:et je souhaiterais que vous m’aidassiez à lui écrire quelque chose dans un petit billet que je veux laisser tomber à ses pieds.
;MAÎTRE DE PHILOSOPHIE
:Fort bien.
;MONSIEUR JOURDAIN
:Cela sera galant,
:oui ?
;MAÎTRE DE PHILOSOPHIE
:Sans doute.
:Sont-ce des vers que vous lui voulez écrire ?
;MONSIEUR JOURDAIN
:Non, non, point de vers.
;MAÎTRE DE PHILOSOPHIE
:Vous ne voulez que de la prose ?
;MONSIEUR JOURDAIN
:Non,
:je ne veux ni prose, ni vers.
;MAÎTRE DE PHILOSOPHIE
:Il faut bien que ce soit l’un, ou l’autre.
;MONSIEUR JOURDAIN
:Pourquoi ?
;MAÎTRE DE PHILOSOPHIE
:Par la raison, Monsieur, qu’il n’y a pour s’exprimer, que la prose, ou les vers.
;MONSIEUR JOURDAIN
:Il n’y a que la prose, ou les vers ?
;MAÎTRE DE PHILOSOPHIE
:Non, Monsieur :
:tout ce qui n’est point prose, est vers ;
:et tout ce qui n’est point vers, est prose.
;MONSIEUR JOURDAIN
:Et comme l’on parle,
:qu’est-ce que c’est donc que cela ?
;MAÎTRE DE PHILOSOPHIE
:De la prose.
;MONSIEUR JOURDAIN
:Quoi,
:quand je dis : « //Nicole, apportez-moi mes pantoufles, et me donnez mon bonnet de nuit// »,
:c’est de la prose ?
;MAÎTRE DE PHILOSOPHIE
:Oui, Monsieur.
;MONSIEUR JOURDAIN
:Par ma foi,
:il y a plus de quarante ans que je dis de la prose, sans que j’en susse rien ;
:et je vous suis le plus obligé du monde, de m’avoir appris cela.
:Je voudrais donc lui mettre dans un billet :
:://Belle Marquise, vos beaux yeux me font mourir d’amour// ;
:mais je voudrais que cela fût mis d’une manière galante ;
:que cela fût tourné gentiment.
;MAÎTRE DE PHILOSOPHIE
:Mettre
:que les feux de ses yeux réduisent votre cœur en cendres ;
:que vous souffrez nuit et jour pour elle les violences d’un...
;MONSIEUR JOURDAIN
:Non, non, non,
:je ne veux point tout cela ;
:je ne veux que ce que je vous ai dit :
:://Belle Marquise, vos beaux yeux me font mourir d’amour.//
;MAÎTRE DE PHILOSOPHIE
:Il faut bien étendre un peu la chose.
;MONSIEUR JOURDAIN
:Non, vous dis-je,
:je ne veux que ces seules paroles-là dans le billet ;
:mais
:tournées à la mode,
:bien arrangées comme il faut.
:Je vous prie de me dire un peu,
:pour voir,
:les diverses manières dont on les peut mettre.
;MAÎTRE DE PHILOSOPHIE
:On les peut mettre
:premièrement
:comme vous avez dit :
://Belle Marquise, vos beaux yeux me font mourir d’amour.//
:Ou bien : //D’amour mourir me font, belle Marquise, vos beaux yeux//.
:Ou bien : //Vos yeux beaux d’amour me font, belle Marquise, mourir.//
:Ou bien : //Mourir vos beaux yeux, belle Marquise, d’amour me font.//
:Ou bien : //Me font vos yeux beaux mourir, belle Marquise, d’amour.//
;MONSIEUR JOURDAIN
:Mais de toutes ces façons-là, laquelle est la meilleure ?
;MAÎTRE DE PHILOSOPHIE
:Celle que vous avez dite : //Belle Marquise, vos beaux yeux me font mourir d’amour//.
;MONSIEUR JOURDAIN
:Cependant je n’ai point étudié,
:et j’ai fait cela tout du premier coup.
:Je vous remercie de tout mon cœur,
:et vous prie de venir demain de bonne heure.
;MAÎTRE DE PHILOSOPHIE
:Je n’y manquerai pas.
[...]
Ecoutez, l'autre jour, je taillais un morceau de bois...
Mon pianiste vient, il me dit:
<<<
::Voulez-vous me passer ce bout de bois, s'il vous plaît ?
<<<
:Lequel des deux bouts ?
<<<
::Quels deux bouts ?
::Je ne vois qu'un bout de bois.
<<<
:Parce que vous vous exprimez mal !
:Parce qu'un bois, ça a deux bouts.
:Alors
:il ne faudrait pas dire "un bout de bois",
:mais
:"les deux bouts d'un bois" !
<<<
::Les "deux bouts d'un bois"...
::D'abord, ça sonne curieux !
::On entends "les deux boudins",
::on ne sait pas s'il s'agit de bouts de bois ou de bouts de boudins !
<<<
:Ne plaisantons pas !
:S'il s'agissait de bouts de boudin, on dirait
:"les deux bouts d'un boudin" !
:On ne dirait pas "les deux bouts d'un bois"
<<<
::J'ai toujours appelé un bout de bois un bout de bois, moi !
::Alors passez-moi ce bout de bois.
<<<
Il prend le bout, tire dessus et me dit:
<<<
::Lâchez l'autre bout !
<<<
:Vous voyez bien qu'il y a deux bouts !
<<<
::Bon,
::puisqu'il y a deux bouts, gardez ce bout-ci !
::Moi, je garde ce bout-là !
::Ca nous fera chacun un bout !
<<<
:Non, ça nous fait encore chacun deux bouts !
:''Hein ?...''
:''Vous avez compris ça ?...''
:Si vous cassez le bout de bois en deux,
:il y a encore deux bouts à chaque bout !
:Il y a toujours deux bouts à chaque bout !
:''Vous avez compris ça ?...''
:''Vous n'avez pas compris ça ?...''
:Un bout, c'est irréductible !
:Vous ne pouvez pas supprimer le bout d'un bout !...
:ou alors,
:il faut supprimer le bout entier.
:Prenons un bout de machin...
:vous coupez le bout d'un machin,
:il reste encore un bout au bout du machin !
:'':Vous avez compris ça ?...''
:Alors, prenons un bout...
:un bout de truc.
:''Vous préférez un bout de truc ?''
:Vous prenez un bout de truc,
:vous coupez le bout d'un truc,
:il y a envore un bout au bout du truc !
:''Vous n'avez pas compris ça ?...''
:Prenons un bout de fil...
:De fil de téléphone, par exemple.
:Bon !
:Vous coupez le bout...
:Il y a encore quelqu'un au bout du fil !
:''Vous pouvez prendre mon raisonnement''
:''par tous les bouts,''
:''il se tient !''
!Le Défunt
!!!!!!René de Obaldia
!!!Scène
```
Pas de décors. L'acte peut se passer devant le rideau. Sitôt les trois coups, Julie et Madame de Crampon arrivent des deux côtés de la coulisse, traînant chacune une chaise avec elles.
- Madame de Crampon porte une cinquantaine. d'années et un chapeau extravagant peuplé d'une multitude d'oiseaux aux becs terribles.
- Julie, en grand deuil, offre le spectacle d'une veuve encore jeune et appétissante.
Elles amènent leur chaise au milieu de la scène, les plaçant côte â côte, s'asseyent et demeurent un moment silencieuses.
Se découvrant tout à coup, elles se lèvent ainsi que deux ressorts.
```
;MADAME DE CRAMPON
:Julie !
;JULIE
:Madame de Crampon !
://Elles s'embrassent. Se rasseyent. Un temps.//
;MADAME DE CRAMPON
:Pour être à l'heure, nous sommes à l'heure !
;JULIE
:Oui... Nous aurions voulu le faire exprès...
;MADAME DE CRAMPON
:Je suis bien heureuse de vous voir. Comment allez-vous depuis la dernière fois ?
;JULIE
:Oh! vous savez...
;MADAME DE CRAMPON
:Oui, oui, je sais... Cela va bientôt faire un an que ce cher Victor nous a quittés !
;JULIE
:Trois ans, Madame de Crampon.
;MADAME DE CRAMPON
:Trois ans, voilà ce que je voulais dire. Trois ans. Comme le temps passe vite !
;JULIE
:Ce sont les minutes qui sont longues !
;MADAME DE CRAMPON
:Plaît-il ?
;JULIE, fort. -
:Ce sont les minutes qui sont longues !
;MADAME DE CRAMPON
:Bien sûr, bien sur... surtout la nuit.
;JULIE
:Surtout la nuit.
;MADAME DE CRAMPON
:Ce cher Victor.
://Elle pousse un soupir.//
;JULIE
:Il vous aimait bien, Madame de Crampon ! Avant qu'il ne tombât muet, il me parlait souvent de vous.
;MADAME DE CRAMPON
:Mon Dieu ! quelle idée a-t-il eu de tomber muet ?
;JULIE
:La paralysie, chère madame, la paralysie... Cela a commencé par le côté droit.
;MADAME DE CRAMPON
:Le côté du foie.
;JULIE
:Plaît-il ?
;MADAME DE CRAMPON
:Le côté du foie. A gauche, c'est le côté du cœur, à droite le côté du foie.
;JULIE
:Peut-être... Remarquez, bien avant sa première crise, j'aurais dû me méfier.
;MADAME DE CRAMPON
:Si l'on savait !...
;JULIE
:Nos... nos... rapports... s' espa-çaient de plus en plus.
;MADAME DE CRAMPON, subitement intéressée. -
:Ah oui ! racontez-moi ça...
;JULIE
:Ceci entre nous, Madame de Crampon.
;MADAME DE CRAMPON
:Julie .... vous connaissez ma discrétion... Donc, vous me laissiez entendre que vos rapports...
;JULIE.
:Enfin... mon mari était ce qu on peut appeler un chaud lapin.
;MADAME DE CRAMPON
:Un chaud lapin ! //(Elle glousse.)// J'adore cette expression !
;JULIE
:Trop chaud même... Je le soup-çonne d'avoir incendié tout le combustible qui se trouvait dans son entourage...
;MADAME DE CRAMPON. -
:Oh !
;JULIE
:Le nombre de secrétaires et de dactylos qui montèrent en grade dans son service...
;MADAME DE CRAMPON
:Ce n'est pas possible !
;JULIE
:Ne croyez pas que je veuille le charger, ce pauvre cher Victor... Je lui procu-rerais volontiers toutes les femmes de l'uni-vers si cela pouvait le faire jaillir de son tombeau !
;MADAME DE CRAMPON
:Vous iriez jusque-là!
;JULIE
:Encore plus loin, MADAME DE CRAMPON, encore plus loin... La passion ne s'arrête pas à de petits détails... Le tort que j'avais, de son vivant, c'était précisément de m'y arrêter. Quand je pense à la scène que j'ai faite à la crémière !
;MADAME DE CRAMPON
:Parce que... la crémière aussi...
;JULIE
:Tous ses fromages blancs en pleine figure ! //(Elle se laisse soudain glisser de sa chaise, tombe à genoux et joint les mains.)// Victor, je te demande pardon !
;MADAME DE CRAMPON, //très gênée.// -
:Je vous en prie, asseyez-vous... Si l'on nous voyait...
;JULIE, //elle se rassied.// -
:Excusez-moi, la douleur m'égare...
;MADAME DE CRAMPON
:Si je comprends bien, Victor vous négligeait ?
;JULIE,
://piquée au vif// Moi ? Pas du tout !
;MADAME DE CRAMPON
:Eh bien !...
;JULIE
:Mais comme je vous l'expliquais, avant sa paralysie, mon époux n'était déjà plus le même... Nous restions parfois dix jours, douze jours, treize jours sans...
;MADAME DE CRAMPON
:Oui, oui, oui, oui, oui.
;JULIE
:D'abord je m'étais accusée Julie, tu es froide, Julie, tu n'atteins pas les sommets de ton Victor, Julie tu manques de souffle...
;MADAME DE CRAMPON
:Il était très exigeant ?
;JULIE
:Exigeant ? oui et non..., raffiné surtout, raffiné. Il s'appelait Badouin, comme vous savez, Victor Badouin, mais en réalité, il descendait directement des " de Saintefoix Vilmure de Saintonge ".
;MADAME DE CRAMPON, //soupçonneuse. //-
:Comment cela ?
;JULIE
:A la Révolution, son ancêtre Jules de Saintefoix Vilmure de Saintonge, afin de s'éviter quelques désagréments, avait emprunté le nom de Badouin. Très exactement, il avait payé un certain César Badouin pour qu'il aille se faire guillotiner à sa place.
;MADAME DE CRAMPON
:Et ce monsieur Badouin se laissa trancher la tête par procuration ?
;JULIE
:Oh ! vous savez, pour de l'argent !... Ceci à seule fin de vous expliquer cer-taines " subtilités " de mon défunt. Du sang bleu coulait dans ses veines... Vous, Madame, une " de " Crampon me suivez certainement ?
;MADAME DE CRAMPON
:Je vous suis, je vous suis...
;JULIE
:Donc, pour en revenir à ce qui nous occupe, après m'être d'abord accusée, je me rendis compte que j'exagérais mon incu-rie... en ce domaine... que ma froideur pou-vait nourrir des feux redoutables... D'autres anguilles sont sous roche, pensai-je... Un soir, alors qu'il était rentré encore plus tard que de coutume, j'allai le trouver dans la salle de bains, je fermai la porte à clef et je lui dis " Victor, j'en ai assez ! Choisis, c'est moi, ou Barnabé ! "
;MADAME DE CRAMPON, //s'étranglant presque.// -
:Barnabé !
;JULIE
:Oui, Barnabé, le nouveau comptable.
;MADAME DE CRAMPON, //le souffle coupé//. -
:Parce que Victor, Monsieur Badouin...
;JULIE
:Évidemment, c'était un très beau garçon ! Les yeux surtout ! Jamais on n'aurait soupçonné que ces yeux-là mangeaient des chiffres du matin au soir. Ou peut-être est-ce cela qui leur donnait cette pureté..., cette sorte d'éclat mathématique ?
;MADAME DE CRAMPON
:Voyons, ma petite Julie, vous ne vous sentez pas souffrante ?
;JULIE
:Je vous ennuie avec toutes mes histoires.
;MADAME DE CRAMPON, vivement. -
:M'ennuyer ? Oh ! pas du tout !... Que répondit Victor, lorsque vous lui parlâtes de Barnabé ?
;JULIE
:Rien. C'est à partir de ce moment qu'il tomba muet. Déjà l'horrible maladie rongeait sa moelle de chef de bureau... Et moi //(elle se frappe violemment la poitrine)//, moi, je l'accusais, ce cher esthète, je l'accablais, je versais dans la mesquinerie, dans des petites questions de petits points de vue... //(Elle tombe de nouveau à genoux.)// Victor, je te demande pardon !
;MADAME DE CRAMPON
:Je vous en prie, Julie !
;JULIE, //se rasseyant//. -
:Excusez-moi. Le remords me tue.
;MADAME DE CRAMPON, //la regardant avec tendresse.// -
:Pauvre cher ange, pauvre tulipe noire !
;JULIE
:Comme vous êtes bonne, Madame de Crampon !
:Elle se laisse tomber sur le sein de son amie.
;MADAME DE CRAMPON, de plus en plus gênée. -
:Voyons, Julie !... //(Elle tente de redresser cette longue fleur sans tuteur.)// Julie... Je ne suis pas Victor !
;JULIE
:On dit ça !
;MADAME DE CRAMPON
:Allons, Julie, un peu de dignité ! Redressez-vous ! Allons !...
://Elle la redresse.//
;JULIE
:Chaque fois que je rencontre un ou une amie de Victor, c'est un peu de lui-même que je retrouve... Il y a du Victor en vous, Madame de Crampon.
;MADAME DE CRAMPON
:Écoutez, mon enfant, moi aussi j ai été veuve. Je veux dire : j'ai connu bien des épreuves au cours de mon existence. Je n'en suis pas morte.
;JULIE
:Vous en mourrez, Madame de Crampon, croyez-moi, vous en mourrez !
;MADAME DE CRAMPON, //maternelle.// -
:Allons ! Allons Vous êtes encore jeune... La terre continue de tourner, les feuilles de grimper aux arbres... Les petites filles sautent à la corde, l'Océan joue du biniou... les oiseaux cuicuitent... la France...
;JULIE, //se levant.// -
:Ah ! les oiseaux ! Victor aimait tant les oiseaux ! //(Elle fixe d'un air égaré le chapeau de Madame de Crampon.)// ... Madame de Crampon, donnez-moi votre chapeau.
;MADAME DE CRAMPON, //étonnée.// -
:Mon chapeau !
;JULIE
:Oui, votre chapeau. Votre chapeau qui est plus qu'un chapeau, qui est un ramage, Madame de Crampon, un ramage ! //(Tendant les mains vers l'objet convoité.)// Je vous en prie...
;MADAME DE CRAMPON, se reculant. -
:Vous n'y songez pas !... Vous voudriez que je reparte tête nue ?
;JULIE
:Je vous donnerais le mien si cela peut vous faire plaisir.
;MADAME DE CRAMPON -
:Je n'ai pas besoin qu'on me fasse plaisir. //(Enfonçant solidement son chapeau sur son chef.)// Chaque chose à sa place.
;JULIE
:Il aimait tant les oiseaux, Victor... La première fois qu'il viola une petite fille, je lui ai demandé, oh ! très doucement pour ne pas le froisser, Victor, pourquoi as-tu fait cela ? Vous ne savez pas ce qu'il m'a répondu?
;MADAME DE CRAMPON, //étrangement pâle.// -
:Ma foi non !
;JULIE
:Parce qu'elle ressemblait à un petit oiseau. C'était un poète, mon Victor.
;MADAME DE CRAMPON, //à elle-même.// -
:Non, ce n'est pas possible ! Un homme si distingué, si ponctuel, jamais un mot plus haut qu'un autre...
;JULIE
:Je vous en prie, chère grande amie...
://(Terrible tout à coup.)// Victor me commande ce chapeau ; plumé ou déplumé je l'obtiendrai !
;MADAME DE CRAMPON, //le retirant en tremblant.// -
:Tenez, puisque cela peut faire votre bonheur.
;JULIE, //bondissant sur le chapeau.// -
:Comment osez-vous me parler de bonheur ? //(Examinant l'objet et s'attendrissant.)// Oh ! les beaux oiseaux ! Oh ! les gracieux volatiles !
;MADAME DE CRAMPON
:Julie, vous n'êtes pas dans votre état normal !
;JULIE
:Parce que vous, Madame de Crampon, vous vous croyez dans un état normal ?
;MADAME DE CRAMPON
:Si quelqu'un pouvait passer !
;JULIE
:Comment ?
;MADAME DE CRAMPON. -
:C'est-à-dire... évidemment, on ne sait jamais. //(Très vite.)// Pierre qui roule n'amasse pas mousse. Un tien vaut mieux que deux tu l'auras ... Brebis qui bêle perd sa goulée. Parlez-moi encore de Victor, ce cher Victor. La première fois que je l'ai rencontré, c'était à l'enterrement de votre grand-mère... //(Joyeuse.)// Vous vous souvenez de l'enterrement de votre grand-mère ? C'était le bon temps !
;JULIE
:Je me souviens... C'est lui qui l'a tuée.
;MADAME DE CRAMPON.
:Hein ?
;JULIE
:Remarquez, à partir d'un certain âge, il est indécent de ne pas mourir. Non seulement indécent, mais immoral.
;MADAME DE CRAMPON, //terrorisée.// -
:Très juste.
;JULIE
:Vous voulez que je vous raconte l'histoire ?
;MADAME DE CRAMPON
:Je crains qu'il ne se fasse tard... On bavarde, on bavarde, les heures tournent...
;JULIE
:Ma grand-mère, comme beau-coup de vieillards, adorait les confitures. La gelée de groseille surtout.
;MADAME DE CRAMPON
:La gelée de groseille.
;JULIE
:Elle aurait vendu son âme pour un seul pot. Un dimanche d'avril, nous étions en famille et remarquâmes que Victor s'était approché de son oreille en lui glissant quelques mots dans le tuyau... Dix minutes plus tard leurs deux places se trouvaient vides...
;MADAME DE CRAMPON, //se tenant le cœur, respirant mal.// -
:Mon cœur me lâche. Je sens mon cœur qui me lâche.
:JULLE.
:Où pouvaient-ils être ?
;MADAME DE CRAMPON, //faisant un grand effort.// -
:Oui, où pouvaient-ils être ?
;JULIE
:Dans la cave... Victor l'avait coincée entre deux pots de confiture et avait abusé d'elle !... Lorsque nous arrivâmes, trop tard, elle était morte !
;MADAME DE CRAMPON, //dans un murmure.// -
:Morte !
;JULIE
:Comme quoi la gourmandise est toujours punie... Naturellement, motus. Cha-cun fit comme s'il n'avait rien vu. Dans notre famille, nous sommes très chatouilleux sur l'honneur. Vous savez que Victor avait la rosette?
;MADAME DE CRAMPON, //dans un demi-murmure.// -
:Morte !
://Sa tête tombe à la renverse.//
;JULIE
:Eh bien ! Madame de Crampon, que se passe-t-il ?
;MADAME DE CRAMPON, //entrouvrant son corsage.// -
:De l'air, de l'air !
:JULLE.
:Allons, Madame De Crampon ! //(Elle lui tapote les mains, les joues.)// Vous n'allez pas partir !
;MADAME DE CRAMPON, //dans un quart de murmure.// -
:Je voudrais bien !... De l'air ! Ouvrez les fenêtres !
;JULIE, //l'éventant avec le chapeau.// -
:Eh bien ! Eh bien ! C'est moi qui suis veuve, ce n'est pas vous !
;MADAME DE CRAMPON, //hurlant.// -
:Ou-vrez les fenêtres. Laissez rentrer les oiseaux...
;JULIE
:C'est votre chapeau que vous voulez ? Tenez, je vous le rends.
://Elle le lui remet sur la tête.//
;MADAME DE CRAMPON, //très distinctement.// -
:Quand je pense que j'ai couché avec ce monstre !!!
;JULIE
:Quoi ! Qu'est-ce que vous dites ?
;MADAME DE CRAMPON
:Un homme si ponctuel ! ... //(Tombant à genoux et joignant les mains, à la manière de Julie.)// Victor, mon Victor, dis-moi que ce n'est pas vrai !
;JULIE
:Mon Victor ! //(Se frappant le front et poussant un grand cri.)// Ah ! j'y suis ! Ça devait se passer entre le 21 mars et la mi-juillet... Je lui demandais " Qu'est-ce que tu fais en ce moment, mon grand ? " Il me répondait invariablement avec une fine lueur dans le regard " Je me cramponne ! je me cramponne ! " C'était donc ça !
;MADAME DE CRAMPON.
:Ah ! ma tête!... ma tête !...
://Elle se relève.//
;JULIE, //tombant a genoux a son tour//.
:Victor, je te demande pardon... J'ai dû te rendre bien malheureux pour que tu ailles chercher consolation chez cette vieille chouette !
;MADAME DE CRAMPON
:Qui parle de chouette ?
://Elle regarde autour d'elle avec un air complètement égaré.//
;JULIE
:Pardon, mon grand ; toi dont l'ombre couvre encore toutes choses.
;MADAME DE CRAMPON
:Qui est cette femme ? Comme elle paraît souffrir ! //(S'approchant de Julie.)// Qui êtes-vous, madame ?
;JULIE, //de plus en plus abîmée dans la douleur, et continuant de parler au vide.// -
:Qui suis-je ?... O cruel destin de la femme qui ne peut être qu'en n'étant pas, qui ne peut se trouver qu'en se perdant... Comment puis-je ne plus être afin d'être, puisque l'objet de ma perte n'est plus ?
;MADAME DE CRAMPON
:Vous avez perdu quelque chose, madame ?
;JULIE
:Je fais semblant d'être, mais ce faisant je trompe l'univers, je trompe le plus petit brin d'herbe, le moindre bourgeon, le moindre têtard... Je me trompe moi-même et je trompe Victor !... Pardon, mon grand !
;MADAME DE CRAMPON
:Victor? //(Ce nom semble remuer quelque chose de douloureux dans sa pauvre tête.)// J'ai déjà entendu ce nom-la quelque part...
;JULIE, se relevant. -
:Ce corps inutile, ce corps inutile qui singe les gestes des vivants n'est plus qu'une terrible vacuité incapable de donner réalité à la plénitude... Veuve ! Je suis veuve !
;MADAME DE CRAMPON. -
:Ah ! vous êtes veuve ! Je me disais aussi...
;JULIE
:Je suis amputée, comme la terre serait amputée du ciel. Comme... Comment exister ?... Je me sens de plus en plus contaminée par mon apparence.
;MADAME DE CRAMPON
:Allons, allons, vous exagérez certainement.
;JULIE
:La douleur a fait vaciller mon esprit, les ténèbres s'emparent de moi... Où suis-je ?... Est-il vrai que les grenadiers de Napoléon allèrent en Espagne pour manger des pastèques ?... Qui êtes-vous, madame ?
;MADAME DE CRAMPON
:Votre amie, votre amie.
;JULIE
:J'ai déjà dû vous rencontrer...
;MADAME DE CRAMPON
:Le monde est si petit !
;JULIE
:Surtout lorsqu'une peine incommensurable l'habite. Dites, madame, est-il vrai que tout corps plongé dans un liquide reçoit une poussée verticale de bas en haut capable de le projeter jusqu'aux étoiles ?
;MADAME DE CRAMPON
:C'est exact.
;JULIE
:Alors je vais aller me noyer.
;MADAME DE CRAMPON
:Voyons, ne dites pas de bêtises... Tenez, asseyez-vous ; voici deux chaises qui semblent avoir été créées exprès pour vous et moi.
;JULIE, //considérant longuement les chaises.// -
:Elles sont bien bonnes !
://Elles s'asseyent toutes deux, absolument comme au début de la scène. Long silence.//
;MADAME DE CRAMPON
:Tout, chez vous, laisse supposer que vous avez traversé de terribles épreuves...
;JULIE
:On ne traverse jamais les épreuves, ce sont les épreuves qui vous traversent.
;MADAME DE CRAMPON
:Ainsi que des milliers de glaives dont aucun ne nous livre son nom.
;JULIE
:Plaît-il ?
;MADAME DE CRAMPON,
:Ainsi que des milliers de glaives... Je vous demande pardon, je deviens lyrique.
;JULIE
:Je vous pardonne.
;MADAME DE CRAMPON
:Merci. //(Un temps.)// Que me pardonnez-vous ?
;JULIE
:De devenir... Moi, j'ai été, mais je ne suis plus... Il y a très longtemps, très longtemps, j'aimais un homme...
;MADAME DE CRAMPON
:Victor.
;JULIE, vivement. -
:Comment le savez-vous ?
;MADAME DE CRAMPON
:Vous me l'avez avoué vous-même tout à l'heure... Toutes les femmes aiment un Victor ; il leur faut bien un monstre pour donner prétexte à leur propre labyrinthe.
;JULIE
:Vous dites des choses fortes, madame.
;MADAME DE CRAMPON
:Oui, depuis quelques minutes. //(Montrant sa tête.)// Ça m'a fait clic là-dedans !
;JULIE
:Clic ?
;MADAME DE CRAMPON
:Clic.
;JULIE
:C'est cela clic ! //(Un silence.)// Vous portez un bien joli chapeau.
;MADAME DE CRAMPON, l'ôtant et l'examinant,
:Vous trouvez ?... Je vous le donne.
:Elle le donne à Julie.
;JULIE
:Merci, je le mettrai dans ma volière.
;MADAME DE CRAMPON
:Plaît-il ?
;JULIE
:Je le mettrai dans ma volière.
;MADAME DE CRAMPON
:Comme vous êtes touchante
;JULIE
:Peut-être, mais personne ne peut me toucher, je ne suis qu'une apparence.
;MADAME DE CRAMPON
:Vous devez avoir raison. //(Un temps. Et sur un tout autre ton.)// Suzanne, rends-moi mon chapeau.
;JULIE.
:Ton... ?
;MADAME DE CRAMPON,
:Oui, il doit être au moins six heures...
;JULIE
:Tu crois, Honorine ?
;MADAME DE CRAMPON
:Six heures et quart...
;JULIE
:Oh ! quel dommage .... Encore cinq minutes, cinq minutes seulement !
;MADAME DE CRAMPON
:Non, je t'assure, il faut rentrer, ma petite caille.
;JULIE
:Pas tout de suite... Aujourd'hui, nous sommes sublimes... Quel dialogue ! J'en frémis encore.
;MADAME DE CRAMPON
:Moi aussi. Je ne me sens plus la même... Le moment de la grand-mère et du pot de confiture... Mais le temps passe et il y a les contingences.
;JULIE
:Les contingences !
;MADAME DE CRAMPON.-
:Les machines à laver, les enfants à fouetter, la viande à mastiquer, les journaux à balancer... //(Elle se lève.)// Allons, Suzanne, du nerf !... Nous reviendrons demain. Demain comme hier, comme après-demain...
;JULIE
:On reparlera de Victor ?
;MADAME DE CRAMPON
:Si tu veux. Et j'amènerai mon perroquet.
;JULIE
:Oh ! oui ! amène ton perroquet ; comme ça, on se fera enregistrer. //(Elle se lève.)// Et moi, je mettrai ma robe de mariée avec un brassard noir.
;MADAME DE CRAMPON.
:D'accord... Au revoir, ma petite Suzanne.
;JULIE
:Au revoir, Honorine.
://Elles s'embrassent. S'en vont chacune de leur côté, se retournent au même moment et...//
;MADAME DE CRAMPON
:Demain...
;JULIE
:Même heure...
://Elles disparaissent comme elles sont venues.//
MARINETTE, GROS-RENÉ.
;MARINETTE
:Oh ! la lâche personne !
;GROS-RENÉ
:Ha ! le faible courage !
;MARINETTE
:J’en rougis de dépit.
;GROS-RENÉ
:J’en suis gonflé de rage :
:Ne t’imagine pas que je me rende ainsi.
;MARINETTE
:Et ne pense pas, toi, trouver ta dupe aussi.
;GROS-RENÉ
:Viens, viens frotter ton nez auprès de ma colère.
;MARINETTE
:Tu nous prends pour une autre ; et tu n’as pas affaire
:À ma sotte maîtresse. Ardez le beau museau !
:Pour nous donner envie encore de sa peau :
:Moi, j’aurais de l’amour pour ta chienne de face ?
:Moi, je te chercherais ? Ma foi, l’on t’en fricasse
:Des filles comme nous.
;GROS-RENÉ
:Oui ? tu le prends par là ?
: Tiens, tiens, sans y chercher tant de façons, voilà
:Ton beau galand de neige, avec ta nompareille :
:Il n’aura plus l’honneur d’être sur mon oreille.
;MARINETTE
:Et toi, pour te montrer que tu m’es à mépris,
:Voilà ton demi-cent d’épingles de Paris ,
:Que tu me donnas hier avec tant de fanfare .
;GROS-RENÉ
:Tiens encor ton couteau ; la pièce est riche et rare :
:Il te coûta six blancs lorsque tu m’en fis don.
;MARINETTE
:Tiens tes ciseaux, avec ta chaîne de laiton.
;GROS-RENÉ
:J’oubliais d’avant-hier ton morceau de fromage ;
:Tiens : je voudrais pouvoir rejeter le potage
:Que tu me fis manger, pour n’avoir rien à toi .
;MARINETTE
:Je n’ai point maintenant de tes lettres sur moi ;
:Mais j’en ferai du feu jusques à la dernière.
;GROS-RENÉ
:Et des tiennes tu sais ce que j’en saurai faire ?
;MARINETTE
:Prends garde à ne venir jamais me reprier.
;GROS-RENÉ
:Pour couper tout chemin à nous rapatrier,
:Il faut rompre la paille ; une paille rompue [i]
:Rend, entre gens d’honneur, une affaire conclue ;
:Ne fais point les doux yeux ; je veux être fâché.
;MARINETTE
:Ne me lorgne point, toi : j’ai l’esprit trop touché.
;GROS-RENÉ
:Romps ; voilà le moyen de ne s’en plus dédire :
:Romps ; tu ris bonne bête !
;MARINETTE
:Oui, car tu me fais rire.
;GROS-RENÉ
:La peste soit ton ris ; voilà tout mon courroux
:Déjà dulcifié [i] : qu’en dis-tu ? romprons-nous,
:Ou ne romprons-nous pas ?
;MARINETTE
:Vois.
;GROS-RENÉ
:Vois, toi.
;MARINETTE
:Vois, toi-même.
;GROS-RENÉ
:Est-ce que tu consens que jamais je ne t’aime ?
;MARINETTE
:Moi ? ce que tu voudras.
;GROS-RENÉ
:Ce que tu voudras, toi :
: Dis.
;MARINETTE
:Je ne dirai rien.
;GROS-RENÉ
:Ni moi non plus.
;MARINETTE
:Ni moi.
;GROS-RENÉ
:Ma foi, nous ferons mieux de quitter la grimace ;
:Touche, je te pardonne.
;MARINETTE
:Et moi, je te fais grâce.
;GROS-RENÉ
:Mon Dieu ! qu’à tes appas je suis acoquiné !
;MARINETTE
:Que Marinette est sotte après son Gros-René !
:
!!!!► //[[Texte scène par scène|Le Malade Imaginaire - III sc 7 à 14]]//
{{SCÈNE VII : TOINETTE, ARGAN, BÉRALDE}}
{{SCÈNE VIII - TOINETTE en médecin, ARGAN, BÉRALDE.}}
{{SCÈNE IX - TOINETTE, ARGAN, BÉRALDE.}}
{{SCÈNE X - TOINETTE, //en médecin//, ARGAN, BÉRALDE.}}
{{SCÈNE XI - TOINETTE, ARGAN, BÉRALDE.}}
{{SCÈNE XII - BÉLINE, TOINETTE, ARGAN, BÉRALDE.}}
{{SCÈNE XIII - ANGÉLIQUE, ARGAN, TOINETTE, BÉRALDE.}}
{{SCÈNE XIV ET DERNIÈRE - CLÉANTE, ANGÉLIQUE, ARGAN, BÉRALDE, TOINETTE.}}
{{BALLET D'INTRONISATION DU NOUVEAU DOCTEUR}}
{{Le Malade Imaginaire - III sc 7 à 14}}
Le Malade Imaginaire - III sc 7 à 14
[[SCÈNE VII : TOINETTE, ARGAN, BÉRALDE]]
[[SCÈNE VIII - TOINETTE en médecin, ARGAN, BÉRALDE.]]
[[SCÈNE IX - TOINETTE, ARGAN, BÉRALDE.]]
[[SCÈNE X - TOINETTE, //en médecin//, ARGAN, BÉRALDE.]]
[[SCÈNE XI - TOINETTE, ARGAN, BÉRALDE.]]
[[SCÈNE XII - BÉLINE, TOINETTE, ARGAN, BÉRALDE.]]
[[SCÈNE XIII - ANGÉLIQUE, ARGAN, TOINETTE, BÉRALDE.]]
[[SCÈNE XIV ET DERNIÈRE - CLÉANTE, ANGÉLIQUE, ARGAN, BÉRALDE, TOINETTE.]]
[[BALLET D'INTRONISATION DU NOUVEAU DOCTEUR]]
!!LE MALENTENDU (1944)
!!!Acte premier Scène 1
```
Midi.
La salle commune de l'auberge.
Elle est propre et claire.
Tout y est net.
```
;LA MÈRE
:Il reviendra.
;MARTHA
:Il te l'a dit ?
;LA MÈRE
:Oui.
:Quand tu es sortie.
;MARTHA
:Il reviendra seul ?
;LA MÈRE
:Je ne sais pas.
;MARTHA
:Est-il riche ?
;LA MÈRE
:Il ne s'est pas inquiété du prix.
;MARTHA
:S'il est riche, tant mieux.
:Mais il faut aussi qu'il soit seul.
;LA MÈRE
:{{avec lassitude ||did}} : Seul et riche, oui,
:Et alors nous devrons recommencer.
;MARTHA
:Nous recommencerons, en effet.
:Mais nous serons payées de notre peine.
:{{Un silence. Martha regarde sa mère.||scn}}
:Mère, vous êtes singulière.
:Je vous reconnais mal depuis quelque temps.
;LA MÈRE
:Je suis fatiguée, ma fille,
:rien de plus.
:Je voudrais me reposer.
;MARTHA
:Je puis prendre sur moi ce qui vous reste encore à faire dans la maison.
:Vous aurez ainsi toutes vos journées.
;LA MÈRE
:Ce n'est pas exactement de ce repos que je parle.
:Non, c'est un rêve de vieille femme.
:J'aspire seulement à la paix,
:à un peu d'abandon.
:{{(Elle rit faiblement.)||scn}}
:Cela est stupide à dire, Martha,
:mais il y a des soirs où je me sentirais presque des goûts de religion.
;MARTHA
:Vous n'êtes pas si vieille, ma mère, qu'il faille en venir là.
:Vous avez mieux à faire.
;LA MÈRE
:Tu sais bien que je plaisante.
:Mais quoi !
:À la fin d'une vie,
:on peut bien se laisser aller.
:On ne peut pas toujours se raidir et se durcir comme tu le fais, Martha.
:Ce n'est pas de ton âge non plus.
:Et je connais bien des filles,
:nées la même année que toi,
:qui ne songent qu'à des folies.
;MARTHA
:Leurs folies ne sont rien auprès des nôtres,
:vous le savez.
;LA MÈRE
:Laissons cela.
;MARTHA
:{lentement{ ||did}} : On dirait qu'il est maintenant des mots qui vous brûlent la bouche.
;LA MÈRE
:Qu'est-ce que cela peut te faire,
:si je ne recule pas devant les actes ?
:Mais qu'importe !
:Je voulais seulement dire que j'aimerais quelquefois te voir sourire.
;MARTHA
:Cela m'arrive,
:je vous le jure.
;LA MÈRE
:Je ne t'ai jamais vue ainsi.
;MARTHA
:C'est que je souris dans ma chambre,
:aux heures où je suis seule.
;LA MÈRE
:{{la regardant attentivement. ||scn}}
:Quel dur visage est le tien, Martha !
;MARTHA
:{{s'approchant et avec calme ||scn}}s'approchant et avec calme
:Ne l'aimez-vous donc pas ?
;LA MÈRE
:{{la regardant toujours, après un silence. ||scn}}
:Je crois que oui, pourtant.
;MARTHA
:{{avec agitation ||did}} : Ah !
:mère !
::Quand nous aurons amassé beaucoup d'argent
::et que nous pourrons quitter ces terres sans horizon,
::quand nous laisserons derrière nous cette auberge
::et cette ville pluvieuse,
::et que nous oublierons ce pays d'ombre,
::le jour où nous serons enfin devant la mer dont j'ai tant rêvé,
::ce jour-là, vous me verrez sourire.
:Mais il faut beaucoup d'argent pour vivre libre devant la mer.
::C'est pour cela qu'il ne faut pas avoir peur des mots.
::C'est pour cela qu'il faut s'occuper de celui qui doit venir.
::S'il est suffisamment riche,
::ma liberté commencera peut-être avec lui.
:Vous a-t-il parlé longuement, mère ?
;LA MÈRE
:Non.
:Deux phrases en tout.
;MARTHA
:De quel air vous a-t-il demandé sa chambre ?
;LA MÈRE
:Je ne sais pas.
:Je vois mal
:et je l'ai mal regardé.
:Je sais, par expérience, qu'il vaut mieux ne pas les regarder.
:Il est plus facile de tuer ce qu'on ne connaît pas.
:{{( Un temps)||scn}} :
:Réjouis-toi,
:je n'ai pas peur des mots maintenant.
;MARTHA
:C'est mieux ainsi.
:Je n'aime pas les allusions.
:Le crime est le crime, il faut savoir ce que l'on veut.
:Et il me semble que vous le saviez, tout à l'heure,
:puisque vous y avez pensé, en répondant au voyageur.
;LA MÈRE
:Je n'y ai pas pensé.
:J'ai répondu par habitude.
;MARTHA
:L'habitude ?
:Vous le savez, pourtant,
:les occasions ont été rares !
;LA MÈRE
:Sans doute.
:Mais l'habitude commence au second crime.
:Au premier, rien ne commence,
:c'est quelque chose qui finit.
:Et puis, si les occasions ont été rares,
:elles se sont étendues sur beaucoup d'années,
:et l'habitude s'est fortifiée du souvenir.
:Oui,
:c'est bien l'habitude qui m'a poussée à répondre,
:qui m'a avertie de ne pas regarder cet homme,
:et assurée qu'il avait le visage d'une victime.
;MARTHA
:Mère,
:il faudra le tuer.
;LA MÈRE
:{{ plus bas ||scn}} : Sans doute,
:il faudra le tuer.
;MARTHA
:Vous dites cela d'une singulière façon.
;LA MÈRE
:Je suis lasse, en effet,
:et j'aimerais qu'au moins celui-là soit le dernier.
:Tuer est terriblement fatigant.
:Je me soucie peu de mourir devant la mer ou au centre de nos plaines,
:mais je voudrais bien qu'ensuite nous partions ensemble.
;MARTHA
:Nous partirons
:et ce sera une grande heure !
:Redressez-vous, mère,
:il y a peu à faire.
:Vous savez bien qu'il ne s'agit même pas de tuer.
::Il boira son thé,
::il dormira,
::et
::tout vivant encore,
::nous le porterons à la rivière.
:On le retrouvera dans longtemps,
:collé contre un barrage, avec d'autres qui n'auront pas eu sa chance
:et qui se seront jetés dans l'eau, les yeux ouverts.
:Le jour où nous avons assisté au nettoyage du barrage, vous me le disiez,
:mère,
:ce sont les nôtres qui souffrent le moins,
:la vie est plus cruelle que nous.
:Redressez-vous,
:vous trouverez votre repos et nous fuirons enfin d'ici.
;LA MÈRE
:Oui, je vais me redresser.
:Quelquefois, en effet,
:je suis contente à l'idée que les nôtres n'ont jamais souffert.
::C'est à peine un crime,
::tout juste une intervention,
::un léger coup de pouce donné à des vies inconnues.
:Et il est vrai qu'appa-remment la vie est plus cruelle que nous.
:C'est peut-être pour cela que j'ai du mal à me sentir coupable.
```
Entre le vieux domestique.
Il va s'asseoir derrière le comptoir, sans un mot.
Il ne bougera pas jusqu'à la fin de la scène.
```
;MARTHA
:Dans quelle chambre le mettrons-nous ?
;LA MÈRE
:N'importe laquelle, pourvu que ce soit au premier.
;MARTHA
:Oui,
:nous avons trop peiné, la dernière fois, dans les deux étages.
:{{(Elle s'assied pour la première fois .)||scn}} :
:Mère, est-il vrai que,
:là-bas,
:le sable des plages fasse des brûlures aux pieds ?
;LA MÈRE
:Je n'y suis pas allée, tu le sais.
:Mais on m'a dit que le soleil dévorait tout.
;MARTHA
:J'ai lu dans un livre qu'il mangeait jusqu'aux âmes
:et qu'il faisait des corps resplendissants,
:mais
:vidés par l'intérieur.
;LA MÈRE
:Est-ce cela, Martha, qui te fait rêver ?
;MARTHA
:Oui,
:j'en ai assez de porter toujours mon âme,
:j'ai hâte de trouver ce pays où le soleil tue les questions.
:Ma demeure n'est pas ici.
;LA MÈRE
:Auparavant, hélas !
:nous avons beaucoup à faire.
:Si tout va bien, j'irai, bien sûr, avec toi.
:Mais moi,
:je n'aurai pas le sentiment d'aller vers ma demeure.
:À un certain âge,
:il n'est pas de demeure où le repos soit possible,
:et c'est déjà beaucoup si l'on a pu faire soi-même cette dérisoire maison de briques,
:meublée de souvenirs,
:où il arrive parfois que l'on s'endorme.
:Mais naturellement,
:ce serait quelque chose aussi, si je trouvais à la fois le sommeil et l'oubli.
:{{Elle se lève et se dirige vers la porte. ||scn}} :
:Prépare tout, Martha.
:{{(Un temps.) ||scn}} :
:Si vraiment cela en vaut la peine.
:{{Martha la regarde sortir. Elle-même sort par une autre porte. ||scn}}
{{$:/jqstyles}}
!!!^^,,//`Flavie & Lee ?`//,,^^ ''LE MÉDECIN MALGRÉ LUI'' SGANARELLE, MARTINE, se querellant
,,ACTE I, SCÈNE PREMIÈRE,,
@@.bleu ''?''@@ @@.rouge ''?''@@
|^^{{Quand ils entrent en scène, Martine se montre très câline, mais lui pas. <br>Tous deux assis, plus elle souhaite visiblement un moment de tendresse, plus il se renfrogne.||did}}^^|
;@@.bleu SGANARELLE@@
:Non je te dis que je n’en veux rien faire ; et que c’est à moi de parler et d’être le maître.
;@@.rouge ''MARTINE''@@
:Et je te dis moi, que je veux que tu vives à ma fantaisie : et que je ne me suis point mariée avec toi, pour souffrir tes fredaines.
;SGANARELLE //,,au public,,//
:Ô la grande fatigue que d’avoir une femme :
et
qu’Aristote a bien raison, quand il dit qu’une femme est pire qu’un démon !
;@@.bleu ''?''@@ @@.rouge ''?''@@ MARTINE
:Voyez un peu l’habile homme, avec son benêt d’Aristote.
;@@.bleu ''?''@@ @@.rouge ''?''@@ SGANARELLE
:Oui, habile homme,
trouve-moi un faiseur de fagots, qui sache,
comme moi,
* raisonner des choses,
* qui ait servi, six ans, un fameux médecin,
* et qui ait su dans son jeune âge, son rudiment par cœur.
;MARTINE
:Peste du fou fieffé.
;@@.bleu ''?''@@ @@.rouge ''?''@@SGANARELLE
:Peste de la carogne.
;MARTINE
:Que maudit soit l’heure et le jour, où je m’avisai d’aller dire oui.
;SGANARELLE
:Que maudit soit le bec cornu de notaire qui me fit signer ma ruine.
;MARTINE
:C’est bien à toi, vraiment, à te plaindre de cette affaire :
devrais-tu être
{{¨}}un seul moment,
sans rendre grâces au Ciel de m’avoir pour ta femme,
et méritais-tu d’épouser une personne comme moi ?
;SGANARELLE
:Il est vrai que tu me fis trop d’honneur :
et que j’eus lieu de me louer la première nuit de nos noces.
::Hé !
morbleu,
:ne me fais point parler là-dessus,
//,,(au public),,//
je dirais de certaines choses...
;MARTINE
:Quoi ? que dirais-tu ?
;SGANARELLE
:Baste ,
laissons là ce chapitre,
@@.bleu ''?''@@ @@.rouge ''?''@@ //,,{{Il se tourne vers le fond, s'étend comme sur un transat||did}},,//
il suffit que nous savons ce que nous savons : et que tu fus bien heureuse de me trouver.
;MARTINE
://,,{{(Elle s'agrippe à son dossier. Tantôt sur lui, tantôt sur le public)||did}},,//
:Qu’appelles-tu bien heureuse de te trouver ?
* Un homme qui me réduit à l’hôpital,
* un débauché,
* un traître qui me mange tout ce que j’ai ?
;SGANARELLE
://^^{{(Très décontracté, rigolard)||did}}^^// Tu as menti,
j’en bois une partie.
;MARTINE
:Qui me vend,
pièce à pièce,
tout ce qui est dans le logis.
;SGANARELLE
:C’est vivre de ménage.
;MARTINE
:Qui m’a ôté jusqu’au lit que j’avais.
;SGANARELLE
:Tu t’en lèveras plus matin.
;MARTINE
:Enfin qui ne laisse aucun meuble dans toute la maison.
;SGANARELLE
:On en déménage plus aisément.
;MARTINE
:Et qui du matin jusqu’au soir, ne fait que jouer, et que boire.
;SGANARELLE
:C’est pour ne me point ennuyer.
;MARTINE
:Et que veux-tu pendant ce temps, que je fasse avec ma famille ?
;SGANARELLE
:Tout ce qu’il te plaira.
;MARTINE
:J’ai quatre pauvres petits enfants sur les bras.
;SGANARELLE
:Mets-les à terre.
;MARTINE
:Qui me demandent à toute heure, du pain.
;SGANARELLE
:Donne-leur le fouet.
//^^{{(se redressant brutalement)||did}} ^^//Quand j’ai bien bu, et bien mangé,
je veux que tout le monde soit saoul dans ma maison.
;MARTINE
:Et tu prétends ivrogne, que les choses aillent toujours de même ?
;@@.bleu ''?''@@ @@.rouge ''?''@@SGANARELLE //,,(Il fait face),,//
:Ma femme, allons tout doucement, s’il vous plaît.
;MARTINE
:Que j’endure éternellement, tes insolences, et tes débauches ?
;SGANARELLE
:Ne nous emportons point ma femme.
;MARTINE
:Et que je ne sache pas trouver le moyen de te ranger à ton devoir ?
;SGANARELLE
:Ma femme, vous savez que je n’ai pas l’âme endurante : et que j’ai le bras assez bon.
;MARTINE
:Je me moque de tes menaces.
@@.bleu ''?''@@ @@.rouge ''?''@@
;SGANARELLE
:Ma petite femme, ma mie, votre peau vous démange, à votre ordinaire.
;MARTINE
:Je te montrerai bien que je ne te crains nullement.
;SGANARELLE
:Ma chère moitié, vous avez envie de me dérober quelque chose [i] .
://,,{{Combat de coqs :||did}},,//
;@@.bleu ''?''@@ @@.rouge ''?''@@ MARTINE //,,se lève,,//
:Crois-tu que je m’épouvante de tes paroles ?
;@@.bleu ''?''@@ @@.rouge ''?''@@ SGANARELLE //,,se lève,,//
:Doux objet de mes vœux, je vous frotterai les oreilles.
:''//,,{{Poursuite effrénée tout autour de la scène :||did}},,//''
;MARTINE
:Ivrogne que tu es.
;SGANARELLE
:Je vous battrai.
;MARTINE
:Sac à vin.
;SGANARELLE
:Je vous rosserai.
;MARTINE
:Infâme.
;SGANARELLE
:Je vous étrillerai.
;MARTINE
:Traître, insolent, trompeur, lâche, coquin, pendard, gueux, belître, fripon, maraud, voleur... !
;SGANARELLE
:,,//{{Il prend un bâton, et lui en donne||did}}//,,
:Ah ! vous en voulez, donc.
;MARTINE ,,se sauvant hors scène,,
:Ah, ah, ah, ah.
;SGANARELLE //,,revenant en avant-scène,,//
:Voilà le vrai moyen de vous apaiser.
.
!!!Scène IV - Arsinoé, Célimène, le galant
;CÉLIMÈNE
:Ah ! quel heureux sort en ce lieu vous amène ?
:Madame, sans mentir, j'étais de vous en peine.
;ARSINOÉ
:Je viens pour quelque avis que j'ai cru vous devoir.
;CÉLIMÈNE
:Ah ! mon Dieu ! que je suis contente de vous voir !
://,,Le galant s'esquive en riant.,,//
!!!Scène V - Arsinoé, Célimène
;ARSINOÉ
:Leur départ ne pouvait plus à propos se faire.
;CÉLIMÈNE
:Voulons-nous nous asseoir ?
;ARSINOÉ
:Il n'est pas nécessaire.
:Madame, l'amitié doit surtout éclater
:Aux choses qui le plus nous peuvent importer ;
:Et, comme il n'en est point de plus grande importance
:Que celles de l'honneur et de la bienséance,
:Je viens, par un avis qui touche votre honneur,
:Témoigner l'amitié que pour vous a mon cœur.
:Hier, j'étais chez des gens de vertu __singulière__,
:Où sur vous du discours on tourna la matière ;
:Et là, votre conduite, avec ses grands éclats,
:Madame, eut le malheur qu'on ne la loua pas.
:*Cette foule de gens dont vous souffrez visite,
:*Votre galanterie,
:*et les bruits qu'elle excite,
:Trouvèrent des censeurs plus qu'il n'aurait fallu,
:Et bien plus rigoureux que je n'eusse voulu.
:Vous pouvez bien penser quel parti je sus prendre ;
:Je fis ce que je pus pour vous pouvoir défendre ;
:Je vous excusai fort sur votre intention,
:Et voulus de votre âme être la caution.
:Mais, vous savez qu'il est des choses dans la vie
:Qu'on ne peut excuser, quoiqu'on en ait envie ;
:Et je me vis contrainte à demeurer d'accord
:*Que l'air dont vous vivez vous faisait un peu tort ;
:*Qu'il prenait dans le monde une méchante face ;
:*Qu'il n'est conte fâcheux que partout on n'en fasse ;
:*Et que, si vous vouliez, tous vos déportements
:Pourraient moins donner prise aux mauvais jugements.
:Non que j'y croie au fond l'honnêteté blessée ;
:Me préserve le ciel d'en avoir la pensée !
:Mais, aux ombres du crime, on prête aisément foi,
:Et ce n'est pas assez de bien vivre pour soi.
:Madame, je vous crois l'âme trop raisonnable
:Pour ne pas prendre bien cet avis profitable,
:Et pour l'attribuer qu'aux mouvements secrets
:D'un zèle qui m'attache à tous vos intérêts.
;CÉLIMÈNE
:Madame, j'ai beaucoup de grâces à vous rendre,
:Un tel avis m'oblige ; et, loin de le mal prendre,
:J'en prétends reconnaître à l'instant la faveur,
:Par un avis aussi qui touche votre honneur ;
:Et, comme je vous vois vous montrer mon amie,
:En m'apprenant les bruits que de moi l'on publie,
:Je veux suivre, à mon tour, un exemple si doux,
:En vous avertissant de ce qu'on dit de vous.
:En un lieu, l'autre jour, où je faisais visite,
:Je trouvai quelques gens d'un très rare mérite,
:Qui, parlant des vrais soins d'une âme qui vit bien,
:Firent tomber sur vous, madame, l'entretien.
:Là, votre pruderie et vos éclats de zèle
:Ne furent pas cités comme un fort bon modèle ;
:*Cette affectation d'un grave extérieur,
:*Vos discours éternels de sagesse et d'honneur,
:*Vos mines et vos cris aux ombres d'indécence,
:Que d'un mot ambigu, peut avoir l'innocence,
:*Cette hauteur d'estime où vous êtes de vous,
:*Et ces yeux de pitié que vous jetez sur tous,
:*Vos fréquentes leçons, et vos aigres censures
:Sur des choses qui sont innocentes et pures ;
:Tout cela, si je puis vous parler franchement,
:Madame, fut blâmé d'un commun sentiment.
:À quoi bon, disaient-ils,
:cette mine modeste,
:Et ce sage dehors
::que dément tout le reste ?
:Elle est à bien prier exacte au dernier point ;
::Mais elle bat ses gens, et ne les paye point.
:Dans tous les lieux dévots, elle étale un grand zèle ;
::Mais elle met du blanc et veut paraître belle.
:Elle fait des tableaux couvrir les nudités ;
::Mais elle a de l'amour pour les réalités.
:Pour moi, contre chacun, je pris votre défense,
:Et leur assurai fort que c'était médisance ;
:Mais,
:tous les sentiments combattirent le mien,
:Et leur conclusion fut
*que vous feriez bien
:De prendre moins de soin des actions des autres,
:Et de vous mettre un peu plus en peine des vôtres ;
*Qu'on doit se regarder soi-même un fort long temps
:Avant que de songer à condamner les gens ;
*Qu'il faut mettre le poids d'une vie exemplaire
:Dans les corrections qu'aux autres on veut faire ;
*Et qu'encore vaut-il mieux s'en remettre, au besoin,
:À ceux à qui le ciel en a commis le soin.
:Madame, je vous crois aussi trop raisonnable,
:Pour ne pas prendre bien cet avis profitable,
:Et pour l'attribuer qu'aux mouvements secrets
:D'un zèle qui m'attache à tous vos intérêts.
;ARSINOÉ
:À quoi qu'en reprenant on soit assujettie,
:Je ne m'attendais pas à cette repartie,
:Madame ;
:et je vois bien, par ce qu'elle a d'aigreur,
:Que mon sincère avis vous a blessée au cœur.
;CÉLIMÈNE
:Au contraire, madame ; et, si l'on était sage,
:Ces avis mutuels seraient mis en usage.
:On détruirait par là, traitant de bonne foi,
:Ce grand aveuglement où chacun est pour soi.
:Il ne tiendra qu'à vous, qu'avec le même zèle,
:Nous ne continuions cet office fidèle,
:Et ne prenions grand soin de nous dire, entre nous,
:Ce que nous entendrons, vous de moi, moi de vous.
;ARSINOÉ
:Ah ! madame, de vous je ne puis rien entendre ;
:C'est en moi que l'on peut trouver fort à reprendre.
;CÉLIMÈNE
:Madame, on peut, je crois, louer et blâmer tout ;
:Et chacun a raison, suivant l'âge ou le goût.
*Il est une saison pour la galanterie,
::Il en est une aussi propre à la pruderie.
*On peut, par politique, en prendre le parti,
:Quand de nos jeunes ans l'éclat est amorti ;
::Cela sert à couvrir de fâcheuses disgrâces.
:Je ne dis pas qu'un jour je ne suive vos traces ;
:L'âge amènera tout ; et ce n'est pas le temps,
:Madame, comme on sait, d'être prude à vingt ans.
;ARSINOÉ
:Certes, vous vous targuez d'un bien faible avantage,
:Et vous faites sonner terriblement votre âge.
:Ce que de plus que vous on en pourrait avoir,
:N'est pas un si grand cas pour s'en tant prévaloir ;
:Et je ne sais pourquoi votre âme ainsi s'emporte,
:Madame, à me pousser de cette étrange sorte.
;CÉLIMÈNE
:Et moi, je ne sais pas, madame, aussi pourquoi
:On vous voit en tous lieux vous déchaîner sur moi.
:Faut-il de vos chagrins sans cesse à moi vous prendre ?
:Et puis-je mais des soins qu'on ne va pas vous rendre ?
:Si ma personne aux gens inspire de l'amour,
:Et si l'on continue à m'offrir chaque jour
:Des vœux, que votre cœur peut souhaiter qu'on m'ôte,
:Je n'y saurais que faire, et ce n'est pas ma faute ;
:Vous avez le champ libre, et je n'empêche pas
:Que, pour les attirer, vous n'ayez des appas.
;ARSINOÉ
:Hélas ! et croyez-vous
*que l'on se mette en peine
:De ce nombre d'amants dont vous faites la vaine
*Et qu'il ne nous soit pas fort aisé de juger
:À quel prix aujourd'hui l'on peut les engager ?
*Pensez-vous faire croire, à voir comme tout roule,
:Que votre seul mérite attire cette foule ?
*Qu'ils ne brûlent pour vous que d'un honnête amour,
*Et que pour vos vertus, ils vous font tous la cour ?
:On ne s'aveugle point par de vaines défaites,
:Le monde n'est point dupe ; et j'en vois qui sont faites
:À pouvoir inspirer de tendres sentiments,
:Qui chez elles pourtant ne fixent point d'amants ;
:Et de là nous pouvons tirer des conséquences,
*Qu'on n'acquiert point leurs cœurs sans de grandes avances ;
*Qu'aucun, pour nos beaux yeux, n'est notre soupirant,
*Et qu'il faut acheter tous les soins qu'on nous rend.
:Ne vous enflez donc pas d'une si grande gloire
:Pour les petits brillants d'une faible victoire ;
:Et corrigez un peu l'orgueil de vos appas,
:De traiter pour cela les gens de haut en bas.
:Si nos yeux enviaient les conquêtes des vôtres,
:Je pense qu'on pourrait faire comme les autres,
:Ne se point ménager, et vous faire bien voir
:Que l'on a des amants quand on en veut avoir.
;CÉLIMÈNE
:Ayez-en donc, madame, et voyons cette affaire ;
:Par ce rare secret efforcez-vous de plaire ;
:Et sans…
;ARSINOÉ
:Brisons, madame, un pareil entretien,
:Il pousserait trop loin votre esprit et le mien ;
:Et j'aurais pris déjà le congé qu'il faut prendre
:Si mon carrosse encore ne m'obligeait d'attendre.
;CÉLIMÈNE
:Autant qu'il vous plaira vous pouvez arrêter,
:Madame, et là-dessus rien ne doit vous hâter.
:Mais, sans vous fatiguer de ma cérémonie,
:Je m'en vais vous donner meilleure compagnie ;
:Et monsieur, qu'à propos le hasard fait venir,
:Remplira mieux ma place à vous entretenir.
:Alceste, il faut que j'aille tenir un mot de lettre
:Que, sans me faire tort, je ne saurai remettre.
:Soyez avec Madame : elle aura la bonté
:D'excuser aisément mon incivilité.
!!!!fin
!!LE PETIT PRINCE ET LE RENARD
!!!!CHAPITRE XXI
`Le renard apparut :`
;Le Renard
: Bonjour.
;Le Petit Prince
://^^Se retourne mais ne voit rien. Poliment^^// Bonjour,
;Le Renard
://^^Sous le pommier^^// Je suis là.
;Le Petit Prince
:Qui es-tu ? Tu es bien joli...
;Le Renard
:Je suis un renard.
;Le Petit Prince
:Viens jouer avec moi. Je suis tellement triste...
;Le Renard
:Je ne puis pas jouer avec toi. Je ne suis pas apprivoisé.
;Le Petit Prince
:Ah! pardon.
//^^Mais, après réflexion^^//
;Le Petit Prince
:Qu'est-ce que signifie "//apprivoiser//" ?
;Le Renard
:Tu n'es pas d'ici, que cherches-tu ?
;Le Petit Prince
:Je cherche les hommes. Qu'est-ce que signifie "//apprivoiser//" ?
;Le Renard
:Les hommes, ils ont des fusils et ils chassent. C'est bien gênant ! Ils élèvent aussi des poules. C'est leur seul intérêt. Tu cherches des poules ?
;Le Petit Prince
:Non. Je cherche des amis. Qu'est-ce que signifie "//apprivoiser//" ?
;Le Renard
:C'est une chose trop oubliée. Ça signifie "//créer des liens..//."
;Le Petit Prince
:Créer des liens ?
;Le Renard
:Bien sûr. Tu n'es encore pour moi qu'un petit garçon tout semblable à cent mille petits garçons. Et je n'ai pas besoin de toi. Et tu n'as pas besoin de moi non plus. Je ne suis pour toi qu'un renard semblable à cent mille renards. Mais, si tu m'apprivoises, nous aurons besoin l'un de l'autre. Tu seras pour moi unique au monde. Je serai pour toi unique au monde...
;Le Petit Prince
:Je commence à comprendre. Il y a une fleur... je crois qu'elle m'a apprivoisé...
;Le Renard
:C'est possible. On voit sur la Terre toutes sortes de choses...
;Le Petit Prince
:Oh! ce n'est pas sur la Terre, dit le petit prince.
//^^Le renard parut très intrigué :^^//
;Le Renard
:Sur une autre planète ?
;Le Petit Prince
:Oui.
;Le Renard
:Il y a des chasseurs, sur cette planète-là ?
;Le Petit Prince
:Non.
;Le Renard
:Ça, c'est intéressant ! Et des poules ?
;Le Petit Prince
:Non.
;Le Renard
://^^soupirant^^// Rien n'est parfait.
//^^Mais le renard revint à son idée:^^//
;Le Renard
:Ma vie est monotone. Je chasse les poules, les hommes me chassent. Toutes les poules se ressemblent, et tous les hommes se ressemblent. Je m'ennuie donc un peu. Mais, si tu m'apprivoises, ma vie sera comme ensoleillée. Je connaîtrai un bruit de pas qui sera différent de tous les autres. Les autres pas me font rentrer sous terre. Le tien m'appellera hors du terrier, comme une musique. Et puis regarde ! Tu vois, là-bas, les champs de blé ? Je ne mange pas de pain. Le blé pour moi est inutile. Les champs de blé ne me rappellent rien. Et ça, c'est triste ! Mais tu as des cheveux couleur d'or. Alors ce sera merveilleux quand tu m'auras apprivoisé ! Le blé, qui est doré, me fera souvenir de toi. Et j'aimerai le bruit du vent dans le blé...
//^^Le renard se tut et regarda longtemps le petit prince:^^//
;Le Renard
:S'il te plaît... apprivoise-moi !
;Le Petit Prince
:Je veux bien, mais je n'ai pas beaucoup de temps. J'ai des amis à découvrir et beaucoup de choses à connaître.
;Le Renard
:On ne connaît que les choses que l'on apprivoise. Les hommes n'ont plus le temps de rien connaître. Ils achètent des choses toutes faites chez les marchands. Mais comme il n'existe point de marchands d'amis, les hommes n'ont plus d'amis. Si tu veux un ami, apprivoise-moi !
;Le Petit Prince
:Que faut-il faire?
;Le Renard
:Il faut être très patient. Tu t'assoiras d'abord un peu loin de moi, comme ça, dans l'herbe. Je te regarderai du coin de l'œil et tu ne diras rien. Le langage est source de malentendus. Mais, chaque jour, tu pourras t'asseoir un peu plus près...
`Le lendemain revint le petit prince.`
;Le Renard
:Il eût mieux valu revenir à la même heure. Si tu viens, par exemple, à quatre heures de l'après-midi, dès trois heures je commencerai d'être heureux. Plus l'heure avancera, plus je me sentirai heureux. A quatre heures, déjà, je m'agiterai et m'inquiéterai; je découvrirai le prix du bonheur ! Mais si tu viens n'importe quand, je ne saurai jamais à quelle heure m'habiller le cœur... Il faut des rites.
;Le Petit Prince
:Qu'est-ce qu'un rite ?
;Le Renard
:C'est aussi quelque chose de trop oublié, dit le renard. C'est ce qui fait qu'un jour est différent des autres jours, une heure, des autres heures. Il y a un rite, par exemple, chez mes chasseurs. Ils dansent le jeudi avec les filles du village. Alors le jeudi est jour merveilleux ! Je vais me promener jusqu'à la vigne. Si les chasseurs dansaient n'importe quand, les jours se ressembleraient tous, et je n'aurais point de vacances.
`Ainsi le petit prince apprivoisa le renard. Et quand l'heure du départ fut proche:`
;Le Renard
:Ah! ... Je pleurerai.
;Le Petit Prince
:C'est ta faute, je ne te souhaitais point de mal, mais tu as voulu que je t'apprivoise...
;Le Renard
:Bien sûr.
;Le Petit Prince
:Mais tu vas pleurer !
;Le Renard
:Bien sûr.
;Le Petit Prince
:Alors tu n'y gagnes rien !
;Le Renard
:J'y gagne, à cause de la couleur du blé.
//^^Puis il ajouta:^^//
;Le Renard
:Va revoir les roses. Tu comprendras que la tienne est unique au monde. Tu reviendras me dire adieu, et je te ferai cadeau d'un secret.
`Le petit prince s'en fut revoir les roses:`
;Le Petit Prince
:Vous n'êtes pas du tout semblables à ma rose, vous n'êtes rien encore. Personne ne vous a apprivoisé et vous n'avez apprivoisé personne. Vous êtes comme était mon renard. Ce n'était qu'un renard semblable à cent mille autres. Mais j'en ai fait mon ami, et il est maintenant unique au monde.
`Et les roses étaient bien gênées.`
;Le Petit Prince
:Vous êtes belles, mais vous êtes vides. On ne peut pas mourir pour vous. Bien sûr, ma rose à moi, un passant ordinaire croirait qu'elle vous ressemble. Mais à elle seule elle est plus importante que vous toutes, puisque c'est elle que j'ai arrosée. Puisque c'est elle que j'ai mise sous globe. Puisque c'est elle que j'ai abritée par le paravent. Puisque c'est elle dont j'ai tué les chenilles (sauf les deux ou trois pour les papillons). Puisque c'est elle que j'ai écoutée se plaindre, ou se vanter, ou même quelquefois se taire. Puisque c'est ma rose.
//^^Et il revint vers le renard:^^//
;Le Petit Prince
:Adieu ...
;Le Renard
:Adieu. Voici mon secret. Il est très simple: on ne voit bien qu'avec le cœur. L'essentiel est invisible pour les yeux.
;Le Petit Prince
:L'essentiel est invisible pour les yeux, répéta le petit prince, afin de se souvenir.
;Le Renard
:C'est le temps que tu as perdu pour ta rose qui fait ta rose si importante.
;Le Petit Prince
:C'est le temps que j'ai perdu pour ma rose...
;Le Renard
:Les hommes ont oublié cette vérité. Mais tu ne dois pas l'oublier. Tu deviens responsable pour toujours de ce que tu as apprivoisé. Tu es responsable de ta rose...
;Le Petit Prince
:Je suis responsable de ma rose...
`afin de se souvenir.`
.
^^6 avril 2020^^
Bonjour,
Pour vous donner une idée du mouvement et de la gaieté que je souhaite, je me suis amusé à lire les premières scènes que nous avons travaillées dans notre atelier à distance.
Ces 5 fichiers audio ne doivent pas être pris comme un "modèle", (je ne me suis même pas écouté avant de mettre en ligne) mais plutôt comme une source d'inspiration et une instigation à la vélocité vénitienne !
Comme beaucoup d'entre vous n'arrivaient pas à y accéder sur DropBox, je les ai déplacés dans le nouveau sous-dossier'' [[La Bonne Mère|https://drive.google.com/open?id=1fkjzHxq2C89QUS96WIl8vPF48v7rqe-4]]'' de notre ''[[Bibliothèque Atelier Théâtre|https://drive.google.com/drive/folders/0B6u4-mn-yHRWNFFwYXZMWHE1LU0]]''
;►
:[[LBM 1-4 Nicoletto Et Margarita|https://drive.google.com/open?id=1VfbhgbC-gR3xwEcH562hryfEfhKBfkMy]] 6'30
:[[LBM 1-8 Barbara puis Agnese|https://drive.google.com/open?id=1OxBA7MUzdghxg916F-f9qxv80Pm_Zeqj]] 12'10
:[[LBM 1-9 Lodovica et Daniela|https://drive.google.com/open?id=1rK3tqdDs4tq4csDo6IDYjWNo3XyQYxpB]] 4'40
:[[LBM 2-13 Barbara Giacomina Lunardo|https://drive.google.com/open?id=1DkfaanV7UgWVmSEmZEKfTwoGbsskJ5jW]] 1'30
:[[LBM 2-14 Giacomina et Lunardo|https://drive.google.com/open?id=1OFMIpV8nZZkZzIXDCQLoUQz_B_RC1XB-]] 2'30
```
Si vous n'êtes pas familer de la pièce, mieux vaut suivre avec le texte : soucieux de privilégier le rythme, je ne me suis pas appliqué à singulariser chaque voix.
```
!!!!!!<center>''• En fond de scène, milieu, toujours face public LA VOIX dira le contenu des pavés couleur.
• En avant-scène, à Jardin et à Cour, immobiles, debouts,MARIANNE et JOHAN, face public,
L'un peut regarder l'autre, mais dans ce prologue adressé au public jamais ils ne se regardent.''</center>
<<badge primary "Scènes de la vie conjugale d'Ingmar Bergman
retrace huit moments de la vie d'un couple,
répartis sur une vingtaine d'années.
Avant de partager ensemble le dernier,
voici un rappel de leur parcours.">>
<<badge warning"Premier moment
//UN COUPLE IDÉAL//">>
:''MARIANNE '': C'est une vie qui me convient, j'en suis assez heureuse.
:''JOHAN '': Les autres nous considéraient comme un couple idéal.
::
<<badge warning"Deuxième moment
LA POLITIQUE DE L'AUTRUCHE">>
;
:''MARIANNE'': Notre vie est découpée en petits compartiments.
:''JOHAN '': Pourquoi tout est aussi compliqué aujourd'hui ?
::
<<badge warning"Troisième moment
//FATIGUE//">>
:''JOHAN '': Pourquoi deux êtres qui vivent ensemble finissent par se fatiguer l'un de l'autre ?
:''MARIANNE '': Il y a moins de passion, mais ça pourrait être pis.
<<badge warning"Quatrième moment
INNOCENCE ET PANIQUE">>
:''JOHAN'' : Je me demande quand on a bien pu le faire, cet enfant…
:''MARIANNE '': Il ne s'agit pas de l'enfant,
mais de toi et moi.
::
<<badge warning"Cinquième moment
PAULA">>
:''JOHAN'' : Je suis tombé amoureux. Je pars demain avec elle pour Rome.
:''MARIANNE '': Tu crois que je serai toujours là à ton retour?
::
<<badge warning"Sixième moment
LA VALLÉE DE LARMES">>
:''MARIANNE '': Tu as à ce point la trouille que tu ne peux pas dire ce que tu veux toi?
:''JOHAN '': On ne peut pas se parler sans se faire du mal.
::
<<badge warning"Septième moment
LES ANALPHABETES">>
:''MARIANNE '':
L'accord de divorce a été rédigé.
Je suis libre de vivre ma vie maintenant….
:''JOHAN '': Je suis content que l'on ne soit plus obligés d'avoir de la sympathie l'un pour l'autre.
<<badge primary "Retrouvons Marianne et Johan
dans le huitième et dernier moment de la pièce ,
vingt ans après leur première rencontre …">>
!!! Trouvé dans [[http://artsalive.ca/fr/eth/actor/]]
,,Ce sont presque ces sept compétences que j'aurais listées :,,
<<<
Pour bien exercer son métier, un comédien doit posséder les compétences suivantes :
# La capacité de mettre son imagination, ses émotions et son empathie au service du rôle et du personnage
# Une bonne capacité d'écoute et de concentration
# Une voix bien posée pour plus de puissance, d'expression et de clarté
# Une grande forme physique pour un maximum de souplesse et de grâce
# Une bonne compréhension de la psychologie humaine
# L'amour des mots et une excellente maîtrise de la langue
# Une bonne capacité de lecture et l'intelligence du texte écrit
<<<
```
Téléchargez les vidéos que vous voudriez conserver : je ne laisse en ligne les vidéos de travail qu'environ une semaine !
```
!!!Mardi 19 mai
<ol style="color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 17.5px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/2p3p09yhpua0zm9/proyal%20on%202020-05-19%2012%3A51.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/2p3p09yhpua0zm9/proyal%2520on%25202020-05-19%252012%253A51.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNFiCE3IHN0PvovXdqnSH5pYYYT0OQ" style="color: rgb(17, 85, 204);">LBM19 mai - Acte I,1 - BARBARA et GIACOMINA</a></li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/pkw3zwujvza30rr/proyal%20on%202020-05-19%2012%3A58.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/pkw3zwujvza30rr/proyal%2520on%25202020-05-19%252012%253A58.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNH6lBD4J4og88En3KFyuQquO1KbMw" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte I,2 - NICOLETTO et BARBARA.</a></li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/al1vnd1h83smlmh/proyal%20on%202020-05-19%2013%3A04.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/al1vnd1h83smlmh/proyal%2520on%25202020-05-19%252013%253A04.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNGmzo3upU16OteIpzIaTIx5_EgsuQ" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte I,3 - MARGARITA et les mêmes</a></li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/evi22o8s9c2kr9z/proyal%20on%202020-05-19%2013%3A12.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/evi22o8s9c2kr9z/proyal%2520on%25202020-05-19%252013%253A12.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNHtP2Y4p-FXPSb_ow3v0z_U3SBwAw" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte I,4 - Nicoletto et Margarita.</a></li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/gwlzhwoheac5pnp/proyal%20on%202020-05-19%2013%3A20.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/gwlzhwoheac5pnp/proyal%2520on%25202020-05-19%252013%253A20.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNEx_3a2vUhg94gm7b0Lsx2U-0ECCQ" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte 1 sc 6 Barbara et Margarita</a> </li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/o4aryy0zidwuzcu/proyal%20on%202020-05-19%2013%3A32.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/o4aryy0zidwuzcu/proyal%2520on%25202020-05-19%252013%253A32.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNG2SJebVp22sZV0MC66o4moOoCPQg" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte 1 sc 6 Barbara et Margarita <détails></a> </li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/50qvgqiiwd43xep/proyal%20on%202020-05-19%2013%3A59.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/50qvgqiiwd43xep/proyal%2520on%25202020-05-19%252013%253A59.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNFlABgx5kzSdKCBoTAgRcZmsA2UKw" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte II,6 - Barbara, Agnese, Giacomina, puis Rocco</a> </li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/frfcf4ky6bkagwx/proyal%20on%202020-05-19%2014%3A32.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/frfcf4ky6bkagwx/proyal%2520on%25202020-05-19%252014%253A32.mp4?dl%3D0&source=gmail&ust=1589993956647000&usg=AFQjCNFo6sAHlM1z54sakmu7cr2LF27jKw" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte I,8 BARBARA puis AGNESE</a> (arrivée d'Isaac à 19'32", puis la suggestion de bandes desinées de Brigitte)</li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/rglfngvyhl581qj/proyal%20on%202020-05-19%2014%3A40.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/rglfngvyhl581qj/proyal%2520on%25202020-05-19%252014%253A40.mp4?dl%3D0&source=gmail&ust=1589993956648000&usg=AFQjCNEdqS9WFntGWn3xdKxrqraywhLXNA" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte I,9 - LODOVICA et DANIELA</a></li><li style="margin-left: 15px;"><a href="https://www.dropbox.com/s/8bpjs577j5g3tav/proyal%20on%202020-05-19%2014%3A54.mp4?dl=0" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://www.dropbox.com/s/8bpjs577j5g3tav/proyal%2520on%25202020-05-19%252014%253A54.mp4?dl%3D0&source=gmail&ust=1589993956648000&usg=AFQjCNF5vjqQ82b94DvSQ7lL2IohZv38qw" style="color: rgb(17, 85, 204); font-family: Arial, Helvetica, sans-serif; font-size: small;">LBM19 mai - Acte II.13 et 14 Barbara Giacomina Lunardo</a></li></ol>
| Jouez enjoués !<br>Égayez gais !<br>Toujours du rythme !<br>Pas de gazon entre les répliques ! |h
::''Vendredi'' : Plaisir de Dire
::''Lundi'' : Italiennes, exercices de diction et travail sur les expressions et les ruptures
::''Mardi'' : filages et démonstration de nos nouveaux progrès !
'',,Jacques,,''
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
<!DOCTYPE html>
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta charset="UTF-8" />
<title></title>
<style type="text/css">
.tm20 {
color:#0B5394;
font-size:10.5pt;
font-family:"Arial Narrow";
}
.tm22 {
font-style:italic;
color:#4472C4;
font-size:14.0pt;
font-family:"Arial";
}
.tm23 {
color:#4472C4;
font-size:14.0pt;
font-family:"Arial";
}
</style>
<meta name="author" content="Michele Turbé" />
</head>
<body>
<p class="Normal_Web_ tm11 tm12"><strong><span class="tm13"> LA FEMME JUIVE</span></strong></p>
<p class="Normal_Web_ tm11 tm14"><span class="tm15"></span><strong><u><a href="https://www.amazon.fr/Grande-peur-misère-IIIe-Reich/dp/2851818449/ref=as_li_ss_tl?s=books&ie=UTF8&qid=1496258937&sr=1-1&keywords=grand+peur+et+misère+du+troisième+reich&linkCode=ll1&tag=lacompaffa-21&linkId=79dc9f40a8e07f2dd48c8250c5bad4cf"><span
class="tm13">Grand-peur et misère du IIIème Reich – Bertold Brecht</span></a><span class="tm13"> (1898 – 1956)</span></u></strong></p>
<p class="Normal_Web_ tm11 tm16"><span class="tm17"> </span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> Voyez venir là-bas ceux</span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> Auxquels il a pris leurs femmes</span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> On les accouple avec des Aryennes.</span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> À quoi sert de maudire et de plaindre ?</span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> Ils étaient sortis de la race.</span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><span class="tm20"> Il les y fait rentrer.</span></p>
<p class="Normal tm11 tm18"><span class="tm19"> </span></p>
<p class="Normal tm11 tm18"><span class="tm19"></span><em><span class="tm21"> Francfort, 1935. C'est le soir. Une femme fait ses bagages. Elle choisit ce qu'elle prendra avec elle. De temps en temps elle reprend
quelque chose de la valise et le remet à sa place dans la chambre, afin de pouvoir prendre autre chose à la place. Longtemps elle hésite à prendre avec elle une grande photographie de son mari,
posée sur la commode. Elle finit par laisser l'image à sa place. Faire ses bagages la fatiguée, et elle s'assied un moment sur la valise, la tête posée sur la main. Puis elle se
lève et téléphone.</span></em><span class="tm19"><br /><br />LA FEMME. lci Judith Keith. C'est vous, Docteur? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">– </span><em><span class="tm22">Oui, bonsoir, Chère Amie.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Bonsoir. Je voulais juste vous appeler pour vous dire de chercher un nouveau partenaire de bridge, parce que je vais partir en voyage, </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Comment cela ?</span></em><span
class="tm23"> </span><em><span class="tm22">Vous partez en voyage ? Vous partez pour très longtemps ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, pas si longtemps, mais tout de même quelques semaines, je pense. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Ah bon ! Et où allez-vous ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je vais à Amsterdam. – </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Oh oui, le temps est beaucoup plus doux que chez nous.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, le printemps est très beau là-bas, à ce qu’on dit, </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Vous avez des amis là-bas…. un ami ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- J’ai des amis là-bas. Non, au pluriel, même si vous ne me croyez pas. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Oh ! Chère Amie, qu’allez-vous imaginer ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Comment allez-vous faire pour le bridge ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Je ne sais pas, je n’ai pas encore réfléchi</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Mais cela fait déjà deux semaines que nous ne jouons pas. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Le temps passe vite, il fait trop froid, on ne sait plus où on en est.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, il y a eu le rhume de Fritz. Avec un froid pareil, on ne peut plus jouer au bridge, je suis d'accord ! </span></p>
<p class="Normal tm11 tm18"><span class="tm23">-</span><em><span class="tm22"> Vous vous moquez ? Vous pensez que nous sommes en froid ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Mais non, docteur, comment pourrais-je? </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Vous savez que nous avons beaucoup d’affection pour vous.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- En plus, Thekla avait sa mère en visite. Je sais. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Vous pensez que nous cherchons des excuses pour vous éviter ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Comment pourrais-je penser une chose pareille ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Ce voyage, c’était imprévu ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, c'était prévu, c'est juste que j'ai toujours reporté et maintenant je dois vraiment... </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Alors, il va falloir vraiment cesser de se voir, de sortir ensemble quelques temps.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, il faudra aussi dire adieu à nos sorties au cinema, saluez Thekla pour moi. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Je n’y manquerai pas</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Pensez éventuellement à téléphoner à Fritz le dimanche ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">– </span><em><span class="tm22">Bien sûr.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Alors, au revoir ! </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Au revoir et à bientôt, j’espère</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, bien sûr, avec plaisir l </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Au revoir</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Adieu !<br /><br /></span><em><span class="tm21">Elle raccroche et fait un autre numéro.</span></em><span
class="tm19"><br /><br />Ici Judith Keith. Je voudrais parler à Madame Schöck. </span></p>
<p class="Normal tm11 tm18"><span class="tm19">- Lotte ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Oui,</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je voulais te dire adieu en vitesse, je pars en voyage quelque temps. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Comment ça ? Tout d’un coup tu pars ? Tu es déjà prête à partir,
il ne te manque rien ?</span></em></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm19">- Bien sûr, j'ai tout ce qu'il me faut, </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Mais, qu’est-ce qui te pousse à partir ?</span></em></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm19">- Je voudrais juste voir quelques visages nouveaux. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">– Tu ne supportes plus la vie ici ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, <br /> qu'est-ce que je voulais dire, mardi prochain, Fritz reçoit le professeur à dîner, </span></p>
<p class="Normal tm11 tm18"><span class="tm19">  vous pourriez peut-être venir vous aussi, </span></p>
<p class="Normal tm11 tm18"><span class="tm19">  moi je pars cette nuit, comme je te l'ai dit. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Dîner quand ? mardi ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, mardi. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Tu veux éviter de rencontrer le Professeur ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, </span></p>
<p class="Normal tm11 tm18"><span class="tm19">  je voulais juste te dire que je pars cette nuit, ça n'a absolument rien à voir, j'ai pensé que du coup vous aussi vous pourriez venir dîner,
mardi prochain. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Venir dîner sans que tu sois là ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Bon, alors disons : bien que je ne sois pas là, d'accord ? </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Tu veux dire qu’il ne faudra plus que nous dinions avec toi ? Tu sais bien que ce n’est pas notre manière d’agir.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Mais je sais bien que vous n'êtes pas comme ça, et même si vous l'étiez, ce sont des temps mouvementés et tout le monde fait attention,
donc vous venez ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Il faut que je demande à Max.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Ça dépend de Max ? Je suis sûre qu'il pourra, le professeur sera là, dis-lui. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Bon, je lui dirai.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je dois raccrocher maintenant. Alors, adieu!<br /><br /></span><em><span
class="tm21">Elle raccroche et fait un autre numéro.</span></em><span class="tm19"><br /><br />C'est toi, Gertrud ? C'est Judith. Excuse-moi de te déranger. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Mais tu ne me déranges pas.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Merci. Je voulais te demander de t'occuper de Fritz, je pars en voyage quelques mois. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">M’occuper de Fritz, mais pourquoi ? Il peut s’occuper de lui tout seul, non ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je me suis dit, tu es sa sœur... Pourquoi ne voudrais-tu pas ? </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Il pensera que je veux prendre ta place</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Personne ne pensera ça, et surtout pas Fritz. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">On sait que nous n’avons jamais eu beaucoup d’atomes crochus ...</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Bien sûr, il sait que nous - ne nous entendions pas très bien, mais... </span></p>
<p class="Normal tm11 tm18"><span class="tm19">  Alors il t'appellera tout à l’heure, si tu veux bien... </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Dis-lui que tu m’as demandé de m’occuper de lui.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, je lui dirai. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Qu’est-ce qu’il faut faire dans l’appartement ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Tout est à peu près en ordre, tu sais que l'appartement est un peu grand. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Je ne changerai rien.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Pour son bureau, laisse faire Ida, elle sait. C'est une fille assez intelligente, je trouve, et il s'est habitué à elle. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Bon, tant mieux.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Encore autre chose : ne le prends pas mal, s`il te plaît, mais tant qu'il n`a pas mangé, il n'aime pas trop parler, tu y penseras ? Je devais toujours me
retenir. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">On verra, on verra. </span></em></p>
<p class="Normal tm11 tm18"><em><span class="tm22">  Et toi, qu’est-ce que tu vas devenir ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je préférerais ne pas discuter de ça maintenant, mon train part bientôt, je n'ai pas fini de faire mes valises, tu sais. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Bon, excuse-moi.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Occupe-toi bien de ses costumes et rappelle-lui qu'il doit aller chez le tailleur, il a commandé un manteau, et veille aussi à ce que sa chambre soit bien
chauffée, il dort toujours la fenêtre ouverte et il fait très froid. </span></p>
<p class="Normal tm11 tm18"><span class="tm23">- </span><em><span class="tm22">Ça l’endurcit ! Il y en a besoin en ce moment. </span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, je ne crois pas qu'il doive s'endurcir, mais maintenant je dois raccrocher. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Je ferai ce que tu me demandes.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je te remercie beaucoup, Gertrud, et écrivons-nous de temps à autre. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Fais attention à toi..</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Adieu.<br /><br /></span><em><span class="tm21">Elle raccroche et fait un nouveau numéro.</span></em><span
class="tm19"><br /><br />Anna? C'est Judith, écoute, je m'en vais. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Tu as bien réfléchi ? Tu ne vas pas regretter ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, c'est comme ça, ça devient trop dur. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- C’est difficile en ce moment. </span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Trop dur!</span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Tu as parlé à Fritz, il est d’accord ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19"> - Oui, non, Fritz n`est pas d'accord, il n’est pas encore au courant, j'ai juste fait mes valises. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Fritz ne va pas pouvoir supporter cela.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je ne crois pas. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Il va s’y opposer.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Je ne crois pas qu`il dira grand-chose. C'est juste trop dur pour lui déjà à l’extérieur. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Il va te rejoindre ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Là-dessus on n'a rien convenu. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Tu pars seule et tu ne sais pas s’il te rejoint ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Mais on n'en a jamais parlé, jamais ! </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">Je ne le reconnais plus dans ce que tu dis...</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Non, il n'a pas changé, au contraire. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Il pense que les choses vont s’arranger ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- J'aimerais que vous vous occupiez un peu de lui, les premiers temps. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm23">- </span><em><span class="tm22">En semaine, on ne peut pas. Le dimanche ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Oui, le dimanche surtout, et dites-lui de déménager. </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Il va être seul maintenant ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- L`appartement est trop grand pour lui. J`aurais bien voulu passer te dire adieu, mais tu sais, le gardien d`immeuble ! </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Oui, je comprends. On peut se retrouver quelque part ?</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Alors, adieu, non, ne viens pas à la gare, surtout pas! </span></p>
<p class="Normal tm11 tm18"><em><span class="tm22">- Bon, au revoir, Judith.</span></em></p>
<p class="Normal tm11 tm18"><em><span class="tm22"></span></em><span class="tm19">- Adieu, je t'écrirai.<br /></span><em><span
class="tm22">- Adieu. N’oublie pas !</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19">- Bien sûr.</span></p>
<p class="Normal tm11 tm18"><span class="tm19"><br /></span><em><span class="tm21">Elle raccroche et ne fait plus de numéros. Elle a fumé une cigarette. Maintenant elle brûle le carnet où elle cherchait
les numéros de téléphone. Elle fait quelques allées et venues. Puis elle commence à parler* Elle prépare le petit discours qu'elle va tenir à son mari. On voit qu' il
est assis sur une chaise.</span></em></p>
<p class="Normal tm11 tm18"><span class="tm19"> </span></p>
<p class="Normal tm11 tm18"><span class="tm19"> </span></p>
<p class="Normal tm11 tm18"><span class="tm19"> </span></p>
</body>
</html>
!!Les trois temps d'une impro
!!!!Fondamentaux d'une histoire
Toute histoire mise en scène comporte ces trois fondamentaux :
<<<
# Une transformation ,,la situation finale n'est plus identique à celle du début , il y eu un ''changement''.,,
# La relation : ,,ce qui capte l'attention du public est ce qui se passe entre les personnages (les personnages sont toujours sur scène pour être changés - quelque peu - l'un par l'autre). ,,
# La réincorporation ,,qui réintègre dans la situation finale les détails du début qui restent inchangés pour mettre en valeur ce qui a été modifié dans le nouvel état d'équilibre.,,
<<<
!!!!Le jeu des comédiens :
;1. Installer la plateforme
: Représenter la situation "habituelle" via laquelle connecter les spectateurs aux personnages.
;2. Mettre en relief la bascule
: le déclencheur qui provoque un changement qui va modifier les enjeux relationnels.
;3. Manifester les tensions
: les jeux relationnels dont l'intensité croit au fur et à mesure que les enjeux s'élèvent et transforment les personnages, jusqu'à la résolution heureuse ou malheureuse.
!!Les Zébrides
^^//ON PURGE BÉBÉ Georges Feydeau //^^
>//Surgissant en trombe par la porte, pan coupé. Tenue de souillon ; peignoir-éponge dont la cordelière non attachée traîne par ; petit jupon de soie sur la chemise de nuit qui dépasse par en bas : bigoudis dans, les cheveux ; bas tombant sur les savates. Elle tient ses affaires de toilette à la main.
`Par exemple son Vanity et une serviette ou un sac à bigoudis !` .//
;JULIE
: Alors, quoi ? Tu ne peux pas te déranger ? Non ?
;FOLLAVOINE
:`fébrilement plongé dans son dictionnaire`
: Ah! Je t’en prie, n’entre donc pas toujours comme une bombe!…
:`Elle s'approche de lui, et jette plutôt qu'elle ne pose sa serviette (ou son sac à bigoudis) sur la table. Il crie :`
:Ah!
;JULIE
: `Fausse excuse : elle l'a fait exprès` Oh! Pardon!
:`Avec un sourire grinçant :` Tu ne peux pas te déranger ? Non ?
;FOLLAVOINE
: Eh bien! Et toi ? Pourquoi faut-il que ce soit moi qui me dérange plutôt que toi ?
;JULIE
: C’est juste! C’est juste!
:`Elle singe une posture de soumission :` Nous sommes mariés, alors!…
;FOLLAVOINE
: Quoi ? Quoi ? Quel rapport ?…
;JULIE
: `Gros soupir` Ah! Je serais seulement la femme d’un autre, il est probable que...
:`Faire comme si elle allait dire : «//il est probable que j'aurais un mari plus complaisant !//» avant d'être interrompue.` !…
;FOLLAVOINE
: Ah! Laisse-moi donc tranquille! Je suis occupé, v’là tout!
;JULIE
: Occupé! Monsieur est occupé! C’est admirable!
;FOLLAVOINE
: Oui, occupé!
:`Maintenant c'est son vanity (ou le reste de ses affaires qu'elle pose sur la table ! Il crie :`
:Ah!
;JULIE
: Quoi ?
;FOLLAVOINE
: Ah çà! Tu es folle ? Tu m’apportes ((toute tes affaires(^//au lieu de ://<br>ton seau de toilette))) ici, à présent ?
;JULIE
: Quoi, ((mes affaires(^//au lieu de ://<br>“mon seau”))) ? Où ça, ((mes affaires(^//au lieu de ://<br>“mon seau”))) ?
;FOLLAVOINE
: Ça!
;JULIE
: Ah! Là! ((C'est mon Vanity !(^//au lieu de ://<br>“C’est rien. C’est mes eaux sales.")))
;FOLLAVOINE
: Qu’est-ce que tu veux que j’en fasse ?
;JULIE
: Mais c’est pas pour toi! ((C'est pour me pomponner(^//au lieu de ://<br>C’est pour les vider.)))
;FOLLAVOINE
: Ici ?
;JULIE
: Mais non, pas ici! Que c’est bête ce que tu dis-là ! Je n’ai pas l’habitude de me ((pomponner(^//au lieu de ://<br>vider mes eaux))) dans ton cabinet de travail ; j’ai du tact.
;FOLLAVOINE
: Alors, pourquoi ((tu me le mets là(^//au lieu de ://<br>me les apportes-tu))) ?
;JULIE
: Mais pour rien! Parce que ((j'allais finir ma toilette(^//au lieu de ://<br>j’avais le seau en main pour aller le vider))) quand Rose est venue me rapporter ta charmante réponse : alors, pour ne pas te faire attendre…
;FOLLAVOINE
: Tu ne pouvais pas le laisser à la porte ?
;JULIE
: Ah! Et puis tu m’embêtes ! Si ça te gêne tant, tu n’avais qu’à te déranger quand je te demandais de venir ; mais Monsieur était occupé !
:`Elle passe derrière lui et se penche pour essayer de voir à quoi il est occuppé` à quoi ? Je te le demande.
;FOLLAVOINE
: À des choses, probable !
;JULIE
: `Un peu ahurie de le voir plongé dans un dictionnaire, lui qui ne lit jamais !`
:Quelles ?
;FOLLAVOINE
: Eh! bien, des choses… Je cherchais “Îles Hébrides” dans le dictionnaire.
;JULIE
: Îles Hébrides ! T’es pas fou ? Tu as l’intention d’y aller ?
;FOLLAVOINE
: On, je n’ai pas l’intention!
;JULIE
: Alors, qu’est-ce que ça te fait ?, En quoi ça peut-il intéresser un fabricant de porcelaine de savoir où sont les Hébrides ?
;FOLLAVOINE
: Si tu crois que ça m’intéresse! Ah! bien!… je te jure que si c’était pour moi!… Mais c’est pour Bébé. Il vous a de ces questions! Les enfants s’imaginent, ma parole! que les parents savent tout!… “Papa, où c’est les Hébrides ? Quoi ? Où c’est les Hébrides, papa ?” Oh! J’avais bien entendu! J’avais fait répéter à tout hasard… “Où c’est, les Hébrides” ? Est-ce que je sais, moi! Tu sais où c’est, toi ?
;JULIE
: `Elle se lance` Bien oui, c’est…
:`Elle se trouble` J’ai vu ça quelque part, sur la carte ;
:`Elle évacue` je ne me rappelle pas où.
;FOLLAVOINE
: Eh! Aussi est-ce qu’on devrait encore apprendre la géographie aux enfants à notre époque ?…
;JULIE
: Quoi ? Quoi ? Quel rapport ?
;FOLLAVOINE
: Mais absolument! Est-ce que, quand tu as besoin d’une ville, tu vas la chercher dans la géographie ? Non, tu cherches dans l’indicateur! Eh! Ben, alors!…
;JULIE
: Mais alors, ce petit ? Tu ne l’as pas aidé ? Tu l’as laissé dans le pétrin ?
;FOLLAVOINE
: Bédame! Comment veux-tu ? C’est-à-dire que, j’ai pris un air profond, renseigné ; celui du monsieur qui pourrait répondre mais qui ne veut pas parler et je lui ai dit : “Mon enfant, si c’est moi qui te montre, tu n’as pas le mérite de l’effort ; essaye de trouver, et si tu n’y arrives pas, alors je t’indiquerai”.
;JULIE
: `Moqueuse` Oui, vas-y voir!
;FOLLAVOINE
: Je suis sorti de sa chambre avec un air détaché ; et, aussitôt la porte refermée, je me suis précipité sur ce dictionnaire, persuadé que j’allais trouver! Ah! bien, oui, je t’en fiche! Nibe.
;JULIE
: Dans le dictionnaire ?
:`Elle s'assied, et lui prend le dictionnaire.` Allons, voyons! Voyons!…
;FOLLAVOINE
: Oh! Tu peux regarder!… Non! Vraiment, tu devrais bien dire à mademoiselle de ne pas farcir la cervelle de ce petit avec des choses que les grandes personnes elles-mêmes ignorent… et qu’on ne trouve seulement pas dans le dictionnaire..
;JULIE
: `Elle écarquille les yeux` Ah çà! Mais!… mais!…
;FOLLAVOINE
: Quoi ?
;JULIE
: `Le regardant avec commisération` C’est dans les Z que tu as cherché ça ?
;FOLLAVOINE
: Hein ?… mais… oui…
;JULIE
: `Rire vachard.` Dans les Z, les Hébrides ? Ah! bien, je te crois que tu n’as pas pu trouver.
;FOLLAVOINE
: Quoi ? C’est pas dans les Z ?
;JULIE
: `À la cantonnade` Il demande si c’est pas dans les Z!
;FOLLAVOINE
: C’est dans quoi, alors ?
;JULIE
: `Tendresse apitoyée` Ah! Porcelainier, va!… Tiens, tu vas voir comme c’est dans les Z. `Elle va aux pages des "E"` Euh!…
:`Elle fait défiler son doigt.` “Ébraser, Èbre, Ébrécher…” C’est dans les E, voyons! “… Ébriété, ébroïcien, ébro..”
:`Elle s'arrête,interloquée` Tiens! Comment ça se fait ?
;FOLLAVOINE
: Quoi ?
;JULIE
: `Un peu dépitée` Ça n’y est pas!
;FOLLAVOINE
: Ah! Ah! Je ne suis pas fâché!… Toi qui veux toujours en savoir plus que les autres!…
;JULIE
: Je ne comprends pas : ça devrait être entre “ébrécher” et “ébriété”.
;FOLLAVOINE
: Quand je te dis qu’on ne trouve rien dans ce dictionnaire! Tu peux chercher les mots par une lettre ou par une autre, c’est le même prix! On ne trouve que des mots dont on n’a pas besoin!
;JULIE
: C’est curieux!
;FOLLAVOINE
: Tout de même, je vois que la “porcelainière” peut aller de pair avec le “porcelainier”.
;JULIE
: `Piquée au vif` En tous cas j’ai cherché dans les E ;
:`Vengeuse` c’est plus logique que dans les Z.
;FOLLAVOINE
: Ah! Là, là! “Plus logique dans les E”! Pourquoi pas aussi dans les H ?
;JULIE
: `Se moquant` “Dans les H… dans les H…”! Qu’est-ce que ça veut dire ça, “dans les H” ?
:`Inspiration subite` Mais, au fait… dans les H… pourquoi pas ?…
:`Joyeuse` mais oui : “Hébrides… Hébrides”, il me semble bien que ?… oui!
:`Elle tourne fébrilement les pages pour aller aux "H"` H!… H… H…
;FOLLAVOINE
: Quoi, “achachache” ?
;JULIE
: `Arrivée à la bonne page, toute excitée` “Hèbre, Hébreux, Hébrides”! Mais oui, voilà : “Hébrides”, ça y est!
;FOLLAVOINE
: Tu l’as trouvé ? `((Dans son mouvement, il se prend les pieds dans ses affaires posées par terre(^//au lieu de ://<br>il est allé donner du pied contre le seau qu’il n’a pas vu.//)))`
:`Avec rage.` Ah! là, voyons!
;JULIE
: En plein : `Elle déchiffre comme une écolière :` “Hébrides, îles qui bordent l’Ecosse au nord”.
;FOLLAVOINE
: Eh! bien, voilà!
;JULIE
: Et dire qu’on cherchait dans les “E” et dans les “Z”…
;FOLLAVOINE
: On aurait pu chercher longtemps!
;JULIE
: Et c’était dans les “H”!
;FOLLAVOINE
: Qu’est-ce que je disais!
;JULIE
: Comment, “//ce que tu disais//”!
;FOLLAVOINE
: Eh! Ben, oui, quoi ? C’est peut-être pas moi qui ai dit : “//Pourquoi pas dans les H ?//”
;JULIE
: Pardon! Tu l’as dit!… tu l’as dit… ironiquement.
;FOLLAVOINE
: Ironiquement! En quoi ça, ironiquement ?
;JULIE
: Absolument! Pour te moquer de moi : “//Ah! Pourquoi pas aussi dans les H//” ?
;FOLLAVOINE
: Ah! bien, non, tu sais!…
;JULIE
: C’est moi alors qui, subitement, ai eu comme la vision du mot.
;FOLLAVOINE
: “//Comme la vision du mot//”! C’est admirable! “//Comme la vision du mot//”! Cette mauvaise foi des femmes! Je te dis : “//Pourquoi pas dans les H ?//” Alors tu sautes là-dessus, tu fais : “//Au fait oui, dans les H, pourquoi pas ?//” Et tu appelles ça : “//avoir la vision mot//” ? Ah! bien, c’est commode!
;JULIE
: `Elle se lève comme outragée` Oh! C’est trop fort! Quand c’est moi qui ai pris le dictionnaire! Quand c’est moi qui ai cherché dedans!
;FOLLAVOINE
: `Il se dresse face à elle comme outragé` Oui, dans les E!
;JULIE
: Dans les E… dans les E __d’abord__ ; comme toi avant, dans les Z ; mais ensuite dans les H.
;FOLLAVOINE
: `L’air détaché, les yeux au plafond,` — Belle malice, quand j’ai eu dit : “//Pourquoi pas dans les H//” ?
;JULIE
: Oui, comme tu aurais dit “//Pourquoi pas dans les Q//” ?
;FOLLAVOINE
: Oh! Non, ma chère amie, non! Si nous en arrivons aux grossièretés!…
;JULIE
: Quoi ? Quoi ? Quelles grossièretés ?
;FOLLAVOINE
:`En cherchant vainement des yeux un meuble sur lequel se débarasser des affaires de Julie`
: Eh! bien, oui, oui!… bon! c’est bon!
;JULIE
: Quoi ? Qu’est-ce que tu cherches ?
;FOLLAVOINE
: Je cherche… je cherche… je cherche où mettre ça.
;JULIE
: Eh! bien, pose-le par terre.
;FOLLAVOINE
: Oui.
;JULIE
: `Grognonne` Non, tu sais, avoir l’aplomb de prétendre!…
;FOLLAVOINE
: `Excédé` Oh!… mais oui, là! Puisque c’est entendu! C’est toi qui as trouvé.
;JULIE
: `Triomphante` Mais, parfaitement, c’est moi! Il ne s’agit pas d’avoir l’air de me faire des concessions.
;FOLLAVOINE
: `La chassant de son Cabinet` Ah! Et puis, je t’en prie, en voilà assez, hein! Avec tes E, tes Z, tes H et ((ton Q ! À propos,(^//au lieu de ://<br>tes Q! C’est vrai ça! Tiens,))) tu ferais mieux d’aller t’habiller!
;JULIE
: `Prend ses cliques et ses claques, et se dirige dignement vers la sortie, Au moment de disparaître, elle lance à la cantonade :` Me dire que je n’ai pas eu la vision!…
!!!!!!RIDEAU
!!!''Les contraintes COVID ''
;Ce que nous impose le //Centre d'Action Sociale de la Ville de Paris// qui héberge nos ateliers :
*Accès à __un seul Club__
**→ Ceux qui vont pour une autre activité à Port-Royal (ou un autre Club) ne peuvent plus venir à l'Atelier Mouffetard.
* L'Atelier Mouffetard ne nous sera ouvert __que le vendredi après-midi__ :
**→ Suppression de l'Atelier du Mardi (l'après-midi nous est retirée).
**→ Pendant que la saison le permet nous nous réunirons le mardi sous le Kiosque à Musique du Jardin du Luxembourg
*En principe votre animateur (inscrit à Mouffetard) n'aura plus accès à Port-Royal le lundi. À la place je continuerai à assurer un atelier en téléconférence ([[Jitsi]]).
*[[libretheatre|https://libretheatre.fr/]]
*[[theatregratuit|http://theatregratuit.com/]]
*[[atatheatre.com/Textes|http://www.atatheatre.com/Textes.html]]
*[[theatre-contemporain|https://www.theatre-contemporain.net/]]
*[[theatre-contemporain/documents|https://www.theatre-contemporain.net/documents]]
*[[ressources-theatre|https://www.ressources-theatre.net/]]
*[[leproscenium|https://leproscenium.com/]]
*[[theatrotheque|http://www.theatrotheque.com/web/textes.php]]
*[[comediatheque Jean-Pierre Martinez|https://comediatheque.net/]]
*[[Rivoire Cartier|https://www.rivoirecartier.com/]]
*[[avantscenetheatre|https://www.avantscenetheatre.com/]]
*[[piece-de-theatre Philippe Caure|http://www.piece-de-theatre.com/]]
*[[textes-théâtre/textes|http://www.textes-théâtre.com/textes/]]
*[[textes-a-jouer-avec-vos-eleves|https://www.dramaction.qc.ca/fr/textes-a-jouer-avec-vos-eleves/textes-theatre-enfant-adolescent/]]
*[[theatrons|http://www.theatrons.com/liens.php]]
*[[troctheatre|https://troctheatre.com/category/references/textes-de-theatre/]]
*[[theatre-classique|http://theatre-classique.fr/]]
*[[droits-et-utilisations|http://www.piece-de-theatre.com/droits-et-utilisations/]]
*[[compagnie amateur demander une autorisation|https://www.sacd.fr/compagnie-amateur-demander-une-autorisation]]
*[[exercices|https://www.dramaction.qc.ca/fr/ressources/exercices/]]
;LODOVICA.
:On frappe.
;DANIELA.
:Et après ?
;LODOVICA.
:Va voir qui c'est.
;DANIELA.
:Moi, non, voyez-vous.
;LODOVICA.
:Pourquoi tu ne veux pas y aller ?
;DANIELA.
:Parce que, s'il y a quelqu'un, moi, je ne veux pas ouvrir, et je ne veux pas être malgracieuse.
;LODOVICA.
:Sale fille ! //`(Elle se dirige vers la porte.)`//
;DANIELA.
:Puisque c'est vous qui le dites.
;LODOVICA.
:J'y vais, moi, j'y vais, voir qui c'est.
;DANIELA.
:C'est ça, allez y.
;LODOVICA.
:Si au moins c'en était un qui me paie un café. //`Elle sort.`//
;DANIELA.
:C'est ça, c'est ça, qu'elle dise donc tout ce qu'elle veut, elle a bien raison. Mais elle a de la chance que je ne sois pas ce qu'elle dit, sinon... Vaut mieux que je me taise. Si j'en dis du mal, je m'émaille le nez moi-même et c'est sur ma bouche que le sang coule.
;LODOVICA, //`en rentrant.`//
:Il est là, madame sera contente.
;DANIELA.
:Qui c'est ?
;LODOVICA.
:Sior Nicoleto !
;DANIELA.
:Vous lui avez ouvert ?
;LODOVICA.
:Oui madame.
;DANIELA.
:Qui vous a dit de lui ouvrir ?
;LODOVICA.
:Moi, pour ne pas être malgracieuse.
;DANIELA.
:Et moi, voyez-vous, je suis capable d'aller m'énfermer dans ma chambre.
;LODOVICA.
:Allez, ne fais pas d'histoires, reste-là, tiens-toi comme il faut et reçois-le comme il le mérite.
;DANIELA,
:Oh ! la vieille folle.
;LODOVICA.
:Tu ris, hein ?
;DANIELA.
:Je ne devrais pas ?
;LODOVICA.
:Allez, allez, ris, sois heureuse, quelque chose finira bien par arriver !
{{▼ Lundi 13 avril - 10h00 ▼||prog}}
```
→ Les scènes par coeur seront jouées par les titulaires
→ Pour les scènes lues on pourra varier la distribution des lecteurs.
```
!!ACTE I<br>^^Complète^^
| //CHA BRI// |[[I,1 - BARBARA et GIACOMINA|La Bonne Mère I,1 - BARBARA et GIACOMINA]]| //Lecture// |
| //CHA JAC// |[[I,2 - NICOLETTO et BARBARA.|La Bonne Mère I,2 - NICOLETTO et BARBARA.]]| //Lecture// |
| //CHA JAC NAD// |[[I,3 - MARGARITA et les mêmes.|La Bonne Mère I,3 - MARGARITA et les mêmes.]]| //Lecture// |
| !//JAC NAD// |![[I,4 - Nicoletto et Margarita.|La Bonne Mère I,4 - Nicoletto et Margarita.]] |!//''`Jeu sans texte`''// |
| //NAD// |[[I,5 Margarita seule.|La Bonne Mère I,5 Margarita seule.]]| //Lecture// |
| //CHA NAD// |[[I,6 - Barbara et Margarita.|La Bonne Mère I,6 - Barbara et Margarita.]]| //Lecture// |
| //CHA NAD// |[[I,7 - Barbara, puis Margarita.|La Bonne Mère I,7 - Barbara, puis Margarita.]]| //Lecture// |
| !//CHA MIC// |![[I,8 BARBARA puis AGNESE|La Bonne Mère I,8 BARBARA puis AGNESE]] |!//''`Jeu sans texte`''//|
| !//CLO MIR// |![[I,9 - LODOVICA et DANIELA.|La Bonne Mère I,9 - LODOVICA et DANIELA.]] |!//''`Jeu sans texte`''//|
| //CLO MIR JAC// |[[I,10 Nicoletto et les mêmes.|La Bonne Mère I,10 Nicoletto et les mêmes.]]| //Lecture// |
!!ACTE II
|CHA MIC BRI ÉVE,,(JAC),,|[[II,6 - Barbara, Agnese, Giacomina,puis Rocco et le garçon|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]| //Lecture// |
|CHA MIC JAC BRI ÉVE,,(JAC),,|[[II,7 - Nicoletto et les mêmes.|La Bonne Mère II,7 - Nicoletto et les mêmes.]]| //Lecture// |
|CHA MIC JAC BRI |[[II,8 - Barbara, Agnese, Giacomina et Nicoletto|La Bonne Mère II,8 - Barbara, Agnese, Giacomina et Nicoletto.]]| //Lecture// |
|CHA BRI|[[II,9 - Barbara et Giacomina.|La Bonne Mère II,9 - Barbara et Giacomina.]]| //Lecture// |
|CHA BRI NAD |[[La Bonne Mère II,10 - Margarita et les mêmes.]]| //Lecture// |
|CHA BRI NAD LEE,,(JAC),, |[[La Bonne Mère II,11 - Lunardo et les mêmes.]]| //Lecture// |
|CHA LEE,,(JAC),, |[[II,12 - Barbara et Lunardo.|La Bonne Mère II,12 - Barbara et Lunardo.]]| //Lecture// |
|!CHA BRI LEE,,(JAC),,|![[II,13 - Giacomina et les mêmes.|La Bonne Mère II,13 - Giacomina et les mêmes.]]|!//''`Jeu sans texte`''//|
|!BRI LEE,,(JAC),,|![[II,14 - Lunardo et Giacomina.|La Bonne Mère II,14 - Lunardo et Giacomina.]]|!//''`Jeu sans texte`''//|
|BRI NAD LEE,,(JAC),,|[[II,15 - Margarita et les mêmes.|La Bonne Mère II,15 - Margarita et les mêmes.]]| //Lecture// |
<<<
.
__Justesse et vélocité :__
*Impératif : intelligibilité, entrain et justesse de ton suffisantes
*Le plus possible : vélocité et faconde italienne !
*Pas de blancs entre les répliques (sauf si justifié)
<<<
.
{{Appel Duo à 9h59 . ||_hr}}
* Si vous avez trouvé un nouveau recueil de __virelangues__,ou avez des exemples de __phrases difficiles à dire__ (soit articulation, soit souffle, soit intonation), postez-les moi.
* Si vous avez des __envies d'exercices__, indiquez-moi quel genre ou quels exemples
!!!!J'ai, pour ma part, l'intention de vous proposer des exercices d'__expression des émotions__ :
;► ayez sous les yeux cette roue des émotions qui nous servira de référence.
[img[https://s1.edi-static.fr/Img/FICHEOUTIL/2017/12/326063/365031.jpg]]
{{▼ Lundi 20 avril - 10:00 ▼||prog}}
;Mêmes scènes que [[vendredi|Vendredi 17 avril - 14h30]], mais (encore) plus rythmées et joyeuses
:→ suivi de manèges sur des fragments à perfectionner
;Ces 7 scènes avec Lunardo (pour indiquer à Lee comment je vois son rôle) :
# [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
# [[La Bonne Mère II,12 - Barbara et Lunardo.]]
# [[La Bonne Mère II,13 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
# [[La Bonne Mère II,15 - Margarita et les mêmes.]]
# [[La Bonne Mère II,16 - Lunardo et Margarita.]]
# [[La Bonne Mère II,17 - Barbara et les mêmes.]]
{{Appel Duo à 9h59. ||_hr}}
| !1. Jeu|Nouveau [[tournoi|Tournoi de virelangues]] de virelangues ,,(commme lundi dernier),,|
| !2. Exercices|Changer le sentiment et l'expression d'une réplique|
::► __Ayez le Cahier des Septuas accessible__
|[[50 Trompe-oreilles]] ,,Les exemples de Wikipedia déterrés par Michèle,,|
|[[Exercices de prononciation et de diction]] ,,''250 !'' "On en connait déjà certains. Bons essais", Brigitte,,|
| [[Les trois temps d'une impro]]<br>,,la trame de tous nos exercices d'improvisation.,, |h
{{▼ Lundi 27 avril - 10h00 ▼||prog}}
{{italiennes}}
{{manèges}}
{{Scènes en répétition}}
{{Appel Duo à 9h59. ||_hr}}
!!!1. Articulation
:[[50 Trompe-oreilles]]
:,,→ S'entraîner sur les exemples de Wikipedia déterrés par Michèle,,
!!!2. Perfectionnement du comédien
:: ''Faire vivre une réplique, sentiment et expression''
<<<
{{Exercice sur Elvire}}
<<<
::► __Ayez le Cahier des Septuas accessible__
!!Lundi 6 avril - 10h sur Duo
Nous allons commencer pour la première fois à travailler le jeu , ur les 4 scènes qui ont été choisies :
<<<
;I,4 JAC NAD
;I,8 CHA MIC
;I,9 CLO MIR
;II,13 et 14 BRI LEE (ou JAC en lecture)
<<<
Pour chaque scène je propose le déroulement suivant (env 25mn) :
# Lecture jouée par des non titulaires (y compris "invités" ne jouant pas dans La Bonne Mère)
#* Si vous avez des idées à faire passer ou à expérimenter __proposez-vous__ dès maintenant (sms ou mail)
#Discussion sur la structuration de la scène ou indications de jeu
# Première démonstration par les titulaires des rôles.
#Recensement des didascalis à préciser/corriger/ajouter-
Ayez si possible la dernière version du texte sur un deuxième support (ordinateur, tablette ou autre smartphone).
► __Je lancerai l'appel Duo à 9h59 !__
;J'ai mis à jour les didascalies de ces cinq scènes :
:[[La Bonne Mère I,4 - Nicoletto et Margarita.]]
:[[La Bonne Mère I,8 BARBARA puis AGNESE]]
:[[La Bonne Mère I,9 - LODOVICA et DANIELA.]]
:[[La Bonne Mère II,13 - Giacomina et les mêmes.]]
:[[La Bonne Mère II,14 - Lunardo et Giacomina.]]
^^(j'intégrerai elles issues des rv de Chantal et Michèle dès que je les aurai:)^^
Inscrit à Mouffetard, je ne peux plus en tant que membre de Club intervenir à Port-Royal, tant que je ne suis pas autorisé à aussi y animer.
:► Donc, pour le moment ''`L'atelier Port-Royal du lundi matin est supprimé`''
Je propose provisoirement ce substitut :
!!!!!''Les lundis à 10h'',
!!Atelier ''PLAISIR DE DIRE'' EN TÉLÉCONFÉRENCE
,,L'atelier //Plaisir de Dire// qui avait lieu le __vendredi__ remplace l'atelier Théâtre du lundi,,
| Lecture/interprétation publique de pages choisies, vers ou prose, sur un thème convenu.<br>''`Lundi 3 août : Tranches de Molière`'' ,,(2ème),, |
{{Jitsi}}
!!<center>''Ma grand-mère''
,,Pierre-Jean de Béranger
^^(1780-1857)^^,,</center>
"""
Ma grand-mère, un soir à sa fête,
De vin pur ayant bu deux doigts,
Nous disait en branlant la tête :
Que d'amoureux j'eus autrefois !"""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Quoi ! maman vous n'étiez pas sage !
— Non , vraiment ; et de mes appas
Seule à quinze ans j'appris l'usage,
Car la nuit je ne dormais pas."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Maman, vous aviez le cœur tendre ?
— Oui, si tendre, qu'à dix-sept ans
Lindor ne se fit pas attendre,
Et qu'il n'attendit pas longtemps."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Maman, Lindor savait donc plaire ?
— Oui, seul il me plut quatre mois ;
Mais bientôt j'estimais Valère,
Et fis deux heureux à la fois."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Quoi ! maman ! deux amants ensemble !
— Oui, mais chacun d'eux me trompa.
Plus fine alors qu'il ne vous semble,
J'épousais votre grand-papa."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Maman, que lui dit la famille ?
— Rien ; mais un mari plus sensé
Eût pu connaître à la coquille
Que l'œuf était déjà cassé."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Maman, lui fûtes-vous fidèle ?
— Oh ! sur cela je me tais bien.
A moins qu'à lui Dieu ne m'appelle
Mon confesseur n'en saura rien."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Bien tard, maman vous fûtes veuve
— Oui ; mais, grâce à ma gaîté,
Si l'église n'était plus neuve,
Le saint n'en fut pas moins fêté."""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""Comme vous, maman, faut il faire ?
— Hé, mes petits enfants, pourquoi,
Quand j'ai fait comme ma grand-mère,
Ne feriez-vous pas comme moi ?"""
://Combien je regrette
Mon bras si dodu,
Ma jambe bien faite,
Et le temps perdu !//
"""
!!!''Malraux 23 janvier 2020''
`Textes pouvant être préparés en un mois :`
---
* //Composer un menu d'environ 1h30,//
* //où chacun soit employé, //
* //et répétable en un mois (pour être prèts le23 janvier)//
---
;Proposition de scènes à finir de caster et à valider pour le programme
|10|Livia Brigitte|![[Dans la salle d’attente du psychanalyste]]|
|6|Mireille Jacques |![[Graphologie]]|
|15|Odile et ''?'' |!Les Carmélites|
|10|Nicole (Jacques ou Gérard ?)|![[Garde à Vue]]|
|5|Yvonne ? |!(seule au magasin ?)|
|15|Michèle Odile Mireille ?| ![[Antigone et Ismène|https://drive.google.com/open?id=0B6u4-mn-yHRWcGV2bGcxRklaTTlYMzJ2Y1hYak5jTGJOb3Rn]] (pdf) |
|25|Chantal Éveline (Gérard ou Odile) (Mireille ou Gérard) Nicole| ![[Le Malade Imaginaire - III sc 7 à 14]] |
| → Trouver une autre scène, ou une animation interactive |
---
;Options écartées du spectacle de janvier :
|15|Livia Denise |!Notre futur` → spectacle de Printemps `|
|8|Odile Jacques|!Don Juan Elvire (Acte V, Scène 2)|
|8|Gérard Jacques|!Don Juan Sganarelle (Acte I, Scène 2)|
|10|Brigitte Gérard|!Coup de Foudre|
|25|Gérard Nicole |La Peur des Coups ` → spectacle de Printemps `|
;Déjà joué à Malraux :
* Le temps des cerises
* L'Ours
* Auto-Stop
* Les Zébrides
* Assurance-Vie
* Célimène
* La Fille Bien Gardée
---
!!!Manèges
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!''<center><p style="color:red">Mardi 12 janvier 14:00 MOUFFETARD</p></center>''
!!!''Femme juive ''
* Filage (Michèle)
* Manèges sur le fragment final :<br><br>//[[7.- Dans le prochain pays où j’irai, cela ne devra plus se passer ainsi.]] // ... <br>
:::voix, sentiments exprimés, places...
!!!''[[On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]''
# Le groupe est le metteur en scène et dirige les deux comédiens,
#* parti, caractères, interactions etc.
# Lecture debout (//Mir Jac//) sous la direction du groupe
# Manèges sur fragments pour illustrer certaines indications possibles.
!!!''[[ALICE AU PAYS DES MERVEILLES - Un thé chez les fous|https://fr.www.affinibook.com/ebook/read?book_id=8671&chapter_id=7]]
''
Deux équipes de 4 : Alice, lièvre, chapelier, loir, récitant
* Recherche en improvisations de dispositif et d'interprétations avec chacune des deux équipes.
:
---
::
:::
!!!! <center>► ''[[Sélection de textes de la Compagnie AFFABLE]]''</center>
!!!<center>
<$list filter="[[Écoutons Jouvet]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
{{▼ Mardi 14 avril - 14h30 ▼||prog}}
```
Manèges partiels pour proposer des intonations ou effets de scène différents
```
|rowstable|k
|>|>|!Les scènes par coeur|
| !//JAC NAD// |![[I,4 - Nicoletto et Margarita.|La Bonne Mère I,4 - Nicoletto et Margarita.]] |!//''`Jeu sans texte`''// |
| !//CHA MIC// |![[I,8 BARBARA puis AGNESE|La Bonne Mère I,8 BARBARA puis AGNESE]] |!//''`Jeu sans texte`''//|
| !//CLO MIR// |![[I,9 - LODOVICA et DANIELA.|La Bonne Mère I,9 - LODOVICA et DANIELA.]] |!//''`Jeu sans texte`''//|
|!//CHA BRI LEE,,(JAC),,//|![[II,13 - Giacomina et les mêmes.|La Bonne Mère II,13 - Giacomina et les mêmes.]]|!//''`Jeu sans texte`''//|
|!//BRI LEE,,(JAC),,//|![[II,14 - Lunardo et Giacomina.|La Bonne Mère II,14 - Lunardo et Giacomina.]]|!//''`Jeu sans texte`''//|
!!Vos propositions de prochaines scènes à apprendre et travailler
```
Complétez dès aujourdhui le tableau ci-dessous en répondant à ce mail (nouvelles lignes ou association à une scène déjà proposée).
```
→ Je mettrai à jour sur [[la page d'accueil du Cahier|http://septuas.tiddlyspot.com/#]].
|rowstable|k
|>|>| Propositions de répétitions semaine du 13 avril |h
|| !Qui (et Qui) ? | !Proposition (Acte, Scène) |
|a|''MIC'' (CHA BRI [ÉVE],,(JAC),,)|[[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]|
|b|''BRI'' (CHA)|[[La Bonne Mère I,1 - BARBARA et GIACOMINA]]|
|c|''BRI'' (CHA)|[[La Bonne Mère II,9 - Barbara et Giacomina.]]|
|d|''JAC'' (CLO MIR)|[[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]|
|e|''JAC'' (MI)|[[La Bonne Mère III,15 - Agnese puis Nicoletto.]]|
|f|||
|g|''NAD JAC''|[[La Bonne Mère I,4 - Nicoletto et Margarita.]]|
<<<
__Objectifs de jeu :__
*Impératif : ''intelligibilité, entrain et justesse de ton suffisantes''
*Impératif : ''Pas de blancs entre les répliques (sauf si justifié)''
*Le plus possible : ''vélocité et faconde italienne !''
*Le mieux possible : ''singularisation du personnage joué''
<<<
.
{{Appel Duo à 14h29 . ||_hr}}
!!<center><p style="color:red"></p></center>
```
De quoi s'amuser et s'exercer tous ensemble !
```
;Textes d'exercice proposés :
<<<
[[LA FEMME JUIVE • Brecht]]
[[On ne badine pas avec l'amour" ,III.6|Perdican et Camille]]
[[Antigone – La Nourrice|https://compagnieaffable.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/]]
[[VIVIANE et la BARONNE|FIL À LA PATTE: VIVIANE, LA BARONNE]]
<<<
;Choral
:[[LES ANIMAUX MALADES DE LA PESTE|http://jacques.droppages.com/Dire.html#LES%20ANIMAUX%20MALADES%20DE%20LA%20PESTE]]
;La Fontaine ?
:Oui ► si pas //dit/poésie// mais __''`Joué/THÉÂTRE`''__
Je souhaite qu'on puisse perfectionner l'interaction entre les personnages, et tirer profit des contraintes de la vidéo pour travailler nos expressions.
# Je propose (Elvire à part ?) qu'on joue en gros plan (en quittant la "mosaïque" pour avoir sous les yeux l'expression de son protagoniste) les textes qu'on peut dire sans avoir à les lire, a priori ceux des italiennes.
# Je souhaite qu'on progresse par petits fragments, sans quoi on ne peut jamais revenir sur des détails et on ne procède que par jugements rétrospectifs, globaux, contestables, pas toujours plaisants. Notre travail de comédiens est d'abord un travail d'ouvrier :
#* Soit en convenant au départ des fragments <br>^^(de l'ordre de un ou deux écrans de smartphone)^^
#* Mieux, si on peut quand on est en position de public, <br>''en levant la main'' dès qu'on sent notre intérêt quelque peu décrocher, <br>et en essayant de retrouver __le détail de jeu__ précis qui a déclenché notre perte d'adhérence, <br>et si on en est capable - sans discours - de __démontrer__ une alternative que nous aurions en tête.
*► Pour ''Elvire'', je laisse à Odile (et Isaac) le soin de nous spécifier leur objectif de travail pour cet après-midi !
<<<
;,,Isaac (12:53) ►,,
:,,Dans la mesure où la technique n'est pas toujours au rendez-vous pour la voix, je souhaite qu'Odile apparaisse tête , cou, (épaules ?) visibles.,,
<<<
,,Je n'indique pas de tranches horaires.<br>A priori, nous n'aborderons pas le 2.6 avec ROCCO avant 15h15.,,
J.
!!''<center><p style="color:red">Mardi 19 janvier 14:00 MOUFFETARD</p></center>''
!!!''Femme juive ''
:Lecture / manèges :
* du début :__ ''[[Les téléphones]]''__
* et de la fin : __''[[Avec son mari]]''__
:de la __''[[Femme Juive]]''__.
!!!''Guitry''
* Travailler sous la direction du groupe les caractères des deux (ou trois?) personnages de __''[[On passe dans huit jours|On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]''__
!!!''LE PETIT PRINCE ET LE RENARD''
Tester au moins deux interprétations différentes (deux distributions), et recherche de mises en place de :
[[LE PETIT PRINCE ET LE RENARD • Saint-Exupéry]]
* Le groupe est le metteur en scène et dirige les deux comédiens,
** parti, caractères, interactions etc.
* Recherche en improvisations de dispositif et d'interprétations avec chacune des deux équipes.
:
---
::
:::
!!!!! <center>►La ''[[Sélection de textes de la Compagnie AFFABLE]]''</center>
!!!<center>
<$list filter="[[Écoutons Jouvet]tags[]sort[title]] -[[Molière]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
{{▼ Mardi 21 avril - 14h30 ▼||prog}}
;Toutes les scènes apprises ou en cours de travail (dans l'ordre)
# Jeu par les titulaires
# Manège possible sur un (ou deux) courts fragments pour chercher d'autres idées d'intonation ou de jeu sur cet exemple.
!!!!LISTE DES SCÈNES :
# [[La Bonne Mère I,1 - BARBARA et GIACOMINA]]
# [[La Bonne Mère I,4 - Nicoletto et Margarita.]]
# [[La Bonne Mère I,8 BARBARA puis AGNESE]]
# [[La Bonne Mère I,9 - LODOVICA et DANIELA.]]
# [[La Bonne Mère I,10 Nicoletto et les mêmes.]]
# [[La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
# [[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
# [[La Bonne Mère II,5 - Giacomina, qui entre en travaillant à sa broderie, et les mêmes.]]
# [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
# [[La Bonne Mère II,12 - Barbara et Lunardo.]]
# [[La Bonne Mère II,13 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
# [[La Bonne Mère II,15 - Margarita et les mêmes.]]
# [[La Bonne Mère II,16 - Lunardo et Margarita.]]
# [[La Bonne Mère II,17 - Barbara et les mêmes.]]
{{Appel Duo à 14h29. ||_hr}}
Pour préparer le programme de l'atelier de demain :
;► Nadine
:Me parait obligatoire une italienne (sans texte sous les yeux !) de [[1.4|La Bonne Mère I,4 - Nicoletto et Margarita.]] et [[1.5|La Bonne Mère I,5 Margarita seule.]] de La Bonne mère. Objectif vitesse et tac au tac des répliques (oublie provisoirement le ton)
;► Lee ,,(si tu es présent),,
:Même chose pour celles des [[scènes avec Lunardo de l'acte 2 (11 à 17)|La Bonne Mère II,11 - Lunardo et les mêmes.]] que tu auras apprises
;► Denise (avec Livia ?) ,,(si présentes),,
:Tester le travail que tu viens de faire sur l'entrée en scène de Henriette dans [[Notre Futur|NOTRE FUTUR • Feydeau]] (recueillir les observations suggestions de tous).
;► Nicole L ,,(si tu es présente),,
:Apprend une réplique du [[Défunt|Le Défunt ♦ René de Obaldia]] (juste 2 ou 3 lignes de texte) pour tester la vivacité de diction dont tu es capable sur scène :
:^^ce matin si ta voix et la tranquillité de débit de ton personnage étaient savoureuses dans l'extrait lu, cela deviendrait vite fastidieux sur la longueur de l'acte.^^
;► Odile et Isaac ,,(si vous êtes présents),,
:''Scènes de [[Don Juan]]'' → Un fragment que vous avez travaillé à nous soumettre ?
:^^Je peux me joindre à vous pour Sganarelle ou Dom Juan^^
;► Mireille, Claudine, Éveline, Chantal, Brigitte, Michèle :
```
Il me semble que le moment est venu de faire un travail plus précis que le simple lecture/filage de vos scènes :
→ Je suggère que, fragment par fragment, on commence à construire ensemble un storyboard détaillé (comme pour un film), ainsi que Brigitte le souhaitait la semaine dernière. Ce serait essentiellement un travail sur table.
► Qu'en pensez-vous ? Avez-vous d'autres idées pour progresser (en sus de continuer à apprendre le texte !)
```
► Chacune d'entre vous qu'aimeriez-vous prioritairement travailler demain ? (prévoir un fractionnement de l'ordre du quart d'heure pour pouvoir répartir le temps entre tous.
:^^(vos réponses en public sur le forum)^^
<<<
Muni de vos réponses, je pourrai vous adresser ce soir le menu de demain !
<<<
J.
!!''<center><p style="color:red">MARDI 26 JANVIER 14:00 MOUFFETARD</p></center>''
,,''Pas d'essai de costumes aujourd'hui.<br>N'apportez (éventuellement) que les éléments d'accessoires qui vous aident.'',,
!!!''<center><p style="color:red">BRECHT</p></center>''
* ''La Femme Juive dernière partie : l'entrée du mari''
** → __''[[Avec son mari]]''__
*** Recherche de partis de jeu possibles pour la scène (non-dits/gêne, tendres/bouleversés, glacé/oppressant, autres ? ....)
*** ► Interprétations selon au moins deux partis différents de la scène.
!!!''<center><p style="color:red">LE RETOUR DE LEE!</p></center>''
Lee ne pouvant être avec nous les vendredis, ménageons-nous ici un espace Lunardo/Bonne Mère !
Notre priorité sera de faire des filages (lus) de ses scènes pour dessiner et singulariser les personnages :
* ''Lunardo'' (au choix) :
** [[La Bonne Mère II,11 - Lunardo et les mêmes.]] (Barbara, Giacomina)
** [[La Bonne Mère II,12 - Barbara et Lunardo.]]
** [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
** [[La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.]] (Lodovica, Daniela, Nicoletto)
** [[La Bonne Mère III,3 - Lunardo Lodovica et Daniela]]
** [[La Bonne Mère III,4 - Lunardo et Daniela.]]
** [[La Bonne Mère III,6 - Lunardo et Lodovica.]]
** [[La Bonne Mère II,16 - Lunardo et Margarita.]]
** [[La Bonne Mère III,17 - Lodovica, Daniela puis Lunardo et les mêmes.]] (Barbara, Giacomina, Agnese, Nicoletto)
!!!''<center><p style="color:red">GUITRY</p></center>''
* ''L'auteur/metteur en scène'' :
** [[On passe dans huit jours : l’Auteur et l’Actrice • Guitry]] avec Mireille.
.
//`L'ordre pourra être adapté aux contraintes des uns ou des autres`//
;► Nadine Jacques
:Italienne (sans texte sous les yeux !) de [[1.4|La Bonne Mère I,4 - Nicoletto et Margarita.]] et [[1.5|La Bonne Mère I,5 Margarita seule.]] de La Bonne mère. Objectif vitesse et tac au tac des répliques (au détriment du jeu)
;► Lee Brigitte
:Faire le dragueur collant (lecture) dans [[La Bonne Mère II,14 - Lunardo et Giacomina.]] : amorcer le storyboard
;► Denise (avec Livia ?) ,,(si présentes),,
:Tester le travail de Denise sur l'entrée en scène de Henriette dans [[Notre Futur|NOTRE FUTUR • Feydeau]] (recueillir les observations suggestions de tous).
;► Nicole L Brigitte
:Votre court extrait déjà appris (//`bravo !`//) du [[Défunt|Le Défunt ♦ René de Obaldia]] en nous disant comment vous comptez typer chacune des deux femmes, et pour tester la vivacité de diction dont Nicole est capable (exercice de style !)
;► Odile, Jacques et Isaac (ou Éveline ?)
:[[Don Juan acte I sc 3 • Molière]] : amorcer le storyboard
;► Mireille, Claudine
:[[La Bonne Mère I,9 - LODOVICA et DANIELA.]] : amorcer le storyboard
Sauf avis différents, je propose :
;► Éveline, Chantal, Brigitte, Michèle, Noella :
:Première partie de [[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]] : amorcer le storyboard
et pour le temps restant :
;► Chantal, Michèle
: [[La Bonne Mère I,8 BARBARA puis AGNESE]] : amorcer le storyboard
Je vous proposerai en fin de matinée une démarche pour figurer, dans une première ébauche, le storyboard.
J.
{{▼ Mardi 28 avril - 14h30 ▼||prog}}
;Je propose la lecture dans la continuité des deux premiers actes :
:→ Par les titulaires pour les scènes déjà apprises (I,4 I,8 I,9 II,6 II,14 ...)
:→ //ad libitum// (!) pour les autres scènes
:;► en intercalant chemin faisant les manèges ci-dessous,
:;► en privilégiant rythme, gaieté et singularisation des caractères !
!!Les manèges
:Centrés sur ROCCO et la première scène de LUNARDO :
* [[LBM206-087-Quelle qualité vous désirez ?]]
* [[LBM206-184_Combien la coudée]]
* [[LBM206-218 Oh Ma Chère soyez bénie]]
* [[LBM206-281 Combien on vous doit]]
* [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
!!!!Utilité des manèges :
:# Équilibrer nos prises de parole, et bénéficier de l'inventivité de chacun (ton, comportements,tics, gags, etc) pour nous tenir tous mobilisés.
:# Expérimenter des interprétations différentes pour ne pas risquer chacun de nous complaire dans nos ronrons personnels !
:# Mieux percevoir les enjeux de nos comédiens protagonistes sur scène, et vivifier nos interactions réciproques.
:# Multiplier les facettes possibles des personnages et choisir quelles mettre en relief à quel moment pour le bénéfice du spectateur.
{{LBM-acte1}}
{{LBM_acte 2}}
{{Appel Duo à 14h29. ||_hr}}
!!!Mardi 28 juillet 14h30 → Atelier sous le Kiosque à Musique du Luco
<<<
* Italiennes des scènes actuellement apprises,
* Filages des scènes pour lesquelles les italiennes auront été suffisamment correctes
* Essais de variations sur des fragments (manèges)
<<<
!!!!► [[Idées pour les costumes]]
!!!► [[Grille des présences en scène]]
<br><hr>
!Mardi 31 mars - 14h30
!!!''Même procédures que lundi matin :''
:scènes en manège pour explorer la situation et les facettes des personnages, le troisième manège étant celui de"s comédiens distribués.
Je propose :
//^^(il nous manquera probablement du temps pour toutes)^^//
;Les premières scènes de LEONARDO :
* [[I,11 - LUNARDO BARBARA GIACOMINA|La Bonne Mère II,11 - Lunardo et les mêmes.]]
* [[II,12 - BARBARA et LUNARDO.|La Bonne Mère II,12 - Barbara et Lunardo.]]
* [[II,14 - LUNARDO et GIACOMINA.|La Bonne Mère II,14 - Lunardo et Giacomina.]]
* [[II,16 - LUNARDO et MARGARITA.|La Bonne Mère II,16 - Lunardo et Margarita.]]
* [[III,2 - BARBARA NICOLETTO LODOVICA DANIELA, puis LUNARDO.|La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.]]
;Et les scènes d'AGNESE, en excluant pour l'instant ses longs tête-à-têtes avec Barbara.
* [[III,11 - Agnese, Giacomina, puis Barbara.|La Bonne Mère III,11 - Agnese, Giacomina, puis Barbara.]]
* [[III,14 - Agnese et Margarita.|La Bonne Mère III,14 - Agnese et Margarita.]]
* [[III,15 - Agnese puis Nicoletto.|La Bonne Mère III,15 - Agnese puis Nicoletto.]]
;Vous êtes tous bienvenus :
*► Les comédiens de la Bonne Mère
| Brigitte - Chantal - Claudine - Lee - Michèle - Mireille - Nadine - Jacques |h
*► et tous les trois autres Duottistes de la troupe :
| Denise - Isaac - Livia |h
---
<<<
En préparant une lecture :
{{Ponctuations}}
<<<
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
Cet après-midi des extraits assez courts des mêmes scènes qu'hier pour plus faire tourner le manège :
* [[LBM104-34 Pourquoi vous ne Je demandez pas à votre mère]]
* [[LBM 108-006 AGNESE : Servante, siora Barbara]]
* [[LBM 108-124 AGNESE : Il serait capable de s'occuper d'un domaine]]
* [[LBM 108-303 AGNESE. Il va souvent chez d'autres gens, Sior Nicoletto]]
* [[LBM 109-042 Depuis que Sior Nicoletto vient ici, Sior Gasparo n'est plus le même ma fille]]
* [[LBM 109-116 On frappe Va voir qui c'est]]
et l'une des deux scènes :
# [[La Bonne Mère II,13 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
!!!!!Les MARDIS à 14h30
!!Atelier ''THEATRE ''au Luxembourg
^^On ne nous donne plus, pour l'intant, accès au Club Mouffetard pour l'atelier Théâtre"^^
;L'Atelier est déplacé au [[Kiosque à Musique du Jardin du Luxembourg|https://goo.gl/maps/Q4Qjxdaw73RwRA9u5]].
:Si le temps ne le permet pas, il sera remplacé par une réunion à distance [[Jitsi]],
:ou (en cas d'effectif réduit) par une réunion privée chez nous.
| !Travail de scènes :<br>→ Italiennes<br>→ Filages<br>→ Variantes d'interprétation (manèges) |
[img[https://www.ina.fr/var/ogpv3/storage/images/media/images/tendresse620/1261343-1-fre-FR/tendresse620_620x349.jpg]]
!!♫ [[La tendresse|https://www.ina.fr/contenus-editoriaux/articles-editoriaux/1969-marie-laforet-chante-la-tendresse/]]
!!!!!chanté par Marie Laforêt (1969)
"""
On peut vivre sans richesse
Presque sans le sou
Des seigneurs et des princesses
Y'en a plus beaucoup
Mais vivre sans tendresse
On ne le pourrait pas
Non, non, non, non
On ne le pourrait pas
On peut vivre sans la gloire
Qui ne prouve rien
Etre inconnu dans l'histoire
Et s'en trouver bien
Mais vivre sans tendresse
Il n'en est pas question
Non, non, non, non
Il n'en est pas question
Quelle douce faiblesse
Quel joli sentiment
Ce besoin de tendresse
Qui nous vient en naissant
Vraiment, vraiment, vraiment
Le travail est nécessaire
Mais s'il faut rester
Des semaines sans rien faire
Eh bien... on s'y fait
Mais vivre sans tendresse
Le temps vous paraît long
Long, long, long, long
Le temps vous parait long
Dans le feu de la jeunesse
Naissent les plaisirs
Et l'amour fait des prouesses
Pour nous éblouir
Oui mais sans la tendresse
L'amour ne serait rien
Non, non, non, non
L'amour ne serait rien
Quand la vie impitoyable
Vous tombe dessus
On n'est plus qu'un pauvre diable
Broyé et déçu
Alors sans la tendresse
D'un coeur qui nous soutient
Non, non, non, non
On n'irait pas plus loin
Un enfant vous embrasse
Parce qu'on le rend heureux
Tous nos chagrins s'effacent
On a les larmes aux yeux
Mon Dieu, mon Dieu, mon Dieu...
Dans votre immense sagesse
Immense ferveur
Faites donc pleuvoir sans cesse
Au fond de nos coeurs
Des torrents de tendresse
Pour que règne l'amour
Règne l'amour
Jusqu'à la fin des jours
"""
!!!!!Chanson composée en 1963 pour Bourvil<br>paroles : Noël Roux, <br>musique : Hubert Giraud
:Ensemble des rues marchandes de Venise entre la Place Saint Marc et le Campo San Bartolomeo au pied du Pont de Rialto. Elle se divise en Marzaria del-Orologio, Marzaria di San Giuliano, Marzaria di San Salvatore et Marzaria di San Bartolomeo.
!!!!!''Masque à utilisation unique''
Ce masque de protection ne remplace aucunement un masque utilisé par les personnels soignants. Son but est d’empêcher la propagation dans l’air et l’environnement de particules de salive, potentiellement contaminées par le virus. Cet écran absorbe les petites gouttelettes et évite de ce fait la contamination.
Le principe de ce masque n’est donc pas de filtrer l’air, souligne dans cette vidéo le Pr Daniel Garin, expert en risque biologique et infectieux et professeur agrégé à l'Hôpital d'instruction des armées du Val-de-Grâce.
!!Matériel nécessaire :
* Une feuille de papier essuie-tout.
* Des élastiques.
* Une agrafeuse.
!!!!!Niveau de difficulté : très facile
!!!!!Temps de réalisation : 3 minutes.
!!Les étapes à suivre :
^^//(montrées sur la vidéo à partir de la minute 2)//^^
# Lavez-vous les mains et décontaminez-les avec du gel hydroalcoolique.
# Dépliez le papier essuie-tout et pliez-le en accordéon.
# Placez un élastique à chaque extrémité et agrafez-les
{{Fabrication masque}}
__''IMPORTANT : ''__
"""
→ veillez à changer ce masque de protection dès qu'il devient humide.
→ De plus (potentiellement contaminé), il doit être jeté dans un sac plastique après décontamination avec de l’alcool ou un produit chloré.
"""
"""Le texte dialectal implique ici un double sens scabreux qu'on a essayé de suggérer.
Cela ne signifie pas que le double sens, qui est dans la langue, soit présent à l'esprit du personnage qui énonce la phrase."""
!!Médée //(Medea)//
!!!!Dario Fo
//,,Orgasme adulte échappé du zoo,,//
;Une soeur
:Courez !
:Accourez. !
:Au secours !
:Médée dans sa chambre s'est enfermée avec ses deux enfants et hurle ses cris de forcenée.
:Comme une bête hors de sens elle n'entend pas raison.
:La tarentule, dirait-on, l'a piquée.
:Les yeux lui saillent des orbites.
:Elle est toute délirante de jalousie.
:Ce n'est pas vrai que Jason son mari veuille une jeune épouse !
:Il n'est raison qui tienne pour lui faire quitter sa maison et abandonner ses enfants.
:Car Médée ne veut pas de raison.
:Parle-lui. toi. qui es notre aînée...
:
;Une soeur
:Oui. je vais lui parler. moi qui suis votre aînée.
:Médée.
:Médée, viens sur le seuil, il faut que je te parle.
:Ecoute-moi. femme. et reprends tes sens.
:Non pour toi mais pour tes enfants.
:Cette nouvelle union qui les fait entrer dans une noble famille leur vaudra meilleur destin. fines étoffes pour les vêtir. pain assuré à la table de chaque jour. nom illustre dont hériter... respect. famille nouvelle plus glorieuse :
:ils vont loger au palais du roi.
:Pour l'amour de ces enfants, sacrifie-toi, Médée!
:A 1'honneur d'être mère fais plier l'orgueil de la femme...
:Pour le bien de ta chair, consens.
:
:Car tu ne connais ni la honte ni la déchéance, toi dont le mari parle avec respect, te disant la meilleure des femmes, la plus aimante pour ses enfants et pour lui aussi... qui toujours te gardera dans son cœur.
:
:Que fais-tu, Médée ?
:Parle.
:Tu ne réponds rien.
:
:Ouvre la porte. Médée, viens à nous et parle...
:Ton sort, c'est notre souffrance et nos larmes !
:Nous aussi nos maris nous ont fait tort...
:Nous seules pouvons le comprendre.
:
:Ecartez-vous.
:Médée s'est laissé convaincre, elle se tient sur le seuil, la voici.
:
:Dieu bon, que son visage est pâle, et ses mains !
:Son sang l'a quittée.
:Soutenez-la, elle tombe...
:
:Assieds-toi sur ce siège, Médée.
:Eçartez-vous, femmes, vous l'étouffez.
:
:Silence ! elle veut parler.
:Parle, nous t'écoutons, Médée.
:
:Non, elle ne peut plus, elle a trop crié...
:Donnez-lui de l'eau à boire car ses lèvres sont desséchées.
:Voilà.
:C'est bien.
:Parle, Médée, raconte, tu en auras soulagement.
:
;Médée
:Dites-moi, mes amies, la nouvelle femme de mon mari, comment est-elle ?
:Car de loin seulement et une seule fois je l'ai vue, si belle... et si jeune, il m'a semblé.
:J'étais belle aussi, vous savez, belle et fraîche à seize ans quand Jason me connut... .
:J'avais la peau blanche et de longs cheveux noirs, les seins ronds qui gonflaient l'étoffe de la chemise... un cou sans rides et desjoues lisses, et mon ventre était ferme et plat, qui ne touchait pas la robe, et tendres les flancs comme aussi tout mon corps.
:Contre lui, quand il me serrait il craignait de le rompre et de le gâter...
:Sa main tremblait, tout entier il tremblait qu'il fût sacrilège de me faire l'amour.
:
;Une soeur
:Ce temps, Médée, nous l'avons toutes connu mais c'est le temps passé...
:À nous autres femmes il est prescrit que notre homme aura désir de chair nouvelle, peau fraîche, seins jeunes, qu'il cherchera une autre voix, une autre bouche.
:Ainsi va le monde, depuis toujours.
:
;Médée
:De quelle loi venez-vous me parler, femmes ?
:Est-ce une loi que vous avez, mes amies, écrite et pro-noncée ? proclamée ?...
:Le tambour sur la place, est-ce vous qui l'avez sonné pour faire savoir que c'est une loi sacrée ?
:Les hommes. ce sont les hommes... les hommes contre nous autres femmes l'ont écrite et prononcée et consacrée, cette loi... Consacrée par le sceau du roi !
:
;Une soeur
:Non, Médée, c'est la nature, c'est de nature que l'homme met plus longtemps à vieillir...
:L'homme avec le temps se fait et nous nous défaisons.
:Pour nous autres femmes c'est l'avachissement, pour lui la maturité pleine de saveur.
:Le pouvoir que nous perdons, il l'acquiert.
:Ainsi va le monde.
:
;Médée
:Misérables que vous êtes !
:Je vois bien, femmes, que rien n'a autant servi à l'homme que de vous avoir dressées à sa loi, enseignées à sa doctrine...
:Répéter sa leçon devient votre bonheur.
:Vous vous inclinéz au lieu de vous rebeller.
:
;Une soeur
:Se rebeller !
:Tu vois, Médée, tu vois. tu n'as de cesse que d'insulter le roi et sa loi consacrée.
:C'est raison qu°il veuille te chasser de ce pays et de ta maison.
:Calme-toi, Médée, demande qu'il te pardonne... et le roi fera que tu restes.
:
;Médée
:Rester, rester seule en ma maison... seule comme une morte, sans plus entendre ni voix ni rires... sans amour ni d'enfants ni de mari, tous partis à la fête avant de m'avoir ensevelie.
:Et je devrais me taire pour le bien de mes enfants !
:Chantage, ignoble chantage !
:Hélas, deuil et malheur sur moi...
:Femmes, mes amies, elle est terrible la pensée qui me perce le cœur et le cerveau.
:
:Je dois tuer mes enfants.
:
:Ainsi je resterai dans la mémoire comme une mère infâme et folle d'orgueil !
:Mieux vaut laisser le souvenir d'une bête féroce que d'être oubliée comme une chèvre docile, qu'on peut traire et tondre et mépri-ser, et vendre au marché sans qu'il lui échappe un bêlement.
:
:Je dois tuer mes enfants !
:
;Une soeur
:Hélas, Médée forcenée déraisonne.
:Est-ce parler en mère ou en pute possédée. en chienne enragée '?
:
;Médée
:Je ne déraisonne pas, mes soeurs...
:J'ai tant pensé et médité, puis chassé mes pensées... .
:Je me suis mordu les mains. cogné les bras aux pierres jusqu'à les rompre, afin qu'ils ne puissent me servir à blesser, égorger mes enfants.
:J'ai d'abord songé a m'ôter la vie plutôt que de supporter qu'on me chasse de ma maison. de cette terre. de ce pays. même si j'y suis étrangère... qu'on me mette sur une charrette pour m'expulser comme une infecte putain galeuse...
:Car à tous aujourd'hui, et même a vous, je suis haïssable et importune...
:Femme trahie qui se lamente, on la fuit !
:A mes enfants. dés que je serai partie, on s'efforcera de me faire oublier... disparaître, comme s'ils n'étaient pas nés d'une femme.
:Et Médée sera comme si elle n'avait jamais vu le jour. jamais grandi, ni aimé, ni embrassé, nijoui... comme si nul dans aucun lit ne l'avait étreinte.
:Médée morte avant d'être née.
:ll est bien vrai que ie suis morte, chacun m'a tuée et ensevelie...
:Comment pourrais-je me tuer de nouveau ?
:Je ne serai vivante que de la mort de mes enfants... ma chair... mon sang, ma vie.
:
;Une soeur
:Aah ! accourez tous. gens de ce pays.
:apportez des cordes assez longues pour lier serré cette mére deve-nue folle...
:Le démon s'est traîtreusement emparé de sa langue, car ils ne sont pas d'elle, les mots infâmes qu'elle profére !
:
;Médée
:Ecartez-vous. femmes. ou de cette fourche je transperce celle qui se risque à me toucher!
:
;Une soeur
:Fuyez... fuyez !...
:
;Une soeur
:Echappez-vous. Médée est sortie. forcenée. Fuyez. fuyez !
:
;Une soeur
:Silence. arrêtez-vous.
:Voici Jason qui arrive, son homme.
:Ecartez-vous. il saura lui parler, c'est sa femme.
:Laisse?-le passer.
:Regarde. Médée... calme-toi, voici ton mari... Jason.
:
;Médée
:Jason !
:Quelle délicate pensée d'avoir quitté ta douce épouse, rose, fraîche et parfumée, pour venir me trouver !
:Tu t'avances avec le visage d'un homme honnête... une humble démarche... le regret dans les yeux.
:Assieds-toi...
:Ne t'inquiète pas, c'est par jeu que je feins la folie, par divertissement... pour épouvanter mes chères amies, les voir courir et crier, et puis rire, rire à en pisser.
:Il ne m”est resté que ce passe-temps.
:Je suis redevenue calme.
:À force de réfléchir je me suis raisonnée.
:Quelle sotte prétention j'avais de te garder a moi pour toujours... rien que folle rage... jalousie de femme mesquine.
:Car tu sais bien, par nature la femme est faible et encline à rancoeur, envie et gémissement.
:Pardonne-moi, gentil Jason, si je n'ai pensé qu'à ma personne.
:Sage tu as été de chercher une jeunesse nouvelle dans un nouveau lit, entre des draps frais, et de te donner une nouvelle famille plus glorieuse.
:Car c'est à moi aussi que tu la donnes, et tes parents deviendront ma parenté !
:Et j'en ai grand contentement.
:Si tu me pardonnes je viendrai à ton mariage...
:C'est moi qui préparerai ton lit, avec des draps frais qui sentiront la gentiane...
:Mieux qu'une mère j'enseignerai ta jeune épouse pour ton plaisir.
:Tu vois que je suis revenue à moi, Jason.
:Dire queje t'ai appelé traître...
:L'homme n'est jamais traître quand il quitte une femme.
:C'est à la femme de se satisfaire d'être Mère, car c'est la plus belle récompense !
:J'allais jusqu'à penser que changer de femme était un abus de votre loi d'hommes.
:Que cette cage où vous nous avez enfermées était une infamie.
:Que pour mieux nous soumettre vous nous aviez lié au cou nos enfants. comme on met unjoug de bois dur à la vache. pour nous rendre dociles, pour mieux nous traire et nous monter...
:Je pensais que c'était le pire abus de votre société.
:Voilà les folies que je pensais, Jason...
:Ces folies je les pensais.
:
:Et je les pense encore !...
:Je veux briser la cage... détruire le joug infâme.
:
:Mes amies, écoutez commeje respire !
:D'un seul souffle, tant il est puissant.je pourrais inspirer tout l'air de la terre.
:C'est nécessité que mes enfants meurent, pour que tu sois écrasé. Jason, toi et les lois infâmes.
:Armez ma main. mes amies.
:
:Que ton désespoir, Médée, enfonce le fer dans la tendre chair de tes enfants.
:que leur sang coule, doux comme le miel...
:
:Oublie, mon coeur, qu'ils sont les enfants de ta chair...
:lls saignent...
:ils saignent...
:
:Ne tremble pas quand ils crieront "Mère, pitié, pitié !"
:et quand à ta porte tu n'entendras qu'un cri : " Monstre ! chienne! scélérate ! mère dénaturée ! ordure !"
:
:Alors je dirai en pleurant :
:"Meurs. meurs !
:Pour faire naître une femme nouvelle ! "
!!!!!!:Noir. <br>//:Musique.//
!!Méli-mélodie
!!!!Boby Lapointe
[[Vidéo|https:youtu.be/9NpA0Mqrex4]]
:Oui, mon doux minet, la mini,
::Oui, la mini est la manie
:::Est la manie de Mélanie
:Mélanie l'amie d'Amélie...
::Amélie dont les doux nénés
:::Doux nénés de nounou moulés
:Dans de molles laines lamées
::Et mêlées de lin milanais...
:::Amélie dont les nénés doux
:Ont donné à l'ami Milou
::(Milou le dadais de Limoux)
:::L'idée d'amener des minous...
:Des minous menus de Lima
::Miaulant dans les dais de damas
:::Et dont les mines de lama
:Donnaient mille idées à Léda...
:.
::Léda dont les dix dents de lait
:::Laminaient les mâles mollets
:D'un malade mendiant malais
::Dinant d'amibes amidonnées
:::Mais même amidonnée l'amibe
:Même l'amibe malhabile
::Emmiellée dans la bile humide
:::L'amibe, ami, mine le bide...
:Et le dit malade adulé
::Dont Léda limait les mollets
:::Indûment le mal a donné
:Dame Léda l'y a aidé !
::Et Léda dont la libido
:::Demande dans le bas du dos
:Mille lents mimis d'animaux
::Aux doux minets donna les maux...
:.
:::Et les minets de maux munis
:Mendiant de midi à minuit
::Du lait aux nénés d'Amélie
:::L'ont, les maudits, d'amibes enduit
:Et la maladie l'a minée,
::L'Amélie aux dodus nénés
:::Et mille maux démodelaient
:Le doux minois de la mémé
::Mélanie le mit au dodo
:::Malade, laide, humide au dos
:Et lui donna dans deux doigts d'eau
::De la boue des bains du Lido
:::Dis, là-dedans, où est la mini ?
:Où est la mini de Mélanie ?...
::- Malin la mini élimée
:::Mélanie l'à éliminée
;
:Ah la la la la !
::Quel méli mélo, dis !
:.
:::Ah la la la la !
//`(tous)`// ''Quel méli mélo, dis !''
.
;Les jeux de mots et les gestes équivoques sont nombreux dans la maison de la Rue de l'Oie ;
:Ainsi quand Nicoletto, //tout fringant//, dit de Lodovica :
:://benedetta sta __nona__//, puis
:://cara la mia cara __nona__//, (la chère et bénie petite mémée)
:tout spectateur vénitien y entendra (ou feindra de n'y pas entendre), une invocation à ''//la mona//'', le sexe féminin chanté si souvent en vénitien, au moment où Goldoni écrit, par Giorgio Baffo dans ses sonnets érotiques.
iVBORw0KGgoAAAANSUhEUgAAAQ4AAACxCAIAAAC6OMTmAAAACXBIWXMAACTpAAAk6QFQJOf4AAAgAElEQVR4nOS92dNtx3Uf9vt19xm+4Q64AAGCBAmCg0hxEBVJJjW7XFFZSSxL5ZKq8hr7IeU8JJV/Ie95TFIqPcUVOUlldBIlFUdxItuUVKIokCJFiaQ4ASBATPcCd/qGc/bulYfVw+o9nO98916ATtJ18WGf3t29e1hzr17Nf/LVmwAAkgAgAPNf/Vn+i1GiQHJ+FGz7qJnbXjZd3PRytpVNJ6fbeN5LHxEFvUjXYxvRa3URMW3n76TvM2VpEYLlNbR79WfNTD0v+Sz12JZnab+pZF+B48K19WGZ8SfaohOvmkITafxeLqhRCzWrZvJJ/UdHAHDEKriDJR1w3mHTxV5k4d3xyq2DW3gAONnIWRf7KCKIIl0EgKXnasGF592zeOcsnm1jFyXmT0PKdwWAiAAkxDsuPdcLt17wYOEWnlHQR9n2crKV820kETxX3q0XXAYGksSml5NNPNmkTzjHhePSYx0YAh0JgYhEpI4tPb0nARHtCL1DcPCk9kofosi2k/Ne+iir4A4WbuHhHR3tojcQtfR87sbyqaMFT87OtYxOpIiU6SYUstPn+14U3KMgAuednHcxRonAZhvvnPW3Tvo37m5vn8ZbJ92tk/5kI9uITqSL3HSyieijdBFR4CAkokAk9YuOLuNDgRgSThHGJUSiYhQTSoBweWCa6RL2ZJwhCJrnnFN+pgkim8kqhVkyy3cTgpafuZGcaRBqhOplaCVx8HpHEqmQ2OSX2sL8+agQIwjerQMFcMQ6uOB5uOS1tb9xFJYe98+VqMnBwl078FdWLng64O2z/u2T2EXZdLGPiBBHrgJF4BzevNd/583NzfvdWSddFBFkIIEICHEERPooC48rK//klfDklfDUlXDjKKw8zzs57eTeef/63f6Ne50A68DrB+HJK+GxQ7deOAhONvHWSXfrfn9vE3vB4cJdWbsrK3dl5ReKEhkbBXHpGDwc6R1iRBQBufBu4UEgRnhPfRZg0+NsGzddGvLh0i0cXAGhPIFKb5VSRJEoDM2KibCshIiAaXVE6UQiMNteugidIwIO8M4FF3UVQ+AquODiaddtYmpBCBHpIwTwZPAMDiKy7dGLCB3AymVoVj33noWxsIDsFJ5ksHasOOAqHLd4kmnIsP15JGkRqZk8mrcVE2gL2OINzuyFKcOKonNLB8eEv97VlgQ8Xrora7/01MVSun515a6s/To473C4cFGkFzjieOlXCzpCBEcLF9c424onQAQChC6W8owosY/iCSEiEAUgKIATTy59ArW1x42j8MRxuH7gj1cuOIJwDocLkj5GrAIFsvLusUP/nuNw9cAvHUGcd3J17R4/ivfOYy9ysHBHS3e4dEdL5UtKsoVAHxUxpRd4R6eAQUQBBBFwyl4cPeHIVcDhgn2E9zxcuKVncDpdAOB1XbPoQyL2ac4TqvRRbp70N086kYZmVcaa8ES6KNtOCltUttP3ONvGu+fxtOdJJx25WPrDlfheRCiEgOsofQQA5+gJ7whBJ7LtEmcx6NzwQQudaMC04FIGaFSZTetGYYyCDO4jnvMIkGSMIXPosYPD7Icqw5+FFrrcB0c40HsGx3XABx5bHi1dFwXgQaBzuH3W393E8ygqckSg7yEUgkvfK+kF0Am2nZxu48kmOsd14LaX22c9wKXHyUYEWAb0UbxHjCyih3dceC4cFY5XC+ccN1HunMceCKfREREg0EWcbyMdPJ333AreOov3u6gCWC/oo2z6JMZto5xs5Tz2d8/7vLKAflQEQFSBSIfvSGSBH3WKHOFcmjudveDoqCJLkqKYUUUEdLxxEK4fuLRGJ2fnEuUPvnf61R+excxEzIpYNpPeKXspOWXlRNCLxIguSpeVk8lltoCRVKEZWBlmW9VhhwpggPVsi9NzKXS3MpmEDGzxpCKG+dnIfqXlglrIP+0r25dGKptHjLl8kYlMUnxuVye/wMHC83DpjlfuySvhysqtApferQK/8srpt2+ewSicZXXrYPMrSJLilL4IoKoLgEzUKzBIkqXhlAhCST6VnCsbd233FchVg7Kcf2L45qk+cwRVF01jU6YpzzkQJPnZp1c/+8FDKFd54e3uK6+czrRTO0Uzr05lsyo0CQQqvTEBpZSaVt1sFqNUnhrb5HjHeDI1viZzvUDs2UUhmKWyhoFMCmODYqioBbSFyyv76ZxvkHkekS4Y9mgRk6jguHAE0Me8OgQASfMPR0Cw6SQ40uPl25u/fvOszr9BmNRzGS6EY9KDtAueiImbJcFdgC5C7Tda3pPOZcmHDIXfiTEYpalIZCur1DrrKvqI6ZlBivxUBJBJImI+0szYEKytrDpDqqPIV14+ffax1fuu+ADg1XvbXYTd9LHCdx5t/hQBkVjUoGEXi8qT+VwFu7nvjX9fgCfERCYAwAf0W1pmYrUawzoMLqX8XCx3oAzcCoRmQvR5gofs4CeczB2NC1k7IcrsiQDOJdrcR4iIKr2bXjadbKOsyPMueoc37neSDQCJFaQ2QcLn8YhRiVigWxcu29DKpKkY0xNREj9h7XBmwkVZVXwUccNZHZCULMVM8Y0LOYbpwOQUlnYK6JaPDkqlHAFfu7t93xUfRGQaNdsKGIkBqU/SIH8U9HGCHtBW50TXNTly4SGCrjdfa/HE0YVcpu1NU6xpthHrDQK02n9hJqUMDFjsQJJLYQgtONXMmRkxqVgLbYZ3WDg6xyiycKBzRwtHCskbh/546RyglhhVcFEIFglIH0Em7RGFolVUTEMoQJBmw6yg8/COim+cgtQMAEmfcWSWOxIzmQJsA0BQDWLa+lcwf8A3ajeaCrNZk9iUu6JMu1jAhkkGzyTWwT17Y3WwcM//4D6L1MSEehGSVR0cLd2vfPzaN14/++rLJ4OPV97EzJMBAI782HtWP/fs8bUD34t8/9bmC9+5e/ust3ilZT7/7PH1A99HfP/W+R9+956WmRwr2rnLa0yrlhQFxuZMKzAtkhS8sqBfMtGiCmyZmcXZjSwyQicSQY2hIhAsPa+s/MGCNw79wdIFB5LbXu6dRxEQDA0dlTQfFEcG26XJyWypRpHu1WSqVjJt8Xjpn3t89eTxQs1ut0667986v3XS91EsmnnnPvL4an7YjXgO4bffPIuCwmkWnp948uCZa8suyrfePHvprU0fW+yqZTP7qxbEhk9fNPEgSdI5hlFvhyxm6d3jR+HT7z34yBPrawf+G6+dfvkH9/MganHR/ZYoEPybn7z+s88enXXxa6+cFGOAchbapShdJ/7mR6/8nR+/9icv3Pv6q6frhfvcs4c//czhf/aF12+edGV4v/yRK//Wj1/74ov3//LVs3Xg5549+qlnDn/7D99486TbhSdZayxYofZEJiajuYkispjFLKoY0tcgT7XBwxao4ysYMjHovTjJcCw5icCBjhRBF4UiK8/1glfWfhnSTqJuB4sgOARPGslebQCK547THyrdKyJZJRm5pCX3C8+f+9Dx3/jA0XrhNr3EKI5Uw+7XXz37Z9+6c7Lty0wsA3/rs4/tNXBCgP/4/35t0/Vaex34mz/x2AceW93f9I78mQ8cfuG79/7l9+4WzlZGUrGkwX874H3XwBEBs4aElH7909efub586e3NH3z7zmfffzguoHa6Pm9FfezJ9affe/DGvS6bUHISefwofP7Z43/xnXv3Nr1t4emry9/49PXf/dLNP3vpvuZ88cV7/94vPPlbP/nY7/zRG5LL/Pqnr//jP7v5/EuJU33xpfv/8Off85uffex3/viNca9amScJzs6QfGeNwlNafmIvGNLUhhGlDww4CYdfT6VKFtp6l0uiNs1kZVIqQFB3wePpBguPLvLueX/3PELwxHFYBYMSUjHEXbT6YtTolhg3Annw/I1PP/aJJ9c3T7p//p27L729Oe9icO49x+FnPnD0E+87ePI4/JfP3zzbRp26bS//y9ffvnCk1w783/zIlRdubbZ91DkVkV/68NUPPLb8n7/+1jdfOwuev/Th41/+6JUX3t68+NZ5M5uCZHsqZP3hkhXAplv7xutnv//NO2+fdgA++d6DwVudM7WBkDhe+d/87I1/+s3bP/3MkSS7WGbX5I8/dfCrH7/68u3tn7/SCGY//6GjV25vCp4A2PTye3/59n/4S0/dOAo373cAf+5Dx6/c3hQ8AbHt5X/7q9v/wS8+eeMo3Lrf2QYn5F9WbcQZHMigliq1JrK6sbMbSS7GkBY35mSwPVOi8lJtempH6qJsehDqhxK7CE+sdJfNp90GGaHuXB8KJjSkunJKsWznZ589/sST6xfe2vwPX711fxPzm/7m/e1fv3H29z7z2MefXP/ic1f+2V/fSS+i/MWr1ug6nX7l41cBfPHFe7ZPn3n64Gs/PP2rV08BbDr5g2/f/dR7Dz/99MGLb5234pRUiQYAKVlOvPC7oyQcGrvrq/rvL145uX3aDV4iS1/JnUE7A/wbn7h2+7T74ov3lSo72A09fOmlk9/+oze/3s4RgY8+sf6r185sFoHv39yc9/JhlWiBjz6x+kYpkyE4lbmxsq0N+CuhskrCCq+9AqjPmXuUZwfdrqIjHFIZxyYzC2/6lkR6VT7hc7FUEfSk1+os+amRB/tHQvm4TnUfJca0Abf0EMH5Vroe3gEArRDFAfSb6RoJY0Ye0zR4SYDL4D7/7PG2l9/7+tunW7EfAtBH+T++ebuP+Oz7D727BJgeLNxnnz5883733ZvnqrrrBuHBwr1tALKPcuesP1wkSG6MtPZriXKzLbVX0jozqELzz+KG+W7NERDwjh95Yv3Z9x/8T3/xttZTBxbv1JoJR2y6+I3XTxvLFQDgiSN/s7CFPLwocvN+d+Mw6KgfP/I3T3pbQMvcut/dOPRN1THNVmEjYwUypAIJnxv7GCvfMBpLw2FcLWk2B8oWQQYUxa4KnQ+HGyPsoiNByfvNILEIzrnUzV5EAO/oHECJWcVtEMCuOc3fAmoDPjiVnr66WAe+8Nbm9llvuU2pd+esf+XOZh34+NGcGWki/eT7D1eBf/rSfdXYCRBC4uZJ99zj65Cx7uraP3kc3rw/1FeldEBHQYCTG3gXJ622s+vNRlCTP7S3CVbB/canr//Bt++9cW+rK+odloExstedFkFMHm5NVQDL4M7VeTVlphIn23iQqcWoTEr3c5lZPAGAbKM0z0h4kkWKdhd/4AKDLF/RgI3VcEoO0JSBKTCS+Jta+6S66aGyBOHoguMq8GDBKyu/8Fh5R2C94BNH4XQbV94dLfzCJz1+/MXJ/nCYsSsFx5dvb194a5PbS9p+EfAEuHveAzgIM6R53Kbnz3zg6P4mfv2Hp0ZqAYA//v69v/PJ67/2qetffeV0GfgLzx1vo3zl5ZMCk2VDBBZhDFxdXgYjkBzh5gtcxKnUPUEEf+ujV0638Q+/d7f2jAyOPUSiqqJwJERiHAqMLCayZjxqhm9mHMNVBKQoG+3I7M9MV6zT17Qqb3LQ5HOABoPMOuoKWe1bUwaj5z2TVQ/0R/Bcel478FfXLjisglsFBseF4zrgcOG8wzLAO4RGfNr7g3tU+e7N8+/ePB/WtE+CdXAAzvuI/dInnzq4snJf+N69TS958dPD1354ug7uF547/sST6wjcPu3/uz9/6/Zp4ioPr75PJIkSY5jaf2RBSWlzm+qoiPvsjeXPfODot//ojW0vviCYSEEB5kzuxL8JCnepIe1otvUpLMjsDOi7LGpUDLlIuS+NF0yYVNwrnW4ZywMAL5D8ArVZTwTP45W7fuAPF24Z6IAocA6OWAWS0D0Wty9BL+kB7HOWl9TM45X/wPXl/U188143Xa9NjvzcB4+6iOd/YM0/teU/fen+1187ffI4dFFeu7O19tTmww8PP2oaEEIFsHa7viHi09XbEsHxNz792Be+d+/VOxsAffJygYgeHkjPyUwghX+0iQMoKl2tnZpjgMMd3KkyYzxxLfeweGIksYuMYC2SWAxpxK2G+dB28rLIUvbsBeKN6nK4dMdLdfuSsnu9DPTaVVeMxReLCmMGuHca4wkW3v3qJ64tPP/Fd+51cS+i/9zjyyePw1deOb13XpCAhavoz5NN/P6txMqyHfnCjl2YBpv+aX3p4OhCst3M8oxhM+U58wr+rY9d9Y7P/+D+0coV85xzDJ4HSxcj7p73iiQiU6tEdFGWoz4QWAWed6lGF2XhhwMmsAzcdGJzhmUUTAWYwZOBsXggX7UINkQSq8YAFm1qb2i4xyQUXg4mG2wkqTu/yD4rYDrXhYVncCDgnFreaCZjGqwekt1p0mXS7z51HH7huSsffGz5tVdP/9RsBuwaH/H5Dx4L8KVh+TEets+jYXFcajZlJBGxJ6fKUjtX1frCrEydtiVpcUV/LTx/6pkjT/z7v/SkLb/y7r1Xwk8/c3jeyX/0T1+RvH6e7KrFPv3/zll/7aAxMOiqPnYQ7m6S38qds/7a2jdlCAKPHYa7mx4zE1IELcsWispupC/aLfymfM1vGsmzWDNtr/KnCVt4D2ayG0StWq9SgSPXC15b++BY6JQAy8Clr96NPh8jnUtmQLs6sE/6rc/eWAcGx6OVO1y4k038/W/d+fIPTuJOsl/SU1cWH7qx/O7Nzet3t5f67iwBAFpZbMQ6mlbYFq4vggy5R0KYoWlYmp/5uBfOe/lPv/CanpYux5oB/Dufe+KFW+f/7Ft3okGzD91Y/e2PX/0nX3v7NTMLBF54a/ORx1e/3/bg8cNwde1eenujOS++tf3IE6v/81tmRMDjR+Hqyr309mYHnqAVn8Z4Ug1iaQtyAk+mPJGnkWSMIZOcxBS4BGxWtR7JV53A0tM56WJ0zjnCgUcrrgKJdJIEKaSBaSc1gkHew+MJAO8YHJ2jANsowfOD15cvvnX+5r1uH1z5/AePYbcdh8nS9AF3nnDKH42o1R5qG3PMqmRJwBBXZKDND/hJ8t+OifH0Im+ddBpuQrJpS4A+yuk23jrpUA6sAY8fhY89sXrsILx2d2v78/wPTv7B5554+tryh7c3BbB++SPHb97vXnxry1Tm/t8vZbKM9EsfPn7zfvfSWxPkZyzkWJ17LzyxtuC8b3ghkuzAEIO6xOjtpZK2UJYuOC68O1gQOSZDcIgAYu3lPlp98dJ/mPS7X3ozfZF88jh86r0HP/XM4YcfX/33X32raBdz6fpB+MRT69fvdd+bLcnRQ0ljPBlwkrEqwnGtySRA0FP2Gj0AGB7umWxGMUT9I/WMhIh6gjVlktAlVZr70ov3v/Hq2b0sU5Ve/8UPz77x+tk/+Nzj/9Xzt354Z+sdP//Bo1947vgffelWoYZff/Xsm2+c/f2/8fh//eVU5nMfPPr5Dx3/F392q6WYIIbTmPhJgvGEJwkNpszEVcTaiTn1oTV80Twgl0GLHrSdQ5uzMxXcOAiIgoXj+6+G914NC8eFpyO8Sx90AJ1x7phfWfvmkWCLpijy6t3tq3e3337z/N/+12783U9d/50/fsNujo3Tz3zg0BNffPH+fsLaIDGHZ5l4NSWD4VJGslB0bTGN1A8aDiOCTR+7CAF6KTYuKWe5bDfPu7jt8xkv88I6ShYgiSL/+Z/e/I1PX/uHP/+eTS/B4WQTf/f5W1995aSMI4r8oz+9+eufuvbv/tx7Nr0sHO5v4j9+/tbXWncy227NKJFfBkCfeQUAjs4t2W17jHIKZ9OXrYpSCwyEMWAIiIPO7gZTZinjeOk++Nhi4XEQ3LUDd7B0yY8mK+8qHzOBT/XomJ+klPuI0KRJL7x1/tVXTn7qmcMff2r9lZdH65XTwcJ99n2H987jX712sXvYHunCEV9urCHG4TTWTZEsfTGjzP/41bfyZkkO4CKIU2TiP/nC69be1RLRiS6ebeN/8+W3fu/rtx87DF2UN+53MQ7dEM66+N/++Vv/61/dfuwglZGB8XG0zYwkCxGsG/YWE4o2X6UvLTDLZ5CNYWhf5W+xDnGAPLVLLWPZk4oTOFi6q2snItfX4X1XF8tAxxRJSEgRSBTvSAGpAoKOiEK4bC8XbWyggL4zSFLSd26e/9Qzhx+8vtyBKurJ8icv3N+OXJ8un3Q0k0xjp1o/31bohP3IdJB2QvImyDDcRJ7mfqQvwohhu4c72dOTTTzZbnZXOdnEk81mooUZPNFknVl24Mlu35Ypv/00VD14aJHEKDOzjGUsE422CKQMLng8cejef22xDDxcuoWHQ53rpD8KnCJJQhQ9ICSOZG1K/9es3MPgyU88ffj4kX/+5ZPbp/1cmfubCGC1mNWYguNPf+Bo28vzL+9lU74oWfWdo/xLJoJgOO+iPTOsSCAalSMKlSKxblOqioIpdX/qE9O/Z1njTAFcJLeMcho8KVzCukXCgPtu9xa78UKAKTQASCj9zoxGGoZTe5WDSuk386cHPXQK0xrDQZCiqhXAJo4X7sahv37gV4FeSxehmck1IsUEy+SMFk1rU5kN5c/vPjJ+YXru8dWn3rv+4d3u9ums4KQmh828DeyTTx1cXbkv/+DkZLOv88soFaOSTWNYe0BsCaeb/vFDz7zvoXJtRHLqJuFU1m1lqcxzsta4D57MZD8APbsQkdBCoXd1g5PZXpzNWSM8mRDD0hdIqHMrLVZUNtJwjwGHAar4V0irrq1GGV2EdBAgCrooXZ8CFYgOgTheu6trvwwMOe5EakRXx8EjMcOGTgC2nwBWns9cX33n5pk5kfJQwtcrdzafeu/6x96z/uZrp3Ng+MHHlgBendkqIfG5Z49EsOc25c60GxkenCiE+9u49vj4k6tvvn5eQ9AK+og+iiOikfL1WxHoRXrjt5J6OOjMPK5M9LelssOXO5Zy4lUtTjI45wy7qDskRaaa0vUnOAyK59UAl7L9K3en1NLfVPlHT8KkeLONhdo7qpvjwsMRAnQ9Nr1sFWGikFx4Xln7g4UreFJWRLWUAXLOTw4APH11QeLbb549HDtJ6S9fPfvlD1/55FPrv3h1/b03z8Yq6rUD95PvO+yizOnrH3589eRx+Pab52/e38tJ7KJkQewSNq7dKdw9l00nV5fuU0+t3jrpz7aRxLaTO+e9wAUni0ST2UecdnKyxek23j3HWSd9LxoZTWlzMguLaNzYZH+u1Dqd8age81kGSEf5CvhmClwgUh20Bq5ZDbA2TKCatphPXBU8GWLCFBYZOS2BHyHVRFaYg6UgqK8aBkI4ugTZpB78KrDuSQ3HuAxcBy49PXVXCpteuigxSi8gsfS8vvarBX0N7pyZgfGeNLCSZT+TY9N7rywAfvvNs4eUvgDc3/T/+zdv/91PXv/Nz1z/v75952uvnHYxn9Qlnr66/LVPXlsv3D//zt07ZxPKDPO245+8+PAsZTyWR4MnAMLbp/Gsi9suBod1QN9j08umj32UOxu5u8H9bX/WSbGGJzDNkOyKalxO9mW6G0X6iG0ftxEiwgjUw0+5EYG6+GmzhViWg4pqAxWhI5LupNpTJhYUVogvzl0ZTyqyTXKMgSqfR6Gz64ocBcncICNDOlmVrQWGr5aVccySla9FlId4l6qHVAALz6VPMhjAPkrwCQU0bOkquOOlW/iMJ5MyUyWgYn7Nwsp7rwTH9V+/cbany8mO9PUfnkLwtz9+9Vc/fu0Xn7vyyu3N6TYG7x4/Ck8dhy7iX3737h9//24u3nRJPVlevdu9cNEG5UVpLK88MpYCINw57foIZf2eXDi+eSov3ZE3T3CyBYrU0Yg1s38FWfnV8IcBa3gRnHVytok7JMULpOUEvEZpbnuVEWCsPzTiUCtZlZ4OGIh+KjGT+kyDfpknpIO7jbErRc4NngvHZdAY7NRw1CAC6T31AMnCJzzRUJHlbKZ3dL1yWg2fJQuP4KuSY2ZLSOaNw0vT1CePA7H+1iPBlldPv3/r/Cfff/ixJ9bP3ljpQO6dx+d/cP/5l09ah65GZH/fteV33jz/8suPZC9lnCb56oPgT7i3kShwnQSH2+f4zq3utftp3hYOXRxihP2HqVeAigQs+d7hysqtg7t73sdoTnnD1Bn+HORkyC3GJWqAaqN4FAzJTK9kNgg2rZM0operXxniSRalVPFoWVaWixy5DjxYuGWoXEuAXgiBdwiennoBiKKKCw7Z+TclT5RNI91hkmzVaoU+qK06D7FCxi7vQZPecxzI9TdffwTYcn/T/+H37v7h9+6WiOB5h6Ss64SR6vkf3H/+B4/EQAwDleOxPOzowuv3uihyf4ubp/LWaRTYBXsUSl9OS4/rB/7Oad+LDPCNlt4Xicj8a3IUHBvJqrIFZxopDRLZcbhR00H1jGr1GfvFcjLeAXTwLXbZT3tXN/tXwV1d+8OlnhWhbpX7JOzRORRtTW8E8JwA/5ITUnhspjjZuW4t12SMsGgPCvrEUcBT62++9giwRVOMcrKxTU0+X2T/eag0yWMfKoUXb/d3NjjrhO2sn/f76nuSLh2Yfmfzg8OVtb991u8+hjOZBhKaGPguvW4FMBawtjvxQMUWV5hMrtRgi2tK2gK19dQmiXS5Bx1XgUuPw4W7fuDTvVCWc9rQWrlL5eKaTSe9pClV09ky0GcEy1FJZFB9at6Hr8rPLsqk2+LR0t09n91DfMA0i6qWHF96+/xButF8+XI6TKJZr96XotFqtkDOe0pZ2bKsbKvOZe58WAasgzvb9ranDzZJkkFnKHEVHlWFrgLYg/zMf8DKc5BO2zKzAqamIYOWczeKjqbmrBuH4Znr4coq38sx0fdC81jaXHgsPY+Wro/oRWIOXNQcNck9qYs9TXQmvvlEjpbSRdGjDe9A4gju52jiO48ek2k3hZmp8Z7jgMmILZvenN7Ope3DIDqEfaDJwSAwZn51tOKmTz6gnPmH+Z92oBZqKzcwKnv9Z1UOVK/H+rMUyHYqZ47jo8U0Z46CAarDcOXdjUP/gccW5fKa4ZyXHSgWUJeMLRW2nIOb4Apl5K0AkxjbxesakXgAACAASURBVIrJR59YfeyJ9Xdunu13aPeBExv0uAAm39mu1MTZH7uTI37sPevnbiwBBAtVAKo78FSSdBmSiOP4+O44dRrUGSSFJnxWcKy3gmCCBdUNizG62Exj9i0swmTqg9E3rAlrsjBAB+foc3B4O2uFfZWdfj3s+fS1cG3t12HnrjeRA06Xm03Ygn4Z2BDUWlpdv5H1/IQzgl2wR+DXP3X1e7fWb95Pd7MNyzPRwYvSpI5ROiht1iCUCU3h9E0tZvj0cA4ejPek41OmhZGSMKM15OSI9xwvnntsqT8brnLexQjofXrjcwsSJUaNt4rYy1YQgmUbTekoiDEy3+RUMpXge4cS5mbwlUtNi4YmMXYtbYFVpGyFJbR8BkVsa5mPy4gh+bxNkfR8KU9+8LHFj71nebAYKtuzQ6jYYodd4bPeQTg1IflBxq/qTwLz4E7iwzeWH76xLDn1AMagLZnMzd2d/FH5Yjkkk0erwCRiFqYZSrOV23TeuILsokOjJIiSISyDcqFke7ZGQKUHTaHA0aaX8y4SdC7qvnW+Lw1Qj6/YaDVRpOvEOXqSTKbJdJArpu2IwVSXX7opN0SSUecvHI5kQ2nlPUNuxJJZWIrBn4xQCdhZSLMatQtH0uo+m5i9c595evXMtZCZ2cQYpzprwHliYuoprJJ9EfrNfW0GV0bZza1RtLBrejW416X5kbHSdsRsy2aCQ8B4d2dIMV9sb/Ke7Hj5FIFdZqR8m2zhdM4h38U3bi09GQfIPAKScF5KpMEUMq8XnHfJ+hGjRAiJvlDf+lA7mCYySgeofEVjY50aR63XQrMB9NGruefyr8YXNcq93YAvgF4aKYZm/VuOdhV0SvQQyRys56W2UW6edL3I2rtf+bHDp68UBnMRSrOsIgZP0+WmgCXXuQxl3SPRIUVoRcMfjOxUPJBFBmgy2aB5yvLlqFKik9r6PnpWkwpoDyakPaLY9jWrh1X4jUje2+lOyoS7mQfms1JdT+eW3vsSseV8q1TUfHtM0Mpbjt6yzTc/OVGA6TjZGDkGP+cKtM891LEqT0rFE7MPiqrPJK5SzGJWeDOb8frKOQaHe5v4vVvnUeRg4f/1z1x5b8aTlnqMEhv4M78nxf22jiXds4UnUolQMezAdAcdWM9giJJr2zsLgLRsARhJepPIzMkeaBhZBdEHRX9JjTfkO8kq2SLPGhqlVaIcKEzXyYNSGEopkyaQsZf73TZ4FwA9It+YvDBChzm6jrmfnC3jiH5Omn6gJJno0oBv/W5rGm7GVXMIU5LZxYuEeoG+fHsTRdYL9/c+c/XDN5Ywnrx7k1mr/80NX+yjBctLg9OY0tmPmMzERbMkJmIwTTm20ltnzIF5ECMeM9nNycx8/Kywl6kK0zpU/aGMDpUO1R4mRVNICrNm0Eym1B0AEQAR2SxLGdkkzrs+gOh2BJ2ZAoUHpQIpRUHfG35jgbVBraZAhvZSgLauDMQqadDA4m3RUoo3ZCnsTBljL4Yjz7q4cPy1H7/2kRvLJFNMklCMF6R9Kwoa5d0uRGjf7c1SLkyjlkjSZVEE5VQYMpuh81Pm7wTsD5Zy5UzUOUAWnV5pCcYAU5oBScUTa5Ia6n8NHiqdEEFyxcpHGCWfKgVUVyEggcCe4TFnB93KohdO3raXEsalqTknw++RpGgskpCMeigNSjOhlodiq0qbhkm/IpHu6YWIc/BEcFgFLlwt87lnjz75VHORy2gi9poCQ94M9a56qnm5T3NNyw+xjiQJD5f2PiUh0IXKyUMkM0JW0x8NIAwtP5NJDOUx/zOvR0/mpQj0ZuzyWTXzSgapmOc1pKMFRcSvvc/0O+fXAtYCy1qyUabNA4xvonoZD0f6KJaj9NZo8EVRYukq8gaLd+noSHKJT0dtHaF44g4W1KO5jnjqSvil544G32qfptIM6JrsghhiWOZwUPukh8IT80HutMkMPvnoEq2GVDQQFhieq1b+TPVpjDuD1+UwrzYWk0RHKTS2bkAx9A8XHWOfaU2I5LBwvLNR85pRJjAUvIYP43zznIQYpmPlZZez4qpU/HHZgdc7hqyTKKoEgzALx1VwB0uuPReenvjJ9x8u/aPA6NSEZaC7W310cte/6ulSokktNCUDEhGZMk+nJGKN4koo0Sq3lse8jUm9NpWPjkAMoIl6cNxz5ekd3z7tz7fRokklpK3f/iSmDJ7tz3oTnaPPVmO0Cr2qIsG5ZUYAyT0MDprjHBcuBWhcLdwqcOEQnHvySrpftrD6CZifmI4dMztZ80Fg/v8TePJAidl+1kgmyUwghTMhS+flEk1AL/ptb/BmaRW5AvMtghHI++0PPdsWSZR+Lz3XIZ3E2PS4da8vN9HI7B7SJTQWW7Cyi7JRWNUSIF3vCD1rtQpuGcB8agpI56uCY3Bceq4CFp56MtETC48SWVymvr5zXnYMoFVYLk+x/n+AJJYzTAxWkaKFJalkrGgghA3DZRmRgJSaw5o/uLiBAaAjYi5sxYJpCahYk1rbqyKxBxeBSrZVdTnpcLqJZ52ItEraQyjx49oLQs9d1ZO9+bIEJM2Eh8EdLqtPO5XDCkEsHINn0LNWLoWRD57B0QHL7Nx1QX8nrVkX2nqTfRIAZd/jWI8YSRIozb5FWWQjBLz7WMqRNStTfn2stKZwE8WVHNaxCBjjlHBOo4CAabOpbipFQSDgiOjmLqeoDyke2OhTapTf9llXjqLagohoTD2VhHI0rcZgUDUK7aARmTDIKSXtc0KDdOC5FFC25gm9XJNMp0eOli44gJCo1CFhV3DZ397V8+4hY5q9F3cAIBMM+UIQKshj2IgIJo8tjtnvwyCJzpxtswLTxVVgYCKr4e88vhiekiYpS1G6ZWKswpIBJctelSeN9AIFLQihCgvA4rkgAFFieUtCFUm79d5xp8lYiV4V4yw/iYISObPPTmq68aM4HCGxR/D0U00P50UBqMwIkvBJU6aYS3S1lt4YrDORJqi3F5Dw5Do4PXG1CFQSKqDT0+0u8x8BEo7R2cmdkQAuZopTysj84Kd/ymzI6n3TmJBWR8ZaYJpNCMAZaVnX993hLiWElkYgKdieAL52tnZtlJICK2W4AiIazUFVfDLZcilJq9FhFlQh4FwfG/O+Bb45uOhl57aMoBfpIwh0AnhO7mWVFEX6Xpg860SZRj43Ijl0olq3tBhWwWl0TyZvLtFB6I4rieAYNIZDJowh75YEx3S1ldkb4oB/z4P3BSLk9Hq9G5S4/eA0U5KpzKkqU7YM47m4y8z0sMlqKWTTk4otVp1ArEKPFREdXdqKrxG3SAcXEYvfJqnXOtABsX5YyYGAoQgtgQAYjefynFxXUhScbnoQ3jnHurWq1SMSD0twKNL1AqHzzld8TB1Ss12O3ThUh7RoIa8lPzger1wyebGaoCGIRC/QMwM+7xZI8mFIBgAVsUrFJOlVe0n6t2sx9+Etc4XeeZwZLyAN3FsMMSWllfrGDzW9kyzFbB0O3hAUSpIA8w0yyVZVRpUIfNlSS3kSWdxXqFdfZ4wTYQqbJX3eszeupBJMB7B06JiDf6KdHJq/SELR6baPIhR2MbLsZiCL8CWQiGkjikjXR+pWsGSJXUos7dG0zKbgeW3tl2r7yrZglEh5hT8YkQwifSR1F9IngtH3yalBjx8y40lEMqsXr6jsXNd0Y5bpjsHICgh7AtnFiDgsuF/DSXqxTixaewqvB3mNR+I7lEZ4UkEyqyT53Eda5eqTY6pV4p2VDqo7saT9R0QRl9V9daFUbhGLTJHOXHF4YFitQL3o0atqVWuoO0Bg00ufel35oNSSreetxbSsacR68Ms4C9TP2JzW3EYuPK8fuIVLzlrMe5EpUCXhHfTOEdFzZlKepYtwhBM6gRKnGMURoVjGUGqJAHpX2z5LuwuwZeb5USadqd0iu03jfpBDxBhWkYuH+vCpQjzTn/pNwi5Hgr3yqqkO1O1+s++vbIe6sk0w8RqcW+ULyXHTMXm2XoOFRmJH+A4BNt2Efdn+HWIXRzntz4IO4+BGFmscsQ68ukrb7eWaaXswSlRqFfRZj+p66XrxpB4+6aN0SeykxjJXKXSR1fk+oosSIxx5EMxS7Q8iVdLZu8pkC4+4WqbCDT/ZXcUQ5lmp6FGmQdu0qNMIKWmKR3JyrZEV9bSbaF6TDk7NaBrNUCBGKNW1jsVvUvLRrgHgIkPn3EJ3/WifxHxgnPZZ9B1lLLYcLty1NdVI5R18uYUaiUcxb9hDEAU+O7Yo+UgBuyTFmVcKRcCTPis7GkK2j4DIwdIFZ+fPpNHsNBk7geliDHpHyPakcrJXd94Vc8TAujCWWDl8pcvXdm1450+2mWZmwtJAAlfCRUaKE8SeeX8jVZX8NzRYUjrDqt0WzLGEv9/pjHxZxNgTKkger3hlmazASSlXDZWJ4Wgg4PWC3rGPIuDK82jpDpdcBb2+R00IICTmcynepT3HJMjFZFZ3jtfWxmaXZQ/l5ZOyynTWsIGdQ35nZZt9Wh/LWBe4LT5ckuZ/+dtj3jL6mb1XRqWHGSJGtSJY9i3TiQhxQmGEaCj7XqK+d0QU6s79hABW+z1e9rQXJf0DXxeTethInzV/vsrC8+rSrRfFhwWO2RgABMcQ6AgHHix4vHJLDw1JvvRch+Q9QKKPGqpcXCZGTrfqc2A73VEVgOTRwi+8oVlFXpFkMdkfqif15ZmiF83FTKWL1Ix9G20JwqNNE+1JpcytfCf17SzfsyS+5Um0Wn7zedE9P7GqSX5yhCSviQRajulI9TC4ETNrHpORNBhB1ycL28Ddw27Do5WawKqr1O35UmBiwz4fFHFcOKwXPAwMIYXNF0GMsgWCavAey8D1wgWH4Hm4cMdLt/TJn8Wls/4CoBf0ynkzVVEvY5+1eZXZ9MYykMerKlFOCAf7GNRL3d0Fx1T08ghTlLW20gMKv5NQ9hCpwtMYMUqJuVeoyhVN2SKX1SXKwteo+41/gZHgcs8SiZS0i6LPXYx9TMGjZ7lKbOdcO5DCGzVbpI84lU+qUHQQuHDQMBce8KSoxVnoBHASHAkGh4XDeuFWnqsFlwGr4Dzrmfso7KNQkIzU1V2/BjjVWVYdJgo8sGpjgdVRK9NpyF7T+R3julyy0vrlK+mvFrwGBTmVf0GLl09VUCqN2SalxZByVsuUpG0n11Kfg9Em6GhbNK9avgGYgspPCD3cJamcI0Hxwl6kr14NUoMblb8CIbnper3grtBVESmM4hEm26CKUkvPVZKIaOhFmdzkyCYAYtIuyBTkzmvwbEnKXKE8XRSNBtgLokggnVV1pOzPVkta2eAvfYPRB5l/WFjbAXSzZSZ41iNPVZyxfVCZzU7tO0QBc5usKzg1bkMWBlEhxMKowZwWLlJlwtwF1DoHJyGHqTNSOlMKaM9cdntTtNEln+YqIuhzoIuKSvVLdBlzYBZ+hHTNw+AfTNR6BfSsVEC9GLNcWCdFd0+TEKm8oiVR2Ssguds4UvLVimedbDqJIlEYCHqGHFseSJZlXZKCCWGP8Jl21ovNcGI2WdZ4H1ln+isPnMbgyKlXWRYebS0+NPawwjQNaNaILZzGGePqNZkm2SSQ4XzAXAv2UdgimWT6VyJwiMRy+VxEF+V46cIAfPWhj2mvfQjuGUodETnq6FgQGaGRNlLOG4Z0rCodaxlgWqmne4wCxAbBVKVJ6JF0DOEmSuyEcJ7iyE5k08m2RxdV0ZcQXHDQg5AVJzMSFvXOnnocgFSzrlLQZDaV+3zffTyZ7s/+X3o0XIZF+inQWXcwBErlWlZibkisnsK2Y6Oe1aYzwBvtJDdoOoQcggJ5p5+F70KAXqTrZdPHdfAHixmuop7CO9bIEc65KJczhBFYL9wyUKNo1StQWiTZ3QIMniRtBICgj9JHdBABxXPp0QvQSyfY9oiS3CtJ6i1ZSVHJDyg4IGA+65I8vds+lJ9ZAE8c44LOl62fS6V3AE/m0uQZgAdsqfHbn/KASaBKKcfnLVRjEL+lXAZvpm8gzrYiOsyqlR4kLkZw2rpH5iNDWly3U66uw8GSiFmtb7UlbPI+/Y6VCsQ2x4iaL9U0swpcjU6oD37PGYqyaQIu99bimCSPlbQvqXgoIl2eYFXc9JrS4JEdnNM9pkByYXCAOCDSJb+YWZcWXRqR0uHs8NG657XlK8LsmrLCtt5FPJlIl8OTAT5kcbb6zU0gjKDx/82a46CVokel2H7qzWcoVnqdZXEaxGP5grIuZSF5LdQfDLoe1DAUIiKIICCrwKOV0+vThEiexUD9e94NtzsnE4kF2cVKjKy0NvhJYO3d6sIDK7nlUUpahOSYGuUzURCBLsoiVhj1+USkmpU1JmAUOGLBZHFGuUImw7XOVyCQYj+xzjjzdAOGiRTXs9pLGEZkCZ+Y58mH0SxULvcjwJm98GQGSorEX+fByj62YGUDNceAk4neZwtmWXm+raxo5y2PTPEkh3BTEpdj6YqSWp/ddlMzRsOENRar8hkFm65e7lxlu3YjhdnMSsftrutQU931gutQK9aH8iGzrwJzbZ2+heEeGUpz35j8QwXVo16NeJ7ogV6w6WTTF4MGJEKc6C/LplHEuTpdknGk1TSYtZtaWyTPoUEus3q2Xst2GlmjbCDPE+N/FVOGcR1XTISmkO9ZbLFNZPqeuHX2BdbmYect5wx/1udiY6lLl4QwOpL0SnZTuLwij5FJ3Evu06ZZCYMjqeddvop+v+QJF9DlbZqUcm06BLp1wO4TXXukzAgEMTNSOkUwJQmJbviUmVgGBVHQZ2/iAJRL35EmK0VrU+WnnMXXP70gOJa5tEctxUrXmWhl3Buf8y2psYaZ4TGHlJ6QoN9tbLk8SxnsD86QfC1ToX9Aeqo4MYhlIIVmTfROqZRpqmwwiFBbaraKXcZFM4DafF3BBsNAMhhBCdsom+7SLisEVl53BpMpQYHYk3oN4sOiSf2O+ZFgmoXzKLi7bNdKPQHo9GpSFEt5cY1hRjVtJF+iwsL0ul6RPHMKGQLupE5RZHTLOppRZDAprMq2WoSWQYvvUro8Xko+e2gAetRdDp843jdsqlXUGDDpwflxA8/NI1LoO5XB7NmpbCRQL0Ck2A9aSvI6I1PkVCMiFFDb9nK+TV5i5W8VwMxPtv9KjmeKNVaD1uUC+b6g2abGzc59pUhujul0jSdWwR0sncYicvkeCEX6hSMCvNP4/8lCvfBcOGpvmSe2gC/zHdxRJEbm4ypFxMrb9K3xEZnbpOkf6yiS/IsKDS3LOqaUGGyfvQvYcgGSDHqQzPfWBNuwglpwpr2RSjpdHcONxAFCNP8faISKHpVqoRZKfDCLAyAkRf3S/UImkTEPU09BCnC+jV0fh/3k6HmAOuNXAyQb/+RM5uTbojm038ohv7h0XAa38lynoKlJ7gpetzLhHD0kOC4iOy8xpigTeuDeaEAZQzIqAol3b2Nc+obg1eCcI1Jo7ABIEkAWkZXkltt4MoEawJ9RRi10WJQbpEeFP9N4Ms5tuV8e3ERvplEmTfiE/Hm5NIlm04PIAl9CmCjpHLkKIoYJ5cUoOzqCWKiiIJz3EvvkU/9Ok61HkpgPOXrPReDxyq283t6or9RFP4m7Kd6kIDh0whglmPj2KOunbcJIdEARuroIzwFIl1DhMDCD+jBkAsrBMsbQIkOR8mud0oWBPWgiTfGjvZLM/pjMnYPFfTjJqIwl8mUqdnZ9bvi2FU60USvZb2ZlVOy4JAGEQFVciSIOTgXMPkrYdpMa6O4p36f8hTkXsrDBz2Tn8zk+u4YsOlq4RYADgtf4XQxemYPai3OkM0EQ9C7hUnPQ0tXyBVQLS4Oeb6FyodQRSd2piGFRJXNCa4QvLy3Th+UXCjGZ1MkQNMa6zGR6AE1jTy0+88wmU2o/rd09b/m10tF02rnF1BScH92OJtK8TlpTmLURARBFA92n3YUYhUSUHvnoeBhLUuVh8GosKI0FqMHbyZKTxYq7ynQ7UiO5aFJFZR24XqTwdhrScuGQg7MU/qP77vCZ8S6MHyQJB9qg4IPIDIV9dz2TL6YCwZiSZj42hfSGKMsAPDglkJisLIWWvbgcEWAuNexvBo4EIw1gNhWBcphflWay7CcRI8HSSKxIJO/BJJjdvGVEQ+onk+14ajbKkucnR4pICagQNbriOAzFo0o7zKXT5fe7OqJgkWMKlKoXoay8Kxc8uGKaB4DkaKzcwyNv5+d2aN3AGiQpDCZTeJE+MibsApCs0lrI7e58aayxUBYILEOXSe8SI0UAUO8LNFCToaQ0OPhw296wJw+ShrxkX0FQhsD8QDgzmcZYkNXK5LGCDBhp9yZOzoEAzlWvwmIWCxcLPvZ5zHegjFmsjF/zB3r5hQ9zz2jyLYyQXHi3ClwGNmUd0TodqA+LK9BNc01X+mepVhWwBooEDLTplF9MFBpKUL5SjGRFXcnUbxKMmetavxgZTT5GcGs7kv4fS4sPkWjCCBuHnnGrg/60F9M9gjQlk+Y1yr9ECu4gkz8W+WvcEYJpYyZdkHc5Aaw8TAD2lCcypkpOZo4bb8dOtgHIo4ge/RWRQOih+QbU0VR29V+GM9LpZV2V6Cd/CGb5h4b4ppAeLvGSfTYGGwaVfcRajKM0LCVnzyZpS+S+TJTZmVIg8eqq3nQ19213k9Uhcge1LZlGq5NC3GvtSe4n0y8mky0n7Rd1nywfApe2oKYYpWKwGokz8yGg4SYfpQD2CLlp3Z1o8wtU6alGyZCTZaRaRopNl2C2L7viU4PqL1MEZyKTdZRYfkkbVFdVIoN37cyuQdd3LGDZ7mtboNdVsitpjNkDeMqtTIDwbkTJw8sOvUM9xG4IDUN6j5oavWq7O1OpCo+SL05lA925lSI92V6MqOEsPpmpR6UKHIuesVwPkdba+gYAoEiUHWEoSj8eGPpt3R2qyOATslPPKXNJwju3CPQaW7L4IOUtdZU1ATho8MjqbK9B+gbaRYnYaSllXrRyBUf6PmegYtcQ6xq3W895g3jsIsXhg0y+Hc7PnPAmU78GU48UTbwwr4GC3lRssfqCNMPwy5cN7truZHIwfz/rRMMWuTKGZCJnOLfkz9lt5Vq1gEOijg+uq2SKO1pStoXZPux81bTJUcvFo5sIjgcLpusaCeRYlalYcv1S/xrkuOCJvaBwErZ9McZiO6wCN0N8nzSETadCtMblFQVliAmm4JhgzdH7WW19lEsjuE+Am+V29tGoSc2ezz5JO13CoWTYpDGQGXgddMSiNveh4aYEE1thljwFzMwkC9P2y9UQqnkRF+kqkEY4sW8HBQbgPfg3WQWjAra1CYRKGi8AOHIZuA5c5QuPqounQCAx2TtSOEmf3bpcBW4bzTaFby3zZBGmrEye8mz4KqMwxSbSMHduje3qDMvt/sKg9T0TSUEcynEzX8hy/gUdGMzbdH+SX6hUgXRPTKsNlk7vqpmXuRKozF2IYmkUSKUYzPyr7haV3smldJXEhy4zsKkm5n7tVVuSDJs0BxGIqHJP75INNSoNYYoY5gtOJgCfFG5pyhTOVk7oZc+5RNMSnuyCnDGdrllzgGmcnQy3qp/dM1XMvgB1HH1Evhd0IOcYqq/M3LlKquY+O+7ktDallE+w/y1lE42kk46NHFBPCkOJQX7ImJnXXqsKUpEcei97tGg5YdZ4ARJhnsiNe5afm6XcVWtacJjKaVw/R4UFKYAkc/ChbUQX0Ylse935SyU1yKxLt3CNgLnywOomTPM2/6XBFiSMMYtS8ORislYHULLmoONhT+xOSEQclhjkOLqYb9EVQdW5C4IKQNZ7ywwGT0zuRJrILPNZr+C6qJVBGSS1xmoANBZSJiJqnYtN4wVXUSZNpTCmEUudjMp0pgWw8jx4O5aLiDprg5IcNVJba8WwcZVUKEtVtiRE79OTbR/76DoRF9MpLRH0UQRYAEEPrmR0SRPGRowoz+0p/1bQICCWSsxLXJacYyz9Jx8jqa9HpQ3jac1Pl+K+82mqGeeclBDWYrqUZC4ODSClqUtJTm3lFFqiuR7IND3NGG2ZtEtSkKU5zlIdH1NGIQK1fsKWIjWQSDwkRkgOW0xjXQ6YFPp2YE95MH+TiGJz2KB887N9aLYpOWqqfRbz3QhoEO4NRBAXOse5NT2j4kpIFzPZVhuhyXFDLGnGW3nRTIHhdI3SQGYo2WaEDVu4kG+1rTyoKKMA4ZkOBSYYBugmJ6P2+qES81Inn3fk8ZelufALRmQcxJWY2KqaEgQliuQLuUX04KBEyUZAoW7op0YaXeVSysM+hafLzNcc2JSVGCRmnRhqBvqIGLHt5XQrjlwFEPQunXvzyX243vBYaLclhZmN5If9XWvGz+MxXpDNttBD8Y2HwZPaA3KvGXhkqZApC+IWOC4YVNvXYWFp8wbym5QEIJ2izedUkMx0Ug6/QoCpiC37p7lag/zB6OvzGDFmXtWU2YYAXcR5L72AlF4cgXWgxvx2SCFYddwi6Uq08iFYXjUWuiY++yhSliAHEuVksf1ZyiPBkx9p2pP8jOuVOIdt9YgRJapJkPAkDs8MJwchOkA35VIeFIZC+cp49az4A/PciFrWXpyvfWT7ylQRDiW1YbPDNk0mylavQCBdlE0nujMkEkW4jVwHrlX6BX0r9RlBj0z7kqi5pkvjOZ7D9tk0u1JzbYz9+C9OPzIk+ZHjZrZuceAsnOWtnM0ETOVEM5LC38c6ewOFuNRJRjORqPfWT6+KwQ8rPjZvJ38WCRQJJ8pPoAKu1U+SfNVWz68keauZzIJDXZSzPoJu6RkFZ9vYRwKu3FVfELW4pBS6Xs51adF90ODS4LEb3PORjvTJywPf//uZyQWp2SSdiKyKEgrY1JHyLklgyd6TddVGcU0/qgUl41MKEpE9a0Sk3ls/THv6xKdPzkPFqB0x5VsjBnK302DGXRARjWUmoG7Gb3uQEWRITEO6XkTSudyG4iS9h8gHJCvXRfztegAAIABJREFUMsV2jHni1W5eUyXw+UYTvrRQcVF6hEiiQLKjwaEb2qPuwJ4pcwV7zXy16De0pl7LJQKgXJlt9g4Kv4GCXKXcCWvU6UvbUGCLultf648fpjbsxw+D8hiBxw7JqpGvxsIY6jLlkoxResJFdBTXO0Ki48KJ5JhGjiICvXeZSNggUmLhtVuNzZLsShNquMy83tFEGWGhgFOwJy1HryUfNDFRmQr9UqBl3yq5FwV93pWUhe4y50pgmCNBGw9UMZSPWmLUHDNSiCSzcMKRWKC33JgLUEQ03uKu3fpJQpknb+TRuFPCHqjsMGA6fDXYqM6vJcNO4ioRPcSRHYWkgwidXnznCVGXsHzphURxyfleSOcGeLIf+5zAkx1pssQcbE3qRklifCh4nNkpHmzJzXIVMUZ+22oyzT6Q3HjZVPAkf7lAD/OpVdR+FMYw6HES8VniGuRztYzpKyJRoHe4E8h7mGo5kKSrzK77MH8oEdUjRRdUzPrHsIwUeWvoMUPzCjJccoogEr3ARQRHhxLaKwWYVHfJHPpLlTnx6dCxHYd241I31ZUuzacdMyoXVn5kaYQnRWA3WW1GKxBYSbnm24Pz7xy2DKwc1ks/y+0whIS2ht2g1z1UZCAgqPYc5wQRUcQBIPXWnUKd8hZ+glKAUeKMWo9GDquLO6LEluwUka8OrtXvMam+G1TKUcrrMe3B3mVpU7ElAgJxjgvvFh56FYTLBQYHIZjXXdAi/Z540oL4XgDfwNjUq3csTZKwMtljxpI7Ndh2GjZWNap3UF/ZsW9IZNiozkaZ1Rhk0uVuRHiVxZgprwBS6bNkmZwCSUG+s3VNlOdwp66Sno36UT7ePNhAP20tTv0cNJVnpfrqDts3pZptWEHZSl04rAKDo3cZkUScpKibYA40MRrgnIxix1KI8VgcHbZmX8zl7E+J92Y+lvhfVDnNgXHXr2xkqk4z7tE2+LuTUh/Ub0+aziPjScKWpk6lAMmAFCUDjl73WU088I4atEUASZ5gCfwc6d0jPQU5N0Rpwb1yknH5fIi01m0Vm0ELUA0sQvSSYQ8iXUikmpkj03XbGUvK1CBlNG3uSHPvd3CO9GIAVe8IkBV2vmeaBPXJQVREkguG+khS0zECxZFoZORQKlgmeITEUv9Tly6peaDTm+fsl8z5nSzQSTpCLu4BDgxPg3jpO2Zlf+1lEgKK06clVIY6DtoodQdf18ErtkQRStJSuijJ0U0kGC/hPLv1U8njaX75B4L8jmJD/NtLRJtPD1J3dx0z6ks33+xrv5tpQGorMGc6Ot+dGu0CCfKLtVjZSNrL1usNbXx6VtBKAp0kYzFrCfNQI4NY+2+Vo4i0523ysy+JaS5tBeaSzA2OzFCcyS8fGjRbxi+UXtJxLjD5F0Pj2EcyCF3qGnODsAtQ93ZH3GbHSozAzTQ4W2ZntknvAOU2Hx3TnKlSbe47jCFN68Qk10ucs4mR3Hqvivlbs8oOuGR+gQRjkvfkI0BH9Ei2Y2SWIkCyHV8mSv3kXA2GJLaYTJdBC0ulkJjCtYBkVphzlRIU/qgspY8SY43rJIKul65P1/nFHPm8YOJ4RDLZ0dHAbE/2SkYcsNx+OhGmd482DfSQMYCVp9LTPJnvIJZIhklIO0U2DXpuaN3o3UR5FdCL96MUWkw90UR45ghyrtLzfLlIlVxc+aj5/xQo7xzuKEsGr6XgwPBN+9AShKaADfqZcCVldzFuo2yi9OkKYoDwXqMYV2dkJTCN6euiQTXSV2Gt+u0ZdjGZuS+s7YCXC+rJMGOYdqBgk19ogtKo9tD5QyYZ/Ctj5aicebjo22Zk5RDpNMfMyKIDi2kLMtE+5vBXomfv1S09L3rgo1PrJ3YPR+y8/BTd9MgOOQPZvnR9WAvtbZzpgIH0kdteNh06DwniwODSnRAuXYyaxKtsPZ4QM4owNhbDxgw9LfRoRfYCxvG7MTBMQtDOVA/DPnATo+8/ulQ5Mc0UYvRAKz4YFJAKtG3Kum87je2KpR34su5FUikrKRF6W2jCk5hu4ZXOYHMYfJyTD629ePxQn1uEaR/EqDk5X43IM7UGk5o+lOYluSOUDTFlzBq9e+G49GkmPaCe+UTZuhriMOyCiYz1/IozansfhF6bAXjMZO6bLpbYLvic0UnmqNblG710ktyZ+sPyDRkWrXNpZKxifqt8wx6Ez6n44uT6+auZeYh5nc7OR9OGhlDUu9y6usUqEIRpn6366eFRf8laIeqDcXDXjlmbLPOKpb9J+S57jii0PtVg/URqlmWGcgsipOTj9iS9Q7puxXMZuFok9xYR0OVbVOupFCuRNWkSKsa8g6PcfcBp+LkJnvWIkyg45F8tzx9D2UwTD9eFTO4GED9s25CFYcds76bUeFOkwTyCMnptkcmI9PnIse6B9xDn4CJTzGIQlzMWG2eT6feWOVi4sNJYzreFxxx5HOHQcuesb1GQzhJEoaMEz0VgcGCOiwflJxoNLKF98iXFUICaYwy1hxMlGhvk+G3j9T3d7oXpAWWoiS+UGR4PxEzzTOWH64NariqelJhBHH7V7LzvaHF0bruePhHrb2PQLlF1SV83luZkSM2/BBLRxxTst48iYMSFApiRyCdFr50PYukvR40kIGLdqh/IaSgSFwa24urLIGlTJcVqKQY+XXiX+Ik2I1LZWcW/IVfNnj8DBJhhQTPUI3PJel3aePHfeTyZTOPPTssVjwZPmMNqsVgIJLdecIbtGQQB1F8rM4CLXCpqPRo8qS1KiY5nlZqk5BebayHyEoE+xm0v5510OR7+kKvsL8MWAl+PWtaejQAycyQpl1YVp2lTC3lq61/LUppdSFEnhxjRU/peNr2cbGXpo6fTi1Ccy7s9gGhYPQrE2T4mY3kNDmZcNwQDlaQ8Sxl8e0V9TWxrTDgd7JHeATyZTAV2H0VLFrpndkeysqkoAdiCI5cDRaO6yZcbgYEeQxxVhmraKDsFRpI3ghcyzpZYeRRBL9xGdFG2UfoosQZinaIpDTcp+S1AWTaUgOZChpL/quiSxtHoMwqlbYPIxKVFQgBRpBPpemx7Oetk4UXv/tajxHB0kCgk4STLr5KYeAQdxRwpyOw70YCJJFWesFIhihObWb4JbyWMbAY1WVnk3cKT6XQZxGnnqZJs4z07bE8aAQiYIjnVwVeZkr3O1DbEImQgB9lHoc8ZbZVKl303xsp6Ep5EDc4S0Qt7iV1EF+W8l20UFVveYR8waWxFlT9YsstSsGY03CbNQfapH0GRnojU/ccoooZjEfROeselXo/q4G3HzKPqOQVfpAbybpSzwVJmpmgQISG7KckRd2/7sAtnfoRpDzzZfXDSiKyJ/059wbLczIKkbaTVSbJgNtPbFvfyLjXqxU3MLVe9BEUwA0Agppvu0s4ZgT6ii4hRhrpK7mj9O85RSCrGpKS4ZtcTiwOlPJucoXxPU4asf8H2W7UdK4ymOXUu7Rlte1HRSzRiTd6djZHiSwXoQojAUSxvyShrlrudjYzSDQXINmuZVEtYlqndNR/KGvbFjwpbHloQK4cS7Qxe1GoJKJhWNyYlplAjSW+nJN4GWQrYpduWCttXQkarywhAMgpFIkHQkT3AKEKH4LmIPO8lRtlGmXZs2TWwnX4OcxKLmOfyd1zA/G38XJCBsTBNAQEn9eKt9D8Hguh7dH3i8n1EJ2rQSC5xuzfa00N2GSuyQqECAlUTy45VfS15LFLrtR/Jp+pmRbtxh97NtN9H93F1KTsYrIavOu+ZnmYptdRK85M4iv6vxPJLbyVFw6wzKWgMOmZ+iw8U0hmvulWrrUaBhs2TBGPMuycMjsvgvGMUbPqCKlNjzx+WmffT9QaSpDVtDPBBmg0hsVhU/o6r1LdFSMqGYP3nCLok/EjyyZco6lKZzriUySyOp5ail2lXO0AJFGrRaRriC/3SNNRRLb+amL8frdj1TiCnbtiWfzQsPX80YQtFmANNJmGispRUr/yLhVqlf2aHJGFVoWNpTVh8uMprMELvE051oqS7hSVfC9fnhvoeodExOXy0wkfNYfMMVA+VIu2keuZn+zdHDNul/Rtv4pyD7KJSl0I9RJmIgwq36v1mBcKyXOrfEJHiUGZRR8W+NNnmv7qeUowwhbWZ/lYcKWa60oQURDTOz431YzD3bZLdrx9R2i1IDAXmBwxhP20Ry/dH0DyXLxdCTeZLDob9bR5rfC9JrD5F6c7LYJosSkSKJRnBPmKb70487+JpJ2edbKPE+Uj4k2kfWZoFXOo41OramoAVs2AzBwbB/JVyjFpYfMBYPiaEOu10gi5qoA1X7tcuc1IkIomZVuXzMshC8GhEMoBSyyEzCajExFyBIM19CGbXuKqQYs6Fipmvwfh3/HyEyDMBwY0swJlCU0210aomZFBTMqWhVlOmPeWL0jfDk1Mwlnp0VpoGc/2USeihlETNyl6FOrZQj6UIEKP0wq7HJmLTy6bHpse2T3WD7IMBorKE1H6V/89v4bc4035n5A2Z/9b9F+ajCdKYp/LUMlNrQYzS9eh63VvVSaS5J7XOWwT6Qk6S1Kqb95Qyq2YADWbUURnFpbEFz05C+WIzESLNc0a8aRQYNz7O2RN55qF3V9YOXJH6P8l0p3lD9Va0I65KqO14DtpVmpMMfJWJi0AJ3tCwVlEPg5Uz32XpbCKdEBEm0QvJS/J8K2edRBEiueh3D3AX5CQ2GV4xcQKyIENlE6aw5TaTtSyGZMbS9KIXbvuoN66oHz4JX+O4E+lgmUhErwcVJN1Nru0KIMJIodDMs537tmNi9JBWoTJFWd8Z0BgM6qLZnYTPGZy4pEx0GSHqgpJi58ziSRVPyxRUIUrfJ5Ui8+jCVQr3bbrAhHiSACjJLPXjhllVpqbrlcWZJGhIijgR0xX16AXbLHqdbJLTjXfiIxwROOAJI9GZ5n9VOs8/9bl5KC3M/GT7yv7VISBz1SG/azLF9ikC27xhlAkJCkXSCRRBpOQgepBIoTjoVZJF5zQzPUPiB9mJ+JXlavqs/yu0tTqfjgEAteMtDxuhz/wZ+pYnTuejSAMzjQwKDtua+oJ5z7Z/gsnaFcraEeYpSzkR5cB7RqQIIME3i6+F4V4CxJgpI6qB0mUslDSijLg5NkUU2fZ6b490vWwjRCSdYAHcxHkVMzu0GTItg+1OOg8F581+Sfmb9s/tt2b/llgdOYuJ6kgku4htlG1iLLLtASh7QS9AIOpld+mjEcgzqlhUh6T5rujmSogswbBrW2K3lT2FXKlsORs0mJi4wjanQbMF+4m3tPW4u0bC7YdMlYs0Tc0BRQsvdf/WMqM6WXn7MJtACUCi2RERSAoZCqhQXaw4yfPcdowpkEMR/fJWoKSZYBTpYsKTTS+9niIWbHtJu9vko9itz5iafTqnZTAMNfjhX2TDSgmx2RYQa7KSxF9Z5ryP2PZyto33vcbOI4ngkCMeRREuPTX4gIcGPmKMevIergUfPUiTdrFsLoq0W31hrFcMBHb3LRYZWwbxm9qpy+VnXMoGU9kKNhgQOGkKz9L4hhJeLsnouSUf1XJjPmk6K3X3xLZjxCWRqMESJBrykWe+cvHs51LYlAB0VTlJv9tTHkDyK9M21VisB2k3vXQ59kQUOe9x1sUosvCuueCudnpODMsPtkrJGTxUfmLI3hRNrd/jdHb9kEg60ukSSyoNUgR9lPNO7m2ki/BOArEIXHqsPBZMW/UF06RMZxSQwvQnL70whThGcZsU45ea3WwkY09ducpHxFBwlsjJVctJuMGGr6JiY82ZmJzBJMrMm6ap+sOIPjuRZyf7mTFwFf48xcCMqdbkFuKSmsxRg8ucMW2X1Ap16Zn7YrlUdiOsW4qobEREL+RCMud0UbY9Np2ovUsFvK6XTS+bXkQQLhcHTAqATMhgAxFiprapZH/nvwZUGzppmEg1AyCr+GmmQI2Nf9pJF8U7LhyWAokIVKlX9XcI0JeKRBT2FE+6vF4EFDukwOxA7zIkipAYkY4GMYlZdX1SBIw66Aao8w5Mbq2ZqzKrGD2XvJFEODf5zcaoba1Q8oywhhrsbnNeimsEq2GPiwydRbC0xBlJIJDiWiHNzOVoQ1WIKRwsU1KVxHSzDRnrkJAOhYxJtoBFaBgT9MpP8v6bIk/XSx8RHNcLXnC/ygTkWzQZPSOtnrAeK2u8jJUPJMtv5VCZAVme1f4t7Qz+AnlqiF6wkRg7bh2DQ+8YIY5YxqTJeAeJ1DmlS1E5yGyOzjqGY+IqsWx+CEFxAhvXwp6NyCtnyHZ6V3dV1BReKWFa0Zl5ngKzZm32BOjygYtSJrI1Y2YXADvRZPD1yVSIW8aDTMKKx1CUwZzUYxxJpQdc2kxG5vqZ7hDIl4YgmYMlGXQslApF2Vf+22voH2Ar6AWdyHmPbZT1wq383rqKNEtUGcvQe92Maa4FKWWmGIthL8ktuew8Jh6SsK22UNYjRmxFOsJTnOPGYRVd1s5jF7ntuQ56tTTRi0OKcUxIVCNywW0zAMccGBxwkHRBS1I8miU1anu13CgCRgDZqFYlggo4U3gwQ6gyoO1erykZbvIn5wtMYUrDoAa9nvo1bFjyFgmT868YmRV5s7idgAxsRa4CRaRP7AIaohuKYwQ1EBHL9yiCmJ0oSk+kIKdI2l0gOrUX92oiEhALz2VQY/H0RvFwMuuDFCiZ5gG1tYIxFYCKKXggcQw/VQc0VoUHndLhOsaIwrAiwCidYxejiHMUgL3INrIXrAIc4JicsYs0kHxhcheYKRwJTyHg0rXUSY1REY7maJ0g3ZbDaonQfBYZMstt8v80921LkuPIlccdjKysnh5JI9nqYf//87QyyUbTlRlB+NkHv8DJYGZWT4/ZLq27kkGCIAj45fgFQBJLNiEKHtlufWR99qUGWsfZC3zBUh9AsUOt5Ztxid+H9fCiw0Ondp05MMFmMgtyD3CLfI7ocM+GRFB788KHs4eRHkbzPnTLvzqTjOHxyry7EaOwBLune1lwkQ2VITptPna8T9533KeYMVb8cQ/YF31/dXypWC7VyoJkWMrhqEyOSqPLlvO/B+VFrg2d6o5NgHgXbsqhJlDAhqgg1M6mLZEVEF98QISy3MQkYKBi6CJf//Ji+TI33bKU3JNWgJxeQUBo7rBbU3PWm5McWs91EdF7s4DdAbt9Gifp0v5ibNgSbtYI5YPsVfD8ouDyE5C4ak32ClzSI9iAhCQpY1q4n9ZSpOn6XMovHPyu2X0QJLgrda1vGSIiFtNOoqa23qoQqMHxOH18OmP5RYLbkJchWyzvnZLlStX37jgW6081u2rRrqT0kDW20h8samr/SqqiMm9c9takyP5UuyIELf1hhaMENMhOPibfd7kN3iiPCRVua6ZXS6CB+EpIAilLxo/pkc2RH+WhmESFibacvYQ4PMvoBsrqxsVm0R2LJpsqfRqVVClVTWYAfnSsag/IoO4t/d29e96C1IDSSl++yXNW+uZU14COSA0qCAMiVApLd4m4YtZ0azVAouVSFOSCCfkGOfZi9HmCq1gFbDmjBaC/1+2T+8TbzvdpD8PDKCJjYCM2le83edlkiBymdh018PM4ncpwSQNZfdofL3mznl3f3qz9g8ao1Fw4zTGCHpLnKcpyimUBmoMgLt4U8Vj+fWJTqJhMNWBERkMMoCDmeAkgAjWIUFU0uAgg1HxmfvguJzLzLng38reL8QOvHURndE5BLrQBRjJYxmfOdH6wvC8BmrTzw7idD57vdTyVvr+rvIBLbmE+9fx+/7o02SQ9hqmxIZlRH4pEwg9SCESqMAERPS/B5pwm7jtbH8UAZpm2pCA8hCLldiYwDe87fuz248H3HffJ3QBwCL7fdChehmwKOYUgz9xxoWvO107j9Ymz+KSlfdT7tPYDvyB5/2DTH2BXV/08JAKkG15gpBmm4DHx4wESc8M02wybyqa5mQQ8ri9qwTNDRQElhysEAQwq8CQxBSmCSKJJr1auGuOXhjLFZHKAACsrsnuRpP4ptkki6Ro385W70LoW4D91PBuByS4fur6uq0+b7OQZr6ZKitIYPlUAMLqZQeSUOyT8ACaXEnZesViDO4G5RN+SMfe9wxQv4maPX1IKYysRZ5iA/w/jffJt52OGhnHnmwpuI6AHCTP7asWWj0i/0ynObFAd6KKkr1OzQiKHfj7923btWtejnmKm5aC/+DciMEbcQYKTspvsUx5T7pu8DHkZGMqRmFgkfopAFRuxiQyCGnEbK1Cl7QMT5XtjfMIMAFXAAF1ZSn7SU5OqI5G4+6LjW1ghiE3ixRd0fjg6Jy1AXwTZDczVmk+PizIR5UiPOo7+Xyx9AnRCrhBKc+Q1jckMD2s2EIA7YnpDSjPkfo7JPhL33HZfXQw3VjiNSVHwTJZ9Yjfcpxk5BIg1SuMtRsHvWjLvU65p5xdsw/MqE4vQl22PNozo0cbFAueElxNguwByEO+XXTjURYi87fJtk9dNbkOGEKh0fXFz/6bCQRPchsdhol0qPms0QvtpcaZxWKzSIqQAc6Jqsc3FxttEpxovdSHyD/3Kw1l/uEnWpphSTTPe1p9ne/ZapVw6p90wZLW/OxBPj3fRSA+Vx5LTngAPrKh8zOCimKRYCDAfmDD5cnG5c1cMSdwKDLasME+LNOQUQPfHiNFXxrL7TiOHym1gSIBzX0qOPM2CvPrI/ltOJ90I6WhBLsqcT05en45T1tCud6eUZX9r1vNRBDOAgUNjGo2Yiodhkka9WTjLY8tV5RCo0YZOYAgmXQtTBUJM397bwOU6o/heraGm3c0vbuYyVIu7LysSeZAtcvjGji6PXR8gh6WZWsEk7wt2WSfBvOHiPix8Uh36AewKYFABV2mtbHI+M09PXJ6SJpQACYhF/CTUh6RZ7xcKx63tgbI/ahv63kGMJXuQPpcoYenzkmoFg6GdTaw5rh8T79NDAjGyu0EEt022gd+9a9ezYukYbI3KU3igFELrfRQqe4ZVF3ri2WIhTKDxL/mBbvF3euIwAU5P/lHSJmWTCMCr0CfxDBXCpq/sqkJiE2yKJaKVW/vM2GYgdzqXhkldqRAwwehdtDqnm/rAUrByuOEioUYVHp5+gmFPY3Mel6T0Ev6L48rewFHj5Pv49IrFJOVZDp8cWS4spF+YlXO1srkiy4trxKy8iTHxJIjG0rtsR+TqLzFyGiab6q4VeiOaj9EkuPM8ATMCUIWqDJWhMomdgAUyHwIBNpHfmQP28dFl3HmIn4qRz+LrULaPX8Gw9XjPFDvyxarhyHJYaAgmAGU3qohOz4ikU7xJqGaFgFQVAXaBjpiRP+lDndkTWK1k2qaSqx1YUrKkREjX8iLT/rEpsuO8qeoSKj8zFFfdyl5Rh2dN94hYe+o8EOeKl+mz+CQwT3zfUXeGvvFnCbrXyy+FW1FiGcmVTOSPtsbXgm+afejI1ul7GshIreAy3wUCRSOaqja1ogCb4jYw3RFEmGGM2pwocOXvmlt/6L5Dxz3dO/ED2/DXz27fuwT5QLFIooeDMjmlvTSmWc4wY0zNQaUkEgSm4QES2E1qwQpVDpPbwCRvKtsIZwgBo2yac+8gcEgWlOcBZEz/ZKP7MwkIqELCU2kcKqHWEEwlUelLT714gkXRL+wU3uQBW1eeBqZZGgdwvIqnqCZbR6JTPA8NSx0YJEfUogWiBEATX2gqTIzSgM4g6YLyDwJUxLdWN3ELYZNqVbjlJvkwn/6OIdxUBJiE+fwLwz5pRhWKyG4RCRBQFDctVFBtEGOoQBF8G2IvOpRvO3fji8r3W6x27Zu8z0tb5diTF78PIEKQNL7E4CrQUHB8e5st2AnCC6xxzIsxIsd6s+aT0KyjXahC/noJjiM5KTLJlBkCDIoJSdhwsSQcDp1BpQ3ZfBK2cQ4dAnVgFvJUCDqBcDoYZGRXBAlF1MzNmC44qz9Kba7v6JLj9HHx3oaXLtVOFcPyrOAYb6w/pSWKcypcWCW1KStvaoEi5wcrFCe5bld7C8MCF8c/Zk3Jpl1OYlfP9XZ1zd1iFZXQ1YkuSOxEzF40zmiKTfryEbxtcjNgUGAOtZfOjNQjjECLJnBrXl5v+rrFvr6+48rceQ3AzsR3pUr6rWuL5STVAocEt5xGP4kto/LrYmXaL/dxg1yH5Bj0W00RoVXlc4ZNAOMuEqmQIiIwo4oYaBAjZyzLGVrlBTRiGKbKw8w3PCKwubmbcISGzDP3TGMBARMZEE8zQ7jPQqVEhyw/aPNBRZWrEzOUECDnNBYiJyYCEgIyNFBdWws+JMU3I6EqWJZ61TcJYeSPQsIYYPQSIgalIhALG3xpUf+XJCgzV9wKCJWDO4FpFMpNOTQSfh+Tj4ndjMRtyExrw8IcN4+K7MbdPMKJGVqOMhQC1UBinXTduhyCoQgmFxHg9Sa3kZ+iMELmU1yl1fMFMnsu0OWdfFzsVP7IMzzAsKL5Dr1K2OVtd5XogceePAMIOaQJJMydlYASECpkClQ4iWmYAyQw0tZhiE93kTmKnSpEbAgmRGPSGHgQUMAgysRlXcrnGZuyPQOormFaCtYirVa6XpxEkOVSCNcLj+PAFOf5qbLsaL9kxycEmjHf4nDz1wICGV2YRRXRWoIzp8w7G3RiMMKBFmCTMiYI+ASKafTCPvI+H9yA993eHq5SMFP/pHiAipjCgN08X8mtX0bKfWbmKwNrKSDC24hdemJUDHpKbHk+1t1G8nIq0AS8l1zo4nge4nJJxwOwqsL9Z3tvCrf++q6LcoJkuV4O3AIUwUirG6QlmvDBNIaZ2R1BARjITRBhSqNPq7Thu7iEPd9R6FChEQqjZj5Fzrksh0M01uV0AbOyEZZexKJMLApMhIOCr6uQ+5xEIn83GXh1+arEOdHXw3LIWfmnSxvkUCrEUuiE7eHrdlI8EajXHgUQ2YyxGQ64GyYzhTgLT2KPxecZqp54TJ/dHqxmlC1V+ATeHvxgDs5DAAAduklEQVTxsGku4zjT86iCIeAAMl/MKhWMETDYM8Wy/F0YGKKVxlG0o3/cA8bGLa0zmygvDmnXTzCsm6YdhsWoLtudZXd0e71zyzHmQAq0TV/tuggheTSlbjRPfVpcZLgF/xDwaQ9UMYGIOxNd1YgKVWOl9PpSgXjo14NdSoh55j1A357SabGpvMUXUk1y2ZkXQ7l2bZJ84vntmTPFtLmNHgJlRHe64Fl6BuGohaW1wMZ1wS1JviQ1slQB0HFU+E1CyVOShWfGAZO8YeDDcJ908FZzSyaxm/lyENMiNOnMA8GmAmAahvKmAvhERf7Y8fawaTBEhRA4n3zzvdpi2feFWeNLw2lGUqjhtncwpo0kxJdr0Y9mQV4eCyZdPdQulf6TvLWgkDyVX/7cuEhZBQtAWBiUyS0CQ3KLD1Fy5GIzfzC3jHxuMFfTVoNrpoSRBuwWRECQEPdseoIQ6BORIQI1TF1QmMAQGsQ0lncjMB2/ubdNXMU3N7hEbEg8Ulg65KzPlwsdqRjTrZbpHFh/JDvY/5+pVomWlRjqjktLsE641BzgPgnViI2UCCq15apzrXQDTCJW/s3OmcR9p7OKt8V7wZdg3433nb4el68IMT3VNzSMqchtEyEm+bbzbw++757AQsIjY9gEENnV2clUY84Sl2TxOUt4N+475vAQivizGhRRg4nx+zbjbmPWueVSsRwskIuI5JNi6UCpFEjTA4XFerDlWbegkNiiQJewyUgFbpYqi3yK4NV0rUwAE1M5yGmyUW4KGxgio/xmATugIt4Yfy2JodhAQiiu+jmNm6qPhClB0dxDTHqQIpx7udqLSKzr0xzrkTKD9u1YPdz0KnQVyv4HmzBhJVDRVlJWmunZqBJmhCJntFfqJxuryAo6hVrIhF+kapvwzCtMWx/tkXUQe6wz5DZ66HOADwm6F4juAnASbw/89rBHJnSr8MWbMADQiB8PR2Vmm7yMNjtSHMvxMXGftk15Gdg0Zu+VX6NSyoxPe0Gejp+821HXeqT/bOeFZS8UTI5xioDUNEsrLW4pRtJOQT3RGAvXLP5bhdHY4xDmDBHr8Muwu0KPaZVyU9xGsAoAnz/sgMphiSeuDhMOIWlKoxphAtIwZLgtGSuyhQN7adGU69Upy6peDsIPByjFa3yZEBDz1y3bQ1JRYr0raDVmnC8Ng1wzu0m0VHfZx/DQSNOStFip0RhJqAAtY+rTeDeaxSsesUQdwj0GuGt4J6dFTN1lTUJPD2Tx3bUT4SbKSFuXMTAJ6ii76cugChRCYhsiwvvOHzvvO4dyN/nlRb4RNOwZP4gXGe7PmcVfHEfs1YRXVzJ84pfDeVcs3fnZVEqdsKa78KRh8pmTbnHYWdlKqVWCkQRijYtkPbXyKJSgYEKk1jvwqSwmppzEdNIHPUPs5vpaxSEWYw4dVAPBk6Aa6a6YkLpiNKn1LpzZuvTNCU8E0mEd4DQ+HnAUUQzuJVc/5x5MCFCHhlcdEzphL2iUuM1Ic8MslZs9pbpUxq7lvnOaJgSBGctjc05SYjN0xg4N8SU2mb54eUy8m+3Tc/Mimummvzt/J7oDwMzCR/IwGOHzsczCYWmEKh6C2+RQHQM7YbT7hFBUqcCNogJf6H6fxomH6VC+DtkZPOxLxhmDsXPf+p9ijTw+55aMrcfFK0OFOGKqFIGVCLsyYsMsDisiBrusLh8lSUvmYNXEXdZPoJ8vd1qrTZATtYFlDDiOYqwC6sUnZConBQNDsBctxQog1DRnTbFBTKgmplSIjHC27nAKpuAwDj5CaQ2HUO+M5CJfBaN5JYyL7gV+VyBuXLlLQprWohy2wATSQUfCYFWV03f+DK4sPUcyNnCe3BUqviUB33a+78tvm9ZIgNVNpXJSpm99Y3hMvk/unnUKAcLImcYHyfQBTLoNE2bUzIUjzDB9/hawGe6gCja126abgMRdQfKmchvCCQHfdrztvO+YhtvgJtzEbkNcNo2SpOT+JQB7Yo3sV7m424t1tXLhLz4VLsBwAGBV1dIt5wYksgqGXDonMbpjr/QN92IddKWB1Wze5NhsOX1x291CAU1yqkwDGI7FAjNORe4oxsB0V5jC7fhJ+KQvx8oWWR2HDyOYqbIu5i+sbX/LUBmHrKdoLABV2YRlv3r9Iun3ilcZsD65PqFcbJMVZGS9ejIqCL0pgDBXbPDNE/m24z75MO7TABmaDQA2lduQFwUzZrIb94m7xWqoXn8qLhq4T94tYsQuzh47CYyY2ygERKEKCMIbFmTAbbeh8m7yMkSAm+LFOE0EeJt42/nbnfdp34YOhVE8qDLktO8Ito80Rz8uSrRL57ts1I01KnI8P9j6SPdPB2CH8lzzupAy/9K/nPXbYg9WFtnxKaSRu/YXlMUtzOzGVGp0PcPHLlM9ComH8D5lSNFisjrgRDMNL0bb5AUiwBA+ACLmyTC9AgWjQj942MENYqawR3pyjww5BCoRTnVY7xtjDKGmttYK2ojP61xNPUOrplfdAWgxfQQkPHZhAb0wjZZpodNCjxGYxt8eYUh47EIycDE0vH+3IQoY8WDMQPSkrJl6bCYf+kqIHoV00J6IxbtIAGwqqhCRabzPw54SKlDl25RfNhnwJGJ823QI7sYfd/7tbgYMxY8HSXzb8H0T2agI9eJ9va3T34vEni6tC0/c0u+euKVXU4zgP5pfc3FLXfmSW6pYUyjdlC8lUwZvzz9Np1RW5UjCJ8SZQSBq2AV3WIifSOaPNSiCVchpYp5XtgGCwfAaS9KfKotukbDEBW0MC0liRyQLejdZLnYRboEU/JXiKavfANDNbvfdaQvomK+T1sRQ8FU2w60mM58Ev7glPEtpQpivUOSrDpDvO96nx85BcJp5gGNTn/QLVblpCLWdJKHwnTyCT6aFzNoZamfPvSJUMUQGAtz5wwKY0ZPBAj7mdL0N8gDfgE2Ekyow8qZ4GN4nJ/Ey5NuIdC8H+eVFFGACD99hOHQv/35uOQCiK2555gok2zSD/oCIgC7j/xC3eI+XG6AKHDxgTb0sx3K3XqKd6/sSfng0jiKRzO8gQYRDuJvYKACjQKXGrP5Q5suQhBJ74kQL3RjzBCcnIGmKN2k83pLGRnuW0aM+oc/f5ZI5VI0vqBkuFo7McZ/kzBQvD6AbcZ+OqWI2VS0nMMNpRsAn3/JREXRXTUJtLVeVTcSzSHwlAyr2fKSg5k7GfHcXXIJJ0KAKaMwhvlM4OQVAZH87A9MwhVRRxYvIi8ptpEIS35eKIvD5sC7vXjYP4JAt4E3Djzt9f5Wgma+AWFJ9/Dg8cgQg66xXuYyWVgGyQd6qFcFuNco6aWCuv8KvHHOQF+8XeR9ecG73qfLSSdFf/jO9a0v9xPUU5ABWxByWziOBqPC+S8bpnXYpkIwUxzQ+hz2zEY3LuUgst+zG5TlBtYTpNi2vKxpXq8SpM0ZyCAQ+lzOaOlRCsDJ8u4yZvdiJ6cs1pBfBVy5F6kXL9t/30Ay7WzvhzVxiTSRS6b4Zfrlh20QlQVf0IHKnW4hnCRECug7eBm5DNhED9gfvht1CP28CcdOchMhQeRnyy02/3+SmEMFOIB0YKrEI2C6yGe5Gz/TbNCEE8GPHf73bloRwoTPOx0K1rfBPK5bTkwWL6sZKtW1Gy1EzLN1yMDmyMFx8CnBUPuyzVvpa9NK0aZwQhbqwMEmHbckNFGcYLvzKaMHqVBPQKBOqkAlDBIPHgkO0WR2LPWcpTbPpu1taxHBi8YQAeqAn+QOIDOiAHCnpA4Yhc1W8+d4wDd6IiVD+QVpfKtT0E5S8MNJzgV2Z5ISQSHD0LvOS0xjeW4ZXIBzfNXphAFBFlFDhuwEzggGee6YxcRXwGK5RBDcJenIARuJOm7FbG41QwxAofNZqrB/3epM/3/TXb/K6qTu13Gn2/ggr0aGjAXcjH7wNed3UE2r2CSN+PPjXd9tyHbIlmT5gjzjc8cdFlVcPJR1+DsOKWzqb8o9xS5Y5B2Ss0foKzR/rD469YpgUs02DBVRjkqBTrcy4Ro/PKACTd98NfOi3jS+bbuKJZDAJfMxY1Bh7yyTfiWk2c7VjMshRcg1lN/st4uIRCVlhkFwKyXKybrejAHNvWCkozeQJlG83CRzhvA50Fy1kzMiN1+VECUtjxuV68FJpv+TnNP84Td53zhkWv6TszTmPsYOn0Gf2QkTUZcrkw8UK4ZsRuDqk+spV4mr+ZchthJiQ/HwS3LCZkLhPfhvyyxax1/edgJnJw/i2cxredv7Pg5vGmkulJQ5ZKD2Zh57ClAl3uy1WeIZhjbWO17P6db3ROiQlX7NbOtJo5ZlulaLalgjWuKW/tJkoGTlrWqWaFTLY55KgIdRSTXm+ouw9oQoCYgrFfGMwaoWNTXazl03SIg8twZS7gXMshHFN6giSlvRlVfcs44Tuxs1d2F3k5E9E6CYX/wfCIRa5Ho4GISUbKZGUFXKCuRZR2PopyNmWdPKnLV1Yziqx61VOAShu9NHxBYHN+BACMgYguE9Oi4+ITGSGv8S/6EFMkz3RneUexPuScGTG0O47/nvybcifXvhtE1/G2x3Wu4GwIeO24abytvN9Yk6+PeiS4m3PmI9xC0YLCkt0BgBQjWmZXNSzYgiy3HHPcGwdTogH3zGObuIiQZdfxUgtdgk5nwhWnsopcMkVqTw051Qy8JJctEp6ew6+7ng7U0TxwGLro0MpBo2BS/rSILtpy11lcWMFxZlTw1E4CkRsk0AhNDX7miCVqzEYU+fX/MQlXKAiLbOUAkhOzJB8dXZIsVw1iY5eZmz7FlfKCeYdkY1vTIuVr+a/3MEwhgyf2sJMikmAdLeqNpBu1Jyhnj3dfRMMg8oohodgRAZ0OcEgIq9DHtRfJoZSFd+GfNsUpApebxDgb3f773dLLoVT/qPN09wKyQhi5dCCkiKqmfxcLogcFST6PR8X3HJGWdKpj42kSxkAmeHtrtAzADuXPAE2y7kri8dqImXpnyJ8VOUrST5G3bslDdL1FFKPJJEViL3EpGu+yKQRu5ome6B1ZKWPpJ1Qb4iW+sRxaSslTVtxfVsCPu33YuYk2SGIJJNkiQzIHjjfxx9Nvrh/IljF6l1Se1+VyGFwVGBCAL6JAwURcneZqzJUJTWVk1+YK+5BLsQbhCkT4SIzLsXlnOP2Un5jeTBD5vqMvd3sb7nh4bdNXje62vFY0G873h74MWMC2TYoLQFiGjfmYLvH3bLdPuZrrJyFsvdnidbsoM4fz9xyvF5S7sAtXe8s3cIk8i+45WzeVAgyC+cKWCceQ+oOhFdqodHOMEVJUucBzshDL5UKSJ4p1vPws3iybbqlz3ZiSYmk+BgKidTNwGAeY1/sgYA61Rhk7kkyX2vXzOHwl8VskxziNl7LgezI0KLauSCfcO1sdvielguTqe/hga0lPGUIwAiY1ovLW+DQC75yFbBLeuTyP4ukmAUyzaCCKakn3dHnko58hMccw9MFhi8xITeliGRuQdS258d600hsm8YW7+5xv/u0ZcaaiJKa13IeTCHXHNcPj8PdZgEFt6SlIXUxWefqnAdf7kFDFX1dmzfJBs4tAI7qpdeWDFMmyhrC0ord4E/Bn0ySlaVkOfWH553UMs0l7+P2CcMd/wYG8aWSCzSSlSfGI6F3tVGtpmeLVr0NJmA5A9aDmnsAurcgshgXc8ZeAFVbk+y94TE62eXRkbENegoSn3joSLXy9p2JffbirAArU0pGbGd1AnwmW/gwKCoDQbGWVYGEcBvybcR6vLvCwPcH32fFcBD4M0UzgO02YvYFWg4cgu9jGsYeOFvAxSeQ4+B+pErq/oGSD1fWxZT36LI/Cpx1y7IonnQLWrGn8ku9LI7Pk4JS+IBhqrmlSRr6YueZ7KQup5W+rmtjo+JrZOjhqu+K4mL70Lpesfl2SH8iG+uaii0sf+aW0g9lIkXOStKGJbhi5GGnHVttlLrlgny9pYpZWva78Tb0plBSBC8j/Fp3o5EKUMVia65wJGQmMhOYlRu6r20br52M3VVcDWgqB4argP74bhzuKZ6RX5PfuASQc/S2acSh3GYSbRTm4iRWGJDq/xDKV9H3z2HYkrgL16zBWCx0sN2z1vQNlFA/FUh5RUHQLJ9qjmbUNpX1bLbcS5ZldbLpmdK9t+HAM0ma7XWHPhDRRdmOGJv4p1z0aL16VdhkTHkyzuW7xojeQ3Z46QGgVsbIt5QQSHIJYoxHWvtZrqz1bDQpxU3ySXoOvd9cF+3kJG8RXAqD+TEx2RVfuAcmMFFcIYsHBY4noLEWdwcIrgOFrFyE6rQJ3I2TUGIIwZjYbDXXrQBkmpTbUN+wJRhhE0HK3D2iQilfl6w6RBU/1y3nkT84i5OYT/CskecinhzBAxLLAs52Uu8jE2Y/Ufqq04Vnef9WW5kBY0GlJofMLKZaXuYOcRpz+vXMI6tB8jauQs8K4SeOpapSQfDw84l5TmiwqaWDy6u+q/FAfOFyErRXSUGMLOoPSrFZ8WRvm2chCO47FRhDNP3OnsvDpsGwFBpKe9QIRHi5uq0M7NL27qNjhmu6PWyYoJkHmMLQKEOICMuqBJvH74OBFDGpz/WjJ1ZE/QLEZkBJO21UPuGWC91ycIiFhDzDsycrv2OfAxKrsWn9FzSaNRZNx5g1D5iAz44v6QN8tOPjUnF5I4IOxnCEXsU5zxbMtcvsk+NYw8/yxvHi089l9XdFgTMvYVkjHfh1xbI4avFJqzZ83E6O77602mTmZcefzFl2z16fg9BEEHqo66JD0PgiVFsBAQISjh8PHDrPl4/bKCKaLsA4PKYpzCXyB7B5RhpkWtEOPc3bFRkL7fWgxKm9R27BscDPc0t882KA+F3cghRmC+j3/gRQQehjbSihWBtsIjNGGqAKKZvli2fK91WKhUfFctYXT5yDj5jnq+Pygedq+HT9Ew7Bk/j/kElwov7Lwmds1qSzpLAX+tJeFRhFLF+INNlnRIqcW2SpuHiVfNZ5fTC4PtY/w4lNmoT0684n6aA8HNv3TS2VVIWNnCCmBnBTla0o2z3fHgz7hFvwFZroXFHcgiO34Gy3LCJcfqzokCpT1a844wegMCBWVIiVNtq/qFeIrt+WrY1LcfATffD3Hdfk8VGC0tP1gvr+1UX9yN7jIus6z7y5EhzP5aX8AZmP1yqvklGvoKaUMPxFcV1iE5vwSs9MwUSuvOPyD0fxd+6Z860YI65fjqytGRyx/M5xCcp1bH/5rjMz2x6TD4qvWbap2Ijv94AR0rkei2tA5Ak8fKJbnu+e3cc/Z7c01jzQbbFR0fchMAYcEmFOeAylTJLC6+/JPmv3DyQnrWmNic4a7thd1/6unzmedAVOhHIuFb9OGAynyCMPDS52KKWRSv2sVfID2VUxVhcdWhNyzeqFQoohohSKsOjMVzNkPYEmS49Sre5dfXa071JqsXYyS0H9UUlg+9fvw1NBd+OPnffJdwh9UV9ARMyg6uuJIjN/JGs9V3rmjgtd024+u49/DomhjWUipZXi2IuhGeiMF7S0tgMMO9S52o+m6bCYpHRRbwz6s/nIQcW324vxfv9xeK6hEH5QrIzhgw6p0/6zuc68+QeldGmiVD5OyoYTI7XzqJwFclITMX7KXO0RhD5J8qiveOq3D7vg66OUirR/L47tTy8+XwdvezIXOU0ovHk8dTi2OwSWE7lcHJ9wyzPjpDVRty7sFpRwksP56r6GnS4i8XkxpSMFB4YpT9czE2YjD48UEqvGVA+X9jjw2/MHf9AbH5r4T6TxET0ceePp+olDsKgZjeJXmScmwYkHTo88MdLxWZ6rJRCZcufmoUkfhHRaJPLRV/9uPvk9PpXtdRPf44AEDY9cPcSzv5wsJvmYYjPWrbIPCaG1of9oRPERe508yPEXDX2d6uGiTiS3xNdfFUNTQUjqR+bCAMsttopdPoLEcUeU1ZHGyay/0DY43Fo987GV+iUNnB6VI80dKmkl80pzLT234sgwp1c+PyKN/VaXpt+sHrksdnpp0cEaxt+Fu/6hx/YysBs45GGhPymQzFIeAgPuM2b2eBroFBgNFH7MMFci84PrF3d5IPJm2Z9/9uxjr2Ytz9IkPRJf5YOpx8gkfUHTKsdiq819TBpLHhtwENtyvPjRIT8x0F8UkCeWuHrQu6I4BK2jrqx5AAvKrmczurH0Qxr9Xn4pkwR9bEqe69big95pdXfpnmrvkXoO+uRj6f0PYaJtGxEo3aZs6tljsAHz9eBUcjlATOeOIcqaRRDLyH/Uvkvd0mlo3TzbLY1beGSP/jN7WVovn2Zu+XHAV1EsW8LYoa5bICUsD0wSPJKDX43vxmCXr0UB/eJTR33JSL2Xzld+uhiP9046p/9ke8r/LDrulky/fi5W1w+4vZfs7bh6sF/48KOezj4u84eP7eaLbCi/bZ5yIwCG+pLj2HwnjYQPMnOpZnVH2UGNXjb0j9gtCJL+ilvQTJd4Zv0tYYajie9sUHQvCMsy5eCxfe1K8Y808Vy8Wm42uRrdS674nJG+1jZXJZ7I/UB2/anOzIen8spzDWd2uuYZXpY81nl+sLXh/y8+AbANgc91fFHOIS8DRm4mFRsahGubTfgw+gKbj0lfNobPSvHp+PvsFiyGaYkL9S+fSHlZO0XZcbV7gOVogZSiAILi/Xcpmf6W4q7+s2rOhuW4X/kdv1Qvz8cly30unp5fdkWLH9d15KKeili3Lq2aZnKwl8SJ8A82zBJ/eWU19v+5fdKPTYW+QHWY8gO33JpDBZsIgUnGLtXEfcpf7+azz/SDgfz6+NRuYevf54hkq2ChL/R+79GMNhvrZOrgSca3nwclcypfbzw/jtBgXSuev/niXYcPvz6uuumq23n48+xZOrJ9v3hQMg1hngpU/7ObLvWKyjvnoeShHhwYorNFZ+RTey4+Em0kro5/OBNt3hL3dw3FEErOlRuKWywWCCOGcFIIbpn+Qf69LWrU9AW3sET8Uib1zgv0lX+kO6Y6w/ADDNak1yUqOwiFRj1PYKx9Rtc27caVfPlCMz9VffGbVz/6xRPK6hfrun/4J099hKkQNPFp4Vb+1F31XAXvCfSsu01VdU1R9gyu3C2C4mvSqtQKGP/wY6sgq4qvuyOxa5HIENyGSKYYPKa8Td/ywsjYVAk/McgfAa3TjctiibgOtN6LnsDYutOAHMrMr8oaWiuKPyOrYLZwKzeib0xylJ11seiga7x6/moc/8DYflndsz35xDNdmFfjn5+qToiTZaBnlkoVOBb2dMUVh/FsuyQgyX2mCNwUv9xkqPx4xMYS28CfX8a/fte/vOp98j/f7K/vNg0i2E0e0wh8G/pvv+i/ftf//GH/8Zu97XzYp0rn9x+bC1f/D8CmeBkCyC1WiIEARrnPyMyZue9BU51/b4OO3/Lhlx0CgqlicLIQ1pUTOF4QrqkgEpX7U+W7KeKPS0GOQ1Zxf0VzGcvxvVWm688j9f19HffMGh+pm2cFwqdCR8Zokdn21KkqYmmQ/P+QX3hQJiR8nTvJ3bmDKaAivqKXKl+GDGCo/NM3/fdfx+uG/7nzv97sfef3m/zvX7f/9Yt+v4mq/J/f5n/8Zr6tym68T5D89UX/6VX//ILXzd7n7otCfeKezcbZSlf6iow30qbJI+eFbYJtk01xy4nEJO8WGwBI9ak7xeq/P3iUbH6qrJO+pAbpQprnOo5O4brVDRgssm35+FGmk/5h+FswlIfLOcGotWHxWL/y9N3/WJiwamvqlP1Wn39xfIqtfYdACs5WR5ZZCqh/6TJpCAhI5v7jMal2yWWRb5v8+cVfJa+bvm7484v+y6v+5ft4HXjb4RrjZcivL/qnF/FpiC9jfBsyyVzVhUPFFyAm+LrJTUFf/tj4SegPNM0pZTE53zXcB49sQ2XmLp4b8LrJy5DvN1X4thW2W2z18tvDHobfHr5uWEiOz5rSBuPnuekzbuETt3BpkoOGOakXLDy2kINU9ckwqYW6vG3hlyi6XlTvdf3Sk8OxFBGeuK4fv1fOfMldV4FI9uv9bv/Sz9TIoS7+zFMryTgXSlaVAd/aQUH8+5/k334ZkgvzvW7yusmvL/rP3+R1ExF8v2GfOgECrze8bBh+vsm/fNe/3u1xt23I902N+OvdpmHT2B/PUk+0aUtnEaG+UDJx9PCtBMcTuv6//gvdBjSHIksAAAAASUVORK5CYII=
!!Modigliani<br>^^//Musée haut, Musée bas//^^
!!!Jean-Michel Ribes
:''M-'' Trois billets, s’il vous plaît…
:''C-'' Exposition permanente ou temporaire ?
:''M-'' Modigliani.
:''C-'' Exposition temporaire. Un adulte et deux enfants ?
:''M-'' Vous ne l’avez pas tout le temps ?
:''C-'' Pardon ?
:''M-'' Modigliani, vous ne l’avez pas tout le temps ?
:''C-'' Non, l’exposition se termine le 4 novembre.
:''M-'' C’est pas risqué pour des enfants ?
:''C-'' Modigliani ?
:''M-'' Oui, un peintre temporaire.
:''C-'' C’est un très grand artiste.
:''M-'' Peut-être, mais c’est la première fois qu’ils vont au musée, j’aimerais autant leur montrer quelqu’un de stable.
:''C-'' Modigliani est un peintre très important, madame.
:''M-'' Oui, mais vous ne le gardez pas et ce n’est pas un très bon exemple pour des enfants un artiste qui est renvoyé du musée dans une semaine, reconnaissez….
:''C-'' L’exposition est magnifique.
:''M-'' Je n’en doute pas, mais je préfère qu’ils commencent sur une base solide, un peintre qui reste au musée toute l’année, un emploi fixe qui les tranquillise, vous savez à cinq et sept ans on comprend tout.
:''C-'' Dans ce cas, visitez l’exposition permanente.
:''M-'' Vous avez qui en permanent ?
:''C-'' Oh, beaucoup de monde, Poussin, Watteau, David, Delacroix, Renoir…
:''M-'' C’est peut-être plus sûr, non ?
:''C-'' Comme vous voudrez…Ca fera quinze euros.
:''M-'' Je peux vous demander pourquoi vous virez Modigliani ? C’est une question de place ?
:''C-'' Madame, je vais vous demander…
:''M-'' Vous ne pensez pas que vous auriez pu dégraisser chez les vieux ! Watteau, franchement, il a fait son temps, Watteau ! Franchement !
:''C-'' Madame…
:''M-'' Et Renoir, il n’y en a pas un peu marre de Renoir ! ? Les musées, les boîtes de chocolat, les calendriers, ça suffit pas ? Et quand c’est pas lui, c’est Monet ! Il n’y a pas qu’eux sur terre ! Ca continue derrière, faudrait qu’ils se le mettent dans le crâne, ça pousse derrière et ça sert à rien de faire bouchon aux jeunes !
:''C –'' Je peux vous demander de payer madame, beaucoup de gens attendent.
:''M-'' Qu’est-ce que vous voulez me dire exactement ? Que je suis temporaire à la caisse et que vous, vous êtes permanente, c’est ça ?
:''C-'' Quinze euros, madame.
:''M-'' Ce n’est pas en traitant les visiteurs comme vous traitez Modigliani que vous donnerez à la jeunesse le goût de la peinture ! Venez, mes chéris, on s’en va !
!!MON ENCRIER
"""
Vers ce vieil encrier que je vois, sur ma table,
Arrondir sagement son ventre respectable,
Combien, combien de fois
Pour y tremper ma plume indolente ou pressée
D'un geste machinal et presque sans pensée
Ai-je allongé les doigts!
Que d'inutiles mots, que de vains griffonnages
Traçant sur la blancheur virginale des pages
Leur sillon turbulent;
Que de phrases, avec tant d'amour ciselées,
De ce vieil encrier sortirent par volées. . ..
Que de noir sur du blanc!
Que de billets hâtifs, que de courtes dépêches
Resserrant une idée en quelques mots revèches
Très strictement comptés;
Que de lettres aussi, de longues lettres tendres
Dont il ne reste plus aujourd'hui que des cendres
Errant de tous côtés!
Et que de vers, surtout! vers joyeux, vers moroses.
A l'ombre des cyprès faisant fleurir les roses,
Et chantant tour å. tour
- N'est-ce point ici-bas l'antithèse éternelle? -
Les mille sentiments qu'une âme porte en elle,
De la haine à l'amour!
Pendant combien de jours encor, combien d'années,
Poursuivant ici-bas mes humbles destinées
Sans éclat et sans bruit,
Vais-je, ô cher compagnon de mes heures d'étude,
En tes flancs rebondis, comme à mon habitude,
Puiser l'encre qui luit?
Dieu seul le sait; que sa volonté soit bénie!
Mais quand j'aurai quitté, ma carrière finie,
Ce monde hospitalier,
Je veux que, si quelqu'un par la porte entr'ouverte
T'aperçoit sommeillant sur ma table déserte,
O mon vieil encrier,
Il se dise: "De là sortirent bien des rêves!
Bien des illusions, bien des chimères brèves:
Parfois le mot touchant
Qui fait pleurer, ou bien le mot gai qui fait rire. . .
Mais - flèche venimeuse et lâche qui déchire -
Jamais le mot méchant!”
JACQUES NORMAN
"""
''[[◘|VANIA , le monologue d'Elena]]''
<p style="border: 0px; font: 400 12px / 22px Georgia, "Times New Roman", Times, serif; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify;"><i style="font-style: italic;">Sonia sort. </i></p><p style="border: 0px; font: 400 12px / 22px Georgia, "Times New Roman", Times, serif; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify;">ELÈNA ANDRÉÏEVNA,<span> </span><i style="font-style: italic;">seule.<span> </span></i>– Il n’est rien de pis que de connaître le secret d’autrui et de n’y pouvoir rien.<span> </span><i style="font-style: italic;"><br>(Réfléchissant.)<span><br> </span></i>Il n’est pas amoureux d’elle, c’est clair. Mais pourquoi ne l’épouserait-il pas ? Elle n’est pas belle, mais pour un médecin de campagne, à son âge, ce serait une femme excellente. Elle est intelligente, bonne, pure… Mais ce n’est pas de cela qu’il retourne…<span> </span><i style="font-style: italic;"><br>(Une pause.)<br><span> </span></i>Je comprends cette pauvre fille… Au milieu d’un ennui désespérant, lorsque, au lieu de gens, ne passent autour de nous que des taches grises ; quand on entend des trivialités ; quand on ne sait que boire, manger et dormir ; il vient parfois, lui, beau, intéressant, entraînant, ne ressemblant pas aux autres, comme au milieu des ténèbres la lune claire… Être sous le charme d’un tel homme, s’oublier… Je crois que moi-même, j’ai un peu subi l’attrait… Oui, sans lui, je m’ennuie ; je souris quand je pense à lui… <br>Cet oncle Vania dit qu’il doit couler dans mes veines du sang d’ondine. //« Donnez-vous la liberté au moins une fois dans votre vie ! »// <br>Eh bien ? Peut-être le faut-il ainsi. Je m’envolerai, oiseau libre, de chez vous tous, loin de vos figures endormies, de vos conversations ; j’oublierai que vous existez… Mais je suis lâche, timide… Ma conscience me tourmente… Il vient chaque jour ici. Je devine pourquoi il vient, et je me sens déjà coupable. Je suis prête à tomber à genoux devant Sonia, à m’excuser, à pleurer…</p><p style="border: 0px; font: 400 12px / 22px Georgia, "Times New Roman", Times, serif; margin: 12px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify;"><em style="border: 0px; font-family: inherit; font-size: 14px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: 14px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 0, 0); text-shadow: rgb(204, 255, 255) 2px 2px 2px;">Extrait<span> </span></strong>d’<strong style="border: 0px; font-family: inherit; font-size: 14px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 0, 0); text-shadow: rgb(204, 255, 255) 2px 2px 2px;">Oncle Vania</strong><span> </span>d’<strong style="border: 0px; font-family: inherit; font-size: 14px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 0, 0); text-shadow: rgb(204, 255, 255) 2px 2px 2px;">Anton Tchekhov</strong>, Acte III</em></p>
![[◄|IV-Scène 1 • FIGARO, SUZANNE.]]
//repris de l'acte V scène 3//
;Figaro
//seul…//
//il jubile//
:Non, monsieur le comte, vous ne l'avez pas… vous ne l'avez pas !
:Parce que vous êtes un grand seigneur, vous vous croyez un grand génie !… noblesse, fortune, un rang, des places, tout cela rend si fier !
:Qu'avez-vous fait pour tant de biens ?
:Vous vous êtes donné la peine de naître, et rien de plus : du reste, homme assez ordinaire !
:Tandis que moi, morbleu, perdu dans la foule obscure, il m'a fallu déployer plus de science et de calculs pour subsister seulement, qu'on n'en a mis depuis cent ans à gouverner toutes les Espagnes ; et vous voulez jouter !… …
//Il s'assied sur un banc.//
:Est-il rien de plus bizarre que ma destinée !
:Fils de je ne sais pas qui ; volé par des bandits ; élevé dans leurs mœurs, je m'en dégoûte et veux courir une carrière honnête ; et partout je suis repoussé !
:J'apprends la chimie, la pharmacie, la chirurgie ; et tout le crédit d'un grand seigneur peut à peine me mettre à la main une lancette vétérinaire !
:— Las d'attrister des bêtes malades, et pour faire un métier contraire, je me jette à corps perdu dans le théâtre : me fussé-je mis une pierre au cou !
:Je broche une comédie dans les mœurs du sérail : auteur espagnol, je crois pouvoir y fronder Mahomet sans scrupule : à l'instant un envoyé… de je ne sais où se plaint que j'offense dans mes vers la Sublime Porte, la Perse, une partie de la presqu'île de l'Inde, toute l'Égypte, les royaumes de Barca, de Tripoli, de Tunis, d'Alger et de Maroc ;
:et voilà ma comédie flambée, pour plaire aux princes mahométans !
:— Ne pouvant avilir l'esprit, on se venge en le maltraitant.
:— Mes joues creusaient, mon terme était échu : je voyais de loin arriver l'affreux recors, la plume fichée dans sa perruque ; en frémissant je m'évertue. Il s'élève une question sur la nature des richesses ; et comme il n'est pas nécessaire de tenir les choses pour en raisonner, n'ayant pas un sou, j'écris sur la valeur de l'argent, et sur son produit net : aussitôt je vois, du fond d'un fiacre, baisser pour moi le pont d'un château-fort, à l'entrée duquel je laissai l'espérance et la liberté.
//Il se lève.//
:Que je voudrais bien tenir un de ces puissants de quatre jours, si légers sur le mal qu'ils ordonnent, quand une bonne disgrâce a cuvé son orgueil ! Je lui dirais…
:que les sottises imprimées n'ont d'importance qu'aux lieux où l'on en gêne le cours ;
:que, sans la liberté de blâmer, il n'est point d'éloge flatteur ;
:et qu'il n'y a que les petits hommes qui redoutent les petits écrits.
//Il se rassied.//
:Las de nourrir un obscur pensionnaire, on me met un jour dans la rue ; et comme il faut dîner, quoiqu'on ne soit plus en prison, je taille encore ma plume, et demande à chacun de quoi il est question :
:on me dit que, pendant ma retraite économique, il s'est établi dans Madrid un système de liberté sur la vente des productions, qui s'étend même à celles de la presse ;
:et que, pourvu que je ne parle en mes écrits ni de l'autorité, ni du culte, ni de la politique, ni de la morale, ni des gens en place, ni des corps en crédit, ni de l'Opéra, ni des autres spectacles, ni de personne qui tienne à quelque chose, je puis tout imprimer librement,
:sous l'inspection de deux ou trois censeurs.
:Pour profiter de cette douce liberté, j'annonce un écrit périodique, et, croyant n'aller sur les brisées d'aucun autre, je le nomme Journal inutile.
:Pou-ou ! je vois s'élever contre moi mille pauvres diables à la feuille : on me supprime, et me voilà derechef sans emploi !
:— Le désespoir m'allait saisir ; on pense à moi pour une place, mais par malheur j'y étais propre : il fallait un calculateur, ce fut un danseur qui l'obtint.
:Il ne me restait plus qu'à voler ;
:je me fais banquier de pharaon : alors, bonnes gens !
:je soupe en ville, et les personnes dites comme il faut m'ouvrent poliment leur maison, en retenant pour elles les trois quarts du profit.
:J'aurais bien pu me remonter ;
:je commençais même à comprendre que, pour gagner du bien, le savoir-faire vaut mieux que le savoir.
:Mais comme chacun pillait autour de moi, en exigeant que je fusse honnête, il fallut bien périr encore.
:Pour le coup je quittais le monde, et revins à mon premier état.
:Je reprends ma trousse et mon cuir anglais ; je vais rasant de ville en ville, et je vis enfin sans souci.
:Un grand seigneur passe à Séville ;
:il me reconnaît, je le marie ;
:et pour prix d'avoir eu par mes soins son épouse, il veut intercepter la mienne !
//Il retombe assis.//
:Ô bizarre suite d'événements !
:Comment cela m'est-il arrivé ?
:Pourquoi ces choses et non pas d'autres ?
:Qui les a fixées sur ma tête ?
:Forcé de parcourir la route où je suis entré sans le savoir, comme j'en sortirai sans le vouloir, je l'ai jonchée d'autant de fleurs que ma gaieté me l'a permis ;
:encore je dis ma gaieté, sans savoir si elle est à moi plus que le reste,
:ni même quel est ce moi dont je m'occupe :
:un assemblage informe de parties inconnues ;
:puis un chétif être imbécile,
:un petit animal folâtre,
:un jeune homme ardent au plaisir, ayant tous les goûts pour jouir, faisant tous les métiers pour vivre, maître ici, valet là, selon qu'il plaît à la fortune ; ambitieux par vanité, laborieux par nécessité, mais paresseux… avec délices ! orateur selon le danger, poète par délassement ; musicien par occasion, amoureux par folles bouffées, …
//Avec transport//
:Ah, Suzon, Suzon !
//Bruit de foule dans la coulisse, Suzanne réapparait la première//
![[►|IV-Scène I FIGARO, SUZANNE. (deuxième partie)]]
<$list filter={{$:/core/Filters/AllTags!!filter}}> <$transclude tiddler="$:/core/ui/TagTemplate"/> </$list>
;Aujourd'hui nous allons tester une alternative à Duo :
<<<
!!!Ouverture de la "salle" de réunion ''à 14h''
→ J'envoie le mail, vous pouvez venir tester.
!!!Début de la séance à ''14h30''
→ On démarre avec tous les présents.
<<<
!!Une alternative à Duo, pourquoi ?
Duo est bien, immédiat et simple, mais :
* On est toujours dans le format de petites vignettes, qui ne permettent pas par exemple de suivre ou de vous montrer une manipulation sur le cahier.
* On ne peut pas bénéficier de l'ordinateur (écran, clavier, mains libres..) pour les réunions de groupe : smartphone obligatoire.
* C'est compliqué (et peut-être un peu frustrant) de faire participer quelqu'un au téléphone (ex : Chantal qui doit appeler Éveline).
* De mon côté, il n'est pas simple d'appareiller un filmage correct du smartphone.
* Surtout, après la séance je passe (je perds ?) un temps fou à retailler, découper, titrer les vidéos.
!!Quoi d'autre ?
Google vient de rendre gratuit "Meet", excellent qui nous conviendrait tout à fait, mais dont certaines fonctions obligeront le retour à une version payante en septembre (par exemple : non limitation de la durée d'une réunion).<br>
J'écarte Zoom, Teams, etc, très plaisantes, mais qui ont acquis une réputation douteuse en termes de sécurité ou de respect des données personnelles.<br>
Et j'ai trouvé "''Jitsi''", //Open source// (c-à-d créé par des utilisateurs), gratuit, et dont la sécurité est gérée par l'utilisateur.
!!Que va nous permettre Jitsi ?
* À tous, quelque soit votre équipement et si vous le désirez, d'entrer à tout moment dans la réunion et d'y participer.
* Pouvoir suivre ensemble sur le Cahier (comme avec tout document affichable), ou même de partager une vidéo ~YouTube qui nous serait utile.
* De pouvoir si besoin, en cours de réunion, échanger des informations textuelles (//chat//) avec tous ou seulement certains des participants.
* Afficher en plein écran la vignette d'un participant (par exemple le personnage qui parle, ou son protagoniste qui l'écoute...)
* Montrer par un icone "lever la main" que vous souhaitez prendre la parole, sans interrompre.
* La séance est immédiatement enregistrée sur ~DropBox (si vous n'arrivez pas à visionner je la transférerai sur mon Drive.
* Nous pourrions même organiser des prestations à distance en __diffusant en direct__ la séance sur ~YouTube.
!!Tous peuvent se joindre :
!!!► Si vous avez un ordi avec Webcam :
Vous cliquez sur le lien que je vous envoie avant la réunion, et aussitôt vous êtes dans la salle virtuelle de la réunion.
:Le lien est de la forme : `https://meet.jit.si/réunion`
:^^La première fois, l'affichage étant en anglais vous devrez aller sélectionner "Français" dans les paramètres (//settings//)^^
Après vous avez les main libres, vous pourrez même jouer debout,ou en utilisant des acessoires de chez vous !
!!!► Votre seule caméra connectable est celle du smartphone
Vous cliquez sur le lien que je vous envoie avant la réunion, et aussitôt - si c'est l première fois - vous avez une page vous proposant de charger (bouton //Download//) l'appli qui correspond à votre appareil. Dans la minute qui suit vous rejoignez la réunion.
!!!► Vous pouvez même voir et participer au téléphone !
Vous cliquez sur le numéro téléphonique que je vous envoie par mail avant la réunion. Il est de la forme :
:N° : +`1.512.402.2718`
:Code PIN: `123456789#`
:^^Le code pin qui identifie la réunion vous est demandé dès que la communication est établie.^^
!!!!S'entendre :
À partir de ce moment vous êtes en communication audio : vous pouvez entendre tous, et tous vous entendent.
!!!!Se voir :
Si en plus sur votre ordi vous entrez le lien que j'ai envoyé par mail, vous pouvez visionner les autres, ou suivre les documents éventuellement affichés !
!Notre jeu des italiennes
!!Exigences
* La mémoire
* la célérité verbale
* articulation claire
* le tac au tac des répliques
* italianissime : aucune syllabe sourde
!!Souhaits
* la gaieté : entrain, malice, joie de vivre tout au long
* Le rythme :
** reprises de souffle là où ce serait naturel (spontané ou voulu par le personnage)
** indiquer les ruptures lorsqu'il y a un changement dans le discours tenu (pause, changement dans la voix)
** accent tonique sur le mot porteur de l'idée/intention du personnage à cet instant
* Les trois voix :
** Celle de ce qu'on adresse explicitement à l'autre
** Celle de ce qu'on se dit et qui n'est pas fait pour être entendu
** Celle qu'on envoie au public pour dire ce qu'on pense vraiment, ou vider son sac !
[[Goldoni le malicieux]]
À voir nos derniers filages nos priorités pour produire un bon spectacle sont :
#''Italiennes'' véloces, __sans blancs __ entre les répliques
#''Compréhension'' partagée du texte à jouer
#''Interactivité physique'' constante et vive entre les protagonistes sur scène
#''Interprétation'' démonstrative des personnages
J'ai mis le plus important en dernier. Pourquoi ? Parce-que les précédents sont des préalables nécessaires d'une part, et que la bonne maîtrise des précédents amène à une interprétation beaucoup plus spontanée et juste d(autre part.
Je n'ai pas mis "//texte su//" tout simplement parce que le 1 (et le 2) l'obligent !
J'ai mis en premier "//chasse aux blancs entre répliques//" parce que //entendre le gazon pousser entre deux répliques// ruine l'effort du partenaire précédent, rend manifeste au public un travail mal abouti au détriment du spectacle, et surtout casse le rythme et le plaisir.
"""
''Rue de l'Oie''
C'est à dire Calle dell'Oca.
Calle est le nom que portent à Venise la plupart des rues et des ruelles. La Calle dell 'Oca, qui existe toujours, est une ruelle tor-tueuse du quartier de Cannaregio qui commence aux Santi Apostoli et vient déboucher, après trois méan-dres, dans Yactuelle Strada Nuova.
Etait-elle à l'epoque de Goldoni une rue mal famée?
Elle échappe encore aujourd°hui aux circuits touristiques et l'on y trouve au moins quatre osterie, sortes de bistrots populaires où l'on boit du vin en mangeant au comptoir de petits plats traditionnels et qui sont uniquement fréquentés par les gens du quartier.
Mais le choix que fait Goldoni de cette « Rue de l'Oie ›› a sûrement à voir aussi, symboliquement, avec le Jeu de l'Oie qui n'est pas autre chose qu'un parcours d'initiation.
"""
| ''^^► Pour une première représentation aux Épinettes<br>le 19 mars 2020^^'' |
```
Pièce en un acte d’après Georges Feydeau
Représentée pour la première fois, à Paris, à la salle de géographie, le 11 février 1894
PERSONNAGES :
- Henriette de Tréville
- Valentine
```
//( Découpage des lignes suggéré pour la diction )//
{{NotreFutur_sc1}}
!!Scène II
```
HENRIETTE, PUIS VALENTINE
On entend la voix de Valentine dans les coulisses.
```
;LA VOIX DE VALENTINE.
:Thank you very much, miss Alice !
:You may go now ! Thank you !
;HENRIETTE
:`Haut, mais pour elle-même (avant l'entrée de Valentine) : qu'est-ce qu'il lui prend de venir à cette heure-ci ?`
: Valentine !
;VALENTINE
:`entrant.` Moi-même, cousine ! `Très gaie, elle se précipite pour embrasser Henriette`
:Bonjour !
;HENRIETTE
:`l’embrassant.` Comme tu arrives de bonne heure !
;VALENTINE `s'écarte, tendrement grondeuse`
: Est-ce un reproche ?
;HENRIETTE
: `Se détend, et sourit à son amie` Allons, va !
;VALENTINE
:C’est que, vois-tu, j’ai désiré venir un peu avant le bal...
:`D'une voix un peu mystérieuse, pour exciter la curiosité d'Henriette.` parce que j’avais à t’entretenir de choses sérieuses !
;HENRIETTE
:`souriant.` `Se régalant d'avance de ce qu'elle va apprendre` Ah ! mon Dieu ! `(elle s'assied pour écouter)`
;VALENTINE
:Oh ! Très sérieuses ! `Elle s'assied aussi`
:`Se penchant vers Henriette` Tu comprends, il est des choses que je n’oserais dire à n’importe qui, et que je puis te dire à toi.
;HENRIETTE
: `Riant` Voyez-vous ça, !
;VALENTINE
: Oui,
:je viens te demander conseil !...
:`Elle se recule pour mieux détailler la merveilleuse parure d'Henriette`
:Mais d’abord, laisse-moi te faire tous mes compliments.
:Dieu !
:`(geste admiratif)` que tu es belle ce soir !
;HENRIETTE
: Ah ! Le "//ce soir//" est aimable.
;VALENTINE
: Oh !
:`(petite chiquenaude à sa copine)` Tu es toujours restée taquine, toi...
:Je veux dire :
:"Quelle jolie toilette tu as ce soir...",
:là !
:C’est-à-dire que j’ai l’air d’une Cendrillon à côté de toi,
:avec ma robe, toute simple.
;HENRIETTE
: Toi !
:tu es cent fois charmante, comme cela !
;VALENTINE
:`soupirant.` Et des diamants !
:`Elle en égrène quekques uns entre ses doigts`
:En as-tu assez !
:Oh !
:C’est moi qui aimerais ça, des diamants !
:`Elle rigole avec un faux soupir dedépit` Les veuves peuvent toujours porter des diamants!...
:Dieu ! Que cela doit être agréable d’être veuve !
;HENRIETTE
:`Elle se lève et va prendre une tapisserie. ` Eh ! bien, c’est gentil pour ton futur mari ce que tu dis là !
;VALENTINE
: `Tout en la suivant` Tiens ! C’est vrai !
:`Elle pouffe`
:J’ai dit une bêtise !
:C’est ennuyeux !
:Je ne fais que cela... `(re-pouffe)`
:Moi, je suis toujours très embarrassée !
:... Ainsi, tiens,
:à ton dernier bal,
:Monsieur de Mercourt est venu à moi
:et m’a dit
:comme ça :
:"//Ah ! Vous êtes vraiment chââârmante//" !
:Eh bien ! Sais-tu ce que je lui ai répondu ?
;HENRIETTE
: Non. `s’asseyant et faisant de la tapisserie.`
;VALENTINE
:"Et vous aussi, monsieur !"
:`(Valentine emportée dans son rève circule un peu partout, tantôt s'appuyant sur le dossier du siège d'Henriette, tantôt virevoltant dans le salon)`
:Tu vois l’effet d’ici !...
:alors il a cru que je me moquais de lui et il est parti…
:`(un peu embarassée, ne sachant bien comment aborder le sujet)` aussi il faut absolument que tu me dises...
;HENRIETTE
:Ah ! Pardon,
:mais d’abord,
:`(en souriant finement)` de quoi s’agit-il ?
;VALENTINE
:`rougissante.` C’est que c’est très difficile à expliquer !
:... Il s’agit de
:... d’un...
;HENRIETTE
: `(s'exclame)` Je comprends,
:`Elle rit :` c’est un homme !
;VALENTINE
: Eh ! bien, oui,
:là,
:c’est un homme.
;HENRIETTE
:`Elle rit :` Je le savais bien !...
:et il se nomme ?
;VALENTINE
:`d’un air taquin.` Oh ! ça, je te le dirai plus tard.
;HENRIETTE
:`Elle rit :` Du mystère, c’est parfait !
:Est-il bien, au-moins ?
;VALENTINE
: Lui ?
:Oh !
:__Trèès bien__ ! ….
:Tu le verras ce soir !...
:`Malicieuse` Et tu me diras alors si j’ai bon goût !
;HENRIETTE
:`Elle pouffe` Tiens, vraiment,
:tu m’amuses !...
:et...
:`Sérieuse` il t’aime ?
;VALENTINE
: Oh ! Oui,
:`Emportée dans son rève` il m’aime !...
:il m’a même dit
:l’autre jour `confidence réjouie`
:qu’il serait bien heureux si je consentais à l’épouser.
;HENRIETTE
: Bah !
:`Moqueuse` Ce n’est pas une preuve.
;VALENTINE
: Oh !
:Mais pour lui, c’est sérieux !
:`Elle se rapproche, et raconte toute exaltée ce qui s'est passé` Figure-toi
:qu’à ton dernier bal,
:j’ai dansé avec lui...
:et ...
:sans en avoir l’air,
:tout en valsant,
:`indiquant la direction` il m’a emmenée dans le petit salon,
:tu sais,
:le petit salon ?
:Alors `(elle fait durer le plaisir, et s'assied près de son amie)`
:`(terriblement sensuelle)` il m’a fait asseoir sur ton divan havane...
;HENRIETTE
:`Se dresse comme un ressort` Sur mon divan havane ?
;VALENTINE
: `Se dresse en même temps )` Oui !
:`Un peu perdue en voyant qu'Henriette ne sourit plus)` Cela t’étonne ?
;HENRIETTE
:`Fermée` Moi !
:Non, du tout.
:`Elle rage` Oh ! Ces hommes, tous les mêmes !...
;VALENTINE
: Et puis,
:lorsque j’ai été assise, `(un peu inquiète)`
:monsieur de...
;HENRIETTE
:`vivement.` Monsieur de... ?
;VALENTINE
:`souriant.` Ce monsieur-là enfin ,
:m’a pris les deux mains,
:`Elle prend les mains d'Henriette`
:Comme cela, tiens !
:et s’est mis à genoux devant moi...
:Oh ! C’est étonnant
:`Elle fond`
:comme c’est agréable de voir un homme à ses genoux !
;HENRIETTE
:`(Impatiente)` Enfin !
:`(se rasseyant et reprenant sa& tapisserie)` Continue.
;VALENTINE
: Eh ! bien donc,
:il s’est mis à genoux devant moi et,
:avec une voix tendre,
:`encore plus fondante` il m’a dit des choses,
:oh !
:`encore, encore plus fondante` Mais des choses !
:Oh !
:`Elle a du mal à reprendre sa respiration tellement ce souvenir est jouissif !`
:Je t’assure que j’étais très embarrassée ;
:aussi,
:de peur de dire des bêtises,
:je me contentais de répondre
:"//oui//" `(comme un cuicui d'oiseau)`
:à tout ce qu’il disait.
;HENRIETTE
:`posant sa tapisserie.` Tu disais
://oui// ? `(cuicui d'oiseau)`
:`(La fusillant du regard)` Malheureuse!
;VALENTINE
: Mais `(effrayée)`
:je ne savais que répondre, moi !
:Si tu l’avais entendu :
:« //Ah ! mademoiseeelle//,
://vous êtes beeelle //
://et je vous aiaiaime //».
:« //Ah ! Valentine //»…
:`(Encore envahie de gratitude éperdue)` (il m’a appelée Valentiiine)
:« //Ah ! Valentiiine,:Vous êtes ma reine,//
://mon ange, //
://Valentiiine//,
://voulez-vous être ma femme ?//»
;HENRIETTE
:`se levant et vivement.` Et tu as répondu ?
;VALENTINE
:`Roucoulant :` __Oui__ !...
:`Elle prend peur davant le regard courroucé d'Henriette !`
:Mais cousine !
:J’étais si troublée,
:je ne savais que dire.
;HENRIETTE
:`insistant, sévère. ` Oh ! il n’y a pas de "//mais cousine !//"
:Et je vois bien que tu me caches quelque chose !
:`Se plantant devant Valentine, avec autorité` Mais tu vas m’expliquer...
;VALENTINE
:`s’appuyant sur son épaule.` Eh ! bien, oui, là,
:j’aime mieux tout te dire !...
:Ah ! ma chère Henriette,
:si tu savais ce qu’il a fait !
;HENRIETTE
:`Très inquiète.` Ah ! Mon Dieu ! `(Elle craint le pire, cette innocente avec un homme)`
:C’est donc bien grave ?
;VALENTINE
:`toute émue. ` Oh ! Oui,
:`(gravement)` c’est grave ;
:c’est-à-dire que, `(Henriette est sur les charbons ardents)`
:maintenant...
:on doit se marier !
;HENRIETTE
:`(Les bras lui en tombent, elle s'eforce de sourire)` Je n’ai pas le courage de te blâmer.
:Je connais trop bien les hommes !
:`Se forçant àpl&aisanter:` Et si l’on devait se marier pour si peu de chose,
:je crois qu’il y aurait bien peu de femmes sur la terre qui coifferaient Sainte-Catherine.
;VALENTINE
: `(à moitié rassurée)` Alors, cousine,
:tu ne m’en veux pas ?
;HENRIETTE
: Moi, ma chère cousine...
:oh ! Pas du tout !...
:Mon pauvre général me le disait souvent :
:"//L’amour est la meilleure des excuses !//".
:Et j’étais bien de son avis !
;VALENTINE
: Mais alors...
:si ce soir il veut m’emmener...
:est-ce qu’il ...
:faudra ?....
:...
:puisqu’il m’a promis de m’épouser ?
;HENRIETTE
: Oh ! Voyons,
:Valentine
:alors `(elle sourit)`
:tu l’aimes ?
;VALENTINE
:`baissant les yeux.` Mon Dieu !
:`(elle allait avoir un élan mais se reprend)` Je ne sais pas !
;HENRIETTE.
:Bon !
:`Elle rit` ça veut dire beaucoup !...
:`Sérieuse` Et lui,
:est-ce qu’il t’aime ?
;VALENTINE
: Il m’adooore.
;HENRIETTE
: Eh ! bien donc,
:c’est parfait !...
:Puisqu’il en est ainsi,… tu l’épouseras !
;VALENTINE
:`Aux anges` Je l’épouserai !
:Oh ! Ma chère Henriette !
:`avec exaltation.`
:Me marier, cousine ! Mais c’est ce que je rêve !
:`(elle valse dans tous les sens)` Se faire appeler Madame !
:Porter des diamants !...
:aller au Palais Royal !...
;HENRIETTE
:`(elle rigole)` Eh bien !
:Tu as une manière de comprendre tes devoirs conjugaux toi !
:`Grondeuse affectueuse` Je t’en fais mes compliments !
;VALENTINE
:Mais cousine...
;HENRIETTE
: Enfin, `(grand soupir)` vous vous aimez,
:c’est l’essentiel !
:`Commisération moqueuse` Et puisqu’il t’a promis de t’épouser...
:`Plus sérieusement` Mais au moins serait-il bon pour cela que je connusse le nom de ton prétendu !
;VALENTINE
: C’est juste...
:D’ailleurs je n’ai plus de raisons pour te le cacher !...
:`Très simplement` C’est Monsieur de Neyriss.
;HENRIETTE
:`stupéfaite, elle suffoque` Monsieur de Neyriss !
: `Elle pose vivement sa tapisserie. `
;VALENTINE
: Oui !
:Qu’y a-t-il là qui t’étonne ?
;HENRIETTE
:`Séchement` Non !
:`Se levant`
:`Autoritaire` C’est impossible !
;VALENTINE
: Comment `(stupéfaite)`
:impossible !
:mais je t’assure que c’est la pure vérité.
;HENRIETTE
: Oh !
:`(Elle martèle)` Je te dis qu’il ne t’aime pas...
:j’en suis sûre.
;VALENTINE
:Mais puisqu’il me l’a dit !
;HENRIETTE
:`Méchamment` Bah ! Tu crois à ces choses-là, toi ?
;VALENTINE
:`Méchamment aussi.` Et pourquoi ne m’aimerait-il pas, après tout ?
;HENRIETTE
:`(dure)` Parce que...
:parce que __il ne t’aime pas__.
;VALENTINE
: `(le ton monte)` Mais puisqu’il doit m’épouser,
:là !
;HENRIETTE
:`(le ton monte encore plus)` Eh bien !
:Et moi aussi, là !
;VALENTINE
:`Grand moment de stupéfaction.`
:Il...
:doit t’épouser ?
;HENRIETTE
: Oui.
;VALENTINE
: Il a demandé ta main ?
;HENRIETTE
: Oh ! C’est tout comme.
:`Fièrement` Il va me la demander ce soir !
;VALENTINE
: Oh !
:`Elle assène` Mais, moi, c’est déjà fait,
:voilà la différence.
;HENRIETTE.
:…Et puis,
:d’abord,
:`cinglante` il ne te convient pas du tout !
;VALENTINE
: Comment !
:`Sincèrement révoltée` Mais c’est un homme bien...
;HENRIETTE
:`Très colère` Lui !
:Un homme bien !
:Va,
:`Elle martèle` je te dis qu’il ne te convient pas du tout !
;VALENTINE
:`impatientée` Enfin, que veux-tu !
:Cela me regarde !
:`(elle espère encore un peu)` et comme tu m’as promis ton soutien…
;HENRIETTE
: Moi !
:Te soutenir !
:ah ! Non, par exemple !...
:`(Faux-jeton)` Je ne veux pas que tu puisses me reprocher un jour d’avoir fait ton malheur.
;VALENTINE
: `(incrédule)` Mon malheur !
;HENRIETTE
: Mais, dame !
:Tu vois bien qu’il ne t’aime pas sérieusement.
:`(Expliquant comme à une imbécile)` Puisqu’il me fait aussi la cour, à moi !...
:`Méchamment.`
:Et qui te dit qu’il n’agit pas de même avec toutes les femmes !
;VALENTINE
: `agacée` Oh...
;HENRIETTE
: Et cet homme-là serait un mari fidèle ?...
:Allons donc !
;VALENTINE
: Eh ! bien, pourquoi veux-tu l’épouser, alors ?
:Dame ! il en sera pour toi comme pour moi !
:Et je suppose que ce n’est pas pour l’unique agrément d’avoir un mari volage que...
;HENRIETTE
:`sèchement. ` D’abord, il n’est pas question de moi en ce moment...
:Et puis, je te dirai que ce n’est pas du tout la même chose...
:Une veuve a plus d’expérience .
:Et d’ailleurs, toi non plus tu ne l’aimes pas !...
:`Geste de protestation de Valentine`
:Mais non !
:Si tu veux l’épouser, c’est par caprice...
:pour aller au Palais-Royal.
;VALENTINE
:`Au bord des larmes` Mais quand je te dis...
:`Valentine reste prostrée au milieu, Henriette s'agite autour`
;HENRIETTE
: Ah ! Bah !
:Tout cela ce sont des amourettes!
:Un feu de paille !
:Cela brûle, mais ne dure pas ...
:Des amourettes, voilà tout !
:Mais un amour sérieux !
:Allons donc ! Non ! Non ! Non !
:Mille fois, non !
;VALENTINE
:`se révolte, aigrement.` Tu ne parlais pas précisément comme cela tout à l’heure !
;HENRIETTE
:C’est que j’ai réfléchi !
;VALENTINE
: Bien rapidement, alors !
:Car ce n’est que depuis que j’ai prononcé le nom de monsieur de Neyriss, que...
;HENRIETTE
: Là ! Je m’y attendais !
:de l’aigreur !...
:Parce que je te dis des vérités sur monsieur de Neyriss, alors cela te fâche !
:Eh ! bien, veux-tu que je te dise :
:Épouse-le !
:Tu pourras te vanter d’avoir un mari charmant,...
:trop charmant même,...
:surtout avec les autres !
;VALENTINE
:`avec mauvaise humeur.` C’est ça, moque-toi de moi à présent :
:tiens, vrai ! Tu n’es pas gentille !
;HENRIETTE
:` se radoucissant :` Voyons, Valentine !
;VALENTINE
:`sèchement : ` Laisse-moi tranquille !
;HENRIETTE
:`s’asseyant.` Ah !... tu veux bouder ?
:à ton aise !
:Seulement, quand tu auras fini, tu auras la bonté de me le dire.
```
Un instant de silence. Valentine s'assied en tournant à demi le dos à Henriette, et lui jetant un regard furibard écarte encore plus son siège. Henriette a pris un journal sur la table et se met à lire. Tout à coup, elle pousse un cri :
```
;HENRIETTE
:`se levant en sursaut.` Ah ! Mon Dieu,
:que vois-je ?...
:Monsieur de Neyriss !...
;VALENTINE
:`vivement.` Monsieur de Neyriss !
:Qu’y a-t-il ?
;HENRIETTE
: Le perfide !
:Il se marie !
;VALENTINE
: `en sursaut. ` Il se marie ?
;HENRIETTE
: Tiens,
:lis plutôt !
<<<
//On annonce le mariage de M. Raoul de Neyriss avec Mademoiselle de Stainfeld ! Cette toute charmante personne.//
<<<
:Toute charmante, est-il possible !
:elle louche !
<<<
//Cette toute charmante personne apporte à son mari la jolie dot de deux cent mille livres de rente ! Hâtons-nous de dire que Mr de Neyriss, qui est un galant homme. //
<<<
:Un galant homme,
:lui !
<<<
//Qui est un galant homme n’a vu dans ce mariage qu’un mariage d’amour ! //
<<<
:Oh !
:Le traître !
;VALENTINE
:`qui pendant cette lecture est tombée sur un fauteuil, toute accablée. ` Qui aurait jamais pu s’attendre à cela,
:mon Dieu ! …
:`Avec douleur.` Et il me disait qu’il m’aimait…
:Et pourtant,
:je ne sais pas,
:il me semble que cela me fait quelque chose.
;HENRIETTE
:`très agitée.` Oh ! Les hommes ! Les hommes !
:Et c’est là l’homme que tu voulais épouser !...
:et tu crois que je t’aurais laissé faire cette bêtise ?...
:ah non, par exemple !
:Allons, Valentine,
:embrasse-moi !
:`Elles s’embrassent joyeusement.`
;HENRIETTE et VALENTINE, //ensemble// -
: Et maintenant,
:mademoiselle de Stainfeld,
:vous pouvez l’épouser
: "''Notre futur''" !
:
!!!''FIN''
```
Oeuvre du Domaine public – Version retraitée par Libre Théâtre
Contractée par Livia - Didascalies et découpage de jeu : Jacques
```
!!Scène 1, HENRIETTE
:://Un grand salon très richement meublé. Au fond, une cheminée avec des candélabres, allumés. Portes latérales, portes à droite et à gauche. Une table, des fauteuils, un divan, etc... Sur la table, des journaux. //
!!!!''► Montrer une Henriette joyeuse et toute frémissante''
<<<
!!!!!''► Elle a réussi à avoir Neyris à sa soirée, elle tient absolument à l'éblouir, et est transportée à l'idée de le voir publiquement lui demander sa main au nez de toutes ses rivales (qu'elle a, bien sûr, invitées) !''
<<<
:://Dès cette première scène ''le public'' doit comprendre qu'il va assister à une Comédie, et il est essentiel de lancer le mouvement et de le fire rire d'emblée. D'où l'orientation - parfois "hénaurme" des didascalies de jeu que je suggère (quasiment une par emission de voix)//
Il aura retenu :
# que Neyris est un homme important pour ces dames
# et qu'il se passe des choses "privées" sur le fauteuil havane du petit salon.
;HENRIETTE
:`(en costume de bal et couverte de diamants, entre par l’une des portes du fond et parle à quelqu’un qu’on n’aperçoit pas.)`
:Ainsi, vous avez bien compris ?
:`Fausse entrée, elle retourne brusquement sur ses pas pour bien préciser à l'office` Des bougies partout,
:`Deuxième fausse entrée` des lumières...
:`Troisième fausse entrée` beaucoup de lumières !
:`Quatrième fausse entrée`Enfin, que tout soit pour le mieux.
:`(Entrant.)`
:`Se plantant en milieu de scène, et examinant de tous côtés` Oh ! oui, beaucoup de lumières,
:`Radieuse face public, coàmme admirant un lustre` je les __adooore__, moi !...
:`Elle s'immobilise en apercevant son gracieux reflet dans la glace face à lentrée en scène`
:C’est étonnant comme cela sied à mon visage !
:`Elle s'approche du miroir en calculant la plus élégantes des démarches.
Elle s'arrête, salue son reflet et se félicite : `
:Eh ! bien, mais savez-vous madame, que vous êtes tout simplement ravissante.
:`Elle fait tournoyer les voiles de ses vêtements en s'admirant`
:Ce costume vous va à ravir !
:`Elle s'approche doucement tout contre le miroir caliner son image`
:`Gloussant de plaisir` ... et je me trompe fort ou bien vous allez faire encore quelque nouvelle conquête !...
:`S'approchant du public, triomphante`
:Toutes ces dames vont être furieuses !
:`Parcourant le bord de scène, la tête tounée vers le public, dans un a parte narquois` C’est si jaloux, les femmes !...
:`se postant à l'opposé, au bord du public, avec malignité`
:Quant à ces messieurs,
:par exemple... monsieur de Neyris ! `(la manière dont elle le nomme manifete que c'est un homme connu de tous, dont la connaissance vous honore)`
:Je l’ai invité,
:`Elle goûte l'effet de cette annonce,
puis fièrement : `
:il viendra ;
:`Rèveuse et fleur bleue`
:d’ailleurs il m’aime !
:`Encore un pas vers le public, donnant la primeur de son grand secret`
:... il a l’intention de m’épouser, `elle confirme` j’en suis sûre
:... il profitera de cette soirée pour... `Énorme bouffée d'espoir`
:`Elle ferme les yeux pourmieux se remémorer ce moment de ravissement` et déjà l’autre jour,
:`Coquine` dans le petit salon, `Elle indique lea direction`
:lorsque j’étais assise sur mon joli divan havane, `(on doit sentir que ce divan est le lieu de poses ... capiteuses)`
:`Haletante` s’il s’est mis à mes genoux, c’était, bien sûr, pour me faire sa demande...
:`Revivant intensément son propre désir` Ce n’était pas l’envie qui lui en manquait,
:et si l’on ne nous avait interrompu !...
:`Sonnerie`
:Tiens ! l’on a sonné !
:`Tournant son regard vers l'horloge` Neuf heures moins vingt.
:`Se tournant vers la porte, toute palpitante` Qui peut venir si tôt ?
<center>
"""''Nous sommes craquantes !''
Je me suis réveillée ce matin, une journée de plus !
J’ai levé les bras…..
Et ''CRAC !''
J’ai plié les genoux….
Et ''CRAC !''
J’ai tourné le cou…
Et ''CRAC !''
Alors j’en suis venue à la conclusion suivante :
Nous ne sommes pas __vieilles__ :
''Nous sommes __CRAQUANTES !__''
Et ça me fait bien plaisir !
"""
</center>
.
<div class="tgc-fixed-bottom">
<$button class="tc-btn-invisible tgc-button-color">
▲
<$list variable='Target' filter='[list[$:/StoryList]first[]]'>
<$action-navigate $to=<<Target>>/>
</$list>
</$button>
</div>
<style>
.tgc-fixed-bottom {
position: fixed;
bottom: 10px;
right: 10px;
padding: 8px;
background-color: white;
}
.tgc-button-color {
color: red;
}
.tgc-button-color:hover {
color: blue;
}
</style>
<<tabs "LesContraintes [[LUNDIS 10h]] [[MARDIS 14h30]] [[VENDREDIS 14h]] AbsencesÉté">>
---
Odile,
Ta réponse au message de Michèle m'a immédiatement fait bondir et prendre la plume, non, le clavier ! Le dîner a coupé mon élan, mais je le retrouve encore intact. Décidément, la scène d'Elvire aimante nos passions théâtreuses !
Ce qui suit est décousu, trop à l'emporte-pièce. Mais tant pis, je me lance !
!!!À te lire, j'ai pris peur :
:Elvire n'est pas //la Dame aux Camélias// quand même !
:Plutôt que de glisser le jeu vers un romantisme, déplacé s'agissant de Molière, va plutôt du côté de Corneille que de celui de Dumas.
:Ne fais pas de cette femme fière une bourgeoise à vapeurs !
:Il faut tirer cette scène vers les couleurs dures d'un Greco plutôt que vers quelque mordorée sensiblerie sulpicienne.
!!Elvire
Le drame que vit à cet instant cette femme est terrible. Mais jamais Elvire se montre faible en s'abandonnant à ses émotions. Aucune de ses paroles ne doit être prise comme une plainte ; comme une rage plutôt. Pas Romantique, mais Antique : elle est assez forte pour ne pas craindre de dire ce qu"elle sent, et de s'en servir pour attaquer et déconsidérer le malotru ectoplasmique qu'elle a en face (si on peut dire !) d'elle.
:De la grandeur, de la douleur, de la fureur, de la hargne, de la détermination : OUI.
:De la //colère// qui vous emporte, //une amertume// qui vous enferme, //un désenchantement// dans lequel vous coulez : NON.
!!Tu écris :
!!!PREMIER MONOLOGUE
<<<
!!!!colère digne :
<<<
Ces termes ne me conviennent pas:
* parce que la colère est d'abord un effondrement intérieur,
* et puis l'expression "//colère digne//" indique une posture qui, en tant que comédien, ne me parle pas.
Je préfèrerai (par exemple) : "//Remise en place furieuse//", tournée vers l'__action__ immédiate, qui caractérise une __intention__ et signale qu"elle se place en maîtresse du jeu (ça va trop bien marcher, puisque DJ reste fuyard).
<<<
!!!!reste d'espoir
<<<
Sans doute, au début du moins, mais à mon sens pas dans le ton, qui reste dur, ni dans les paroles, mais plutôt dans les pauses qu'elle assène après chaque phrase qu'elle lance. Constamment elle suspend, regarde intensément DJ, attendant une quelconque réaction de ce soliveau.
<<<
!!!!déstabilise met en colère au début, puis amère et désenchantée
<<<
NON : voilà des mots trop tournés vers le repli sur soi, et l'appel à la compassion que je fustigeais au début.
On voit qu'Elvire est grande justement parce qu'elle sait garder en elle sa colère, mais sortir d'elle des éléments de révolte propres à mieux accabler celui qu'elle aurait voulu aimer, et qui se révèle un minable.
<<<
!!!!entrouvre une petite porte au dialogue
<<<
Ouh la la ! Une porte ouverte ? Je dirai plutôt une ultime __injonction__ : "//Montrez au moins que vous êtes un homme !//".
!!!LE 2° MONOLOGUE
<<<
!!!!juste un zeste d'ironie.
<<<
Que ta phrase est mignonne ! ... mais en dessous de la réalité.
__Férocité la plus mordante__, oui ! Elle ne cherche même pas à faire honte (il n'a apparemment pas la moindre conscience), mais à lui faire mal, l'écraser. Loin de se laisser dévorer par le feu de son tourment, elle en dirige les flammes sur sa victime, qui se laisse carboniser sans même se débattre !
<<<
!!!!Elle lui suggère au contraire la façon de revenir à elle.
<<<
Mais il est trop tard, le moment est passé ! Ce qui aurait pu être avant une suggestion, n'est plus qu'un ultime exemple pour essayer de se faire comprendre par qq'un qui ne le veut pas.
<<<
!!!!très amoureuse encore, mais en colère
<<<
Crois,tu ? À mon sens le comportement de DJ lui descille presqu'instantannément les yeux. Si colère il y a, elle n'est pas à l'encontre de DJ (il ne mérite pas ce supplément d'honneur) mais d'elle-même : rage d'avoir pu s'amouracher d'une telle larve, blessure de son orgueil.
<<<
!!!!Elle avait tout préparé
<<<
Je m'insurge contre cette prétérition qui, finalement la rabaisse ... à notre niveau !
Certes très peu de nos contemporains seraient capable d'un discours si bien ordonné. Mais c'est vite faire fi de la maîtrise de la langue de l'époque chez les gens éduqués (un arrière-grand père que je n'ai pas connu faisait parait-il chaque semains au Lycée une dissertation en trois parties à trois sous-parties directement en latin). Juste pour dire u'il y a des environnements que nous ne soupçonnons plus aujourd'hui.
D'autre part (déjà dit au début) je ne crois pas qu'il faille déverser son discours en un flot continu et tumultueux d'arguments. Au contraire elle cisèle, en gettant à chaque découpe un sursaut possible de DJ, puis en jouissant, avec un mépris croissant, de la déconfiture dans laquelle elle l'enlise puis l'engloutit.
En plus ce parti contribue à faire de DJ, bien que quasi absent, le pôle principal de la scène : cloué au pilori, déshabillé moralement et déconsidéré, il doit vivre cette scène comme une espèce de danse du scalp (pardon Molière !) insupportable.
<<<
!!!!veut croire encore au bonheur, tout en restant digne.
<<<
Non, plus maintenant.
<<<
!!!!suffoquée de ces propos injurieux, ignobles et moqueurs, qui l'assassinent, jusqu'à presque s'en étouffer quand elle l'interrompt.
<<<
Oui ,,(Tiens, il m'arrive de dire "Oui" !),,
<<<
!!!!il faut essayer d'imaginer son sentiment, vis à vis de la religion, et surtout vis à vis du couvent qu'elle a quitté pour un bel homme qui l'a désirée, et lui a donné la force de fuir un univers où elle avait plongé ses racines.
<<<
Imagine tout ce que tu veux qui te permette d'habiter et nourrir ton personnage : c'est cette préparation qui te permet sur scène de te livrer à ton instinct.
Mais ce qui compte pour le spectateur, ce n'est jamais ce que tu as dans la tête (tellement qu'on le croit évident pour les autres), mais ce que tu manifestes : corporellement, vocalement, rythmiquement.
<<<
!!!!l'empêche de trouver les mots pour répondre au "raisonnement " de Don Juan
<<<
Je ne crois pas : il n'est pas question pour elle de __répondre__ au raisonnement
<<<
!!!!vaincue et désespérée
<<<
Ah, ce romantisme qui vous colle à la peau !
Non : __convaincue__ que tout espoir est vain, elle __décide__ de couper là.
"//Parlez, don Juan, je vous prie, et voyons de quel air vous saurez vous justifier//" était déjà une __sommation__ (Elvire est une femme de pouvoir).
"//Voilà comme il faut vous défendre, et non pas être interdit comme vous êtes//" est plutôt une condamnation, la sentence finale, qui montre que la porte, loin d'être entr'ouverte est maintenant fermée.
!!!!Elle crie, puis est vaincue et désespérée, puis de nouveau en colère, sans nuances, avant de sortir.
Tu fais d'Elvire une coquille de noix sur les flots de l'inconsistance !
Tu abaisse cette scène de tragédie à une niaierie bourgeoise. Elvire n'est pas Bovary.
Tout comédien est un moteur du spectacle. Son boulot h'est pas de démontrer ou d'expliquer une thèse, il est de justifier le moindre détour du texte par une circulation crédible d'émotions, en lui, comme en interaction avec les autres, y inclus bien sûr le public.
À l'instant du jeu il doit se libéréer du contrôle cérébral pour être entièrement corps, sensation et instinct. Il ne s'agit pas de transmettre, ni même de partager son émotion, mais de susciter chez chaque spectateur, une émotion en retour, la sienne, qui grave une trace, chemin ensuite d'une réflexion nouvelle, et ou de discussions réalimentées.
Excuse ma virulence de plume : ce sont nos deux conceptions opposées de cette scène qui me font jaillir ces étincelles.
Ça continuera à animer nos discussions. Et puis, en cette occurence, c'est Isaac qui fixera le parti à prendre.
Oh (j'allais oublier) tu avais écrit aussi (je ne pouvais laisser passer, c'était trop beau :) :
<<<
!!!!Elvire, __dont le passé n'est pas simple__, ne peut pas, je pense, parler seulement avec de la simplicité.
<<<
La simplicité peut être froide et dure, Une expression et un silence peuvent ébranler bien plus qu'un effet de voix.
Mais prendre conscience que son passé n'est pas simple ne pourra que nourrir une interprétation __plus que parfaite__ !
Le texte dit seulement : « //un oeillet de Vicence// ››, visiblement un oeillet en tissu provenant d'un atelier de Vicence assez connu à Venise à l'époque pour que toute précision soit inutile.
Il m'a paru nécessaire, en France et aujourd”hui, de préciser, « //en soie//».
[[210108]]
```
On passe dans huit jours : l’Auteur et l’Actrice • Guitry
Sacha Guitry Geneviève GuitryScène (pour un homme et une femme) extraite de la pièce On passe dans huit jours de Sacha Guitry. Un auteur de théâtre est désemparé car les répétitions de sa pièce ne se passent pas comme prévu. Le temps presse et il fait venir une jeune comédienne de sa distribution pour lui annoncer, tant bien que mal, un changement nécessaire…
```
;L’Auteur
:Mademoiselle Fanny ? Mademoiselle Fanny ?
;L’Actrice, ,,entrant,,
:Vous m’avez fait demander ?
;L’Auteur
:Oui, entrez et asseyez-vous !
;L’Actrice
:Qu’est-ce qu’il y a ?
;L’Auteur
:Ma petite Fanny, vous êtes une artiste charmante…
;L’Actrice
:Mais ?
;L’Auteur
:Mais… nous avons pensé qu’il fallait vous donner une grande preuve d’amitié en vous évitant de courir un grand danger inutile au début d’une carrière aussi brillante que la vôtre…
;L’Actrice
:Quel danger ? Je ne comprends pas ce que vous voulez dire…
;L’Auteur
:Ma petite Fanny, je me suis trompé ! Vous possédez les dons les plus rares… vous êtes gaie, vive, souriante et distinguée… et vous êtes tout à fait exquise dans la première partie du rôle…
;L’Actrice
:Oui, oh ! le trois n’est pas au point du tout. Je m’en suis rendu compte et j’ai l’intention de…
;L’Auteur
:Laissez-moi parler. Vous réalisez ma pensée pendant tout le premier acte, et notamment vous avez une façon extraordinaire de dire
:« Mon petit, pour épouser Georgette, il vous faudrait avoir plus de poil au menton ! » Oh ! là, vous êtes exquise !… Au deux, vous êtes tout bonnement parfaite…
;L’Actrice
:Oui, en somme, c’est le trois qui cloche ?
;L’Auteur
:S’il ne faisait que clocher, ma chère amie…
;L’Actrice
:Ah ! je devine…
;L’Auteur
:Quoi donc ?
;L’Actrice
:Vous allez couper le trois ?
;L’Auteur
:Mais je…
;L’Actrice
:Oh ! ne faites pas ça… ne faites pas ça. N’écoutez pas les conseils qu’on vous donne ! Je vous le jure, moi, que c’est un acte admirable !
;L’Auteur
:Admirable, certainement, et je n’ai pas l’intention de le couper…
;L’Actrice
:Alors ?
;L’Auteur
:Ce n’est pas l’acte qui ne va pas, c’est…
;L’Actrice
:Garnier ?…
;L’Auteur
:Non…
;L’Actrice
:Valabel ?
;L’Auteur
:Non…
;L’Actrice
:Alors ?…
;L’Auteur
:C’est vous qui…
;L’Actrice
:Ah ! bon… mais, cher ami, il faut tout me dire… en tout cas, je vous remercie d’avoir eu la délicatesse de ne pas me faire d’observation devant les camarades. Alors, dites… dites… dites vite ce qui ne va pas… car avant tout, il faut qu’elle aille votre pièce, votre belle pièce ! Dites-moi ce que je donne mal… voulez-vous que je vous donne plus de sensibilité ou plus de profondeur… Qu’est-ce que vous voulez que je vous donne ?
;L’Auteur
:Je voudrais que vous me donniez votre rôle !
;L’Actrice
:Comment, mon rôle ?
;L’Auteur
:Oh, ne vous mettez pas en colère et comprenez-moi bien. J’y ai mis beaucoup de bonne volonté… mais il y a une impossibilité physique. Le troisième acte est beaucoup trop dur pour vous… et vous ne pouvez pas le jouer ! Et nous avons pensé qu’il était inutile de s’obstiner davantage ! Quand un rôle ne va pas, eh bien, on le laisse à une autre… et plus tard on a sa revanche !… Remarquez bien, ma chère amie, que je ne vous reprends pas le rôle ! Je suis allé vous l’offrir à Dinard, cet été… je vous l’ai donné… ce rôle est à vous… et il est tellement à vous que vous pouvez en disposer ! Alors, hein ?… Rendez-le-moi !… Qu’est-ce que vous avez ?
;L’Actrice
:Je cherche… je cherche d’où ça peut venir, tout ça… Ah ! bon ! Ca y est ! Madame Calvin veut le rôle, probablement !
;L’Auteur
:Madame Calvin ?
;L’Actrice
:Parfaitement !… Elle rôde dans les coulisses depuis huit jours, je l’ai vue !… Elle n’a donc pas assez joué, celle-là, depuis quarante ans !
;L’Auteur
:Ma chère amie, je vous jure que le nom de madame Calvin n’a même pas été prononcé…
;L’Actrice
:Alors, c’est cette saleté de mademoiselle Fillot ! Oui… oh ! mais je m’en doutais !… Mademoiselle Fillot n’est pas contente du rôle qu’elle joue… et elle veut le mien ! Mademoiselle Fillot, qui n’est fidèle ni à son amant riche ni à son amant de cœur, n’a probablement pas hésité à aller vous voir, ce matin, à votre réveil !
;L’Auteur
:Ma chère amie, je vous prie…
;L’Actrice
:Mademoiselle Fillot, qui ne peut pas dire deux lignes sans aller demander conseil à Leitner ou à madame Kolb, mademoiselle Fillot veut jouer mon rôle !
;L’Auteur
:Je vous donne ma parole d’honneur que ce n’est pas mademoiselle Fillot qui jouera votre rôle !
;L’Actrice
:Alors, c’est Thérèse Duplessis ?
;L’Auteur
:Mais non !
;L’Actrice
:Mais alors, quoi… personne n’en veut donc de votre rôle !
;L’Auteur
:Mademoiselle, ce que vous venez de dire m’autorise à employer un autre ton et je vous somme de me rendre immédiatement votre rôle !
;L’Actrice
:Jamais, monsieur, jamais ! Ce rôle est à moi et je le garde ! Voilà un mois et demi que je répète avec une ponctualité et un acharnement… que je ne saurais trop recommander à mes camarades… Ils feraient mieux de suivre mon exemple plutôt que de dire du mal de vous dans les coins ! Ça non plus, vous ne vous en êtes pas rendu compte…
;L’Auteur
:Je ne me rends compte que d’une chose, mademoiselle, c’est que vous ne pouvez pas jouer le troisième acte !
;L’Actrice
:C’est peut-être parce qu’il est moins bon que les deux premiers !
;L’Auteur
:Mademoiselle, je vous interdis de juger ma pièce…
;L’Actrice
:Et moi, je vous interdis de me juger avant la générale ! Il me faut le public, moi, pour être bien !… Je ne peux pas me donner devant le souffleur et les machinistes !… Tenez… écoutez… donnez-moi encore trois jours et j’arriverai à faire ce que vous voulez… oubliez les paroles blessantes que je viens de vous dire…
;L’Auteur
:Trop tard, mademoiselle…
;L’Actrice
:Ecoutez-moi… attendez… Je veux garder ce rôle ! Je l’adore !… Je ne l’ai pas encore dans la bouche, mais je l’ai dans la peau !… Je suis en train de chercher mon cri à l’entrée du baron…
;L’Auteur
:Mais, il n’y a pas de cri, mademoiselle… Il y a toute la scène avec le beau-père !
;L’Actrice
:Ah ! qu’elle est belle cette scène-là !
;L’Auteur
:Ou, c’est entendu… elle est belle, elle est admirable… seulement, que voulez-vous… il fat qu’elle soit jouée !
;L’Actrice
:Elle le sera dans trois jours.
;L’Auteur
:mais non, mais non… Pourquoi attendre trois jours ! Dans trois jours il faudra recommencer la même discussion ! je croyais pourtant m’être fait comprendre !
;L’Actrice
:Vous n’allez pas recommencer à me demander…
;L’Auteur
:Oh ! mademoiselle, ne m’obligez pas à vous dire la vérité…
;L’Actrice
:Quelle vérité ?
;L’Auteur
:Donnez-moi votre rôle et restons-en là.
;L’Actrice
:Si, je veux savoir la vérité.
;L’Auteur
:Non, non, non !
;L’Actrice
:Je vous rendrai votre rôle si vous me dites la vérité.
;L’Auteur
:Eh bien, mademoiselle, vous êtes très mauvaise au dernier acte.
;L’Actrice
:Ah ! je suis mauvaise !
;L’Auteur
:Oui, mademoiselle, vous n’avez ni l’accent, ni le mouvement ; vous restez perpétuellement froide, élégante et distinguée. Eh bien, ça ne suffit pas ! Lorsqu’une femme du monde est trompée par son amant, sa bonne éducation s’efface et on n’a plus sous les yeux qu’une femme, qu’une femelle acharnée, violente, ordurière s’il le faut ! Eh bien, ça, mademoiselle, vous ne le donnerez jamais !
;L’Actrice
:Jamais ?
;L’Auteur
:Non, mademoiselle, jamais ! Il vous manque certaines qualités que le travail, que la meilleure volonté ne peuvent pas donner. On a ça dans le sang, ou on ne l’a pas !… Vous n’avez ni force, ni puissance, ni souffle ! Votre talent n’est fait que de…
;L’Actrice
:Mon talent, mon talent… j’en ai peut-être plus vous du talent ! Moi aussi, je vais vous la dire, la vérité… L’exposition de votre pièce ne tient pas debout, le second acte est chipé au Scandale de Bataille, le troisième acte est invraisemblable et le tout est écrit en charabia.
;L’Auteur
:Espèce de petite cabotine, qui vous permettez…
;L’Actrice
:Cabotine ?… Il n’y en a pas un dans notre métier qui soit aussi cabot que vous !
;L’Auteur
:Ah ! si vous n’étiez pas une femme !
;L’Actrice
:Ah ! si seulement vous étiez un homme ! On dirait que vous faites faire vos pièces dans des asiles de gâteux…
;L’Auteur
:Et vous que vous prenez des leçons au Guignol des Champs-Elysées…
;L’Actrice
:Goujat ! Voyou !…
;L’Auteur
:Vipère !
;L’Actrice, ,,hurlant, frappant sur les meubles, déchaînée,,
:Pauvre… machin ! Mais dites-vous bien que si vous n’étiez pas l’ami d’Antoine, vous n’arriveriez pas à les placer, vos pièces… vos pièces faites de bric et de broc… avec les ordures des autres !… Et ce sont ces gens-là qui prétendent être des écrivains !… Des écrivains ?… Des barbouilleurs de papier !… Ça paye pour faire jouer ses pièces… et tout Paris le sait !… Et si on ne le sait pas, je le dirai, moi… je le crierai… je le hurlerai… afin que mon directeur, aux yeux de tous, ait l’air d’un tripoteur et non pas d’un crétin…
;L’Auteur, ,,enthousiaste,,
:Bravo !… Eh bien, voilà… ça y est ! Vous venez de le trouver votre cri… vous le tenez, votre accent… et voilà le mouvement de la grande scène du troisième acte ! Ça y est… sauvé !… Restez vite dans le même état, surtout… et venez répéter tout de suite… vous venez de faire enfin ce que je vous demande depuis quinze jours ! En scène, en scène ! (Ils sortent.)
!!!Bonus vidéo
::[[Voici une version télé avec Jean Poiret et Jacqueline Maillan (et Jacques Charon)|https://youtu.be/uSfqIWMv_BI]]
!!!!Loisirs confinés signalés dans le JDD
;Stars du bachata
:Pour les fans de rythmes latinos, ce couple d’Orlando en Floride est champion de bachata, une danse dominicaine sensuelle. À retrouver sur la chaîne ~YouTube ''//Island-TouchChannel//'' et sur //Instagram@atacaylaalemanaofficial//.
;Ballet
:En partenariat avec France Télévisions, l’Opéra de Paris met en ligne certaines de ses productions emblématiques. Actuellement jusqu’au 19 juin : Cendrillon, de Rudolf Noureev. ''//operadeparis.fr//'' et ''//france.tv/culturebox//''
;Documentaires en avant-première
:Pas question pour le festival de documentaires suisse Visions du réel de renoncer à sa 51 e édition. La programmation sera accessible gratuitement sur Internet jusqu’au 3 mai, dans la limite de 500 spectateurs par séance. À l’affiche : quelque 130 films, dont 78 en avant-première mondiale. ''//visionsdureel.ch//''
;Salle de cinéma en ligne
:La Cinémathèque française lance son service de vidéo à la demande, baptisé Henri, 100 % gratuit. Les cinéphiles ont rendez-vous tous les soirs à 20 h 30 pour visionner un long métrage rare restauré par l’établissement. ''//cinematheque.fr//''
;Une mission pour les petits
:Embarquez avec Gab, Hugo et Selim dans une aventure nocturne à travers Paris avec Mission Zigomar, un jeu interactif développé par les musées de Paris pour le jeune public, de 6 à 12 ans. D’une énigme à l’autre, il faudra empêcher l’affreux Zigomar de voler les œuvres des musées. ''//missionzigomar.paris.fr//''
;Comme dans un cocon
:Faites le plein d’ondes positives et de bonne humeur au Cocon Festival. Ateliers dessin, concerts, cours de cuisine, méditation… Chaque week-end, retrouvez une foule d’activités en vidéo sur Facebook, pour se détendre, se divertir et bichonner son moral. ''//parisnight.market//''
;Un aria pour tout comprendre à l’opéra
:Aria, c’est le nom du site de vulgarisation de l’Opéra national de Paris, conçu pour mobile. D’où vient le mot « ballet » ? Qu’est-ce qu’une soprano ? Quel est le rapport entre Star Wars et Wagner ? Vous le découvrirez en explorant de courts modules sur l’art lyrique ou en dialoguant avec l’intelligence artificielle d’Aria. Gratuit et accessible. ''//aria.operadeparis.fr//''
;Des jeux de société à télécharger
:Une bonne nouvelle pour ceux qui disposent d’une imprimante : l’éditeur Asmodee offre neuf jeux de société, comme Timeline, Contrario ou Dixit. Pour cela, téléchargez puis imprimez cartes, règles et plateaux. De quoi enchaîner les parties endiablées. ''//fr.asmodee.com//''
;Conte musical
:Shéhérazade, Casse-Noisette, Le Petit Poucet… Tous les mercredis, Élodie Fondacci et Radio Classique revisitent des contes dans le podcast Des histoires en musique. Chaque fable est accompagnée par les airs classiques de Tchaïkovski, Schubert ou encore Debussy. ''//radioclassique.fr//''
;Soulages à 360 degrés
:Si vous avez manqué les expositions consacrées à Pierre Soulages cette année, c’est le moment de vous rattraper. L’espace culturel Lympia de Nice et le département des Alpes-Maritimes proposent un voyage à travers l’œuvre du maître de l’outrenoir et les rencontres qui l’ont marqué. ''//departement06.fr//''
;Coloriages et BD
:Les Rencontres du 9 e art d’Aixen-Provence rebondissent sur la Toile et fourmillent d’activités en ligne. Au programme : des ateliers découpage et fresques à colorier pour les enfants, des dessins antistress pour les parents mais aussi des lectures, avant-premières d’albums et expos virtuelles. ''//bd-aix.com//''
;Du court au long
:Direction Clermont-Ferrand et son Festival international du court métrage. Chaque semaine, cinq fictions d’animation sont mises en ligne. Rendez-vous aussi sur Twitch pour des diffusions en direct, les mercredis et samedis à 16 heures pour les enfants et les jeudis et dimanches à 18 heures pour les grands. Le thème du jour : des courts devenus longs métrages. ''//clermont-filmfest.org//''
;Une virée au château
:Besoin d’espace ? Offrez-vous une visite privée dans un château grâce au site Internet du Centre des monuments nationaux. Coup de cœur pour l’exploration à 360 degrés du château de Pierrefonds (Oise). Vous pourrez même vous envoler pour une vue panoramique sur la forteresse et la forêt de Compiègne. //''monuments-nationaux.fr''// ; ''//scotome.com/pierrefonds//''
;À faire le week-end.
:Confinement oblige, la nouvelle lettre hebdomadaire du JDD adaptée pour être utile chaque jour et sans sortir. D’ordinaire réservée aux abonnés, elle est à cette adresse : ''//bit.ly/Jdd-bondimanche//''
!!Vendredi 17 janvier
► Couturière et filages du spectacle Malraux
!!!Dire :
!!!!!//[[Les extraits sont dans Plaisir de Dire|http://dire.tiddlyspot.com/#Vendredi%2017%20janvier]]//
* Exercices de variations sur des tirades choisies :
* Antigone : Comprendre...
* Ismène : Ils nous hueront.
* Garde à Vue: 20 ans de désobéissance à rattraper
* Garde à Vue: Fitzgerald et Giono
* Garde à Vue: France pays de la Liberté
* Graphologie : Oui, il est bien rond son F
* Muriel (le Psy) : C’est un monde !
* Toinette : Je suis médecin passager, qui vais de ville en ville
* [[Le bout du bout • Devos]], choisi par Denise.
`► Pour les filages ce jour, priorité à la vivacité des répliques et des interactions entre personnages.`
!!Choisir votre jeu de couleurs pour ce cahier :
{{$:/snippets/paletteswitcher}}
@@background-color:#822;text-align: center;color:#FFA;font: small-caps bold 24px/30px Georgia, serif;
{{!!title}}
@@
!!!!!!//Odile →//
!!!!!L'acte 3 de "on ne badine pas avec l'amour" , scène 6, <br> de : Perdican : "J//e n'ai rien à vous dire, qu'un adieu....//" <br> jusqu'à: Perdican : "//Jamais//".
!!Scène VI.
!!!!!//(La chambre de Camille.)//
→ [[Perdican et Camille - Début III-6]]
;Perdican,
//à part.//
"""Voilà,
sur ma vie,
un petit mensonge assez gros,
pour un agneau sans tache ;
je l’ai vue derrière un arbre écouter la conversation."""
!!!!!// (Haut.)//
"""Je n’ai rien à vous dire qu’un adieu,
Camille ;
je croyais que vous partiez ;
cependant votre cheval est à l’écurie,
et vous n’avez pas l’air d’être en robe de voyage.
"""
;Camille
"""J’aime la discussion ;
je ne suis pas bien sûre de ne pas avoir eu envie de me quereller encore avec vous.
"""
;Perdican
"""À quoi sert de se quereller,
quand le raccommodement est impossible ?
Le plaisir des disputes,
c’est de faire la paix.
"""
;Camille
"""Êtes-vous convaincu que je ne veuille pas la faire ?
"""
;Perdican
"""Ne raillez pas ;
je ne suis pas de force à vous répondre.
"""
;Camille
"""Je voudrais qu’on me fît la cour ;
je ne sais si c’est que j’ai une robe neuve,
mais j’ai envie de m’amuser.
Vous m’avez proposé d’aller au village,
allons-y,
je veux bien,
mettons-nous en bateau ;
j’ai envie d’aller dîner sur l’herbe,
ou de faire une promenade dans la forêt.
Fera-t-il clair de lune,
ce soir ?
Cela est singulier,
vous n’avez plus au doigt la bague que je vous ai donnée.
"""
;Perdican
"""Je l’ai perdue.
"""
;Camille
"""C’est donc pour cela que je l’ai trouvée ;
tenez,
Perdican,
la voilà.
"""
;Perdican
"""Est-ce possible ?
Où l’avez-vous trouvée ?
"""
;Camille
"""Vous regardez si mes mains sont mouillées,
n’est-ce pas ?
En vérité,
j’ai gâté ma robe de couvent pour retirer ce petit hochet d’enfant de la fontaine.
Voilà pourquoi j’en ai mis une autre,
et je vous dis,
cela m’a changée ;
mettez donc cela à votre doigt.
"""
;Perdican
"""Tu as retiré cette bague de l’eau,
Camille,
au risque de te précipiter ?
Est-ce un songe ?
La voilà ;
c’est toi qui me la mets au doigt !
Ah !
Camille,
pourquoi me le rends-tu,
ce triste gage d’un bonheur qui n’est plus ?
Parle,
coquette et imprudente fille,
pourquoi pars-tu ?
pourquoi restes-tu ?
Pourquoi,
d’une heure à l’autre,
changes-tu d’apparence et de couleur,
comme la pierre de cette bague à chaque rayon de soleil ?
"""
;Camille
"""Connaissez-vous le cœur des femmes,
Perdican ?
Êtes-vous sûr de leur inconstance,
et savez-vous si elles changent réellement de pensée en changeant quelquefois de langage ?
Il y en a qui disent que non.
Sans doute,
il nous faut souvent jouer un rôle,
souvent mentir ;
vous voyez que je suis franche ;
mais êtes-vous sûr que tout mente dans une femme,
lorsque sa langue ment ?
Avez-vous bien réfléchi à la nature de cet être faible et violent,
à la rigueur avec laquelle on le juge,
aux principes qu’on lui impose ?
Et qui sait si,
forcée à tromper par le monde,
la tête de ce petit être sans cervelle ne peut pas y prendre plaisir,
et mentir quelquefois par passe-temps,
par folie,
comme elle ment par nécessité ?
"""
;Perdican
"""Je n’entends rien à tout cela,
et je ne mens jamais.
Je t’aime Camille,
voilà tout ce que je sais.
"""
;Camille
"""Vous dites que vous m’aimez,
et vous ne mentez jamais ?
"""
;Perdican
"""Jamais."""
→ [[Perdican et Camille - Fin III-6]]
Perdican et Camille - Début III-6
;Camille
"""En voilà une qui dit pourtant que cela vous arrive quelquefois."""
!!!!!//(Elle lève la tapisserie ; Rosette paraît dans le fond, évanouie sur une chaise.)//
"""Que répondrez-vous à cette enfant,
Perdican,
lorsqu’elle vous demandera compte de vos paroles ?
Si vous ne mentez jamais,
d’où vient donc qu’elle s’est évanouie en vous entendant me dire que vous m’aimez ?
Je vous laisse avec elle ;
tâchez de la faire revenir."""
!!!!!(Elle veut sortir.)
;Perdican
"""Un instant,
Camille,
écoutez-moi.
"""
;Camille
"""Que voulez-vous me dire ?
c’est à Rosette qu’il faut parler.
Je ne vous aime pas,
moi ;
je n’ai pas été chercher par dépit cette malheureuse enfant au fond de sa chaumière,
pour en faire un appât,
un jouet ;
je n’ai pas répété imprudemment devant elle des paroles brûlantes adressées à une autre ;
je n’ai pas feint de jeter au vent pour elle le souvenir d’une amitié chérie ;
je ne lui ai pas mis ma chaîne au cou,
je ne lui ai pas dit que je l’épouserais.
"""
;Perdican
"""Écoutez-moi,
écoutez-moi !
"""
;Camille
"""N’as-tu pas souri tout à l’heure quand je t’ai dit que je n’avais pu aller à la fontaine ?
Eh bien !
oui,
j’y étais et j’ai tout entendu ;
mais,
Dieu m’en est témoin,
je ne voudrais pas y avoir parlé comme toi.
Que feras-tu de cette fille-là,
maintenant,
quand elle viendra,
avec tes baisers ardents sur les lèvres,
te montrer en pleurant la blessure que tu lui as faite ?
Tu as voulu te venger de moi,
n’est-ce pas,
et me punir d’une lettre écrite à mon couvent ?
tu as voulu me lancer à tout prix quelque trait qui pût m’atteindre,
et tu comptais pour rien que ta flèche empoisonnée traversât cette enfant,
pourvu qu’elle me frappât derrière elle.
Je m’étais vantée de t’avoir inspiré quelque amour,
de te laisser quelque regret.
Cela t’a blessé dans ton noble orgueil ?
Eh bien !
apprends-le de moi,
tu m’aimes,
entends-tu ;
mais tu épouseras cette fille,
ou tu n’es qu’un lâche !
"""
;Perdican
"""Oui,
je l’épouserai.
"""
;Camille
"""Et tu feras bien.
"""
;Perdican
"""Très bien,
et beaucoup mieux qu’en t’épousant toi-même.
Qu’y a-t-il,
Camille,
qui t’échauffe si fort ?
Cette enfant s’est évanouie ;
nous la ferons bien revenir,
il ne faut pour cela qu’un flacon de vinaigre ;
tu as voulu me prouver que j’avais menti une fois dans ma vie ;
cela est possible,
mais je te trouve hardie de décider à quel instant.
Viens,
aide-moi à secourir Rosette."""
!!!!!//(Ils sortent.)//
''► [[Retour extrait scène III.6|Perdican et Camille]]''
;Camille
"""En voilà une qui dit pourtant que cela vous arrive quelquefois."""
!!!!!//(Elle lève la tapisserie ; Rosette paraît dans le fond, évanouie sur une chaise.)//
"""Que répondrez-vous à cette enfant,
Perdican,
lorsqu’elle vous demandera compte de vos paroles ?
Si vous ne mentez jamais,
d’où vient donc qu’elle s’est évanouie en vous entendant me dire que vous m’aimez ?
Je vous laisse avec elle ;
tâchez de la faire revenir."""
!!!!!(Elle veut sortir.)
;Perdican
"""Un instant,
Camille,
écoutez-moi.
"""
;Camille
"""Que voulez-vous me dire ?
c’est à Rosette qu’il faut parler.
Je ne vous aime pas,
moi ;
je n’ai pas été chercher par dépit cette malheureuse enfant au fond de sa chaumière,
pour en faire un appât,
un jouet ;
je n’ai pas répété imprudemment devant elle des paroles brûlantes adressées à une autre ;
je n’ai pas feint de jeter au vent pour elle le souvenir d’une amitié chérie ;
je ne lui ai pas mis ma chaîne au cou,
je ne lui ai pas dit que je l’épouserais.
"""
;Perdican
"""Écoutez-moi,
écoutez-moi !
"""
;Camille
"""N’as-tu pas souri tout à l’heure quand je t’ai dit que je n’avais pu aller à la fontaine ?
Eh bien !
oui,
j’y étais et j’ai tout entendu ;
mais,
Dieu m’en est témoin,
je ne voudrais pas y avoir parlé comme toi.
Que feras-tu de cette fille-là,
maintenant,
quand elle viendra,
avec tes baisers ardents sur les lèvres,
te montrer en pleurant la blessure que tu lui as faite ?
Tu as voulu te venger de moi,
n’est-ce pas,
et me punir d’une lettre écrite à mon couvent ?
tu as voulu me lancer à tout prix quelque trait qui pût m’atteindre,
et tu comptais pour rien que ta flèche empoisonnée traversât cette enfant,
pourvu qu’elle me frappât derrière elle.
Je m’étais vantée de t’avoir inspiré quelque amour,
de te laisser quelque regret.
Cela t’a blessé dans ton noble orgueil ?
Eh bien !
apprends-le de moi,
tu m’aimes,
entends-tu ;
mais tu épouseras cette fille,
ou tu n’es qu’un lâche !
"""
;Perdican
"""Oui,
je l’épouserai.
"""
;Camille
"""Et tu feras bien.
"""
;Perdican
"""Très bien,
et beaucoup mieux qu’en t’épousant toi-même.
Qu’y a-t-il,
Camille,
qui t’échauffe si fort ?
Cette enfant s’est évanouie ;
nous la ferons bien revenir,
il ne faut pour cela qu’un flacon de vinaigre ;
tu as voulu me prouver que j’avais menti une fois dans ma vie ;
cela est possible,
mais je te trouve hardie de décider à quel instant.
Viens,
aide-moi à secourir Rosette."""
!!!!!//(Ils sortent.)//
''► [[Retour extrait scène III.6|Perdican et Camille]]''
Nous allons être jusqu'à nouvel ordre sans ateliers dans les clubs.
```
► Dans la période présente, il semble préférable de s'abstenir de nous réunir physiquement,
même chez les uns ou les autres.
```
Je viens de faire le tour des services de "conférences vidéo" gratuites sur le marché. Celle qui retient mon attention est Google Duo :
<<<
Intuitive, accessible sur tout ordinateur, sur téléphone ou tablettes Android ou Apple, protégée de l'extérieur par un chiffrement des données échangées.
<<<
| [[Présentation|Google Duo - appels vidéo de groupe jusqu'à huit participants]] et [[Comparatif|Comparatif des services d'appels vidéo]] |
Je ne l'ai pas encore testée, notamment pour s'assurer qu'elle soit suffisamment pratique pour faire des filages avec. Ne vous étonnez pas si je contacte telle ou telle d'entre vous pour en tester la facilité de prise en mains.
*► ''Isaac'' et ''Brigitte'', j'ai vu que parmi mes contacts téléphoniques, vous en étiez déjà utilisateurs. Donnez-nous ici votre retour d'expérience.
,,''Jacques'',,
"""
''Piqueniquedouille'' pour traduire //pampalugo// en vénitien, c'est _à dire un benêt.
C'est aussi le valet de pique qui ne s'apparie plus à rien dans le jeu de cartes quand on en a retiré le valet de trèfle pour jouer au //pampalugo//, et qui fait perdre la partie ã celui qui l'a encore en main à la fin,comme dans notre jeu du « //pouilleux// ››, du « //chien de pique// ›› ou du « //voleur// ››.
"""
"""
Jeu de mots intraduisible :
Nicoletto, à l'italienne, maudit Margarita et ceux qui lui ont mis quelque chose aux pieds, ou ceux qui la chaussent encore.
Margarita répond symétriquement en le maudissant ainsi que ceux qui l'ont nourri, ou ceux qui lui mettent encore quelque chose dans la bouche; c”est à dire, dans les deux cas, les parents de l'autre quand il était petit, ou ceux qui 1' entretiennent encore*
Mais « //chausser// ›› quelqu'un, comme lui « //mettre quelque chose dans la bouche// ››, ont évidemment un sens sexuel assez grossier.
;Faites un sort à chaque ponctuation
* ''Respirations'' : virgule = //noire//, points ( . ; ! ? ) = //blanche// ou paragraphe = //ronde// ; Pause...
* ''Changements'' : d'expression ? d'intonation (registre, rythme) ? d'action ou de direction du regard ? de posture, position ou mouvement ?
!!1 -► Exercice de seul en scène
```
Jouer la première scène de Notre Futur comme si c'était un sketch
```
<<<
://Un grand salon très richement meublé. Au fond, une cheminée avec des candélabres, allumés. Portes latérales, portes à droite et à gauche. Une table, des fauteuils, un divan, etc... Sur la table, des journaux. //
;HENRIETTE
:`(en costume de bal et couverte de diamants, entre par l’une des portes du fond et parle à quelqu’un qu’on n’aperçoit pas.)`
:Ainsi, vous avez bien compris ? Des bougies partout, des lumières... beaucoup de lumières ! Enfin, que tout soit pour le mieux. `(Entrant.)` Oh ! oui, beaucoup de lumières, je les adore, moi !... C’est étonnant comme cela sied à mon visage ! Eh ! bien, mais savez-vous madame, que vous êtes tout simplement ravissante. Ce costume vous va à ravir !... et je me trompe fort ou bien vous allez faire encore quelque nouvelle conquête !... Toutes ces dames vont être furieuses ! C’est si jaloux, les femmes !... Quant à ces messieurs, par exemple... monsieur de Neyris ! Je l’ai invité, il viendra ; d’ailleurs il m’aime !... il a l’intention de m’épouser, j’en suis sûre... il profitera de cette soirée pour... et déjà l’autre jour, dans le petit salon, lorsque j’étais assise sur mon joli divan havane, s’il s’est mis à mes genoux, c’était, bien sûr, pour me faire sa demande... Ce n’était pas l’envie qui lui en manquait, et si l’on ne nous avait interrompu !... `Sonnerie`
:Tiens ! l’on a sonné ! Neuf heures moins vingt. Qui peut venir si tôt ?
<<<
!!!2 -► Travail du [[BALLET D'INTRONISATION DU NOUVEAU DOCTEUR]] du //Malade Imaginaire//
* Perfectionnement de la mise en scène,
* des adresses des Docteurs à Argan,
* du chant des Bene Respondere,
* de la sarabande finale autour du nouveau Docteur
Le seul "cours" complet en français que j'ai trouvé sur le Net. Il est Québequois et ... "évangélique", n'empêche il peut nous faire réfléchir à beaucoup de choses qui nous intéressent :
::► ''[[L'art du théâtre, de Lorraine Hamilton|https://drive.google.com/file/d/1vGYzXQ11yG3EnWiIA5_tQsVzlEJ4PJ5P/view?usp=sharing]] ''(format word)
!!!![[Glossaire du théâtre (Université du Québec)|http://www.theatrales.uqam.ca/glossaire.html]]
!!!![[Lexique théâtral (Wikipedia)|https://www.wikiwand.com/fr/Lexique_th%C3%A9%C3%A2tral]]
[[Exercices de théâtre par Lorraine Hamilton|http://www.theatreevangelique.com/Document/Exercices.pdf]]
[[Ressources de Dramaction (Québec)|http://www.dramaction.qc.ca/]]
[[https://www.theatreevangelique.com/exercices-pour-la-voix/]]
;Une superbe démonstration (avec un accent québéquois à couper au couteau !)
:[[Karine Gonthier Hyndman explique comment jouer la comédie en 8 minutes!|https://youtu.be/sFv56VCm06U]]
;Du plancher pelvien à la glotte, une très claire pédagogie de la voix :
:[[Technique de respiration, souffle, voix - Isabelle Trottier|https://youtu.be/gRgShp4Sj30]]
;[[Articuler : exercices de virelangues à ne pas manquer !|https://youtu.be/247FtToJKGc]]
;Vous saurez tout sur nos voyelles nasales
:[[French Pronunciation - Les Voyelles Nasales "ON" - "EN" - "AIN"|https://youtu.be/j_Qs75dfpko]]
!!!Les vidéos de Fanny Pierre
:Rien de transcendant, mais partage son expérience de comédienne avec simplicité et bon sens. Comme une bonne copine qui serait comédienne.
;Cours de Fanny Pierre (comédienne belge) sur ~YouTube :
:[[Exercices de Voix|https://youtu.be/n1sOF2DZ10s]]
:[[Comment mémoriser un texte et éviter les trous de mémoire?|https://youtu.be/1SYEyMNXR80]]
:[[Comment rire?|https://youtu.be/Y3uu8txaxMU]]
:[[Comment pleurer?|https://youtu.be/mkeY3RyPtHk]]
:[[Etre à l'aise avec son corps|https://youtu.be/rFPIxeTsfYo]]
:[[Comment devenir le personnage|https://youtu.be/DCflc3Cwf_I]]
:[[Préparer un Monologue|https://youtu.be/uJI8Yvb6SGw]]
!Avez-vous répondu à ces questions pour chacune de vos entrées en scène ?
# Pourquoi l'auteur a-t-il voulu cette scène, à cet endroit ?
#Quand j’entre en scène, je viens d’où ? Que faisais-je avant dans ce lieu ?
#Quand j’entre en scène, où vais-je ? Pourquoi suis-je là ?
#Lorsque je sors de scène, où vais-je ? Pourquoi est-ce que je sors ?
#Qu’est-ce que je veux dans la scène ? (pour moi ? Pour quelqu’un d’autre ?)
#Qui sont les autres pour moi ?
#Qu'est-ce que la scène modifie dans le ressenti de mon personnage ?
#Qu'est-il important que je manifeste (ne manifeste pas) au public ?
Dans le //Barbier de Séville//, je n’avais qu’ébranlé l’État ; dans La //Follejournée ou le Mariage de Figaro//, plus infâme et séditieux, je le renversais defond en comble. Il n’y avait plus rien de sacré si l’on permettait cet ouvrage.
Alors les grands du monde ont vu jouer avec
scandale :
```
"Cette pièce où l’on peint un insolent valet
Disputant sans pudeur son épouse à sonmaître."
M. Gudin.
```
LA FOLLE JOURNÉE explique donc comment, dans un temps prospère, sous un roi juste et des ministres modérés, l’écrivain peut tonner sur les oppresseurs, sans craindre de blesser personne.
<hr>
Les personnages :
''LE COMTE'', assez galant, même un peu libertin, à peu près comme les autres seigneurs de ce temps-là.
Je lui ai opposé l’homme le plus dégourdi de sa nation, ''FIGARO'', qui, tout en défendant ''SUZANNE'', sa fiancée, se moque des projets de son maître. Il ne ruse avec son seigneur que pour garantir celle qu’il aime.
Le Comte suborneur contrarié, est toujours arrêté dans ses vues. Il est obligé de tomber à chaque fois aux pieds de sa femme, ...
''LA COMTESSE''
... qui, bonne, indulgente et sensible, finit par lui pardonner : c’est ce qu’elles font toujours.
A l'opposé de ce mari peu délicat, elle est la plus vertueuse des femmes.
Abandonnée d’un époux trop aimé, je la montre - pour faire ressortir son respect du devoir - à combattre un goût naissant pour un aimable enfant, ''CHÉRUBIN'' son filleul : un goût qui aurait pu devenir dangereux. ,,(Merci à Yvonne...),,
<hr>
Suzanne est sa camériste. Spirituelle, adroite et rieuse, elle n’hésite pas à confier les intentions du Comte aux deux personnes les plus soucieuses de sa bonne conduite : sa maîtresse la Comtesse, et son fiancé Figaro. Elle n'a pas une phrase, un mot, qui ne respire la sagesse et l’attachement à ses devoirs.
<hr>
Chérubin n’est plus un enfant, mais pas encore un homme, il en est aux premiers battements du cœur. Aimé de tout le monde au château, vif, espiègle et brûlant, il dérange sans le vouloir, les projets du comte.
<hr>
''MARCELINE''
Très friande de Figaro, elle est une femme d’esprit, née un peu vive, mais dont les erreurs et l’expérience ont réformé le caractère.
Coupable d’un ancien égarement, devrait-elle s'en voir punie aujourd'hui ?
Je la montre en femme humiliée qui accuse les fauteurs du désordre où sont entraînées toutes les jeunes filles douées d’une jolie figure.
<hr>
''ANTONIETTA''
Jardinière au Château elle est la tante de Suzanne. Souvent pompette, mais cela n'entrave pas du tout son solide aplomb.
<hr>
Un mot sur les AUTRES PERSONNAGES :
''BRID'OISON'' : le Juge //(phrase-culte)//
''DOUBLE-MAIN'' : son greffier //(phrase-culte)//
''L'HUISSIER'' : toujours glapissant //(phrase-culte)// ,,(Merci à Mireille...),,
!!<center><p style="color:red">
<$list filter="[[BARBARA]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
14:00 MOUFFETARD</p></center>
<<<
;► Recherche de mises en scène, et manèges pour :
* Scènes de Margarita, Giacomina, Rocco, Lunardo, Lodovica :
** [[I,4 - Nicoletto et Margarita|La Bonne Mère I,4 - Nicoletto et Margarita.]]
** [[I,1 - BARBARA et GIACOMINA|La Bonne Mère I,1 - BARBARA et GIACOMINA]] ou [[II,1 - AGNESE BARBARA GLACOMINA|La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
** Le marchandage ou l'a-parte ROCCO AGNESE de [[Barbara, Agnese, Giacomina, Rocco|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
** Lunardo et [[II,14 - avec Giacomina|La Bonne Mère II,14 - Lunardo et Giacomina.]]. ou [[II,16 - avec Margarita.|La Bonne Mère II,16 - Lunardo et Margarita.]]
** [[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
** Une tirade de __[[BARBARA]]__ (une que tu aimerais voir faire en manège, Chantal).
* La scène de Guitry dans ''[[On passe dans huit jours|On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]''
<<<
@@background-color:#800;text-align: center;color:#FFE;font: small-caps bold 24px/30px Georgia, serif;
{{!!title}}
@@
^^//Retrouvez le détail de chaque rendez-vous dans l'onglet// `Agenda des Septuas`.^^
!''2020''
!!''THÉÂTRE''
,,► Réalisé : [[Représentations publiques 2020]],,
5
MARS 2020, JEU.
14:30 à 16:30
♥♥♥ ''Graphologue, Psy, Garde à Vue, Antigone, Devos, Malade Imaginaire'' à Mouffetard ♥♥♥
19
MARS 2020, JEU.
14:30 à 16:30
♥♥♥ ''Graphologue, Notre Futur, Garde à Vue, Antigone, Devos, Malade Imaginaire'' aux Épinettes ♥♥♥
| !^^► ''//Notre Futur// à la place du //Psy//''^^ |
25 ?
MAI 2020, LUN.
14:30 à 16:30
♥♥♥ ''FIGARO aux Ternes'' ♥♥♥
22
OCT. 2020, JEU.
14:30 à 16:30
♥♥♥'' Théâtre à Mouffetard'' ♥♥♥
3
DÉC. 2020, JEU.
14:30 à 16:30
♥♥♥ ''Fin d'année - Mouffetard ''♥♥♥
!!''PLAISIR DE DIRE''
12
MARS 2020, JEU.
14:30 à 16:30
♦♦♦ ''« Condition des Femmes » au Chäteau des Rentiers'' ♦♦♦
18
JUIN 2020, JEU.
14:30 à 16:30
♦♦♦ ''« Condition des Femmes » à Mouffetard'' ♦♦♦
!!''ANIMATIONS''
31
MARS 2020, MAR.
14:30 à 17:00
♣♣♣ ''Animation Pâques à Mouffetard'' ♣♣♣
2
AVR. 2020, JEU.
14:30 à 16:30
♣♣♣ ''Animation Printemps Mouffetard'' ♣♣♣
3
NOV. 2020, MAR.
14:00 à 17:30
♣♣♣ "Gentillesse" à Mouffetard ''♣♣♣
---
!!!Pourquoi [[La Bonne Mère|LA BONNE MÈRE ♦ Goldoni]] ?
# Le travail sur La Colonie (et sur le final du Malade) a montré que nous pouvions nous "débrider" et manifester vivacité et gaité ensemble sur scène. C'est le propre du théâtre pas seulement de présenter et faire comprendre un texte (s'adresser à la tête), mais surtout de le mettre en vie dans une incarnation qui touche le public au coeur.
# Le théâtre de Goldoni nous fournit un outil pour étoffer et multiplier notre vivacité de jeu :
#* Brièveté des répliques, langage quotidien, absence de discours.
#* Interactions croisées, multiples et constantes des protagonistes, très souvent nombreux sur scène.
#* Situations familières (et toujours actuelles) d'une vie de quartier, avec ses clans, manoeuvres, commérages...
#* Des caractères simples et univoques, issus des stéréotypes de la Comédia dell'arte (Arlequin, Colombine, Matamore, Pantalon, ...), mais que Goldoni tire de la simple pitrerie en leur confèrant une individualité personnelle : plaisants à silhouetter ou caricaturer.
#* La Bonne Mère est une pièce avec 6 ou 7 rôles féminins, et 3 ou 2 masculins, ce qui ne colle pas trop mal à notre effectif.
#* La lecture de la pièce que nous avons entamée mardi (à distance avec [[DUO|https://duo.google.com/]]), Brigitte, Mireille, Michèle, Isaac et moi a plu aux quatre comédiennes (Isaac nous ayant quitté avant la fin de session).
!!!Comment ?
!!!!Le casting
```
♦ S'il y a certes beaucoup de rôles, il n'y a pas de la place pour tous :
```
:-► S'il y a beaucoup de volontaires, on pourra dédoubler certains rôles, et les distribuer en alternance.
```
♦ Si les répliques sont courtes, elles sont nombreuses, plusieurs centaines par rôles, qui s'interpénêtrent constamment avec celles des autres.
```
:-► C'est bien sûr tout l'intérêt pour nous de l'exercice auquel nous oblige Goldoni. Nous isolerons pour commencer deux ou trois scènes, éventuellement représentables isolément si nous n'allions pas plus loin.
:-►Le travail sur ces scènes permettra de tester la capacité de mémorisation de uns ou des autres, et l'aptitude à représenter tel personnage de manière convaincante. Ce n'est qu'après un travail sur ces scènes que nous arrêterons ensemble le casting définitif (et les doublures).
!!!!La durée
```
La pièce complète dure près de deux heures : il n'est pas question de la jouer intégralement
```
:► Si le travail préparatoire montrait que jouer la pièce était trop ambitieux pour nous, nous nous limiterions aux deux ou trois scènes isolées sur lesquelles nous nous serions entraînés.
:► Si nous nous en sentons capables - ce que je crois -, nous ferions de la Bonne Mère le clou d'un spectacle (à partir de septembre) en en représentant un sous-ensemble d'environ une heure, de manière à ce que ceux qui ne sont pas distribués puissent paraître dans les autres scènes de ce spectacle.
!!!!Quand ?
:''`► Objectif SEPTEMBRE`''
: ↓
:''`► Pendant le confinement, lecture et travail sur table de scènes avec ceux qui peuvent nous rejoindre sur` [[DUO|https://duo.google.com/]]''
Lisez d'abord [[la pièce|http://septuas.tiddlyspot.com/#LA%20BONNE%20M%C3%88RE%20%E2%99%A6%20Goldoni]] ☺
`Les trois peronnages sont debouts, à distance, hiératiques, Ils vont s'animer tour à tour lors du passage du Prologue qui les concerne`
;Le Prologue
:Voilà les personnages qui vont vous jouer un moment de l'histoire d'Antigone.
:Voilà,
:Ismène, `Ismène va virevolter sur la scène, illustrant son portrait` la blonde, la belle, l'heureuse Ismène, son goût de la danse et des jeux, son goût du bonheur et de la réussite, éblouissante dans sa nouvelle robe, sa sensualité aussi, car Ismène est bien plus jolie qu'Antigone, Ismène rit aux éclats, au milieu des autres garçons, Ismène bavarde et rit avec eux, avec le fils de Créon le jeune Hémon, jusqu'à ce que l'orchestre attaque une nouvelle danse...
:`Ismène reprend a place hiératique initiale, Antigone vient lentement s'asseoir (au sol ?) et mimer son acceptation d'Hémon` Hémon, tout le portait vers Ismène, et puis un soir il a demandé à Antigone d'être sa femme. Personne n'a jamais compris pourquoi. Antigone a levé sans étonnement ses yeux graves sur lui et elle lui a dit 'oui' avec un petit sourire triste...
:Voilà,
:Antigone, est assise là, et ne dit rien. Elle regarde droit devant elle. Elle pense. Elle que personne ne prenait au sérieux va se dresser seule en face du monde, seule en face du roi Créon, dont elle enfreint les ordres. Elle pense qu'elle va mourir, elle qui aurait bien aime vivre. Elle sent qu'elle s'éloigne à une vitesse vertigineuse de sa sœur.
:Voilà,
:`La nourrice s'anime, et commence à tricoter` Cette vieille dame qui tricote, c'est la nourrice qui a élevé les deux petites. Elle est bonne, digne, aimante.
: `Les trois personnages sont à vue, Ismène au fond, immobile, Antigone assise au centre en silence, dans le fond de scène, au ralenti, pendant la fin du Prologue, la nourrice fait mine de chercher Antigone, s'affolant progressivement, jusqu'à entrer en milieu de scène en pleurs. `
;Le Prologue
:Cette nuit, la chambre d'Antigone est restée vide.
:Antigone bravant l'interdiction de Créon qui avait ordonné qu'on laisse pourrir au soleil le cadavre de son frère
:rebelle,
:Antigone bravant les gardes,
:a tenu à donner une sépulture à son frère,
:et cette nuit a elle a commencé à recouvrir de ses mains le corps avec de la terre.
:
:C'est le matin, elle revient juste,
:épuisée,
:mais fière et déterminée.
:`La nourrice découvre enfin Antigone, encore en pleurs, mais rassurée.
\define select()
<$select tiddler="$:/temp/autoscroll/selection" default="" actions=<<show>>>
<option value="">select a tiddler...</option>
<$list filter=<<autotags>>>
<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>
</$list>
</$select>
\end
\define settime()
<style> .autoScrollInput { width:3em; } </style>
<$edit-text class="autoScrollInput" tiddler={{$:/temp/autoscroll/selection}} field="scrolltime" tag="input" default="" placeholder="" />
\end
\define show()
<$reveal state="$:/temp/autoscroll/selection" type="match" text=""> <<hide>> </$reveal>
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text=""> <<stop>> </$reveal>
\end
\define hide()
<$action-deletetiddler $tiddler="$:/temp/autoscroll/stylesheet" />
<$action-deletetiddler $tiddler="$:/temp/autoscroll/selection" />
\end
\define stop()
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text="">
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" pause="" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { $(framestyles)$;height:$(frameheight)$;overflow:hidden; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transform:translateY(0px); transition:transform 0s linear; }
"""/>
</$reveal>
\end
\define start()
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text="">
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" pause="false" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { $(framestyles)$;height:$(frameheight)$;overflow:hidden; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transform:translateY(calc(-100% + $(frameheight)$ - 3em)); transition:transform $(scrolltime)$s linear; }
"""/>
</$reveal>
\end
\define pause()
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="nomatch" default="false"> <<start>> </$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="false">
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" pause="true" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { $(framestyles)$;height:$(frameheight)$;overflow:hidden; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transition:transform 1000000000s linear; }
"""/>
</$reveal>
\end
\define goto()
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text="">
<$tiddler tiddler={{$:/temp/autoscroll/selection}}><$action-navigate /></$tiddler>
<<hide>>
</$reveal>
\end
\define open()
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text="">
<$action-sendmessage $message="tm-open-window" $param={{$:/temp/autoscroll/selection}} width={{{ [{$:/info/browser/screen/width}divide[2]] }}} />
<<hide>>
</$reveal>
\end
\define controls()
<<select>><<settime>>
 
<span style={{{ [{$:/temp/autoscroll/selection}match[]then[fill:gray;]] }}}>
<$vars scrolltime={{{ [{$:/temp/autoscroll/selection}get[scrolltime]] }}}>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="">
<$button actions=<<start>> tooltip=""> {{$:/core/images/chevron-down}} </$button>
</$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="false">
<$button actions=<<pause>> tooltip=""> {{$:/core/images/timestamp-off}} </$button>
</$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="true">
<$button actions=<<pause>> tooltip=""> {{$:/core/images/chevron-down}} </$button>
</$reveal>
<span style={{{ [{$:/temp/autoscroll/stylesheet!!pause}match[]then[fill:gray;]] }}}>
<$button actions=<<stop>> tooltip=""> {{$:/core/images/chevron-up}} </$button>
</span>
 
<$button actions=<<goto>> tooltip="goto"> {{$:/core/images/preview-open}} </$button>
<$button actions=<<open>> tooltip="ouvrir"> {{$:/core/images/open-window}} </$button>
<$button actions=<<hide>> tooltip="fermer"> {{$:/core/images/close-button}} </$button>
</$vars>
</span>
\end
\define viewer()
<$vars scrolltime={{{ [{$:/temp/autoscroll/selection}get[scrolltime]] }}}>
<$keyboard key="escape" actions=<<stop>>>
<$button class="tc-btn-invisible scrollFrame" style="width:100%;text-align:left;outline:none;cursor:default;margin-top:0.25em;" actions=<<clickaction>>>
<div class="scrollContent"> <$transclude tiddler={{$:/temp/autoscroll/selection}} mode="block" /> </div>
</$button>
</$keyboard>
</$vars>
\end
<$vars prefix="[tag[" suffix="]]">
<$set name="autotags" filter="[enlist{TiddlyTools/AutoScroll/Setup!!autotags}] [[autoscroll]] +[sort[]addprefix<prefix>addsuffix<suffix>]">
<$vars frameheight={{{ [[TiddlyTools/AutoScroll/Setup]get[frameheight]] ~[[50vh]] }}}>
<$vars framestyles={{{ [[TiddlyTools/AutoScroll/Setup]get[framestyles]] }}}>
<$vars clickaction={{{ [[TiddlyTools/AutoScroll/Setup]get[clickaction]] }}}>
<<controls>>
<$reveal state="$:/temp/autoscroll/selection" type="nomatch" text="">
<<viewer>>
</$reveal>
"""Ou plus exactement quinze lires et quinze sous, comme le dira Rocco juste après.
Se trompe-t-il lui-même dans les calculs rapides, bien qu'il soit marchand, ou veut-il leur faire discrètement cadeau de dix sous ?
A moins que la façon qu'ont les femmes de manier les chiffres ne lui tourne la tête...
Cette séquence curieuse semble indiquer en tout cas que le calcul, avec les monnaies de l'époque, n'était pas à la portée de tous."""
► Nouveaux textes :<br>
* [[Scènes de la vie conjugale • Ingmar Bergman]]<br>
* [[Médée • Dario Fo]]<br>
► Exhumé du [[Grenier|http://grenier.tiddlyspot.com/]] : [[Tante Bise • Jean Anouilh]]
<br>
,,''^^
► [[Nouvelle organisation des ateliers pendant les contraintes COVID]]<br>
Récents : [[Apologie de l'écoute ♦ Peter Brook]] • [[Pratiquer "les Mains en l'air"|J'arrête]] ,,
<div class="intro-content" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 1.6rem; color: rgb(1, 21, 70); font-family: "Galano Grotesque", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 19.6205px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><h5 style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-top: 0px; margin-bottom: 0px; font-weight: 700; font-size: 2rem; line-height: 1.5; letter-spacing: -0.05rem;">Textes, droits d'auteurs, éditeurs</h5><p style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-top: 0px; margin-bottom: 0px;">Répertoires de textes</p></div><div class="content" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; color: rgb(1, 21, 70); font-family: "Galano Grotesque", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 19.6205px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><ul class="links" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin: 0px; list-style-type: none; padding: 0px;"><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="https://theatreanimagination.com/" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Animagination</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="http://adelinc.qc.ca/" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Auteurs dramatiques en ligne (ADEL)</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="https://www.bnf.fr/fr" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Bibliothèque nationale de France (BNF)</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="http://www.cead.qc.ca/_accueil" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Centre des auteurs dramatiques (CEAD)</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="http://www.comunikmedia.com/publications_cdt_volume1.php" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Coups de théâtre</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="https://www.dramaction.qc.ca/fr/" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Dramaction</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="https://www.leproscenium.com/" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Le Proscenium</a></li><li style="box-sizing: border-box; -webkit-font-smoothing: antialiased; margin-bottom: 0.25rem;"><a class="links" href="https://playwrightsguild.ca/" target="_blank" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; background-color: transparent; display: inline-block; text-decoration: none; line-height: 1.2; color: rgb(8, 48, 150);">Playwrights Guild of Canada (PGC)</a></li></ul></div>
23
JAN. 2020 JEU.
14:30 à 16:30
♥♥♥ ''Spectacle MALRAUX'' ♥♥♥
[[Vidéo|https://photos.google.com/photo/AF1QipMO1dZbLWr-c9bRLz8GK6M4hrkC_lc7VQEVs2iH]]
27
JAN 2020,⋅ LUN.
14:00 à 16:00
♥♥♥ ''Spectacle RENTIERS'' ♥♥♥
Les [[vidéos|https://photos.google.com/share/AF1QipOeqTdX0xcQ6gyBCSb0_bCzrQcQqKAO29eCrbeaC09dvjiE3XwreYtt0Kgo6kXTqA?key=c0l1ZExhbkFOMWFtV24zV0o3dllxZWJJS1l0MWRR]]
!!Retour du travail dans un couple
;Femme
: - Bonsoir chéri
;Mari
: - Bonsoir chérie
;Femme
: - Tu as passé une bonne journée ?
;Mari
: - Ho , comme d'habitude.
;Femme
: - Est-ce que tu es prêt à présenter tes excuses maintenant ?
;Mari
: - Non, pas encore.
|" //J'ai composé pour le divertissement de mes élèves une douzaine de comédies. C'est aussi à leur grand plaisir que, durant les soirées d'hiver, j'ai composé et dessiné sous leurs yeux ces histoires folles, mêlées d'un grain de sérieux, qui étaient destinées à un succès que j'étais bien loin de prévoir.// " écrit-il à Sainte-Beuve. |[img[https://upload.wikimedia.org/wikipedia/commons/3/32/Rodolfe_Toepffer.png]]|
| |[img[https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Albert_p_39.jpg/800px-Albert_p_39.jpg]]|
Chacun des dessins est accompagné d'une ou deux lignes de texte. " //Les dessins, sans le texte, n’auraient qu’une signification obscure ; le texte, sans les dessins, ne signifierait rien. Le tout ensemble forme une sorte de roman d’autant plus original qu’il ne ressemble pas mieux à un roman qu’à autre chose// ".
|Un comique, basé<br>sur l'accumulation, <br>la gradation vers <br>l'absurde, <br>un rythme vif, <br>et les mésinterprétations. |[img[https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Toepffer_Cryptogame_13.png/1024px-Toepffer_Cryptogame_13.png]]|
Töpffer dessine des personnages typés exprimant clairement leur personnalité. Pour qu'une histoire en image « parle directement aux yeux », l'essentiel des évolutions narratives doit pouvoir se lire sur les faciès.
C'est pour cela qu'il peut nous fournir le support d'un exercice théâtral.
:
.
@@background-color:#FDD;
{{!!title}}
@@
!!!!SCÈNE IX - TOINETTE, ARGAN, BÉRALDE.
;TOINETTE
//quitte son habit de médecin si promptement qu’il est difficile de croire que ce soit elle qui a paru en médecin.//
:Que voulez-vous, Monsieur ?
;ARGAN
: Comment ?
;TOINETTE
: Ne m’avez-vous pas appelé ?
;ARGAN
: Moi ? non.
;TOINETTE
: Il faut donc que les oreilles m’aient corné.
;ARGAN
: Demeure un peu ici pour voir comme ce médecin te ressemble.
`Béralde fait signe à Toinette "Non, surtout pas !"`
;TOINETTE, //en sortant, dit.//
:Oui, vraiment, j’ai affaire là-bas, et je l’ai assez vu.
;ARGAN
: Si je ne les voyais tous deux, je croirais que ce n’est qu’un.
`Béralde s'approche de son frère pour faire écran, et, très suave : `
;BÉRALDE
: J’ai lu des choses surprenantes de ces sortes de ressemblances, et nous en avons vu de notre temps où tout le monde s’est trompé.
;ARGAN
: Pour moi, j’aurais été trompé à celle-là, et j’aurais juré que c’est la même personne.
► [[SCÈNE X - TOINETTE, //en médecin//, ARGAN, BÉRALDE.]]
!!!!!SCÈNE VII : TOINETTE, ARGAN, BÉRALDE.
`Toinette entre comme si elle était très impressionnée par le visiteur`
;TOINETTE
: Monsieur, voilà un médecin qui demande à vous voir.
;ARGAN
: Et quel médecin ?
`Très articulé, comme parlant à un sourd : `
;TOINETTE
: Un médecin de la médecine.
;ARGAN
: Je te demande qui il est ?
;TOINETTE
: Je ne le connais pas ; mais il me ressemble comme deux gouttes d’eau, `clin d'oeil à Béralde` et si je n’étais sûre que ma mère était honnête femme, je dirais que ce serait quelque petit frère, qu’elle m’aurait donné depuis le trépas de mon père.
`clin d'oeil à Béralde.
Toinette se sauve vivement enfiler un costume de Médecin (éventuellement à vue des spectateurs)`
;ARGAN
: Fais-le venir.
;BÉRALDE
: Vous êtes servi à souhait. Un médecin vous quitte, un autre se présente.
;ARGAN
: J’ai bien peur que vous ne soyez cause de quelque malheur.
;BÉRALDE
: Encore ! Vous en revenez toujours là ?
;ARGAN
: Voyez-vous, j’ai sur le cœur toutes ces maladies-là que je ne connais point, ces...
► [[SCÈNE VIII - TOINETTE en médecin, ARGAN, BÉRALDE.]]
!!!!!SCÈNE VIII - TOINETTE en médecin, ARGAN, BÉRALDE.
;TOINETTE, en médecin.
`Du pas de la porte, avec une chaleur affectée.`
:Monsieur, agréez que je vienne vous rendre visite,
`Elle s'incline cérémonieusement`
et vous offrir mes petits services pour toutes les saignées, et les purgations, dont vous aurez besoin.
`Béralde considère Toinette, effaré de l'à-peu-près du déguisement`
;ARGAN
: Monsieur, je vous suis fort obligé. `à BÉRALDE` Par ma foi, voilà Toinette elle-même.
;TOINETTE
`Coup d'oeil furtif à Béralde : elle réalise s'être insuffisamment déguisée.`
: Monsieur, je vous prie de m’excuser, j’ai oublié de donner une commission à mon valet, je reviens tout à l’heure.
`Elle disparait prestement`
;ARGAN
: `à BÉRALDE` Eh ! ne diriez-vous pas que c’est effectivement Toinette ?
;BÉRALDE
: Il est vrai que la ressemblance est tout à fait grande. Mais ce n’est pas la première fois qu’on a vu de ces sortes de choses, et les histoires ne sont pleines que de ces jeux de la nature.
;ARGAN
: Pour moi, j’en suis surpris, et...
► [[SCÈNE IX - TOINETTE, ARGAN, BÉRALDE.]]
!!!!!SCÈNE X - TOINETTE, //en médecin//, ARGAN, BÉRALDE.
;TOINETTE,// en médecin.//
:`Depuis la porte, avec emphase` Monsieur, je vous demande pardon de tout mon cœur.
;ARGAN
: `Se tournant vers Béralde` Cela est admirable !
;TOINETTE
: Vous ne trouverez pas mauvaise, s’il vous plaît, la curiosité que j’ai eue de voir un illustre malade comme vous êtes,
`re-salutation profonde`
et votre réputation qui s’étend partout, peut excuser la liberté que j’ai prise.
;ARGAN
: `La scrutant` Monsieur, je suis votre serviteur.
;TOINETTE
: Je vois, Monsieur, que vous me regardez fixement.
:`Elle prend la pose :`
:Quel âge croyez-vous bien que j’aie ?
;ARGAN
: Je crois que tout au plus vous pouvez avoir vingt-six, ou vingt-sept ans.
;TOINETTE
: Ah, ah, ah, ah, ah !
:`Fièrement : `J’en ai quatre-vingt-dix.
;ARGAN
: Quatre-vingt-dix ?
;TOINETTE
: Oui. Vous voyez un effet des secrets de mon art,
:`s'approche un peu, et se fait admirer`
:de me conserver ainsi frais et vigoureux.
;ARGAN
: `À BÉRALDE` Par ma foi voilà un beau jeune vieillard pour quatre-vingt-dix ans.
;TOINETTE
`1. CHERCHE À IMPRESSIONNER ARGAN`
`crescendo`
: Je suis médecin passager,
:qui vais de ville en ville,
:de province en province,
:de royaume en royaume,
::pour chercher d’illustres matières __à ma capacité__,
::pour trouver des malades __dignes de m’occuper__,
:capables d’exercer les __grands__,
::et __beaux__ secrets
:que __j’ai trouvés dans la médecine__.
`2. FAIT TOUT POUR COMPLAIRE AUX IMAGINATIONS D'ARGAN`
:Je dédaigne
::de m’amuser à ce menu fatras de maladies ordinaires,
::à ces bagatelles de rhumatismes et de fluxions,
::à ces fiévrottes,
::à ces vapeurs,
::et à ces migraines.
:Je veux
::des maladies __d’importance__,
:`ARGAN de plus en plus transporté, va aquiescer à chaque fois, tandis que Toinette se délecte - elle - à énumérer, contemplant à chaque coup son effet, avant d'en rajouter : `
::de bonnes fièvres continues,
:::avec des transports au cerveau,
::de bonnes fièvres pourprées,
::de bonnes pestes,
::de bonnes hydropisies formées,
::de bonnes pleurésies,
:::avec des inflammations de poitrine,
:c’est là que je me __plais__,
:c’est là que je __triomphe__ ;
`Argan est complètement sous le charme`
`3. ELLE PRÉSENTE LE CONTRAT À SIGNER`
:et je voudrais,
:Monsieur,
::que vous eussiez __toutes__ les maladies que je viens de dire,
::que vous fussiez __abandonné__
:::__de tous__ les médecins,
::désespéré,
::à l’agonie,
:pour vous montrer __l’excellence de mes remèdes__,
:`salutation` et l’envie que j’aurais de vous rendre service.
;ARGAN
: Je vous suis obligé, Monsieur, des bontés que vous avez pour moi.
;TOINETTE
`4. ELLE ÉTEND SA DOMINATION` `Sure de l'avoir sous sa coupe, elle lui fait maintenant avaler n'importe quoi`
: Donnez-moi votre pouls.
::Allons donc, que l’on batte comme il faut.
::Ahy,
::je vous ferai bien aller comme vous devez.
::Hoy, ce pouls-là fait l’impertinent ;
:je vois bien que vous ne me connaissez pas encore.
:`Suspicieux : `
:Qui est votre médecin ?
;ARGAN
: `avec inquiétude` Monsieur Purgon.
;TOINETTE
: `Faisant mine de chercher vainement ` Cet homme-là n’est point écrit sur mes tablettes entre les grands médecins.
:`Suspicieux, penché tout prêt du visage d'Argan : `De quoi, dit-il, que vous êtes malade ?
;ARGAN
: Il dit que c’est du foie, `face à la mine réprobatrice du médecin, il corrige précipitamment : `et d’autres disent que c’est de la rate.
;TOINETTE
: `Avec superbe` Ce sont tous des ignorants,
: `droit dans les yeux d'Argan : `c’est du __poumon__ que vous êtes malade.
;ARGAN
: `Désarçonné` Du poumon ?
;TOINETTE
: `Péremptoire` Oui.
: `Avec autorité :` Que sentez-vous ?
;ARGAN
: Je sens de temps en temps des douleurs de tête.
:`Même manège de Toinette, crescendo, jusqu'à entraîner tout le public dans la ritournelle : "Le poumon" ! `
;TOINETTE
: Justement,
: le __poumon__.
;ARGAN
: Il me semble parfois que j’ai un voile devant les yeux.
;TOINETTE
: Le __poumon__.
;ARGAN
: J’ai quelquefois des maux de cœur.
;TOINETTE
: Le __poumon__.
;ARGAN
: Je sens parfois des lassitudes par tous les membres.
;TOINETTE
: Le __poumon__.
;ARGAN
: Et quelquefois il me prend des douleurs dans le ventre,
::comme si c’était des coliques.
;TOINETTE
: Le __poumon__.
:Vous avez appétit à ce que vous mangez ?
`5. ARGAN ESTCOMPLÈTEMENT CAPTIF`
;ARGAN
: `avec gourmandise` Oui, Monsieur.
;TOINETTE
: Le __poumon__.
:`à chaque aquiescement d'Argan Toinette adresse un bref coup d'oeil complice à Béralde (ou àla fin au public), avant de ferrer davantage le malade par sa question suivante, lui parlant comme à un gros bébé.`
:Vous aimez à boire un peu de vin ?
;ARGAN
: `aux anges` Oui, Monsieur.
;TOINETTE
: Le __poumon__.
:Il vous prend un petit sommeil après le repas,
::et vous êtes bien aise de dormir ?
;ARGAN
: `comme un enfant coupable` Oui, Monsieur.
;TOINETTE
: Le __poumon__,
:le __poumon__, vous dis-je.
:`Inquisitrice : `
:Que vous ordonne votre médecin pour votre nourriture ?
;ARGAN
: Il m’ordonne du potage.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: De la volaille.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: Du veau.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: Des bouillons.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: Des œufs frais.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: Et le soir de petits pruneaux
:: `il explique :` pour lâcher le ventre.
;TOINETTE
: `Péremptoire` Ignorant.
;ARGAN
: Et surtout de boire mon vin
: `air abattu` fort trempé.
;TOINETTE
: `Péremptoire` Ignorantus, ignoranta, ignorantum.
:Il faut boire votre vin pur ;
:`Joie d'Argan`
:et pour épaissir votre sang qui est trop subtil, il faut manger de bon gros bœuf,
:`Joie d'Argan`
:de bon gros porc,
:`Joie d'Argan`
:de bon fromage de Hollande,
:`Joie d'Argan`
:du gruau et du riz,
:`Joie d'Argan`
:et des marrons et des oublies,
:`Argan trépigne de plaisir`
::pour coller et conglutiner.
:''Votre médecin est une __bête__''.
:Je veux vous en envoyer un __de ma main__,
:et je viendrai vous voir de temps en temps, tandis que je serai en cette ville.
;ARGAN
: `Éperdu` Vous m’obligez beaucoup.
: `Toinette profite du salut d'Argan, pour faire signe à Béralde qu'elle n'a pas l'intention de s'en tenir à cette première victoire`
;TOINETTE
: Que diantre faites-vous de ce bras-là ?
;ARGAN
: Comment ?
;TOINETTE
: Voilà un bras que je me ferais couper tout à l’heure, si j’étais que de vous.
;ARGAN
: Et pourquoi ?
;TOINETTE
: Ne voyez-vous pas qu’il tire à soi toute la nourriture, et qu’il empêche ce côté-là de profiter ?
;ARGAN
: Oui, mais j’ai besoin de mon bras.
;TOINETTE
: Vous avez là aussi un œil droit que je me ferais crever, si j’étais en votre place.
;ARGAN
: Crever un œil ?
;TOINETTE
: Ne voyez-vous pas qu’il incommode l’autre, et lui dérobe sa nourriture ? Croyez-moi, faites-vous-le crever au plus tôt, vous en verrez plus clair de l’œil gauche.
;ARGAN
: Cela n’est pas pressé.
;TOINETTE
: Adieu. Je suis fâché de vous quitter si tôt, mais il faut que je me trouve à une grande consultation qui se doit faire, pour un homme qui mourut hier.
;ARGAN
: `Tombe de haut` Pour un homme qui mourut hier ?
;TOINETTE
: `Essayant de se ratrapper comme elle peut` Oui, pour aviser,
:et voir ce qu’il aurait fallu lui faire pour le guérir.
: `Elle préfère s'arrêter là, saluer et déguerpir :` Jusqu’au revoir.
;ARGAN
: `troublé, revenant à la réalité` Vous savez que les malades ne reconduisent point.
;BÉRALDE
: `Ravi de la démonstration, il s'avance, goguenerd :` Voilà un médecin vraiment, qui paraît fort habile.
;ARGAN
: Oui, mais il va un peu bien vite.
;BÉRALDE
: `Sentencieux :` Tous les grands médecins sont comme cela.
;ARGAN
: Me couper un bras, et me crever un œil, afin que l’autre se porte mieux ?
:J’aime bien mieux qu’il ne se porte pas si bien.
:La belle opération, de me rendre borgne et manchot !
► [[SCÈNE XI - TOINETTE, ARGAN, BÉRALDE.]]
!!!!!SCÈNE XI - TOINETTE, ARGAN, BÉRALDE.
;TOINETTE
:`Elle entre comme une furie violentée, les mains sur les seins (que le médecin est supposé lui avoir pelotés)`
: Allons, allons, je suis votre servante, je n’ai pas envie de rire.
;ARGAN
: Qu’est-ce que c’est ?
;TOINETTE
:` Se plantant devant Argan, toujours les mains sur la poitrine`
: Votre médecin, ma foi, qui me voulait tâter le pouls.
;ARGAN
: Voyez un peu, à l’âge de quatre-vingt-dix ans.
;BÉRALDE
:` S'approche et se penche sur Argan, en faisant signe à Toinette de s'écarter et d'arrêter son manège`
: Oh ça, mon frère, puisque voilà votre Monsieur Purgon brouillé avec vous, ne voulez-vous pas bien que je vous parle du parti qui s’offre pour ma nièce ?
;ARGAN
: Non, mon frère, je veux la mettre dans un couvent, puisqu’elle s’est opposée à mes volontés. Je vois bien qu’il y a quelque amourette là-dessous, et j’ai découvert certaine entrevue secrète, qu’on ne sait pas que j’aie découverte.
;BÉRALDE
: Hé bien, mon frère, quand il y aurait quelque petite inclination, cela serait-il si criminel,
:et rien peut-il vous offenser, quand tout ne va qu’à des choses honnêtes, comme le mariage ?
;ARGAN
: Quoi qu’il en soit, mon frère, elle sera religieuse, c’est une chose résolue.
;BÉRALDE
:` Irrité, il s'écarte en secouant la tête, et se retourne soudain en pointant Argan du doigt : `
: Vous voulez faire plaisir à __quelqu’une__.
;ARGAN
: Je vous entends. Vous en revenez toujours là, et [votre détestation] de ma femme ma femme vous tient au cœur.
:` Comme s'il était irrité, Béralde s'écarte vers Toinette, à qui il souffle quelques mots. Celle-ci sourit finement, en acquiesçant de la tête.`
;BÉRALDE
:`à Argan, sévèrement, comme à un enfant à qui on fait la leçon.`
: Hé bien oui, mon frère, puisqu’il faut parler à cœur ouvert,
:c’est __votre femme__ que je veux dire ;
::et non plus que l’entêtement de la médecine,
:je ne puis vous souffrir l’entêtement où vous êtes pour elle,
:et voir que vous donniez
::__tête baissée__
:dans tous les pièges qu’elle vous tend.
;TOINETTE
:` Se plaçant de l'autre côté d'Argan, elle fait mine d'admonester Béralde.`
: Ah ! Monsieur, ne parlez point de Madame,
:c’est une femme sur laquelle il n’y a rien à dire ;
:une femme sans artifice,
::et qui aime Monsieur,
:` Se penchant, tout doucereuse, vers le visage d'Argan.`
::qui l’aime...
:` Se redressant, à Béralde.`
:On ne peut pas dire cela.
;ARGAN
`Tout ému`
: Demandez-lui un peu les __caresses__ qu’elle me fait.
;TOINETTE
:` Toujours à côté d'Argan, vers Béralde : `
: Cela est __vrai__.
;ARGAN
: L’inquiétude que lui donne ma maladie.
;TOINETTE
: `idem` Assurément.
;ARGAN
: Et les __soins__ et les __peines__ qu’elle prend autour de moi.
;TOINETTE
:` À Béralde`
: Il est certain.
:Voulez-vous que je vous convainque, et vous fasse voir tout à l’heure comme Madame aime Monsieur ?
:`À Argan`
:Monsieur, souffrez que je lui montre son bec jaune, et le tire d’erreur.
;ARGAN
: Comment ?
;TOINETTE
:Madame s’en va revenir.
:Mettez-vous tout étendu dans cette chaise,
:et contrefaites le mort.
:` À Béralde`
:Vous verrez la douleur où elle sera, quand je lui dirai la nouvelle.
:` Sourire à Argan`
;ARGAN
: Je le veux bien.
;TOINETTE
: Oui, ` Elle l'installe en mort réaliste.`
:mais ne la laissez pas longtemps dans le désespoir, car elle en pourrait bien mourir.
;ARGAN
:`Tout émoustillé du manège qu'il croit faire à Béralde`
: Laisse-moi faire.
;TOINETTE, à Béralde.
:Cachez-vous, vous, dans ce coin-là.
;ARGAN
:` Se redressant brusquement : `
: N’y a-t-il point quelque danger à contrefaire le mort ?
;TOINETTE
: Non, non.
:Quel danger y aurait-il ?
::Étendez-vous là seulement.
::://(Bas.)// Il y aura plaisir à confondre votre frère.
:Voici Madame.
:Tenez-vous bien.
► [[SCÈNE XII - BÉLINE, TOINETTE, ARGAN, BÉRALDE.]]
!!!!!SCÈNE XII - BÉLINE, TOINETTE, ARGAN, BÉRALDE.
`Toinette se précipite sur Béline qui entre.`
;TOINETTE //s’écrie//
:Ah ! mon Dieu ! Ah malheur ! Quel étrange accident !
;BÉLINE `S'arrêtant, interdite. `
: Qu’est-ce, Toinette ?
;TOINETTE `Tragique`
: Ah, Madame !
;BÉLINE `Coup d'œil circulaire, pour voir qui est présent.`
: Qu’y a-t-il ?
;TOINETTE
: Votre mari
:`Comme si elle craquait. `
:est mort.
;BÉLINE
: Mon mari
: `Stupéfaite .`
:est mort ?
:`Bouche grande ouverte, amorce d'un sourire.`
;TOINETTE
: Hélas oui.
:`Pleur`.
,Le pauvre défunt est trépassé.
;BÉLINE `Son sourire s'élargit.`
: Assurément ?
;TOINETTE
: Assurément.
:Personne ne sait encore cet accident-là, et je me suis trouvée ici
::toute seule.
:Il vient de passer entre mes bras.
:Tenez,
:`Elle entraîne Béline vers la chaise d'Argan. `
:le voilà tout de son long dans cette chaise.
;BÉLINE
:`Elle éclate de joie, les bras en croix, regard vers le ciel.`
: Le Ciel en soit loué.
:`Grande respiration de soulagement`
:Me voilà délivrée d’un grand fardeau.
:` Gaiement :`
:Que tu es sotte, Toinette, de t’affliger de cette mort !
;TOINETTE
: Je pensais, Madame,
:`Reniflant.`
:qu’il fallût pleurer.
;BÉLINE
: Va, va, cela n’en vaut pas la peine.
:Quelle perte est-ce que la sienne,
:et de quoi servait-il sur la terre ?
::Un homme incommode à tout le monde,
:`Elle tourne autour du “cadavre”, À chaque pas elle s'arrête pour lui cracher une insulte: `
:: malpropre,
::dégoûtant,
::sans cesse un lavement,
::: ou une médecine dans le ventre,
::mouchant,
::toussant,
::crachant toujours,
::sans esprit,
::ennuyeux,
::de mauvaise humeur,
::fatiguant sans cesse les gens,
:et grondant jour et nuit servantes, et valets.
;TOINETTE `Voix tragique pour Belline, expression moqueuse pour le public.`
: Voilà une belle oraison funèbre.
;BÉLINE `Rejoint Toinette. Mode conjuration :`
: Il faut, Toinette, que tu m’aides à exécuter mon dessein,
::et tu peux croire qu’en me servant ta récompense est sûre.
:Puisque par un bonheur personne n’est encore averti de la chose,
:::portons-le dans son lit,
::et tenons cette mort cachée, jusqu’à ce que j’aie fait mon affaire.
:Il y a des papiers,
:il y a de l’argent, dont je me veux saisir,
::et il n’est pas juste que j’aie passé sans fruit auprès de lui mes plus belles années.
:Viens, Toinette,
:`Elle se ravise, et revient au cadavre :` prenons auparavant toutes ses clefs.:
:` Elle entreprend de lui fouiller les poches. `
;ARGAN, //se levant brusquement//.
:Doucement.
;BÉLINE, //surprise, et épouvantée.// `fait un bond en arrière.`
:Ahy !
;ARGAN
: Oui, Madame ma femme, c’est ainsi que vous m’aimez ?
;TOINETTE
: Ah, ah, le défunt n’est pas mort.
;ARGAN, //`à Béline, courant autour de la pièce, poursuivie par Argan.`//.
:` En la poursuivant :`
:Je suis bien aise de voir votre amitié,
:et d’avoir entendu le beau panégyrique que vous avez fait de moi.
:Voilà un avis au lecteur,
:qui me rendra sage à l’avenir,
:et qui m’empêchera de faire bien des choses.
:`Elle réussit à s'enfuir:`
;BÉRALDE, //sortant de l’endroit où il était caché//.-
:Hé bien, mon frère,
:vous le voyez.
;TOINETTE ` Éclatant de rire :`
: Par ma foi, je n’aurais jamais cru cela.
:` Tournant vivement la tête vers l'entrée :`
:Mais j’entends votre fille,
:`Elle rajuste Argan qui est ravi et s'amuse beaucoup du stratagème:`
:remettez-vous comme vous étiez,
:et voyons de quelle manière elle recevra votre mort.
:C’est une chose qu’il n’est pas mauvais d’éprouver ;
:et puisque vous êtes en train, vous connaîtrez par là les sentiments que votre famille a pour vous.
► [[SCÈNE XIII - ANGÉLIQUE, ARGAN, TOINETTE, BÉRALDE.]]
!!!!!SCÈNE XIII - ANGÉLIQUE, ARGAN, TOINETTE, BÉRALDE.
;TOINETTE //s’écrie ://
:Ô Ciel ! Ah, fâcheuse aventure ! Malheureuse journée !
;ANGÉLIQUE
:Qu’as-tu, Toinette, et de quoi pleures-tu ?
;TOINETTE
: Hélas ! j’ai de tristes nouvelles à vous donner.
;ANGÉLIQUE
:Hé quoi ?
;TOINETTE
: Votre père est mort.
;ANGÉLIQUE //`Cri de douleur`//
:Mon père est mort, Toinette ?
;TOINETTE
: Oui, vous le voyez là. `Elle l'éntraîne vers le siège d'Argan `
:Il vient de mourir tout à l’heure d’une faiblesse qui lui a pris.
;ANGÉLIQUE
:Ô Ciel ! quelle infortune ! quelle atteinte cruelle !
:`Elle s'effondre à genoux, tête dans les mains, contre le corps de son père.`
:Hélas ! faut-il que je perde mon père, la seule chose qui me restait au monde ; et qu’encore pour un surcroît de désespoir,
: `levant les yeux douloureusement vers Toinette` je le perde dans un moment où il était irrité contre moi ?
:`Elle s'effondre à nouveau` Que deviendrai-je, malheureuse,
:et quelle consolation trouver après une si grande perte ?
''► [[SCÈNE XIV ET DERNIÈRE - CLÉANTE, ANGÉLIQUE, ARGAN, BÉRALDE, TOINETTE.]]''
!!!!!SCÈNE XIV ET DERNIÈRE - CLÉANTE, ANGÉLIQUE, ARGAN, BÉRALDE, TOINETTE.
;CLÉANTE
: Qu’avez-vous donc, belle Angélique ?
://`Très inquiet`// et quel malheur pleurez-vous ?
;ANGÉLIQUE
:Hélas !
://`douloureusement, à Cléante`// je pleure tout ce que dans la vie je pouvais perdre de plus cher, et de plus précieux.
:Je pleure la mort de mon père.
;CLÉANTE
://`S'effondrant à son tour : ils forment maintenant un duo touchant derrière le corps d'Argan.`//
: Ô Ciel ! quel accident ! quel coup inopiné !
:hélas ! après la demande que j’avais conjuré votre oncle de lui faire pour moi,
:je venais me présenter à lui,
:et tâcher
:par mes respects et par mes prières,
:de disposer son cœur à vous accorder à mes vœux.
;ANGÉLIQUE
:Ah ! Cléante, ne parlons plus de rien.
:Laissons là toutes les pensées du mariage.
://`Elle lui donne comme une caresse d'adieu.`//
:Après la perte de mon père, je ne veux plus être du monde,
:et j’y renonce pour jamais.
://`à genoux, dans la posture de celle qui se confesse`//
:Oui,
:mon père,
:si j’ai résisté tantôt à vos volontés,
:je veux suivre du moins une de vos intentions,
://`Elle ne voit pas le bras de son père qui, lentement, s'apprète à l'embrasser`//
:et réparer par là le chagrin que je m’accuse de vous avoir donné.
:Souffrez, mon père, que je vous en donne ici ma parole,
:et que je vous embrasse, pour vous témoigner mon ressentiment.
://`Il l'embrasse de son bras`//
://`Elle se redresse brutalement, épouvantée.`//
;ARGAN //se lève//.
:Ah ! ma fille.
;ANGÉLIQUE, //épouvantée//
:Ahy !
;ARGAN //`lui prend tendrement les mains`//
: Viens.
:N’aie point de peur,
:je ne suis pas mort.
:Va, tu es mon vrai sang,
:ma véritable fille,
://`Il l'embrasse`//
:et je suis ravi d’avoir vu ton bon naturel.
;ANGÉLIQUE //`Elle rit, heureuse, étreignant ses mains`//
:Ah ! quelle surprise agréable, mon père,
`Cléante lui prend la main, et s'apprête à intercéder pour eux deux, mais Angélique l'en empêche et plaide elle-même :`
:puisque par un bonheur extrême le Ciel vous redonne à mes vœux,
:souffrez qu’ici je me jette à vos pieds
:pour vous supplier d’une chose.
::Si vous n’êtes pas favorable au penchant de mon cœur,
::si vous me refusez Cléante pour époux,
::je vous conjure, au moins, de ne me point forcer d’en épouser un autre.
:C’est toute la grâce que je vous demande.
;CLÉANTE //se jette à genoux//.
:Eh, Monsieur, laissez-vous toucher à ses prières et aux miennes ; et ne vous montrez point contraire aux mutuels empressements d’une si belle inclination.
//`Béralde, Angélique, Cléante, Toinette forment derrière Argan comme un éventail de suppliants`//
;BÉRALDE
: Mon frère, pouvez-vous tenir là contre ?
;TOINETTE
: Monsieur, serez-vous insensible à tant d’amour ?
;ARGAN //`les regarde gravement, tour à tour`//
: Qu’il se fasse médecin, je consens au mariage.
: //`Il sourit à Cléante`//
: Oui, faites-vous médecin,
::je vous donne ma fille.
;CLÉANTE //`Soulagé, exulte`//
: Très volontiers, Monsieur, s’il ne tient qu’à cela pour être votre gendre, je me ferai médecin,
:apothicaire même, si vous voulez.
//`Enflammé`//
:Ce n’est pas une affaire que cela, et je ferais bien d’autres choses pour obtenir //`(regard langoureux)`// la belle Angélique.
;BÉRALDE
: Mais, mon frère, il me vient une pensée.
::Faites-vous médecin vous-même.
::La commodité sera encore plus grande, d’avoir en vous tout ce qu’il vous faut.
;TOINETTE //`Toute guillerette`//
: Cela est vrai.
:Voilà le vrai moyen de vous guérir bientôt ;
:et il n’y a point de maladie si osée, que de se jouer à la personne d’un médecin.
;ARGAN
: Je pense, mon frère, que vous vous moquez de moi.
:Est-ce que je suis en âge d’étudier ?
;BÉRALDE
: Bon, étudier.
:Vous êtes assez savant ;
:et
:il y en a beaucoup parmi eux, qui ne sont pas plus habiles que vous.
;ARGAN
: Mais il faut savoir bien parler latin,
:connaître les maladies,
:et les remèdes qu’il y faut faire.
;BÉRALDE
: En recevant la robe et le bonnet de médecin, vous apprendrez tout cela,
:et vous serez après plus habile que vous ne voudrez.
;ARGAN
: Quoi ?
:l’on sait discourir sur les maladies quand on a cet habit-là ?
;BÉRALDE
: Oui. L’on n’a qu’à parler ;
:avec une robe, et un bonnet, tout galimatias devient savant,
:et toute sottise devient raison.
:`Toinette bondit ramasser le chapeau de Docteur dont elle s'était servie, et revient rayonnante le planter sur la tête d'Argan !`
;TOINETTE
: Tenez, Monsieur, quand il n’y aurait que ''//ce chapeau//'', c’est déjà beaucoup,
:et ''//le chapeau//'' fait plus de la moitié d’un médecin.
:`Cléante et Béralde se regardent, essayant de réprimer leur rire.`
;CLÉANTE
: En tout cas, je suis prêt à tout.
;BÉRALDE
: Voulez-vous que l’affaire se fasse tout à l’heure ?
;ARGAN
: Comment tout à l’heure ?
;BÉRALDE
: Oui, et dans votre maison.
;ARGAN
: Dans ma maison ?
;BÉRALDE
: Oui. Je connais une Faculté de mes amies, qui viendra tout à l’heure en faire la cérémonie dans votre salle. Cela ne vous coûtera rien.
;ARGAN
: Mais, moi
:que dire,
:que répondre ?
;BÉRALDE
: On vous instruira en deux mots,
:et l’on vous donnera par écrit ce que vous devez dire.
://`Il le pousse amicalement dans la direction de sa chambre`//
:Allez-vous-en vous mettre en habit décent,
://`De loin, à Argan qui sort`//
:je vais les envoyer quérir.
;ARGAN
://`depuis la porte, tout émoustillé`//
: Allons, voyons cela.
://`Il sort`//
;CLÉANTE
: Que voulez-vous dire, et qu’entendez-vous avec cette Faculté de vos amies... ?
;TOINETTE
: Quel est donc votre dessein ?
;BÉRALDE
: De nous divertir un peu ce soir. Les comédiens ont fait un petit intermède de la réception d’un médecin, avec des danses et de la musique ; je veux que nous en prenions ensemble le divertissement, et que mon frère y fasse le premier personnage.
;ANGÉLIQUE
:Mais, mon oncle, il me semble que vous vous jouez un peu beaucoup de mon père.
;BÉRALDE
: Mais, ma nièce, ce n’est pas tant le jouer, que s’accommoder à ses fantaisies.
:Tout ceci n’est qu’entre nous.
:Nous y pouvons aussi prendre chacun un personnage, et nous donner ainsi la comédie les uns aux autres.
:Le carnaval autorise cela.
:Allons vite préparer toutes choses.
;CLÉANTE, //à Angélique//
:Y consentez-vous ?
;ANGÉLIQUE
:Oui, puisque mon oncle nous conduit.
► [[BALLET D'INTRONISATION DU NOUVEAU DOCTEUR]]
<ul style="border: 0px; font-family: "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: 400; margin: 12px 0px; outline: 0px; padding: 0px 0px 0px 20px; vertical-align: baseline; list-style: square; color: rgb(51, 51, 51); font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/10/23/le-pere-daugust-strindberg-laura-et-le-capitaine/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Père</em><span> </span>d’August Strindberg : Laura et Le Capitaine</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/05/15/les-femmes-savantes-clitandre-trissotin-acte-iv-scene-3/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Femmes savantes</em><span> </span>: Clitandre – Trissotin (Acte IV, scène 3)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/10/20/romeo-et-juliette-la-scene-des-adieux/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Roméo et Juliette</em><span> </span>: la scène des adieux</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/08/12/le-medecin-malgre-lui-sganarelle-martine-acte-i-scene-1/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Médecin malgré lui </em>: Sganarelle-Martine (Acte I, scène 1)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Dom Juan</em><span> </span>: Dom Juan – Done Elvire – Sganarelle (Acte I, scène 3)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Femmes Savantes</em> : Bélise – Clitandre</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Menteur</em><span> </span>de Corneille : Alcippe – Clarice</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/07/31/berenice-titus-acte-iv-scene-5/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;">Bérénice-Titus : « Ah ! Cruel ! » (Acte IV, scène 5) </a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/09/15/le-jeu-de-lamour-et-du-hasard-silvia-dorante-acte-i-scene-7/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Jeu de l’amour et du hasard</em><span> </span>: Silvia – Dorante (Acte I, scène 7)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Jeu de l’amour et du hasard</em><span> </span>: Lisette – Arlequin (Acte III, scène 6)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Double Inconstance</em><span> </span>: Silvia – Trivelin (Acte I, scène 1)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Double Inconstance</em><span> </span>: Lisette – Arlequin (Acte I, scène 6)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Fausses Confidences</em><span> </span>: Araminte – Dorante (Acte II, scène 13)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Dispute</em><span> </span>: Eglé – Azor (Acte I, scène 4)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Barbier de Séville</em><span> </span>: Rosine – Figaro (Acte II, scène 2)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Caprices de Marianne</em> : Les scènes d’Octave et Marianne</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/06/13/le-prince-de-hombourg-le-prince-lelectrice-acte-iii-scene-5/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Prince de Hombourg</em><span> </span>de Kleist : Le Prince – L’Électrice</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/08/25/la-peur-des-coups-de-courteline-saynete-pour-elle-et-lui/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Peur des Coups</em><span> </span>de Courteline : ELLE – LUI</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Deux Timides<span> </span></em>d’Eugène Labiche : Jules – Cécile</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Richard III</em><span> </span>de Shakespeare : Richard – Lady Anne</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Jules César</em><span> </span>de Shakespeare : Brutus – Portia (Scène IV)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/02/10/la-dame-de-la-mer-ellida-wangel/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Dame de la mer</em><span> </span>d’Ibsen : Ellida – Wangel</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/08/20/on-passe-dans-huit-jours-de-guitry-lauteur-et-lactrice/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">On passe dans huit jours</em><span> </span>de Sacha Guitry : L’Auteur et L’Actrice</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Ménagerie de verre</em><span> </span>de Tennessee Williams : scène finale (<strong style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 0, 0); text-shadow: rgb(204, 255, 255) 2px 2px 2px;">en anglais</strong> : <a href="https://compagnieaffable.wordpress.com/2016/08/15/the-glass-menagerie-final-scene/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;">ici</a>)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2017/11/08/indiana-de-george-sand-la-declaration-damour-de-raymon/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Indiana</em><span> </span>de George Sand : la déclaration d’amour de Raymon</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/07/25/dorian-gray-largue-sibyl-vane/" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Dorian Gray</em><span> </span>largue Sibyl Vane</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/08/07/la-lecon-deugene-ionesco-le-professeur-et-leleve/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Leçon</em><span> </span>d’Eugène Ionesco : Le Professeur et l’Elève</a></li></ul>
<ul style="border: 0px; font-family: "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: 400; margin: 12px 0px; outline: 0px; padding: 0px 0px 0px 20px; vertical-align: baseline; list-style: square; color: rgb(51, 51, 51); font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">
<li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/03/22/oncle-vania-de-tchekhov-sonia-et-elena/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Oncle Vania</em><span> </span>de Tchekhov : Sonia et Elena</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Femmes Savantes</em><span> </span>: Henriette – Armande</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Misanthrope</em><span> </span>: Célimène – Arsinoé</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Jeu de l’amour et du hasard</em><span> </span>: Silvia – Lisette (Acte I, scène 1)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Double Inconstance</em><span> </span>: Lisette – Flaminia (Acte I, scène 3)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">L’Ecole des Mères</em><span> </span>: Angélique – Lisette (Acte I, scène 6)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Antigone</em><span> </span>de Jean Anouilh : Antigone – La Nourrice</a></li></ul>
<ul style="border: 0px; font-family: "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: 400; margin: 12px 0px; outline: 0px; padding: 0px 0px 0px 20px; vertical-align: baseline; list-style: square; color: rgb(51, 51, 51); font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/11/05/les-rois-maudits-de-maurice-druon-la-reine-isabelle-et-lord-mortimer-declarent-leur-amour/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Rois maudits</em><span> </span>de Maurice Druon : Isabelle et Mortimer déclarent leur amour</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/10/02/le-roi-se-meurt-deugene-ionesco/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Roi se meurt</em><span> </span>d’Eugène Ionesco</a><span> </span>(6 personnages)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/07/09/breaking-bad-skyler-eclate-face-a-hank/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Breaking Bad</em><span> </span>: Skyler éclate face à Hank</a> (FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/06/22/lhomme-a-la-peau-de-serpent-de-sidney-lumet-val-et-lady/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">L’Homme à la peau de serpent</em><span> </span>de Sidney Lumet : Val et Lady</a><span> </span>(FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/04/25/private-lives-de-noel-coward-elyot-et-sybil/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Private Lives</em><span> </span>de Noël Coward : Elyot et Sybil</a><span> </span>(FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/01/31/lazote-de-rene-de-obaldia-justine-et-casimir/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(193, 126, 8); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">L’Azote</em><span> </span>de René de Obaldia : Justine et Casimir</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/06/07/chroniques-2-de-xavier-durringer-scene-de-rupture/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Chroniques 2</em><span> </span>de Xavier Durringer : scène de rupture</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2018/10/22/a-travers-le-miroir-dingmar-bergman-karin-et-son-pere/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">À travers le miroir</em><span> </span>d’Ingmar Bergman : Karin et son père</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2017/11/28/the-edukators-dhans-weingartner-jan-et-jule-discutent-revolution/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">The Edukators</em><span> </span>d’Hans Weingartner : Jan et Jule discutent révolution</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2017/10/10/un-elephant-ca-trompe-enormement-lucien-fait-du-rentre-dedans-a-marthe-la-mere-dune-copine/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Un éléphant ça trompe énormément</em><span> </span>: Lucien drague la mère d’une copine</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/09/05/fenetre-sur-cour-dalfred-hitchcock-jeff-et-lisa-1/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Fenêtre sur cour</em><span> </span>d’Alfred Hitchcock : Jeff et Lisa (1)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/09/05/fenetre-sur-cour-dalfred-hitchcock-jeff-et-lisa-2/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Fenêtre sur cour</em><span> </span>d’Alfred Hitchcock : Jeff et Lisa (2)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/08/20/on-passe-dans-huit-jours-de-guitry-lauteur-et-lactrice/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">On passe dans huit jours</em><span> </span>de Sacha Guitry : L’Auteur et L’Actrice</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/05/31/le-rendez-vous-de-senlis-de-jean-anouilh-la-scene-de-linventaire/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Rendez-vous de Senlis</em><span> </span>de Jean Anouilh : la scène de l’inventaire</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/05/02/les-demoiselles-de-rochefort-guillaume-et-delphine/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Demoiselles de Rochefort</em><span> </span>: Guillaume et Delphine</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/04/24/la-machine-infernale-de-cocteau-oedipe-et-le-sphinx/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Machine infernale</em><span> </span>de Cocteau : Oedipe et le Sphinx</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/10/21/knock-de-jules-romains-knock-la-dame-en-noir/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Knock</em><span> </span>de Jules Romains : Knock et La Dame En Noir</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/10/30/pompier-remi-de-vos/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Pompier</em><span> </span>– Rémi de Vos</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/08/14/les-temps-qui-changent-antoine-et-cecile/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les Temps qui changent</em><span> </span>d’André Téchiné : Antoine et Cécile (Depardieu – Deneuve)</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/03/15/la-femme-de-mon-pote-viviane-et-micky/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Femme de mon pote</em><span> </span>de Bertrand Blier : Viviane et Micky</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/08/06/network-de-sidney-lumet-diana-persuade-hackett-de-mettre-un-au-jt/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Network</em><span> </span>de Sidney Lumet : Diana persuade Hackett de mettre un vieux fou au JT</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/09/30/demons-de-lars-noren-katarina-frank/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Démons</em><span> </span>de Lars Norén : Katarina et Frank</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/06/25/le-preteur-sur-gages-de-sidney-lumet-sol-et-marilyn/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Prêteur sur gages</em><span> </span>de Sidney Lumet : Sol et Marilyn</a><span> </span>(FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/12/10/maudite-aphrodite-de-woody-allen-la-scene-du-restaurant/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Maudite Aphrodite</em><span> </span>de Woody Allen : la scène du restaurant</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/07/25/le-bureau-des-legendes-marina-reza/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Bureau des Légendes</em><span> </span>: Marina et Reza</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/08/30/topaze-de-louis-gasnier-topaze-et-suzy/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Topaze</em><span> </span>de Louis Gasnier : Topaze et Suzy</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/08/30/les-femmes-aussi-ont-perdu-la-guerre-de-curzio-malaparte-enrica-et-le-requisitionnaire/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Les femmes aussi ont perdu la guerre</em><span> </span>de C. Malaparte : Enrica et le Réquisitionnaire</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/09/02/harry-dans-tous-ses-etats-de-woody-allen-joan-apprend-quharry-la-trompee/" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Harry dans tous ses états</em><span> </span>de Woody Allen : Joan apprend qu’Harry l’a trompée</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2017/09/05/harry-dans-tous-ses-etats-de-woody-allen-harry-essaie-de-convaincre-fay-de-ne-pas-se-marier/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Harry dans tous ses états</em> : Harry essaie de convaincre Fay de ne pas se marier</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/10/11/spike-jonzes-her-os-set-up-scene/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Her</em><span> </span>de Spike Jonze : Samantha et Theodore</a><span> </span>(FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Grand-peur et misère du IIIème Reich</em><span> </span>: Le Père et La Mère dans « Le Mouchard »</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/10/20/the-age-of-innocence-de-scorsese-ellen-archer/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">The Age of Innocence</em><span> </span>de Martin Scorsese : Ellen et Archer</a><span> </span>(FR / ENG)</li></ul>
<ul style="border: 0px; font-family: "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: 400; margin: 12px 0px; outline: 0px; padding: 0px 0px 0px 20px; vertical-align: baseline; list-style: square; color: rgb(51, 51, 51); font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/10/07/unbelievable-marie-et-la-psy-parlent-de-zombies/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Unbelievable</em><span> </span>: Marie et sa Psy parlent de zombies</a> (FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/11/13/what-ever-happened-to-baby-jane-jane-et-blanche/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">What Ever Happened to Baby Jane?</em><span> </span>: Jane et Blanche</a><span> </span>(FR / ENG)</li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2019/09/11/le-malentendu-dalbert-camus-la-mere-et-martha/" target="_blank" rel="noopener" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Le Malentendu</em><span> </span>d’Albert Camus : La Mère et Martha</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2018/11/20/sonate-dautomne-dingmar-bergman-mere-et-fille/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Sonate d’automne</em><span> </span>d’Ingmar Bergman : Mère et Fille</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2018/11/08/persona-dingmar-bergman-alma-confronte-elisabet/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Persona</em><span> </span>d’Ingmar Bergman : Alma confronte Elisabet</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.com/2017/09/14/lastronome-de-didier-von-cauwelaert-mure-et-agnes/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">L’Astronome</em><span> </span>de Didier Von Cauwelaert : Mûre et Agnès</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/03/31/coco-de-koltes-tirades-sur-le-rouge-a-levres/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Coco</em><span> </span>de Koltès : tirades sur le rouge à lèvres</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2015/06/13/nawal-annonce-a-wahab-quelle-est-enceinte-incendies-de-wajdi-mouawad/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(193, 126, 8); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Incendies</em><span> </span>de Wajdi Mouawad : Nawal et Wahab </a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/03/26/la-reunification-des-deux-corees-de-pommerat-divorce/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Réunification des deux Corées</em><span> </span>de Pommerat : “divorce”</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Antigone</em><span> </span>de Jean Anouilh : Antigone et La Nourrice</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2016/08/14/la-femme-da-cote-mathilde-et-le-psychiatre/" target="_blank" rel="noopener noreferrer" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">La Femme d’à côté</em><span> </span>de François Truffaut : Mathilde et Le Psychiatre</a></li><li style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="https://compagnieaffable.wordpress.com/2017/09/02/coffee-and-cigarettes-de-jim-jarmusch-cate-et-shelly-cate-blanchett/" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(131, 85, 4); text-decoration: none;"><em style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Coffee and Cigarettes</em><span> </span>de Jim Jarmusch : Cate et Shelly</a><span> </span>(FR / ENG)</li></ul>
!!<center>^^Scènes de la vie conjugale^^
''Scène 8''
,,Ingmar Bergman,,</center>
► [[Les 7 moments précédents]]
;,,En lettres lumineuses AU MILIEU DE LA NUIT, DANS UNE MAISON OBSCURE, QUELQUE PART AU MONDE.
Le son de la mer, des vagues...
La lumière monte progressivement par le sol
Ils sont assis cite à côte.
Leur visage structuré par la lumière. ,,
;MARIANNE
:C'est drôle, je ne croyais pas que tu te souviendrais de notre anniversaire...
;JOHAN
://(comme une évidence)// On s'est mariés un 21 août, il y a vingt ans.
;MARIANNE
://(touchée)// Vingt ans.
Toute une vie.
On a vécu ensemble toute une vie d'adulte.
;JOHAN
:Qu'est-ce qu'il y a ?
Tu pleures?
;MARIANNE
:Je trouve ça émouvant...
;JOHAN
:Qu'est-ce qui est émouvant ?
Sürement pas moi....
;MARIANNE
:Mais si, tu l'es...
Mon amour...
//(Avec tendresse)// Tu es devenu plus … épais ...
;JOHAN
://(avec humour) // Ah!
Toi aussi, tu trouves que j'ai "épaissi" ?
;MARIANNE
:Tu es beaucoup plus séduisant qu'avant. Tu es doux, tu es gentil...
Tu as toujours eu un beau regard...
;JOHAN
://(sourine) //
Quelqu'un m'a dit que je me laissais aller, que je partais battu...
Que je me tassais, en "m'épaississant" , justement...
Ce n'est pas vrai.
J'ai accepté mes limites, avec humilité.
Ça me rend gentil
quoiqu'un peu mélancolique...
;MARIANNE
://(tendre)// Autrefois, tu avais de grands projets...
//(Un temps.) //
Et ta femme, qu'est-ce qu'elle dit, elle?
;JOHAN
:Qu'elle m'aime,
que j'ai le droit d'être fatigué, insupportable,
elle dit qu'avec moi elle se sent en sécurité.
Qu'elle ne veut personne d'autre...
;MARIANNE
:Tu as toujours tiré les bons numéros, toi...
;JOHAN
:Alors,
je ne devrais pas la tromper avec toi.
;MARIANNE
:Peut-être que tu nous aimes toutes les deux.
;JOHAN
:Je crois qu'il faut un don pour éprouver de l'amour.
Et ce don,
moi,
je ne l'ai pas...
Je suis un petit garçon...
;MARIANNE
:Oui, je sais.
;JOHAN
:D'ailleurs,
pourquoi vouloir devenir adulte ?
;MARIANNE
:Alors,
tu as une sensation d'échec ?
;JOHAN
:Je ne veux pas devenir adulte,
voilà.
Et voilà pourquoi Anna est une bonne compagne.
;MARIANNE
:Pauvre Anna.
;JOHAN
:Et toi,
comment ça va avec ton... avec Eric?
;MARIANNE
:Frédéric !...
Pardon de dire les choses crûment,
c'est purement une histoire de cul.
;JOHAN
:Ah!
je vois...
;MARIANNE
:Il est sur ce plan-là...
comment dire...
convaincant....
;JOHAN
:Ah!
;MARIANNE
:Mais je ne suis pas dépendante de lui...
Je suis avec lui, c'est bien,
je suis avec toi, c'est bien aussi....
;JOHAN
:Et c'est ce que tu appelles la liberté.
;MARIANNE
:Pour l'instant,
oui,
c'est ça la liberté.
;JOHAN
:Seulement,
moi,
je ne le supporte pas.
;MARIANNE
:Je pensais bien que tu ne voulais pas entendre la vérité ...
;JOHAN
:Tu t'imagines que je m'intéresse à tes orgasmes avec ce plouc,
à l'afflux sanguin de sa grosse bite?
Franchement, je suis impressionné...
Tu devrais en faire un roman!
//(Elle rit)//
Mais ta plénitude sexuelle n'est qu'un événement parmi d'autres dans les merveilles que la vie nous a offertes...
Pense à toute cette sagesse acquise avec des larmes, avec de la souffrance...
Mais c'est inoui,
c'est génial !
Nous nous sommes révélés à nous-mêmes.
Toi,
tu as trouvé ta plénitude,
et moi,
mon épaississement ...
;MARIANNE
:Tu es tellement émouvant ...
Le temps nous a donné un troisième partenaire
:l'expérience...
;JOHAN
:Tu devrais faire de la politique...
//(Un temps.)//
Peut-on vivre ensemble tout en étant sincère ?
;MARIANNE
:Pas dans notre cas...
;JOHAN
:Est-ce que c'est nécessaire ?
Est-ce que l'on peut vivre sans jamais rien se cacher?
;MARIANNE
:Bien sûr que l'on s'est menti ...
Et alors?
//(Un temps.) //
Johan?
;JOHAN
:Oui?
;MARIANNE
:Est-ce que tu aimes ta femme ?
//Il sourit //
;JOHAN
:Disons que j'aime prendre le petit déjeuner avec elle.
//Elle se tourne vers lui. //
;MARIANNE
:Mets tes bras autour de moi...
Tu sens,
je tremble...
//(Un temps.) //
:Johan...
tu crois que nous vivons dans le chaos le plus total?
;JOHAN
:Toi et moi?
;MARIANNE
:Non,
tout le monde.
;JOHAN
:Qu'est-ce que tu entends par - //chaos// - ?
;MARIANNE
:La peur,
l'incertitude,
la folie...
Le chaos, oui...
Quand on sent au fond de soi-même que l'on glisse vers le bas...
Irrémédiablement.
Et que l'on n'y peut rien.
;JOHAN
:Oui,
je le crois...
;MARIANNE
:Johan?
;JOHAN
:Oui.
;MARIANNE
:Est-ce que l'on est passés à côté de l'essentiel?
;JOHAN
:Qui,
nous ou l'humanité en général ?
;MARIANNE
:Non,
toi et moi.
;JOHAN
:Et ce serait quoi ?
;MARIANNE
:Parfois,
je sais exactement ce que tu sens,
ce que tu penses.
Et je suis prise d'une grande tendresse pour toi.
Je m'oublie presque complètement ...
Tu comprends ce que je veux dire ?...
;JOHAN
:Oui,
je comprends ce que tu veux dire.
J'essaie de me dire que la vie a la valeur qu'on lui donne ...
Mais cette idée ne console pas du tout ...
;MARIANNE
:Johan.
;JOHAN
:Oui.
;MARIANNE
:Ça me fait de la peine de n'avoir jamais aimé personne.
Et je ne crois pas non plus avoir été aimée.
Ca me rend triste.
;JOHAN
:Je crois que tu attaches trop d'importance à ça ...
;MARIANNE
:Tu crois?
;JOHAN
:Je peux seulement répondre en mon nom.
Je pense que je t'aime à ma façon,
imparfaite et égoiste.
Et je pense que tu m'aimes à ta façon,
violente, émotive.
En fait,
je pense que,
toi et moi,
nous nous aimons.
De façon terrestre et imparfaite.
;MARIANNE
:Tu le penses vraiment ?
;JOHAN
:Oui, ma chérie!
On est assis là,
j'ai mes bras autour de toi,
comme ça,
on est tranquilles au milieu de la nuit,
dans une maison sombre,
quelque part dans le monde...
Et,
je t'assure,
ce n'est pas seulement l'assistance que l'on doit à une autre personne humaine...
C'est de l'amour,
je crois...
Si c'est autre chose,
je n'ai pas assez d'imagination pour le découvrir...
://Musique //
;MARIANNE
:Restons comme ça toute la nuit....
;JOHAN
:Oui,
pourquoi pas...
;MARIANNE
:Je me sens bien..
//Ils se tournent l'un en face de l'autre.//
//Elle lui caresse le visage,
il lui caresse les lèvres... //
;JOHAN
:Bonne nuit.
//Elle lui caresse les joues, il lui caresse le front... //
;MARIANNE
:Bonne nuit, mon amour...
Je suis contente que l'on se soit parlé...
//De chaque côté de la scène le visage de
Marianne et de Johan en gros plan en live à travers les murs...
L'intensité de leur regard, leurs mains qui effleurent leur visage... Leur sourire, leurs larmes...
La musique qui monte en même temps que les visages disparaissent dans la nuit...
En lettres lumineuses
: SCENES DE LA VIE CONJUGALE. //
<center>''FIN''</center>
!Scènes de la vie conjugale,,<br>
//Ingmar Bergman//,,
::-► [[Le texte complet de la pièce|https://drive.google.com/file/d/1gE06bG5_-ZfVdwDaMjSVMZ3sRxCxPuTS/view?usp=sharing]]
[[1. Présentations]]
[[2. La politique de l'autruche]]
[[3. Et le désir dans tout çà ?]]
:4.Innocence et Panique
[[5.Paula]]
:6. La Vallée de Larmes
:7- Illettrés du sentiment
:8, Au milieu de la nuit dans une maison obscure
Le malade imaginaire (Acte III, Scène 10 et Acte III, Scène 12 )
Les femmes savantes (Acte I, Scène 1 et Acte II, Scène 7 )
Les fourberies de Scapin ( Acte II, Scène 7 et Acte III, Scène 13)
Le bourgeois gentilhomme (Acte II, Scène 4 et Acte III, Scène 3 )
L’avare (Acte I, Scène 3 et Acte IV, Scène 7)
Le médecin malgré lui (Acte 1, Scéne 1, 2 et 5)
La jalousie du Barbouillé ( Acte 1, Scène 1 et 2)
Le Misanthrope (Acte 1, Scène 1 et Acte IV, Scène 3)
Dom Juan ou le festin de Pierre (Acte I, Scène 2 et Acte V, Scène 2)
Tartuffe (Acte I, Scène 1 et Acte III, Scène 3)
L’école des femmes (Acte I, Scène 1, Acte II, Scène 5 et Acte IV, Scène 1)
Le dépit amoureux (Acte IV, Scène 2 et 4)
L’etourdi ( Final)
Les précieuses ridicules (Acte I, Scène 4)
!!!!LISTE DES SCÈNES EN COURS DE TRAVAIL :
# [[La Bonne Mère I,1 - BARBARA et GIACOMINA]]
# [[La Bonne Mère I,4 - Nicoletto et Margarita.]]
# [[La Bonne Mère I,8 BARBARA puis AGNESE]]
# [[La Bonne Mère I,9 - LODOVICA et DANIELA.]]
# [[La Bonne Mère I,10 Nicoletto et les mêmes.]]
# [[La Bonne Mère II,1 - AGNESE BARBARA GLACOMINA]]
# [[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
# [[La Bonne Mère II,5 - Giacomina, qui entre en travaillant à sa broderie, et les mêmes.]]
#[[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
# [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
# [[La Bonne Mère II,12 - Barbara et Lunardo.]]
# [[La Bonne Mère II,13 - Giacomina et les mêmes.]]
# [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
# [[La Bonne Mère II,15 - Margarita et les mêmes.]]
# [[La Bonne Mère II,16 - Lunardo et Margarita.]]
# [[La Bonne Mère II,17 - Barbara et les mêmes.]]
//@@background-color:#DDF;{{!!title}}@@//
AFFABLE TEXTES
!!Sélection de textes de théâtre de la [[Compagnie AFFABLE|https://compagnieaffable.com/textes-scenes-de-theatre/]]
!!!LISTE DE SCÈNES « CLASSIQUES » A PLUSIEURS
;Pour hommes
* [[Dom Juan : Dom Juan – Sganarelle (Acte I, scène 2)|https://compagnieaffable.wordpress.com/2015/05/23/dom-juan-acte-i-scene-2-dom-juan-sganarelle/]]
* [[Dom Juan : Dom Juan – Sganarelle (Acte V, scène 2)|https://compagnieaffable.wordpress.com/2015/05/23/dom-juan-acte-v-scene-2/]]
* [[Le Bourgeois Gentilhomme : Cléonte – Covielle (Acte III, scène 9)|https://compagnieaffable.wordpress.com/2015/08/19/le-bourgeois-gentilhomme-cleonte-covielle-acte-iii-scene-9/]]
* [[Le Misanthrope : Alceste – Philinte (Acte I, scène 1)|https://compagnieaffable.wordpress.com/2015/08/19/le-misanthrope-alceste-philinte-acte-i-scene-1/]]
* Le Misanthrope : le sonnet d’Oronte (Acte I, scène 2)
* Andromaque : Pyrrhus – Oreste; Oreste – Pylade
* Le Menteur de Corneille : Dorante – Géronte
* La Double Inconstance de Marivaux : Arlequin – Trivelin
* [[L’Île des Esclaves de Marivaux : Iphicrate – Arlequin (Scène 1)|https://compagnieaffable.wordpress.com/2015/10/05/marivaux-lile-des-esclaves-iphicrate-arlequin-scene-1/]]
* Ruy Blas : Ruy Blas – Don Salluste
* [[Marion de Lorme d’Hugo : Louis XIII – Bellegarde|https://compagnieaffable.wordpress.com/2015/08/01/louis-xiii-bellegarde-dans-marion-de-lorme-dhugo/]]
* Les Caprices de Marianne : Coelio – Octave
;Pour femmes
* [[Oncle Vania de Tchekhov : Sonia et Elena|https://compagnieaffable.wordpress.com/2017/03/22/oncle-vania-de-tchekhov-sonia-et-elena/]]
* Les Femmes Savantes : Henriette – Armande
* Le Misanthrope : Célimène – Arsinoé
* Le Jeu de l’amour et du hasard : Silvia – Lisette (Acte I, scène 1)
* La Double Inconstance : Lisette – Flaminia (Acte I, scène 3)
* L’Ecole des Mères : Angélique – Lisette (Acte I, scène 6)
* [[Antigone de Jean Anouilh : Antigone – La Nourrice|https://compagnieaffable.wordpress.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/]]
;Scènes mixtes
* [[Les Femmes savantes : Clitandre – Trissotin (Acte IV, scène 3)|https://compagnieaffable.wordpress.com/2017/05/15/les-femmes-savantes-clitandre-trissotin-acte-iv-scene-3/]]
* [[Roméo et Juliette : la scène des adieux|https://compagnieaffable.wordpress.com/2015/10/20/romeo-et-juliette-la-scene-des-adieux/]]
* [[Le Médecin malgré lui : Sganarelle-Martine (Acte I, scène 1)|https://compagnieaffable.wordpress.com/2015/08/12/le-medecin-malgre-lui-sganarelle-martine-acte-i-scene-1/]]
* Dom Juan : Dom Juan – Done Elvire – Sganarelle (Acte I, scène 3)
* Les Femmes Savantes : Bélise – Clitandre
* Le Menteur de Corneille : Alcippe – Clarice
* Bérénice-Titus : « Ah ! Cruel ! » (Acte IV, scène 5)
* [[Le Jeu de l’amour et du hasard : Silvia – Dorante (Acte I, scène 7)|https://compagnieaffable.wordpress.com/2015/09/15/le-jeu-de-lamour-et-du-hasard-silvia-dorante-acte-i-scene-7/]]
* Le Jeu de l’amour et du hasard : Lisette – Arlequin (Acte III, scène 6)
* La Double Inconstance : Silvia – Trivelin (Acte I, scène 1)
* La Double Inconstance : Lisette – Arlequin (Acte I, scène 6)
* Les Fausses Confidences : Araminte – Dorante (Acte II, scène 13)
* La Dispute : Eglé – Azor (Acte I, scène 4)
* Le Barbier de Séville : Rosine – Figaro (Acte II, scène 2)
* Les Caprices de Marianne : Les scènes d’Octave et Marianne
* [[Le Prince de Hombourg de Kleist : Le Prince – L’Électrice|https://compagnieaffable.wordpress.com/2015/06/13/le-prince-de-hombourg-le-prince-lelectrice-acte-iii-scene-5/]]
* [[La Peur des Coups de Courteline : ELLE – LUI|https://compagnieaffable.wordpress.com/2015/08/25/la-peur-des-coups-de-courteline-saynete-pour-elle-et-lui/]]
* Les Deux Timides d’Eugène Labiche : Jules – Cécile
* Richard III de Shakespeare : Richard – Lady Anne
* Jules César de Shakespeare : Brutus – Portia (Scène IV)
* [[La Dame de la mer d’Ibsen : Ellida – Wangel|https://compagnieaffable.wordpress.com/2016/02/10/la-dame-de-la-mer-ellida-wangel/]]
* [[On passe dans huit jours de Sacha Guitry : L’Auteur et L’Actrice|https://compagnieaffable.wordpress.com/2016/08/20/on-passe-dans-huit-jours-de-guitry-lauteur-et-lactrice/]]
* [[La Ménagerie de verre de Tennessee Williams : scène finale (en anglais : ici|https://compagnieaffable.wordpress .com/2016/08/15/the-glass-menagerie-final-scene/]])
* [[Dorian Gray largue Sibyl Vane|https://compagnieaffable.wordpress.com/2017/07/25/dorian-gray-largue-sibyl-vane/]]
* [[La Leçon d’Eugène Ionesco : Le Professeur et l’Elève|https://compagnieaffable.wordpress.com/2017/08/07/la-lecon-deugene-ionesco-le-professeur-et-leleve/]]
!!!LISTE DE SCÈNES MOINS « CLASSIQUES » A PLUSIEURS
;Pour hommes
* [[Uranus de Claude Berri : la tirade monstrueuse de Monglat (Michel Galabru)|https://compagnieaffable.wordpress.com/2017/08/25/uranus-de-claude-berri-la-tirade-monstrueuse-de-monglat-michel-galabru/]]
* [[Au-delà de cette limite votre ticket n’est plus valable de Romain Gary : Jacques et Jim|https://compagnieaffable.wordpress.com/2017/08/15/au-dela-de-cette-limite-votre-ticket-nest-plus-valable-de-romain-gary-jacques-et-jim/]]
* [[Le Visiteur d’Eric-Emmanuel Schmitt : Freud et l’Inconnu|https://compagnieaffable.wordpress.com/2017/04/13/le-visiteur-deric-emmanuel-schmitt-freud-et-linconnu/]]
* [[Buffet Froid de Bertrand Blier : Depardieu – Serrault (1ère scène du film)|https://compagnieaffable.wordpress.com/2015/10/21/buffet-froid-de-bertrand-blier-depardieu-serrault-1ere-scene-du-film/]]
* [[Uranus de Claude Berri : Léopold Le Poète (Gérard Depardieu)|https://compagnieaffable.wordpress.com/2016/02/06/uranus-leopold-le-poete-gerard-depardieu/]]
* [[Les Disparus de Saint-Agil de Christian-Jaque : Lemel – César|https://compagnieaffable.wordpress.com/2016/08/16/les-disparus-de-saint-agil-de-christian-jaque/]]
* [[Le Bruit des glaçons de Blier : Charles et son cancer (Dujardin et Dupontel)|https://compagnieaffable.wordpress.com/2017/03/31/le-bruit-des-glacons-de-blier-charles-et-son-cancer-dujardin-et-dupontel/]]
* [[La Femme infidèle de Claude Chabrol : Charles et Victor|https://compagnieaffable.wordpress.com/2016/08/14/la-femme-infidele-charles-et-victor/]]
* [[La Vie devant soi de Romain Gary : Momo et le Docteur Katz|https://compagnieaffable.wordpress.com/2016/05/02/la-vie-devant-soi-de-romain-gary-emile-ajar-momo-et-le-docteur-katz/]]
* Le Client d’Asghar Farhadi : Emad et « Lui »
* [[L’angoisse du roi Salomon de Romain Gary : Jean et Chuck|https://compagnieaffable.wordpress.com/2017/09/01/langoisse-du-roi-salomon-de-romain-gary-jean-et-chuck/]]
* [[L’angoisse du roi Salomon de Romain Gary : Jean et Chuck (2)|https://compagnieaffable.wordpress.com/2017/09/03/langoisse-du-roi-salomon-de-romain-gary-jean-et-chuck-2/]]
* Coffee and Cigarettes de Jim Jarmusch : « No Problem »
* [[Pour un oui ou pour un non de Nathalie Sarraute : H1 et H2|https://compagnieaffable.wordpress.com/2017/09/03/pour-un-oui-ou-pour-un-non-de-nathalie-sarraute-h1-et-h2/]]
* Colombe d’Anouilh : Armand – Julien
* Becket ou l’honneur de Dieu d’Anouilh : Le Roi – Becket (en anglais : ici)
* Eurydice d’Anouilh : Orphée – M. Henri
* Jacques et son maître de Milan Kundera
* [[Littoral de Wajdi Mouawad : Wilfrid – Le Thanatologue|https://compagnieaffable.wordpress.com/2015/06/17/littoral-de-wajdi-mouawad-wilfrid-le-thanatologue/]]
* [[Paris-Texas de Wim Wenders : la scène finale du peepshow (en anglais : ici|https://compagnieaffable.wordpress.com/2015/07/29/la-scene-finale-du-peepshow-dans-paris-texas-de-wim-wenders-1984/]])
* [[Harold et Maude : la scène chez le psychiatre (en anglais : ici|https://compagnieaffable.wordpress.com/2015/10/05/harold-and-maude-psychiatrist-scene/]])
* [[True Romance : Cliff et Coccotti (Dennis Hopper et Christopher Walken)|https://compagnieaffable.com/2017/10/22/true-romance-cliff-et-coccotti-dennis-hopper-et-christopher-walken/]]
* [[Hunger de Steve McQueen : Bobby et Father Dom (Michael Fassbender et Liam Cunningham)|https://compagnieaffable.com/2017/10/23/hunger-de-steve-mcqueen-bobby-et-father-dom-michael-fassbender-et-liam-cunningham/]] (en anglais)
* Goodfellas de Martin Scorsese : scène du « Funny how? » avec Joe Pesci (en anglais)
;Pour femmes
* [[L’Astronome de Didier Von Cauwelaert : Mûre et Agnès|https://compagnieaffable.com/2017/09/14/lastronome-de-didier-von-cauwelaert-mure-et-agnes/]]
* [[Coco de Koltès : tirades sur le rouge à lèvres|https://compagnieaffable.wordpress.com/2017/03/31/coco-de-koltes-tirades-sur-le-rouge-a-levres/]]
* Incendies de Wajdi Mouawad : Nawal-Wahab
* [[La Réunification des deux Corées de Pommerat : “divorce”|https://compagnieaffable.wordpress.com/2017/03/26/la-reunification-des-deux-corees-de-pommerat-divorce/]]
* [[Antigone de Jean Anouilh : Antigone – La Nourrice|https://compagnieaffable.wordpress.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/]]
* [[La Femme d’à côté de François Truffaut : Mathilde – Le Psychiatre|https://compagnieaffable.wordpress.com/2016/08/14/la-femme-da-cote-mathilde-et-le-psychiatre/]]
* [[Coffee and Cigarettes de Jim Jarmusch : Cate et Shelly (Cate Blanchett)|https://compagnieaffable.wordpress.com/2017/09/02/coffee-and-cigarettes-de-jim-jarmusch-cate-et-shelly-cate-blanchett/]]
;Scènes mixtes
* [[Chroniques 2 de Xavier Durringer : scène de rupture|https://compagnieaffable.wordpress.com/2017/06/07/chroniques-2-de-xavier-durringer-scene-de-rupture/]]
* [[Un éléphant ça trompe énormément : Lucien fait du rentre-dedans à Marthe, la mère d’une copine|https://compagnieaffable.com/2017/10/10/un-elephant-ca-trompe-enormement-lucien-fait-du-rentre-dedans-a-marthe-la-mere-dune-copine/]]
* [[Fenêtre sur cour d’Alfred Hitchcock : Jeff et Lisa (1)|https://compagnieaffable.wordpress.com/2017/09/05/fenetre-sur-cour-dalfred-hitchcock-jeff-et-lisa-1/]]
* [[Fenêtre sur cour d’Alfred Hitchcock : Jeff et Lisa (2)|https://compagnieaffable.wordpress.com/2017/09/05/fenetre-sur-cour-dalfred-hitchcock-jeff-et-lisa-2/]]
* [[On passe dans huit jours de Sacha Guitry : L’Auteur – L’Actrice|https://compagnieaffable.wordpress.com/2016/08/20/on-passe-dans-huit-jours-de-guitry-lauteur-et-lactrice/]]
* [[Le Rendez-vous de Senlis de Jean Anouilh : la scène de l’inventaire|https://compagnieaffable.wordpress.com/2017/05/31/le-rendez-vous-de-senlis-de-jean-anouilh-la-scene-de-linventaire/]]
* [[Les Demoiselles de Rochefort : Guillaume et Delphine|https://compagnieaffable.wordpress.com/2017/05/02/les-demoiselles-de-rochefort-guillaume-et-delphine/]]
* [[La Machine infernale de Cocteau : Oedipe et le Sphinx|https://compagnieaffable.wordpress.com/2017/04/24/la-machine-infernale-de-cocteau-oedipe-et-le-sphinx/]]
* Knock de Jules Romains : Knock – La Dame En Noir
* [[Pompier – Rémi de Vos|https://compagnieaffable.wordpress.com/2016/10/30/pompier-remi-de-vos/]]
* [[Les Temps qui changent d’André Téchiné : Antoine – Cécile (Depardieu – Deneuve)|https://compagnieaffable.wordpress.com/2016/08/14/les-temps-qui-changent-antoine-et-cecile/]]
* [[La Femme de mon pote de Bertrand Blier : Viviane et Micky|https://compagnieaffable.wordpress.com/2016/03/15/la-femme-de-mon-pote-viviane-et-micky/]]
* [[Network de Sidney Lumet : Diana persuade Hackett de mettre un vieux fou au JT|https://compagnieaffable.wordpress.com/2017/08/06/network-de-sidney-lumet-diana-persuade-hackett-de-mettre-un-au-jt/]]
* [[Démons de Lars Norén : Katarina – Frank|https://compagnieaffable.wordpress.com/2015/09/30/demons-de-lars-noren-katarina-frank/]]
* [[Maudite Aphrodite de Woody Allen : la scène du restaurant|https://compagnieaffable.wordpress.com/2015/12/10/maudite-aphrodite-de-woody-allen-la-scene-du-restaurant/]]
* [[Le Bureau des Légendes : Marina – Reza|https://compagnieaffable.wordpress.com/2017/07/25/le-bureau-des-legendes-marina-reza/]]
* [[Topaze de Louis Gasnier : Topaze et Suzy|https://compagnieaffable.wordpress.com/2017/08/30/topaze-de-louis-gasnier-topaze-et-suzy/]]
* [[Les femmes aussi ont perdu la guerre de Curzio Malaparte : Enrica et le Réquisitionnaire|https://compagnieaffable.wordpress.com/2017/08/30/les-femmes-aussi-ont-perdu-la-guerre-de-curzio-malaparte-enrica-et-le-requisitionnaire/]]
* [[Harry dans tous ses états de Woody Allen : Joan apprend qu’Harry l’a trompée|https://compagnieaffable.wordpress.com/2017/09/02/harry-dans-tous-ses-etats-de-woody-allen-joan-apprend-quharry-la-trompee/]]
* [[Harry dans tous ses états de Woody Allen : Harry essaie de convaincre Fay de ne pas se marier|https://compagnieaffable.com/2017/09/05/harry-dans-tous-ses-etats-de-woody-allen-harry-essaie-de-convaincre-fay-de-ne-pas-se-marier/]]
* [[Her de Spike Jonze : Samantha – Theodore (en anglais : ici|https://compagnieaffable.wordpress.com/2015/10/11/spike-jonzes-her-os-set-up-scene/]])
* Grand-peur et misère du IIIème Reich : Le Père et la Mère dans « Le Mouchard »
* [[The Age of Innocence de Martin Scorsese : Ellen – Archer (en anglais : ici|https://compagnieaffable.wordpress.com/2015/10/20/the-age-of-innocence-de-scorsese-ellen-archer/]])
* `Théâtre` : [[Notre Futur • Feydeau]] ♦ [[Don Juan acte I sc 3 • Molière]]
* `Animations` : [[L'Agence Aventura • J-M Ribes]]
* `Liens glanés` : [[Pompier, Rémy de Vos|https://compagnieaffable.com/2016/10/30/pompier-remi-de-vos/]] ♦ [[Mathilde et le Psychiatre, Trufaut|https://compagnieaffable.com/2016/08/14/la-femme-da-cote-mathilde-et-le-psychiatre/]] ♦ [[Marthe courtisée, « Un éléphant ça trompe énormément, Marthe »|https://compagnieaffable.com/2017/10/10/un-elephant-ca-trompe-enormement-lucien-fait-du-rentre-dedans-a-marthe-la-mere-dune-copine/]] ♦ [[Antigone et la Nourrice|https://compagnieaffable.com/2016/05/31/antigone-de-jean-anouilh-antigone-la-nourrice/]]
,,[[Le Forum des Septuas ++|https://groups.google.com/forum/#!forum/septuas]] • [[Bibliothèque|https://drive.google.com/drive/folders/0B6u4-mn-yHRWNFFwYXZMWHE1LU0]] • [[Ancien Cahier|http://ateliertheatre.tiddlyspot.com/]] • [[Grenier|http://grenier.tiddlyspot.com/]] • [[Plaisir de Dire|http://dire.tiddlyspot.com/]],,
: Clysterium donare,
: Postea seignare,
: Ensuita purgare.
"""La lire équivaut à vingt sous ; une demi-lire fait donc dix sous.
Pour donner un ordre de grandeur, car les équivalences sont impossibles, une lire de Venise (c'est à dire une demi-lire italienne de l'époque) correspond à quelques dix francs d'aujourd'hui."""
"""
Ce soir au bar
De la gare
Igor hagard est noir
Il n'arrêt' guer' de boir'
Car sa Katia, sa jolie Katia vient de le quitter
Sa Katie l'a quitté
Il a fait chou blanc
Ce grand duc avec ses trucs, ses astuces,
Ses ruses de Russe blanc
"Ma tactique était toc" dit Igor qui s'endort,
Ivre mort au comptoir
Du bar.
Un Russe blanc qu'est noir
Quel bizarre hasard se marr'nt
Les fêtards paillards du bar.
Car encore Igor y dort
Mais près d'son oreille
Merveille un réveil vermeil
Lui prodigue des conseils
Pendant son sommeil :
Tic tac tic tac
Ta Katic t'a quitté
Tic tac tic tac
Ta Katie t'a quitté
Tic tac tic tac
T'es cocu, qu'attends tu ?
Cuites-toi, t'es cocu
T'as qu'à, ta qu'à t'cuiter
Et quitter ton quartier
Ta Katie t'a quitté
Ta tactique était toc
Ta tactique était toc
Ta Katie t'a quitté.
Otes ta toque et troques
Ton tricot tout crotté
Et ta croute au couteau
Qu'on t'a tant attaqué
Contre un tacot coté
Quatre écus tout compté
Et quittes ton quartier
Ta Katie t'a quitté
Ta Katie t'a quitté.
Tout à côté, des catins décaties taquinaient
Un coker coquin,
Et d'étiques coquettes, tout en tricotant,
Caquettaient et
Discutaient et critiquaient
Un conte toqué, qui comptait en tiquant,
Tout un tas de tickets
De quai
Quand tout à coup... Tic Tac tic... Brrrrrrr...
"Oh mâtin quel réveil
Mâtin quel réveille-matin"
S'écrie le Russe blanc de peur
"Pour une sonnerie
C'est une belle sonnerie !
"""
!!!!!//Paroles et musique : Boby Lapointe //
! <<lingo Metrics>>
| Caractères|<$edit-text tiddler="$:/themes/nico/notebook/metrics/bodyfontsize" default="" tag="input"/> |
| Interligne|<$edit-text tiddler="$:/themes/nico/notebook/metrics/bodylineheight" default="" tag="input"/> |
''px'' = pixels (ex.: //18px//)
''em'' = multiple de la taille standard (ex.: //1.5em //) ,,(point décimal),,
!Tante Bise<br>^^♀♂ (ou ♀♀)^^
!!!!!!//Extrait de L'huluberlu - acte 1 //
!!!!Jean Anouilh
>//Tante Bise est seule. On s’aperçoit alors qu’elle est en larmes, son mouchoir trempé roulé en boule à la main... Elle marche nerveusement dans la pièce, se pressant les mains et s’écroule finalement en gémissant.//
;Tante Bise
:Jamais ! Jamais je n’oserai l’avouer. À mon âge !...
://Elle s’abîme dans un fauteuil. Le Général, rentrant, la trouve dans cet état.//
;Le Général
:Allons bon ! Qu’est-ce qu’il y a encore ?
;Tante Bise se redresse
:Ludovic ! Il n’y a qu'à toi que je peux me confier. ,..
;Le Général grommelle
:Je le crains, hélas ! Qu'est-ce qu'il y a? . . . . ,
;Tante Bise
:Ludovic, je crois que je suis aimée.
;Le Général sourcille
:On aura tout vu !
;Tante Bise, hoquetant
:Par un homme.
;Le Général
:C’est courant.
;Tante Bise
:Un homme indigne.
;Le Général
:C'est également courant. Mais c est peut-être tout simplement un inconscient ? _
;Tante Bise secoue la tête
:Non ! Je suis irrémédiablement compromise. .....
;Le Général
:N’exagérons rien. On n'est jamais irrémédiablement compromis en France. Je connais cet homme?
;Tante Bise
:Il ne s’agit pas de la France, Ludovic. La réputation d’une femme est infiniment plus fragile que celle d’un homme politique. Apprends-le.
;Le Général
:Tu as du crédit, que diable ! Voila quarante et quelques années que la tienne eft inattaquable... et inattaquée !
;Tante Bise
:Ce temps virginel est passé.
;Le Général
:Nom d'une pipe ! Qu'est-ce que tu me chantes ?
;Tante Bise, dans un souffle
:J'ai cédé.
;Le Général a d'abord le souffle coupé, puis éclate de rire.
:Eh bien, mais ela me parait une bonne nouvelle ! Il ajoute, rèveur Mais qui a pu ?
;Tante Bise
:Tu vois, Ludovic ! Tu le cries toi-meme, indigné. Qui a pu ?
;Le Général
:Mais, mais non ! Pas indigné, je t'assure. Curieux, tout simplement.
;Tante Bise, sombre
:C’est un de tes amis, Ludovic. tu es mon grand frère, mon seul défenseur. J’entends que tu convoques cet homme et que tu le sommes de réparer. Ton honneur est en jeu.
;Le Général grommelle
:Mon honneur... Mon honneur C’eft vite dit. Avoue que tu le places dans de curieux endroits, mon honneur.
;Tante Bise, dressée comme une furie
:Ludovic ! Tu es un grossier personnage ! Qu’as-tu osé croire ?
;Le Général, embarrassé.
:Je ne sais pas, moi... Tu roules ton mouchoir en boule. Tu sanglotes, tu me dis qu’on t’a compromise, que tu as cédé... Avertis si ce sont des métaphores et traduis-moi cela en bon français.
;Tante Bise
:Christian Lebelluc, cet être séduisant et indigne, a abusé de moi. Voilà. C’est français ?
;Le Général est d'abord interloqué, puis son oeil s’allume, guoguenard
:Lebelluc ? Non ?
;Tante Bise
:Ton ami !
;Le Général
:N’exagérons rien. C’est une bonne fourchette. Je dîne avec lui une fois par semaine. Mais on peut être une bonne fourchette et... Qu’entends-tu au juste par abuser ?
;Tante Bise:pincée
:Epargne-moi les précisions, Ludovic !
;Le Général
:Cela serait trop facile. Tu penses bien que je ne vais pas me fourrer dans une histoire impossible sans précisions. Qu’entends-tu, dans ta maigre cervelle, par abuser ?
;Tante Bise
:Tu m’as demandé de te parler français. « Abuser » est un mot français, il me semble ?
://Elle le toise, digne et brisée.//
:C'est bien. Tu l’auras voulu. Je dirai tout.
://Elle commence ://
:Christian Lebelluc me regardait depuis des années...
;Le Général
:Quand il te rencontrait, comme tout le monde...
;Tante Bise
:Pas comme tout le monde ! Il y avait quelque chose dans son œil. ' ^
;Le Général
:Tu as rêvé ! Un peu de lumière, un reflet.
:Les peintres et les photographes te le diront. Les états d’âme,c'est une question d’éclairage... C’est comme cela qu’on fait du cinéma. Tu prends un imbécile qui ne pense à rien ; tu lui fourres un projecteur dans l’œil en gros plan et cela te donne Pascal méditant le roseau pensant.
;Tante Bise secoue la tête
: Il n’y a pas de projecteur, Ludovic, qui fasse naître le reflet de la concupiscence.
;Le Général
:Voire ! La concupiscence est plus rare que ne se l’imaginent les vieilles filles.
;Tante Bise
:D’ailleurs, tant qu’il ne s’est agi que d'um reflet dans son regard — dont il n’était peut-être pas maître — je n ai rien dit. Il y a quelques jours, il est passé aux gestes. Brusquement, un soir, dans une porte, sous le prétexte trop commode de me faire passer devant lui, il m a effleuré la taille.
;Le Général a un geste impatient
:Passons !
;Tante Bise
:Je suis passée. Mais quand je lui ai tendu sa tasse de thé un mêlant plus tard au salon, j’ai vu son regard briller d'envie
;Le Général
:Il adore le thé. Il avait peut-être soif.
;Tante Bise
:Non. Il ne l'a même pas bu.
;Le Général
:Il déteste le thé, alors. Il aurait préféré du whisky.
://Le Général secoue la tête, un sourire amer aux lèvres //
;Tante Bise
:Non, Ludovic. Un tel regard ne peut tromper une femme. C'était de moi qu'il avait soif.
;Le Général
:Cela me parait invraisemblable. Mais admettons. Tu lui as donné à boire ?
;Tante Bise reste un instant tremblante d’une indignation lourde de silence outragé, puis elle clame
:Je me tuerai, Ludovic !
://Et elle sort en courant.//
;Le Général court après ellejusqu’au seuil, lui criant
:Ne te tues pas sans préciser, nom d’un chien ! Tu lui as donné a boire ?
://Elle ne répond pas, courant sans doute comme une folle dans le jardin. //
;Le Général la regarde courir un instant, puis revient grommelant, goguenard :
:Quelle potion d’ailleurs ! Pauvre Lebelluc ! Le voilà dans de jolis draps.
!!!!!!Rideau
<<list-links filter:"[tag<currentTiddler>] +[sort[title]] -[[Cahier des Septuas ++ - 29/12/20]] ">>
| Brigitte | 07 60 68 99 70 |
| Chantal | 06 69 24 59 60 et 09 52 81 51 15 |
| Claudine | 06 08 10 86 63 |
| Denise | 06 64 98 00 85 |
| Gérard | 06 50 79 52 65 - Fixe : 01 72 31 98 21 |
|//Geneviève// | 01 43 29 58 72 |
| Isaac | 06 18 71 36 83 |
| Jacques | 06 83 81 10 98 |
| Livia | 06 75 75 34 71 |
| Michèle | 06 08 78 96 98 |
| Mireille | 06 64 23 00 89 |
| Nicole | 06 42 62 14 76 |
| Nicole Leroux | 06 63 54 34 40 |
| Noella | 06 48 60 24 50 |
| Odile | 01 43 20 77 50 |
| Yvonne | 06 46 23 51 67 |
| Éveline | 07 83 20 42 72 Fixe : 01 42 78 06 93 |
Rédigé un peu comme un billet de blog de formateur ~~~~~~~~
transforme un max d'assertions en liens vers des pages d'appui
Qu'est-ce que mes participants , étudiants, élèves comprennent, apprennent, retiennent de la présentation ou du cours que j'ai si soigneusement préparée ?
Si je pouvais :
savoir sur le champ les représentations de chacun d'eux sur le sujet que nous abordons ?
M'assurer des acquis sur lesquels j'appuie mon intervention ?
Repérer à temps les points sur lesquels certains décrochent et pouvoir tout de suite revenir dessus ?
Provoquer des échanges de points de vue, construire sur les opinions qu'ils formulent ?
Entretenir ferveur émulatrice et climat ludique malgré les contraintes - nombre, distance, disponibilités - auxquelles il faut se plier ?
Je révais de solutions.
Elle existe !
En séance ou hors séance, dès que vos interlocuteurs ont au moins un smartphone vous communiquez dans les deux sens :
questions ouvertes, sondages immédiats, murs de mots, validations QCM, brainstormings,
ces outils sont immédiatement mobilisables
via une seule plateforme, simple et intuitive :
WOOCLAP.
Vous restez maîtres de votre pédagogie, vous continuez à utiliser vos instruments de présentation familiers : les fonctions d'interactivité apportées par Woodclap s'y intègrent sans problème.
→ Vous êtes sûrs de coller à votre auditoire,
→ vous êtes sûr que votre auditoire colle à votre sujet.
Testez ces liens et ces vidéos pour être convaincu(e) !
Jacques
!''Dans la salle d’attente du psychanalyste''
!!!//L’Astronome de Didier Von Cauwelaert (scène 1)//
^^Livia Brigitte^^
!''Le Graphologue''
!!!//de Catherine Blanchard//
^^Mireille Jacques^^
!''Ismène et Antigone''
!!!//de Jean Anouilh//
^^Odile Michèle Denise^^
!''Garde à Vue''
!!!//D'après Frédéric Beigbeder//
^^Nicole Abdel/(Jacques)^^
!''« Le Poumon ! »''
!!!//Scènes finales du ''Malade Imaginaire'' de Molière//
^^Chantal Jacques Mireille Éveline Nicole Claudine^^
!!Gigue<br>et<br>Goûter avec les personages de Molière !
"""
Club seniors Malraux
112, rue de Rennes 75006 Paris
Ligne 4 Rennes, Saint-Placide
83, 89, 94, 95, 96
"""
---
\import TiddlyTools/AutoScroll/Toolbar
\define hidebody() <style> [data-tiddler-title="$(currentTiddler)$"] .tc-tiddler-body { display:none; } </style>
<$vars prefix="[tag[" suffix="]]">
<$set name="autotags" filter="[enlist{TiddlyTools/AutoScroll/Setup!!autotags}] [[autoscroll]] +[sort[]addprefix<prefix>addsuffix<suffix>]">
<$vars frameheight={{{ [[TiddlyTools/AutoScroll/Setup]get[frameheight]] ~[[50vh]] }}}>
<$vars framestyles={{{ [[TiddlyTools/AutoScroll/Setup]get[framestyles]] }}}>
<$vars clickaction={{{ [[TiddlyTools/AutoScroll/Setup]get[clickaction]] }}}>
<$vars scrolltime={{!!scrolltime}}>
<$list filter="[<currentTiddler>subfilter<autotags>]">
<$reveal stateTitle=<<folded-state>> type="nomatch" text="hide" retain="yes" animate="yes">
<<hidebody>>
<$keyboard key="escape" actions=<<stop>>>
<$button class="tc-btn-invisible scrollFrame" style="width:100%;text-align:left;outline:none;cursor:default;" actions=<<clickaction>>>
<div class="scrollContent"> <$transclude mode="block" /> </div>
</$button>
</$keyboard>
</$reveal>
</$list>
\whitespace trim
\define settime()
<style> .autoScrollInput { width:3em; } </style>
<$edit-text class="autoScrollInput" field="scrolltime" tag="input" default="" placeholder="" />
\end
\define stop()
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { height:$(frameheight)$;overflow:visible; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transform:translateY(0px); transition:transform 0s linear; }
"""/>
<$action-deletetiddler $tiddler="$:/temp/autoscroll/stylesheet" />
\end
\define start()
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" pause="false" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { $(framestyles)$;height:$(frameheight)$;overflow:hidden; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transform:translateY(calc(-100% + $(frameheight)$ - 3em)); transition:transform $(scrolltime)$s linear; }
"""/>
\end
\define pause()
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="nomatch" default="false"> <<start>> </$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="false">
<$action-setfield $tiddler="$:/temp/autoscroll/stylesheet" tags="$:/tags/Stylesheet" pause="true" text="""
[data-tiddler-title="$(currentTiddler)$"] .scrollFrame { $(framestyles)$;height:$(frameheight)$;overflow:hidden; }
[data-tiddler-title="$(currentTiddler)$"] .scrollContent { transition:transform 1000000000s linear; }
"""/>
</$reveal>
\end
\define controls()
<<settime>>
<$vars scrolltime={{{ [<currentTiddler>get[scrolltime]] }}}>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="">
<$button style="display:inline-block;width:auto;" actions=<<start>> tooltip="start auto-scrolling"> {{$:/core/images/chevron-down}} </$button>
</$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="false">
<$button style="display:inline-block;width:auto;" actions=<<pause>> tooltip="pause auto-scrolling"> {{$:/core/images/timestamp-off}} </$button>
</$reveal>
<$reveal text={{$:/temp/autoscroll/stylesheet!!pause}} type="match" default="true">
<$button style="display:inline-block;width:auto;" actions=<<pause>> tooltip="resume auto-scrolling"> {{$:/core/images/chevron-down}} </$button>
</$reveal>
<span style={{{ [{$:/temp/autoscroll/stylesheet!!pause}match[]then[fill:gray;]] }}}>
<$button style="display:inline-block;width:auto;" actions=<<stop>> tooltip="stop auto-scrolling"> {{$:/core/images/chevron-up}} </$button>
</span>
</$vars>
\end
<$vars prefix="[tag[" suffix="]]">
<$set name="autotags" filter="[enlist{TiddlyTools/AutoScroll/Setup!!autotags}] [[autoscroll]] +[sort[]addprefix<prefix>addsuffix<suffix>]">
<$vars frameheight={{{ [[TiddlyTools/AutoScroll/Setup]get[frameheight]] ~[[50vh]] }}}>
<$vars framestyles={{{ [[TiddlyTools/AutoScroll/Setup]get[framestyles]] }}}>
<$vars clickaction={{{ [[TiddlyTools/AutoScroll/Setup]get[clickaction]] }}}>
<$list filter="[<currentTiddler>subfilter<autotags>]">
<$button class="tc-btn-invisible" style="z-index:1;" popup=<<qualify "$:/temp/popup/autoscroll">> tooltip="Autoscroll">
<$transclude tiddler={{{ [[TiddlyTools/AutoScroll/Setup]get[button]] ~[[$:/core/images/spiral]] }}} />
</$button>
<$reveal type="popup" state=<<qualify "$:/temp/popup/autoscroll">> position="belowleft"
class="tc-drop-down tc-popup-keep" style="min-width:auto;padding:0.25em;">
<<controls>>
</$reveal>
</$list>
* On se répartit en équipes de deux ou trois.
* On se met d'accord sur le nombre de points à atteindre (5, 10 ?) et sur une des listes de virelangues disponibles.
* Le premier a le choix du virelangue par lequel commencer.
;À chaque tour :
# L'équipier choisi attend le topchrono et lit le virelangue à voix claire et distincte.
## Si le virelangue a été prononcé sans aucune erreur, __l'équipe marque un point.__
###''Trop long !'' N'importe quel équipier d'une équipe adverse peut crier "//Trop long !//"
### Auquel cas, au top chrono, il devra relire le virelangue sans commettre d'erreur.
### S'il réussit, il fait gagner à son équipe __1 point par seconde gagnée__.
### S'il ne réussit pas __il fait perdre 2 points__ à son équipe qui vont à l'équipe mise en cause.
## S'il y a eu une erreur, __l'équipe perd tous ses points et repart à zéro__.
# L'équipe qui a lu le virelangue donne le numéro du prochain virelangue à lire par l'équipe suivante.
# Dès qu'une équipe atteint le nombre de points convenu au début, on termine s'il y a lieu le tour, et la/les équipe(s) ayant atteint ce nombre de points est(sont) déclarée(s) vainqueur(s) du tournoi.
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
;Sequins
:Pièce de monnaie en or d°une valeur de vingt-deux lires vénitiennes.
Dans les milieux aisés, il était de mode de prendre le chocolat en guise de collation au milieu de la matinée
!!UN MOT POUR UN AUTRE
,,Jean Tardieu,,
"""
IRMA
, entrant et apportant le courrier . :
''Madame, la poterne vient d'élimer le fourrage...''
Elle tend le courrier à Madame, puis reste plantée devant elle, dans une attitude renfrognée et boudeuse .
MADAME
, prenant le courrier . : ''C'est tronc !... Sourcil bien !...'' (Elle commence à examiner les lettres puis, s'apercevant qu' lrma est toujours là :) ''Eh bien, ma quille ! Pourquoi serpez-vous là?'' (Geste de congédiement.) ''Vous pouvez vidanger!''
IRMA
:''C'est que, Madame, c'est que...''
MADAME
:''C'est que, c'est que, c'est que quoi-quoi ? ''
IRMA :
''C'est que je n'ai plus de « Pull-over » pour la crécelle... ''
MADAME ,
prend son grand sac posé à terre à côté d'elle et après une recherche qui paraît laborieuse, en tire une pièce de monnaie qu'elle tend à Irma. : ''Gloussez! Voici cinq gaulois! Loupez chez le petit soutier d'en face: c'est le moins foreur du panier... ''
IRMA ,
prenant la pièce comme à regret, la tourne et la retourne entre ses mains, puis.''Madame, c'est pas trou: yaque, yaque... ''
MADAME :
''Quoi-quoi: yaque-yaque ? ''
IRMA ,
prenant son élan . :''Y-a que, Madame, yaque
j'ai pas de gravats pour mes haridelles,
plus de stuc pour le bafouillis de ce soir,
plus d'entregent pour friser les mouches...
plus rien dans le parloir,
plus rien pour émonder,
plus rien... plus rien... ''
(Elle fond en larmes).
MADAME ,
après avoir vainement exploré son sac de nouveau et l'avoir montré à Irma.: ''Et moi non plus, Irma ! Ratissez: rien dans ma limande !''
IRMA ,
levant les bras au ciel . : ''Alors ! Qu'allons-nous mariner, Mon Pieu ?''
MADAME ,
éclatant soudain de rire . : ''Bonne quille, bon beurre ! Ne plumez pas ! J'arrime le Comte d'un croissant à l'autre. ''(Confidentielle.) ''//Il me doit plus de cinq cents crocus !//''
IRMùA ,
méfiante . :''Tant fieu s'il grogne à la godille, mais tant frit s'il mord au Saupiquet !...'' (Reprenant sa litanie :) ''Et moi qui n'ai plus ni froc ni gel pour la meulière, plus d'arpège pour les... ''
MADAME ,
I'interrompant avec agacement. : ''Salsifis ! Je vous le plie et le replie: le Comte me doit des lions d'or! Pas plus lard que demain. Nous fourrons dans les Grands Argousins: vous aurez tout ce qu'il clôt. Et maintenant, retournez à la basoche ! Laissez-moi saoule !''
(Montrant son livre.) ''Laissez-moi filer ce dormant !
Allez, allez ! Croupissez ! Croupissez !''
Irma se retire en maugréant. Un temps. Puis la sonnette de l'entrée retentit au loin .
IRMA ,
entrant. Bas à l'oreille de Madame et avec inquiétude. : ''C'est Madame de Perleminouze, je fris bien: Madame ''(elle insiste sur "Madame") , ''Madame de Perleminouze !''
MADAME ,
un doigt sur les lèvres, fait signe à Irma de se taire, puis, à voix haute et joyeuse . :
''Ah ! Quelle grappe ! Faites-la vite grossir ! ''
Irma sort. Madame, en attendant la visiteuse, se met au piano et joue. Il en sort un tout petit air de boîte à musique.
Retour d'lrma, suivie de Madame de Perleminouze.
IRMA , annonçant . :
''Madame la Comtesse de Perleminouze ! ''
MADAME ,
fermant le piano et allant au-devant de son amie . :
''Chère, très chère peluche ! Depuis combien de trous, depuis combien de galets n'avais-je pas eu le mitron de vous sucrer ! ........''"""
"""Le texte dit « //une brasse// ››, mais il s'agit de la brasse de Venise qui équivaut à une demi-aune de France, soit à 59 cm.
Etant donné que les trois femmes vont acheter trois « //brasses// ›› et demie d'indienne, conserver la demi-aune devenait par la suite trop compliqué ; on a donc préféré choisir la coudée qui équivaut en France à 50 cm."""
<br class="Apple-interchange-newline">
La Bonne Mère II,15 - Margarita et les mêmes.
<html>
<body>
<!--StartFragment--><a class="tc-tiddlylink tc-tiddlylink-resolves" href="#La%20Bonne%20M%C3%A8re%20III%2C15%20-%20Agnese%20puis%20Nicoletto." style="box-sizing: border-box; background: rgb(255, 255, 255); text-decoration: none; font-weight: 500; color: rgb(41, 166, 238); user-select: inherit; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 42.3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><h2 class="tc-title" style="box-sizing: border-box; line-height: 1.2; font-weight: 300; font-size: 1em; display: inline;">La Bonne Mère III,15 - Agnese puis Nicoletto.</h2></a><!--EndFragment-->
</body>
</html>
<a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlydrive.github.io/?state=%7B%22ids%22:%5B%221ErhX8hAlZA9x4-jsdN1z-tM6nweDs420%22%5D,%22action%22:%22open%22,%22userId%22:%22116177817561037008944%22%7D#9%20Juin%202020" style="box-sizing: border-box; background: rgb(253, 246, 227); outline: 0px; text-decoration: underline; font-weight: 500; color: rgb(78, 123, 170); user-select: inherit; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 47px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><h2 class="tc-title" style="box-sizing: border-box; line-height: 1.2; font-weight: 300; font-size: 1em; display: inline;">9 Juin 2020</h2></a>
<br class="Apple-interchange-newline"><span style="color: rgb(41, 166, 238); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 42.3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">Les trois temps<span> </span></span>
<table style="box-sizing: border-box; border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(221, 221, 221); width: auto; max-width: 100%; caption-side: bottom; margin-top: 1em; margin-bottom: 1em;"><thead style="box-sizing: border-box;"><tr class="evenRow" style="box-sizing: border-box;"><td align="center" style="box-sizing: border-box; padding: 0px 7px; border-top: 1px solid rgb(221, 221, 221); border-left: 1px solid rgb(221, 221, 221); background-color: rgb(240, 240, 240); font-weight: bold;"><ul class="" style="box-sizing: border-box;">
!!!LA SURPRISE DE L'AMOUR :
!!Pierre et Jacqueline<br>//^^Acte I scène 1^^//
!!!!Pierre Marivaux
;PIERRE
:Tiens, Jacquelaine, t'as une himeur qui me fâche.
:Pargué encore faut-il dire queuque parole d'amiquié aux gens.
;JACQUELINE
:Mais, qu'est-ce qu'il te faut donc :
:Tu me veux pour ta femme,
:eh bian,
:est-ce que je recule à cela ?
;PIERRE
:Bon, qu'est-ce que ça dit !
:Est-ce que toutes les filles n'aimont pas à devenir la femme d'un homme ?
;JACQUELINE
:Tredame !
:C'est donc un oisiau bien rare qu'un homme, pour en être si envieuse ?
;PIERRE
:Hé là, là,
:je parle en discourant,
:j savons bien que l'oisiau n'est pas rare ;
:mais quand une fille est grande, al-le a la fantaisie d'en avoir un,
:et il n'y a pas de mal à ça, Jacquelaine,
:car ça est vrai
:et tu n'iras pas là contre.
;JACQUELINE
:Acoute,
:n'ons-je pas d'autres amoureux que toi ?
:Est-ce que Blaise et le gros Colas ne sont pas affolés de moi tous deux,
:est-ce qu'ils ne sont pas des hommes aussi bian que toi.
;PIERRE
:Eh mais,
:je pense qu'oui.
;JACQUELINE
:Eh bian, Butor,
:je te baille la parfarence,
:qu'as-tu à dire à ça ?
;PIERRE
:C'est que tu m'aimes mieux qu'eux tant seule-ment ;
:mais
:si je ne te prenais pas moi, ça te fâcherait-il ?
;JACQUELINE
:Oh dame, t'an veux trop.
;PIERRE
:Eh morguenne, voilà le //tu autem//,
:je veux de l'amiquié pour la parsonne de moi tout seul :
:quand tout le village vienrait te dire : //Jacqueleine épouse-moi// ;
:je voudrais que tu fis bravement la grimace à tout le village,
:et que tu lui disis : //nennin-da, je veux être la femme de Piarre//,
:et pis c'est tout.
:Pour ce qui est d'en cas de moi, si j'allais être un parfide,
:je voudrais que ça te fâchit rude-ment,
:et que t'en pleurisse tout ton soûl ;
:et velà margué ce qu'en appelle aimer le monde.
:Tians, moi qui te parle,
:si t'allais me changer, il n'y aurait pu de çarvelle cheux moi,
:c'est de l'amiquié que ça.
:Tatigué que je serai con-tent si tu pouvais itou devenir folle !
:Ah !
:que ça serait touchant !
:Ma pauvre Jacqueleine,
:dis-moi queuque mot qui me fasse comprendre que tu pardrais un petit brin l'esprit.
;JACQUELINE
:Va, va, Piarre,
:je ne dis rian, mais
:je n'en pense pas moins.
;PIERRE
:Eh,
:penses-tu que tu m'aimes par hasard ?
:Dis-moi oui ou non.
;JACQUELINE
:Devine lequel.
;PIERRE
:Regarde-moi entre deux yeux,
:tu ris tout comme si tu disais oui ;
:hé, hé, hé, qu'en dis-tu ?
;JACQUELINE
:Eh,
:je dis franchement que je serai bian empêchée de ne pas t'aimer,
:car t'es bien agriable.
;PIERRE
:Eh, jarni,
:velà dire les mots et les paroles.
;JACQUELINE
:Je t'ai toujours trouvé une bonne philosomie d'homme :
:tu m'as fait l'amour ;
:et
:franchement
:ça m'a fait plaisir ;
:mais l'honneur des filles les empêche de parler après ça,
:ma tante disait toujours qu'un amant c'est comme un homme qui a faim :
:pu il a faim et pu il a envie de manger ;
:pu un homme a de peine après une fille, et pu il l'aime.
;PIERRE
:Parsanguenne,
:il faut que ta tante ait dit vrai ;
:car je meurs de faim, je t'en avertis, Jacqueleine.
;JACQUELINE
:Tant mieux,
:je t'aime de cette himeur-là,
:pourvu qu'alle dure ;
:mais j'ai bin peur que monsieur Lélio, mon maître, ne consente à noute mariage,
:et qu'il ne me boute hors de chez li, quand il saura que je t'aime,
:car il nous a dit qu'il ne voulait point voir d'amourette parmi nous.
;PIERRE
:Et pourquoi donc ça,
:est-ce qu'il y a du mal à aimer son prochain ?
:Et morgué:
:je m'en vas lui gager, moi, que ça se pratique chez les Turcs,
:et si ils sont bien méchants.
;JACQUELINE
:Oh, c'est pis qu'un Turc, à cause d'une dame de Paris qui l'aimait beaucoup,
:et qui li a tourné casaque pour un autre galant plus mal bâti que li :
:noute monsieur a fait du tapage ;
:il li a dit qu'alle devait être honteu-se ;
:alle lui a dit qu'alle ne voulait pas l'être.
:Et voilà bian de quoi ! ç'a-t-elle fait,
:et pis des injures :
:vous êtes cun indeigne, et voyez donc cet impertinent, et je me vengerai, et moi, je m'en gausse.
:Tant y a qu'à la pafin alle li a farmé la porte sur le nez :
:li qui est glorieux a pris ça en mal,
:et il est venu ici pour vivre en harmite, en phisolophe,
:car velà comme il dit.
:Et depuis ce temps, quand il entend parler d'amour,
:il semble qu'en l'écorche comme une anguille.
:Son valet Arlequin fait itou le dégoûté :
:quand il voit une fille à droite, ce drôle de corps se baille les airs d'aller à gauche,
:à cause de queuque mijaurée de chambrière qui li a, à ce qu'il dit, vendu du noir.
;PIERRE
:Quiens, véritablement
:c'est une piquié que ça,
:il n'y a pas de police ;
:an punit tous les jours de pauvres voleurs,
:et an laisse aller et venir les parfides.
:Mais
:velà ton maître,
:parle-li.
;JACQUELINE
:Non,
:il a la face triste,
:c'est peut-être qu'il rêve aux femmes...
:Je sis d'avis que j'attende que ça soit passé :
:va, va,
:il y a bonne espérance pisque ta maîtresse est arrivée et qu'alle a dit qu'alle lui en parlerait..
éprouver en toi le sentiment
//Sonia sort. //
''ELÈNA ANDRÉÏEVNA'', //seule. //
– Il n’est rien de pis que de connaître le secret d’autrui et de n’y pouvoir rien.
//(Réfléchissant.)//
Il n’est pas amoureux d’elle, c’est clair.
Mais pourquoi ne l’épouserait-il pas ?
Elle n’est pas belle,
mais pour un médecin de campagne,
<div style="padding-left: 50px";>à son âge, </div>
ce serait une femme excellente.
<div style="padding-left: 50px";>Elle est intelligente,
bonne,
pure… </div>
Mais ce n’est pas de cela qu’il retourne…
//(Une pause.) //
Je comprends cette pauvre fille…
Au milieu d’un ennui désespérant, lorsque,
<div style="padding-left: 50px";>au lieu de gens,
ne passent autour de nous que des taches grises ;
quand on entend des trivialités ;
quand on ne sait que boire, manger et dormir ; </div>
il vient parfois,
lui,
<div style="padding-left: 50px";>beau,
intéressant,
entraînant,
ne ressemblant pas aux autres, </div>
comme au milieu des ténèbres la lune claire…
Être sous le charme d’un tel homme,
s’oublier…
Je crois que moi-même, j’ai un peu subi l’attrait…
Oui,
<div style="padding-left: 50px";>sans lui, je m’ennuie ; </div>
je souris quand je pense à lui…
Cet oncle Vania dit qu’il doit couler dans mes veines du sang d’ondine.
//« Donnez-vous la liberté au moins une fois dans votre vie ! »//
Eh bien ?
Peut-être le faut-il ainsi.
Je m’envolerai,
<div style="padding-left: 50px";>oiseau libre, </div>
de chez vous tous,
<div style="padding-left: 50px";>loin de vos figures endormies,
de vos conversations ;
j’oublierai que vous existez… </div>
Mais je suis lâche, timide…
Ma conscience me tourmente…
Il vient chaque jour ici.
<div style="padding-left: 50px";>Je devine pourquoi il vient, </div>
et je me sens déjà coupable.
Je suis prête à tomber à genoux devant Sonia,
à m’excuser,
à pleurer…
'',,`Extrait d’Oncle Vania d’Anton Tchekhov, Acte III`,,''
!!!<center>''[[LA BONNE MÈRE|http://jacques.droppages.com/Septuas.html#LA%20BONNE%20M%C3%88RE%20%E2%99%A6%20Goldoni]]''</center>
► Chacun dit un "//par coeur//", scène, fragment ou simple tirade :
* italienne de vélocité quand on apprend le texte,
* ou jeu avec sentiment dès qu'on le sait.
► Lecture des scènes de Margarita et Lunardo avec Nicole et avec Gérard
* Lecture
* Recherche de la mise en espace.
* Travail de fragments :
** Permutation de rôles
** Manèges
** Partis de jeu et indications de caractères/sentiments
!!!<center>Choral [[LES ANIMAUX MALADES DE LA PESTE|http://jacques.droppages.com/Dire.html#LES%20ANIMAUX%20MALADES%20DE%20LA%20PESTE]]</center>
:→ Gérard : Le Lion ou La Fontaine ?
---
| ► LUNDI 13 : __PAR COEUR__ : italiennes, puis jeu (sous Duo) |h
{{▼ Vendredi 10 avril - 14h30 ▼||prog}}
;► Impros
:Chacune des scènes actuellement répétées sera improvisée en langage d'aujourd'hui Manège (sans support du texte, titulaires au dernier tour).
^^[[I,4 - Nicoletto et Margarita.|La Bonne Mère I,4 - Nicoletto et Margarita.]] - [[I,8 BARBARA puis AGNESE|La Bonne Mère I,8 BARBARA puis AGNESE]] - [[I,9 - LODOVICA et DANIELA.|La Bonne Mère I,9 - LODOVICA et DANIELA.]] - [[II,13 - Giacomina Barbara Lunardo|La Bonne Mère II,13 - Giacomina et les mêmes.]] - [[II,14 - Lunardo et Giacomina|La Bonne Mère II,14 - Lunardo et Giacomina.]]^^
;► Italiennes
:Test sur les textes déjà sus par chacun
;► Concours de volubilité
:Sur ces deux extraits, tous successivement :
::# ''[[Justesse et vélocité : SOLO]]''
::# ''[[Justesse et vélocité : DIALOGUE]]''
<<<
Critères :
*Lecture permise
*Impératif : intelligibilité, entrain et justesse de ton suffisantes
*Concours : Pour les prestations non élimitées : vélocité italienne !
<<<
!!<center>Vendredi 11 décembre 14:30 • [[Jitsi|https://meet.jit.si/proyal]]</center>
!!!<center><$list filter="[[Prochaine séance]tags[]sort[title]] -[[tag(s)ToExclude]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
</center>
► Chacun dit un "//par coeur//", scène, fragment ou simple tirade :
* italienne de vélocité quand on apprend le texte,
* ou jeu avec sentiment dès qu'on le sait.
► Lecture des scènes avec Margarita si Nicole L est avec nous.
► Échantillonage de scènes (à convenir) :
* Filage initial et final
* Travail de fragments :
** Permutation de rôles
** Manèges
** Partis de jeu et indications de caractères/sentiments
► Besoins, souhaits et engagements pour la semaine prochaine.
---
!!!<center>Vendredi 12 février
<<alert danger "''Séance à Mouffetard supprimée''" width:60%>><<alert success "Rendez-vous sur __[[Jitsi]]__ à __14h30__" width:60%>></center>
<<<
* <small>Manèges avec une autre distribution</small>
* <small>Jeu par les titulaires.</small>
<<<
<br><big>Je propose :</big>
* Avec __//Odile //__: Essai de compositions pour un personnage de Giacomina "joyeux mais stratège" (fragments clés des scènes où elle est présente)
* Avec __//Évelyne//__: [[scène 1 de l'acte 3 de la Bonne Mère|La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
* Avec __//Chantal//__ et __//Michèle//__ : Travail d'un fragment de la [[scène 8 de l'acte 1 de la Bonne Mère|La Bonne Mère I,8 BARBARA puis AGNESE]]
* Pour __//Jacques//__: Italienne de la première moitié de "[[On passe dans 8 jours|On passe dans huit jours : l’Auteur et l’Actrice • Guitry]]", puis jeu par une autre distribution.
{{▼ Vendredi 17 avril - 14h30 ▼||prog}}
{{04h}}
{{Appel Duo à 14h29 . ||_hr}}
<<list-links filter:"[tag<currentTiddler>] +[sort[title]]">>
!!''<center><p style="color:red">VENDREDI 22 JANVIER 14:00 MOUFFETARD</p></center>''
,,''Pas d'essai de costumes aujourd'hui.<br>N'apportez (éventuellement) que les éléments d'accessoires qui vous aident.'',,
!!!''<center><p style="color:red">La fête à Gérard !</p></center>''
Aujourd'hui Yvonne ne pourra être avec nous, par contre (j'espère bien !) nous retrouvons Gérard !
Notre priorité sera de faire des filages (lus) de ses scènes pour dessiner et singulariser ses deux personnages :
* ''Lunardo'' :
** [[La Bonne Mère II,11 - Lunardo et les mêmes.]]
** [[La Bonne Mère II,12 - Barbara et Lunardo.]]
** [[La Bonne Mère II,14 - Lunardo et Giacomina.]]
** [[La Bonne Mère II,16 - Lunardo et Margarita.]]
** [[La Bonne Mère III,17 - Lodovica, Daniela puis Lunardo et les mêmes.]]
** [[La Bonne Mère III,2 - Barbara et les mêmes, puis Lunardo.]]
** [[La Bonne Mère III,3 - Lunardo Lodovica et Daniela]]
** [[La Bonne Mère III,4 - Lunardo et Daniela.]]
** [[La Bonne Mère III,6 - Lunardo et Lodovica.]]
* ''L'auteur/metteur en scène'' :
** [[On passe dans huit jours : l’Auteur et l’Actrice • Guitry]] avec Mireille.
!!!''<center><p style="color:red">Goldoni : Régaler les spectateurs !</p></center>''
Nous consacrerons le temps restant disponible à imaginer mouvements et interactions pour que les scènes soient le mieux possible un régal réjouissant pour les spectateurs.
* Je pense aujourd"hui à :
** [[La Bonne Mère I,9 - LODOVICA et DANIELA.]],
** et à la scène de groupe quand Nicoletto raconte son invraisemblable pérégrination dans tout Venise dans [[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
{{▼ Vendredi 24 avril - 14h30 ▼||prog}}
{{Italiennes en cours}}
{{manèges}}
{{Scènes en répétition}}
{{Appel Duo à 14h29. ||_hr}}
!!''<center><p style="color:red">VENDREDI 29 JANVIER 14:00 MOUFFETARD</p></center>''
,,''Pas d'essai de costumes aujourd'hui.<br>N'apportez (éventuellement) que les éléments d'accessoires qui vous aident.'',,
!!!''<center><p style="color:red">LA BONNE MÈRE</p></center>''
,,''Programme non limitatif !'',,
!!!! ''[[Scènes de l'acte I prêtes à être enregistrées|La Bonne Mère I,1 - BARBARA et GIACOMINA]]''
*Établir un conducteur de jeu (amorce de scriptboard)
!!!!Réglages des scènes de groupe :
* [[La traversée de Venise prétendue par Nicoletto|La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]]
* [[Le marchandage autour de ROCCO|La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
!!!''<center><p style="color:red">LE PETIT PRINCE</p></center>''
Recherche de mise en scène de [[LE PETIT PRINCE ET LE RENARD • Saint-Exupéry]]
.
!!!Vendredi 31 juillet 14/00 • Mouffetard
:→ Pas de climat' (Covid) mais ventilation (!)
::{{météo31-8.png}}
► Si vous choisissez de ne pas venir, pas de problème, mais prévenez-moi !
__Activités :__
* //Lapointe// en choeur [[Aragon et Castille - Boby Lapointe]] [[Méli-mélodie - Boby Lapointe]] [[TA KATIE T'A QUITTÉ]]
* Premier rôdage de photos pour storyboard de quelques unes de vos scènes
* Test d'un nouveau texte pour qui en proposerait
* Italiennes pour kikenveut
* Manèges : recherche d'interprétations variées ...
et toutes vos idées rafraichissantes pour les éléments de goûter que vous vous sentiriez l'obligation d'apporter !
!Vendredi 5 février 14h30 Mouffetard :
Cet après-midi travail sur La Bonne Mère :
* précédées d'impros-photos pour les scènes sues,
* suivies d'impros-photos pour les scènes lues.
<<<
* [[La Bonne Mère I,1 - BARBARA et GIACOMINA]]
* [[La Bonne Mère I,4 - Nicoletto et Margarita.]]
* [[La Bonne Mère II,6 - Barbara, Agnese, Giacomina, puis Rocco et le garçon de boutique qui porte les pièces de tissu.]]
* [[La Bonne Mère III,1 - Chez Lodovica. Lodovica, Daniela et Nicoletto.]]
<<<
En impro seulement pourrecherche mise en places :
<<<
* [[La Bonne Mère II,4 - Barbara, Agnese, puis Nicoletto.]] (l'incroyable tour de Venise)
<<<
... et autres ?
!!!!!Les VENDREDIS à 14h
!!Atelier ''THÉÂTRE'' à Mouffetard
^^C'est le seul atelier en Club dont nous disposons pour l'instant. Nous le consacrerons en priorité aux exercices que nous faisions auparavant le lundi à Port-Royal.^^
<<<
''▲ Tout le groupe n'a hélas pas accès à cet atelier'' ▲<br> → Seuls y ont accès ceux d'entre vous qui ne participent pas à une activité d'un Club autre que Mouffetard.<br> → En cas d'affluence, seuls les 10 premiers arrivants sont acceptés !
<<<
| !__Le travail du comédien__<br> → Diction<br> → Expression<br> → Impros<br> → Travail sur table<br> → Découverte de nouveaux textes |
!!► [[La vidéo|https://photos.app.goo.gl/7rHPEDzH1Ewbiskd8]]
//(il y a eu une coupure de smartphone entre le milieu de la scène I.8 et l'arrivée de Rocco à l'acte II)//
Repérez les passages où vous dites (ou lisez) des phrases de votre rôle, et posez-vous la question :
!!''Si c'était à redire :''
* Que ferais-je plus ?
* Que ferais-je moins ?
* Que ferais-je autrement ?
* Que devrais-je éviter de faire ?
```
En ligne jusqu'à lundi 9h00
```
Voiçi l'emplacement des séquences sur la __''[[vidéo|https://www.dropbox.com/s/u7s2ryq3f8n9e6k/proyal%20on%202020-06-23%2014-20.mp4?dl=0]]''__ :
| !0'00"|LBM I,6 - Barbara et Margarita. ,,Sa soeur l'aide. Pauvre petite,, |CHA NAD|
| !6'07"|,,//Deuxième tour//,,|~|
| !10'05"|LBM I,8 BARBARA puis AGNESE ,,Et Siora Giacomina ? Qu'est-ce qu'elle fait ? Elle va bien ?,, |CHA MIC|
| !19'| ,,//Dispositions pour vendredi//,, |~|
| !22'10"|,,//Deuxième tour//,,|~|
| !33'15"|LBM I,9 - LODOVICA et DANIELA.|MIR BRI|
| !43'05"|Extrait de Modigliani (JM Ribes)|EVE|
| !50'51"|Extrait du Défunt de Obaldia|BRI JAC |
| !1h 08'43"|Extrait Don Juan acte I sc3 : ELVIRE|ODI JAC|
| !1h 16'37"|//Commentaires avec Isaac// |~|
| !1h 29'|>| //Aux revoirs// |
!!! ''► [[L'album des vidéos de mardi 14/1/20|https://photos.app.goo.gl/7wyEvyLY7kjPL6Gh6]]''
!!!22 janvier
;Dernières vidéos :
* [[Lundi à Port-Royal|https://photos.google.com/album/AF1QipMq4EApTdXN5cIXhgODLP9tTzUjbWsrmSJ6lYOX/photo/AF1QipP6B2Yb1t5CkkOFFGbf4cNDTM-EvJK3Pi8Id0sx]]
* [[Garde à Vue mardi à Mouffetard|https://photos.google.com/album/AF1QipMq4EApTdXN5cIXhgODLP9tTzUjbWsrmSJ6lYOX/photo/AF1QipMimEJlq5eAjMjZVxtn-AVsu1x6OGkeq-nNgpBM]]
''-► [[Vidéos des Rentiers le 27 janvier|https://photos.google.com/share/AF1QipOeqTdX0xcQ6gyBCSb0_bCzrQcQqKAO29eCrbeaC09dvjiE3XwreYtt0Kgo6kXTqA?key=c0l1ZExhbkFOMWFtV24zV0o3dllxZWJJS1l0MWRR]]''
!!![[7 vidéos du mardi 26 mai|https://photos.google.com/album/AF1QipOdzpGXU1MhKb8THq0yRU1kh9B8uYjRC1NyMGaC]]
* [[lbm 1-4 Nadine Jacques|https://photos.app.goo.gl/wQrADJdoqVs1Ki869]]
* [[lbm 2.14 Brigitte Lee.mp4|https://photos.app.goo.gl/r7S3KHbpsqjgkgkw9]]
* [[lbm 2.14 Brigitte Lee 2ème|https://photos.app.goo.gl/m4rFzaTCxieWDQvt5]]
* [[Don Juan 1-3 Odile Isaac Jacques|https://photos.app.goo.gl/Y7gigSo5w6uCf3RRA]]
* [[Notre Futur extrait Livia Brigitte|https://photos.app.goo.gl/s8tutuV7qCqQ3e7P6]]
* [[lbm 1-10 Claudine Mireille Jacques|https://photos.app.goo.gl/2JWg4DtPcYFDbzcf8]]
* [[Le défunt Brigitte NicoleL|https://photos.app.goo.gl/iTx79bV85Vh6iFvA8]]
!1# Tu t’entêtes à tout tenter, tu t’uses et tu te tues à tant t’entêter. <br><br><br><br><br><br><br><br><br><br>
!2# Un pâtissier qui pâtissait chez un tapissier qui tapissait, demanda un jour au tapissier qui tapissait : vaut-il mieux pâtisser chez un tapissier qui tapisse ou tapisser chez un pâtissier qui pâtisse ? <br><br><br><br><br><br><br><br><br><br>
!3# Elle est partie avec tonton, ton Taine et ton thon. <br><br><br><br><br><br><br><br><br><br>
!4# As-tu été à Tahiti ?<br><br><br><br><br><br><br><br><br><br>
!#5 Un généreux déjeuner régénérerait des généraux dégénérés. <br><br><br><br><br><br><br><br><br><br>
!6# Un chasseur sachant chasser doit savoir chasser sans son chien. <br><br><br><br><br><br><br><br><br><br>
!7# As-tu vu le tutu de tulle de Lili d’Honolulu ? <br><br><br><br><br><br><br><br><br><br>
!8# Seize chaises sèchent. <br><br><br><br><br><br><br><br><br><br>
!9# L’Arabe Ali est mort au lit. Moralité : Maure Ali, t’es mort alité. <br><br><br><br><br><br><br><br><br><br>
!10# Ces Basques se passent ce casque et ce masque jusqu’à ce que ce masque et ce casque se cassent. <br><br><br><br><br><br><br><br><br><br>
!11# C’est pas beau mais tentant de tenter de tâter, de téter les tétons de tata quand tonton n’est pas là. <br><br><br><br><br><br><br><br><br><br>
!12# Douze douches douces. <br><br><br><br><br><br><br><br><br><br>
!13# Écartons ton carton car ton carton nous gêne. <br><br><br><br><br><br><br><br><br><br>
!14# La cavale aux Valaques avala l’eau du lac et l’eau du lac lava la cavale aux Valaques. <br><br><br><br><br><br><br><br><br><br>
!15# Fait faire à Fabien fourbe et fautif force farces fausses et fantasques. <br><br><br><br><br><br><br><br><br><br>
!16# Que c’est crevant de voir crever une crevette sur la cravate d’un homme crevé dans une crevasse. <br><br><br><br><br><br><br><br><br><br>
!17# Tata, ta tarte tatin tenta Tonton ; Tonton tâta ta tarte tatin, Tata. <br><br><br><br><br><br><br><br><br><br>
!18# Le cricri de la crique crie son cri cru et critique car il craint que l’escroc ne le croque et ne le craque. <br><br><br><br><br><br><br><br><br><br>
!19# Le mur murant Paris rend Paris murmurant. <br><br><br><br><br><br><br><br><br><br>
!20# Le poivre fait fièvre à la pauvre pieuvre. <br><br><br><br><br><br><br><br><br><br>
!21# Son chat chante sa chanson. <br><br><br><br><br><br><br><br><br><br>
!22# Un dragon gradé dégrade un gradé dragon.
<center>
<<card
title:"Notre corps parle"
text:"Dans une conversation, <br><br>__l'attitude du ''corps ''représente ''55 %'' du message, __<br><br>les ''mots ''seulement ''7 %'' <br>et ''l'intonation'', ''35%''.."
width:"28rem"
>> </center>
!!! WHAT IS BODY LANGUAGE?
!!!!!!//[[https://www.12manage.com/description_body_language.html]]//
Body language is an umbrella term for the major part of nonverbal communication in which physical behaviors, as opposed to words (verbal/linguistic communication), are used to express or convey a message or information. Typical body language categories are: facial expressions, body postures, gestures, eye movements, touch and the use of space. Body language is also called: "kinesics".
[img[Notre corps parle ! |https://www.12manage.com/images/picture_body_language.png]]
Unlike sign languages, body language does not have a grammar system nor is there an absolute meaning corresponding with a certain movement, so its meaning must be interpreted more broadly and it is insofar not a true formal "language". Interpretations of a particular behavior may vary according to the culture, country or region and time.
There is a controversy on whether body language is universal. Some of it is; a bigger part of it probably isn't. Body language certainly a subset of nonverbal communication and complements verbal communication in social interaction. In fact, nonverbal communication is believed to account for a large part of the information and emotions transmitted during interpersonal interactions, although it is more ambiguous.
!!! BREAKDOWN OF BODY LANGUAGE SUBCATEGORIES
Here is a comprehensive list of the existing subcategories of body language. Note that most of these can be used consciously (see: [[Impression Management|https://www.12manage.com/description_goffman_impression_management.html]]) and inconsciously and voluntary and involuntary.
*Facial expressions (combinations of eyes, eyebrow, lips, nose and cheek movements)
*Head and neck signals (nodding, shaking, lowering, raising, tilting of the head)
*Body postures (sitting, standing, posture and movement of chest/shoulders)
*Gestures (movements made with hands, arms, fingers, head, legs)
*Handshakes (typically a greeting ritual)
*Breathing (deeper and slow versus shallower and more rapid)
*Oculesics (eye movement, eye behavior and gaze)
*Haptics (touching, handshakes, holding hands, back slapping, high fives, brushing up against someone, patting someone)
*Proxemics (spatial distances or zones between people as they interact: Edward T. Hall's famous 4 interpersonal zones: Intimate (< 46cm), Personal (46cm - 1,2m), Social (1.2m - 3,7m), Public (> 3,7m))
*Tone of voice (high/low, loud/soft, friendly/angry)
*Attitude (like/dislike, rapport with another person, formal/informal, [[mirroring and matching|https://www.12manage.com/description_mirroring_and_matching.html]])
*Readiness (readiness to take action, agressiveness, physical or social readiness)
@@background-color:pink;
Salut, mon titre est {{!!title}}
@@