/*\ title: $:/.tb/modules/startup/hide-sidebar.js type: application/javascript module-type: startup created: 20151010151732122 creator: Tobias Beer modified: 20151010151750739 Hides the sidebar on startup when the config tiddler [[$:/config/hide-sidebar-on-startup]] contains "yes" \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; // Export name and synchronous status exports.name = "hide-sidebar-on-startup"; exports.platforms = ["browser"]; exports.after = ["startup"]; exports.synchronous = true; exports.startup = function() { var conf = $tw.wiki.getTiddler("$:/config/HideSidebarOnStartup"), value = (conf ? conf.getFieldString("text") : "").toLowerCase(), state = value == "yes" ? "no" : "yes"; $tw.wiki.setText("$:/state/sidebar", "text", undefined, state); }; })();
250
yes
yes
[is[tiddler]!is[tiddler]]
hide
show
hide
show
disable
{ "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-2020, 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\"><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\"><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\"><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/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/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/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/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/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* ''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/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>> being older 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/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/IsFilterOperator": { "title": "$:/language/Error/IsFilterOperator", "text": "Filter Error: Unknown operand for the 'is' 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/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/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/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", "tags": "Journal" }, "$:/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": "References" }, "$:/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 = $tw.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 = fs.readdirSync(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 = fs.readdirSync(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> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\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 = !!$tw.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.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\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\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]);\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\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\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.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\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 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\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\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.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\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\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\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\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 || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\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/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 = [],\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\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\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 = types[type] || types.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 types = {\n\t\"number\": function(a,b) {\n\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t},\n\t\"integer\": function(a,b) {\n\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t},\n\t\"string\": function(a,b) {\n\t\treturn compare(\"\" + a,\"\" +b);\n\t},\n\t\"date\": function(a,b) {\n\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\tdateB = $tw.utils.parseDate(b);\n\t\tif(!isFinite(dateA)) {\n\t\t\tdateA = new Date(0);\n\t\t}\n\t\tif(!isFinite(dateB)) {\n\t\t\tdateB = new Date(0);\n\t\t}\n\t\treturn compare(dateA,dateB);\n\t},\n\t\"version\": function(a,b) {\n\t\treturn $tw.utils.compareVersions(a,b);\n\t}\n};\n\nfunction compare(a,b) {\n\tif(a > b) {\n\t\treturn +1;\n\t} else if(a < b) {\n\t\treturn -1;\n\t} else {\n\t\treturn 0;\n\t}\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/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\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\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\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(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/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));\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));\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/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($tw.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($tw.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] === \"\")) {\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] === \"\" || 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/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 = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\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) || options.wiki.getTiddlerText(operator.operand + 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.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/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/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/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 = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\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 || \"\"));\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\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\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 /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1),\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,prepend.length);\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\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\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\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 = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\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++;\n\t\t\t}\n\t\t\tif(match[2]) { // 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[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\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.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 operand = operator.operand,\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\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\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: operand,\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\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\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 function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\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 function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\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 = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\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() {\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\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// 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.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;\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 = startPos + 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 = startPos + 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\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\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\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\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\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\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 keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\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(!keepFilter(ruleArray[t].rule.name)) {\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\" && 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\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\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/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\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !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\") || \"master\",\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};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !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 || !path || !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/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\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\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($tw.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\");\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($tw.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\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/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($tw.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif($tw.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers/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\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.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.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($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.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\tvar pathprefix = this.get(\"path-prefix\") || \"\";\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(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(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) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\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(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.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\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\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// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\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\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\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\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\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\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}\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/PageTemplate\";\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});\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};\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// 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\tvar modules,n,m,f;\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\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\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\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\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.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)\nvar 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\twindows[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 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\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\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(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.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\t\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() {\n\t\t\tself.handleLoginEvent();\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 && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\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;\t\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.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\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($tw.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) {\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}\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\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\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\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\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\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\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\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\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\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);\t\t\t\t\t\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();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\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 || $tw.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); \t\t\t\t\t\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} 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\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 = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.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] = requiresReload + $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++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(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;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);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,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(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,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));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.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = 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\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 && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"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\");\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({currentTiddler: title},options.variables);\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\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: $tw.rootWidget,\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: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\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: $tw.rootWidget,\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\treturn this.scrollIntoView(event.target);\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\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_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\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\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 1;\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/*\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 = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\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 (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\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\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\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}\n\t// Take the file extension from the tiddler content type\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: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\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*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\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\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\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// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\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// 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,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(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})();\n", "type": "application/javascript", "module-type": "utils-node" }, "$:/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/*\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\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.getYearForWeekNo(date);\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 date.getFullYear();\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();\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) {\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\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(/[\\x00-\\x1f\\x80-\\uFFFF]/g, 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) {\n\t// See http://www.json.org/\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(/[\\x00-\\x1f\\x80-\\uFFFF]/g,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\n})();\n", "type": "application/javascript", "module-type": "utils" }, "$:/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-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}\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\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.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// 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 = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\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}\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\tself.invokeActionString(self.actions,self,event);\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[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\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\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*/\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[\"class\"] || 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) {\n\t\tthis.refreshSelf();\n\t\treturn true;\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\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\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\"]) {\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// 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.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\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}\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\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\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 = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\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.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\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*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\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)});\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)});\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])});\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\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) {\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\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\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// 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\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: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder},\n\t\t\t\"tabindex\": {type: \"string\", value: this.editTabIndex},\n\t\t\t\"focus\": {type: \"string\", value: this.editFocus}\n\t\t},\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 || (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\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(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\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,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/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\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.parseTreeNode.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// 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*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\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.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/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\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};\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.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// 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.makeChildWidgets([node]);\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\tself.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\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\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 domNode = this.document.createElement(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\tdomNode.setAttribute(\"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});\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\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\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.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\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\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// 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\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\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 emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\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})();", "type": "application/javascript", "module-type": "widget" }, "$:/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\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = 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 {\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\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};\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.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\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.wiki.addToStory(title,fromTitle,this.storyTitle,{\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.wiki.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\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);\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)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\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 importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\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}\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\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"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(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\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\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.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 paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\tthis.wiki.renameTiddler(from,to);\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;\n\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\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};\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\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(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\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\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\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 || \"text\",\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.handleInputEvent = 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// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\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\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(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\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;\t\t\t\t\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\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\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 \"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\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\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\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\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\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}\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\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};\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\tthis.scrollIntoView(event.target);\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\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(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.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 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\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\tthis.setVariable(\"transclusion\",recursionMarker);\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// Call the constructor\n\tWidget.call(this);\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\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\tvalue = variable.value,\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};\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\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\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(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 if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\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.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\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\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 $tw.wiki.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\", type: type};\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\t\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);\t\t\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\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/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/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-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\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>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<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: #7c6f64\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\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: <<colour button-background>>\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>>" }, "$:/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-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\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>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<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: #2e3440\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\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/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: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\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: #839496\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\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": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n" }, "$:/core/templates/exporters/JsonFile": { "title": "$:/core/templates/exporters/JsonFile", "tags": "$:/tags/Exporter", "description": "{{$:/language/Exporters/JsonFile}}", "extension": ".json", "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\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\">\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", "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/]] -[[$:/HistoryList]] -[[$:/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$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\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/]] -[[$:/HistoryList]] -[[$:/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[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<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/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</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\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\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\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<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags!!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": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/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=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> 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": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags!!tags}}/>\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<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\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}} template=\"$:/core/ui/ListItemTemplate\"/>\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<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\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 to=\"$:/temp/advancedsearch\">\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}}", "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\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]]\"/>\"\"\">\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]]\" template=\"$:/core/ui/ListItemTemplate\"/>\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<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\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<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\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}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n" }, "$:/core/ui/AdvancedSearch/System": { "title": "$:/core/ui/AdvancedSearch/System", "tags": "$:/tags/AdvancedSearch", "caption": "{{$:/language/Search/System/Caption}}", "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\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]]\"/>\"\"\">\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]]\" template=\"$:/core/ui/ListItemTemplate\"/>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\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=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\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> |<$list filter=\"[[$:/config/NewTiddler/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewJournal/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\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[title]]\" 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[title]]\" 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[title]]\" 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<$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\\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[title]]\" 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[title]]\" 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<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\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=\"master\" 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 backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\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<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\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>>" }, "$:/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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n" }, "$:/ControlPanel": { "title": "$:/ControlPanel", "icon": "$:/core/images/options-button", "color": "#bbb", "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n" }, "$:/core/ui/DefaultSearchResultList": { "title": "$:/core/ui/DefaultSearchResultList", "tags": "$:/tags/SearchResults", "caption": "{{$:/language/Search/DefaultResults/Caption}}", "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\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\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}}></$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 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 $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\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 $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\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=\"tc-edit-fields\">\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<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\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=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\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<$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={{{ [<newFieldNameTiddler>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<$link to=<<currentField>>>\n<$text text=<<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<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\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}}/>\n</$keyboard>\n</$set>\n</span> \n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\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)\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 message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$set name=\"tabIndex\" value={{$:/config/EditTabIndex}}>\n<$macrocall $name=\"tag-picker\"/>\n</$set>\n</$fieldmangler>\n</div>\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}}/>\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", "text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text 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]] }}}/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" 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}}</$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<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n" }, "$:/core/ui/EditTemplate": { "title": "$:/core/ui/EditTemplate", "text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-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\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\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": "<$button message=\"tm-cancel-tiddler\" 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>" }, "$:/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": "<$button message=\"tm-delete-tiddler\" 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>" }, "$:/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<$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]]", "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/]] +[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]]", "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown", "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>" }, "$:/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 $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\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 body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>" }, "$:/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]]", "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]]", "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]]", "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]]", "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/]] +[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()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\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>\n<tbody>\n<tr>\n<th>\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>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<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\"\"\"/>\n</$navigator>\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/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/KeyboardShortcut/toggle-sidebar": { "title": "$:/core/ui/KeyboardShortcut/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" }, "$:/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": "\\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<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\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<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\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 control-panel-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=<<control-panel-button>>>\n<<control-panel-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", "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<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/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</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\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>>/></$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>>/></$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=<<lingo Delete/Hint>> aria-label=<<lingo 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\"> <<lingo Names/External/Show>></$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/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}}/>\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\" />\n</div>" }, "$:/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\">{{$:/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<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" 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=\"$:/temp/search\" 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<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\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\"/>\n\n</div>\n" }, "$:/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/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<$transclude tiddler=<<listItem>>/>\n\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}}/>" }, "$:/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\">{{$:/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\">{{$:/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": "<$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" }, "$:/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<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\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\\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!!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!!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/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.22/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": "no" }, "$:/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[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]" }, "$:/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/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/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/italic": { "title": "$:/config/ShortcutInfo/italic", "text": "{{$:/language/Buttons/Italic/Hint}}" }, "$:/config/ShortcutInfo/link": { "title": "$:/config/ShortcutInfo/link", "text": "{{$:/language/Buttons/Link/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/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/underline": { "title": "$:/config/ShortcutInfo/underline", "text": "{{$:/language/Buttons/Underline/Hint}}" }, "$:/config/SyncFilter": { "title": "$:/config/SyncFilter", "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]" }, "$:/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/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-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/cancel-edit-tiddler": { "title": "$:/config/shortcuts/cancel-edit-tiddler", "text": "escape" }, "$:/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/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/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 swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$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>" }, "$:/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<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\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</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/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</$type$>\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 \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\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)\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=<<qualify \"$state$\">> 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></$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=<<qualify \"$state$\">> 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\\end\n" }, "$:/core/macros/tag-picker": { "title": "$:/core/macros/tag-picker", "tags": "$:/tags/Macro", "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker-inner()\n\\whitespace trim\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=<<newTagNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<add-tag-actions>>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\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\">\n<$set name=\"newTagName\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n\\end\n\\define tag-picker()\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=<<tag-picker-inner>>>\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<<tag-picker-inner>>\n</$set>\n</$list>\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><$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>\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>\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}} --- {{$:/SiteSubtitle}}" }, "$:/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 list-links(filter,type:"ul",subtype:"li",class:"",emptyMessage) \whitespace trim <$type$ class="$class$"> <$list filter="$filter$" emptyMessage=<<__emptyMessage__>>> <$subtype$> <$link to={{!!title}}> <$transclude field="caption"> <$view field="title"/> </$transclude> </$link> </$subtype$> </$list> </$type$> \end \define list-links-draggable-drop-actions() <$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/> \end \define list-links-draggable(tiddler,field:"list",type:"ul",subtype:"li",class:"",itemTemplate) \whitespace trim <span class="tc-links-draggable-list"> <$vars targetTiddler="""$tiddler$""" targetField="""$field$"""> <$type$ class="$class$"> <$list filter="[list[$tiddler$!!$field$]]"> <$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>> <div class="tc-droppable-placeholder"/> <div> <$transclude tiddler="""$itemTemplate$"""> <$link to={{!!title}}> <$transclude field="caption"> <$view field="title"/> </$transclude> </$link> </$transclude> </div> </$droppable> </$list> </$type$> <$tiddler tiddler=""> <$droppable actions=<<list-links-draggable-drop-actions>> tag="div" enable=<<tv-enable-drag-and-drop>>> <div class="tc-droppable-placeholder"> </div> <div style="height:0.5em;"/> </$droppable> </$tiddler> </$vars> </span> \end \define list-tagged-draggable-drop-actions(tag) <!-- Save the current ordering of the tiddlers with this tag --> <$set name="order" filter="[<__tag__>tagging[]]"> <!-- Remove any list-after or list-before fields from the tiddlers with this tag --> <$list filter="[<__tag__>tagging[]]"> <$action-deletefield $field="list-before"/> <$action-deletefield $field="list-after"/> </$list> <!-- Save the new order to the Tag Tiddler --> <$action-listops $tiddler=<<__tag__>> $field="list" $filter="+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]"/> <!-- Make sure the newly added item has the right tag --> <!-- Removing this line makes dragging tags within the dropdown work as intended --> <!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>--> <!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag --> <$list filter="[<actionTiddler>!contains:tags<__tag__>]"> <$fieldmangler tiddler=<<actionTiddler>>> <$action-sendmessage $message="tm-add-tag" $param=<<__tag__>>/> </$fieldmangler> </$list> </$set> \end \define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"") \whitespace trim <span class="tc-tagged-draggable-list"> <$set name="tag" value=<<__tag__>>> <$list filter="[<__tag__>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>> <$elementTag$ class="tc-menu-list-item"> <$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>> <$elementTag$ class="tc-droppable-placeholder"/> <$elementTag$> <$transclude tiddler="""$itemTemplate$"""> <$link to={{!!title}}> <$view field="title"/><$list filter="[all[current]has[caption]]"> ({{!!caption}})</$list> </$link> </$transclude> </$elementTag$> </$droppable> </$elementTag$> </$list> <$tiddler tiddler=""> <$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>> <$elementTag$ class="tc-droppable-placeholder"/> <$elementTag$ style="height:0.5em;"> </$elementTag$> </$droppable> </$tiddler> </$set> </span> \end
<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>> <$wikify name="site-title" text={{$:/config/SaveWikiButton/Filename}}> <$action-setfield $tiddler="Velg stadium" loadonstartup="TRUE" /> <$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/> </$wikify> <span class="tc-dirty-indicator"> <$list filter="[<tv-config-toolbar-icons>match[yes]]"> {{$:/core/images/save-button}} </$list> <$list filter="[<tv-config-toolbar-text>match[yes]]"> <span class="tc-btn-text"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span> </$list> </span> </$button>
\whitespace trim <span class="tc-tag-list-item"> <$set name="transclusion" value=<<currentTag>>> <$macrocall $name="tag-pill-body" tag=<<currentTag>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[<currentTag>]tagging[]]' tag='span'"""/> <$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> <$set name="tv-show-missing-links" value="yes"> <$tiddler tiddler=<<currentTag>> > <$transclude tiddler="$:/core/ui/ListItemTemplate"/> </$tiddler> </$set> <$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem"> <$tiddler tiddler=<<currentTag>> > <$transclude tiddler=<<listItem>>/> </$tiddler> </$list> <hr> <$macrocall $name="list-tagged-draggable" tag=<<currentTag>> subFilter="stage{Hjem!!stage}" /> </$reveal> </$set> </span>
\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>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes"> <div class="tc-tags-wrapper"><$list filter="[all[current]tags[]sort[title]]" variable="currentTag" template="$:/core/ui/TagTemplate2" storyview="pop"/></div> </$reveal>
[has[loadonstartup]sort[homeorder]]
\define imgLink(imgsrc:"NaN" size:320) <center> <$link to="$imgsrc$">[img width=$size$ [images/$imgsrc$]]</$link> </center> \end
\define imgTiddler() [img[images/$(currentTiddler)$]]
The following tiddlers were imported: # [[IIC-2022k-1F.png]]
yes
no
@@.noprint <$list filter="[all[current]has[exercise]]" variable="cTiddler"> <$set name="qNumber" value={{!!question}}> <hr/> <div> <div style="float:right"> <$set name="nQuestion" filter="[<qNumber>add[1]]" > <$list filter="[stage{!!stage}year{!!year}exercise{!!exercise}question<nQuestion>]"> <$link>Neste >></$link> </$list> </$set> </div> <div style="float:left"> <$set name="pQuestion" filter="[<qNumber>subtract[1]]" > <$list filter="[stage{!!stage}year{!!year}exercise{!!exercise}question<pQuestion>]"> <$button to=<<currentTiddler>> class="tc-btn-invisible tc-tiddlylink"> <$action-listops $tiddler="$:/StoryList" $field="list" $filter="[enlist{$:/StoryList!!list}] [<currentTiddler>] +[putbefore<cTiddler>]" /> << Forrige </$button> </$list> </$set> </div> </div> </$set> </$list> @@
<$list filter="[all[current]tag[Fagfelt]]"> <$list filter="[stage{Hjem!!stage}tag<currentTiddler>]"> !!! <$link /> {{!!text}} <hr /> </$list> </$list>
<$button class="tc-btn-invisible"> <$list filter='[all[tiddlers]has[exercise]]'> <$action-setfield showanswer="closed" /> <$action-setfield showpoints="closed" /> </$list> {{$:/core/images/fold-button}} </$button>
<div style = "display: none;" class = "myfooter"><small>http://ununderstandable.com/ - AHJ 2020 - <<now "DDth mmm YYYY 0hh:0mm:0ss">></small></div>
@media print { @page { size: A4; margin: 2cm; } .tc-sidebar-scrollable, .tc-topbar, .tc-tiddler-controls{ display: none !important; } .tc-titlebar, .tc-tiddler-title{ position: static; top: 0mm; } .noprint{ display: none; } h2.tc-title{ font-size: xx-large !important; } .tc-story-river{ display: block; margin-top: 0mm; } .tc-tiddler-frame{ background-color: white; display: block; } .tc-tiddler-body{ page-break-after: always; page-break-within: avoid; } .utstyr, .dørtekst, .sensorveiledning, .spørsmål, .pasientinfo{ page-break-inside: avoid; } }
<div style="padding-top: 10px;"> Velg: <$select tiddler='Hjem' field="stage"> <option value='IAB'>Stadium IAB</option> <option value='ICD'>Stadium ICD</option> <option value='IIAB'>Stadium IIAB</option> <option value='IIC'>Stadium IIC</option> <option value='IIIC'>Stadium IIIC</option> <option value='IIID'>Stadium IIID</option> </$select> </div>
summary{ font-weight: bold; } details.points{ background-color: #B23CFD09; border: solid 1px #B23CFDFF; border-left: solid 5px #B23CFDFF; } details, .oppgave{ line-height: 18px; padding: 12px; margin-bottom: 20px; } div.oppgave{ background-color: #39C0ED09; border: solid 1px #39C0EDFF; border-left: solid 5px #39C0EDFF; } details.answer{ background-color: #00B74A09; border: solid 1px #00B74AFF; border-left: solid 5px #00B74AFF; } .tc-drop-down{ overflow-x: visible; z-index: 500; min-width: 720px !important; } .blokk h3{ font-weight: 600; } .tc-tiddler-frame{ overflow: auto; } .editlink{ float: right; margin: 0px; fill: #c6c6c6; width: 22px; } blockquote{ border-left: 5px solid #707070 !important; } div.utstyr{ background-color: #FFA90009; border: solid 1px #FFA900FF; border-left: solid 5px #FFA900FF; line-height: 18px; padding: 12px; margin-bottom: 20px; } div.spørsmål{ background-color: #B23CFD09; border: solid 1px #B23CFDFF; border-left: solid 5px #B23CFDFF; line-height: 18px; padding: 12px; margin-bottom: 20px; } div.sensorveiledning{ background-color: #F9315409; border: solid 1px #F93154FF; border-left: solid 5px #F93154FF; line-height: 18px; padding: 12px; margin-bottom: 20px; }
<$button class="tc-btn-invisible"> <$list filter='[all[tiddlers]has[exercise]]'> <$action-setfield showanswer="open" /> <$action-setfield showpoints="open" /> </$list> {{$:/core/images/unfold-button}} </$button>
$:/themes/jd/Mono/Palette/SpartanDay
{ "tiddlers": { "$:/plugins/felixhayashi/respawn/respawn.js": { "text": "/*\\\n\ntitle: $:/plugins/felixhayashi/respawn/respawn.js\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n\n(function(){\n \n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n \n var configTRef = \"$:/plugins/felixhayashi/respawn/config\";\n \n var changeListener = function(changedTiddlers) {\n \n if(!changedTiddlers[\"$:/StoryList\"]) return;\n \n var tObj = $tw.wiki.getTiddler(\"$:/StoryList\");\n if(tObj && !tObj.fields[\"list\"].length) {\n \n var confTObj = $tw.wiki.getTiddler(configTRef);\n var config = confTObj ? confTObj.fields : {};\n \n window.setTimeout(function() {\n $tw.rootWidget.dispatchEvent({\n type: \"tm-home\"\n });\n }, parseInt(config.delay) || 500);\n }\n \n };\n \n exports.name = \"respawn\";\n exports.platforms = [\"browser\"];\n exports.after = [\"story\"];\n exports.synchronous = true;\n \n exports.startup = function() {\n \n $tw.wiki.addEventListener(\"change\", changeListener);\n \n };\n\n})();\n", "title": "$:/plugins/felixhayashi/respawn/respawn.js", "type": "application/javascript", "module-type": "startup" }, "$:/plugins/felixhayashi/respawn/Configuration": { "title": "$:/plugins/felixhayashi/respawn/Configuration", "text": "<!-- The config output is not written to this tiddler! -->\n\nPlease see the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information on the options.\n\nYou may have to save and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Delay (seconds):</th>\n <td>\n <$edit-text\n tiddler=\"$:/plugins/felixhayashi/respawn/config\"\n field=\"delay\"\n tag=\"input\"\n default=\"500\" />\n </td>\n </tr>\n</table>" }, "$:/plugins/felixhayashi/respawn/License": { "title": "$:/plugins/felixhayashi/respawn/License", "text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-Respawn/blob/master/LICENSE" }, "$:/plugins/felixhayashi/respawn/Readme": { "title": "$:/plugins/felixhayashi/respawn/Readme", "text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information." } } }
{ "tiddlers": { "$:/plugins/telmiger/details/details.css": { "text": "/* details and summary */\n\ndetails {\n transition: height 1s ease;\n padding: 0 0.5em 0 0.66em;\n margin-top: 0.66em;\n margin-bottom: 0.66em;\n}\n\ndetails + details {\n margin-top: -0.46em;\n}\n\ndetails[open] {\n padding-bottom: 1em;\n}\n\ndetails:not([open]) { \n cursor: pointer;\n}\n\ndetails > summary {\n display: list-item;\n margin: 0 -0.5em 0 -0.66em;\n padding: 0.2em 0.5em 0.2em 0.66em;\n padding-left: 1.76em; /* adjust for indentation */\n text-indent: -1.1em;\n cursor: pointer;\n}\n\ndetails[open] > summary {\n margin-bottom: 1em;\n}\n\ndetails[open] > *:first-child:not(summary) {\n margin-top: 1em;\n}\n", "title": "$:/plugins/telmiger/details/details.css", "tags": "$:/tags/Stylesheet", "modifier": "Thomas Elmiger", "modified": "20180929131615369", "creator": "Thomas Elmiger", "created": "20170122140815442" }, "$:/plugins/telmiger/details/details.js": { "text": "/*\\\ntitle: $:/plugins/telmiger/details/details.js\ntype: application/javascript\nmodule-type: widget\n\nDetails widget v 0.8\n\nWill output an HTML 5 <details> section including a <summary>\n\n```\n\t<details>\n\t\t<summary>This sums it up</summary> \n\t\tAll the details follow here.\n\t</details>\n```\n\n|Parameter |Description |h\n|summary |Optional text to display as summary. Wins over field (see below). |\n|open |Optional initial state, set to \"open\" to show details on load. Defaults to \"\". |\n|state |An optional TextReference containing the state. Wins over open. |\n|field |Optionally, the summary is taken from the field with this name in a given tiddler. Defaults to \"title\". |\n|tiddler |Optional title of a tiddler to watch, connected to field. Defaults to current tiddler. |\n|class |Optional CSS classes to be assigned to the details tag. |\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 DetailsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDetailsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDetailsWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute attributes\n\tthis.computeAttributes();\n\t// Execute logic\n\tthis.execute();\n\t// Create elements\n\tthis.detailsDomNode = this.document.createElement(\"details\");\n\tif(this.detailsClass !== \"\") {\n\t\t// this.detailsClass += \" \";\n\t\t// this.detailsClass += \"tc-details\";\n\t\tthis.detailsDomNode.setAttribute(\"class\",this.detailsClass);\n\t}\n\tif(this.detailsOpen == \"open\") {\n\t\tthis.detailsDomNode.setAttribute(\"open\",\"open\");\n\t}\n\tif(this.detailsSummary !== \"\") {\n\t\tthis.summaryDomNode = this.document.createElement(\"summary\");\n\t\t// this.summaryDomNode.setAttribute(\"class\",\"tc-summary\");\n\t\tthis.detailsDomNode.appendChild(this.summaryDomNode);\n\t\tthis.summaryDomNode.appendChild(this.document.createTextNode(this.detailsSummary));\n\t}\n// register an event listener\n/* Maybe this can be reactivated later, see below.\n\tif(this.detailsStateTitle) {\n\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t{name: \"toggle\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t}\n*/\n// As iOS mobile browsers lack support of toggle events on details \n// we emulate the toggle event using click\n\tif(this.detailsStateTitle && this.summaryDomNode) {\n\t\t$tw.utils.addEventListeners(this.summaryDomNode,[\n\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t} else {\n\t\tif(this.detailsStateTitle) {\n\t\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t\t]);\n\t\t}\n\t}\n\t// Insert the details into the DOM and render any children\n\tthis.parentDomNode.insertBefore(this.detailsDomNode,nextSibling);\n\tthis.renderChildren(this.detailsDomNode,null);\n\tthis.domNodes.push(this.detailsDomNode);\n};\n\n/*\nRetrieve the value of the summary\n*/\nDetailsWidget.prototype.getSummary = function() {\n\tvar summary = \"\";\n\tif(this.summaryTitle === \"Tiddler not found\" && this.summaryField === \"\") {\n\t// nothing defined: leave empty \n\t\tsummary = \"\";\n\t} else {\n\t\t// tiddler defined? use defined field or title\n\t\tif(this.myTiddler) {\n\t\t\tif(this.summaryField === \"title\" || this.summaryField === \"\") {\n\t\t\t\tsummary = this.summaryTitle;\n\t\t\t} else {\n\t\t\t\tif(this.summaryField === \"text\") {\n \t\t// getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\t\tsummary = this.wiki.getTiddlerText(this.summaryTitle);\n\t\t\t\t} else {\n\t\t\t\t\tsummary = this.myTiddler.fields[this.summaryField];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.summaryField !== \"\" && this.summaryField !== \"text\") {\n\t\t\t\t// try defined field in current tiddler\n\t\t\t\tvar tiddler = this.wiki.getTiddler(this.getVariable(\"currentTiddler\"));\n\t\t\t\tsummary = tiddler.fields[this.summaryField];\n\t\t\t} else {\n\t\t\t\tsummary = \"\";\n\t\t\t}\n\t\t}\n\t}\n return summary;\n};\n\n/*\nRetrieve the value of the state text reference\n*/\nDetailsWidget.prototype.getStateFromReference = function() {\n var state = this.detailsStateTitle ? this.wiki.getTextReference(this.detailsStateTitle,\"\",this.getVariable(\"currentTiddler\")) : \"\";\n return state;\n};\n\n/*\nCheck all open signals, state fields/tiddlers get priority\n*/\nDetailsWidget.prototype.getOpenState = function() {\n\tvar result = \"\";\n\tif((this.detailsOpenDefault !== \"\" && this.detailsOpenDefault !== \"no\") \n\t || this.detailsState === \"open\") {\n\t\tresult = \"open\";\n\t } \n\tif(this.detailsStateTitle !==\"\" && this.detailsState !== \"open\") {\n\t\tresult = \"\";\n\t}\n\treturn result;\n};\n\n/*\nUpdate the state text reference after click event\n*/\nDetailsWidget.prototype.updateState = function(openState) {\n\tvar fieldValue = \"false\";\n\tvar currentTiddler = this.getVariable(\"currentTiddler\");\n // get the title for the (existing/new) tiddler\n\tvar tr = $tw.utils.parseTextReference(this.detailsStateTitle);\n\tvar tidTitle = tr.title || currentTiddler;\n // is it an existing state tiddler?\n\tvar isStateTiddler = (tr.title === this.detailsStateTitle);\n\tvar hasStateTiddler = this.wiki.tiddlerExists(tr.title);\n\tvar currentStateTiddler = (tr.title === currentTiddler);\n\tif(isStateTiddler || hasStateTiddler || (currentStateTiddler && tr.field !== \"text\")) { \n\t\t// Set the state field (but never overwrite the current tiddler’s text field\n\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t} else {\n\t\tif(!hasStateTiddler && tidTitle !== currentTiddler) {\n\t\t\tthis.createTiddler(tidTitle);\n\t\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t\t} else {\n\t\t\tconsole.log (\"Something went wrong in updateState\");\n\t\t}\n\t}\n};\n\n/*\nCreate a tiddler with a title only\n*/\nDetailsWidget.prototype.createTiddler = function(tidTitle) {\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: tidTitle,\n\t\t\ttags: []\n\t\t}\n\t));\n};\n\n/*\nSet openState according to click\n*/\nDetailsWidget.prototype.handleToggleEvent = function(event) {\n\t// check if an open attribute is present\n\tvar newState = this.detailsDomNode.open ? \"\" : \"open\";\n\t// update only, if the node has a new state\n\tif(newState !== this.detailsState) {\n\t\tthis.updateState(newState);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDetailsWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes \n\tvar tryTiddler = this.getAttribute(\"tiddler\");\n\tthis.myTiddler = this.wiki.getTiddler(tryTiddler);\n\tthis.summaryTitle = this.myTiddler ? tryTiddler : \"Tiddler not found\";\n\tthis.summaryField = this.getAttribute(\"field\",\"\");\n\tthis.detailsSummary = this.getAttribute(\"summary\") || this.getSummary();\n\tthis.detailsStateTitle = this.getAttribute(\"state\",\"\");\n\tthis.detailsState = this.getStateFromReference();\n\tthis.detailsOpenDefault = this.getAttribute(\"open\",\"\");\n\tthis.detailsOpen = this.getOpenState();\n\tthis.detailsClass = this.getAttribute(\"class\",\"\");\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*/\nDetailsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.summary || changedAttributes.state || changedAttributes.open || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tvar testState = this.getStateFromReference();\n\t\tif(testState !== this.detailsState) {\n\t\t\t// state change\n\t\t\tthis.refreshSelf();\n\t\t\trefreshed = true;\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.details = DetailsWidget;\n\n})();", "type": "application/javascript", "title": "$:/plugins/telmiger/details/details.js", "tags": "Plugins", "module-type": "widget", "modifier": "Thomas Elmiger", "modified": "20180929212032187", "creator": "Thomas Elmiger", "created": "20170124173619910" }, "$:/plugins/telmiger/details/icon": { "created": "20170205205314072", "text": "<svg class=\"tc-image-button telmiger-icon\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" viewBox=\"0 0 128 128\" role=\"img\" aria-labelledby=\"title\"><title id=\"title\">T</title><path class=\"circle\" d=\"M64 2C30 2 2 29.753 2 64c0 34.235 27.753 62 62 62s62-27.752 62-62C126 29.753 98.221 2 64 2z\"/><path class=\"t\" d=\"M100.41 63.254c-2.886 1.92-7.544 2.883-13.979 2.883h-8.008c-4.246 0-7.331.845-9.254 2.536-1.922 1.69-3.449 5.086-4.576 10.19 0 0-.181 1.481-.503 1.481s-.369-.877-.518-1.586a37.897 37.897 0 0 0-.721-2.754c-.631-2.137-1.262-3.753-1.894-4.847-.764-1.359-1.727-2.452-2.889-3.28-1.162-.83-2.49-1.326-3.985-1.492l-2.092-.248H41.73c-6.144 0-10.711-.962-13.7-2.884-4.976-3.159-7.649-9.129-8.02-17.91-.03-.706.003-1.351.132-2.171h.585c.399 3.975 3.679 7.048 6.086 9.219 2.408 2.172 6.269 3.258 11.581 3.258h9.313c5.347 0 9.257 1.226 11.731 3.68 2.231 2.213 3.701 5.68 4.406 10.4.076.511.03.736.178.736.149 0 .11-.256.17-.783.713-6.122 3.085-10.219 7.117-12.294 2.487-1.292 6.434-1.906 11.841-1.839l6.368.1c4.311.066 7.942-.788 10.893-2.56 2.953-1.773 6.447-5.079 6.844-9.917h.595c.183.478.16 1.576.127 2.333-.371 8.752-2.894 14.668-7.567 17.749z\"/></svg>\n<style>\n.telmiger-icon .circle { fill: #e2001a }\n.telmiger-icon .t { fill: #fff }\n</style>", "title": "$:/plugins/telmiger/details/icon", "tags": "", "modified": "20171219183752113" }, "$:/plugins/telmiger/details/license": { "text": "!! Plugin license\n!!!The MIT License (MIT)\n\n```\nCopyright © 2017/2018 Thomas Elmiger – thomas-elmiger.ch\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```", "title": "$:/plugins/telmiger/details/license", "tags": "", "modified": "20170205214435064", "created": "20170205213335455" }, "$:/plugins/telmiger/details/readme": { "created": "20170205212323032", "text": "! ~DetailsWidget\n\n{{$:/plugins/telmiger/details/about}}\n\nDocumentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget\n", "title": "$:/plugins/telmiger/details/readme", "tags": "", "modified": "20200603211110057" }, "$:/plugins/telmiger/details/colours.css": { "text": "/* details and summary colours */\n\ndetails {\n background-color: <<colour tiddler-info-tab-background>>;\n color: <<colour foreground>>;\n}\n\ndetails summary {\n background-color: <<colour dropdown-tab-background>>;\n}\n\ndetails.notification summary {\n background-color: <<colour notification-background>>;\n /* TW leaves color undefined/uses foreground */\n}\n\ndetails.warning summary {\n background-color: #ffbbaf;\n color: #000;\n}\n\ndetails.success summary {\n background-color: #88edc5;\n color: #000;\n}\n", "title": "$:/plugins/telmiger/details/colours.css", "tags": "$:/tags/Stylesheet", "modifier": "Thomas Elmiger", "modified": "20180926204140772", "creator": "Thomas Elmiger", "created": "20180925155320737" }, "$:/plugins/telmiger/DetailsWidget/support": { "created": "20200603204816640", "text": "{{$:/plugins/telmiger/support}}", "title": "$:/plugins/telmiger/DetailsWidget/support", "tags": "", "modified": "20200603204849180" }, "$:/plugins/telmiger/support": { "created": "20200604213259310", "text": "!! Support the Author\n\n''Hi!'' I’m Thomas, the author of [[tid.li/tw5/plugins.html|https://tid.li/tw5/plugins.html]]. Feedback is always welcome, as well as funding for maintenance, support and new projects :)\n\n---\n\n!!! One Time Support\n\nIf using my plugins just makes you happy, consider a one time payment via ~PayPal to reward the effort:\n\nhttps://www.paypal.me/telmiger\n\n---\n\n!!! Permanent Support\n\nIf my tools make you more productive or save you time in your job or your everyday life, you can support me as a Patron: \n\nhttps://www.patreon.com/telmiger\n\n---\n\n!!! Thank You\n\nSubstantial parts of my availabe time go to the deveopment of useful plugins for [[TiddlyWiki|https://tiddlywiki.com/]]. – Many others do the same and I would like to thank them all, especially [[Jeremy Ruston|https://tiddlywiki.com/#JeremyRuston]] and all the active members of the community!\n\n//Hereby I promise to share future revenues (if any) with other developers who’s works I use or who inspired me.//\n\nIf you like my work, I would be very happy to hear from you.\n\n''Thank you very much for your support!''<br>\n//Thomas//\n\nhttps://thomas-elmiger.ch", "title": "$:/plugins/telmiger/support", "tags": "", "modifier": "Thomas Elmiger", "modified": "20200604213305050", "creator": "Thomas Elmiger" }, "$:/plugins/telmiger/details/about": { "created": "20200603211101398", "modified": "20200603211101398", "title": "$:/plugins/telmiger/details/about", "text": "Create HTML 5 `<details>` elements including a `<summary>` using this widget.\n\n<$details summary=\"The details element – W3C definition\">\n\n<<<\nThe [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.\n<<< W3C\n\n</$details>\n\n<$details summary=\"Code example\" open=\"no\">\n\n```\n<$details summary=\"This should be open\" open=\"yes\">\n\nContent will be immediately visible if open is set to \"yes\".\n\n</$details>\n```\n\n</$details>", "tags": "" } } }
/* details and summary colours */ details { background-color: <<colour tiddler-info-tab-background>>; color: <<colour foreground>>; } details summary { background-color: <<colour dropdown-tab-background>>; } details.notification summary { background-color: <<colour notification-background>>; /* TW leaves color undefined/uses foreground */ } details.warning summary { background-color: #ffbbaf; color: #000; } details.success summary { background-color: #88edc5; color: #000; }
Kortsvarsoppgaver for medisinstudiet ved NTNU
UnUnderstandable
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]] \rules only filteredtranscludeinline transcludeinline macrocallinline <div class="tc-remove-when-wiki-loaded"> <style scoped> .tc-splash-text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; margin: 20px auto 0; width: 200px; text-align: center; color: <<colour foreground>>; fill: <<colour foreground>>; } html body.tc-body { background: <<colour page-background>>; } .line-wrapper { width: 100%; height: 80vh; display: flex; flex-direction: column; justify-content: center; align-items: center; } .line { width: 50px; height: 1px; background: <<colour muted-foreground>>; -webkit-animation: line 2s infinite; -moz-animation: line 2s infinite; -o-animation: line 2s infinite; animation: line 2s infinite; } @-webkit-keyframes line { 0% { width: 10px; } 50% { width: 200px; } 100% { width: 10px; } } @keyframes line { 0% { width: 10px; } 50% { width: 200px; } 100% { width: 10px; } } .linetwo { width: 50px; height: 1px; background: <<colour muted-foreground>>; -webkit-animation: linetwo 2s infinite; -moz-animation: linetwo 2s infinite; -o-animation: linetwo 2s infinite; animation: linetwo 2s infinite; margin: 5px 0; } @-webkit-keyframes linetwo { 0% { width: 5px; } 70% { width: 180px; } 100% { width: 5px; } } @keyframes linetwo { 0% { width: 5px; } 70% { width: 180px; } 100% { width: 5px; } } .linethree { width: 50px; height: 1px; background: <<colour muted-foreground>>; -webkit-animation: linethree 2s infinite; -moz-animation: linethree 2s infinite; -o-animation: linethree 2s infinite; animation: linethree 2s infinite; margin: linethree 0; } @-webkit-keyframes linethree { 0% { width: 0; } 80% { width: 160px; } 100% { width: 0; } } @keyframes linethree { 0% { width: 0; } 80% { width: 160px; } 100% { width: 0; } } </style> <div class="line-wrapper"> <div class="tc-splash-text">{{$:/SiteTitle}}</div> <div class="line"></div> <div class="linetwo"></div> <div class="linethree"></div> </div> </div>
show
hide
yes
contents
yes
yes
contents
show
$:/core/ui/AdvancedSearch/Standard
no
yes
$:/core/ui/AdvancedSearch/Filter
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Plugins/Installed/Themes
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/Plugins
$:/core/ui/TiddlerInfo/Advanced
$:/core/ui/MoreSideBar/System
$:/core/ui/SideBar/Tools
no
<$list filter='[all[current]title[Velg stadium]]'> [data-tiddler-title='{{!!title}}'] { background-image: url(https://image.forskning.no/131618.webp?imageId=131618&width=2116&height=1208&format=webp); background-position: center; background-repeat: no-repeat; background-size: cover; } .stageMenuItem { background-color: #B23CFD40 !important; } </$list> .oppgave { background-image: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url(https://image.forskning.no/131618.webp?imageId=131618&width=2116&height=1208&format=webp); background-position: center; background-repeat: no-repeat; background-size: cover; }
yes
{ "tiddlers": { "$:/info/browser": { "title": "$:/info/browser", "text": "yes" }, "$:/info/node": { "title": "$:/info/node", "text": "no" }, "$:/info/url/full": { "title": "$:/info/url/full", "text": "https://ununderstandable.com/kortsvar/" }, "$:/info/url/host": { "title": "$:/info/url/host", "text": "ununderstandable.com" }, "$:/info/url/hostname": { "title": "$:/info/url/hostname", "text": "ununderstandable.com" }, "$:/info/url/protocol": { "title": "$:/info/url/protocol", "text": "https:" }, "$:/info/url/port": { "title": "$:/info/url/port", "text": "" }, "$:/info/url/pathname": { "title": "$:/info/url/pathname", "text": "/kortsvar/" }, "$:/info/url/search": { "title": "$:/info/url/search", "text": "" }, "$:/info/url/origin": { "title": "$:/info/url/origin", "text": "https://ununderstandable.com" }, "$:/info/browser/screen/width": { "title": "$:/info/browser/screen/width", "text": "1280" }, "$:/info/browser/screen/height": { "title": "$:/info/browser/screen/height", "text": "800" }, "$:/info/browser/language": { "title": "$:/info/browser/language", "text": "nb-NO" } } }
$:/themes/jd/Mono
{ "tiddlers": { "$:/themes/jd/Mono/TopBarSegments/search": { "created": "20190130163600391", "creator": "jd", "text": "\\define NewTidActions(searcharea)\n<$action-createtiddler $basetitle={{$searcharea$}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$searcharea$\" text=\"\"/>\n\\end\n\\define searchbar()\n<$list variable=\"stateCheck\" filter=\"[[$:/config/TopRightBar/$:/themes/jd/Mono/TopBarSegments/search]!text[hide]]\">\n<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$keyboard class=\"tc-search\" tag=\"div\" key=\"enter\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\" default=\"\" placeholder=\"search, [enter] to create\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n{{$:/core/images/new-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$list filter=\"[is[system]prefix[$:/state/searchtab]text[$:/core/ui/AdvancedSearch/Filter]limit[1]]\" variable=\"tabCheck\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]-$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear\"><$transclude/></$list></$list>\n</$reveal>\n</$keyboard>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/advancedsearch\" 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<style>.tc-block-dropdown.tc-search-drop-down { display: flex; }</style>\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\" \"$:/state/searchtab\">>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n\n</$list>\n\n\\end\n\n<div class=\"mobile-only\">\n\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n\n<<searchbar>>\n\n</$list>\n\n</div>\n\n<div class=\"desktop-only\">\n\n<<searchbar>>\n\n</div>\n", "title": "$:/themes/jd/Mono/TopBarSegments/search", "tags": "$:/tags/TopRightBar", "modifier": "jd", "modified": "20190203083032524" }, "$:/themes/jd/Mono/TopBarSegments/buttons": { "created": "20190201105717721", "creator": "jd", "text": "<div class=\"tc-page-controls\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$list filter=\"[enlist{$:/themes/jd/Mono/Database!!list}] +[!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</$set>\n\n</div>\n", "title": "$:/themes/jd/Mono/TopBarSegments/buttons", "tags": "$:/tags/TopLeftBar", "modifier": "jd", "modified": "20190203014153431" }, "$:/themes/jd/Mono/Stylesheet": { "created": "20190130145325995", "creator": "jd", "text": "\\define bkrpnt() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}\n\\define sidebar() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}}\n\\define fontsize() {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}}\n\n\n\n/* MAIN */\n\n@media (min-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable {\n position: fixed;\n top: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n left: 0;\n bottom: 0;\n right: unset;\n width: <<sidebar>>;\n margin: 0;\n padding: 0 2em 2em 2em;\n}\n.tc-story-river {\n width: calc(100% - <<sidebar>>);\n padding: 0 2em 4em 2em;\n}\n<$list filter=\"[[$:/view]!text[zoomin]]\">\n.tc-story-river { top: 0.25em; }\n</$list>\n<$list filter=\"[[$:/view]text[zoomin]]\">\n.tc-story-river {\n top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} + 0.25em);\n}\n</$list>\n<$list filter=\"[[$:/state/sidebar]!text[no]]\" variable=\"stateCheck\">\n.tc-story-river {\n left: <<sidebar>>;\n right: 0;\n}\n</$list>\n<$list filter=\"[[$:/state/sidebar]text[no]]\" variable=\"stateCheck\">\n.tc-story-river {\n left: calc(<<sidebar>> / 2);\n right: calc(<<sidebar>> / 2);\n}\n</$list>\n.tc-tiddler-frame {\n margin: 0 0 2em 0;\n width: 100%;\n border-radius: 1px;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.15)\">>\n}\n.tc-storyview-zoomin-tiddler {\n width: calc(100% - 4em) !important;\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable { padding: 0 1em 2em 1em; }\n.tc-sidebar-header { padding: 0; }\n.tc-tiddler-frame { margin-bottom: 2px !important; }\n}\n\n<$list filter=\"[[$:/state/sidebar]!text[no]]\" variable=\"stateCheck\">\n@media (max-width: <<bkrpnt>>) {\n.tc-story-river { display: none; }\n}\n</$list>\n\n<$list filter=\"[[$:/state/sidebar]text[no]]\" variable=\"stateCheck\">\n@media (max-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable { padding-top: 0; padding-bottom: 0; }\n}\n</$list>\n\n<$list filter=\"[[$:/themes/tiddlywiki/vanilla/options/stickytitles]text[yes]]\" variable=\"stateCheck\">\n@media (min-width: <<bkrpnt>>) {\n.tc-tiddler-title {\n top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} - .25em);\n}\n}\n\n.tc-titlebar {\n line-height: 0;\n}\n\n@media (max-width: <<bkrpnt>>) {\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n.tc-tiddler-edit-frame .tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n.tc-tiddler-view-frame .tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n.tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}};\n}\n</$list>\n}\n</$list>\n\n.tc-sidebar-scrollable .tc-tab-buttons,\n.tc-topbar .tc-page-controls button,\n.tc-topbar .tc-search button {\n padding: 0;\n}\n\n/* TOPBAR */\n\n<$list filter=\"[[$:/view]!text[zoomin]]\">\n<$list filter=\"[[$:/config/topbar/sticky]!text[no]]\">\n.tc-topbar { position: sticky; }\n@media (max-width: <<bkrpnt>>) { \n.tc-story-river { margin-top: -2.5em; }\n}\n</$list>\n<$list filter=\"[[$:/config/topbar/sticky]text[no]]\">\n.tc-topbar { position: fixed; }\n@media (min-width: <<bkrpnt>>) { \n.tc-topbar { height: 56px; }\n.tc-story-river { margin-top: 56px; }\n}\n<$list filter=\"[[$:/state/searchbar]!text[hide]]\">\n@media (max-width: <<bkrpnt>>) { \n.tc-topbar { height: 94px; }\n.tc-story-river { margin-top: calc(48px + 1em); }\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]text[hide]]\">\n@media (max-width: <<bkrpnt>>) { \n.tc-topbar { height: 48px; }\n.tc-story-river { margin-top: 1em; }\n}\n</$list>\n</$list>\n</$list>\n\n<$list filter=\"[[$:/view]text[zoomin]]\">\n.tc-topbar { position: fixed; }\n</$list>\n\n.tc-topbar {\n top: 0;\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.25em 1em;\n background: <<colour page-background>>;\n z-index: 900;\n}\n\n@media (min-width: <<bkrpnt>>) {\n.tc-topbar {\n padding: 1em 2em;\n max-height: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-topbar > * {\n width: 100%;\n}\n.tc-topbar .tc-topbar-left {\n padding: 0.75em 0;\n}\n.tc-topbar .tc-topbar-right .tc-search {\n margin-bottom: 0.5em;\n}\n.tc-topbar-right {\n font-size: 1.25em !important;\n}\n.tc-topbar .tc-page-controls {\n justify-content: space-between;\n width: 100%;\n}\n}\n\n.tc-topbar .tc-page-controls,\n.tc-topbar .tc-search {\n display: flex;\n align-items: center;\n}\n\n/* TOPBAR SEARCH */\n\n.tc-topbar .tc-search {\n border: 1px solid <<colour table-border>>;\n background: <<colour page-background>>;\n border-radius: 0;\n padding: 0.25em;\n}\n.tc-topbar .tc-search input {\n border: none;\n background: transparent;\n width: 100%;\n}\n.tc-topbar .tc-search .tc-reveal {\n display: flex;\n}\n\n/* controls */\n\n.tc-topbar .tc-page-controls {\n margin: 0;\n}\n.tc-topbar .tc-page-controls button > span,\n.tc-topbar .tc-page-controls button {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* DROPDOWNS */\n\n.tc-drop-down,\n.tc-block-dropdown {\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.25)\">>\n border-radius: 1px;\n}\n\n@media (max-width: <<bkrpnt>>) {\n\n.tc-search .tc-drop-down,\n.tc-search .tc-block-dropdown,\n.tc-page-controls .tc-drop-down,\n.tc-page-controls .tc-block-dropdown {\n position:fixed;\n left:1em;\n min-width: calc(100% - 2em);\n max-width: calc(100% - 2em);\n max-height: calc(100% - 10em);\n overflow: auto;\n}\n\n.tc-drop-down,\n.tc-block-dropdown {\n max-height: 22em;\n overflow: auto;\n font-size: calc(<<fontsize>>*1.2) !important;\n font-weight: normal;\n line-height: 1.2;\n}\n}\n\n/* TOPBAR SEARCH DROPDOWN */\n\n.tc-block-dropdown.tc-search-drop-down {\n padding: 0.5em;\n}\n\n.tc-block-dropdown.tc-search-drop-down .tc-tab-buttons {\n margin-bottom: -3px;\n padding-top: 0;\n}\n\n.tc-block-dropdown.tc-search-drop-down .tc-search-results { width: 100%; }\n\n.tc-block-dropdown.tc-search-drop-down .tc-search { display: none; }\n\n@media (min-width: <<bkrpnt>>) {\n.tc-block-dropdown.tc-search-drop-down {\n margin: 0 0 0 -24em;\n width: calc(100% + 24em);\n max-height: 42em;\n overflow: auto;\n}\n.tc-topbar-right .tc-search .tc-block-dropdown,\n.tc-topbar-right .tc-search .tc-drop-down {\n position: absolute;\n right: 0;\n}\n.tc-topbar-right .tc-search .tc-drop-down {\n padding: 1em;\n min-width: 10em;\n max-width: 10em;\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-block-dropdown.tc-search-drop-down {\n margin: 0;\n width: 100%;\n overflow: auto;\n}\n}\n\n/* TOPBAR SEARCH DROPDOWN FLEX */\n\n/* .tc-block-dropdown.tc-search-drop-down { display: flex; } on searchbar template under reveal */\n\n.tc-block-dropdown.tc-search-drop-down > p {\n display: flex;\n margin: 0;\n width: 100%;\n}\n\n.tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set > .tc-tab-content {\n display: flex;\n flex: 1 1 auto;\n overflow: auto;\n margin-top: 0;\n}\n\n\n<$reveal type=\"match\" state=\"$:/state/styled-frames\" text=\"yes\" default=\"yes\">\n\n/* VIEW & EDIT FRAME */\n\n.tc-subtitle,\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor,\n.tc-tiddler-view-frame .tc-titlebar h2.tc-title {\n font-family: monospace;\n}\n\n/* VIEW FRAME */\n\n.tc-tiddler-view-frame .tc-title {\n font-weight: bold;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-title {\n font-size: 1.5em;\n margin: 0 -1em;\n padding: 0.25em 1em;\n}\n\n.tc-tiddler-view-frame .tc-titlebar {\n font-size: 1em;\n}\n\n.tc-tiddler-view-frame .tc-titlebar h2.tc-title {\n font-size: 0.75em;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls {\n font-size: 1.5em;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls,\n.tc-tiddler-view-frame .tc-tiddler-controls > span > button, \n.tc-tiddler-view-frame .tc-tiddler-controls > span > span > button, \n.tc-tiddler-view-frame .tc-tiddler-controls > span > span > span > button {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-title-icon svg {\n max-height: 0.65em;\n}\n\n/* EDIT FRAME */\n\n.tc-tiddler-edit-frame .tc-tiddler-edit-title {\n color: transparent;\n line-height: 0;\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n font-size: 1.2em; \n}\n\n.tc-tiddler-edit-frame .tc-message-box { margin: 0; }\n\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor { margin-top: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar { background: <<colour tiddler-editor-border>>; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { background: transparent; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible {\n transition: 200ms fill;\n fill: <<colour foreground>>;\n}\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible:hover {\n background: transparent;\n fill: <<colour primary>>;\n}\n\ninput::placeholder {\n font-size: 0.9em; \n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor, \n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-edit-field-add-name input.tc-edit-texteditor, \n.tc-tiddler-edit-frame .tc-edit-field-add-value input.tc-edit-texteditor, \n.tc-tiddler-edit-frame input.tc-edit-typeeditor.tc-popup-handle, \n.tc-tiddler-edit-frame input.tc-edit-texteditor.tc-popup-handle {\n border: 1px solid <<colour background>>; \n border-bottom: 1px solid <<colour tiddler-editor-border>>;\n <<box-shadow \"none\">>\n} \n\n.tc-tiddler-edit-frame textarea { \n border: 1px solid <<colour tiddler-editor-border>>;\n <<box-shadow \"none\">>\n} \n\n.tc-tiddler-edit-frame textarea,\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor {\n font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n border: 1px solid <<colour background>>; \n <<box-shadow \"none\">>\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n font-weight: bold;\n}\n\n.tc-tiddler-edit-frame .tc-type-selector {\n padding-bottom: 10px;\n border-bottom: 1px solid <<colour tiddler-editor-border>>;\n}\n\n</$reveal>\n\n\n/* TIMELINE */\n\n.jd-timeline-wrapper {\n position: relative;\n}\n@media (max-width: <<bkrpnt>>) {\n.jd-timeline-wrapper {\n padding: 0 1em;\n width: 100%;\n}\n}\n .jd-paperview-wrapper {\n display: flex;\n flex-wrap: wrap;\n margin: 0.25em 0;\n}\n.jd-paperview {\n position:relative;\n width: 31%;\n margin: 1%;\n overflow:hidden;\n border: 0.5px solid {{$:/themes/jd/Mono/Database##grid-item-border}};\n border-radius: 1px;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n text-align: left;\n}\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview { height: 26em; }\n}\n@media (max-width: <<bkrpnt>>) {\n.jd-paperview { height: 12em; }\n}\n.jd-paperview,\n.jd-paperview-end {\n background: {{$:/themes/jd/Mono/Database##grid-item-background}} !important;\n}\n.jd-paperview-end {\n position: absolute;\n bottom: 0;\n left:0;\n width: 100%;\n height: 5px;\n}\n.jd-paperview-internal {\n transform: scale(0.7);\n position: absolute;\n width: 110%;\n height: 100%;\n top: -5%;\n left: -5%;\n pointer-events: none;\n}\n.jd-paperview-wrapper .tc-menu-list-subitem { width: 100%; }\n\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview-end {\n box-shadow: 0 0 10px 10px {{$:/themes/jd/Mono/Database##grid-item-background}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.jd-paperview-end {\n box-shadow: 0 0 5px 5px {{$:/themes/jd/Mono/Database##grid-item-background}};\n}\n\n}\n.jd-paperview-date {\n padding: 0.1em 0;\n}\n.jd-paperview-date {\n position: sticky;\n z-index: 1;\n background: {{$:/themes/jd/Mono/Database##header-background}};\n box-shadow: 0 0 2px 2px {{$:/themes/jd/Mono/Database##header-background}};\n}\n\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}};\n}\n</$list>\n}\n\n\n/* MISC */\n\nhr {\n border: none;\n border-top: 1px solid <<colour table-border>>;\n height: 1px;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons,\n.tc-tiddler-frame .tc-tab-buttons {\n margin-bottom: -3px;\n}\n\n.tc-story-river .tc-tab-buttons.tc-vertical button {\n border-top: 1px solid <<colour tab-border>>;\n border-left: 1px solid <<colour tab-border>>;\n border-bottom: 1px solid <<colour tab-border>>;\n border-right: 1px solid transparent;\n}\n\n.tc-story-river .tc-tab-buttons.tc-vertical .tc-tab-selected {\n border-top: 1px solid <<colour tab-border-selected>>;\n border-left: 1px solid <<colour tab-border-selected>>;\n border-bottom: 1px solid <<colour tab-border-selected>>;\n border-right: 1px solid transparent;\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n border-top: none;\n height: 1px;\n background-image: linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -o-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -moz-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -webkit-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -ms-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n}\n\n/* SIDEBAR MORE TAB BUTTONS */\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical {\n margin-top: 1em;\n}\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical > button {\n margin-bottom: -1px;\n border-top: 1px solid <<colour sidebar-tab-border>>;\n border-right: 1px solid transparent;\n border-bottom: 1px solid <<colour sidebar-tab-border>>;\n border-left: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical > button.tc-tab-selected {\n border-top: 1px solid <<colour sidebar-tab-border-selected>>;\n border-right: 1px solid transparent;\n border-bottom: 1px solid <<colour sidebar-tab-border-selected>>;\n border-left: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-more-sidebar .tc-tab-content.tc-vertical {\n margin-left: 1px;\n}\n\nul, li {\n white-space: nowrap; \n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tc-menu-list-item {\n padding-left: 5px;\n text-indent: -5px;\n white-space: normal !important;\n word-wrap: break-word !important;\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\nbutton, input { outline: none; }\n\nbutton, input:not([type]) {\n border-radius: 2px;\n}\n\ninput:not([type]) {\n border: 1px solid <<colour tiddler-editor-border>>;\n padding: 2px 4px;\n margin: 2px;\n}\n\nbutton {\n border: 1px solid <<colour button-border>>;\n padding: 6px 16px;\n margin: 2px;\n}\n\n@media (max-width: <<bkrpnt>>) {\n.desktop-only {\n display: none !important; pointer-events: none;\n}\n}\n\n@media (min-width: <<bkrpnt>>) {\n.mobile-only {\n display: none !important; pointer-events: none;\n}\n}\n\n.tc-topbar.tc-topbar-left,\n.tc-topbar.tc-topbar-right {\n display: none; pointer-events: none;\n}\n\n.tc-dropzone > p,\n.tc-topbar p,\n.tc-sidebar-lists-template > p,\n.tc-topbar .tc-sidebar-lists > p { margin: 0; }\n\n@media (min-width: <<bkrpnt>>) {\ndiv::-webkit-scrollbar { background: rgba(0, 0, 0, 0.12); }\ndiv::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.12); }\n}\n\n.tc-notification {\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.45)\">>\n border-radius: 1px;\n}", "title": "$:/themes/jd/Mono/Stylesheet", "tags": "$:/tags/Stylesheet", "modifier": "jd", "modified": "20190205153021408" }, "$:/themes/jd/Mono/Palette/SpartanNight": { "created": "20180624055725870", "creator": "jd", "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: inherent\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: white\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: <<colour sidebar-tab-border-selected>>\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: <<colour tab-border-selected>>\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)", "type": "application/x-tiddler-dictionary", "title": "$:/themes/jd/Mono/Palette/SpartanNight", "tags": "$:/tags/Palette", "revision": "16-bb276562b7c93c8ace69907892d92eed", "name": "Spartan Night", "modifier": "jd", "modified": "20190202100758570", "description": "Spartan night colors", "caption": "Spartan Night" }, "$:/themes/jd/Mono/Palette/SpartanDay": { "created": "20180624055639361", "creator": "jd", "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: rgba(0, 0, 0, 0.54)\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\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: <<colour sidebar-tab-border-selected>>\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: <<colour tab-border-selected>>\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)", "type": "application/x-tiddler-dictionary", "title": "$:/themes/jd/Mono/Palette/SpartanDay", "tags": "$:/tags/Palette", "revision": "16-1f6eabb9816382603cfa899327890536", "name": "Spartan Day", "modifier": "jd", "modified": "20190202100822086", "description": "Spartan day colors", "caption": "Spartan Day" }, "$:/themes/jd/Mono/PageTemplate/topbar": { "text": "<div class=\"tc-topbar tc-adjust-top-of-scroll\">\n\n<div class=\"tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</div>\n\n<div class=\"tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</div>\n\n</div>\n", "title": "$:/themes/jd/Mono/PageTemplate/topbar", "tags": "$:/tags/PageTemplate", "modifier": "jd", "modified": "20190201113453598", "list-before": "", "creator": "jd", "created": "20190130160503644" }, "$:/themes/jd/Mono/Config": { "created": "20190202083644385", "creator": "jd", "text": "<$checkbox tiddler=\"$:/config/TopRightBar/$:/themes/jd/Mono/TopBarSegments/search\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\" actions=\"\"\"\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"show\"/>\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"$:/themes/jd/Mono/Buttons/searchbar\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-desktop\" $value=\"calc(56px + .25em)\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-mobile-yes-searchbar\" $value=\"calc(4px + 3em + 6px + {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} + .25em)\"/>\n\"\"\" uncheckactions=\"\"\"\n<$action-setfield $tiddler=\"$:/config/TopLeftBar/Button/$:/themes/jd/Mono/Buttons/searchbar\" text=\"hide\"/>\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"-$:/themes/jd/Mono/Buttons/searchbar\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-mobile-yes-searchbar\" $value=\"calc(2px + 2.25em)\"/>\n\"\"\"> Use searchbar and button (the toggle button only shows up on mobile)</$checkbox>\n\n<$checkbox tiddler=\"$:/themes/jd/Mono/Database\" index=\"button-fontscroller\" checked=\"show\" unchecked=\"hide\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"$:/themes/jd/Mono/Buttons/font-scroller\"/>\"\"\" uncheckactions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"-$:/themes/jd/Mono/Buttons/font-scroller\"/>\n\"\"\"> Use font scroller button </$checkbox>\n\n<$checkbox tiddler=\"$:/SplashScreen\" field=\"text\" checked={{$:/themes/jd/Mono/SplashScreen!!text}} actions=\"\"\"\n<$action-setfield $tiddler=\"$:/SplashScreen\" tags=\"$:/tags/RawMarkupWikified/TopBody\"/>\"\"\"> Use splashscreen</$checkbox>\n\n<$checkbox tiddler=\"$:/config/EmptyStoryMessage\" field=\"text\" checked=\"\"\"{{$:/themes/jd/Mono/EmptyStoryMessage}}\"\"\"> Use timeline grid when story river is empty (grid preview of 10 recent dates for modified tiddlers)</$checkbox>\n\n<$checkbox tiddler=\"$:/state/styled-frames\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> Style tiddler frames</$checkbox>\n\n<$checkbox tiddler=\"$:/config/topbar/sticky\" field=\"text\" checked=\"no\" unchecked=\"yes\" default=\"yes\"> Tick this checkbox if using ''Internet Explorer'', or if the topbar position is not working properly (position: sticky; incompatibility)</$checkbox>\n\nKeep updated on `MonoTheme` here: ''[[http://j.d.mono.tiddlyspot.com/]]''\n\n<<tabs \"$:/themes/jd/Mono/Config/SidebarSegments $:/themes/jd/Mono/Config/TopbarButtons $:/themes/jd/Mono/Config/PaletteSwitcher $:/themes/jd/Mono/Config/VanillaTweaks $:/themes/jd/Mono/Config/DatabaseValues\" \"$:/themes/jd/Mono/Config/TopbarButtons\" class:\"tc-vertical\">>", "title": "$:/themes/jd/Mono/Config", "tags": "$:/tags/ControlPanel/Appearance", "modifier": "jd", "modified": "20190205153009029", "caption": "Mono Tweaks" }, "$:/themes/jd/Mono/Buttons/switch-palette": { "created": "20180718101345840", "creator": "jd", "text": "<$list filter=\"[[$:/palette]!text{$:/themes/jd/Mono/Database##night-palette}]\">\n<$button set=\"$:/palette\" setTo={{$:/themes/jd/Mono/Database##night-palette}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{ $:/core/images/tip}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"night\"/>\n</span>\n</$list>\n</$button>\n</$list>\n<$list filter=\"[[$:/palette]text{$:/themes/jd/Mono/Database##night-palette}]\">\n<$button set=\"$:/palette\" setTo={{$:/themes/jd/Mono/Database##day-palette}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{ $:/core/images/tip}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"day\"/>\n</span>\n</$list>\n</$button>\n</$list>\n", "type": "text/vnd.tiddlywiki", "title": "$:/themes/jd/Mono/Buttons/switch-palette", "tags": "$:/tags/PageControls", "revision": "6-0bdaa9022f44b4d8d5b1a71f193803af", "modifier": "jd", "modified": "20190202134636973", "description": "Toggle palette", "caption": "{{$:/core/images/tip}} palette" }, "$:/themes/jd/Mono/Buttons/searchbar": { "created": "20190130164005014", "creator": "jd", "text": "<$button class={{{ [<tv-config-toolbar-class>addsuffix[ mobile-only]] }}} tooltip=\"searchbar\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"show\"/>\n</$list>\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"hide\"/>\n</$list>\n</$button>", "title": "$:/themes/jd/Mono/Buttons/searchbar", "tags": "$:/tags/PageControls", "modifier": "jd", "modified": "20190202153859733", "description": "Mono searchbar toggler", "caption": "{{$:/core/images/advanced-search-button}} mono searchbar" }, "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/page-controls": { "created": "20190201102601467", "creator": "jd", "text": "hide", "title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/page-controls", "modifier": "jd", "modified": "20190202133339913" }, "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/search": { "created": "20190201102714829", "creator": "jd", "text": "hide", "title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/search", "modifier": "jd", "modified": "20190202133211221" }, "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-subtitle": { "text": "hide", "title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-subtitle", "modifier": "jd", "modified": "20190201102704659", "creator": "jd", "created": "20190201102652423" }, "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-title": { "text": "hide", "title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-title", "modifier": "jd", "modified": "20190202160543142", "creator": "jd", "created": "20190201102745176" }, "$:/core/ui/TopBar/menu": { "created": "20190201145933072", "creator": "jd", "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n", "title": "$:/core/ui/TopBar/menu", "modifier": "jd", "modified": "20190203083157565", "caption": "{{$:/core/images/chevron-right}} sidebar", "description": "Toggle sidebar" }, "$:/themes/jd/Mono/EmptyStoryMessage": { "created": "20190202111910887", "creator": "jd", "text": "\\whitespace trim\n<div class=\"jd-timeline-wrapper\">\n<$list filter=\"[!is[system]!has[draft.of]!sort[modified]has[modified]limit[10]eachday[modified]]\">\n<div class=\"jd-paperview-date\">\n<$view field=\"modified\" format=\"date\" template=\"DDth MMM YYYY\"/>\n</div>\n<div class=\"jd-paperview-wrapper\">\n<$list filter=\"[sameday:modified{!!modified}!is[system]!has[draft.of]!sort[modified]]\">\n<$button to={{!!title}} class=\"jd-paperview\">\n<div class=\"jd-paperview-internal\">\n<b><$view field=\"title\"/></b>\n<$transclude mode=\"block\"/>\n</div>\n<div class=\"jd-paperview-end\">\n</div>\n</$button>\n</$list>\n</div>\n</$list>\n</div>\n", "title": "$:/themes/jd/Mono/EmptyStoryMessage", "tags": "", "modifier": "jd", "modified": "20190203153408764" }, "$:/themes/jd/Mono/Config/TopbarButtons": { "created": "20190202123433451", "creator": "jd", "text": "\\define config-title()\n$:/config/TopLeftBar/Button/$(currentTiddler)$\n\\end\n\n!!! ''Remove from ~TopLeftBar''\n//Click to remove from ~TopLeftBar, rearrange by dragging//\n\n<$list filter=\"[enlist{$:/themes/jd/Mono/Database!!list}]\">\n<$droppable actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\"\"\">\n<div class=\"tc-droppable-placeholder\"> </div>\n<$draggable tiddler=<<currentTiddler>>>\n<$button class=\"tc-btn-invisible\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $subfilter=\"-[<currentTiddler>]\"/>\n\"\"\">\n<span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span> \n</$button>\n</$draggable>\n</$droppable>\n</$list>\n\n!!! ''Add to ~TopLeftBar''\n//Click to add to ~TopLeftBar//\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]] $:/core/ui/TopBar/menu $:/themes/jd/Mono/Buttons/searchbar -[enlist{$:/themes/jd/Mono/Database!!list}]\">\n<$button class=\"tc-btn-invisible\" style=\"width: 100%; text-align: left;\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $subfilter=<<currentTiddler>>/>\n\"\"\">\n<span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span> \n</$button>\n</$list>\n", "title": "$:/themes/jd/Mono/Config/TopbarButtons", "tags": "", "modifier": "jd", "modified": "20190203014157409", "caption": "Topbar buttons" }, "$:/themes/jd/Mono/Database": { "created": "20190202114537700", "creator": "jd", "text": "{\n \"grid-sticky-header-background\": \"<<colour page-background>>\",\n \"grid-item-background\": \"<<colour background>>\",\n \"grid-item-border\": \"<<colour tiddler-border>>\",\n \"header-background\": \"<<colour page-background>>\",\n \"header-position-mobile-no-searchbar\": \"calc(2px + 2.25em)\",\n \"header-position-mobile-yes-searchbar\": \"calc(4px + 3em + 6px + {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} + .25em)\",\n \"header-position-desktop\": \"calc(56px + .25em)\",\n \"day-palette\": \"$:/themes/jd/Mono/Palette/SpartanDay\",\n \"night-palette\": \"$:/themes/jd/Mono/Palette/SpartanNight\",\n \"button-fontscroller\": \"hide\"\n}", "type": "application/json", "title": "$:/themes/jd/Mono/Database", "tags": "", "modifier": "jd", "modified": "20190205153057281", "list": "$:/core/ui/Buttons/new-tiddler $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/save-wiki $:/themes/jd/Mono/Buttons/switch-palette $:/core/ui/TopBar/menu $:/themes/jd/Mono/Buttons/searchbar" }, "$:/themes/jd/Mono/Config/SidebarSegments": { "created": "20190202123345136", "creator": "jd", "text": "\\define config-title()\n$:/config/SideBarSegments/Visibility/$(currentTiddler)$\n\\end\n\n!!! ''Sidebar segments''\n//Uncheck to remove from ~SideBar, rearrange by dragging//\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]]\">\n<$droppable actions=\"\"\"\n<$action-listops $tiddler=\"$:/tags/SideBarSegment\" $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\"\"\">\n<div class=\"tc-droppable-placeholder\"> </div>\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> <$text text=<<currentTiddler>>/>\n</$checkbox><br>\n</$draggable>\n</$droppable>\n</$list>", "title": "$:/themes/jd/Mono/Config/SidebarSegments", "modifier": "jd", "modified": "20190202135551740", "tags": "", "caption": "Sidebar segments" }, "$:/themes/jd/Mono/Config/DatabaseValues": { "created": "20190202123554778", "creator": "jd", "text": "!!! ''Advanced''\n\n<$list filter=\"[[$:/themes/jd/Mono/Database]indexes[]search[position]]\" variable=\"index\">\n\n<<index>>:\n\n<$edit-text tiddler=\"$:/themes/jd/Mono/Database\" index=<<index>> tag=\"input\"/>\n\n</$list>", "title": "$:/themes/jd/Mono/Config/DatabaseValues", "modifier": "jd", "modified": "20190203084020856", "tags": "", "caption": "Advanced" }, "$:/themes/jd/Mono/Config/PaletteSwitcher": { "created": "20190202135356197", "creator": "jd", "text": "!!! ''Palette switcher''\n\n<$list filter=\"day-palette night-palette\" variable=\"index\" >\n\n<<index>>:\n\n<$edit-text tiddler=\"$:/themes/jd/Mono/Database\" index=<<index>> tag=\"input\"/>\n\n</$list>", "title": "$:/themes/jd/Mono/Config/PaletteSwitcher", "modifier": "jd", "modified": "20190202135417323", "tags": "", "caption": "Palette switcher" }, "$:/themes/jd/Mono/SplashScreen": { "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\rules only filteredtranscludeinline transcludeinline macrocallinline\n<div class=\"tc-remove-when-wiki-loaded\">\n<style scoped>\n\n.tc-splash-text {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 16px;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n\tmargin: 20px auto 0;\n\twidth: 200px;\n\ttext-align: center;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\nhtml body.tc-body {\n background: <<colour page-background>>;\n}\n.line-wrapper {\n width: 100%;\n height: 80vh;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.line {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: line 2s infinite; \n -moz-animation: line 2s infinite; \n -o-animation: line 2s infinite; \n animation: line 2s infinite; \n}\n@-webkit-keyframes line {\n 0% { width: 10px; }\n 50% { width: 200px; }\n 100% { width: 10px; }\n}\n@keyframes line {\n 0% { width: 10px; }\n 50% { width: 200px; }\n 100% { width: 10px; }\n}\n.linetwo {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: linetwo 2s infinite; \n -moz-animation: linetwo 2s infinite; \n -o-animation: linetwo 2s infinite; \n animation: linetwo 2s infinite; \n margin: 5px 0;\n}\n@-webkit-keyframes linetwo {\n 0% { width: 5px; }\n 70% { width: 180px; }\n 100% { width: 5px; }\n}\n@keyframes linetwo {\n 0% { width: 5px; }\n 70% { width: 180px; }\n 100% { width: 5px; }\n}\n.linethree {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: linethree 2s infinite; \n -moz-animation: linethree 2s infinite; \n -o-animation: linethree 2s infinite; \n animation: linethree 2s infinite; \n margin: linethree 0;\n}\n@-webkit-keyframes linethree {\n 0% { width: 0; }\n 80% { width: 160px; }\n 100% { width: 0; }\n}\n@keyframes linethree {\n 0% { width: 0; }\n 80% { width: 160px; }\n 100% { width: 0; }\n}\n</style>\n\n<div class=\"line-wrapper\">\n<div class=\"tc-splash-text\">{{$:/SiteTitle}}</div>\n<div class=\"line\"></div>\n<div class=\"linetwo\"></div>\n<div class=\"linethree\"></div>\n</div>\n\n</div>", "type": "text/vnd.tiddlywiki", "title": "$:/themes/jd/Mono/SplashScreen", "modifier": "jd", "modified": "20190202152051851", "creator": "jd", "created": "20180927082601825" }, "$:/themes/jd/Mono/Buttons/font-scroller": { "created": "20180930054903341", "creator": "jd", "text": "<$wikify name=\"fontUp\" text=\"\"\"\n<$list filter=\"[{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}previous[$:/themes/jd/Mono/Buttons/font-scroller]]\" emptyMessage=\"40px\"/>\n\"\"\">\n<$wikify name=\"fontDown\" text=\"\"\"\n<$list filter=\"[{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}next[$:/themes/jd/Mono/Buttons/font-scroller]]\" emptyMessage=\"10px\"/>\n\"\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Decrease font size\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" text=<<fontDown>>/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" text=\"1.25\"/>\n\n\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/chevron-down}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=\"font down\"/></span>\n</$list>\n\n</$button>\n<$button class=\"tc-btn-invisible\" tooltip=\"Increase font size\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" text=<<fontUp>>/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" text=\"1.25\"/>\n\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/chevron-up}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=\"font up\"/></span>\n</$list>\n\n</$button>\n</$wikify>\n</$wikify>", "title": "$:/themes/jd/Mono/Buttons/font-scroller", "tags": "$:/tags/PageControls", "modifier": "jd", "modified": "20190203035107351", "list": "40px 34px 30px 24px 20px 18px 17px 15px 14px 13px 12px 10px", "caption": "{{$:/core/images/chevron-up}} font scroller", "description": "Font scroller" }, "$:/themes/jd/Mono/Config/VanillaTweaks": { "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<style> .vanillatweaks table { width: 100%; } .vanillatweaks td:first-child { width: 60%; } .vanillatweaks td input { width: 100%; }</style>\n\n<div class=\"vanillatweaks\">\n\nInherited tweaks from ''Vanilla'' theme.\n\n!!! ''<<lingo Options>>''\n\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\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/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\n</div>", "title": "$:/themes/jd/Mono/Config/VanillaTweaks", "modifier": "jd", "modified": "20190203084506755", "creator": "jd", "created": "20190203083516565", "caption": "Vanilla tweaks" } } }
{ "grid-sticky-header-background": "<<colour page-background>>", "grid-item-background": "<<colour background>>", "grid-item-border": "<<colour tiddler-border>>", "header-background": "<<colour page-background>>", "header-position-mobile-no-searchbar": "calc(2px + 2.25em)", "header-position-mobile-yes-searchbar": "calc(4px + 3em + 6px + {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} + .25em)", "header-position-desktop": "calc(56px + .25em)", "day-palette": "$:/themes/jd/Mono/Palette/SpartanDay", "night-palette": "$:/themes/jd/Mono/Palette/SpartanNight", "button-fontscroller": "hide" }
\define bkrpnt() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}} \define sidebar() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} \define fontsize() {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} /* MAIN */ @media (min-width: <<bkrpnt>>) { .tc-sidebar-scrollable { position: fixed; top: {{$:/themes/jd/Mono/Database##header-position-desktop}}; left: 0; bottom: 0; right: unset; width: <<sidebar>>; margin: 0; padding: 0 2em 2em 2em; } .tc-story-river { width: calc(100% - <<sidebar>>); padding: 0 2em 4em 2em; } <$list filter="[[$:/view]!text[zoomin]]"> .tc-story-river { top: 0.25em; } </$list> <$list filter="[[$:/view]text[zoomin]]"> .tc-story-river { top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} + 0.25em); } </$list> <$list filter="[[$:/state/sidebar]!text[no]]" variable="stateCheck"> .tc-story-river { left: <<sidebar>>; right: 0; } </$list> <$list filter="[[$:/state/sidebar]text[no]]" variable="stateCheck"> .tc-story-river { left: calc(<<sidebar>> / 2); right: calc(<<sidebar>> / 2); } </$list> .tc-tiddler-frame { margin: 0 0 2em 0; width: 100%; border-radius: 1px; <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.15)">> } .tc-storyview-zoomin-tiddler { width: calc(100% - 4em) !important; } } @media (max-width: <<bkrpnt>>) { .tc-sidebar-scrollable { padding: 0 1em 2em 1em; } .tc-sidebar-header { padding: 0; } .tc-tiddler-frame { margin-bottom: 2px !important; } } <$list filter="[[$:/state/sidebar]!text[no]]" variable="stateCheck"> @media (max-width: <<bkrpnt>>) { .tc-story-river { display: none; } } </$list> <$list filter="[[$:/state/sidebar]text[no]]" variable="stateCheck"> @media (max-width: <<bkrpnt>>) { .tc-sidebar-scrollable { padding-top: 0; padding-bottom: 0; } } </$list> <$list filter="[[$:/themes/tiddlywiki/vanilla/options/stickytitles]text[yes]]" variable="stateCheck"> @media (min-width: <<bkrpnt>>) { .tc-tiddler-title { top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} - .25em); } } .tc-titlebar { line-height: 0; } @media (max-width: <<bkrpnt>>) { <$list filter="[[$:/state/searchbar]text[show]]"> .tc-tiddler-edit-frame .tc-tiddler-title { top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}}; } .tc-tiddler-view-frame .tc-tiddler-title { top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}}; } </$list> <$list filter="[[$:/state/searchbar]!text[show]]"> .tc-tiddler-title { top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}}; } </$list> } </$list> .tc-sidebar-scrollable .tc-tab-buttons, .tc-topbar .tc-page-controls button, .tc-topbar .tc-search button { padding: 0; } /* TOPBAR */ <$list filter="[[$:/view]!text[zoomin]]"> <$list filter="[[$:/config/topbar/sticky]!text[no]]"> .tc-topbar { position: sticky; } @media (max-width: <<bkrpnt>>) { .tc-story-river { margin-top: -2.5em; } } </$list> <$list filter="[[$:/config/topbar/sticky]text[no]]"> .tc-topbar { position: fixed; } @media (min-width: <<bkrpnt>>) { .tc-topbar { height: 56px; } .tc-story-river { margin-top: 56px; } } <$list filter="[[$:/state/searchbar]!text[hide]]"> @media (max-width: <<bkrpnt>>) { .tc-topbar { height: 94px; } .tc-story-river { margin-top: calc(48px + 1em); } } </$list> <$list filter="[[$:/state/searchbar]text[hide]]"> @media (max-width: <<bkrpnt>>) { .tc-topbar { height: 48px; } .tc-story-river { margin-top: 1em; } } </$list> </$list> </$list> <$list filter="[[$:/view]text[zoomin]]"> .tc-topbar { position: fixed; } </$list> .tc-topbar { top: 0; width: 100%; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; padding: 0.25em 1em; background: <<colour page-background>>; z-index: 900; } @media (min-width: <<bkrpnt>>) { .tc-topbar { padding: 1em 2em; max-height: {{$:/themes/jd/Mono/Database##header-position-desktop}}; } } @media (max-width: <<bkrpnt>>) { .tc-topbar > * { width: 100%; } .tc-topbar .tc-topbar-left { padding: 0.75em 0; } .tc-topbar .tc-topbar-right .tc-search { margin-bottom: 0.5em; } .tc-topbar-right { font-size: 1.25em !important; } .tc-topbar .tc-page-controls { justify-content: space-between; width: 100%; } } .tc-topbar .tc-page-controls, .tc-topbar .tc-search { display: flex; align-items: center; } /* TOPBAR SEARCH */ .tc-topbar .tc-search { border: 1px solid <<colour table-border>>; background: <<colour page-background>>; border-radius: 0; padding: 0.25em; } .tc-topbar .tc-search input { border: none; background: transparent; width: 100%; } .tc-topbar .tc-search .tc-reveal { display: flex; } /* controls */ .tc-topbar .tc-page-controls { margin: 0; } .tc-topbar .tc-page-controls button > span, .tc-topbar .tc-page-controls button { display: flex; align-items: center; justify-content: center; } /* DROPDOWNS */ .tc-drop-down, .tc-block-dropdown { <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.25)">> border-radius: 1px; } @media (max-width: <<bkrpnt>>) { .tc-search .tc-drop-down, .tc-search .tc-block-dropdown, .tc-page-controls .tc-drop-down, .tc-page-controls .tc-block-dropdown { position:fixed; left:1em; min-width: calc(100% - 2em); max-width: calc(100% - 2em); max-height: calc(100% - 10em); overflow: auto; } .tc-drop-down, .tc-block-dropdown { max-height: 22em; overflow: auto; font-size: calc(<<fontsize>>*1.2) !important; font-weight: normal; line-height: 1.2; } } /* TOPBAR SEARCH DROPDOWN */ .tc-block-dropdown.tc-search-drop-down { padding: 0.5em; } .tc-block-dropdown.tc-search-drop-down .tc-tab-buttons { margin-bottom: -3px; padding-top: 0; } .tc-block-dropdown.tc-search-drop-down .tc-search-results { width: 100%; } .tc-block-dropdown.tc-search-drop-down .tc-search { display: none; } @media (min-width: <<bkrpnt>>) { .tc-block-dropdown.tc-search-drop-down { margin: 0 0 0 -24em; width: calc(100% + 24em); max-height: 42em; overflow: auto; } .tc-topbar-right .tc-search .tc-block-dropdown, .tc-topbar-right .tc-search .tc-drop-down { position: absolute; right: 0; } .tc-topbar-right .tc-search .tc-drop-down { padding: 1em; min-width: 10em; max-width: 10em; } } @media (max-width: <<bkrpnt>>) { .tc-block-dropdown.tc-search-drop-down { margin: 0; width: 100%; overflow: auto; } } /* TOPBAR SEARCH DROPDOWN FLEX */ /* .tc-block-dropdown.tc-search-drop-down { display: flex; } on searchbar template under reveal */ .tc-block-dropdown.tc-search-drop-down > p { display: flex; margin: 0; width: 100%; } .tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set { display: flex; flex-direction: column; width: 100%; } .tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set > .tc-tab-content { display: flex; flex: 1 1 auto; overflow: auto; margin-top: 0; } <$reveal type="match" state="$:/state/styled-frames" text="yes" default="yes"> /* VIEW & EDIT FRAME */ .tc-subtitle, .tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor, .tc-tiddler-view-frame .tc-titlebar h2.tc-title { font-family: monospace; } /* VIEW FRAME */ .tc-tiddler-view-frame .tc-title { font-weight: bold; } .tc-tiddler-view-frame .tc-tiddler-title { font-size: 1.5em; margin: 0 -1em; padding: 0.25em 1em; } .tc-tiddler-view-frame .tc-titlebar { font-size: 1em; } .tc-tiddler-view-frame .tc-titlebar h2.tc-title { font-size: 0.75em; } .tc-tiddler-view-frame .tc-tiddler-controls { font-size: 1.5em; } .tc-tiddler-view-frame .tc-tiddler-controls, .tc-tiddler-view-frame .tc-tiddler-controls > span > button, .tc-tiddler-view-frame .tc-tiddler-controls > span > span > button, .tc-tiddler-view-frame .tc-tiddler-controls > span > span > span > button { display: flex; align-items: center; justify-content: center; } .tc-tiddler-view-frame .tc-tiddler-title-icon svg { max-height: 0.65em; } /* EDIT FRAME */ .tc-tiddler-edit-frame .tc-tiddler-edit-title { color: transparent; line-height: 0; } .tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor { font-size: 1.2em; } .tc-tiddler-edit-frame .tc-message-box { margin: 0; } .tc-tiddler-edit-frame iframe.tc-edit-texteditor { margin-top: 0 !important; } .tc-tiddler-edit-frame .tc-editor-toolbar { background: <<colour tiddler-editor-border>>; } .tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { background: transparent; } .tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { transition: 200ms fill; fill: <<colour foreground>>; } .tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible:hover { background: transparent; fill: <<colour primary>>; } input::placeholder { font-size: 0.9em; } .tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor, .tc-tiddler-edit-frame .tc-edit-tags, .tc-tiddler-edit-frame .tc-edit-field-add-name input.tc-edit-texteditor, .tc-tiddler-edit-frame .tc-edit-field-add-value input.tc-edit-texteditor, .tc-tiddler-edit-frame input.tc-edit-typeeditor.tc-popup-handle, .tc-tiddler-edit-frame input.tc-edit-texteditor.tc-popup-handle { border: 1px solid <<colour background>>; border-bottom: 1px solid <<colour tiddler-editor-border>>; <<box-shadow "none">> } .tc-tiddler-edit-frame textarea { border: 1px solid <<colour tiddler-editor-border>>; <<box-shadow "none">> } .tc-tiddler-edit-frame textarea, .tc-tiddler-edit-frame iframe.tc-edit-texteditor { font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}}; border: 1px solid <<colour background>>; <<box-shadow "none">> } .tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor { font-weight: bold; } .tc-tiddler-edit-frame .tc-type-selector { padding-bottom: 10px; border-bottom: 1px solid <<colour tiddler-editor-border>>; } </$reveal> /* TIMELINE */ .jd-timeline-wrapper { position: relative; } @media (max-width: <<bkrpnt>>) { .jd-timeline-wrapper { padding: 0 1em; width: 100%; } } .jd-paperview-wrapper { display: flex; flex-wrap: wrap; margin: 0.25em 0; } .jd-paperview { position:relative; width: 31%; margin: 1%; overflow:hidden; border: 0.5px solid {{$:/themes/jd/Mono/Database##grid-item-border}}; border-radius: 1px; <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.09)">> text-align: left; } @media (min-width: <<bkrpnt>>) { .jd-paperview { height: 26em; } } @media (max-width: <<bkrpnt>>) { .jd-paperview { height: 12em; } } .jd-paperview, .jd-paperview-end { background: {{$:/themes/jd/Mono/Database##grid-item-background}} !important; } .jd-paperview-end { position: absolute; bottom: 0; left:0; width: 100%; height: 5px; } .jd-paperview-internal { transform: scale(0.7); position: absolute; width: 110%; height: 100%; top: -5%; left: -5%; pointer-events: none; } .jd-paperview-wrapper .tc-menu-list-subitem { width: 100%; } @media (min-width: <<bkrpnt>>) { .jd-paperview-end { box-shadow: 0 0 10px 10px {{$:/themes/jd/Mono/Database##grid-item-background}}; } } @media (max-width: <<bkrpnt>>) { .jd-paperview-end { box-shadow: 0 0 5px 5px {{$:/themes/jd/Mono/Database##grid-item-background}}; } } .jd-paperview-date { padding: 0.1em 0; } .jd-paperview-date { position: sticky; z-index: 1; background: {{$:/themes/jd/Mono/Database##header-background}}; box-shadow: 0 0 2px 2px {{$:/themes/jd/Mono/Database##header-background}}; } @media (min-width: <<bkrpnt>>) { .jd-paperview-date { top: {{$:/themes/jd/Mono/Database##header-position-desktop}}; } } @media (max-width: <<bkrpnt>>) { <$list filter="[[$:/state/searchbar]text[show]]"> .jd-paperview-date { top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}}; } </$list> <$list filter="[[$:/state/searchbar]!text[show]]"> .jd-paperview-date { top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}}; } </$list> } /* MISC */ hr { border: none; border-top: 1px solid <<colour table-border>>; height: 1px; } .tc-sidebar-scrollable .tc-tab-buttons, .tc-tiddler-frame .tc-tab-buttons { margin-bottom: -3px; } .tc-story-river .tc-tab-buttons.tc-vertical button { border-top: 1px solid <<colour tab-border>>; border-left: 1px solid <<colour tab-border>>; border-bottom: 1px solid <<colour tab-border>>; border-right: 1px solid transparent; } .tc-story-river .tc-tab-buttons.tc-vertical .tc-tab-selected { border-top: 1px solid <<colour tab-border-selected>>; border-left: 1px solid <<colour tab-border-selected>>; border-bottom: 1px solid <<colour tab-border-selected>>; border-right: 1px solid transparent; } .tc-sidebar-lists .tc-tab-set .tc-tab-divider { border-top: none; height: 1px; background-image: linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%); background-image: -o-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%); background-image: -moz-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%); background-image: -webkit-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%); background-image: -ms-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%); } /* SIDEBAR MORE TAB BUTTONS */ .tc-more-sidebar .tc-tab-buttons.tc-vertical { margin-top: 1em; } .tc-more-sidebar .tc-tab-buttons.tc-vertical > button { margin-bottom: -1px; border-top: 1px solid <<colour sidebar-tab-border>>; border-right: 1px solid transparent; border-bottom: 1px solid <<colour sidebar-tab-border>>; border-left: 1px solid <<colour sidebar-tab-border>>; } .tc-more-sidebar .tc-tab-buttons.tc-vertical > button.tc-tab-selected { border-top: 1px solid <<colour sidebar-tab-border-selected>>; border-right: 1px solid transparent; border-bottom: 1px solid <<colour sidebar-tab-border-selected>>; border-left: 1px solid <<colour sidebar-tab-border-selected>>; } .tc-more-sidebar .tc-tab-content.tc-vertical { margin-left: 1px; } .tc-menu-list-item { padding-left: 5px; text-indent: -5px; white-space: normal !important; word-wrap: break-word !important; -webkit-word-break: break-all !important; -moz-word-break: break-all !important; -ms-word-break: break-all !important; -o-word-break: break-all !important; word-break: break-all !important; } button, input { outline: none; } button, input:not([type]) { border-radius: 2px; } input:not([type]) { border: 1px solid <<colour tiddler-editor-border>>; padding: 2px 4px; margin: 2px; } button { border: 1px solid <<colour button-border>>; padding: 6px 16px; margin: 2px; } @media (max-width: <<bkrpnt>>) { .desktop-only { display: none !important; pointer-events: none; } } @media (min-width: <<bkrpnt>>) { .mobile-only { display: none !important; pointer-events: none; } } .tc-topbar.tc-topbar-left, .tc-topbar.tc-topbar-right { display: none; pointer-events: none; } .tc-dropzone > p, .tc-topbar p, .tc-sidebar-lists-template > p, .tc-topbar .tc-sidebar-lists > p { margin: 0; } @media (min-width: <<bkrpnt>>) { div::-webkit-scrollbar { background: rgba(0, 0, 0, 0.12); } div::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.12); } } .tc-notification { <<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.45)">> border-radius: 1px; }
{ "tiddlers": { "$:/themes/tiddlywiki/snowwhite/base": { "title": "$:/themes/tiddlywiki/snowwhite/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\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: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\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 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\\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\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\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\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\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\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/*\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/*\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-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}\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\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: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\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\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\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\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: text-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/*\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.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.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-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: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\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}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/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}\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\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.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: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/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.2em;\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\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\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: {{$:/themes/tiddlywiki/vanilla/metrics/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: 20%;\n}\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\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 {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\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: {{$:/themes/tiddlywiki/vanilla/metrics/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 foreground>>;\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: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** 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** 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: {{$:/themes/tiddlywiki/vanilla/metrics/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 > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\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/*\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}" }, "$:/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": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. 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/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\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 font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * 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/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. 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/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct 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/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. 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/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n" }, "$:/themes/tiddlywiki/vanilla/settings/fontfamily": { "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily", "text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"" }, "$:/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" } } }
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WHRsQcxw/JRrTkK+oFviiPQzrvX4O7u4egzuwQG0fSHpUpylXab0bWFHiKQ04RJJm7gn+8b0j+HiCBtEDSdS9UwUStOQifY5bp80y270uDmss91Th2M3L5zV+Veu69Wvv6UT586GrYnbezkmBCxcjsmL8DRMwARMwARMwARMwARMwARMwARMwARMwARMwARMwARmBHAPijxJu93S0eGhdu6TeLl7X3c+/UL79++rsburBXqlrFbntEXaZY2kxyryZalS1kKlpHmER5FEzLDepuQY6RLSKVzusUBBciBMYkRJsLQsGNvpjlhlo98LiZP4g2iJpMtMtcyOifNCkMQcU0kT0iQsC4InxE4e2ZOJsmBZ1vw24beQLpyUSpe4T3oNrpuQaBkxT2qNKUHEDLE/LeZaJxGz02rqHumWu0d1dTE6pdVlff3bv6Vv/rNvq7awotKce7cA9VgtFi7H6nV4MiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAk8IoCLUJwnSqjdT8bK/s6Oj3T219g/U3DtQDyGRGQ0oK5bRHAKmRvJlrpBXjbFSqmgdIVNGkOSi8T3y40kpsViHVMGEpOvUoaQ3pZF9CBG2Q7mEbIlj4tsTURKyJDMzJql0CdkSyZYMSZrslH4upFNCvcQd0l4xbE2ZX/R2SdMscR++hqxJSNCMWUeypcd2C9Fy0O+RbOloj7E/6CtBIC1tb+nstWu68so1Xb52hXvQlwah4+V4EbBwOV7vw7MxARMwARMwARMwARMwARMwARMwARMwARMwARMwARP4OwhERmQ4GGjQ7anfauuzX36smzc+04Mv76h71CASk6SluqJNfZmkyElKjr126ZIWaUCfm9LX5ck1I22SChdESipLkCwzPZJ6FbQIuoQllS1x15mcCUETniUtQcYxqXjhVwIxCBe+T8i3hFjhO8GVVKREP5e080s0fEHEZOjXErInScfst1A+7VGiBnJlr9PWbpPBukHfmEEuq81L53X1zVf11je/oeWVFZVz5Zidl2NIwMLlGL4UT8kETMAETMAETMAETMAETMAETMAETMAETMAETMAETOC/JRAOZExaZUyPlya9TeqHR/R32dXR/r5azabajSZpmIaaB/ua9DuqYEeqlOsq5OnrgngpM2JdKca6qHKhqArJmEqxoBJlwApIkfFgqISG9rmQ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XZYtueJesGVjjKk2phqSEEISQhISSIAQwj9ASChJCEkICSRAIJRQbbADNti42+AiYWNJLupltStt7738z2+exn5er+SVtOW93W+S4b5y79yZ38xd63zvnDOLfDv1vDkZcsVOYbt27rHOjg5raWkzBB4VERABERhLADHHHRttzUmrg5BTXlHuIZrZY0/TexGYcgISdKYcsW4gAiIgAiIgAiIgAqlBgNAs8u2MjPrRxRwEjEEXd0bcQ2fIvXeyPBlymYdbzdWkyHg6tbqQ09/fHzyeELpUREAERGA8AnjpVFZWWLYLOeQcy/TdAVVEYLoJSNCZbuK6nwiIgAiIgAiIgAiIgAiIgAiIgAiIgAicIAEJOicIUJeLgAiIgAiIgAiIgAiIgAiIgAiIgAiIwHQTkKAz3cR1PxEQAREQAREQAREQAREQAREQAREQARE4QQISdE4QoC4XAREQAREQAREQAREQAREQAREQAREQgekmIEFnuonrfiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJwggQk6JwgQF0uAiIgAiIgAiIgAiIgAiIgAiIgAiIgAtNNQILOdBPX/URABERABERABERABERABERABERABETgBAlI0DlBgLpcBERABERABERABERABERABERABERABKabgASd6Sau+4mACIiACIiACIiACIiACIiACIiACIjACRKQoHOCAHW5CIiACIiACIiACIiACIiACIiACIiACEw3AQk6001c9xMBERABERABERABERABERABERABERCBEyQgQecEAepyERABERABERABERABERABERABERABEZhuAhJ0ppu47icCIiACIjDpBEZHR0ObgwODNjIyYiOjI5N+DzUoAiIgArOFQGZGps2bN8+yc7LDcbaMS+MQAREQgblGQILOXJtxjVcEREAEZhkBxJy21nbr6uqyn992lx2orbeWljYbGOifZSPVcERABETgxAlkZ2fbggU1VlFZYW+8/jorKSm2jIyME29YLYiACIiACEw7AQk6045cNxQBERABEZhMAnjkNDY0WXt7h934/Zts9+591tvbZ0NDQ/rleTJBqy0REIG0J8DfxczMTKusLLfqmir74z95p5VXlEnQSfuZ1QBEQATmKgEJOnN15jVuERABEZglBIaGhu3JJ56y+rqD9tnP/Lvt3L7LLrzwIjdWqoORQliB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/DMeBdrsGbweUclnSkCCzpkS1PMikMQEWltbbc+efbZq/Rb7t6/9zI40t1iHT36OH09x01WzRfPOtovOn2YzZ0y1WTPPTmJSaroIiIAIiIAIiEC8EcDyq9mtzu+4+9cu5uy0F5ZvstpDTT7PMUtPS7VRw8usvKTQ/vzP3mvTzhrnlqCFLvSkxlszVV8REIE4JiBBJ447T1UXgcEmUFfXYMtXrLb1m6rtR7942NqIW3LsuJshuzmrxyq5+tI5do2nMWNG2rixowa7uipfBERABERABERABHpNgBg6uFw99uQLttOt0B98bKntqjlonUe7gpVOecmJGIEf+eAN7nY1zsaNG22ZmRm9zl83ioAIiMCZEpCgc6YE9bwIJDGB3Xv22gMPPWXbdu21Xz+xzP3KTwREznBT1lI3Qb75ukV24zsuslI/ErK0tDiJSanpIiACIiACIiAC8UgAd75XXllju/fst5/c+aht3bnXN7CwRu7yzav0EFD3g7dc4RY6Y23e3FmmeCzx2MuqswjELwEJOvHbd6q5CAwaAWImdXpQwG07dtntdzxku92v/OWVm6zTg2Nz5edm29iRlfbOaxYGv/K8/DzL96RLBERABERABERABOKJAHOe6uo9VltbZ1///i9t45ZqO9zc5lY6R8MJV5xudcNV59vUSWPs6isv8vlOruK1xVMHq64iEOcEJOjEeQeq+iIwGATYrWppabGNm7bbN753hx04VG/bq2v9KM/odKt8O2/6eLvm8gV2xaUXhKNjZYI8GD2lMkVABERABERABM6UAHOexsYj9sWv/MhWrdtsB+tPnHZFvECski+ed46dNXGk3fqe663Ig+1qznOmxPW8CIhAbwlI0OktKd0nAiJwkgDBkHfv3uu7VDvtBz+9z+oajti+2sYTQQL9oIAhlSV21aLZtmjBbDt/zkzfqUrVbtVJevogAiIgAiIgAiIQTwQ63CoZUee2H91t6zdus9WvVVvT4ZbQBI4vnzqpysaPHm6f+vj7rbysxHJycvxwCFd7dImACIhAPxOQoNPPgJW9CCQigYaGRluzZoNtcLPjn971mDU3t9phP8aTo60y09Nt7KhKe/9Nl9q5M6fZlCkTExGB2iQCIiACIiACIpBEBNr9+PJf3f+4bd2+yx5+eoVvZNWH1qf63Ke8LM9GDKu0L/79n9nQIeVWWFig066S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
Anders Hagen Jarmund. [ext[Kontakt meg|mailto:ajarmund@gmail.com]]
\define tag2(tag) <$set name=currentTag value="$tag$"> {{||$:/core/ui/TagTemplate2}} </$set> \end \define countButton() <$button class="tc-btn-invisible"> <$action-sendmessage $message="tm-close-tiddler" $param="Hjem" /> <$list filter='[all[tiddlers]has[exercise]stage{Hjem!!stage}tag<tags>year<year>!nsort[]]'> <$action-navigate $to=<<currentTiddler>> /> </$list> <$list filter="[all[tiddlers]has[exercise]stage{Hjem!!stage}tag<tags>year<year>count[]]"><<currentTiddler>></$list> </$button> \end \define yearButton() <$button class="tc-btn-invisible"> <$action-sendmessage $message="tm-close-tiddler" $param="Hjem" /> <$list filter='[all[tiddlers]has[exercise]stage{Hjem!!stage}year<year>!nsort[]]'> <$action-navigate $to=<<currentTiddler>> /> </$list> <b><<year>></b> </$button> \end <style> .alert { padding: 20px; background-color: #f44336; color: white; opacity: 0.83; transition: opacity 0.6s; margin-bottom: 15px; } </style> <$list filter=[{Hjem!!stage}match[X]]> <div class="alert"> <strong>Kjære ICD!</strong> <br /> Min tid som medisinstudent nærmer seg slutten og det er behov for at noen andre tar over vedlikeholdet av denne siden. Kanskje er det en oppgave som passer for akkurat deg? Det er nyttig med noe interesse for data og enkel kjennskap til f. eks. HTML, men det er ikke noe behov for erfaring med programmering el.l. <a href="mailto:ajarmund@gmail.com">Ta kontakt</a> om du er interessert!<br/> - <i>Anders</i> </div> </$list> <$list filter=[{Hjem!!stage}match[X]]> <div class="alert"> <strong>Kjære IAB!</strong> <br /> Min tid som medisinstudent nærmer seg slutten og det er behov for at noen andre tar over vedlikeholdet av denne siden. Kanskje er det en oppgave som passer for akkurat deg? Det er nyttig med noe interesse for data og enkel kjennskap til f. eks. HTML, men det er ikke noe behov for erfaring med programmering el.l. <a href="mailto:ajarmund@gmail.com">Ta kontakt</a> om du er interessert!<br/> - <i>Anders</i> </div> </$list> <$list filter=[{Hjem!!stage}match[X]]> <div class="alert"> <strong>Kjære IIAB!</strong> <br /> Min tid som medisinstudent nærmer seg slutten og det er behov for at noen andre tar over vedlikeholdet av denne siden. Kanskje er det en oppgave som passer for akkurat deg? Det er nyttig med noe interesse for data og enkel kjennskap til f. eks. HTML, men det er ikke noe behov for erfaring med programmering el.l. <a href="mailto:ajarmund@gmail.com">Ta kontakt</a> om du er interessert!<br/> - <i>Anders</i> </div> </$list> <$list filter=[{Hjem!!stage}match[X]]> <div class="alert"> <strong>Kjære kull 18!</strong> <br /> Da var oversikten oppdatert for IIIC. Lykke til med lesing!<br/> - <i>Anders</i> </div> </$list> Trykk på et av tallene i tabellen (enten årstall eller et annet tall) for å åpne alle tilhørende oppgaver. Trykk på den gule "pillen" for å få oversikt over enkeltoppgavene. Databasen inneholder totalt <$text text={{{[has[exercise]count[]]}}}/> oppgaver. Hvis du roter deg bort, vil hjem-knappen oppe til venstre ({{$:/core/ui/Buttons/home}}) ta deg hit igjen. Du kan også lagre denne databasen til din egen pc ved å trykke på {{$:/core/ui/Buttons/save-wiki}}. #-tegnet gir deg link til en bestemt oppgave, og {{$:/me/unfold}} lar deg vise alle svar (nyttig hvis du skal skrive ut), mens {{$:/me/fold}} skjuler dem igjen. Merk at feil kan forekomme, ikke nøl med å ta kontakt med meg: <a href="mailto:ajarmund@gmail.com">ajarmund@gmail.com</a><br> Siden blir nå oppdatert av IT-sjef i MF Placebo, send mail om du oppdager noe feil! <a href="mailto:itsjef@mfplacebo.no">itsjef@mfplacebo.no</a> <hr/> !! Sortert på fagfelt <style> tr:hover {background-color:#f5f5f5;} </style> <table style="width:100%"> <tr> <th>Fagfelt</th> <$list filter="[all[tiddlers]has[exercise]stage{Hjem!!stage}each[year]!nsort[]get[year]]" variable="year"> <th><<yearButton>></th> </$list> </tr> <$list filter="[all[tiddlers]has[exercise]stage{Hjem!!stage}tags[]nsort[]]"> <$list filter="[all[current]tag[Fagfelt]]" variable="tags"> <tr> <td><$macrocall $name="tag2" tag=<<tags>> /></td> <$list filter="[all[tiddlers]has[exercise]stage{Hjem!!stage}each[year]!nsort[]get[year]]" variable="year"> <td style="text-align: center"><<countButton>></td> </$list> </tr> </$list> </$list> </table> <hr /> <small>Denne siden er laget og vedlikeholdt av [[Anders H. Jarmund|AHJ]]. Oppgavene er utarbeidet av forelesere ved NTNU. Disse er navngitt der de er oppgitt i oppgavesettene. Original-oppgavene kan finnes på NTNUs [ext[hjemmeside|https://innsida.ntnu.no/wiki/-/wiki/Norsk/Eksamensoppgaver+-+Medisin+-+MH]]. Det er gjort mindre endringer i typografi og skrivefeil kan være rettet opp. NTNU er ikke formelt knyttet til prosjektet, og jeg tar ikke ansvar for ev. feil eller mangler. Siden ble laget etter idé fra Sverre H. Sørgjerd på [ext[CAME|https://www.ntnu.no/came]]. Siden er bygget på den åpne programvaren [ext[TiddlyWiki|https://tiddlywiki.com]].</small>
<div class="oppgave"> <div class="vignett"> !!Vignett Enzymer fungerer som biologiske katalysatorer i cellen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Enzymer: beskriv hva slags biokjemiske forbindelser de er, gjør rede for deres funksjon i biologiske systemer og for virkningsmekanismen for denne funksjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enzymer er stoffer som dannes i levende celler og som setter cellen i stand til å utføre og regulere det tusentall av kjemiske reaksjoner som er nødvendige for dens livsprosesser. De fleste enzymer er proteiner, noen er RNA (også kalt ribozymer; f.eks. i RNA spleising eller i protein-translasjon). Bare ved hjelp av sine enzymer kan cellene holde stoffskifteprosessene i gang og avpasse deres hastigheter. Enzymer inngår i praktisk talt alle prosesser i en levende celle. Enzymene er katalysatorer. En katalysator er i kjemisk forstand et stoff som deltar i en prosess og øker dens hastighet uten selv å bli forbrukt. Katalysatoren gjendannes eller frigjøres uforandret og blir ikke bundet i de produktene som den medvirker til å danne. På samme måte fungerer enzymene i cellen: De er biologiske katalysatorer som katalyserer (fremskynder) cellens stoffskifteprosesser. Aktiveringsenergi er den formen for ekstra energi som kreves for å starte en reaksjon. Den kan oppfattes som en prosess hvor reaktantene får et ekstra puff (dvs. en energitilførsel og økning i fri energi hos reaktantene) for å komme over en energibarriere (dvs. en ustabil tilstand kalt en overgangstilstand "Transition state") slik at en "nedoverbakke-reaksjon" kan komme i gang med dannelse av produktene. For noen reaksjoner vil romtemperatur gi tilstrekkelig termisk energi til at reaktantene når overgangstilstanden på kort tid . I de fleste reaksjoner vil dette imidlertid først kunne skje etter oppvarming. Enzymet virker ved å nedsette aktiveringsenergi-barrieren slik at reaksjonen kan foregå ved normal temperatur. Enzymet kan ikke endre ΔG for en reaksjon dvs. kan ikke gjøre en endergon reaksjon exergon. Enzymer er spesifikke dvs. de virker kun på bestemte reaktanter eller substrater. Enzymet får ofte navn etter substratet ved tillegg av endelsen ”- ase” (f.eks. virker enzymet sukrase på disakkaridet sukrose). Men - mange enzymer har navn som ikke følger dette mønster (f.eks. trypsin som er et fordøyelsesenzym som nedbryter proteiner) Enzymenes tredimensjonale struktur danner såkalte aktive sentra som interagerer særlig hensiktsmessig med overgangstilstanden av substratet/reaktantene. Substratmolekylene/reaktantene, som i forhold til enzymene er meget små molekyler, tiltrekkes av de aktive sentrene og fastholdes av fysiske eller kjemiske krefter mens de "overvinner" aktiveringsenergi-barrieren for den katalyserte biokjemiske reaksjonen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi eksempler på tre hovedgrupper av enzymer og deres funksjon </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nukleaser, syntaser, polymeraser, kinaser, fosfataser, ATPase </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags kjemiske og fysiske faktorer påvirker reaksjonshastigheten i den katalyserte prosessen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reaksjonshastigheten er påvirket av konsentrasjonen av substratet(-ene) og av enzymet som virker på det. I tillegg vil en rekke kjemiske og fysiske faktorer - som endrer enzymets 3D-form - påvirke aktiviteten: * temperatur * pH * enzym-cofaktorer * inhibitorer og aktivatorer Enzym-hastigheten øker med temperaturen opp til et punkt (temperatur-optimum), for så å falle. Årsaken er at her er den induserte tilpassing (induced fit) optimal for enzymets funksjon. Ved høye temperaturer denaturerer enzymet. I kroppen vår er optimumstemperaturen 37.5*C. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Karsten, 69 år ble innlagt i sykehuset med økende plager i form av tung pust ved lettere anstrengelse og økende hevelse i beina, først omkring anklene og etter hvert opp til knærne. Karsten hadde fra før kjent hjertesvikt etter gjennomgått hjerteinfarkt 8 år tidligere. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du nevne tre andre vanlige årsaker til utvikling av hjertesvikt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hypertensjon, kardiomyopatier, hjerterytmeforstyrrelser, thyreotoxikose, anemi, kronisk lungesykdom, alkohol, NSAIDS </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Karstens hjertesvikt med tung pust begrenset hans aktivitetsnivå. Like før han ble lagt inn i sykehuset klarte han ikke å gå en hel etasje i trapp uten å måtte stoppe opp for å hvile en liten stund før han kunne gå videre. Hjertesvikt klassifiseres ofte i henhold til funksjonsklasser, som oftest ved hjelp av kriteriene beskrevet av New York Heart Association (NYHA). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken NYHA-klasse passer best Karstens funksjonsnivå slik det var like før han ble lagt inn i sykehuset? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> NYHA-klasse III helt korrekt og gir 2 poeng, NYHA-klasse II gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved innkomst i sykehuset ble det foretatt en registrering av hjertets aktivitet med et elektrokardiogram (EKG). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er benevnelsen på de markerte elementene 1, 2 og 3 i elektrokardiogrammet som vist nedenfor? <<imgLink "IAB-2015-2-A.PNG" 500>> </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # T-bølge # P-bølge # R-takk, subsidiært QRS-kompleks </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke elementer i elektrokardiogrammet markerer depolariseringen av myokard henholdsvis i ventriklene og i atriene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> QRS og P </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Standardavledningene i et 12-kanalers EKG blir registret fra elektroder plassert henholdsvis på høyre og venstre over- og underekstremitet </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Mellom hvilke elektroder registreres elektrisk aktivitet i standardavledning I? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mellom venstre overekstremitet og høyre overekstremitet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siri og Rolf har 4 barn. Datteren Kari fikk en gutt, Ole, som ble født med en muskelsykdom. Ole er mentalt tilbakestående og han har myotoni (forsinket avstiving av muskler) og muskelsvakhet. Etter utredning hos pediater og genetiker, får han diagnosen dystrofia myotonika. På konsultasjon med utredende lege, kommer det frem at Kari også har myotoni og Siri har grå stær. Kari har en søster og to brødre. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tegn familietre. Kan Oles diagnose skyldes arv, eller er det noe som er nyoppstått i fosterutviklingen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dystrofia myotonika (DM) er en autosomalt dominant arvelig tilstand som kan forverres fra generasjon til generasjon. <<imgLink "IAB-2015-3-A.PNG" 400>> </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dystrofia myotonika er en triplettekspansjonssykdom. Hva er dette og hva menes med at det er en tilstand med antisipering? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> DM skyldes mutasjoner som kan endres fra generasjon til generasjon. Antisipering betyr at sykdom i en familie opptrer ved stadig yngre alder og gir alvorligere sykdom for hver generasjon. Dette skyldes økende antall av en repeterende enhet - tripletter av nukleotider. DM type 1 er den vanligste formen av DM, og den skyldes en repetisjon av CTG i DMPK genet. Normalt er det mellom 5-37 repetisjoner, mens 50 til tusener av repetisjoner gir sykdom. Dess flere repetisjoner, dess alvorligere sykdom. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) En av Karis brødre ønsker å få barn. Hva er risikoen for at han også skal få et barn med dystrofia myotonika? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Risiko for at barnet til Karis bror skal få DM er 25%. Det er 50% risiko for at broren skal ha arvet DM fra mor Siri. Videre er det 50% sannsynlighet for at hans barn igjen skal arve genfeilen. Dette gir 0.5x0.5=0.25 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva betyr det at dystrofia myotonika er en tilstand med locus heterogenisitet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Locus heterogenisitet betyr at mutasjoner i forskjellige gener kan føre til den samme fenotypiske sykdommen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 30 år gammel dame kommer til deg som fastlege på grunn av vedvarende tendens til diaré og diffuse magesmerter, slapphet og 3 kg vekttap over de siste 6 månedene. Endoskopisk biopsi fra tolvfingertarmen viser uttalt ødeleggelse av tarmtottene (totteatrofi) og kronisk betennelse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor en slik ødelagt slimhinne kan gi redusert absorpsjon av næringsstoffer (malabsorpsjon). Nevn to andre prinsipielle grunner relatert til magetarm-systemet som kan gi malabsorpsjon. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Redusert overflate av slimhinnen på grunn av totteatrofien, betennelsen gir ødeleggelse av enterocyttene og manglende «brush border» med alle fordøyelsesenzymene lokalisert der, manglende kontakt mellom innholdet i tarmlumen og enterocyttene på grunn av betennelsen hindrer også selve opptaket over enterocyttene. Manglende enteropeptidase(/kinase) fra enterocyttene vil også hemme aktiveringen av de pankreatiske proteasene Andre prinsipielle grunner i tillegg til ødeleggelse/betennelse av tarmslimhinne: * Reduksjon eller mangel på fordøyelsesenzym; medfødt mangel av enzym (eks laktasemangel), mangel av pankreasenzym på grunn av pankreassvikt (i tillegg til mangel av enzym pga ødelagt slimhinne som nevnt over) * Reduksjon eller mangel på andre nødvendige faktorer som gallesalter (nedsatt galleproduksjon eller avløp, eller manglende enterohepatisk resirkulasjon) eller intrinsisk faktor fra parietalceller i magesekken (Vit B12 mangel) * Endret miljø i tarmen; redusert pH i duodenum (eks pga manglende nøytralisering, økt syreproduksjon), bakterieovervekst i tynntarm * For lite tarm ("short bowel syndrome" etter reseksjoner av tarm) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Videre undersøkelser påviser malabsorpsjon og mangel av blant annet jern. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv mekanismene for fordøyelse og absorpsjon av proteiner i tarmen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ingen direkte lagring av protein i kroppen, har et visst dagsbehov. Inntaket er ca likt fordelt mellom proteiner i kosten og proteiner i utskilt mage/tarmsekret og avskalling av epitel. Nedbrytningen skjer ved proteaser som alle skilles ut som inaktive proenzym; starter i magesekken der pepsinogen skilles ut fra hovedceller ("chief cells") i corpus/fundusslimhinnen. Dette aktiveres i den sure pH i magesekken ved auto-proteolyse. Den største mengden proteaser skilles ut i tarmen fra eksokrine celler i pankreas. Disse aktiveres av et enzym som kalles enterokinase (eller enteropeptidase) som produseres i enterocyttene og skilles ut i lumen/sitter i mikrovilli. Dette enzymet spalter trypsinogen fra pankreas til aktivt trypsin, som igjen spalter de andre pankreatiske proenzymene, inkludert flere trypsinogen til flere trypsin som igjen spalter flere osv ("positiv feed-forward"). Pepsin og pankreasenzymene har alle proteinkjeder/polypeptider som substrat, med noe ulik spesifisitet på hvilke type bindinger de helst spalter (kalles endo- eller eksopeptidase avhengig av om de spalter inni eller på endende), og spalter de ned til peptider, oligopeptider, dipeptider og noe aminosyrer. I tillegg sitter det en mengde ulike enzym (peptidase, aminopeptidaser, dipeptidaser, dipeptidyl aminopeptidaser) i mikrovilli og i cytoplasma på innsiden av cellemembranen som spalter disse mindre produktene videre ned til aminosyrer, som i all hovedsak er det som transporteres ut i blodet fra den basolaterale siden av enterocyttene. Det finnes flere ulike system i både luminal og basolateral membran som transporterer produktene over membranene. Aminosyrer diffunderer også i stor grad ut av enterocyttene til blodet. Både i mengde og effektivitet er transporterne for di-, tri-og oligopeptider og de cytoplasmiske peptidasene som spalter videre ned til aminosyrer viktigst. (Så i motsetning til karbohydrater som må spaltes ned til minste enhet, monomer, før de kan absorberes til enterocyttene, tas proteiner opp som mellomprodukter og spaltes til minste enhet, aminosyrer, inni cellen før de går ut i blodet). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vognett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort mekanismene for absorpsjon av jern i tarmen. Hvilket hormon regulerer i stor grad denne absorpsjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Jern finnes som heme-jern (ca 10 %) og som treverdig jern (hydroksider) (ca 90%) i kosten. Treverdig jernhydroksid må ioniseres til Fe^^3+^^ og reduseres til Fe^^2+^^ før det kan tas opp. Finnes enzym (ferroreduktasen Dcytb) i brushborder av enterocyttene som katalyserer dette, men denne prosessen blir også godt hjulpet av magesyre og for eksempel askorbinsyre, eller også hemmet av for eksempel stoffer i te, kaffe, kornprodukter. Den spesifikke Fe^^2+^^ transporteren (metalliontransportør 1, DMT1) frakter jernet inn i enterocyttene der det kan lagres bundet til ferritin og som lavmolekylære ferroforbindelser i cellens "labile jern-pool" (og dermed tapes igjen når epitelcellene avskalles), eller transporteres til den basolaterale membranen hvor det transporteres ut via transporteren ferroportin, oksideres tilbake til Fe^^3+^^ via ferriooksidasen hefestin og raskt bindes til transferrin i blodet og transporteres til alle cellene i kroppen. Heme-jern spaltes fra globinet i magesekken og tas effektivt opp i enterocytter via en spesifikk hemetransporter. Heme spaltes i cytoplasma og frigjort jern inngår deretter i cellens labile jern-pool sammen med annet absorbert jern. Jernabsorpsjonen er i prinsippet avhengig av kostens innhold av jern (og andre påvirkende faktorer) og kroppens behov for jern. Små jernlagre eller økt produksjon av røde blodlegemer fremmer absorpsjon ved å regulere proteinnivået av de ulike enzymene og transporterne involvert i prosessen, og dette styres av peptidhormonet hepcidin som produseres i leveren. Normale eller store jernlagre gir høy transferrinmetning i blodet som stimulerer hepatocyttene til å produsere mer hepcidin. Dette binder seg ferroportin på enterocytter, makrofager og hepatocytter til et kompleks som internaliseres og degraderes slik at eksporten av jern til plasma går ned. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Jern er en essensiell komponent i mange biologiske prosesser, og transport av oksygen ved hjelp av binding til den jernholdige heme-gruppen i hemoglobin er en av de viktigste </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvordan heme brytes ned og skilles ut fra kroppen. Hvilke andre typer hemeproteiner finnes i kroppen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Store mengder heme, først og fremst fra hemoglobin, brytes ned i kroppen daglig. Røde blodceller har kort levetid (ca 120 dager) og gamle og ødelagte tas opp av det retikuloendoteliale systemet (RES) som er makrofager diffust spredt i vev som milt, lymfeknuter, tonsiller, lever osv. Det skjer også noe hemolyse i blodbanen. I RES brytes hemoglobin ned til globiner som degraderes videre til aminosyrer og til fritt jern som inngår i cellens jern-poole, og til heme som brytes ned til pigmentstoffene biliverdin og videre til bilirubin av enzymene heme oxidase og biliverdin reduktase. Dette ukonjugerte bilirubinet er fettløselig og vanskelig for kroppen å bli kvitt via nyrene. Derfor fraktes det i plasma bundet til albumin til lever og tas opp av hepatocytter via ulike mekanismer med høy kapasitet. Der konjugeres bilirubin hovedsakelig til to glukuronat og blir konjugert bilirubin (bilirubin diglukoronat) som er mer vannløselig, slik at det kan skilles ut i gallen.Dette skjer via aktive pumpemekanismer. Nedover i tarmen dekonjugeres bilirubin og omgjøres til urobilinogener av bakterieenzyme, hvorav det meste (ca 90%) oksideres videre til brunfarget sterkobilin som gir farge til og forsvinner ut av kroppen med avføringen. Resten (ca 10%) reabsorberes i terminale ileum og kolon og inngår i enterohepatisk resirkulasjon, men en liten andel av dette (ca 1-4%) går ut i blodsirkulasjonen og til nyrene hvor det omdannes til gulaktig urobilin som gir farge til og skilles ut av kroppen i urin. Heme finnes først og fremst i hemoglobin i erytrocytter, men også i myoglobin i skjelettmuskulatur og i enzymer som catalase, peroksidase og cytokromer i lever. Ikke nødvendig at studentene har med absolutt alle detaljer for å få full score, viktigst er de mest sentrale detaljene og at studentene beskriver og forstår hovedprinsippene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Denne oppgaven omhandler det endomembrane systemet hvor de største strukturene er endoplasmatisk reticulum og golgiapparatet. Forklar oppbygning og funksjon av det endomembrane systemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre strukturer i tillegg til endoplasmatisk reticulum og golgiapparatet inngår? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Endoplasmatisk retikulum (glatt og ru; forklare forskjell) – proteinsyntese, membran(protein)syntese, lipid-syntese * Golgiapparatet – protein-modifiseringer, lipidsyntese, transport fra ER/RER til andre deler av det endomembrane systemet * Sekretoriske vesikler – transport ut av cella * Endosomer – endocyterte vesikler (transport inn i cella), dynamisk samspill med andre vesikler, bl. a. lysosom-forstadier * Lysosomer – nedbrytning av makromolekyler og bakterier * Peroksysomer – stoffskifte, særlig lipidAlle strukturene er forbundet med hverandre gjennom membrantraffikk * Membrantrafikken er muliggjort ved biologiske membraners egenskaper (flytende lipid-dobbeltlag, ikke kovalente bindinger </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Denne oppgaven omhandler det endomembrane systemet hvor de største strukturene er endoplasmatisk reticulum og golgiapparatet. Forklar oppbygning og funksjon av det endomembrane systemet. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan står de ulike strukturene i forbindelse med hverandre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Alle strukturene er forbundet med hverandre gjennom membrantraffikk * Membrantrafikken er muliggjort ved biologiske membraners egenskaper (flytende lipid-dobbeltlag, ikke kovalente bindinger </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ei 11 år gammel jente hadde et uhell mens hun syklet, slik at hun falt på utstrakt høyre arm. Da hun kom til skadepoliklinikken, hadde hun så vondt i armen at hun ikke klarte å bevege albuen. Hun var litt hoven lateralt på overarmen og ved undersøkelse var det innskrenket bevegelighet i albuen. Særlig var fleksjonsevnen redusert. Leddet virket stabilt, og det var ikke tegn til alvorlig sirkulasjonsforstyrrelse. Det ble tatt røntgenbilder av albuen. Side- og skråbilde så slik ut: <<imgLink "IAB-2015s-2-A.PNG" 500>> Det ble gjort åpen reposisjon i narkose og det løse fragmentet ble fiksert med to skruer. Undersøkelse etter operasjonen viste god stabilitet og bevegelighet, og to dager senere ble pasienten utskrevet. Hun fikk hjelp av fysioterapeut til gradvis mobilisering, og ved kontroll et år etter skaden hadde hun tilnærmet full funksjon i albuen. Røntgenbildet så slik ut: <<imgLink "IAB-2015s-2-B.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvilke knokler som inngår i albuleddet, og forklar hvordan disse artikulerer med hverandre. Angi hvor mange frihetsgrader det er i albuleddet og hvordan de ulike bevegelsene benevnes </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Albuleddet er et sammensatt ledd, hvori inngår //humerus//, //radius// og //ulna//. Det har en sammenhengende leddhule, men kan inndeles i tre ledd med ulike bevegelser: //articulationes// (a) //humeroradialis//, (b) //humeroulnaris et// (c) //radioulnaris proximalis//). De to første utgjør til sammen et hengselledd, med en frihetsgrad: fleksjon og ekstensjon, mens det siste er et dreieledd (pivotledd) med en frihetsgrad: supinasjon-pronasjon. Til sammen blir dette to frihetsgrader i albuleddet som helhet. (//Articulatio humeroradialis// betraktet alene har også to frihetsgrader: fleksjon-ekstensjon og rotasjon.) # Leddskåla på //caput radii// artikulerer med //capitulum humeri// (den halvkuleformede, laterale delen av distale leddflate på //humerus//) # Proksimale //ulna// (//incisura trochlearis ulnae//) artikulerer med den mediale delen av //humeri// leddflate (//trochlea humeri//) # Siden av //caput radii// (//circumferentia articularis capitis//) artikulerer med laterale side av //ulna// (//incisura radialis ulnae//). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett <<< Ei 11 år gammel jente hadde et uhell mens hun syklet, slik at hun falt på utstrakt høyre arm. Da hun kom til skadepoliklinikken, hadde hun så vondt i armen at hun ikke klarte å bevege albuen. Hun var litt hoven lateralt på overarmen og ved undersøkelse var det innskrenket bevegelighet i albuen. Særlig var fleksjonsevnen redusert. Leddet virket stabilt, og det var ikke tegn til alvorlig sirkulasjonsforstyrrelse. Det ble tatt røntgenbilder av albuen. Side- og skråbilde så slik ut: <<imgLink "IAB-2015s-2-A.PNG" 500>> Det ble gjort åpen reposisjon i narkose og det løse fragmentet ble fiksert med to skruer. Undersøkelse etter operasjonen viste god stabilitet og bevegelighet, og to dager senere ble pasienten utskrevet. Hun fikk hjelp av fysioterapeut til gradvis mobilisering, og ved kontroll et år etter skaden hadde hun tilnærmet full funksjon i albuen. Røntgenbildet så slik ut: <<imgLink "IAB-2015s-2-B.PNG">> <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken knokkel er skadet hos den aktuelle pasienten, og hvor sitter skaden? Hvilken del av leddet er affisert? Hvilken av bevegelsene i albuleddet kan antas å være mest affisert av skaden? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det foreligger et brudd av distale humerus, slik at capitulum humeri er slått løs og dislosert oppad foran humerus. Dette fragmentet kan komme i beknip ved fleksjon, som må forventes å være den bevegelsen som er mest affisert. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi de viktigste musklene som bevirker de ulike bevegelsene i albuleddet, forklar i grove trekk hvordan de forløper og angi hvordan de er innervert. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Viktigste fleksorer er m. biceps brachii og m. brachialis springer ut fra hhv scapula og humerus, går omtrent midt foran leddet og fester hhv. på radius (tuberositas radii - men også margo posterior ulnae)og ulna (processus coronoideus). Innerveres av n. musculocutaneus. M. brachioradialis (samt i mindre grad mm. extensores carpi radiales og m. pronator teres) har også fleksjonsvirkning. Den springer ut fra laterale kant av distale humerus, fester distalt på radius, innerveres av n. radialis. M. triceps brachii er eneste ekstensor (idet m. anconeus har liten effekt), springer ut fra scapula og baksida av humerus, fester på olecranon (ulna), innerveres av n. radialis. M. biceps brachii er den vikigste supinator ved bøyd albuledd. Viktig er også m. supinator, som går fra proksimale ulna, rundt på baksida av radius og fester på radius. Innervasjon n. medianus. Pronatorer er mm. pronatores teres et quadratus, fra ulna til radius på forsida, innerveres av n. medianus. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett <<< Ei 11 år gammel jente hadde et uhell mens hun syklet, slik at hun falt på utstrakt høyre arm. Da hun kom til skadepoliklinikken, hadde hun så vondt i armen at hun ikke klarte å bevege albuen. Hun var litt hoven lateralt på overarmen og ved undersøkelse var det innskrenket bevegelighet i albuen. Særlig var fleksjonsevnen redusert. Leddet virket stabilt, og det var ikke tegn til alvorlig sirkulasjonsforstyrrelse. Det ble tatt røntgenbilder av albuen. Side- og skråbilde så slik ut: <<imgLink "IAB-2015s-2-A.PNG" 500>> Det ble gjort åpen reposisjon i narkose og det løse fragmentet ble fiksert med to skruer. Undersøkelse etter operasjonen viste god stabilitet og bevegelighet, og to dager senere ble pasienten utskrevet. Hun fikk hjelp av fysioterapeut til gradvis mobilisering, og ved kontroll et år etter skaden hadde hun tilnærmet full funksjon i albuen. Røntgenbildet så slik ut: <<imgLink "IAB-2015s-2-B.PNG">> <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) //Nervus ulnaris// går forbi albuleddet med nær relasjon til bein, på en slik måte at den kan bli skadet ved brudd i albuområdet. Er det sannsynlig at nerven er affisert i det aktuelle tilfellet? Begrunn svaret? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> //N. ulnaris// passerer bak mediale humerusepikondyl, og er neppe skadd, siden skaden sitter på lateralsida av leddet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den generelle oppbyggingen av et synovialledd. Beskriv særlig hvordan synovialmembran og brusk er oppbygd, og forklar hva slags funksjon disse strukturene har for leddets funksjon </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> To knokler støter mot hverandre, slik at kontaktflatene er dekt av et lag hyalin brusk, leddbrusk, cartilago articularis. Brusk er et spesialisert bindevev, med celler som ligger enkeltvis eller i små grupper (to-fire celler) i lakuner i intracellulærsubstansen. Sistnevnte består av kollagen (tynne fibre av særlig type 2) (strekkbestandighet) og rikelig grunnsubstans som inneholder store mengder proteoglykaner (protein + gykosaminoglykaner), mukopolysakkarider (trykkbestandighet). Brusk mangler blodkar. Leddet er omgitt av en synovialmembran som spenner seg mellom de to knoklene, ved overgangen mellom bein og brusk, slik at det dannes ei lukka leddhule (cavum articulare). Synovialmembranen består av et løst, karrikt, fibrøst bindevev, som inn mot leddhula er kledd av et sammenhengende lag med ganske cytoplasmarike celler, som har en viss likhet med epitel. Disse er ansvarlige for produksjonen av den gjennomsiktige, strågule leddvæska (synovia) - et ultrafiltrat av plasma tilsatt proteoglykaner slik at den blir ganske seig, som ligger som en film mellom de to bruskflatene og nedsetter friksjonen, og som sørger for ernæring til brusken. Utenfor synovialmembranen (og tilheftet denne) ligger den fibrøse leddkapselen, som holder de to knoklene sammen og sørger for mekanisk styrke til leddet. Mange ledd har i tillegg sterke fibrøse bånd som spenner seg mellom knoklene og som gir ytterligere styrke. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne på 48 år kommer på kontoret med smerter i høyre skulder som har vart i 2 måneder. Smertene startet etter at hun klippet hekken rundt huset. Hun har problemer i hverdagen når hun skal hente noe i høye kjøkkenskap, henge opp klær samt at hun våkner om natten når hun snur seg på høyre side. Skuldersmerter er et hyppig forekommende problem i befolkningen. I skulderen er det flere diagnostiske kategorier som kan knyttes til komplekse anatomiske forhold med flere ledd involvert. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ledd inngår ved bevegelser i skulderen? (ta med både synovialledd og glideflater) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 3 "ekte", dvs synovial ledd (AC leddet, gleno-humeral leddet og sternoclaviculær leddet) og 2 "falske" ledd (Scapulothoracal "leddet"; glideflaten mellom scapula og thorax og Subacromial "leddet" - glideflaten som utgjøres av subacromialbursa). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2.5 poeng til sammen: 0.5 pr riktig svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter musklene som er involvert i bevegelse og stabilisering av skulderleddet og nevn samlebetegnelsen for disse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Rotator-cuffen utgjøres av m. supraspinatus, m. infraspinatus, m.subscapularis, m. teres minor. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng til sammen: 1.0 for "rotator-cuffen" + 1.0 for de fire musklene som inngår. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du bestemmer deg for å undersøke henne, blant annet ved å se på aktiv bevegelighet. Du finner at hun har smerter ved aktiv abduksjon mellom 60 og 120 grader; dvs. såkalt "painfularc". I tillegg gjør du en del andre kliniske undersøkelser inklusive tre spesialtester: Hawkins test (som er positiv), Jobes test (som er negativ) og Compression-rotation test (som er negativ). Fra tidligere vignett: <<< En kvinne på 48 år kommer på kontoret med smerter i høyre skulder som har vart i 2 måneder. Smertene startet etter at hun klippet hekken rundt huset. Hun har problemer i hverdagen når hun skal hente noe i høye kjøkkenskap, henge opp klær samt at hun våkner om natten når hun snur seg på høyre side. Skuldersmerter er et hyppig forekommende problem i befolkningen. I skulderen er det flere diagnostiske kategorier som kan knyttes til komplekse anatomiske forhold med flere ledd involvert. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I tillegg til abduksjon, hvilke andre retninger for aktiv bevegelse bør du undersøke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Aktiv fleksjon, abduksjon og innad- / utadrotasjon. (I tillegg kan adduksjon også undersøkes, men dette har klinisk mindre betydning hos en slik pasient). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng dersom alle 4 er riktig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra tidligere vignetter: <<< Du bestemmer deg for å undersøke henne, blant annet ved å se på aktiv bevegelighet. Du finner at hun har smerter ved aktiv abduksjon mellom 60 og 120 grader; dvs. såkalt "painfularc". I tillegg gjør du en del andre kliniske undersøkelser inklusive tre spesialtester: Hawkins test (som er positiv), Jobes test (som er negativ) og Compression-rotation test (som er negativ). En kvinne på 48 år kommer på kontoret med smerter i høyre skulder som har vart i 2 måneder. Smertene startet etter at hun klippet hekken rundt huset. Hun har problemer i hverdagen når hun skal hente noe i høye kjøkkenskap, henge opp klær samt at hun våkner om natten når hun snur seg på høyre side. Skuldersmerter er et hyppig forekommende problem i befolkningen. I skulderen er det flere diagnostiske kategorier som kan knyttes til komplekse anatomiske forhold med flere ledd involvert. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I tillegg til aktiv bevegelse og spesialtestene som er nevnt, hvilke andre enkle kliniske undersøkelser vil du gjøre hos Kari? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Undersøkelse av passiv bevegelse og isometriske kraft må være med (abduksjon, fleksjon, innad og utadrotasjon (Adduksjon kan også nevnes, men har klinisk mindre betydning). I tillegg hører det med å gjøre en orienterende nevrologisk undersøkelse inklusive nakkeundersøkelse (helst med spurlings prøve) for å utelukke nerverotsmerte som differensial diagnose. Inspeksjon og palpasjon kan også nevnes. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2.0 poeng: For å få full score kreves at både passiv bevegelse og isometrisk kraft-testing er nevnt. Dersom undersøkelse av nakken er nevnt i tillegg, bør dette dra opp dersom kandidaten viser usikkerhet i svar på denne eller de andre oppgavene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra tidligere vignetter: <<< Du bestemmer deg for å undersøke henne, blant annet ved å se på aktiv bevegelighet. Du finner at hun har smerter ved aktiv abduksjon mellom 60 og 120 grader; dvs. såkalt "painfularc". I tillegg gjør du en del andre kliniske undersøkelser inklusive tre spesialtester: Hawkins test (som er positiv), Jobes test (som er negativ) og Compression-rotation test (som er negativ). En kvinne på 48 år kommer på kontoret med smerter i høyre skulder som har vart i 2 måneder. Smertene startet etter at hun klippet hekken rundt huset. Hun har problemer i hverdagen når hun skal hente noe i høye kjøkkenskap, henge opp klær samt at hun våkner om natten når hun snur seg på høyre side. Skuldersmerter er et hyppig forekommende problem i befolkningen. I skulderen er det flere diagnostiske kategorier som kan knyttes til komplekse anatomiske forhold med flere ledd involvert. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Med utgangspunkt i din kunnskap om normal anatomi, nevrologi og fysiologi: # Hvilke strukturer tester man ved vanlig klinisk undersøkelse av skulder? # Gi et kort resonnement for hvilke strukturer som kan være affisert hos denne pasienten. # Angi hva tror du er den mest sannsynlige årsaken til Karis skulderplager. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Ved passiv bevegelse testes de passive strukturene som ledd, leddkapsel og leddbånd. Ved isometriske tester testes kontraktile strukturer som muskel og sene samt at nevrologiske forutsetninger for kraftutvikling i muskulatur er til stede. Ved aktive tester får man testet en kombinasjon av overstående og får innblikk i funksjon. # "painful arc" er en test hvor pasienten gjør aktiv abduksjon og en tester således både passive og kontraktile strukturer samt nødvendig nevrogene forutsetning for aktiv abduksjon. Positiv "painful arc" innebærer smerter lateralt i skulderen i en bue med typisk området 60-120 grader. En kan finne positiv smertebue ved mange ulike tilstander i skulderen, men typisk er "impingement syndrom", dvs. smerter som utløses ved kompresjon av subacromiale strukturer som supraspinatus og subacromialbursa ut fra et biomekanisk rasjonale. Blant mer spissfindig er biomekaniske resonnementer inngår at svak eller skadet supraspinatus muskel kan føre til inneklemming og subacromial smerte fordi samlet kraft-vektor drar caput humeri mot taket i acromion. Positiv Hawkins test bygger på samme prinsipp hvor man i 90 grader fleksjon passivt innadroterer humerus slik at tuberculum majus komprimprimerer subacromiale strukturer og framprovoserer smerte. Testen er positiv dersom dette utløser smerte lateralt i skulderen og dette tyder også på "impingement syndrom" som årsak. Jobes (supraspinatus test) er en isometrisk test hvor armen holdes elevert til 90 grader i scapulas plan (ca 30 grader fleksjon) og tommelen peker mot gulvet (innarotasjon i glenohumeralleddet). Positiv test er svakhet som kan indikere ruptur av rotator-cuff muskulatur (spesielt supraspinatus). Siden Jobes test var negativ indikerer dette normal funksjon og integritet av rotatorcuffen (spesielt supraspinatus) inklusive normal nervefunksjon (C5 roten primært). Aktuelle strukturer som med mindre sannsynlighet er affisert er dermed: Nevrogene strukturer (slik som C5 radikulopati eller plexus nevritt). Artrose eller artritt i glenohumeral-ledd samt adhesiv kapsulitt/frozen shoulder som villle gitt nedsatt passiv bevegelse. AC ledds utløste smerter som ikke gir painful arc, men mer typisk smerte mot toppen av abduksjonsbevegelsen og lokalisering mer proximalt over AC leddet. Imidlertid kan de fleste tilstander i skulderen, inklusive labrum lesjoner (SLAP-lesjon), glenohumeral instabilitet og myalgi, gi sekundære impingementplager på grunn av endret muskelfunksjon under smertepåvirkning. # Mest sannsynlig årsak er "impingement syndrom", i tillegg kan det godkjennes supraspinatus tendinopati/tendinose, supraspinatus(del)ruptur, subacromialbursitt og rotatorcuff syndrom. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Samlet 1.5 poeng: 0.5 poeng per punkt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Diffusjonskapasiteten (diffusjonsevnen) for oksygen i lungene er en prosess som utgjør et av flere trinn som har betydning for gassvekslingen i kroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar med enkle ord hva diffusjon for oksygen i lungene innebærer. Når oksygen diffunderer i lungene, passerer gassen over en viktig anatomisk struktur. Hva heter den og hvordan er den bygd opp? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lungenes diffusjonskapasitet for oksygen (O,,2,,) beskriver hvordan (hvor lett og uhindret) O,,2,, passerer fra lungenes alveoler og over i blodet. På sin vei fra alveol-luften i lungene til blodbanen (lungekapillærene) passerer oksygenet den alveolokapillære membran = den respiratoriske membran. Den består av (fra alveolside til kapillærside) et lag surfaktant (som ikke er en anatomisk del av membranen), et epitellag (på alveolsiden-alveolepitel), denne hviler på epitellagets basalmembran, så et passerer oksygenet et tynt interstitielt-sjikt, så igjen en basalmembran (endotel-lagets basalmembran) og deretter et tynt lag kapillær-endotel. I den respiratoriske membran mangler ofte basalmembranen slik at epitel og endotel ligger mot hverandre. Membranen blir således svært tynn slik at avstanden som oksygen må diffundere ("diffusjonsveien") blir svært kort. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke anatomiske og fysiologiske forhold er avgjørende for lungenes gass-diffusjon? Hvorfor diffunderer karbondioksid mye lettere enn oksygen og hvilken klinisk konsekvens har det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Størrelsen av gassvekslings-arealet (dvs. den alveolokapillære membran) mellom alveol og kapillær og dermed lungevolumet (det alveolære lungevolum) * Veggtykkelsen fra alveol til erytrocytt (dvs. tykkelsen av den alveolokapillære membran) * Drivtrykket for oksygen mellom alveol og blod, altså forskjellen i oksygentrykket i alveolen og i kapillærene, oksygentrykket er høyest i alveolene slik at oksygen diffunderer fra alveol til blod. * Tilgjengelig mengde hemoglobin i blodet Diffusjonskapasiteten er også avhengig av gassens oppløselighet i en væskefase. Karbondioksyd er 20 ganger mer løselig enn oksygen og diffunderer tilsvarende lettere i lungene. Ved isolert nedsatt diffusjonskapasitet i lungene får man ofte okygenereringssvikt, men (omtrent) aldri problemer med å skille ut karbondioksyd. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved lungesykdom er det i hovedsak to ulike patofysiologiske forhold som er av betydning ved nedsatt diffusjonskapasitet for oksygen i lungene. Hvilke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved lungesydommer som gir nedsatt diffusjonskapasitet for oksygen vil der enten foreligge fortykket alveolo-kapillær membran (oksygenet "får lenger vei å gå") eller så foreligger der redusert diffusjonsflate ved at alveoler og alveolkapillærer er destruerte hvilket gir en redusert diffusjonsflate med også mindre kapillærnett til å motta oksygenet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gjør skjematisk kort rede for hvilke trinn oksygentransporten omfatter helt fra vi puster inn til oksygenet blir tatt opp i vevet </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Oksygenet transporteres ved ventilasjonen fra atmosfæreluft og fordeles i luftveiene ut til lungenes alveoler. * Deretter transporteres det ved diffusjon over alveolmembranen og til blodet hvor det bindes til hemoglobin i erytrocytene for videre transport. * Videre transport skjer ved hjelp av sirkulasjonen slik at det transporteres og fordeles ut i kroppen til cellenes mitokondrier i arbeidende vev. * Etter at oksygenet er fraktet til arbeidende vev, transporteres det fra erytrocyten til vevscellenes mitochondrier. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Benjamin, 3 år, ble lagt inn i barneavdelingen med kramper, lungebetennelse og pustevanskeligheter. Han var godt kjent i avdelingen etter flere innleggelser og konsultasjoner pga. infeksjoner, dårlig motorisk utvikling med ataktisk (rykkvis og ustø) gange samt mental retardasjon. Man fikk allerede før han fylte ett år mistanke om at Benjamin hadde en medfødt stoffskifteforstyrrelse og det ble tatt en del blodprøver. Disse prøvene viste * Lett acidose (pH 7.3, normalt 7.35-7.45) * Høyt laktat (5 mmol/l, normalt 0.3-1.5 mmol/l) * Lav standard bikarbonat (17 mmol/l, normalt 21-27 mmol/l) * Lav pCO2 (4.0, normal 4.5-6.0 kPa) * O2 -metning var normal (97%) * Hemoglobin var normal (12 g/dl). Det ble også tatt en hudbiopsi som man startet fibroblastkulturer fra. Disse fibroblastene ble benyttet til biokjemiske og genetiske analyser. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Biokjemiske analyser avslørte at Benjamin hadde en mutasjon i en av subenhetene i pyruvat dehydrogenase-komplekset (PDH). En fant at PDH-aktiviteten i cellene fra gutten bare var ca. 15 % av normal aktivitet. Hvorfor vil dette gi seg utslag i laktacidose slik som påvist for Benjamin? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved defekt i PDHC vil acetylgruppen i pyruvat bli omdannet til Acetyl-CoA med mye lavere effektivitet og sitronsyresyklus vil tilføres mindre substrat. Pyruvat vil derfor i stedet delvis bli omdannet til laktat selv under normale areobe forhold. Laktat vil derfor hope seg opp og føre til laktacidosen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for å nevne manglende omdanning av pyruvat til Acetyl-CoA og 0.5 poeng for at når pyruvat ikke kan omsettes i sitronsyresyklus fører dette i stedet til omdanning til lactat og laktacidose. Totalt mulig 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett PDHC er et stort enzymkompleks som består av mange kopier av 3 protein-subenheter samt flere kofaktorer, dvs koenzymer og prostetiske grupper som dannes fra vitaminer </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er et koenzym? Hva er en prostetisk gruppe? Hva er et vitamin? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Koenzym: Et koenzym (kofaktor) et kjemisk stoff som ikke er et protein som er nødvendig for aktiviteten til et enzym. Prostetisk gruppe, Kofaktor/koenzym som er kovalent bundet til et enzym Vitamin er en organisk forbindelse som er et vitalt næringsstoff som en organisme trenger. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delspørsmål gir 1 poeng, dvs totalt 3 poeng mulig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Sitronsyresyklus foregår i lumen i mitokondrier og fører til dannelse av elektronbærerene NADH og FADH2 ved oksidasjon </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva menes med oksidasjons- og reduksjons-reaksjoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Oksidasjon av et stoff innebærer fjerning av elektroner, enten elektroner alene eller i form av hydrogenatomer. Reduksjon innebærer binding av elektroner, enten alene eller som H. NAD^^+^^ (Nicotin Adenin Dinukleotid) er et oksiderende agens som binder elektroner (og H^^+^^) og dermed blir redusert. Dette former NADH som så kan bli oksidert ved å gi fra seg elektroner (og H^^+^^). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvis kandidaten beskriver enten oksydasjon eller reduksjon gis 2 poeng (vet man det ene, så vet man det andre) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Acetyl-CoA (acetyl-Coenzym A) er et thioester som produseres i nedbrytning av glukose. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er Acetyl-CoA av så stor betydning også i metabolisme av andre stoffer enn glukose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Acetyl-CoA er et energirikt thioester som produseres også ved nedbryting av fettsyrer (og andre lipider) og aminosyrer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng hvis både fettsyrer/lipider og aminosyrer er med. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved elektrontransport og oksidativ fosforylering genererer cellene ATP. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan fører elektrontransport til generering av ATP? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Elektrontransporten utnyttes til å pumpe protoner (H^^+^^) ut av lumen (matrix) av mitokontriene. Dette fører til en konsentrasjonsforskjell (ca 10x) i H^^+^^ mellom matrix (lumen) og rommet mellom indre og ytre membran ("intermembrane space") i mitokondriene. H^^+^^ kan bare strømme tilbake til matrix (utligne konsentrasjonsforskjellen) ved å passere gjennom protonspesifikke kanaler (F,,o,,). Disse kanalene er koblet sammen med en ATP syntase (kompleks V) som utnytter energifrigjøringen ved at H^^+^^ strømmer tilbake til å syntetisere ATP fra ADP. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 p for å nevne at elektrontransporten fører til H^^+^^-gradient over matrix-membranen og 1 poeng for å nevne ATP-syntasen og hva denne gjør, til sammen 2 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Per på 13 år har blitt diagnostisert med en blodsykdom. Hans tre søstre er friske. Pers foreldre (Kari og Ola) og deres søsken er også friske. Mor har en søster og far har en bror. Pers farmor, farfar og mormor er friske. Morfar, som nå er død, hadde den samme blodsykdommen som Per. Etter genetisk testing ved medisinsk genetisk laboratorium, blir det bekreftet at blodsykdommen er en arvelig tilstand. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tegn et genetisk slektskart og angi de syke. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <<imgLink "IAB-2016-2-A.PNG" >> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Korrekt opptegnet slektskart: 2 poeng (Merk: det er flere korrekte måter å tegne kartet på; f.eks hvor mann – kvinne plasseres i forhold til hverandre i hver generasjon). Feil bruk av symboler for kjønn – men ellers korrekt innplassering av syke personer: 1 poeng Glemt angivelse av død person – men ellers riktig slektskart: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Per på 13 år har blitt diagnostisert med en blodsykdom. Hans tre søstre er friske. Pers foreldre (Kari og Ola) og deres søsken er også friske. Mor har en søster og far har en bror. Pers farmor, farfar og mormor er friske. Morfar, som nå er død, hadde den samme blodsykdommen som Per. Etter genetisk testing ved medisinsk genetisk laboratorium, blir det bekreftet at blodsykdommen er en arvelig tilstand. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv og argumenter for ulike typer mulige arvemønstre for denne blodsykdommen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vi har oppgitt for lite informasjon til å kunne si at det bare er ett mulig arvemønster. Mulige arvemønstre er: ''Recessive X-bundet arv'': oftest menn (bare ett Xkromosom) som får sykdommen. Kvinnene er oftest bærere. Pers mor, Kari og hennes søster, er bærere, og de har arvet mutert X-kromosom fra sin syke far. Det er 50% risiko for at Kari gir dette videre til sine barn. Karis døtre har 50 risiko for å være bærere, og sønner har 50% risiko for å få sykdommen, hvis det er en sykdom med full penetrans <<imgLink "IAB-2016-2-B.PNG">> ''Recessive autosomal arv'': Både kvinner og menn blir syke. I denne familien over 3 generasjoner, ser vi ingen syke kvinner, men dette kan være tilfeldig. De som er syke, må ha arvet ett mutert allel fra hver av sine foreldre. I dette tilfellet må både Kari og Ola være bærere, og Kari har arvet mutert X-kromosom fra sin syke far. Det er 25% risiko for Kari og Olas barn å arve mutert allel fra begge, slik at de blir syke. Det er 50% risiko for å arve ett mutert allel og være bærer. <<imgLink "IAB-2016-2-C.PNG">> ''Dominant autosomal arv med redusert penetrans'': Både kvinner og menn blir syke. I denne familien over 3 generasjoner, ser vi ingen syke kvinner, men dette kan være tilfeldig. De som er syke, må ha arvet ett mutert allel fra en av sine foreldre. Med redusert penetrans kan sykdommen hoppe over en generasjon, slik det er med Kari. Hun er bærer av mutert variant arvet fra far, men har vært heldig og ikke fått sykdommen selv. Det er 50% risiko for arv av mutert allel for avkom, og risiko for å bli syk, avhenger av penetransen. <<imgLink "IAB-2016-2-D.PNG">> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Alle tre alternativer rett: 6 poeng To riktige alternativer: 4 poeng Ett riktig alternativ: 2 poeng HER ER DET SIKKERT MULIG Å GI POENG FOR DELVIS RETTE SVAR INNENFOR HVER KATEGORI </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som menes med penetrans for genetiske sykdommer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Penetrans'' betyr den andelen av individer som har en spesifikk genotype som også uttrykker den assosierte fenotypen. Det er en "enten-eller" tilstand ("All-or-none trait"). Ved fulle penetrans (100%), vil alle som har arvet en bestemt genvariant, bli syke. Eks: Neurofibromatose type er en autosomal dominant sykdom med full penetrans. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som menes med ekspressivitet for genetiske sykdommer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ekspressivitet: Alvorlighetsgraden av fenotypen hos individer med en bestemt genotype. Ved variabel ekspressivitet, vil fenotypen uttrykkes i ulik grad blant individer med samme genotype (selv i samme slekt). Noen kan få veldig alvorlig sykdom, men andre kan bli veldig lett affisert. Årsak til den variable ekspressiviteten er ofte ukjent (miljøfaktorer, andre modifiserende gener). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En mann i 50-årene ble innlagt på sykehus pga. brått innsettende magesmerter (akutt abdomen). Ved undersøkelse med rtg. (computer tomografi (CT)) ble det påvist en forsnevring av lumen i kolon på høyre side av buken. Dette ble også verifisert endoskopisk (koloskopi). Pasienten ble så operert med fjerning av høyre deler av kolon til og med colon transversum, såkalt høyresidig hemikolektomi. Selve operasjonen var teknisk vanskelig pga. betydelige adheranser (sammenvoksninger) mellom tarmslynger. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det som skiller tykktarm fra tynntarm ved utvendig, makroskopisk inspeksjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kolon er makroskopisk karakterisert av: # Er mer fiksert til bakre bukvegg mens tynntarmen er mer mobil # Større diameter # Haustra # Tenier (taeniae coli) # Appendices epiploicae # Kolons vegg er sakkulert ("buklet"), tynntarmen er mer jamn </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 4 av 6 delsvar gir fullt hus, 1 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Oversett begrepet //hemikolektomi// til norsk og forklar hvordan uttrykket er konstruert </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> //Hemikolektomi// er den norske skrivemåten for //hemicolectomia// som betyr operativ fjerning av halve tykktarmen (gr. //hemi-//: halv, lat. //colon//: tykktarm, gr. //ektomein//: skjære ut) (Ref.: Norsk medisinsk ordbok. Det norske samlaget). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis poeng for om kandidaten beskriver at //hemi// betyr halv, at //kole//... omfatter kolon og at //-ectomi// betyr ta ut, fjerne </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved operasjoner for kolonkanser gjør man vanligvis enten en høyresidig eller venstresidig reseksjon (operativ fjerning), slik at "grensen" mellom disse to inngrepene går ved overgangen mellom den tversgående og den nedadgånde delen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan denne kolonkirurgiske praksisen forklares ut fra blodforsyningen til kolon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Denne kirurgiske praksisen har sitt utgangspunkt i kolons arterielle blodforsyning. Høyre del av kolon til distale del av //colon transversum// (embryologisk del av midttarm) forsynes av //art. mesenterica sup.// (SMA). Videre distalt til analkanalen (embryologisk baktarm) får blod fra //art. mesenterica sin.// (IMA). Dermed blir området omkring //flexura coli sin.// et "vannskille" når det gjelder arteriell blodforsyning, dvs. at blodgjennomstrømningen her kan bli dårlig. Av den grunn går skillet mellom en høyresidig og venstresidig kolonreseksjon i dette området for å unngå problemer med dårlig blodsirkulert tarm med de konsekvenser det har i form av infarktutvikling og tarmperforasjon. Det viser seg at det vanligvis er anastomoser mellom SMA og IMA (mellom //art. colica med.// fra SMA og //art. colia sin.// fra IMA, gjerne med dannelse av en såkalt marginalarterie, //art. marginalis coli//) som i varierende grad kan kompensere for evt. dårlig blodforsyning, for eks. ved trombosering av enten SMA eller IMA. Til tross for dette er kolon i området utsatt for dårlig blodgjennomstrømning og derfor hyppig sete for såkalt iskemisk kolitt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 0.5 p for at hhv. ''art. mesenterica sup. og inf.'' nevnes. For fullt hus må også ''deres forsyningsområde av kolon'' beskrives samt at det er ''anastomoser'' mellom SMA og IMA finnes området omkring distale colon transversum/flexura coli sin. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tarmkanser kan spre seg, metastasere, i kroppen via blodkar og lymfekar. Under pasientens sykehusopphold ble det oppdaget knuter i leveren og i //fossa supraclavicularis sin.// som ga mistanke om metastaser. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke drenasje- eller spredningsveier kan forklare disse metastasesuspekte forandringene i henholdsvis lever og //fossa supraclavicularis sin.//? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hematogen spredning skjer via //v. mesenterica sup. et inf.// til //vena portae// og videre til lever. Lymfogen spredning til lymfeknuter i //fossa supraclavicularis sin.// skjer via lymfeknuter langsmed de større tarmarteriene til //trunci intestinales// som tømmes i //cisterna chyli//. Herfra går lymfen videre gjennom //ductus thoracicus// som munner ut i vinkelen mellom //vena subclavia sin.// og //vena jugularis interna sin.// Dermed kan det bli metastaser til supraklavikulære lymfeknuter på venstre side. (Ved maligne sykdommer i abdominalorganer kan man altså finne lymfeknutespredning her; slike metastatiske lymfeknuter har fått navnet Virchoffs glandler etter en kjent tysk patolog [Rudolf Virchoff, 1821-1902, blir betraktet som den moderne patologiens grunnlegger gjennom verket //Die Cellularpathologie in ihrer Begründung auf physiologische und pathologische Gewebelehre//]). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 0.5 p for //vena portae// og 0.5 p for //ductus thoracicus// </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Operasjonspreparatet ble sendt til patologiavdelingen for makroskopisk og mikroskopisk undersøkelse. Her ble det bl. a. undersøkt hvor dypt i tarmveggen kanseren hadde vokst. Dette relateres til de ulike lag tarmveggen består av. En slik dybdevekst har med stadium av en malign tumor å gjøre og er en viktig prognostisk faktor. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en kort beskrivelse av den histologiske oppbygningen av kolonveggen med angivelse av de ulike lag med deres viktigste celletyper og vevsstrukturer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tykktarmveggen består skjematisk av følgende lag: # //tunica mucosa//, som igjen er inndelt i ## //lamina epithelialis// ## //lamina propria// ## //lamina muscularis mucosae// # //submucosa// # //tunica muscularis (muscularis proper)// # //tunica serosa/adventitia//. ''Mucosa''. Slimhinnen er glatt, ingen villi, overflateepitelet er enlaget sylindrisk, fra denne tubulære kjertler, såkalte Lieberkünske krypter, med ulike celletyper som begerceller, nevroendokrine (enteroendokrine) celler og stamceller. Lamina propria består av løst bindevev (I histologiboka til Genese angis det retikulært bindevev). Av celler fins lymfocytter og spredte lymfefollikler, plasmaceller, makrofager og noen få andre typer inflammatoriske celler (eosinofile granulocytter m.m.). Videre er det blodkapillærer, lymfekapillærer forekommer for det meste nær ved lamina muscularis mucosae. Dette muskellaget består av glatt muskulatur, indre sirkulært og ytre longitudinelt lag. ''Submucosa'' (tela submucosa). Består av løst bindevev og fettvev, blodog lymfekar samt perifere nerver og plexus med ganglieceller som ligger like under lamina muscularis mucosae, plexus submucous (Meissneri). ''Tunica muscularis (muscularis proper)''. Består innerst av et tydelig sirkulært lag (stratum circulare) med bunter av glatt muskulatur, utenpå dette et mer ufullstendig langsgående glatt muskellag (stratum longitudinale) som danner tre tydelige bånd, taenia coli, mellom disse er det ytre muskellaget tynt eller kan mangle helt. Mellom det indre og ytre muskellaget er det også perifere nerver og et nerveplexus med ganglieceller, plexus myentericus (Auerbachi). ''Tunica serosa/adventitia''. Mot abdominalhulen ligger serosa med mesotel og et subserøst bindevevslag (tela subserosa) som også danner appendices epiploicae. Mot krøstilheftningen mangler mesotel og det er bare et bindevevslag, adventitia, mot det omentale fettvevet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For 4 p kreves: * at alle lag nevnt i kursiv i første avsnitt over, er med. * at følgende celler/vev i de ulike lag nevnes: ** Mucosa. Epitel: overflateepitel, krypter og begerceller; lamina propria: lymfocytter, plasmaceller, kar; lamina muscularis mucosae: glatt muskulatur. **Submucosa. Bindevev, fettvev, kar, nervepleksus (selve navnet plexus submucosus (evt. Meissners nerveplexus)) trengs ikke oppgis). **Tunica muscularis. Glatt muskulatur, ytre og indre lag, nervepleksus (selve navnet, plexus myentericus (Auerbachs nerveplexus) trengs ikke oppgis). **Tunica serosa/adventitia. Det må fremgå at serosa har relasjon til abdominalhulen med peritoneum viscerale/mesotel, mens adventitia representerer et bindevevslag som ligger an mot omentalt fettvev. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved svulster i kolon må man også vurdere muligheten for at svulsten kan ha vokst gjennom tarmveggen og videre inn i organer som har nær relasjon til kolon </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke store intraabdominale organ har nær relasjon til colon transversum og flexura coli sin.? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Colon transversum: pancreas Flexura coli sin.: milt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0.5 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 72 år gammel tidligere frisk kvinne opplevde like etter at hun hadde stått opp om morgenen raskt innsettende brystmerter av klemmende karakter. Smertene startet bak brystbeinet, etter hvert med utstråling opp mot kjeven og venstre skulder. Hun følte seg tiltakende uvel og etter hvert også tyngre i pusten. Hennes ektefelle ringte i løpet av kort tid til telefonnummer ”113” (Medisinsk nødmeldetjeneste/AMK-sentral). Etter noen korte, avklarende spørsmål ble det sendt ut ambulanse til pasienten på grunn av mistanke om akutt hjerteinfarkt. Så snart ambulansen var fremme hos pasienten ble det gjort EKG-registrering med oversending av EKG-opptaket til nærmeste lokalsykehus. Vakthavende assistentlege ble tilkalt for tolking av EKG og konklusjonen var klar: EKG viste normofrekvent regelmessig sinusrytme, upåfallende QRS, men med tydelig og typiske ST-elevasjoner i avledningene V3 til V6 og i aVL. Konklusjon: Sannsynlig akutt ST-elevasjonsinfarkt (STEMI) under utvikling i fremre og laterale deler av venstre ventrikkels myokard. På diagnosetidspunktet var det gått ca 45 minutter etter start av brystsmertene. Transporttid til nærmeste lokalsykehus er estimert til 45 minutter, mens transporttid til nærmeste sykehus med mulighet for angiografi av kransårer og eventuelt perkutan intervensjonsbehandling (PCI) er estimert til 120 minutter. Med disse opplysningene om tid fra smertedebut og kunnskap om transporttider beslutter vakthavende assistentlege at det skal iverksettes intravenøs trombolytisk behandling så snart som mulig og før transport til lokalsykehus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Det er tydelig av sykehistorien og dokumentert med EKG at pasienten sannsynlig er i ferd med å utvikle et transmuralt hjerteinfarkt. Hvorfor har ikke teamet rundt pasienten og vakthavende lege ønske om å vente med trombolytisk behandling til pasienten er fraktet til sykehus? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Størst effekt av tromoblytisk behandling oppnås når behandlingen kan gies og reperfusjon kan oppnås så tidlig som mulig etter at diagnosen er stilt. Tap av myocard tiltar med tid som medgår før reperfusjon oppnås </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Tidsforløpet i en situasjon med ischemi/opphørt blodforsyning i myocard er kritisk med tanke på skadebegrensning/grad av iscemisk skade/myocardnekrose. Godt beskrevet på UpToDate: http://www.uptodate.com/contents/search?search=stemi+emergency&sp=0&searchType=PLAIN_TEXT&source=USER_INPUT&searchControl=TOP_PULLDOWN&searchOffset=&autoComplete=true </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det ble gitt intravenøs trombolytisk behandling supplert av en moderat dose morfin og acetylsalisylsyre før start av transport til lokalsykehuset. Pasienten merket nærmest umiddelbart lindring av brystsmertene og gradvis bedring av den opplevde tungpust. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mest sannsynlige årsak til at pasienten i tillegg til brystsmertene også opplevde økende grad av tungpust i forbindelse utviklingen av det akutte hjerteinfarktet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved en tilstand med ischemi i myokard vil deler av muskelmasen tape kontraksjonskraft og kontraksjonsbevegelse. Hjertets kontraktile funksjon (kontraktilitet) reduseres. Dette medfører økende fylningstrykk i venstre hjertekammer, dette økte fylningstrykk medfører økte trykk også i lungevener/lungekar som i sin tur gir lungestuvning og i de alvorligste tilfellene lungeødem. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ischemi gir redusert muskelfunksjon. Redusert muskelfunksjon i venstre hjertekammer fører til økte fylningstrykk – ”Frank-Starlingmekanisme” – ”Starlings hjertelov”. Økte fylningstrykk til venstre ventrikkel innebærer økte trykk også i lungekarsengen – stuvning og med det tungpust/dyspnoe. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved ankomst lokalsykehuset finner vakthavende turnuslege at de første EKG-forandringene synes å ha gått pent tilbake og det konkluderes med vellykket trombolytisk behandling. Pasienten er ved ankomst smertefri og helt uten opplevelse av tungpust. Ved den kliniske undersøkelsen finnes det ved auskultasjon over hjertet en systolisk bilyd </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelse er best egnet for raskt å avklare årsaken til pasientens systoliske bilyd? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ultralydundersøkelse av hjertet med fremstilling av blodstrømshastigheter, Doppler ekkokardiografi </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ekkokardiografi med fremstilling av blodstrømshastigheter, Doppler ekkokardiografi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelse er best egnet for raskt å vurdere hjertets pumpefunksjon / kontraksjonsbevegelse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ultralydundersøkelse av hjertet med dynamisk fremstilling av hjertetrukturene/myokard; ekkokardiografi </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ultralydundersøkelse av hjertet med dynamisk fremstilling av hjertetrukturene/myokard; ekkokardiografi </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende prosedyre er best egnet for å avdekke og behandle forsnevringer i hjertets kransårer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Venstresidig hjertekatetereisering med selektiv coronar angiografi, eventuelt supplert med intervensjonsbehandling (vanligst ballongblokking av stenose med eller uten implatasjon av stent i kransåren) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Venstresidig hjertekateterisering med selektiv coronar angiografi og eventuell intervensjon </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 68 år gammel kvinne blir innlagt på St. Olavs Hospital på grunn av redusert allmenntilstand, betydelig vekttap (11 kg på 2 mnd) og positivt utslag på fekal okkult blod-test. Koloskopi avslører at hun har kolonkreft med metastase til lever. Under anamnese kommer det frem at hun har flere nære slektninger, blant annet en søster, som er døde av kolonkreft. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Figuren viser pasientens (III,3) slektstre hvor flere medlemmer har blitt rammet av kolonkreft. Dette kan tyde på at det er en arvelig kreftform inne i bildet. Hvilken type arv er det i så fall mest sannsynlig snakk om her (autosomal/kjønnsbundet, dominant/recessiv)? <<imgLink "IAB-2016s-1-A.PNG">> <$details class="answer" summary="Svar" state="!!showanswer"> I og med at både kvinner og menn er affisert av sykdommen, er det snakk om autosomal arv. I generasjon III og IV er 50% av avkommet affisert, noe som tyder på dominant nedarving. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for autosomal og 0.5 poeng for dominant. Totalt mulig 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) DNA-sekvensering av isolerte blodceller fra pasienten viste mutasjon i av ett av allelene som koder for DNA polymerase ε (POLE). I tillegg viste DNA-sekvensering av en biopsi fra pasientens kolontumor svært mange enkeltbaseparmutasjoner. Tegn en generell skisse av et humant proteinkodende gen, og sett navn på de ulike regionene. Skisser også pre-mRNA og modent mRNA som dannes ved transkripsjon av genet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Skissen av genet bør minst illustrere promoter-region, eksoner og introner (fritt antall av hvert) Skissen av pre-mRNAet bør inneholde cap, 5’-utranslatert region (5’-UTR, også kalt leader), eksoner og introner (fritt antall), 3’-utranslatert region (3’-UTR, også kalt trailer), samt polyA-hale Skissen av det modne mRNAet skal være som premRNAet, men uten introner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver av delpunktene under gen- og pre-mRNA gir 0.3 poeng, og riktig modent mRNA 0.3 poeng. Til sammen 10x0.3 poeng = 3 poeng mulig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke 5 hovedtyper DNA polymeraser finner en i humane celletyper. Hvor i cellene finnes disse og hva er deres hovedfunksjoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Polymerase α (cellekjernen – deltar i syntese av RNA primere og initiering av Okazaki-fragment) * Polymerase β (cellekjernen-deltar i DNA reparasjonsprosesser) * Polymerase δ (cellekjernen – forlengelse av «lagging strand») * Polymerase ε (cellekjernen – forlengelse av «leading strand») * Polymerase γ (mitokondriene – kopiering av mitokondrielt DNA) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver av polymerasene gir 0.2 poeng og hver av funksjonene gir 0.2 poeng hver. Tilsammen 2 poeng mulig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) DNA-sekvenseringen viste at mutasjonen befant seg i ekson 13 i POLE-genet. Dette eksonet koder for en del av eksonukleasedomenet i DNA polymerase ε og den aktuelle mutasjonen vil her føre til en aminosyresubstitusjon. Forklar hvorfor en slik mutasjon i POLE-genet kan være årsak til det høye antallet mutasjoner observert i pasientens tumor. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Feilinnsetting av baser kan skje under DNA replikasjonen. Polymerase ε har et sekundært katalytisk sete med en 3’-5’-eksonukleasefunksjon (rettefunksjon = proofreading). Hvis feil base settes inn i polymerase-setet, kan enden av den nydannede tråden «flyttes» over i eksonuklease-setet, og den feilinnsatte basen (samt ofte noen ekstra baser) fjernes. Enden settes deretter tilbake i polymerase-setet og normal replikasjon gjenopptas. Hvis mutasjoner i eksonukleasesetet gjør det defekt, vil ikke polymerasen effektivt fjerne feilinnsatte baser, og antallet enkeltbasemutasjoner vil øke i hele genomet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.5 poeng hvis elementene over er med </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tegn en skisse av en replikasjonsgaffel i en human cellekjerne og sett navn på de ulike delene av gaffelen (inkludert retningsangivelse på DNA-trådene). Skisser og navngi de viktigste proteinene som deltar i replikasjonsprosessen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <<imgLink "IAB-2016s-1-B.PNG" 400>> Forenklet versjon av replikasjonsgaffel </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Riktig angivelse av leading/lagging strand: 0.5 poeng * Riktig retningsangivelse. 0.5 poeng * Riktig plassering og navngiving av Okazakifragment 0.3 poeng * Riktig plassering og navngiving av polymeraser (Polymerase α initierer Okazakifragment, Polymerase ε ved leading strand og polymerase δ ved lagging strand: 0.8 poeng. * Riktig plassering av Helikase: 0.2 poeng * Riktig plassering av single-strand binding proteins (RPA): 0.2 poeng Totalt mulig 2.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ulike arbeidsoppgaver krever ulik kraft. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan reguleres kraftutviklingen på ryggmargsnivå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Aktivering: Aksjonspotensialenes fyringsfrekvens * Rekruttering: Antall motoriske enheter der de største og sterkest rekrutteres til slutt (vanskeligst å rekruttere) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Aksjonspotensialenes fyringsfrekvens 1p * Antall motoriske enheter som rekrutteres 1p * Og aktivering av de største/sterkeste og tyngst aktiverbare motoriske enhetene (de siste som rekrutteres) 1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke typiske forskjeller er det mellom store og små motoriske enheter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Store: Stor kraft, lite utholdende * Små: Presis motorisk kontroll og utholdende </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Store: Stor kraft, lite utholdende 0.5px2 * Små: Presis motorisk kontroll og utholdende 0.5px2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva avgjør kraftutvikling på muskelnivå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Muskelfiberposisjon (optimalt er middels strukket) * Muskelfibersammensetning * Muskeldiameter </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Muskelfiberposisjon (optimalt er middels strukket) 0.5p * Muskelfibersammensetning 0.5p * Muskeldiameter 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv ulike typer muskelfibertyper </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Langsomme oksidative, raske oksidative og raske glykolytiske muskelfibre </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Langsomme oksidative 0.5p * Raske oksidative og raske 0.5p * Glykolytiske muskelfibre 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er en sarkomer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Minste kontraktile enhet i en muskel bestående av myosin i midten som kan trekke aktinet i hver ende mot hverandre </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Minste kontraktile enhet 1p * Myosin 0.5p * Aktin 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du har en 20 år gammel pasient som i løpet av det siste året har hatt økende voluminøs, gråglinsende og illeluktende avføring og 10 kg vekttap. Undersøkelse viser at han har malabsorpsjon av fett (steatore). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to prinsipielle årsaker (ikke diagnoser) relatert til magetarmsystemet som kan gi malabsorpsjon av fett. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Mangel på pankreasenzym som lipase og ko-lipase (for eksempel pankreassvikt) * Mangel på gallesalter (for eksempel leversviktmanglende produksjon, gallegangobstruksjon, manglende / dårlig reabsorpsjon, bakteriell overvekst med nedbrytning av gallesalter) * Endret miljø i duodenum (for eksempel sur ph-økt produksjon av magesyre i forhold til bikarbonat fra pankreassekret og galle som buffer, bakteriell overvekst) * Ødelagt slimhinne (for eksempel betennelse, tottetatrofi) * Motilitetsforstyrrelser i ventrikkel og tarm * Hindret lymfetransport </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver riktig. Det er prinsippene med mangel på de nødvendige faktorene for opptak; enzymer, gallesalter, riktig pH/miljø og intakt slimhinne som er viktig, ikke om de skriver nøyaktig riktig detaljer om grunn/årsak. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvordan triglyserider fordøyes og absorberes fra tarmlumen og over i blodet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Triglyserider (TG) utgjør hovedmengden av fettstoff i maten (i tillegg til fosfolipider og steroler som kolesterol). Gallesalter produseres i hepatocytter i lever og skilles ut i duodenum sammen med pankreasenzym som lipase og ko-lipase (i tillegg til andre enzym og bikarbonat). På grunn av den amfifatiske egenskapen vil gallesalter danne miceller når de er i vandige løsninger (sånn som gallen er og sånn som man har i tarmen), der kjernen en hydrofob ("fettløselig") og utsiden er hydrofil ("vannløselig"). Gallesaltene gjør fettet "løselig" i vann ved at TG i tarmen vil diffundere inn i kjernen av slike miceller istedenfor å samle seg i store fettdråper. Dette øker overflaten som fordøyelsesenzymene lipase og ko-lipase er avhengig av å jobbe på for å bryte ned TG til fettsyrer og monoglycerid. Micellene kan så diffundere gjennom det urørte laget av væske langs tarmslimhinnen ("unstirred water layer"), inn mellom mikrovilliene og i kontakt med enterocyttenes cellemembran, slik at nedbrytningstoffene kan diffundere inn i cellene (evt tas opp via spesifikke mekansimer for noen typer). I glatt endoplasmatisk retikulum (sER) i enterocyttene blir nedbrytningsproduktene satt sammen igjen til opprinnelige fettstoff, pakket sammen med apolipoprotein B til chylomicroner, som går ut av enterocyttene i andre enden ved eksocytose og diffunderer til lymfesystemet som via ductus thoracicus tømmes ut venstre vena subclavia og ut i blodbanen (fettstoff går altså ikke direkte ut i blodet og gjennom leveren før det kommer ut i den systemiske sirkulasjonen). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene: * 0.5 poeng - micellefunksjon * 0.5 poeng - pankreasenzym * 0.5 poeng - nærhet til enterocytten og diffusjon inn * 0.5 poeng - skilles ut i blodet via lymfen </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Absorpsjon av hvilke andre stoffer er nært knyttet til fett og kan bli redusert ved fett-malabsorpsjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fett-løselige vitaminer (som A, D, E, K) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 poeng - fett-løselige vitaminer * 0.5 poeng - å nevne >= 2 spesifikke </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Leveren er et organ som står svært sentralt i å samordne kroppens håndtering av næringsstoffer som fettstoff, karbohydrater og proteiner som blir absorbert i tarmen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er prinsippene for hvordan leveren samordner metabolismen av næringsstoffene og hva er hovedfunksjonen med dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De fleste metabolske spor for nedbrytning/omsetning av næringsstoff og syntese av anvendelige andre produkt, foregår og er nøye koordinert i levercellene. Leveren fungerer som et senter for alle disse metabolske sporene. Hensikten med denne felles håndtering og kontrollen med næringsstoffer og omsetningen av disse, er å hele tiden sørge for å opprettholde nogenlunde jevn og adekvat tilgang av næring og energi for cellene i resten av kroppen. Leveren har evnen til å lagre og modulere tilgjengeligheten for næringsstoffer i blodet. Under og rett etter måltid hvor det er store mengde næringsstoffer i portalblodet, skal leveren derfor evne å ta opp store mengder av disse slik at det ikke kommer et "rush" og overskudd ut i blodsirkulasjonen. Leveren må så metabolisere de absorberte næringsstoffene, modulere for lagring i lever eller fettvev, eller gjøre de tilgjengelig for andre organ som energi. Og i perioder med lav tilgang (mellom måltid/faste) må leveren ha omsatt og lagret næringsstoffene på en slik måte at det kan posjoneres ut og holdes jevnt på det nivået kroppen trenger. Dette er nøye regulert av hormoner fra blant annet pankreas, binyrer og tyroidea, og via nervesignal. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * 0.5 poeng - metabolske spor for alle næringsstoffer henger sammen og nøye koordinert i levercellene * 0.5 poeng – kunne ta imot og omsette store mengder under/rett etter måltid * 0.5 poeng – posjonere ut jevn og adekvat mengde næring til blodet i perioder med faste * 0.5 poeng – alle disse prosessene nøye regulert av hormoner og nervesignal </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er lipoproteiner og hvilken generell funksjon har de? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lipoproteiner medierer transport av ulike fettstoff rundt i blodet (og lymfe), enten til leveren for omsetning eller fra leveren ut til resten av kroppen. Leveren er viktig i å regulere nivået av liporpoteiner i blodet. De består av apolipoproteiner av ulike typer produsert i leveren og/eller tarmepitelet og ulik sammensetning av i hovedsak triglyserider, fosfolipider, kolesterol og kolesterolestere. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * 0.5 poeng - transport av fettstoff til/fra lever i blodet * 0.5 poeng - består av apolipoprotein og ulike fettstoff </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Leveren har også mange andre funksjoner som er viktig for flere prosesser i kroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to av leverens andre funksjoner som er relatert til nedbrytning og utskillelse av ulike stoffer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Utskillelse av avfallsstoffer som ikke går via nyrer (eks bilirubin, kolesterol, xenobiotika) * Metabolisme/detoksifisering av medikamenter og xenobiotika (fase I og fase II reaksjoner) * Metabolisme/nedbrytning av ulike hormoner (som kjønnshormoner, ulike peptidhormoner) * "Filtrering og rensning"/nedbrytning av gamle blodceller, diverse proteinkomplekser, bakterieprod. osv (del av RES-systemet) i blod * Ureasyklus for håndtering av nitrogen fra nedbrytning av protein * (Utskillelse av gallesyrer i galle) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver riktig funksjon. Det er prinsippene som er viktigst </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne på 48 år kommer på kontoret med smerter i muskulaturen både rundt nakke, skuldre og hofter som har vart i 7 måneder. Hun plages også med uttalt tretthet, hodepine og søvnvansker. Du har utelukket alvorlig sykdom i ledd, nakke og hofter og tror hun har fibromyalgi. Fibromyalgi er en av flere tilstander som også har fått betegnelsen MUPS (Medically unexplained physical symptoms)/subjektive helseplager </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kjennetegner MUPS (Medically unexplained physical symptoms)/subjektive helseplager? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Langvarige tilstander med betydelige symptomer. * Subjektive symptomer uten objektive funn, diagnosen baserer seg på kriterier baser på symptomer * Ukjent årsak * Mer enn vanlige helseplager </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Full poengsscore ved minst 2 av punktene over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< En kvinne på 48 år kommer på kontoret med smerter i muskulaturen både rundt nakke, skuldre og hofter som har vart i 7 måneder. Hun plages også med uttalt tretthet, hodepine og søvnvansker. Du har utelukket alvorlig sykdom i ledd, nakke og hofter og tror hun har fibromyalgi. Fibromyalgi er en av flere tilstander som også har fått betegnelsen MUPS (Medically unexplained physical symptoms)/subjektive helseplager. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Slike plager forstås ofte ut fra en såkalt biopsykososial modell. Hva betyr det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> At smerten kan ha startet av biomedisinske årsaker, men at psykologiske og sosiale faktorer forsterker plagene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvis kandidaten angir at det er sammenheng mellom bio-psyko og sosiale faktorer </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du bestemmer deg for å undersøke hoftene hennes, blant annet ved å se på aktiv bevegelighet. Hun har smerter ved aktiv abduksjon i hofta </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I tillegg til abduksjon, hvilke andre retninger for aktiv bevegelse bør du undersøke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Aktiv fleksjon, ekstensjon, adduksjon og innad- / utadrotasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1,0 poeng dersom alle tre er riktig. 0,5 poeng dersom færre enn tre riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Du bestemmer deg for å undersøke hoftene hennes, blant annet ved å se på aktiv bevegelighet. Hun har smerter ved aktiv abduksjon i hofta <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I tillegg til aktiv bevegelse, hvilke andre leddundersøkelser vil du gjøre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Passiv bevegelse og isometrisk testing (evt spesialtester, men det kreves ikke i svaret) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.5 poeng hvis bade passive og isometriske tester nevnes. 0.5 hvis bare en av disse nevnes </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Du bestemmer deg for å undersøke hoftene hennes, blant annet ved å se på aktiv bevegelighet. Hun har smerter ved aktiv abduksjon i hofta <<< Forrige punkt: <<< I tillegg til aktiv bevegelse, hvilke andre leddundersøkelser vil du gjøre? <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke strukturer tester du ved de forskjellige testene du kom fram til i pkt 4? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Passiv bevegelse'': Ved passive tester testes de passive strukturene som ledd, leddkapsel og leddbånd. ''Isometrisk test'': Ved isometriske tester testes kontraktile strukturer som muskel og sene. En vil også få testet kraft i muskulatur og kan således avdekke rupturer eller pareser. Ved ''aktive tester'' får man testet en kombinasjon av overstående og får innblikk i funksjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 poeng hvis kandidaten vet at ledd, leddkapsel og leddbånd testes ved passive tester. * 0.5 poeng hvis kandidaten vet at kontraktile strukturer testes ved isometriske tester. * 0.5 p hvis kandidaten ved at aktive tester gir smerter ved tilstander i alle disse strukturer </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Smertene hennes har vart i 7 måneder, og hun har dermed langvarige (kroniske) smerter. # Hva er de viktigste forskjellene på akutte og langvarige smerter? # Hva vil du fokusere på i behandlingen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Hva er de viktigste forskjellene på akutte og langvarige smerter? #* Akutt smerte: #** Ofte kjent årsak #** Kortvarig #** Presis beskrivelse #* Langvarig smerte: #** Oftest ukjent årsak #** Vedvarer over 3 mnd #** Smertene sprer seg ofte i et område # Hva vil du fokusere på i behandlingen? #* Akutt – behandle årsak, ofte selvbegrensende #* Langvarig – eliminere vedlikeholdende faktorer, smertekontroll, økt funksjon, aktivisering </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må kandidaten vite at: * langvarige smerter ofte har sammensatt årsak og at andre faktorer enn opprinnleig årsak kan bidra til at smertene vedvarer * Forskjellen på akutt og langvarig kun dreier seg om varighet (ca 12 uker, men def varierer en del (8 uker til 6 mnd) * At selv om årsaken ofte er kompleks ved langvarige smerter så kan en hjelpe pasientene ved å bryte onde sirkler og øke funksjon. * Det trekker opp om aktivitet nevnes som viktig ved langvarige smerter </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du spiser et stykke biff. I kjøttets myoglobin er det bundet jernatomer. Du skal følge disse jernatomene på veien fra magesekken din til de bygges inn i hemoglobinmolekyler i beinmargen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvordan forhold i magesekk og øvre tynntarm kan påvirke jernabsorpsjonen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Jern kan absorberes bundet til heme. Det meste absorberes som Fe++ (toverdig jern). Jern i kosten må omdannes til toverdig. HCL (magesyre) øker omdannelse til Fe++. Chelaterende og jernbindende stoffer i maten kan binde jern og nedsette jernmengden tilgjengelig for absorpsjon. Luminale membran i tarmepitelet inneholder en ferrireduktase som omdanner jern til Fe++ </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Nedsatt jernopptak ved anaciditet (0.5p), jernbindende (chelaterende) føde/tarminnhold (0.5p), tarmsykdom som nedsetter epitelial funksjon eller areal, ex cøliaki (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvordan jernatomet tas opp i tarmepitelet </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Jernatomet tas vesentlig opp i tarmepitecellen gjennom Divalent metalltransportør 1 (DMT1), et transmembranprotein som transporterer Fe++ over luminale membran </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kjenne til at det finnes en transportør for divalent jern (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gjør rede for hvordan jerntransport inn i tarmepitelet kan reguleres </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Antallet DMT1 kanaler i luminale membran bestemmer jernopptaket. Syntesen av DMT1-molekyler i epitelcellen er regulert av intracellulær jernkonsentrasjon gjennom jernregulerende proteiner (IRP) som senser jernkonsentrasjonen og påvirker proteinsyntesen i epitelcellen ved binding til m-RNA </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vite at jerninnholdet i epitelcellen regulerer opptaket (1p), beskrive at epitelcellens jerninnhold regulerer syntese av et spesifikt transportmolekyl (0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan jerntransport fra tarmepitelet til blod foregår, og hvordan transporten kan reguleres </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tarmepitelet eksporterer jern til blod gjennom kanalproteinet ferroportin i basale membran (1 poeng). Mengden ferroportinkanaler reguleres av hormonet hepcidin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vite at jerntransport epitelcelle-blod skjer gjennom et kanalprotein (1p), at kanalproteinet reguleres av hormonet hepcidin (0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan jerntransporten fra tarmepitelet til beinmargen foregår og kan reguleres </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fe++ omdannes til Fe+++ av basalt lokalisert coeruloplasmin. Fe+++ bindes til transferrin i plasma for transport til beinmargen. Transportkapasiteten øker ved jernmangel ved at transferrinkonsentrasjonen og dermed antall bindingsseter for jern (TIBC) øker. Regulering av transferrinkonsentrasjonen skjer via IRP </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Omdanning til Fe+++ (0.5p), transferrin for transport (0.5p), kompensatorisk økning av transportkapasitet (transferrin) ved jernmangel (0.5p), jern regulerer transferrinsyntesen (0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan jern tas opp i beinmargens celler, og hvordan opptaket er regulert </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Transferrin med bundet Fe+++ bindes til transferrrinreseptorer (TfR) på beinmargscellenes membran og endocyteres. Opptaket reguleres ved antall uttrykte transferrinreseptorer på cellen. Syntese av TfR i cellen er regulert av intracellulær jernkonsentrasjon via IRP binding til m-RNA for TfR </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> TfR på beinmargcellene (1p), regulert ved antallet TfR (0.5p), syntese av TfR reguleres av jernregulert proteinsyntese (0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bruken av legemidlet salbutamol (Ventoline) hos idrettsutøvere uten lungesykdom er omdiskutert, særlig bruken av høye doser. Ved terapeutisk konsentrasjon stimulerer stoffet primært beta-2-adrenerge reseptorer. Ved høye doser stimuleres også beta-1-adrenerge reseptorer. Disse egenskapene har betydning for å forstå effekter og mulige bivirkninger av medikamentet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av salbutamol i bronkialmuskulaturen og signalveien fra reseptor til den cellulære effekten. Hvilken virkning har stoffet på luftstrøms-motstanden i luftveiene, og hvilke molekyler er involvert i denne biokjemiske signalveien i bronkialmuskelcellene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Salbutamol reduserer luftstrømsmotstanden ved å relaksere glatt muskulatur i bronkialveggen (0.5 poeng). Når salbutamol aktiverer beta-2-reseptoren, spaltes det GTP-bindende proteinet G,,s,, og frigjør sub-enheten alfas som aktiverer enzymet adenylyl cyklase (AC) (0.5 poeng). AC katalyserer dannelsen av syklisk AMP (cAMP) og øker den intracellulære konsentrasjonen av cAMP. cAMP aktiverer enzymet protein kinase A (PKA) (0.5 poeng). PKA fosforylerer myosin light chain kinase (MLCK) og reduserer MLCK-aktiviteten. Redusert MLCK-aktivitet fører til mindre fosforylering av lette myosin kjeder (MLC), og derved reduseres kontraktiliteten i bronkialmuskulaturen (0.5 poeng). Mekanismen er den samme som i karvegg, men er neppe gjennomgått eksplisitt ved undervisningen i lungefysiologi. Det er likevel mulig å slutte seg til svaret ut fra kunnskap om mekanismen for relaksasjon av glatt muskulatur i karveggen. Denne deloppgaven regnes derfor som resonnerende. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Relaksasjon av glatt muskulatur og redusert luftstrømsmotstand (0.5 poeng). Aktivering av adenylyl cyklase via G-protein (0.5 poeng). Aktivering av PKA og fosforylering av MLCK (0.5 poeng). Hemming av MLC og redusert kontraktilitet (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Bruken av legemidlet salbutamol (Ventoline) hos idrettsutøvere uten lungesykdom er omdiskutert, særlig bruken av høye doser. Ved terapeutisk konsentrasjon stimulerer stoffet primært beta-2-adrenerge reseptorer. Ved høye doser stimuleres også beta-1-adrenerge reseptorer. Disse egenskapene har betydning for å forstå effekter og mulige bivirkninger av medikamentet. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av salbutamol i sinusknuten i hjertet og signalveien fra reseptor til den cellulære effekten. Hvilken virkning har stoffet på pulsen (slag per minutt)? Hva er effekten på pacemakerpotensialet, og hvilke molekyler er involvert i den biokjemiske signalveien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Salbutamol øker pulsen ved å stimulere beta-adrenerge reseptorer i sinusknuten (0.5 poeng). Stigningshastigheten på pacemakerpotensialet øker, og dermed nås terskelen for depolarisering raskere, det vil si kortere tid mellom hvert hjerteslag (0.5 poeng). Det er to parallelle signalveier: Salbutamol aktiverer beta-1- og beta-2-reseptorer som beskrevet i deloppgave 1, Gs spaltes og dermed frigjøres sub-enheten alfas. Dette trinnet er felles. Den ene signalveien går via AC, cAMP og PKA, som aktiverer kalsiumkanalen ICa,L i cellemembranen. Dermed øker stigningshastigheten på pacemakerpotensialet (0.5 poeng). Den andre signalveien er at alfas aktiverer ionekanalen I,,f,, (I,,funny,,) ved en direkte effekt på ionekanalen (ikke via AC, cAMP og PKA). Dermed øker stigningshastigheten (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Salbutamol øker pulsen via stimulering av beta-reseptorer i sinusknuten (0.5 poeng). Stigningshastigheten på pacemakerpotensialet øker (0.5 poeng). Aktivering av kalsiumkanalen via beta-reseptor, AC, G-protein og PKA (0.5 poeng). Direkte aktivering av ionekanalen If via beta-reseptor og G-protein/alfas, ikke via AC, cAMP, PKA (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Bruken av legemidlet salbutamol (Ventoline) hos idrettsutøvere uten lungesykdom er omdiskutert, særlig bruken av høye doser. Ved terapeutisk konsentrasjon stimulerer stoffet primært beta-2-adrenerge reseptorer. Ved høye doser stimuleres også beta-1-adrenerge reseptorer. Disse egenskapene har betydning for å forstå effekter og mulige bivirkninger av medikamentet. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av salbutamol i hjertemuskelcellene utenom ledningssystemet, samt signalveien fra reseptor til den cellulære effekten. Hvilken virkning har stoffet på hjertemuskelcellenes kontraksjon og relaksasjon, og hvilke molekyler er involvert i disse biokjemiske signalveiene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Salbutamol øker hjertemuskelcellenes kontraktilitet / inotropi (0.5 poeng) og relaksasjonshastighet / lusitropi (0.5 poeng) ved å stimulere beta-adrenerge reseptorer i cellemembranen. Første del av signalveien er som beskrevet i deloppgave 1. Når salbutamol aktiverer beta-reseptorene, spaltes det GTP-bindende proteinet G,,s,, og frigjør sub-enheten alfas som aktiverer enzymet adenylyl cyklase, øker den intracellulære konsentrasjonen av cAMP og aktiverer PKA. Mekanismen for økt kontraktilitet / inotropi er at PKA aktiverer kalsiumkanalen ICa,L og gir en større innstrømning av kalsium (Ca) under aksjonspotensialet. Dette fører til større frisetting av Ca fra sarkoplasmatisk retikulum. Det gir større økning av den intracellulære Ca-konsentrasjonen, og dermed blir konsentrasjonen raskere og kraftigere (0.5 poeng). Hovedmekanismen for økt relaksasjonshastighet / lusitropi er at PKA øker aktiviteten av transportenzymet kalsium-ATP-ase i sarko(endo)plasmatisk retikulum (SERCA) via regulatorproteinet fosfolamban. Dermed fjernes Ca raskere fra cytolsol, og relaksasjonshastigheten øker (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Økt kontraktilitet / inotropi (0.5 poeng) og økt relaksasjonshastighet / lusitropi (0.5 poeng). Mekanisme for økt kontraktilititet: Gs / alfas, AC, PKA, økt Ca-innstrømming over cellemembranen, økt Ca-frigjøring fra sarkoplamatisk retikulum (0.5 poeng). Mekanismen for økt relaksasjonshastighet / lusitropi er at PKA fosforylerer fosfolamban og dermed øker aktiviteten av SERCA (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Bruken av legemidlet salbutamol (Ventoline) hos idrettsutøvere uten lungesykdom er omdiskutert, særlig bruken av høye doser. Ved terapeutisk konsentrasjon stimulerer stoffet primært beta-2-adrenerge reseptorer. Ved høye doser stimuleres også beta-1-adrenerge reseptorer. Disse egenskapene har betydning for å forstå effekter og mulige bivirkninger av medikamentet. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av salbutamol på glatt muskulatur i koronarkar og signalveien fra reseptor til den cellulære effekten. Hvilken virkning har stoffet på karmotstanden, og hvilke molekyler er involvert i den biokjemiske signalveien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Salbutamol reduserer strømningsmotstanden i koronarkar ved å relaksere glatt muskulatur i karveggen (0.5 poeng). Mekanismen (og poenggivningen) er ellers den samme som i [[deloppgave 1|IAB - 2017 - Oppgave 2]] om bronkialmuskulatur. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Salbutamol reduserer strømningsmotstanden i koronarkar ved å relaksere glatt muskulatur i karveggen (0.5 poeng). Aktivering av adenylyl cyklase via G-protein (0.5 poeng). Aktivering av PKA og fosforylering av MLCK (0.5 poeng). Hemming av MLC og redusert kontraktilitet (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I skjelettmuskelceller økes aktiviteten av transportenzymet natriumkalium-ATP-ase av salbutamol og andre stoffer som stimulerer beta2-adrenerge reseptorer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvilken effekt salbutamol har på ekstracellulær kaliumkonsentrasjon i muskelvevet og kaliumkonsentrasjonen i blodplasma, og angi mekanismen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Salbutamol reduserer ekstracellulær kaliumkonsentrasjon i musklene (0.5 poeng) og reduserer kaliumkonsentrasjonen i blodplasma (0.5 poeng) ved at beta-adrenerg stimulering øker aktiviteten av transportenzymet natrium-kalium-ATP-ase (NKA) i skjelettmusklenes cellemembran. Mekanismen er at NKA øker transporten av kalium inn i skjelettmuskelcellene. Siden skjelettmuskulaturen utgår en stor del av kroppens væskevolum, kan dette gi et betydelig fall i kaliumkonsentrasjonen i ekstracelluærveæsken og dermed også i blodplasma (1 poeng), opptil 1 mM. Denne effekten kan også opptre ved kraftig aktivering av det sympatiske nervesystem, f.eks. i akuttfasen av hjerteinfarkt og hjertesvikt. Og hypokalemien som derved oppstår, øker risikoen for alvorlige forstyrrelser av hjerterytmen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Redusert ekstracellulær kaliumkonsentrasjon i musklene (0.5 poeng) og reduserert kaliumkonsentrasjonen i blodplasma (0.5 poeng) / (hypokalemi). Økt kaliumtransport inn i skjelettmuskelcellene gir betydelig fall i kaliumkonsentrasjonen i ekstracelluærveæsken og dermed også i blodplasma (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I det norske helsevesenet er såkalt "aktiv dødshjelp" ikke tillatt, mens begrensning av livsforlengende behandling anses som både akseptabelt og endog ønskelig i enkelte situasjoner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du angi en eller flere grunner til at vi anser begrensning av livsforlengende behandling som vesensforskjellig fra aktiv dødshjelp? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Ved begrensning av livsforlengende behandling dør pasienten av sin grunnsykdom. Ved aktiv dødshjelp tar legen livet av pasienten ved å injisere medikamenter, eller ved å gjøre tilgjengelig medikamenter som pasienten selv kan ta sitt liv med. # I det første tilfellet er legens intensjon med ikke å igangsette/avslutte aktiv behandling, å la sykdommen gå sin gang. I det andre tilfelle er legens intensjon å drepe eller bidra til selvdrap. # Vi anser det som en grunnleggende rettighet for alle pasienter i Norge å kunne nekte (ytterligere) behandling (med mindre det finnes gode grunner for tvang). Vi anser det ikke som en grunnleggende rettighet å kunne kreve at et annet menneske (legen) tar vårt liv eller hjelper med å ta vårt liv </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dette er tre varianter av riktig svar på oppgaven. Til sammen rommer de kjernen i det vi mener er en vesensforskjell mellom begrensning av livsforlengende behandling og eutanasi. 2 poeng gis til studentene som rimelig godt og presist klarer å beskrive denne kjernen. Redusert poengsum gis til studentene med mindre presise svar. Til orientering: Begrepet "aktiv dødshjelp" rommer både "eutanasi" (legen tar livet av pasienten på pasientens forespørsel), og "legeassistert selvmord" (legen skriver ut medikamenter som vil ta livet av pasienten). Begge disse variantene av aktiv dødshjelp er tatt høyde for i svaret over. Helt andre svar enn de som ligger i området 1-3 er vanskelig å se for seg kan gi poeng. Studenter som f.eks. svarer at de ikke ser noen forskjell på de to situasjonene, får ikke poeng. Spørsmålet er ikke hva studentene selv mener, men hva det offisielle "vi" mener. Dette "vi"-et kommer til uttrykk gjennom norsk lovregulering, praksis, retningslinjer og veiledere </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du gi noen eksempler på når begrensning av livsforlengende behandling kan være en aktuell problemstilling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Begrensning av livsforlengende behandling er et aktuelt spørsmål når (1) pasienten ber om det og/eller (2) behandlingen forlenger en plagsom dødsprosess eller forlenger et liv med store plager. Utdyping: En "døende" pasient har en særskilt rett i loven til å motsette seg behandling. Det betyr at pasientens ønske om å avslutte/avstå fra aktiv behandling, er en akseptabel grunn i seg selv (pasientautonomi). I tillegg vil alle situasjoner hvor aktiv behandling forlenger en plagsom dødsprosess eller forlenger et liv med store plager, være situasjoner hvor begrensning av livsforlengende behandling kan være aktuelt å diskutere. Dersom pasienten selv ikke er kompetent, kan det være aktuelt å diskutere med pårørende – ikke primært for å finne ut hva pårørende ønsker, men for å forsøke å avklare nærmere hva pasientens ønske kan sies å være. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng gis når studenten trekker frem og kan forklare både dette med pasientens ønske (1 poeng) og dette med faren for å gjøre mer skade enn godt/forlenge en plagsom dødsprosess/overbehandle (1 poeng) Det gir ikke poeng å trekke frem prioritering som begrunnelse. Diskusjonen om begrensning av livsforlengende behandling er ikke primært motivert utfra et prioriteringsønske, selv om ressursbesparelser er en mulig følge av begrensning av livsforlengende behandling. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er det rimelig å hevde at pasientautonomi står sterkt i livets sluttfase i norsk helsetjeneste, selv om aktiv dødshjelp er forbudt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fordi det er mye fokus på pasientens vilje i livets sluttfase i norsk helsetjeneste. Det er laget en egen veileder for begrensning av livsforlengende behandling hvor vilje og valg står helt sentralt. Videre vektlegges det i norsk lovverk at all behandling i utgangspunktet skal være samtykkebasert. Som om ikke det er nok, er det skrevet inn i lovverket at døende pasienter har en særskilt rett til å nekte livsforlengende behandling. Det er stor tradisjon for å lytte til pårørende når pasienten er inkompetent. Dette er også i den hensikt å få avklart pasientens egentlige vilje eller ønske om behandlingsvalg. Generelt er det et økende fokus på uheldige sider ved overbehandling i livets sluttfase i helsevesenet både nasjonalt og internasjonalt (internasjonalt gjennom f.eks. Too-much-medicine-campaign), og dermed også pasienters rett og mulighet til å si nei til livsforlengende behandling. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det vi kan forvente av studentene her, er at de kan si litt om at adgangen til å nekte behandling i livets sluttfase er ganske omfattende og at det er et uttrykk for en vektlegging av pasientautonomi – altså en verdsetting av pasienters vilje og deres valg. Full pott for en god beskrivelse av dette (jfr svaret over – men her må sensor bruke skjønn) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva legger man i helsetjenesten i begrepet "passiv dødshjelp", og hvorfor mener man at det er et uheldig begrep? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fordi man mener at begrensning av livsforlengende behandling ikke har noe med aktiv dødshjelp å gjøre. "Passiv" dødshjelp synes å fremstå som bare en annen variant av dødshjelp enn "aktiv". Bruker man dette uttrykket, synes det altså som om vi har akseptert en type dødshjelp, og da burde vi kanskje også akseptere den andre. Begrensning av livsforlengende behandling handler offisielt om pasienters rett til å nekte behandling. Selv om døden blir en konsekvens, så er ikke tanken fra helsetjenestens side at man hjelper folk med å dø. Man aksepterer deres behandlingsvalg. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her må studentene først kunne si noe om hva som ligger i "passiv dødshjelp"-begrepet – at dette er det samme som vi i dag kaller begrensning av livsforlengende behandling. Videre må man kunne si noe om de uheldige sidene ved å benytte dette begrepet, som beskrevet ovenfor. Har man begge disse elementene, gir det full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Formuler ett pliktetisk og to konsekvensetiske argumenter mot å legalisere aktiv dødshjelp </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Eksempler på pliktetiske argumenter: * Legers oppgave er å redde liv, og det er prinsipielt galt at leger må bli drapsmenn * Menneskelivet er ukrenkelig (argumentet finnes i religiøs og sekulær utgave) Eksempler på konsekvensetiske argumenter: * Legalisering kan lede til et press på eldre om at de aktivt bør avslutte livet * Legalisering kan lede til utglidning i kriterier (slippery slope.. slik vi har sett i Nederland) * Legalisering kan lede til et «kaldere» samfunn </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her er det vesentligste at studentene har fått med seg forskjellen på pliktetiske argumenter (når noe kan sies å være galt i seg selv uavhengig av hvilke konsekvenser det evt får) og konsekvensetiske argumenter (hvor det avgjørende er hvilke negative konsekvenser som kan oppstå). Over er det listet noen eksempler på slike argumenter fra hver leir. Det er mange flere som kan anses å være relevante og riktige. 1 poeng gis når studenten åpenbart har fanget opp forskjellen mellom argumentasjonstypene, og full pott gis når også argumentene man har valgt å trekke frem er relevante </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Svein Erik, 37 år, liker å holde seg i god form med løpetrening tre-fire ganger i uka. Han deltar jevnlig i både kortere og lengre bedriftsidrettsløp, opptil halvmaraton (21 km). Han er også nøye med kostholdet, særlig før lengre løp, etter at han en gang opplevde det som han beskriver som "å gå helt tom" under et halvmaratonløp, til tross for at han var i god form. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke næringsstoffer er det vi utvinner energi fra ved fysisk arbeid hos et ungt individ med et balansert kosthold? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vi utvinner energi vesentlig fra fettsyrer og karbohydrat, i mye mindre grad fra aminosyrer så lenge kosten er tilstrekkelig og balansert. Ved langvarig faste vil imidlertid proteiner, bl.a. muskelproteiner (som det er mest av) brytes ned til aminosyrer og brukes til energi dannelse (ATP). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Både fettsyrer, karbohydrat (eventuelt spesifisert som glykogen og/eller glukose) og aminosyrer bør være nevnt. 1p for fettsyrer, 1 poeng for karbohydrater og 1 poeng for aminosyrer. Totalt 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Svein Erik har grublet over årsaker til at han en gang følte at han ganske plutselig og uventet ble utmattet, "gikk helt tom", og måtte bryte løpet. Han mente at farten ikke var større enn det han fint skulle beherske. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en kort beskrivelse av sannsynlige årsaker knyttet til energidannelsen i metabolismen som kan forklare at han ble utmattet i løpet nevnt ovenfor. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved lengre løp utvinnes en stor del av energien ved oksidasjon av fettsyrer ved den såkalte β-oksidasjonen. I tillegg trengs metabolitter fra karbohydrat, særlig oksaloacetat (og acetyl-CoA), for å holde trikarboksylsyresyklus (TCA-syklus, også kalt Krebssyklus) fullt operativ i bl.a. hjerte- og skjelettmuskulatur. Allerede etter kort tids anstrengelse (~ 1 min eller mindre) må man bryte ned glykogen i muskulatur og lever for å få tilgang på tilstrekkelige mengder glukose til dannelse av oksaloacetat. Ved lengre løp kan glykogenlagrene gå tomme og føre til mangel på oksaloacetat, hypoglykemi og en følelse av utmattelse. Dette skjer særlig i tilfeller der glykogenlagrene ikke er bygget opp ved tilstrekkelig KH-inntak før en langvarig anstrengelse. Laktat som dannes (i små til moderate mengder) transporteres tilbake til lever og bygges opp til glukose ved glukoneogenese, men dette er ikke tilstrekkelig for å oppnå energibalanse. (NB! Det finnes selvsagt flere alternative forklaringer, alt fra dårligere fysisk form enn antatt til kronisk hjertelungesykdom og akutte tilstander av ulike slag, for eksempel infeksjonssykdom). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å vite at energien utvinnes ved oksidasjon av fettsyrer ved lengre løp. 1 poeng for å vite at det er nødvendig å bryte ned glykogen etter kort tids anstrengelse. 1 poeng for å vite hva som er konsekvensene av at glykogen lagrene går tomme. 1 poeng for å vite at laktat transporteres tilbake til lever og bygges opp til glukose ved glukogenese. Totalt 4 poeng. Bra med fornuftige «alternative forklaringer», men det gir i seg selv ikke poeng slik spørsmålet er stilt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Svein Erik har merket at både han selv og andre "puster og peser" i flere minutter etter spurter så korte som 100 m, mens han i liten grad gjør dette etter lange løp. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en biokjemisk-fysiologisk forklaring på forskjellene i respirasjonsmønster etter korte løp ("spurter") i forhold til lengre løp. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved korte spurter trengs så stor tilgang på ATP som mulig. ATP lagrene i cellene er ikke tilstrekkelig selv for korte spurter på for eksempel 100 m. Det trengs maksimal tilgang både på energibærende molekyler (fettsyrer og glukose), samt O,,2,, til aerobt stoffskifte. Fettsyreoksidasjon og aerob omsetning av glukose er imidlertid ikke tilstrekkelig, derfor omsettes også store mengder glukose ved glykolyse til store mengder pyruvat som omsettes videre til store mengder laktat. Ved dannelsen av laktat omsettes NADH + H^^+^^ til NAD^^+^^ som er nødvendig for å drive glykolysen. Uten NAD^^+^^ bremses glykolysen. Glykolysen er lite økonomisk i ATP-dannelsen i forhold til TCA-syklus koblet til aerob ATPdannelse. Men glykolysen er mye raskere enn TCA syklus og den totale mengden ATP som dannes anaerobt ved glykolyse blir derfor stor. Laktat er en syre som senker pH i blodet. Det dannes mye laktat ved kortvarig intens fysisk anstrengelse. I tillegg dannes det mye CO,,2,, som lungene trenger tid på å lufte ut. CO,,2,, fører til pH fall ved omsetning av CO,,2,, og H,,2,,O til H,,2,,CO,,3,, som dissosierer til HCO,,3,,^^-^^ og H^^+^^. Det er altså pH fall pga. laktat og CO,,2,, som fører til høy respirasjon ved kortvarig anstrengelse. Ved langvarig, mer moderat anstrengelse er stoffskiftet overveiende aerobt. Det er da balanse mellom anstrengelsen og aerob ATPdannelse og lungene bidrar til tilstrekkelig CO,,2,, utskillelse i forhold til dannelsen. pH fallet blir derfor lite og pusten tilnærmet normal. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten bør ha hovedtrekkene i svaret rimelig forklart. Jeg forventer adskillig spredning i svarene som må vurderes i hvert tilfelle. (Svar bør kanskje utvides) 1 poeng for å vite at fettsyreoksidasjon og aerob omsetning av glukose ikke er tilstrekkelig ved korte spurter. 1 poeng for å vite at store mengder glukose omsettes ved glykolyse til store mengder pyruvat som omsettes videre til store mengder laktat. 0.5 poeng for å vite at ved dannelsen av laktat omsettes NADH + H^^+^^ til NAD^^+^^ som er nødvendig for å drive glykolysen. 0.5 poeng for å vite at ATP dannelse i glykolysen er lite økonomisk i forhold til TCA-syklus koblet til aerob ATP-dannelse. Men glykolysen er mye raskere enn TCA syklus og den totale mengden ATP som dannes anaerobt ved glykolyse blir derfor stor. Totalt 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En ung gutt har pustevansker. Det tas røntgen thorax og det påvises pneumothorax (luft i pleurahulen) på venstre side. Pasienten er såpass påvirket at man velger å legge inn dren i pleurahulen lateralt på thoraxveggen som behandling </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke strukturer går drenet igjennom på vei inn i pleurahulen fra hud til pleurahulen? Strukturene benevnes i riktig rekkefølge fra hud mot lunge. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fortløpende fra hud: subkutis-den dype fascie (fascia profunda, som også representerer musklenes epimysium)-m. intercostalis externus- m. intercostalis internus- m. intercostalis intimus-den endotorakale fascie-pleura parietalis. Nb! Avhengig av hvor man stikker vil andre muskler også kunne bli gjennomstukket, mest aktuelt for musculus serratus anterior, men dette ligger ikke inn under oppgaven </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hud gir ikke poeng, oppgitt i tekst. 0.5 poeng for hver anatomisk struktur, bortsett fra den dype fascie og den endotorakale fascie som til sammen gir 0.5 poeng. Mangel av den ene av disse gir ikke trekk, men mangel av begge gir altså 0.5 poeng trekk. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< En ung gutt har pustevansker. Det tas røntgen thorax og det påvises pneumothorax (luft i pleurahulen) på venstre side. Pasienten er såpass påvirket at man velger å legge inn dren i pleurahulen lateralt på thoraxveggen som behandling <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Legen som legger drenet velger å stikke like i overkant av ribbenet. Hvilke(n) anatomisk(e) struktur(er) i intercostalrommet vil han unngå å skade ved å stikke like i overkant av ribbenet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den nevrovaskulære bunten som består av intercostalvenen,- arterien og -nerven. Disse forløper rett i underkant av overliggende ribben, dels i sulcus costae. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per struktur (nerve, vene, arterie). Nevner man bare en av de tre gir dette 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ben inngår i det som kalles thoraxveggen (brystkasseveggen) inkludert anteriore, posteriore og lateralte deler? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 12 thorakale ryggvirvler (vertebrae), 12 ribben (costae), sternum med manubrium, corpus og processus xiphoideus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng hver for vertebrae, costae og sternum, men det trekkes ikke om antallet ikke oppgis. Ikke trekk for å nevne scapula eller clavicula, selv om disse ikke er med og danner thoraxveggen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken muskel er hovedmuskelen for respirasjon og hvilken nerve innerverer denne muskelen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Diaphragma (mellomgulvet) Nervus phrenicus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forrige oppgave: <<< Hvilken muskel er hovedmuskelen for respirasjon og hvilken nerve innerverer denne muskelen? <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke(t) nerverotsnivå i ryggmargen kommer denne nerven fra og hvordan forløper den i thorax frem til denne hovedrespirasjonsmuskelen? (Hovedtrekkene i forløpet i thorax) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den kommer fra tredje til femte cervikale nerverot (C3-C5, hovedsakelig C4). Forløp i thorax: Den forløper på fremsiden av m. scalenus anterior, bak v. subclavia, foran lungeroten mellom det fibrøse pericard og pleura paietale pars mediastinalis ned til diaphragma </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Utspring gir 1.5 poeng. Nevner man plexus cervicalis gir dette 1 poeng, men nivået er det mest ønskelige svar. Den mottar også en mindre andel fibre fra cervicale deler av plexus brachialis, men dette gir ikke poeng. Forløp: Det viktigste her er å skjønne at den må gå ned i gjennom mediastinum, mellom mediastinums pleura parietalis og pericardium parietale for å komme seg ned til diaphragma. Har man skjønt dette prinsipp gis det 0.5 poeng. Mer detaljerte forløp er ikke nødvendig for denne besvarelsen. Det er også noe ulikt forløp av venstre og høyre nervus phrenicus, men dette er ikke nødvendig for full uttelling. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Maja er en 24 år gammel kvinne adoptert til Norge fra Korea som småbarn. Hun kommer til Gastrolab for kolonoskopi (undersøkelse av tykktarmen). Bakgrunnen for henvisningen er plager over de siste 10 år i form av mye tarmgass og knipaktige magesmerter. Disse plagene har økt på de siste 2-3 årene og hun har også fått temmelig løs avføring. I perioder kan avføringen være tyntflytende og tømmingen nærmest eksplosiv. Hun ser ikke blod eller slim i avføringen. Pga hennes genetiske bakgrunn mistenker legen at Majas tilstand kan ha sammenheng med intoleranse for melk, og han rekvirerte en laktosebelastning-prøve. Ved denne undersøkelsen drikker pasienten en mengde laktose (50 g for en voksen person) og det tas blodprøver med måling av glukose på bestemte tidspunkter etter inntaket. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hos pasienten fant man ingen økning i glukose-nivå i blodet etter inntak av laktose,- kravet for normalitet er en stigning i blodglukose i løpet av de 2 timene etter laktoseinntak på minimum 1.8 mmol/l. Hva kan være årsaken til at Majas blodglukose ikke øker etter inntak av laktose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Negativ laktosebelastningstest gir diagnosen laktoseintoleranse. Laktose kan ikke tas opp i cellene i tynntarmen, men må spaltes av intestinal laktase. Dette er et enzym som sitter i den luminale membranen av epitelcellene i tynntarmen og spalter laktose til galaktose og glukose hvoretter disse transporteres inn i cellen via spesifikke opptaksmekanismer. 0.5 poeng for å vite at laktose må spaltes (til glukose og galaktose) for opptak og 0.5 poeng for å nevne laktase </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Totalt mulig 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Laktose er det dominerende melkesukkeret. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) # Hva er et monosakkarid og nevn et eksempel på et slikt molekyl? # Hva er et disakkarid og nevn et eksempel på et disakkarid? # Hva er et polysakkarid og gi et eksempel på et slikt molekyl? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Monosakkarid; den enkleste typen karbohydrat, består av ett sukkermolekyl, f.eks glukose eller galaktose # Disakkarid; to monosakkarider kovalent bundet sammen, f.eks laktose # Poly-sakkarid; polymerer av karbohydrater som består av en kjede av mono eller disakkarid enheter, f.eks glykogen, stivelse, cellulose </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delspørsmål gir 1 poeng, dvs totalt 3 poeng mulig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Glukose fra blodet tas opp i celler slik at cellene danner ATP som kan drive mange cellulære prosesser. Elektroner fra glukose transporteres ved såkalte elektronbærere som reduseres og oksideres i prosessene som fører til dannelse av ATP </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn den reduserte formen av to slike elektronbærere? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Riktige svar kan være 2 riktige blant: NADH, FADH,,2,,, NADPH, Ubiquinol (QH,,2,,), ev. Cytochrom C </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, dvs totalt 1 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Acetyl-CoA (acetyl-Coenzym A) er et thioester som produseres i nedbrytning av glukose </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er Acetyl-CoA av så stor betydning også i metabolisme av andre stoffer enn glukose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Acetyl-CoA er et energirikt thioester som er viktig også ved nedbryting av fettsyrer (og andre lipider) og aminosyrer </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng hvis både fettsyrer/lipider og aminosyrer er med. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett ATP genereres ved elektrontransport og oksidativ fosforylering i cellene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan fører elektrontransport til generering av ATP? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Elektrontransporten utnyttes til å pumpe protoner (H^^+^^) ut av lumen (matrix) av mitokontriene. Dette fører til en konsentrasjonsforskjell (ca 10x) i H^^+^^ mellom matrix (lumen) og rommet mellom indre og ytre membran ("intermembrane space") i mitokondriene. H^^+^^ kan bare strømme tilbake til matrix (utligne konsentrasjonsforskjellen) ved å passere gjennom protonspesifikke kanaler (F,,o,,). Disse kanalene er koblet sammen med en ATP syntase (kompleks V) som utnytter energifrigjøringen ved at H^^+^^ strømmer tilbake til å syntetisere ATP fra ADP. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.5 p for å nevne at elektrontransporten fører til H^^+^^-gradient over matrix membranen og 1.5 poeng for å nevne ATP syntasen og hva denne gjør, til sammen 3 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du har en pasient som i lengre tid har hatt betennelsessykdommen Crohns sykdom med affeksjon av hele tynntarmen. På grunn av dette har pasienten malabsorpsjon og har fått påvist beinskjørhet (osteoporose). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den generelle oppbyggingen av slimhinnen i tynntarmen og forklar hva hensikten er med nettopp en slik oppbygging </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tynntarmslimhinnen har et stort antall sirkulære folder (plicae circulares) inn mot lumen av tarmen. På overflaten av foldene er det videre en mengde tarmtotter (villi intestinales) som er dekket av et enlaget sylinderepitel (enterocytter) som på den apikale (luminale) siden er tettepakket med mikrovilli ("brush border"). Opp i tarmtottene går det et nettverk av blod- og lymfekar. Det går også tubulære kjertler eller krypter fra basen av tarmtottene og ned til muskularis mucosa. Mellom disse kjertlene finner vi lamina propria med bindevev, bindevevsceller og immunceller. <<imgLink "IAB-2017s-3-A.PNG">> Hovedhensikten med en slik oppbygging er å øke overflaten mest mulig for kontakten mellom lumeninnholdet og slimhinnen slik at effektiviteten av både fordøyelses- og absorpsjonsprosesser øker </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippet og ha med de viktigste momentene; * Plica (0,25), villi (0,25), enlaget sylinderepitel (0,25), mikrovilli (0,25), nettverk blod-lymfeårer i villi (0,25), lamina propria (0,25) – 1,5p * Øker overflaten (0,5) for mest mulig effektiv fordøyelse og absorpsjon (0,5) – 1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan kalsium absorberes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kalsium absorberes via to parallelle prosesser; en aktiv transcellulær (gjennom enterocyttene) hovedsakelig i duodenum, og en passiv paracellulær (mellom enterocyttene) i alle deler av tynntarmen. Den aktive transporten involverer opptak via kalsiumkanalen i den luminale cellemembranen i enterocyttene, transport gjennom enterocytten ned den intracellulære elektrokjemiske gradienten bundet til kalsiumtransportproteinet calbindin, og ut av cellen via en kalsiumATPasepumpe </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippet og ha med de viktigste momentene; * Aktiv absorpsjon gjennom celler i øvre del – 0,5p * Passiv absorpsjon mellom celler hele tynntarm – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket vitamin er viktig for denne absorpsjonen [av kalsium] og hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vitamin D er viktig for den aktive kalsiumabsorpsjonen ved at vitamin D er nødvendig for å ha nok calbindin i enterocyttene. Den intracellulære konsentrasjonen av calbindin er det hastighetsbestemmende trinnet i kalsiumabsorpsjonen. Vitamin D øker genuttrykket av calbindin. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Vitamin D – 0.5p * Regulerer mengden calbindin – 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten var også plaget med halsbrann og sure oppstøt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvordan sekresjon av magesyre reguleres og hvilke viktigste signalsubstanser som er involvert. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vagusnerven stimuleres av tanke, syn, lukt osv (=cephalisk fase) og stimulerer parietalceller direkte via acetylcholin (og også ECL celler via mediatorer som PACAP fra det enteriske nervesystemet, og også G-celler og D-celler enten direkte og/eller indirekte via enteriske nervesystem). G-celler i antrumdelen av magesekken er normalt under hemming av den sure pH i magesekken. "Måltid" stimulerer G-celler ved at maten nøytraliserer pH og ulike komponenter i maten, spesielt peptider, stimulerer cellene direkte. G-celler produserer hormonet gastrin som skilles ut i blodbanen og når corpusdelen av magesekken, der det stimulerer ECL celler til å skille ut histamin. Histamin virker hovedsakelig parakrint på parietalceller og stimulerer til syresekresjon. Økt mengde magesyre (H^^+^^ ioner, synkende pH) virker så inhiberende tilbake på prosessen (=negativ feedback), hovedsakelig ved å stimulere antrale D-celler til å skille ut somatostatin som inhiberer G-celler <<imgLink "IAB-2017s-3-B.PNG" 400>> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippet og ha med de viktigste momentene; * Acetylcholin fra vagus før/ved måltid – 0,5p * Måltid nøytraliserer pH og stimulerer gastrin – 0,5p * Gastrin fra G-celler i antrum stimulerer ECL/histamin – 0,5p * Histamin fra ECLceller i corpus stimulerer parietalceller i corpus – 0,5p * Prosessen stoppes ved negativ feedback av økt syre på gastrinutskillelsen – 0,5p * Somatostatin (fra D-celler) inhiberer syresekresjon – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket hormon skilles ut, og fra hvor, når det kommer innhold med lav pH til duodenum? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hormonet er sekretin som produseres i enteroendokrine S-celler i tarmslimhinnen i duodenum og jejunum. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Hormonet er sekretin – 0.5p * Fra s-celler/enteroendokrine celler i tynntarmslimhinnen – 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forrige spørsmål: <<< Hvilket hormon skilles ut, og fra hvor, når det kommer innhold med lav pH til duodenum? <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilken virkning dette hormonet har på fordøyelsen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sekretin skilles ut i blodet (portasirkulasjonen) når cellene registrerer lav pH i tarmlumen, og hormonet stimulerer sekresjon av bikarbonat og vann fra pankreasgangepitelet. Dette nøytraliserer det sure innholdet (pga magesyren) som kommer fra magesekken, og gir dermed riktig og nødvendig ph for at alle fordøyelsesenzymene fra pankreas kan virke. Hormonet har dermed den effekten at det tilrettelegger og øker spalting (fordøyelse) av alle de tre viktigste næringsstoffene - både karbohydrater (amylase), fettstoff (lipase, ko-lipase, fosfolipase, esterase) og protein (proteaser som trypsin, chymotrypsin, karboksypeptidase, elastase) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippet og ha med de viktigste momentene; * Stimulerer sekresjon av bikarbonat og vann fra pankreas(gangepitel) – 0,5p * Dette nøytraliserer pH – 0,5p * Viktig for virkning av pankreasenzym som bidrar til nedbrytning av alle de viktigste næringsstoff – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 70 år gammel mann med kjent kols (som er en obstruktiv lungesykdom) kommer til Mottakelsesavdelingen på St Olavs Hospital fordi der har inntrådt en forverring av tilstanden. Han har betydelig dyspne (tungpust) og må legges inn. Der tas bl a arteriell blodgasser som uten oksygentilførsel viser forhøyet PaCO2 7,1 kPa (øvre grense er 6,0 kPa) og noe nedsatt PaO2 8,1 kPa (nedre grense ikke under 10,0 kPa for en mann på denne alderen). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles denne typen respirasjonssvikt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette er en type 2 respirasjonssvikt (ventilasjonssvikt) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Å nevne type 2 respirasjonssvikt. (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hovedstimulus for ventilasjonen og hvor er hovedsetet for denne reguleringen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hovedstimulus for økt ventilasjon er forhøyet PaCO2, setet for denne reguleringen er de sentrale kjemoreseptorene i medulla oblongata (den forlengete marg). PaCO2 passerer blod – hjernebarrieren og fører til senket pH (altså økt H^^+^^) i cerebrospinalvæsken. Økt H^^+^^ stimulerer sentrale reseptorer og gir økt ventilasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Høy PaCO2 som hovedstimulus gir 1.5 poeng, at PaCO2 passerer til CNS og stimulerer (via økt H^^+^^) gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor sitter de perifere kjemoreseptorene? Hva responderer de primært på og hvordan? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De sitter ved aortabuen og ved delingen av arteria carotis (carotisbifurkaturen) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Nevne aortabuen 0.5 poeng, nevne carotis 0.5 poeng, at de responderer på hypoksemi med økt ventilasjon gir 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra tidligere vignett: <<< En 70 år gammel mann med kjent kols (som er en obstruktiv lungesykdom) kommer til Mottakelsesavdelingen på St Olavs Hospital fordi der har inntrådt en forverring av tilstanden. Han har betydelig dyspne (tungpust) og må legges inn. Der tas bl a arteriell blodgasser som uten oksygentilførsel viser forhøyet PaCO2 7,1 kPa (øvre grense er 6,0 kPa) og noe nedsatt PaO2 8,1 kPa (nedre grense ikke under 10,0 kPa for en mann på denne alderen). <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) # Hva er potensiell fare med å gi ukontrollert oksygentilførsel til en slik pasient? # Og hva er mekanismen bak denne potensielle faren? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Man tenker seg at pasienten er tilvent høy PaCO2 slik at dette ikke lenger er det sentrale stimulus for ventilasjon. Da får lav PaO2 en sterkere rolle her enn til vanlig (pasienten "puster på lav PaO2"): Ved å gi ukontrollert oksygentilførsel kan man risikere og ta bort "driven" for ventilasjonen hos disse pasientene slik at de ventilerer (puster) enda dårligere med ytterligere økende PaCO2 som konsekvens. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # Å nevne at faren er at man ved ukontrollert oksygentilførsel får ytterligere CO,,2,,-stigning og risikerer å gli inn i CO,,2,,-narkose gir 1 poeng # Å nevne at ventilasjonen hos disse drives av lav PaO2 og at man ved å gi ukontrollert O,,2,, risikerer å ta bort lav oksygen som stimulus til ventilasjonen hvilket resulterer i ytterligere CO,,2,,-stigning gir 1.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det som spirometrisk karakteriserer en obstruktiv ventilasjonsinnskrenkning? Og hvilket typisk utseende har flow-volumkurven ved en obstruktiv ventilasjonsinnskrenkning? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Per definisjon nedsatt FEV1/FVC < 0.70. Flow – volumkurven har typisk "hengekøypreget" utseende (ev. "salryggpreget" utseende.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for FEV1/FVC < 0.70 og 1 poeng for å nevne at "hengekøypreg" av flow-volumkurven er det typiske utseende </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ei 78 år gammel kvinne kom haltende inn på sykehusets akuttmottak et døgn etter at hun hadde falt og slått seg i venstre hofte. Seks måneder tidligere hadde hun hatt en bruddskade gjennom samme sides trochanter major, og var den gang blitt behandlet med innsetting av plate på femur og skrue gjennom bruddstedet. Operasjonen hadde gått greit og bruddet var grodd. Røntgenbilde viste nå bakoverforskyvning (luksasjon) av caput femoris (A). Ved undersøkelsen var det tydelig at venstre underekstremitet var forkortet og innoverrotert, og pasienten klaget over smerter i venstre hofte. <<imgLink "IAB-2018-1-A.PNG">> Pasienten ble klargjort for operativ behandling for å redusere forskyvningen av caput femoris. Blodprøvene tydet imidlertid på infeksjon, og under perasjonen fant kirurgen at det var betennelsesforandringer i hofteleddet. En del av caput femoris var erodert. Noe vevsmateriale ble sendt til undersøkelse, og det ble bekreftet at det forelå en betennelse, og det kom oppvekst av bakterier. Etter at alle plater og skruer var fjernet, ble pasienten lagt i beinstrekk og fikk antibiotikabehandling i seks uker. Deretter ble hun operert på nytt og fikk satt inn totalprotese i hofteleddet (B). Ved kontroll tre år etterpå kunne hun gå uten smerter og uten å halte, og det var ingen kliniske eller laboratoriemessige tegn til infeksjon. <<imgLink "IAB-2018-1-B.PNG">> //(Kasusbeskrivelse og røntgenbilde er fra Tzurbakis et al.: Deep wound infection after a trochanteric fracture internal fixation presenting with hip dislocation, Cases Journal, 2010;3:19)// </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er forskjellen på symptomer og kliniske funn? Hvilke symptomer og kliniske funn ville du ha notert i denne pasientens journal ved innkomst? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Symptom:'' Det pasienten subjektivt oppfatter (smerter i ve hofte, problemer med å gå, etc.) ''Kliniske funn:'' Det legen observerer, måler og finner ved undersøkelse (forkortet og utadrotert underekstremitet, evt. inflammasjonsfunn lokalt, smerter ved palpasjon, etc.). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Korrekt definisjon på symptomer og kliniske funn (1 poeng). Korrekte eksempler på hver av dem (½ poeng). </$details> Neste: [[IAB - 2018 - Oppgave 1 - Del 2]]
Forrige: [[IAB - 2018 - Oppgave 1]] !! Vignett Brudd i lårhalsen er svært vanlig hos eldre personer. Hos noen pasienter ser vi at caput femoris går til grunne på grunn av manglende blodtilførsel etter slike brudd. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan forsynes caput femoris med blod? Hvilken egenskap ved bruddet er avgjørende for om det skal føre til ødeleggelse av caput femoris? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dels gjennom arterie i lig. capitis femoris (ramus acetabularis fra a. obturatoria), dels ved arterier gjennom kapselen (a. circumflexa femoris lateralis og – medialis fra a. profunda femoris) som så følger arterier i beinvevet langs collum femoris til caput femoris. Ved brudd medialt for kapselens tilhefting på femur, vil caput bli avhengig av tilførsel gjennom lig capitis femoris, noe som kan være utilstrekkelig, slik at caput nekrotiserer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> To ulike blodforsyninger: - Fra lig. capitis femoris = ½ poeng. Fra to cirkumflex-arterier langs femur gjennom kapselen = ½ poeng. </$details> Neste: [[IAB - 2018 - Oppgave 1 - Del 3]]
Forrige: [[IAB - 2018 - Oppgave 1 - Del 2]] !! Vignett Pasientens brudd gikk gjennom trochanter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskrive hvordan de to trochanterene på femur er lokalisert, og angi de viktigste muskelgruppene som er festet på disse og disse muskegruppenes funksjon. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Trochanter major ligger lateralt på øvre ende av femurskaftet. Feste for den dype gluetal-/hofteleddsmuskulaturen, dvs. hofteleddets viktigste abduktorer, ekstensorer og utadrotatorer (mm. glutei minimus, medius og utoverrotatorer: m. piriformis, mm obturatorii (m./mm. gemelli), mens m. quadratus femoris fester mellom trochanter major og minor (crista intertrochanterica). I tillegg er trochanter major utspring for m. vastus medialis. Trochanter minor ligger medialt på øvre ende av femurskaftet, like under overgangen til collum. Dette er festet for m. iliopsoas, den viktigste fleksormuskelen i hofteleddet. I tillegg til de ulike bevegelsene, er all denne muskulaturen også med å stabilisere hofteleddet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Trochanter majors lokalisasjon (lateralt + øvre ende av femurskaftet) = ½ poeng. Musklene som er festet på trochanter major er den dype gluteal-/hofteleddsmuskulaturen som abduserer, utadroterer og ekstenderer hoften = ½ poeng. Trochanter minors lokalisasjon (medialt + øvre ende av femurskaftet) = ½ poeng. M. iliopsoas som er festet på trochanter minor flekterer hoften = ½ poeng. </$details> Neste: [[IAB - 2018 - Oppgave 1 - Del 4]]
Forrige: [[IAB - 2018 - Oppgave 1 - Del 3]] !! Vignett Pasientens tidligere bruddskade hadde grodd. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort den stegvise reparasjonsprosessen fra beinbrudd til tilhelet beinvev. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Hematom, med erytrocytter, leukocytter og fibrinutfelling. # Innvekst av blodkar/endotel, fibroblaster/osteoprogenitorceller fra periost og beinmarg (første uke) og omdanning av fibrøst bindevev til brusk-kallus. # Omdanning av brusk-kallus til beinvev ved syntese av osteoid og utfelling av kalk (primært beinvev) (måneder). # Remodellering av beinvevet til lamellært beinvev ved osteoklast- og osteoblast-aktivitet (flere år). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for korrekt beskrivelse av hvert punkt. </$details> Neste: [[IAB - 2018 - Oppgave 1 - Del 5]]
Forrige: [[IAB - 2018 - Oppgave 1 - Del 4]] !! Vignett <<imgLink "IAB-2018-1-C.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) De hvite pilene på røntgenbildet peker på fire mørke linjer som markerer tre ulike ledd. Hva heter disse leddene og hvilke beinstrukturer inngår i disse leddene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Artt. sacroiliacae: Os sacrum og ossa ilii. # Art. coxae: Femur (caput) og acetabulum (ossa ilii, ischii, pubis) # Symphysis pubis: Synchondrose mellom ossa pubis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for korrekt navn og beskrivelse av hvert ledd </$details> Neste: [[IAB - 2018 - Oppgave 1 - Del 6]]
Forrige: [[IAB - 2018 - Oppgave 1 - Del 5]] !! Vignett I påvente av at infeksjonen skulle bli slått tilbake, ble pasienten lagt i beinstrekk, dvs. en metallpinne gjennom tuberositas tibiae festet til et vektsystem som trekker femur i distal retning. Dette gjøres for å motvirke sammentrekning av de musklene som ellers ville ha ført til ytterligere forkortelse av underekstremiteten. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke funksjonelle muskelgrupper strekker seg over hofteleddet og dermed kan forkorte underekstremiteten ved brudd? Hvilke nerver innerverer disse muskelgruppene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Abduktorer/ekstensorer: Mm. glutei maximus, medius, minimus, m. tensor fasciae latae (nn. glutei). # Adduktorer: Mm. adductores brevis, longus, magnus, m. pectineus, m. gracilis (n. obturatorius (for m. pectineus er det vanligvis n. femoralis)) # Fleksorer: M. iliopsoas. Innervasjon: Mm. psoas major et minor: Fremre greiner fra plexus lumbalis (L1-3); m. iliacus: n. femoralis – L2-4). I tillegg de som strekker seg fra hofte til tibia: M. sartorius, m. rectus femoris (n. femoralis). # Hasemuskler (ekstensorer): Mm. biceps (caput longum), semitenidosus, semimembranosus (n. ischiadicus). Flere av disse gruppene er også involvert i utad-/innadrotasjon uten at dette er spesifisert her. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for korrekt angivelse av de fire hovedmuskelgruppene som strekker seg over hofteleddet (ekstensor-, adduktor-, fleksor- og ekstensorgruppen med noen av de viktigste musklene i hver gruppe nevnt) og korrekt innervasjon for hver av gruppene. </$details> Oversikt IAB: [[IAB]]
<div class="oppgave"> <div class="vignett"> !!Vignett En 25 år gammel kvinne bringes bevistløs til akuttmottaket av kjæresten. Hun driver med «bodybuilding» og «fitness» og har tatt to «slankepiller» for å oppnå et hurtig vekttap før en konkurranse. Hun klaget over hodepine, feber, brystsmerter, kraftig svetting og slapphet. Funn ved ankomst i akuttmottaket er kroppstemperatur 40,8^^o^^C, puls 151, respirasjonsfrekvens 56 pr. min., og blodtrykk 40/10. Livet hennes var ikke mulig å redde og hun dør 15 min etter ankomst i akuttmottaket. Hennes kroppstemperatur fortsetter å øke til 46^^o^^C 15 min etter døden. I ettertid ble det klart at hun hadde fått «slankepillene» fra en venn. Og det viste seg at virkestoffet i disse pillene var 2,4-dinitrofenol. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) 2,4-dinitrofenol er en proton-ionofor, dvs et stoff som binder og kan overføre protoner over cellemembraner. Dette fører til at protongradienten over den indre mitokondriemembranen reduseres. Hvorfor kan inntak av dette stoffet føre til temperaturtigning hos kvinnen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 2,4 dinitrophenol vil ødelegge protongradienten over den indre mitokondriemembranen, og dermed redusere ATP (Adenosine Trifosfat) produksjonen ved oksidativ fosforylering. I stedet for å generere ATP går energien som normalt omdannes til ATP i Krebs-syklus og ved oksidativ fosforylering tapt som varmeproduksjon, dvs energien omdannes til varmeenergi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for å nevne at protongradienten over den indre membranen er nødvendig for å generere ATP ved oksidativ fosforylering. 0.5 poeng for å nevne at når energien ikke går til ATP-produksjon omdannes denne i stedet til varmeenergi. Totalt mulig 1 poeng </$details> Neste: [[IAB - 2018 - Oppgave 2 - Del 2]]
<div class="oppgave"> <div class="vignett"> !!Vignett Acetyl-CoA (acetyl-Coenzym A) er et thioester som produseres i nedbrytning av glukose </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) * Hva er et koenzym? * Hva er en prostetisk gruppe? * Hva er et vitamin? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Koenzym: Kjemisk stoff (ko-faktor) som ikke er et protein, men som er nødvendig for aktiviteten til et enzym. Prostetisk gruppe: Kofaktor/koenzym som er kovalent bundet til et enzym. Vitamin er en organisk forbindelse som er et vitalt næringsstoff som en organisme trenger. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delspørsmål gir 1 poeng, dvs totalt 3 poeng mulig. </$details>
Forrige: [[IAB - 2018 - Oppgave 2 - Del 2]] <div class="oppgave"> <div class="vignett"> !!Vignett Energien i glukose omdannes til ATP ved oksidasjons- og reduksjons-reaksjoner i nedbrytning av glukose. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva menes med oksidasjons- og reduksjons-reaksjoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Oksidasjon av et stoff innebærer fjerning av elektroner, enten elektroner alene eller i form av hydrogenatomer. Reduksjon innebærer binding av elektroner, enten alene eller som H. NAD^^+^^ (Nicotin Adenin Dinukleotid) er et oksiderende agens som binder elektroner (og H^^+^^) og dermed blir redusert. Denne reaksjonen resulterer i NADH som så kan bli oksidert ved å gi fra seg elektroner (og H^^+^^). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvis kandidaten enten vet hva oksidasjon eller reduksjon er gis 2 poeng. </$details> Neste: [[IAB - 2018 - Oppgave 2 - Del 4]]
<div class="oppgave"> <div class="vignett"> !!Vignett Acetyl-CoA (Coenzym A) er av stor betydning ved fullstendig omdanning av energien i glukose til ATP. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er Acetyl-CoA av så stor betydning også i metabolisme av andre stoffer enn glukose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Acetyl-CoA er en energirik thioester som produseres også ved nedbryting av fettsyrer (og andre lipider) og aminosyrer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng hvis både fettsyrer/lipider og aminosyrer er med. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når celler har nok oksygen omdannes energien i glukose effektivt til ATP ved elektrontransport og oksidativ fosforylering. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan fører elektrontransport til generering av ATP? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Elektrontransporten utnyttes til å pumpe protoner (H^^+^^) ut av lumen (matrix) av mitokontriene. Dette fører til en konsentrasjonsforskjell (ca 10x) i H^^+^^ mellom matrix (lumen) og rommet mellom indre og ytre membran («intermembrane space») i mitokondriene. H^^+^^ kan bare strømme tilbake til matrix (utligne konsentrasjonsforskjellen) ved å passere gjennom proton-spesifikke kanaler (F,,o,,). Disse kanalene er koblet sammen med en ATP syntase (kompleks V) som utnytter energifrigjøringen ved at H^^+^^ strømmer tilbake for syntese av ATP fra ADP. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 p for å nevne at elektrontransporten fører til H^^+^^ gradient over matrix membranen og 1 poeng for å nevne ATP syntasen og hva denne gjør, tilsammen 2 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 51 år gammel kvinne har hatt anfall med gallekolikk i flere år og har påvist stein i galleblæra. Nå blir hun innlagt med vedvarende smerter, feber og klart avvikende svar på blodprøver rettet mot galleveier/lever. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv i korte trekk oppbygningen av galleveissystemet fra hepatocyttnivå til innløpet i duodenum. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kanalikuli mellom hepatocyttene, mikroskopiske intrahepatiske galleganger, intrahepatiske galleganger, høyre/venstre hovedgren, ductus hepaticus communis, ductus choledochus, papilla Vateri mot duodenum. Ductus cysticus med galleblære som vedheng til ductus choledochus. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kanalikuli (0,5 poeng), intrahepatisk samlesystem (0,5 poeng), ductus choledochus (0,5 poeng), ductus cysticus med galleblære (0,5 poeng) </$details>
Neste: [[IAB - 2018 - Oppgave 3]] <div class="oppgave"> <div class="vignett"> !!Vignett Blant mange andre prøver finner du at bilirubin i serum er betydelig forhøyet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ut fra bakgrunnsopplysningene om pasienten, hva er den mest sannsynlige årsaken til dette blodprøvesvaret? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Stein har forlatt galleblæra, har kilt seg fast i ductus choledochus og blokkerer avløpet fra galletreet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar gir ett poeng </$details> Neste: [[IAB - 2018 - Oppgave 3 - Del 3]]
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) De fleste gallestein i Norge inneholder mye kolesterol. Forklar hvordan man tenker seg at kolesterolkrystaller og stein oppstår i galleblæra og hvorfor det sjelden skjer ellers i gallegangsystemet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kolesterol (lite vannnløselig) holdes i suspensjon i miceller hvor interfasen mot vann utgjøres av amfifatiske molekyler, stort sett gallesalter og noe fosfaditylcholin. Stein dannes ved et misforhold mellom kolesterolkonsentrasjon i gallen og mengde tilgjengelig gallesalt, kolesterol krystalliseres ut og begynner å danne stein. Dette skjer i galleblæra fordi gallen er stillestående her over tid og gallen konsentreres opp 10-15x. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Micelleprinsippet (1 poeng), gallesalter som det primære amfifatiske elementet (1 poeng), stillestående og konsentrert galle som predisponerende (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er gallesaltenes rolle i fordøyelsen, og hva mener vi med enterohepatisk sirkulasjon av gallesalter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gallesalter sekreres fra hepatocytter til gallen og tømmes ut i tarmen ved måltid. Her deltar gallesaltene i emulsifering av fett, og danner etter spalting av komplekse fettmolekyler miceller med spaltingsproduktene inntil absorpsjon finner sted. Enterohepatisk sirkulasjon er at fri gallesalter tas opp av tynntarmslimhinnen generelt (uspesifikt opptak), og gjennom et spesifikt opptaksystem i distale ileum og bringes tilbake til leveren gjennom v. portae for «gjenbruk». </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Emulsifering av fett og micelledannelse i tarm (1 poeng), gjenopptaksystemet og resirkulering til lever (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket gastrointestinalt reguleringspeptid (hormon) stimulerer tømming av galle og av pankreasenzymer til tarm? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cholecystokinin (CCK) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig hormon </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den fysiologiske logikken i at galle og pankreasenzymer tømmes til tarm samtidig? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Spalting av fett (stort sett triglyserid) gjøres av pankreasenzymer, emulsifering av fettet bidrar til denne prosessen (større overflate, bl.a.). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Forståelse av sammenhengen mellom gallesaltenes emulsiferende effekt (stor overflate) og enzymaktivitet gir ett poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tora, en 76 år gammel kvinne, legges inn på sykehuset på grunn av økende tung pust de siste tre døgnene. Fra tidligere har hun kjent, stabil hjertesvikt. Hun har av sin allmennlege vært vurdert til å være i NYHA funksjonsklasse II. (NYHA = New York Heart Association) Det siste døgnet har hun opplevd tung pust ved moderate anstrengelser, hun har måttet stoppe opp og hvile for å "ta igjen pusten" etter å gått en etasje i trapp opp fra kjøkkenet til badet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken NYHA funksjonsklasse vurderer du at pasienten er i nå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> NYHA funksjonsklasse III </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> NYHA-klassifisering av hjertesvikt er en standardisert måte for å karakterisere hjertesviktpasientenes funksjonsnivå. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er de vanligste kardiovaskulære årsakene til hjertesvikt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Iskemisk hjertesykdom og hypertensjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Iskemisk hjertesykdom og hypertensjon gir 3 poeng. Iskemisk hjertesykdom gir alene 2 poeng. Andre årsaker som kan telle er kardiomyopatier, medfødte hjertefeil og arytmier. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten opplyser at hun de siste måneden har hatt episoder med følelse av hjertebank der hun har merket seg at pulsen har vært rask og uregelmessig. Ved palpasjon av pulsen i arteria radialis kan du bekrefte at hun har uregelmessig puls som varierer fra 110 til 140 pulsstøt per minutt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den primære supplerende undersøkelsesmetoden for å dokumentere mistanke om atrieflimmer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Elektrokardiogram = EKG </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Alle former for elektrokardiogram som er egnet til fremstille QRS-komplekser og å verifisere tilstedeværelse eller fravær av P-bølger og relasjonen til QRS-kompleksene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved auskultasjon over lungenes bakflater hører du tydelige fremmedlyder over basalflatene bilateralt. Du mistenker at det foreligger lungestuvning. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den primære supplerende bildeundersøkelsen for å dokumentere mistanke om lungestuvning? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Røntgen thorax </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Røntgen thorax er standardmetode og gir 2 poeng. CT / MRI /ultralyd er alternative metoder og kan alene eller sammen gi inntil 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved auskultasjon over hjertet hører du uregelmessig hjerterytme, det er tydelige hjertetoner og du hører en tydelig systolisk bilyd av blåsende karakter, best hørbar over 3. intercostalrom til høyre for sternum. Du mistenker at pasienten har aortastenose. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den primære supplerende undersøkelsesmetoden for å dokumentere mistanke om aortastenose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ekkokardiografi med Dopplermodalitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ultralyd av hjertet: * Avbildingsmodus gir opplysning om klaffemorfologi * Dopplermodus med måling av blodstrømshastighet gir kvantitativ opplysning om alvorlighetsgrad Øvrige metoder som kan bekrefte mistanke, men som ikke gir full uttelling: * Hjertekatereinsering kan benyttes, men er ikke førstevalg * Røntgen CT kan gi noe opplysning om klaffemorfologi * Røntgen thorax kan vise kalknedslag i klaffer, men er ikke tilstrekkelig for diagnose * MR-avbilding gir opplysning om klaffemorfologi, men er ikke egnet for kvantitering </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kreftceller vokser uten å respektere ytre omgivelser eller indre betingelser som normalt skal gi celledød. Cellesyklus beskriver de ulike fasene cellen går gjennom under celledeling. Hva heter de fire fasene cellesyklus inndeles i? Bruk gjerne en skisse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke fire faser inngår i cellesyklus? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fire faser i cellesyklus: G1 -> S -> G2 -> M. Noen vil også inkludere G0 som en fase cellen går inn i fra G1, og som er en fase utenfor syklusen og hvor en celle kan oppholde seg på ubestemt tid. G står for «gap», S står for «syntese» og M står for Mitose. Opprinnelig var cellesyklus inndelt i to faser: Mitose (som var synlig i lysmikroskop pga kondensert kromatin) og Interfase, som var alt mellom hver mitose, altså G1+S+G2. Figur 17-9 fra Alberts Molecular Biology of the Cell s 968: <<imgLink "IAB-2018s-1-A.PNG" 500>> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> G1 (0,5), S (0,5), G2 (0,5), M (0,5) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hovedsjekkpunkter må cellen passere gjennom cellesyklus, hvor er de lokalisert i forhold til de fire fasene fra spørsmål 1, og hvilke faktorer sjekkes ved hvert sjekkpunkt? Bruk gjerne en skisse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De tre hovedsjekkpunktene som det fokuseres på i lærebøker og forelesning er følgende: # G1/S (eller "start") # G2/M # Metafase-til-anafase Navn på sjekkpunktet angir hvor i cellesyklus de er lokalisert/hvilken faseovergang de kontrollerer. For metafase-tilanafase er dette en overgang ca midtveis i M-fasen. Følgende faktorer sjekkes: * Ytre faktorer -> G1/S * Indre faktor: DNA-skade -> G2/M * Indre faktor: Spindelapparat-sjekk, er alle kromosomer korrekt posisjoner, slik at to søsterkromatider går til hver sin spindelpol -> metafase til anafase </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sjekkpunkt: * G1/S (0,5 poeng), * G2/M (0,5 poeng), * metafase-til-anafase (0,5 poeng) Faktorer: * Ytre faktorer -> G1/S (0,5 poeng) * Indre faktor: DNA-skade -> G2/M (0,5 poeng) * Indre faktor: Spindelapparat-sjekk (0,5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket stoff i cellen ‘kondenserer’ i cellesyklus slik at det blir synlig? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kromatin (kromatin = DNA + proteiner) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> DNA eller kromatin (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Dersom en tar en suspensjon av celler kan fraksjonen som er i celledeling måles ved å måle mengde DNA per celle, f.eks ved hjelp av flow cytometri. Mengden DNA per celle kan se ut som i figuren under: <<imgLink "IAB-2018s-1-B.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke deler av figuren representerer celler som med sikkerhet er under celledeling? Hvilke(n) cellesyklusfase(r) er disse cellene i? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cellene med mer enn normal mengde DNA er i celledeling, fordi de enten har fullstendig duplisert sett DNA (cellene omkring toppen til høyre) eller delvis duplisert sett DNA (cellene mellom venstre og høyre topp). Cellene i venstre topp kan i prinsippet også være i ferd med å dele seg, og kan ikke skilles fra celler i f.eks G0-fase i denne figuren. Cellene i høyre topp er enten i, G2-fase eller M-fase. Cellene i venstre topp er enten i G0 eller G1. Cellene mellom toppene er i S-fase. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Celler under celledeling: Høyre topp (1 poeng) og området mellom toppene (1 poeng). G2 og M-fase for høyre topp: 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Cellesyklus koordineres av spesialiserte proteiner med nøye regulert aktivitet. En klasse proteiner kalt syklin-avhengige kinaser (Cdk) har en aktivitet som reguleres av sykliner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan regulerer sykliner aktiviteten til Cdk? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mengden syklin regulerer aktivitet til gitte Cdk-proteiner. Cdkproteinene er konstant uttrykt, mens syklinet er ‘syklisk. F.eks vil Cyclin D (også kalt G1-syklin) binde Cdk4 og Cdk6 og aktivere disse, som er med på å føre cellen over G1/S-sjekkpunktet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Mengden syklin regulerer aktivitet til gitte Cdk-proteiner (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hemostase trengs ved vaskulær diskontinuitet, f.eks et knivkutt. Dette forutsetter at trombocytter adhererer til skadestedet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 3 molekyler som er viktige for adhesjonen av plater mot matrixproteiner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> von Willebrand faktor (vWF) gp Ib:V:IX gp Ia:IIa </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for vWF, ett poeng for hver av de andre. Dersom studenten svarer "integrin", men ikke de riktige navnene på gpene får hun 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I trombocyttenes granula er det blant annet mye Ca^^++^^ og ADP. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er funksjonen til fritt Ca^^++^^ og ADP i hemostasen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ca^^++^^ bedrer funksjon av koagulasjonsfaktorene ADP befremmer aggregasjon av trombocytter </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 p for funksjonen av Ca^^++^^ 1p for funksjonen av ADP </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Platepluggen holdes sammen (plate til plate) av et integrinmolekyl og fibrinogen. Hva heter dette integrinet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> gpIIb:IIIa </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Plateadhesjon-aktivering-aggregasjon står i nær sammenheng med plasmakoagulasjonen på skadestedet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Koagulasjonsfaktorene får svært mye bedre funksjon fordi platenes cellemembran endrer sine egenskaper drastisk. Hva skjer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cellemembranen hos ferdigaktiverte plater får negativ ladning pga at et fosfolipid, fosfatidylserin, vrenges på utsiden. Dette gir mye bedre funksjon av koagulasjonsfaktorene </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tissue Factor (TF, vevsfaktor) produseres i fibroblaster og andre bindevevsceller som omgir blodkar. Når et blodkar kuttes kommer TF i kontakt med blod. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan befremmer TF hemostasen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den binder FVII og dette komplekset spalter FX. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Den binder FVII (1p) og komplekset spalter FX. (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 66 år gammel mann kommer på lungepoliklinikken fordi han har hatt økende tungpust ved anstrengelser siste 1-2 år. Han har vært fysisk aktiv og meget sprek og bl.a. gått Birkebeinerrennet flere ganger, men har nå store problemer med å holde følge med mindre aktive jevnaldrende f. eks. i motbakker. Han har aldri røkt. Undersøkelsene viser at han begynt å utvikle fibrose i lungene, og diffusjonsmåling viser at lungenes diffusjonskapasitet er nedsatt. Diffusjonskapasiteten (diffusjonsevnen) for oksygen i lungene er en prosess som utgjør et av flere trinn som har betydning for gassvekslingen i kroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar med enkle ord hva diffusjon for oksygen i lungene innebærer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lungenes diffusjonskapasitet for oksygen (O,,2,,) beskriver hvordan (hvor lett og uhindret) O,,2,, passerer fra lungenes alveoler og over i blodet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Overnevnte svar gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Når oksygen diffunderer fra lungene og over i blodet, passerer gassen over en viktig anatomisk struktur. Hva heter den og hvordan er den bygd opp? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> På sin vei fra alveol-luften i lungene til blodbanen (lungekapillærene) passerer oksygenet den __alveolokapillære membran = den respiratoriske membran__. Den består av (fra alveolside til kapillærside) et lag __surfaktant__ (som ikke er en anatomisk del av membranen), et __epitellag__ (på alveolsidenalveolepitel), denne hviler på epitellagets __basalmembran__, så et passerer oksygenet et tynt __interstitie-sjikt__, så igjen en basalmembran (endotel-lagets basalmembran) og deretter et tynt lag __kapillær-endotel__. I den respiratoriske membran mangler ofte basalmembranen slik at epitel og endotel ligger mot hverandre. Membranen blir således svært tynn slik at avstanden som oksygen må diffundere ("diffusjonsveien") blir svært kort </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å vite navnet, 1 poeng for å redegjøre for oppbygning (fortsatt 1 poeng om man mangler et av lagene i oppbygningen). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke anatomiske og fysiologiske forhold er bestemmende for lungenes gass-diffusjon (dvs for mengden oksygen som diffunderer)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Størrelsen av gassvekslings-arealet (dvs. den alveolokapillære membran) mellom alveol og kapillær. # Veggtykkelsen fra alveol til erytrocytt (dvs. tykkelsen av den alveolokapillære membran) som er den distansen oksygenet må passere under dffusjon # Drivtrykket for oksygen mellom alveol og blod, altså forskjellen i oksygentrykket i alveolen og i kapillærene. (oksygentrykket er høyest i alveolene slik at oksygen diffunderer fra alveol til blod). # Tilgjengelig mengde hemoglobin i blodet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.75 poeng for hver </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Karbondioksyd diffunderer (forskjellig) mye lettere enn oksygen. Hvilken klinisk konsekvens har det ved nedsatt diffusjonskapasitet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved isolert nedsatt diffusjonskapasitet i lungene får man ofte okygenereringssvikt, men (omtrent) aldri problemer med å skille ut karbondioksyd. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å vite at nedsatt diffusjon gir problemer med oksygenering, men at det fortsatt går greit å bli kvitt karbondioksyd som altså ikke hoper seg opp </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved lungesykdom er der i hovedsak to ulike patoanatomiske forhold som er av betydning ved nedsatt diffusjonskapasitet for oksygen i lungene. Hvilke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved lungesydommer som gir nedsatt diffusjonskapasitet for oksygen vil der enten foreligge fortykket __alveolo-kapillær membran__ (eks fibrose, oksygenet "får lenger vei å gå") eller så foreligger der redusert diffusjonsflate ved at alveoler og alveolkapillærer er destruerte hvilket gir en __redusert diffusjonsflate__ med også mindre kapillærnett til å motta oksygenet (eks emfysem). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for å nevne fortykket membran og 0,5 poeng for å nevne redusert diffusjonsflate. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gjør skjematisk kort rede for hvilke trinn oksygentransporten omfatter helt fra vi puster inn til oksygenet blir tatt opp perifert i vevet/cellene </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Oksygenet transporteres ved ventilasjonen fra atmosfæreluft og fordeles i luftveiene ut til lungenes alveoler. # Deretter transporteres det ved diffusjon over alveolmembranen og til blodet hvor det bindes til hemoglobin i erytrocytene for videre transport. # Videre transport skjer ved hjelp av sirkulasjonen slik at oksygen bundet til hemoglobin transporteres og fordeles ut i kroppen til cellenes mitokondrier i arbeidende vev. # Etter at oksygenet er fraktet til arbeidende vev, transporteres det fra erytrocyten til vevscellenes mitochondrier. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.75 poeng for hvert trinn </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Patellarrefleksen utløses av et kort slag på senen til m. quadriceps femoris. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvordan forbindelsen mellom afferent og efferent ledd er i denne refleksen, og hvor reflekssenteret sitter </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reflekssenteret sitter lumbalt (L2-L3-L4) i ryggmargen. Dette er en monosynaptisk refleks, dvs. at det i denne refleksbuen bare er en synapse mellom afferent og efferent ledd (I tillegg til den direkte forbindelsen mellom afferente Ia-fibre fra muskelspolen og α-motornevroner, virker også Ia-fibre på α-motornevronene polysynaptisk via internevroner). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ryggmargen/medulla spinalis gir 0,5 poeng. Monosynaptisk og/eller at reflekssenteret har en synapse gir 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Reseptoren for patellarrefleksen er muskelspolene i m. quadriceps femoris. Dette er den muskelen på kroppen som har høyest antall muskelspoler. Tettheten av muskelspoler er imidlertid langt høyere i enkelte andre muskler. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hva funksjonen til muskelspolene er, og nevn et område på kroppen der vi finner muskler med særlig høy tetthet av dem? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Muskelspolene er lengdemålere, og måler både muskelens absolutte lengde og endringer av musklenes lengde. Det er særlig høy tetthet av muskelspoler i muskler som utfører presise/ fingraderte bevegelser, det vil si små håndmuskler (hendene) og ytre øyemuskler (ved øyet), samt små muskler i nakken (i nakken) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Lengdemåler (0,5 p). Hånden/ hendene, ved øynene, i nakken (1 poeng for et sted). Fingermuskler, øyemuskler etc. godkjennes også. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort den sensoriske nerveforsyningen til en muskelspole, og forklar hva som skjer med muskelspolen og fyringsraten i dens sensoriske fibre når en strekkrefleks utløses </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kort forklaring: Muskelspolen innerveres av gruppe Ia (eller tykke myeliniserte fibre) og II-fibre (middels tykke myeliniserte fibre). Når en strekkrefleks utløses vil muskelspolen strekkes hurtig. Dette vil gi økt fyringsfrekvens av aksjonspotensialer i de sensoriske fibrene fra muskelspolen. Mer detaljert forklaring (ikke nødvendig for å få maksimal poengsum): Muskelspolen består av intrafusale muskelfibre som er parallellkoblet med vanlige tverrstripete muskelfibre. Det er to hovedtyper intrafusale muskelfibre, «nuclear bag»-fiber og «nuclear chain»-fiber. Endeforgreninger fra tykke sensoriske fibre (gruppe Ia, den tykkeste typen myeliniserte fibre) slynger seg rundt begge typer intrafusale muskelspoler, mens «nuclear chain»-fiber også får nerveforsyning fra noe tynnere fibre (gruppe II, middels tykke myeliniserte fibre). Strekk av de intrafusale fibrene (som ved utløsning av refleksen) vil gi økt fyringsfrekvens av aksjonspotensialer i sensoriske fibre). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Innervasjon av gruppe Ia (eller tykke myeliniserte fibre) (trenger ikke nevne II-fibre for å få poeng) (0,5 poeng). Muskelspolen strekkes (0,5 poeng) og fyringsfrekvens av aksjonspotensialer i de sensoriske fibrene fra muskelspolen øker (eller lignende forklaring) (0,5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett De sensoriske fibre som utgjør det afferente leddet i refleksen har høy ledningshastighet fordi de er myeliniserte. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvorfor myelinisering gir økt nerveledningshastighet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Impulsledning i aksoner foregår ved at aksjonspotensialer regenereres/ fornyes (eller «flytter seg») langs aksonet. I myeliniserte aksoner foregår denne regenereringen kun ved ranvierske innsnøringer (Nodes of Ranvier), der aksonet mangler myelin. Dermed brer ikke aksjonspotensialene seg med en jevn hastighet langs aksonet, slik som i umyeliniserte aksoner, men går direkte til neste innsnøring. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Aksjonspotensialene beveger seg mellom Nodes of Ranvier/ranvierske innsnøringer (2 poeng) eller lignende forklaring som demonstrerer at studenten har forstått prinsippet. Kun 1 poeng dersom delvis riktig forklaring (f.eks. dersom Nodes of Ranvier/ranvierske innsnøringer ikke nevnes) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken egenskap ved nervefibrene bortsett fra myelinisering er særlig viktig for ledningshastigheten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fibertykkelsen (Ev. også temperatur som også påvirker ledningshastighet.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fibertykkelse (eller temperatur) gir poeng (1 poeng) Her spørres det egentlig etter fibertykkelse, men studenter som svarer temperatur får også 1 poeng da dette også har betydning for nerveledningshastighet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett M. quadriceps femoris aktiveres ved utløsning av patellarrefleksen, mens ekstensormusklene på baksiden av låret hemmes. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som skjer når antagonistisk muskulatur hemmes ved en slik refleks, og hvorfor dette er en nyttig mekanisme? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De sensoriske nervefibrene i refleksen sender kollateraler til internevroner i ryggmargen som hemmer motornevronene til antagonistisk muskulatur. Dette kalles resiprok inhibisjon, og gjør at muskulaturen som utfører en bevegelse ikke motarbeides av antagonistisk muskulatur. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hemming av motornevroner for antagonistisk muskulatur i ryggmargen (1 poeng). Viktig for å unngå at antagonistisk muskulatur motvirker leddbevegelse eller lignende forklaring (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Senereflekser brukes innen nevrologi og nevrofysiologi for å lokalisere skader i nervesystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med patellarrefleksene ved ensidig skade på nervefibrene som innerverer m. quadriceps femoris? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Refleksen vil være svakere på den siden der nervefibrene er skadet. Dette kan man f.eks. se ved lumbalt skiveprolaps med affeksjon av L4-roten på den ene siden. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Svakere/ svekket refleks på affisert side (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Oppgave om koagulasjon/ hemostase. Du renser en fisk du har kjøpt til middag fra byfiskeren i Ravnkloa. Dessverre er du uforsiktig og skjærer deg på fingeren. Det blør så vidt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv et umiddelbart tiltak for å stoppe blødningen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kompresjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bare rett svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet (karskade) stimulerer til dannelse av plateplugg. Hvordan adhererer platen til stroma (bindevev rundt åren)? </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan platene adhererer til stroma (bindevevet rundt åren) og nevn spesielt viktige molekyler i denne prosessen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Integrin''familiens molekyler spiller rolle, der gpIaIIa binder kollagen direkte. gpI-gpV-gpIX komplekset forbinder ''von Willebrand''-faktor </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Enten integrin 1 p. Alternativt presis angivelse av gpIa-gpIIa 0.5p + gpIb-V-IX 0.5 p hver, dvs til sammen maks 1p. von Willebrandfaktor 1p, altså til sammen 2 p maksimalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet (karskade) starter koagulasjonsfaktorsystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer starter koagulasjonsfaktorsystemet og hva gjør de som første trinn i kaskadereaksjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> FVIIa og TF (tissue faktor) (norsk: vevsfaktor) danner et kompleks som spalter FX til FXa. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kompleks TF og FVIIa 1p (0.5 for hvert) FX til FXa gir 1 poeng. Spalting av FIX til FIXa er også rett og gir 0.5p. Totalt max 2p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det dannes nå en plateplugg </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar i korte trekk hvordan platepluggen dannes </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # aggregasjon (gpIIb-IIIa-komplekset) # aktivering (archidonsyre metabolitter (prostaglandiner) ADP trombin) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Aggregasjon og aktivering gir 1 p hver gpIIb-IIIa, ADP, trombin, prostaglandiner gir alle 0.5 p opp til max 1p til sammen Totalt 3p her </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Platehemmere er vanlige legemidler. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan virker acetylsalicylsyre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hemmer prostaglandinsyntese via hemming av cykloxygenase (COX) -1 og -2) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar gir 1p – Både hemming av COX og prostaglandinsyntese er greie svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Trombin er den store dirigenten i koagulasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 3 viktige funksjoner til trombin </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Fibrinogen spaltes til fibrin # Aktiverer indre vei (intrinsic pathway) via FXI og FVIII # Aktiverer plater </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 rette gir 1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Musklene på leggen ligger i muskelgrupper avgrenset av stramme bindevevshinner, de såkalte muskellosjene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor mange muskellosjer finnes i leggen? Hvordan er muskellosjene plassert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vi har 4 muskellosjer, hvorav 2 er fortil og 2 baktil på leggen. De fremre muskellosjene omfatter en medialt beliggende, egentlig fremre muskellosje, og en lateral muskellosje (peroneuslosjen/fibularis-losjen). De bakre muskellosjene omfatter en dyp (profund) og en overfladisk (superficiell) bakre muskellosje. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for korrekt angitt antall, 0.5 poeng for hver losje med korrekt beliggenhet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke muskler/muskelgrupper ligger i de ulike muskellosjene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Fremre losje: Ekstensormusklene: m. Tibialis anterior, mm. Extensores hallucis et digitorum longi * Laterale losje: Peroneergruppen (fibularisgruppen): mm. Peronei (fibulares) longus et brevis * Overflatiske bakre losje: M. Triceps surae, som omfatter m.Gastrocnemius og m. Soleus * Dype bakre losje: Fleksormusklene: m. Tibialis posterior, mm. Flexores hallucis et digitorum longi </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hver muskelgruppe korrekt angitt (for overflatisk, bakre losje kreves navn på musklene) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved kraftig trening kan musklene svulme opp slik at trykket øker inne i muskellosjen. Musklene blir smertefulle, og det gjør vondt å bruke dem, noe som kalles losjesyndrom. Dersom trykkøkningen er stor, kan det medføre at blodkar og nerver inne i muskellosjene blir klemt sammen, og funksjonen nedsettes. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dersom en pasient med losjesyndrom har "dropfot", det vil si nedsatt evne til dorsalfleksjon i ankelen, hvilken nerve er sannsynligvis affisert? Beskriv denne nervens forløp (med de forskjellige grener) og angi hvilke muskelgrupper den forsyner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> N. peroneus (fibularis) N. peroneus communis går vertikalt gjennom fossa poplitea, svinger lateralt mot collum fibulae som den passerer subcutant, og ligger dermed utsatt til for skade. Nerven går så inn i peroneer muskulaturen (fibularis) som den forsyner via en overflatisk grein, mens den dype fortsetter inn i fremre losje og forsyner ekstensor muskulaturen her. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> N. peroneus gir 0.5 poeng, ytterligere 0.5 dersom kandidaten angir at det er den profunde greina. 1 poeng for forløpet av n. Peroneus communis, med forløp av deling i to greiner. 0.5 poeng for funksjon og hvilken muskelgruppen til hver av greinene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Ved kraftig trening kan musklene svulme opp slik at trykket øker inne i muskellosjen. Musklene blir smertefulle, og det gjør vondt å bruke dem, noe som kalles losjesyndrom. Dersom trykkøkningen er stor, kan det medføre at blodkar og nerver inne i muskellosjene blir klemt sammen, og funksjonen nedsettes. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved mistanke om nedsatt blodtilførsel til foten, forsøker man å kjenne etter pulsasjon i to arterier som fører blod forbi ankelen. Disse to arterier er fortsettelsen av to arterier på leggen. Hvilke to arterier på leggen er dette? Hvordan forløper de forbi kneet og videre på leggen? Hvordan er deres relasjon til ankelleddet? Hvilken av disse arteriene kan affiseres ved den typen losjesyndrom som er beskrevet i spørsmål 3? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> A. tibiales anterior et posterior kommer begge fra a. Poplitea i knehasen. Denne deler seg og a. Tibialis anterior passerer gjennom membrana interossea like distalt for art. Tibiofibularis proximalis, og blir i dypet liggende i fremre losje. A. Tibialis posterior blir liggende dypt i bakre losje, nær skillet mellom den dype og overflatiske delen. A. tibialis posterior går i den dype, bakre losjen og går ned i foten bak (postero-inferiort for) malleolus medialis. A. tibialis anterior går i fremre losje og kan bli affisert ved fremre losjesyndrom. Arterien passerer foran ankelleddet, der den går over i a. Doralis pedis, som ligger på fotryggen mellom senene til mm. Extensores hallucis longus et digitorum longus. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 poeng for a. Poplitea * 0.5 poeng (maks 1. poeng) for hver av de to aa. Tibiales med navn og korrekt posisjon i leggen * 0.5 poeng for hver arterie og korrekt beskrivelse av relasjon til ankel * 0.5 poeng for affeksjon av a. Tibialis anterior ved fremre losjesyndrom </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kolesterol er en viktig substans både for normal funksjon av kroppen og i relasjon til enkelte sykdomstyper. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er de viktigste funksjonene for kolesterol i menneskekroppen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kolesterol bidrar til å danne biologiske membraner og er utgangspunkt for dannelse av en rekke hormoner. Kolesterol inngår også i lipoproteiner, som er nødvendige for transport av bl.a. triglyserid, apolipoproteiner og kolesterol i blodet. Kolesterol omdannes til gallesyrer/gallesalter som skilles ut med gallen og bidrar til opptak av triglyserid og fettløselige forbindelser fra tarmen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.75p: biologiske membraner/cellemebraner * 0.75p: hormoner/steroider * 0.75p: lipoproteiner * 0.75p: opptak av fett fra tarm </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv det enterohepatiske kretsløpet for kolesterol. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kolesterol i leveren skilles ut som gallesyrer / gallesalter i gallen til tynntarmen. Ca 95% av gallesyrene tas opp i lenger distalt i tarmen og transporteres tilbake til leveren som kylomikroner, først via lymfesystemet og deretter via blodet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.25p: skilles ut med gallen til tarmen * 0.25p: skilles ut i gallen som gallesyrer/gallesalter * 0.25p: tas opp i tarmen * 0.25p: transporteres tilbake til lever </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv innhold, struktur og funksjon for LDL (low density lipoprotein) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> LDL inneholder ca 50% kolesterol, ca 20% protein og noe fosfolipid og triglyserid. LDL-partikkelen er en sfærisk struktur hvor fosfolipid og fritt kolesterol kler overflaten med hydrofile endre vendt mot vannfasen. Det meste av kolesterolet i LDL finnes som kolesterolestere, som er svært lite vannløselige. Kolesterolestere befinner seg sentralt i partikkelen, sammen med triglyserid som også er svært lipofilt. I tillegg inneholder LDL ett molekyl av apolipoproteinet apoB100, som er viktig for partikkelens struktur og funksjon. Utgangspunktet for dannelse av LDL er VLDL dannet i leveren. Etter avgivelse av triglyserid fra VLDL til perifere vev dannes LDL, som inneholder relativt lite triglyserid, men mye kolesterol. LDL transporterer kolesterol fra hovedsakelig lever til perifere vev. Ved binding av apoB til LDL-receptoren på celleoverflaten blir LDL endocytert inn i cellen og innholdet frigjort og dermed tilgjengelig for cellen. Cellene kan bruke kolesterolet for produksjon av bl.a. steroidhormoner og membraner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1p: en partikkel sammensatt av bl.a. kolesterol og protein * 1p: inneholder mye kolesterol * 0.5p: inneholder lite triglyserid * 0.5p: inneholder apoB100 (ikke tilstrekkelig med apolipoprotein) * 1p: transporterer kolesterol fra lever til perifere vev </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Enzymet HMG-CoA-reduktase bidrar til dannelse av kolesterol. Beskriv hvorfor dette enzymet er spesielt viktig. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enzymet er hastighetsregulerende for kolesterolsyntesen. Det aktiveres av insulin og inhiberes av glukagon og kolesterol. Dette er viktig for normal regulering av kolesterolproduksjonen, som er mest aktiv når kroppen har god tilgang til karbohydrater og mindre aktiv ved lav tilgang til karbohydrater, samt ved stress/aktivering. Enzymet er også angrepspunkt for medikamentgruppen statiner, som er mye brukt for å redusere kolesterolkonsentrasjonen i blodet hos pasienter med hyperkolesterolemi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.25p: hastighetsbestemmende/regulerende for syntese av kolesterol * 0.25p: aktiveres av insulin * 0.25p: inhiberes av glukagon/kolesterol * 0.25p: angrepspunkt for statiner/kolesterolsenkende medisiner </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Øvre referansegrense for totalkolesterol i serum for en mann på 60 år er 7.8 mmol/L. Forklar hvorfor en mann på 60 år med kolesterol på 7.5 mmol/L ofte får kolesterolsenkende medisin, selv om konsentrasjonen er i referanseområdet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Referanseområdet angir hvilke konsentrasjoner man ofte finner hos friske personer. 97.5% av friske menn eldre enn 50 år vil ha en konsentrasjon av totalkolesterol i serum lavere enn 7.8 mmol/L. Beslutningen om å behandle med kolesterolsenkende medikamenter er basert på risiko for kardiovaskulær sykdom. Denne risikoen øker med økende konsentrasjon av kolesterol. Ved en totalkolesterol på 7 mmol/L eller høyere er risikoen for å utvikle kardiovaskulær sykdom så høy at man ofte anbefaler behandling for å redusere konsentrasjonen. Det er således ikke slik at referansegrenser alltid sammenfaller med hvilke verdier som er forenelig med sykdom eller så høy risiko for sykdom at man iverksetter tiltak. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5p: referansegrenser beskriver vanlige konsentrasjoner hos friske personer/en definert populasjon 0.5p: risikoen for kardiovaskulær sykdom er avhengig av kolesterolkonsentrasjonen </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En mann på 30 år kommer i ambulanse til legevakten etter å ha falt av sykkelen i høy fart en ½ time tidligere. Han brukte ikke sykkelhjelm og har åpenbart slått seg i hodet. Han sier at han ikke husker noe fra selve ulykken. Først og fremst klager han imidlertid over sterke smerter i venstre ankel og venstre hofte, og han klarer ikke å stå på foten. På mistanke om bruddskade blir det gjort røntgen-undersøkelse. <<imgLink "IAB-2019-4-A.PNG" 600>> <<imgLink "IAB-2019-4-B.PNG" 600>> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Her er bildene av venstre ankel. Er det et brudd i ankelen? Kan du i så fall beskrive i hvilket ben og hvor i benet bruddet er? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienten har et brudd i distale fibula. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ser at pasienten har et brudd 0.5p, beskriver at bruddet sitter i fibula 0.5p. beskriver at bruddet er distalt i fibula 0.5p. Totalt maks 1.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På grunn av smertene i venstre hofte, blir det også tatt røntgenbilde av hoften. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Her er røntgen-bilde av venstre hofte, frontbilde. <<imgLink "IAB-2019-4-C.PNG" 400>> Sett navn på de anatomiske strukturene som er merket med bokstaver fra A til D. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * A: Trochanter major * B: Trochanter minor * C: Collum femoris * D: Femurdiafysen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert riktig navn gir 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hovedprinsippene for avbildning med standard røntgen-undersøkelse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Røntgenstråler er ''elektromagnetisk stråling'' som dannes i et ''røntgenrør''. I røntgenrøret sendes elektroner med høy fart mot en anode av metall og det dannes fotoner med høy energi som sendes ut gjennom en åpning i røret og gjennom pasienten. ''Vev med høy tetthet'' (som f. eks. bein) ''absorberer/bremser/reflekterer mye stråler'', og ''vev med lav tetthet'' (som f. eks. luft) ''absorberer lite stråler'', altså mye stråler går gjennom luft. Stråler som går gjennom pasienten treffer en detektor (eller en film) som danner et 2-dimensjonalt bilde. Jo flere stråler som treffer detektoren (eller filmen) jo mørkere blir bildet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Elektromagnetisk stråling/røntgenstråling 0.5p. Dannes i et røntgenrør 0.5p. Tettheten på vevet avgjør hvor mye stråling som går gjennom (eller absorberes av) vevet 0.5p. Strålene treffer en detektor/film som danner et bilde 0.5p (maks 2p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På mistanke om hodeskade blir det gjort CT av hodet (uten intravenøs kontrast) for å avdekke om han også kan ha en hjerneblødning. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er de viktigste forskjellene mellom standard røntgenundersøkelse og CT-undersøkelse, teknisk og praktiskdiagnostisk? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> CT (Computed tomography) bruker også røntgenstråler, men har et mye mer ''sensitivt deteksjonssystem'' enn ved vanlig (konvensjonell) røntgen. CT kan detektere svært små forskjeller i absorpsjon av røntgenstråler i ulike vev, og kan derfor fremstille ulike tettheter i vevene minst 10 ganger bedre enn vanlig røntgen. Både vanlig røntgen og CT fremstiller benvev godt, men CT fremstiller også ''de ulike bløtvevene'' i kroppen, samt væske og luft veldig godt, i motsetning til vanlig røntgen. Når CT-bildene tas, ligger pasienten inni en ring (gantry) med ett (eller to) ''røntgenrør og multiple detektorer som roterer rundt pasienten'', samtidig som pasienten flyttes (liggende) gjennom ringen. Det tas da mange tynne snitt med bilder av kroppen, og disse bildene prosesseres av en datamaskin som bygger opp et ''volum'' av det avbildete området. Bildene kan rekonstrueres i alle plan og man kan lage ''3D-bilder''. CT tar mye bedre bilder en vanlig røntgen, men CT påfører også mye ''mer'' ioniserende (og potensielt skadelig) ''stråling'' enn vanlig røntgen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Mer sensitivt deteksjonssystem som fremstiller ulike vev (bløtvev, benvev, væske, luft) godt 0.5p Røntgenrør og detektorer roterer rundt pasienten 0.5p Lager et volum eller et 3D bildeopptak 0.5p Mye mer stråling enn vanlig røntgen 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ettersom CT-bildene viser en liten hjerneblødning og dessuten forandringer i hjernevevet av usikker betydning, blir det også gjort MR-undersøkelse av hodet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hovedprinsippene for avbildning med MR, og nevn fordeler og ulemper med MR sammenlignet med CT. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MR-maskinen danner et sterkt magnetfelt som gjør at en liten andel av hydrogenatomene (protonene) i vann og fett (lipider) innretter seg parallelt med magnetfeltet. MR-maskinen sender så ut en eller flere radiofrekvenspulser som får protonene til å endre retning. Etter at pulsen slås av så innretter protonene seg tilbake i opprinnelig posisjon, og dette danner signaler som kan detekteres og lokaliseres ved hjelp av kobberspiraler lokalisert rundt pasienten. Maskinen kan da bygge opp bilder basert på protonmengde (både distribusjon og tetthet) og tiden det tar for protonene å innrette seg med magnetfeltet (går tilbake til utgangsposisjon). I motsetning til CT, så kan MR danne mange ulike bildesekvenser for å fremstille ulike typer vev og patologi. Fordeler med MR er at bilder kan lages direkte i alle tenkelige plan, men ved CT så lages bildene i ett plan (mange snitt med bilder i ett plan) og må rekonstrueres i andre plan hvis dette er ønskelig. MR fremstiller bløtvev bedre enn CT. MR produserer heller ingen skadelig ioniserende stråling i motsetning til CT. Ulemper med MR er at det tar lang tid og derfor lett for at bevegelse kan forstyrre bildene, slik som ved urolig pasient, pusting, pulseringer og tarmbevegelse. MR er mer ressurskrevende sammenlignet med CT. MR fremstiller ikke kalk. Magnetfeltet kan føre til uheldige bivirkninger ved å påvirke pacemakere, metalklips i hjernen, fremmedlegemer av metall i øyet. Metall i kroppen kan også forstyrre og ødelegge bildene </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Prinsipp: protoner innretter seg parallelt med magnetfeltet, radiofrekvenspuls som endrer retning på protoner og signal som fanges opp av coiler/spiraler 1 poeng. Ulike bildesekvenser 0,5 poeng Fordeler: bløtvev bra, ingen skadelig stråling 0.5p Ulemper: tar lang tid, følsomt for bevegelse, ressurskrevende, uheldige bivirkninger i forhold til metall i kroppen 0.5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Endotelfunksjonen i en middels stor arterie kan vurderes eksperimentelt ved å måle kraftutviklingen (tensjonen) når en bit av karveggen utsettes for økende doser med acetylkolin. Målingen gjøres under påvirkning av fenylefrin, som selektivt stimulerer alfa-1-adrenerge reseptorer </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av fenylefrin på de glatte muskelcellene i karveggen, samt signalveien fra reseptor til den cellulære effekten. Hvordan reagerer karveggsmuskulaturen, og hvilke molekyler er involvert i den biokjemiske signalveien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fenylefrin kontraherer de glatte muskelcellene i karveggen (0.5 poeng). Når fenylefrin bindes til alfa-1 reseptoren, aktiveres fosfolipase C (PLC) via det GTP-bindende proteinet Gaq, og derved katalyserer PLC spalting av fosfatidyl-inositol til inositol-tris fosfat (IP3) og diacyl-glycerol (0.5 poeng). IP3 aktiverer kalsiumfrigjøringskanalen i sarkoplasmatisk retikulum (SR) og øker derved intracellulær kalsiumkonsentrasjon. Kalsium binder seg til kalmodulin (CaM) og danner et kompleks som aktiverer enzymet myosin-lettkjede-kinase (MLCK) (0.5 poeng). MLCK fosforylerer lette myosinkjeder (MLC), og øker derved kryssbrokoblingen og kraftutviklingen i de glatte muskelfibrene (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fenylefrin kontraherer muskelcellene (0,5 poeng). Aktiverer PLC via G-protein og øker IP3 (0.5 poeng). IP3 aktiverer kalsiumfrigjøring fra SR, kalsium binder til CaM og aktiverer MLCK (0.5 poeng). MLCK fosforylerer MLC og øker kontraktiliteten (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Endotelfunksjonen i en middels stor arterie kan vurderes eksperimentelt ved å måle kraftutviklingen (tensjonen) når en bit av karveggen utsettes for økende doser med acetylkolin. Målingen gjøres under påvirkning av fenylefrin, som selektivt stimulerer alfa-1-adrenerge reseptorer <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med arteriolediameter, perifer karmotstand og blodtrykk i systemkretsløpet ved intravenøs infusjon av fenylefrin? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ateriolediameter reduseres (0.5 poeng), perifer karmotstand øker og blodtrykket øker (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Arteriolediameter reduseres (0.5 poeng), karmotstand øker og blodtrykket øker (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av å stimulere muskarinreseptorene på glatte muskelceller i karveggen med acetylkolin, samt signalveien fra reseptor til den cellulære effekten. Hva skjer med tensjonen, og hvilke molekyler er involvert i signalveien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Effekten av å stimulere muskarinreseptorene (subtype M2) på glatte muskelceller er økt tensjon (0.5 poeng). Når M2 aktiveres, hemmes enzymet adenylyl cyklase (AC) via det GTP-bindende proteinet Gai. Siden AC katalyserer dannelsen av syklisk adenosin monofosfat (cAMP), reduseres den intracellulære konsentrasjonen av cAMP. Dermed reduseres aktiviteten av enzymet protein kinase A (PKA), siden det ellers ville vært stimulert av cAMP (0.5 poeng). PKA fosforylerer vanligvis myosin light chain kinase (MLCK) og reduserer MLCK-aktiviteten, men når cAMP går ned, skjer det omvendte. Økt MLCK-aktivitet fører til mer fosforylering av lette myosin kjeder (MLC), og derved øker kontraksjonen i karveggen (0.5 poeng). Denne mekanismen er gjennomgått ved undervisningen om kartonus, men er kanskje ikke nevnt så tydelig i lærebøkene. Det er likevel mulig å slutte seg til svaret ut fra kunnskap om mekanismen for relaksasjon av glatt muskulatur i karveggen via PKA. Denne deloppgaven regnes derfor som resonnerende </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> M2-stimulering øker tensjonen (0.5 poeng). Hemmer AC via Gai og reduserer cAMP og PKA aktiviteten (0.5 poeng). Derved øker MLCKaktiviteten (på grunn av redusert hemming fra PKA). Dette gir mer fosforylering av MLC og sterkere kontraksjon av glatt muskulatur (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av acetylkolin på et normalt karveggspreparat med intakt endotel, samt signalveien fra reseptor til effekt på tensjonen. Hva er effekten på tensjonen, hvilke celletyper er involvert, og hvilke molekyler er involvert i de biokjemiske signalveien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Effekten av å stimulere et normalt karveggspreparat med acetylkolin er redusert tensjon. Både endotelceller og glatte muskelceller er involvert i effekten (0.5 poeng). Stimulering av muskarinreseptorene i endotelceller (subtype M3) aktiverer fosfolipase C (PLC) via det GTPbindende proteinet Gaq, og derved katalyserer PLC spalting av fosfatidyl-inositol til inositol-tris fosfat (IP3) og diacyl-glycerol. IP3 aktiverer kalsiumfrigjøringskanalen i sarkoplasmatisk retikulum (SR) og øker derved intracellulær kalsiumkonsentrasjon (0.5 poeng), som i sin tur øker aktiviteten av nitrogenoksid (NO) syntase (NOS) og fører til økt produksjon av NO ved spalting av aminosyren L-arginin (0.5 poeng). NO diffunderer fra endotelcellen inn i glatte muskelceller og stimulerer NO-reseptorer på enzymet guanylyl syklase (GC). Derved økes syklisk guanosin monofosfat (cGMP), som stimulerer protein kinase G (PKG) (0.5 poeng). PKG forsforylerer MLCK, derved hemmes aktiviteten, det blir mindre fosforylering av MLC, og kryssbrokoblingen og kraftutvilingen i de glatte muskelcellene går ned (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Acetylkolin reduserer tensjonen i karpreparatet. Endotelceller og glatte muskelceller er involvert (0.5 poeng). Stimulerer M3 reseptorer, aktiverer PLC via G-protein, øker IP3, stimulerer kalsiumfrigjøring fra SR og øker kalsium intracellulært (0.5 poeng). Kalsium stimulerer NOS og øker NO-produksjon (0.5 poeng). NO diffunderer inn i glatte muskelceller, stimulerer GC, øker cGMP og stimulerer PKG (0.5 poeng). PKG fosforylerer og hemmer MLCK, og reduserer dermed fosforyleringen av MLC og tensjonen i preparatet (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av acetylkolin på tensjonen i et karpreparat hvor enzymet nitrogenoksid-syntase er blokkert. Hva er effekten på tensjonen, hvilke(n) celletype(r) er involvert, og hvilke molekyler er involvert i de(n) biokjemiske signalveien(e)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Acetylkolin øker tensjonen i karpreparat hvor NOS er blokkert og skyldes stimulering av M2-reseptorene på glatte muskelceller (0.5 poeng). Stimulering av M2 hemmer AC via Gai og reduserer cAMP og PKA aktiviteten. Derved øker MLCK-aktiviteten (på grunn av redusert hemming fra PKA). Dette gir mer fosforylering av MLC og sterkere kontraksjon av glatt muskulatur (0.5 poeng). Denne mekanismen er gjennomgått ved undervisningen om kartonus, men er kanskje ikke nevnt så tydelig i lærebøkene. Det er likevel mulig å slutte seg til svaret ut fra kunnskap om mekanismen for relaksasjon av glatt muskulatur i karveggen via PKA. Denne deloppgaven regnes derfor som resonnerende. Dette er den samme biokjemiske signalveien som beskrevet i [[oppgave 3|IAB - 2019s - Oppgave 1 - Del 3]], derfor gis færre poeng for samme svar her. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Acetylkolin øker tensjonen ved stimulering av muskarinerge reseptorer på glatte muskelceller (0.5 poeng). Effekten er som beskrevet i [[oppgave 3|IAB - 2019s - Oppgave 1 - Del 3]] (0.5 poeng). Hvis signalveien er korrekt beskrevet i [[oppgave 3|IAB - 2019s - Oppgave 1 - Del 3]], er det nok å vise til at det er den samme i oppgave 5. Det vil si: Stimulering av M2 hemmer AC via Gai og reduserer cAMP og PKA aktiviteten. Derved øker MLCK-aktiviteten (på grunn av redusert hemming fra PKA). Dette gir mer fosforylering av MLC og sterkere kontraksjon av glatt muskulatur (0.5 poeng). Dersom signalveien er korrekt som beskrevet i oppgave 5, men ikke i [[oppgave 3|IAB - 2019s - Oppgave 1 - Del 3]], kan det gis 0.5 poeng ekstra. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Endotelfunksjonen i arteria brachialis kan vurderes klinisk ved å måle endringen i kardiameter etter en total avklemming av karet i fem minutter ved hjelp av en blodtrykksmansjett. Kardiameteren måles proksimalt for mansjetten umiddelbart før avklemming og ved maksimal endring 1-2 minutter etter at avklemmingen er over. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort endringen i kardiameter i en arterie med normal endotelfunksjon i måleoppsettet som er beskrevet over, og forklar mekanismen. Hva er det lokale stimulus for endring i kardiameter, hvordan påvirkes tensjonen i karveggen, hvilke(n) celletype(r) er involvert, og hvilke molekyler er involvert i de(n) biokjemiske signalveien(e)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved normal endotelfunksjon øker kardiameteren proksimalt for avklemmingsstedet 1-2 minutter etter at avklemmingen er over (0.5 poeng). På grunn av reaktiv hyperemi i det avklemte området øker blodføringen i karet. Dermed øker blodtrømshastigheten og kraftoverføringen mellom blodet og mekaniske reseptorer i karveggen. Dette fører til økning av intracellulært kalsium, stimulering av NOS og økt produksjon og overføring av NO til glatte muskelceller. Signalveien i glatte muskelceller er som beskrevet i [[oppgave 4|IAB - 2019s - Oppgave 1 - Del 4]]: NO stimulerer GC, øker cGMP og stimulerer PKG. PKG fosforylerer og hemmer MLCK, og reduserer dermed fosforyleringen av MLC. Dermed relakseres de glatte muskelcellene og karet utvides (0.5 poeng). Måleoppsettet for måling av endotelfunksjon er gjennomgått i undervisningen, men er kanskje ikke så klart beskrevet i alle lærebøker. Det er likevel mulig å slutte seg til svaret når man kjenner til at kar med normal endotelfunksjon utvider seg ved økt blodføring, samt kombinerer dette med kunnskap om reaktiv hyperemi etter avklemming av sirkulasjon. Oppgaven regnes derfor som resonnerende. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Karet utvides 1-2 minutter etter at avklemmingen av karet er avsluttet (0.5 poeng). Dette skyldes økt blodføring, økt blodstrømshastighet og stimulering av mekanoreseptorer i karveggen. Dette øker intracellulær kalsium og stimulerer NO produksjon via NOS. Det biokjemiske signalveien er som beskrevet i [[oppgave 4|IAB - 2019s - Oppgave 1 - Del 4]]: NO stimulerer GC, øker cGMP og stimulerer PKG. PKG fosforylerer og hemmer MLCK, og reduserer dermed fosforyleringen av MLC. Dermed relakseres de glatte muskelcellene og karet utvides (0.5 poeng). Hvis signalveien er korrekt beskrevet i [[oppgave 4|IAB - 2019s - Oppgave 1 - Del 4]], er det nok å vise til at det er den samme i oppgave 6. Dersom signalveien er korrekt beskrevet i oppgave 6, men ikke i [[oppgave 4|IAB - 2019s - Oppgave 1 - Del 4]], kan det gis inntil 1.0 poeng ekstra i oppgave 6. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Sildenafil (Viagra) er en potent og selektiv hemmer av en type fosfodiesterase som særlig finnes i penisvev og som har cGMP (syklisk guanylyl monofosfat) som substrat (cGMP-spesifikk fosfodiesterase type 5, PDE5). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort effekten av sildenafil på glatt muskulatur i karveggen og angi hvilke molekyler som er involvert i den biokjemiske signalveien. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sildenafil relakserer glatt muskulatur i karveggen i svamplegemene (corpus cavernosum) i penis (0.5 poeng). Hemming av PDE5 reduserer nedbrytningen av cGMP, og dermed øker konsentrasjonen av cGMP i de glatte muskelcellene. Dette øker aktiviteten av PKG, som fosforylerer og hemmer MLCK, og dermed reduseres fosforyleringen av MLC. Dette relakserer de glatte muskelcellene og karet utvides (0.5 poeng). Den biokjemiske signalveien for relaksasjon er den samme som i oppgave [[4|IAB - 2019s - Oppgave 1 - Del 4]] og [[6|IAB - 2019s - Oppgave 1 - Del 6]]. Effekt av sildenafil er ikke gjennomgått i undervisningen, men ut fra allmenn kjennskap til effekten av Viagra, opplysningene i oppgaveteksten og kunnskap til mekanismene for regulering av kartonus, er det mulig å slutte seg til svaret. Oppgaven regnes derfor som resonnerende. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sildenafil relakserer glatt muskulatur i karveggen (0.5 poeng). Hemming av PDE5 reduserer nedbrytningen av cGMP, øker cGMP og stimulerer PKG, som fosforylerer og hemmer MLCK. Dermed reduseres fosforyleringen av MLC og de glatte muskelcellene relakseres (0.5 poeng). Den biokjemiske signalveien er den samme som beskrevet i oppgave [[4|IAB - 2019s - Oppgave 1 - Del 4]] og [[6|IAB - 2019s - Oppgave 1 - Del 6]], og det er nok å henvise til en av disse, dersom signalveien er korrekt beskrevet der. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 25 år gammel person oppholder seg over flere uker i Mexico City som ligger 2250 meter over havet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan endres lungenes diffusjonskapasitet i denne høyden? Vi tenker oss da at dette er i den tidlige perioden av oppholdet før hemoglobinverdien har rukket å endre seg. Og hva er årsaken til det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Diffusjonskapasiteten vil reduseres. Årsaken er at man i denne høyden vil ha lavere partialtrykk av oksygen i den atmosfæriske luften og dermed i alveolen. Gradienten mellom oksygenets partialtrykk i alveolen og partialtrykket av oksygen i blodet reduseres, noe som gir lavere diffusjonskapasitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å vite at diffusjonskapasiteten reduseres, 2 poeng for å forklare årsak/mekanisme. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< En 25 år gammel person oppholder seg over flere uker i Mexico City som ligger 2250 meter over havet. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil trykket i lungekretsløpet forandres i slik høyde? Og hva er mekanismen bak dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Trykket i lungekretsløpet vi øke. Årsaken er at lungearterietrykket reguleres av partialtrykket av oksygen i alveolen (P,,A,,O,,2,,). Lav P,,A,,O,,2,, gir vasokonstriksjon og økt trykk i lungekretsløpet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å vite at lungearterietrykket øker, 2 poeng for å redegjøre for mekanismen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ventilasjons-perfusjonsforholdet beskriver sammenhengen mellom ventilasjonen og blodgjennomstrømningen i lungene og bør være best mulig samstemt ("matchet") </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som vil skje med ventilasjonsperfusjonsforholdet og hvorfor. Får vi økt dødromsventilasjon eller økt shunting? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Siden vi får en vasokonstriksjon i lungekretsløpet, vil perfusjonen gå ned mens ventilasjonen heller vil øke (hyperventilasjon i høyden). Dette gjør at forholdet mellom ventilasjon og perfusjon øker. Dette kalles økt dødromsventilasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å vite hvordan ventilasjons-perfusjonsforholdet endres, 1 poeng for å forklare hvordan/hvorfor og 1 poeng for å kjenne til at dette er det samme som økt dødromsventilasjon. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vi tenker oss at etter lang tid i denne høyden (f eks 7 uker) har hemoglobinverdien steget fra på forhånd 14 g/liter fra før til 16 g/liter. Pga den store høyden vil imidlertid oksygenmetningen (saturasjonen – SaO2) ha falt fra 98% i lavlandet før avreise til Mexico City til 90% i høyden. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil denne situasjonen gi bedret eller forverret oksygentransport i blodet? Svaret må begrunnes. Du har følgende opplysninger til å hjelpe deg med å svare på dette spørsmålet: Oksygen transporteres i blodet hovedsaklig bundet til hemoglobin. Hemoglobinets bindingskapasitet er slik at 1 g Hb binder max 1.34 ml O,,2,, per 100 ml blod ved SaO2 (oksygenmetning) 100%. Der er dessuten i normalt arterieblod fysiologisk løst oksygen 0.3 ml O,,2,, per 100 ml blod som vi imidlertid lar være konstant ifm denne oppgaven og som vi dermed kan se bort fra. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Lavland: (1.34 x 14) x 0.98 = 18.4 * Høyde: (1.34 x 16) x 0.90 = 19.3 Mao best oksygentransport i høyden etter at man har fått økning i Hb </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar dersom det er begrunnet (0 poeng for rett svar uten begrunnelse). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 66 år gammel mann innlegges på sykehus etter lengre tid med lette smerter sentralt i magen, lys fettrik avføring og ufrivillig vekttap. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) <<imgLink "IAB-2019s-3-A.PNG" 600>> Bildet til venstre viser et normalt CT-bilde av abdomen sett i retning opp mot hodet (transversalt snitt). Den hvite streken på bildet til høyre illustrerer transveralsnittets nivå. Hvilket organ peker pilene på? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pankreas/bukspyttkjertelen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha riktig organ for å få uttelling </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Andre aktuelle undersøkelser kan være gastroskopi og koloskopi. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hovedprinsippene for bruk av fiberoptiske endoskopiundersøkelser. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Metode for å undersøke innsiden av kroppshulrom eller lignende innenfra med en bøyelig og fleksibel fiberoptisk slange med kamera og lys for visualisering av slimhinner, og egen arbeidskanal med mulighet for å ta biopsier og gjøre ulike prosedyrer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * Undersøkelse av fysiologiske hulrom og kanaler – 0.25 poeng * Fleksibel og bøyelig slange – 0.25 poeng * Kamera/lys for visualisering – 0.25 poeng * Mulighet til å ta biopsier – 0.25 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten hadde en svulst i pankreas som blokkerte både hovedgangen i pankreas og ductus choledochus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor kan denne svulsten gi pasienten fettrik avføring? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fettrik avføring tyder på manglende fordøyelse og absorpsjon av fettstoff slik at det heller går ut i avføringen. Siden svulsten blokkerer både hovedkanalen for pankreas (det vil si den eksokrin utskillelsen) og ductuc choledochus, vil tilførsel av både fordøyelsesenzym, bikarbonat og galle til tynntarmen reduseres/falle bort. Opptaket av spesielt fett vil da påvirkes fordi både fordøyelsesenzym (lipase/co-lipase) og gallesalter mangler. I tillegg vil ikke fordøyelsesenzym virke like godt om det utskilles for lite bikarbonat til å heve pH. Svulst i pankreas vil også kunne gi generelt svikt i den eksokrine funksjonen til organet, og med det også lavere produksjon av fordøyelsesenzym. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Redusert absorpsjon av fettstoff gir fettrik avføring. På grunn av * Manglende utskillelse av pankreasenzym + bikarbonat – 0.5 poeng * Manglende utskillelse av gallesalter i galle – 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv det viktigste innholdet i pankreassaft, og mekanismene for hvordan de ulike enkeltkomponentene bidrar i fordøyelsesprosessen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pankreassaft skilles ut fra acinarceller og ductale celler og inneholder i hovedsak flere pankreasenzym, vann, natrium og bikarbonat Fordøyelse av protein: Trypsin, chymotrypsin, karboksypeptidaser, elastase. Spalter proteiner og polypeptider til peptider og aminosyrer i tynntarmslumen. Fordøyelse av karbohydrat: α-Amylase. Spalter α, 1-4 bindinger i stivelse og glykogen til maltose, maltooligosakkarid og α-limit dekstrin. Fordøyelse av fettstoff: lipase, co-lipase, kolesteroester hydrolase, fosfolipase. Spalter (henholdsvis) triglyserider på overflatene av miceller der co-lipasen binder seg og er nødvendig for funksjon av lipasen, fosfolipider og kolesterolestere og andre mer komplekse fettstoff. Bikarbonat (vann): nøytraliserer det sure innholdet som tømmes i tynntarmen fra magesekken slik at pH stiger til rundt 7.4 som pankreasenzymene trenger for å fungere. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * Må ha med at pankreassaft inneholder fordøyelsesenzymer og bikarbonat (og vann) – 0.5 poeng * Må ha med at pankreas bidrar med fordøyelsesenzym for alle de tre viktigste næringsstoffene protein, karbohydrat og fett – 0.5 poeng * Må beskrive i korte trekk hvordan de viktigste enzymene trypsin/chymptypsin (proteaser), α-Amylase og lipase/co-lipase virker – 0.5 poeng * Bikarbonat (spesielt fra duktale celler) viktig for å heve pH for at pankreaeenzymene kan virke – 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten hadde gulsott (ikterus), og det ble målt forhøyede nivåer av spesielt konjugert bilirubin </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige årsaken til gulsott hos denne pasienten? Beskriv den normale utskillelsen av bilrubin, fra utgangsproduktet til det er helt ute av kroppen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Svulsten blokkerer ductus choledochus og dermed avløp for galle ut fra galleblære/lever, slik at det hoper seg opp med konjugert bilirubin produsert i hepatocyttene (posthepatisk årsak). Heme (hovedsakelig fra røde blodceller) brytes ned i det retikuloendoteliale system (RES) til (globiner -> aminosyrer og jern) pigmentstoffene biliverdin og bilirubin. Ukonjugert bilirubin fraktes i plasma bundet til albumin (fordi det er fettløselig, ingen filtrering i nyrene), tas opp av hepatocyttene via ulike mekansimer, hvor det konjugeres til glukuronat (fase II reaksjon). Konjugert bilirubin skilles ut i gallen og videre ut i tarmen hvor bakterienzymer i terminale ileum og kolon omdanner 80-90% videre via sterkobilinogen til sterkobilin som skilles ut i avføringen. De resterende 10-20% reabsorberes i terminale ileum og kolon tilbake til portalblodet og enten tas opp av lever og resirkuleres til galle eller går til nyre, oksideres til urobilinogen og skilles ut i urin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * Gulsott pga blokkering av galle (konjugert bilirubin) fra lever – 0.5 poeng * Fra heme (via biliverdin) til ukjonjugert bilirubin i RES, fraktes videre i blodet bundet til albumin – 0.5 poeng * Tas opp av lever, konjugeres og skilles ut i galle – 0.5 poeng * Det meste av konjugert bilirubin omdannes av bakterier i tarm til sterkobilin som går ut i avføringen – 0.5 poeng * Noe går inn i enterohepatisk resirkulasjon, hvorav en liten del går til nyre og skilles ut i urin som urobilin – 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvor og hvordan hormonene sekretin og cholesystokinin (CCK) blir skilt ut og hvilke virkninger de har. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Begge hormoner produseres i enteroendokrine celler i tarmslimhinnen i duodenum og jejunum og skilles ut i blodet (portasirkulasjonen); CCK fra I-celler og sekretin fra S-celler. CCK skilles ut når cellene registrerer økt mengde fett og proteiner i tarmlumen, og hormonet stimulerer til kontraksjon av galleblæren og sekresjon av pankreasenzym, slik at galle og pancreasenzym tømmes ut i tarmlumen. Sekretin skilles ut når cellene registrerer lav pH i tarmlumen, og hormonet stimulerer sekresjon av bikarbonat og vann fra pankreasgangepitelet. Begge hormonene har dermed effekter som tilrettelegger og øker spalting (fordøyelse) av både karbohydrater, fettstoff og protein ved at det skilles ut gallesalter, enzymer for nedbrytning av alle tre næringsstoff og bikarbonat som nøytraliserer magesyren og gir riktig pH for at alle disse enzymene kan virke. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full score må studenten ha skjønt prinsippene og ha med de viktigste momentene; * Enteroendokrine celler (I og S-celler) i tarmslimhinnen i øvre del av tynntarm – 0.5 poeng * Registrerer endringer i tarmlumen og skiller ut hormoner til blodet - 0.5 poeng * CCK stimuleres av fett og protein - 0.5 poeng * Sekretin stimuleres av lav pH - 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blodprøver viste at pasienten hadde mangel på vitaminene A, D, E og K </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er opptaket av akkurat disse vitaminene mest påvirket hos denne pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alle disse vitaminene er fettløselige og deres normale opptak er dermed via akkurat samme mekanisme som opptak av andre fettstoff. Ved svikt i eksokrin pankreasfunksjon og blokkering av galletilførsel til tarmen som hos denne pasienten, vil opptak av fettstoff og fettløselige vitaminer påvirkes. De andre vitaminer har egne opptaksmekanismer/passiv diffusjon som ikke direkte er avhengig av galle eller pankreasenzym. Lite unntak er vitamin B12 der det trengs proteaser (trypsin) fra pankreas for å frigjøre B12 fra R-faktor slik at intrinsisk faktor kan binde </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fettløselige vitaminer, følger fettstoff-absorpsjon – 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 62 år gammel stort sett frisk og sporty kvinne oppsøker fastlegen fordi hun synes at når hun ser seg selv i speilet oppdager hun stadig nye rynker i ansiktet. I tillegg synes hun at hun har merket noe stivhet og smerter i et kneledd. Kort sagt synes hun at hun begynner å bli gammel, og hun husker med gru sin mor som alltid klaget over "gikta" på sine eldre dager. Av en venninne har hun hørt om et kosttilskudd som heter "Collagen Plus" som skal hjelpe både mot rynker i huden og leddsmerter. Preparatet er dyrt. Hun lurer derfor på hva fastlegen mener om dette produktet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I konsultasjonen tar fastlegen pasienten på alvor og googler "Collagen Plus" for å prøve å finne ut hva produktet inneholder. "Collagen Plus" inneholder ikke-denaturert kollagen type II fra kylling, lakseolje (uten noen nærmere presisering hva dette er), og noe C- og D-vitamin. Dette er pakket i en gelatinkapsel (som egentlig er denaturert kollagen fra storfe). Fastlegen forteller pasienten at dette virker som bortkastede penger og at hun ikke får økt kollageninnhold i ledd og hud av å spise dette. Hvorfor mener fastlegen dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kollagen er en klasse proteiner som har mange viktige funksjoner i organismen, inkludert i ledd og hud. Når en inntar et protein gjennom kosten vil dette bli brutt ned til aminosyrer i fordøyelsen (hovedsakelig i magen). Disse aminosyrene kan så tas opp i kroppen, transporteres til celler der disse kan inngå i nysyntese av proteiner. Det nytter derfor ikke å spise kollagen framfor andre proteiner for å øke kollageninnhold i ledd og hud. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1p for å vite at kollagen er et protein. 1 poeng for å nevne at å spise kollagen framfor andre proteiner ikke hjelper på syntese av kollagen. Totalt mulig 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten godtar ikke uten videre legens forklaring og ber om utfyllende forklaring til legens standpunkt. Legen husker da en figur hun så i første klasse på legestudiet (se under), og prøver med utgangspunkt i denne figuren å overbevise henne om sitt standpunkt. Pasienten er fortsatt skeptisk og peker på at figuren viser at kollagen inneholder helt spesielle aminosyrer, og hun lurer på om det ikke hjelper å spise disse aminosyrene. <<imgLink "IAB-2019s-4-A.PNG" 500>> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor bør legen fortsatt holde fast på sitt råd? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hydroksylysin (og hydroxyprolin) dannes gjennom posttranslasjonell modifikasjon av kollagen. 0.5 poeng for å nevne at i proteinsyntesen brukes ikke-modifiserte aminosyrer (som en like gjerne kan få fra et egg, en biff, en torskefilet eller annen proteinrik mat), og 0.5 poeng for å nevne at kollagenstrukturen skyldes post-translasjonelle modifikasjoner av aminosyrene. Totalt 1p. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delspørsmål gir 0.5 poeng, dvs totalt 1 poeng mulig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten er middels fornøyd med forklaringene, men bestemmer seg for å følge legens råd. Noen måneder seinere er hun uheldig og faller når hun vasker kjøkkengolvet. Hun får et brudd i håndleddet, men håndleddet gror fint etter bruddet og hun oppnår full funksjonalitet av leddet etter en stund. Etter at håndleddet er grodd, oppsøker hun fastlegen igjen. Denne gangen lurer hun på om hun kan ha blitt beinskjør i sin etter hvert modne alder. Hun har hørt at D-vitamin skal være viktig for å motvirke beinskjørhet, og hun husker også at dette vitaminet var en bestanddel av "Collagen Plus". Fastlegen tar en blodprøve og finner at pasienten har litt lave nivå av 25-hydroxy Vitamin D </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) # Hva er et vitamin? # Hva er den biokjemisk viktigste forskjellen på Vit C og D? # Hva er et mineral? # Hva er de viktigste mineralene i beinvev? # Hvorfor er Vit D viktig i beinhomeostase? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Vitamin er livsnødvendige (små) forbindelser som er viktige i stoffskiftereaksjoner. # fett- og vann-løseligheten (D fettløselig, C vannløselig) # Mineral er et naturlig forekommende uorganisk stoff (dannet i geologiske prosesser) # Kalsium og fosfat (Kalsiumfosfat, hydroksyapatitt) # Viktig for opptak av kalsium og fosfat i tarmen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ett poeng pr. riktig svar, til sammen 5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett B-vitaminer er en annen gruppe vitaminer som er viktige i dannelse av ATP både gjennom karbohydrat- og lipidmetabolisme. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn minst to stoffer som inngår i disse metabolske prosessene der et B-vitamin er en nødvendig byggestein. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Noen mulige svar: * NAD^^+^^/NADH (Nikotin adenin dinukleotid), niacin, nikotinsyre (Vit B3) * NADP^^+^^/NADPH, niacin (Vit B3) * FAD/FADH,,2,, (Flavin adenin dinukleotid), riboflavin (Vit B2) * CoA (Koenzym A), pantotensyre (B5) * TTP (Tiamin pyrofosfat), (Vit B2) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng hvis minst to stoffer nevnes. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Aksjonspotensialer ledes langs aksonet til et alfa-motornevron. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ionekanaler er viktige for henholdsvis depolarisering og repolarisering under et aksjonspotensial? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Spenningsstyrte Na-kanaler er viktig for depolariseringen * Spenningsstyrte K-kanaler er viktig for repolariseringen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 p. Spenningsstyrte Na-kanaler er viktig for depolariseringen * 0.5 p. (Spenningsstyre) K-kanaler er viktig for repolariseringen </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Den eksitatoriske påvirkningen på dette alfa-motornevronet i ryggmargen øker kraftig. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer da med aksjonspotensialene som ledes i alfamotornevronets aksoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Frekvensen av aksjonspotensialer øker (det enkelte aksjonspotensial er "alt eller intet" respons og kan i seg selv ikke bli sterkere eller svakere). Resultatet er økt kontraksjon av muskelfibrene som innerveres av aksonet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1p Frekvensen av aksjonspotensialer øker </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når aksjonspotensialet kommer fram til den nevromuskulære overgangen åpnes Ca^^2+^^-kanaler og Ca^^2+^^-ioner strømmer inn i cellen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva gjør at det er netto ionestrøm av Ca^^2+^^ inn i cellen når disse ionekanalene åpner seg? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Både konsentrasjonsgradienten (høyere konsentrasjonen av Ca^^2+^^ på utsiden sammenlignet med innsiden av cellen) og det negative membranpotensialet vil gi strøm av positivt ladde Ca^^2+^^ inn i cellen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1p Konsentrasjonsgradient (høyere konsentrasjon av Ca^^2+^^ på utsiden sammenlignet med innsiden av cellen) * 1p Negativt membranpotensial </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved Lambert-Eaton myastent syndrom angripes de presynaptiske Ca^^2+^^-kanalene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor vil tap av slike ionekanaler forstyrre nevromuskulær transmisjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Åpning av Ca^^2+^^-kanaler gir økt konsentrasjon av Ca^^2+^^-ioner presynaptisk, noe som gir frigjøring av acetylkolin (nevrotransmitter). Tap av slike ionekanaler vil medføre redusert frigjøring av acetylkolin, noe som gir mindre binding av acetylkolin til acetylkolinreseptorer på muskelendeplaten. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.p Tap av ionekanaler gir mindre frigjøring av acetylkolin </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Myastenia Gravis er en autoimmun sykdom som angriper acetylkolinreseptorer i den nevromuskulære overgangen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor sitter disse reseptorene og hva skjer når acetylkolin binder seg til dem? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reseptorene sitter postsynaptisk i cellemembranen til muskelfiberen Nikotinreseptorene er ionotrope, dvs at de er ligandstyrte ionekanaler der binding av nevrotransmitter vil gi åpning av ionekanalene og strøm av positive ioner (kationer) inn i cellen. Det vil da dannes et endeplatepotensial (eksitatorisk postsynaptisk potensial). I en normalt fungerende nevromuskulær overgang vil endeplatepotensialet være stort nok til at dette også dannes aksjonspotensialer i muskelfiberen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1p Postsynaptisk i den nervromuskulære overgangen (på muskelfiberen) * 1p reseptoren er en ionekanal og denne åpnes ved binding av nevrotransmitter * 1p Dannelse av endeplatepotensial (eller postsynaptisk potensial, aksjonspotensial og eksitatorisk postsynaptisk potensial ikke er det samme) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor vil tap av fungerende acetylkolinreseptorer gi forstyrrelse av nevromuskulære transmisjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det vil være mindre acetylkolinreseptorer som acetylkolin kan binde seg til. Det åpnes da færre ionekanaler, de postsynaptiske potensialene blir lavere, og det dannes derfor færre aksjonspotensialer i muskelfiberen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 p De postsynaptiske potensialene blir lavere * 1 p Det dannes færre muskelaksjonspotensialer </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et par, begge 40 år, har akkurat fått barn. Du kjenner straks igjen ansiktstrekkene og ser at det minner om Downs syndrom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skyldes Downs syndrom? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Trisomi 21 – dvs et ekstra kromosom 21 – eller en kromosmfeil som involverer translokasjon av kromomosom 21 til et annet akrosentrisk kromosom. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng: Helt rett svar, dvs kromosom 21 "overskudd" * Bare "trisomi" gir 0.5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du ønsker å bestille en genetisk analyse for å bekrefte din kliniske mistanke. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken analyse bestiller du? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Standard kromosomundersøkelse (lysmikroskopisk undersøkelse), PCR-basert trisomitest eller kopitallsundersøkelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for ett av de svarene. Alle tre er riktige (totalt oppnåelig 1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kromosomfeilen som forårsaker Downs syndrom kan være resultat av to ulike genetiske mekanismer, hvorav den ene er sporadisk og den andre kan nedarves. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det genetiske grunnlaget for hver av de to ulike mekanismene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Downs syndrom kan skyldes: # Aneuploiditet som oppstår ved deling av kjønnsceller (dvs nondisjunction i meiosen enten hos mor eller far), forårsaker ca 95% av tilfellene # En (Robertsonsk) translokasjon som er oppstått mellom kromosom 21 og et annet akrosentrisk kromosom (i meiosen enten hos mor eller far – eller i tidligere generasjon), forårsaker ca 5% av tilfellene </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for translokasjon som involverer kromosom 21 * 0.5 poeng for begrepet akrosentrisk </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor forteller at hun har et søskenbarn med Marfan syndrom. Dette er en genetisk bindevevssykdom som skyldes punktmutasjon i fibrillin-1-genet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken analyse ville du bestille for å undersøke punktmutasjoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sangersekvensering eller gensekvensering eller panelsekvensering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for en av dem. Alle tre er riktige. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Missense mutasjon er en vanlig årsak til Marfan syndrom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er en missense mutasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mutasjon som medfører utbytting av en aminosyre i det ferdige proteinproduktet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar – 1poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Figuren viser et familiekart hvor de affiserte familiemedlemmene har Marfan syndrom. <<imgLink "IAB-2020-2-A.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken arvegang er sannsynlig for Marfan syndrom? Begrunn svaret ditt </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Autosomal dominant arvegang er riktig (1 poeng) Studentene kan resonnere seg frem til at det er autosomal arvegang, ut fra at: * begge kjønn kan få sykdommen (0,5 poeng) * sykdommen forekommer i alle generasjoner, med ca 50% affiserte i hver generasjon (0,5 poeng) For å få full score og 2 poeng bør disse tre forhold være med </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se «Svar» over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinner har to X-kromosomer, mens menn bare har ett, men dette betyr ikke at kvinner uttrykker dobbel dose av alle proteiner kodet for av gener på X-kromosomet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det mekanistiske grunnlaget for dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det mekanistiske grunnlaget er en epigenetisk mekanisme, sk. X-kromosominaktivering som innebærer at i celler med minst to X-kromosomer så vil de fleste gener på ett av X-kromosomene undergå X-kromosominaktivering, dvs ikke være uttrykt. Mekanismen involverer uttrykk av et RNA molekyl (XIST) som tvinner seg rundt X-kromosomet, danner heterokromatin og dermed forhindrer genuttrykk fra det X-kromosomet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for X-kromosominaktivering på ett av normalt to Xkromosomer hos kvinner * 0.5 poeng for heterokromatin, evt XIST RNA, evt epigenetikk </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Takotsubo syndrom er en tilstand der symptomer og klinisk presentasjon minner om akutt hjerteinfarkt. Kontraktiliteten er forandret i deler av myokard, og hjertet har en karakteristisk, krukkelignende form. Høy sympatikustonus og endogene katekolaminer antas å være viktige mekanismer. Tilstanden kan utløses av psykiske belastninger. Den skiller seg fra infarkt ved at koronarkarene er åpne, og ved at kontraktiliteten vanligvis normaliseres innen et halvt år. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) "Myocardial stunning" ("hjertestølhet") eller "hibernernating myocardium" ("hjertedvale") er betegnelser er som brukes ved reversibel reduksjon av kontraktiliteten i myokard i forbindelse med iskemi. Definer begrepene stunning og hibernering, og forklar kort forskjellen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Stunning er en reversibel reduksjon av myokards kontraktilitet etter iskemi og reperfusjon, som vanligvis vedvarer i flere dager etter at vevsperfusjonen er gjenopprettet, og som ikke skyldes varig celleskade. Hibernering er en reversibel reduksjon av myokards kontraktilitet som skyldes pågående kronisk iskemi. Forskjellen er følgende. Stunning kommer etter en kortvarig, (nær) total okklusjon samt gjenoppretting av (nær) normal perfusjon - og går over spontant etter en viss tid. Hibernering vedvarer mens vevsperfusjonen er nedsatt og går tilbake når den er normalisert. Mekanismene for for varig nedsatt kontraktilitet ved stunning og hibernering er ikke sikkert avklart, men lavere nivå av høyenergifosfater, forstyrrelser i kalsiumtransport i sarkoplasmatisk retikulum, redusert kalsiumsensitivtet i myofibrillene og skifte fra aerob til anaerobt stoffskifte er sannsynlige årsaker. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Stunning: Nedsatt kontraktilitet ''etter iskemi og reperfusjon'' uten vesentlig celleskade, tross reetablert perfusjon, funksjonen normaliseres spontant (0.5 poeng). * Hibernering: Nedsatt kontraktilitet ''under'' pågående iskemi uten vesentlig celleskade, funksjonen normaliseres etter reperfusjon (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Tidligere vignett Takotsubo syndrom er en tilstand der symptomer og klinisk presentasjon minner om akutt hjerteinfarkt. Kontraktiliteten er forandret i deler av myokard, og hjertet har en karakteristisk, krukkelignende form. Høy sympatikustonus og endogene katekolaminer antas å være viktige mekanismer. Tilstanden kan utløses av psykiske belastninger. Den skiller seg fra infarkt ved at koronarkarene er åpne, og ved at kontraktiliteten vanligvis normaliseres innen et halvt år. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) En sannsynlig mekanisme ved Takotsubo er konstriksjon av mikrovaskulære kar i myokard. Beskriv kort hvordan hyperaktivitet i det autonome nervesystem kan gi karkonstriksjon i myokard. Forklar signalveien fra frigjøring av transmitter fra nerveterminaler til kontraksjon av glatte muskelceller i karveggen. Hvilke(n) transmitter(e) og hvilke(n) reseptor(er) i cellemembranen er involvert? Hva er de(n) intracellulære signalveien(e) fra reseptorstimulering til kontraksjon av myofilamentene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Høy sympatikustonus kan gi stor frigjøring og svært høye konsentrasjoner av katekolaminer lokalt i myokard, hovedsakelig noradrenalin, men også noe adrenalin. Begge transmitterne binder seg til alfa-1-reseptorene i cellemembranen og kontraherer de glatte muskelcellene i karveggen (1 poeng). Ved binding til alfa-1 reseptoren, aktiveres fosfolipase C (PLC) via det GTP-bindende proteinet Gaq, og derved katalyseres PLC spalting av fosfatidylinositol til inositol-tris fosfat (IP3) og diacyl-glycerol (1 poeng). IP3 aktiverer kalsiumfrigjøringskanalen i sarkoplasmatisk retikulum (SR) og øker derved intracellulær kalsiumkonsentrasjon. Kalsium binder seg til kalmodulin (CaM) og danner et kompleks som aktiverer enzymet myosin-lettkjede-kinase (MLCK) (0.5 poeng). MLCK fosforylerer lette myosinkjeder (MLC), og øker derved kryssbrokoblingen og kraftutviklingen i de glatte muskelfibrene (0.5 poeng). Selv om beta-reseptorene også aktiveres (relakserende/dilaterende effekt), dominerer alfa-1 effekten ved høye katekolaminkonsentrasjoner. Det finnes eksempler på at høye konsentrasjoner av karkonstringerende medikamenter kan utløse Takotsubo. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Høye konsentrasjoner av noradrenalin og adrenalin kontraherer muskelcellene (''1 poeng''). Aktiverer PLC via G-protein og øker IP3 (''1 poeng''). IP3 aktiverer kalsiumfrigjøring fra SR, kalsium binder til CaM og aktiverer MLCK (''0.5 poeng''). MLCK fosforylerer MLC og øker kontraktiliteten (''0.5 poeng''). Tilleggsopplysningene om at alfa-1-stimulering og kontraherende/ konstringerende effekt dominerer over beta-2-stimulerende / relakserende effekt på karet ved svært høye konsentrasjoner av katekolaminer kan kompensere med inntil ''0.5 poeng'' dersom svaret S2 ellers er mangelfullt, men S2 gir ikke mer enn 3 poeng til sammen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort forskjellen på iskemi og hypoksemi. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Med iskemi menes full stans eller alvorlig nedsatt perfusjon til et organ eller deler av et organ. Med hypoksemi menes (alvorlig) nedsatt oksygeninnhold i blod. I begge tilfelle er oksygentilførselen helt eller delvis opphørt. Ved iskemi er sirkulasjonen helt eller delvis opphørt, mens ved hypoksemi er sirkulasjonen bevart, og perfusjonen kan være kompensatorisk økt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Iskemi er nedsatt eller opphør perfusjon (0.5 poeng). Hypoksemi er nedsatt oksygeninnhold i blod (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort de viktigste metabolske forandringene i myokard ved akutt iskemi. Forklar hvordan iskemi påvirker myofilamentenes sensitivitet for kalsium </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved akutt iskemi stanser sirkulasjonen, og på grunn av det høye stoffskiftet i myokard er oksygenet i vevet oppbrukt på meget kort tid (sekunder - minutter). Dette fører til at metabolismen endres fra aerobt til anaerobt stoffskifte med laktatproduksjon og acidose (''0.5 poeng''). Energilageret i form av ATP og kreatinfosfat brukes opp, ved nedbrytningen akkumuleres fosfat og adenosin, og etter hvert stanser energikrevende prosesser som muskelkontraksjon, ionetransport over cellemembran (Na,K-ATPase) og kalsiumtranport (Ca-ATPaser) (''0.5 poeng''). Etter hvert overbelastes hjertemuskelcellene med kalsium, og det oppstår irreversibel skade (''0.5 poeng''). Intracellulær acidose og hyperfosfatemi reduserer kalsium-sensitiviteten i myofilamentene og gir redusert kontraktilitet lenge før ATP og kreatinfosfat er oppbrukt (''0.5 poeng''). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Omlegging til anaerobt stoffskifte med laktatproduksjon og acidose (''0.5 poeng''). Nedbrytning og fall i kreatinfosfat og ATP (''0.5 poeng''). Overbelastning av hjertemuskelcellene med kalsium, og irreversibel celleskade (''0.5 poeng''). Intracellulær acidose og hyperfosfatemi gir redusert kalsium-sensitivitet i myofilamentene og redusert kontraktilitet (''0.5 poeng'') </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med ionebalansen i myocardcellene ved akutt iskemi? Hvordan endres intracellulære og ekstracellulære konsentrasjoner av Na^^+^^, K^^+^^, Ca^^2+^^ og H^^+^^-ioner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Iskemi øker den ekstracellulære konsentrasjonen av K^^+^^ (redusert Na,K-ATPase) og H^^+^^/acidose (laktat) (0.5 poeng); og øker den intracellulære konsentrasjonen av Na^^+^^ (redusert Na,K-ATPase), Ca^^2+^^ (reduserte Ca-ATPaser og Na,Ca-bytte) og H^^+^^/acidose (laktacidose) (0.5 poeng). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ekstracellulært økt K^^+^^ og H^^+^^/acidose (,,0.5 poeng,,), intracellulært økt Na^^+^^, Ca^^2+^^ og H^^+^^/acidose (,,0.5 poeng,,). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan endres kontraktiliteten i myokardcellene ved akutt iskemi? Redegjør kort for mekanismen(e). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Intracellulær acidose (og hyperfosfatemi) reduserer kalsiumsensitiviteten i myofilamentene og gir redusert kontraktilitet lenge før ATP og kreatinfosfat er oppbrukt. Det antas at H^^+^^ konkurrerer med Ca^^2+^^ ved bindingssetene på myofilamentene (''0.5 poeng''). Energilageret i form av ATP og kreatinfosfat brukes opp, og etter hvert stanser energikrevende prosesser som muskelkontraksjon, og kalsiumtranport (Ca-ATPaser) (''0.5 poeng''). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Redusert kalsiumsensitivitet i myofilamentene (''0.5 poeng'') og redusert konsentrasjon av høyenergifosfatbindinger som ATP og kreatinfosfat (''0.5 poeng''). Merk at de utfyllende svarene på S4 og S6 overlapper fordi effekter og mekanismer er nevnt begge steder, mens det som gis poeng for er forskjellig. Hvis både effekt og mekanisme er beskrevet i ett av svarene, er det tilstrekkelig å henvise til det. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved reperfusjon av myokard etter relativt kortvarig iskemi sees ofte hjerterytmeforstyrrelser som skyldes økning av intracellulær Ca^^2+^^. Forklar kort mekanismen(e) for denne økningen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved iskemi øker intracellulær Ca^^2+^^ i hjertemuskelcellene fordi funksjonen til de energikrevende kalsium-ATPasene er nedsatt (0.5 poeng). Ved reperfusjon vaskes H^^+^^ ut ekstracellulært, og det oppstår en gradient som driver H^^+^^ ut og Na^^+^^ inn ved hjelp av Na,H-bytteren. Økt intracellulær Na^^+^^ vil i sin tur øke intracellulær Ca^^2+^^ via Na,Cabytteren (0,5 poeng). Økt intracellulær Ca^^2+^^ øker forekomsten av forsinkede etter-depolariseringer (delayed after-depolarizations), som kan utløse ventrikulær takykardi. Under iskemi er hjertemuskelcellene depolarisert på grunn av ekstracellulær hyperkalemi, og dermed oppstår hverken aksjonspotensialer eller etter-depolariseringer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Høy intracellulær Ca^^2+^^ under repolarisering skyldes både stigning på grunn av redusert funksjon av Kalsium-ATPasene under den forutgående iskemien, og stigning på grunn av utvasking av H^^+^^, økt intracellulær natrium via Na,H-bytte (''0.5 poeng'') og økt Na,Ca-bytte (''0.5 poeng''). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En av dine pasienter er en 46 år gammel mann som er levertransplantert på grunn av sykdommen primær skleroserende cholangitt (PSC). Dette er en kronisk betennelse i de små gallegangene i leveren slik at det oppstår arr/fibrose og etter hvert varig skade og svikt i normal leverfunksjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 4 hovedfunksjoner som leveren har </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mulige funksjoner: * Håndtering og kontroll med næringsstoffer, sørge for å opprettholde adekvat næringstilgang for cellene i resten av kroppen (''Fettstoffer; B-oksidasjon, lipogenese'', kolesterolmetabolisme, produksjon av ketonlegemer, lipoproteiner og apolipoproteiner. ''Karbohydrater''; glukoneogenese, glukogenese og glukogenolyse. ''Aminosyrer''; ureasyklus, danning av ikke-essensielle aminosyrer og omdanning mellom ulike typer aminosyrer) * Produksjon av mange ulike plasmaproteiner (albumin, transferrin, ferritin, koagulasjonsfaktorer, komplementfaktorer, CRP osv, osv) * Produksjon og utskillelse av gallesalter (fordøyelse og absorpsjon av fettstoffer) * Utskillelse av ulike stoffer som ikke går via nyrer (eks bilirubin, kolesterol, xenobiotika) * Detoksifisering/nedbrytning av medikamenter og xenobiotika (fase I og fase II reaksjoner) * Metabolisme (kjønnshormoner, ulike peptidhormoner) og aktivering av ulike hormoner (vitamin-D, tyroksin) * Drenering av veneblod fra en stor mengde GI-organer og «rensing» av blod (del av RES systemet, immunforsvar) * Lagring (eks fettløselige vitaminer, vitamin B12, jern, kobber) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hver riktig funksjon av de som er nevnt over (totalt maks 2 poeng). Trenger ikke ha samme «inndeling» av funksjoner som over, så lenge det følger et visst system. Ikke full skåre dersom kun ramser opp elementer innenfor samme kategori. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken overordnet funksjon har portvenen (v.portae)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Portvenen (portåren) drenerer veneblod fra magetarm-organer som magesekk, tynntarm, tykktarm, pankreas og milt. Dette blodet er oksygenfattig, men inneholder masse absorberte stoffer fra tarmen. På den måten går både næringsstoffer og uønskede absorberte stoffer (giftstoffer, mikrobeprodukter osv, osv) direkte til leveren for håndtering der før det går ut i hovedkretsløpet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5p - Drenere veneblod fra mange organ i gastrointestinaltraktus (spesielt tarm) * 0,5p – absorberte næringsstoffer og «avfall»/uønsket materialefraktes rett til lever for håndtering før ut i hovedkretsløp </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Skisser kort hvordan blodet strømmer i en leverlobulus og forklar hvordan egenskapene til kapillærnettverket der understøtter leverens funksjoner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Leverlobulusen har heksagonal form med en sentralvene i midten og grener av portvenen og arteria hepatica (leverarterien) i de seks hjørnene. Forgreiningene fra de to karene går sammen og fusjoneres til kapillærnettverket av sinusoider som ligger mellom bjelkene av leverceller i lobulusen. I midten av lobulusen er sentralvenen. Blodet strømmer inn via portvenene og leverarteriene, i sinusoidene blandes oksygenfattig blod fra venen med oksygenrikt blod fra arterien, og dreneres til sentralvenen og videre til vena hepatica (levervene) og ut av leveren. Kapillærene i leveren kalles sinusoider og har større diameter enn vanlige kapillærer, har manglende eller ufullstendig basalmembran og er fenestrert med store porer (ikke-kontinuerlig endotel). Endotelcellene er spesialiserte med mange ulike scavenger-reseptorer og høy evne til endocytose. Innimellom endotelcellene sitter også stasjonære makrofager kalt Kupfferceller. Disse egenskapene bidrar til transport av molekyler mellom blod og leverceller, eksempelvis kan store molekyler lett passere fra blodet til leveren, det er effektiv klarering/«rensing» av blodbårent «avfall», og leveren gir et viktig bidrag til det medfødte immunforsvaret. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5p – om vet at blodet strømmer fra grener av vena portae og leverarterien i hver av de seks hjørnene av lobulusen, som så blandes i kapillærnettverket (sinusoidene) og tømmes i sentralvenen i midten (og så ut av leveren) * 1p – om vet at sinusoidene har a) større diameter, b) ufullstendig basalmembran, c) fenestrering,d) består av spesialiserte endotelceller (med bl.a. aktiv endocytose av substanser) og e) at stasjonære makrofager = Kupfferceller er i endotelveggen. 0,2p for hvert riktige punkt * 1p – om vet at disse egenskapene gir effektiv transport og opptak av store molekyler fra blodet og til leveren, som del av en «rensing»/»filtrering» av blodet og del av immunforsvaret </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar prinsippet for enterohepatisk sirkulasjon </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enterohepatisk sirkulasjon (kretsløp/resirkulasjon/reabsorpsjon) er det systemet der visse stoffer (eks bilirubin, gallesalter, kobalaminer, diverse legemidler) blir skilt ut fra leveren via gallen til tarmen, for deretter å bli tatt opp igjen lengre ned i tarmen og ført via portveneblodet tilbake til leveren, som på nytt skiller stoffene ut i tarmen via gallen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,75p - om vet at det innebærer utskillelse av stoffer i galle og videre ut i tarmen * 0,75p - om også vet at innebærer reopptak fra tarmen tilbake til leveren. Full skåre om beskriver riktig prinsipp med sirkelen lever-galletarm-tilbake til lever (-galle-tarm igjen) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten din har også den kroniske inflammatoriske tarmsykdommen Crohn’s sykdom, med aktiv betennelse spesielt i tynntarmen, og har tidligere fjernet mye av ileum. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar på hvilken måte tynntarmslimhinnen er involvert i fordøyelse (nedbrytningen) av karbohydrater og protein, og mekanismene for denne delen av nedbrytningen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tynntarmsslimhinnen har svært stor overflate tilrettelagt for fordøyelse og absorpsjon, med sirkulære folder, villi (tarmtotter) og mikrovilli («børstesøm»/«brush border») på tarmepitelcellene. I denne børstesømmen ligger flere ulike enzymsystem som er viktig for fordøyelse av disse to næringsstoffene: ''Karbohydrat'': Enzymsystem som spalter videre oligo- og disakkarider som sukrose, maltose/maltooligosakkarid og alfalimit dekstriner, som er forgreningsresten etter at alfa-amylase (fra spyttkjertler og pankreas) har brutt ned stivelse og glykogen. Karbohydrater må brytes ned til sine minste enheter monosakkarider (glukose, fruktose, galaktose) for å kunne bli absorbert av transportsystemer i tarmepitelcellen. ''Protein'': Enzymsystem som spalter videre (etter pepsin i magesekken) peptider, oligo- og dipeptider og dipeptider til enda mindre enheter (oligo- og dipeptider, noen aminosyrer) som kan absorberes inn i tarmepitelet. Der finnes det et system av cytoplasma-peptidaser som spalter de siste delene helt ned til sine ulike aminosyrer som så transporteres ut i blodet. Et enzym i denne børstesømmen er enterokinase/enteropeptidase er ansvarlig for aktivering av trypsinogen til trypsin som igjen er viktig for aktiveringen av alle proenzym i sekretet fra eksokrine pankreas. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5p – om vet at den store overflaten tiln tynntarmslimhinnen, med villi og mikrovilli (=børsesøm/brush border) på enterocyttene, er viktig * 0,5p – om vet at det i denne børstesømmen finnes ulike enzymsystem som katalyserer spaltingen av disse to næringsstoffene * 0,5p – om forklarer riktig hvordan disse enzymsystemene utgjør siste del av nedbrytningen og spalter de produktene som dannes etter at nedbrytningen er kommet igang. Bør vite at disse produktene er oligo- og disakkarider for karbohydrater og peptider, oligo- og dipeptider for proteiner. * 0,5p - Bør vite at karbohydrater må brytes ned til sine minste enheter (monosakkarider) for å absorberes inn i cellene, mens det for proteiner er et siste nedbrytningstrinn i cytosol av enterocyttene som resulterer i de minste enhetene (aminosyrer) * 0,5p – om nevner at et av enzymene i børstesømmen (enterokinase) er viktig for aktivering av trypsinogen som så videre aktiverer de andre pankreas-proteasene, som er helt nødvendig for nedbrytning av proteiner. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten var plaget med vandig diare. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken malabsorpsjon er mest sannsynlig årsak til diareen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gallesyreindusert diare. Betennelse i, eller kirurgisk fjerning av, distale del av tynntarm kan nedsette enterohepatisk resirkulasjon av gallesyrer, som da kommer over i tykktarm og gir økt væskeog elektrolyttsekresjon fra tykktarmsepitelcellene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må klare å resonere at det har noe med manglende reabsorpsjon av gallesalter å gjøre (pga betennelse/fjerning av tynntarm). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Plexus Brachialis </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke spinale nerver er det vanligvis som danner plexus brachialis? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hovedsakelig (C4) C5 til Th 1 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Nevner cervical og thoracal 1 poeng * Korrekt spinalhøyde 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Scalenus-porten </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Mellom hvilke to muskler kommer plexus brachialis ut av nakken? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> m. scalenus anterior og m. scalenus medius </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Å nevne scalenus er 1 poeng og riktig muskel benevning 0.5 poeng for hver muskel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Beskrive flettverket av plexus brachialis </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv flettverket frem til overekstremitets nervene </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det starter med 3 trunci som er truncus superior, truncus medialis og truncus inferior. Disse flettes sammen til 3 fasikler som nevnes som fasciculus lateralis, fasciculus posterior og fasciculus medialis </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig antall trunci og antall fascikler 1 poeng, riktig navngivelse av trunci og fascikler 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Overekstremitet nerver </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Navngi fem nerver i overekstremitetene som kommer fra plexus brachialis? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> N. axillaris, n. musculocutaneus, n. radialis, n.medianus og n. ulnaris. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Alle riktig (2 poeng), 3 av 5 riktig (1poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bevegelse </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke nerver innerverer hhv. fleksjon i albue og ekstensjon i håndledd? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fleksorer i albue er n.musculocutaneus og ekstensorer i håndledd n.radialis </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> N. musculocutaneus (1 poeng) n. radialis (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En jente på 15 år kommer til deg på legekontoret. Hun bor sammen med mor og tre yngre halvsøsken, har ingen kontakt med far. Du vet fra tidligere at mor til jenta har hatt rusproblemer og vært utsatt for vold fra flere av sine samboere. Jenta selv er oppløst i gråt og fortvilet. Hun har funnet ut at hun er gravid og har kranglet med mor. Hun er tidligere frisk, men har hatt et stort fravær fra skolen de siste 2-3 månedene samtidig med at hun brukt hasj og har drukket alkohol nesten hver helg det siste året. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv typiske psykososiale og kognitive utviklingstrekk i alderen 14-16 år? (Nevn minst fire punkter) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Individnivå: * Frigjøringsprosess * Personrettet seksuell orientering Familienivå: * Maktkamp mellom ungdom og foreldre Sosiale relasjoner: * Skiftende vennerelasjoner * Politisk engasjement * Opptatt av rettferdighet/urettferdighet Kognitivt: * Økende abstrakt tenkning * Kontrollsentre i hjernen mindre utviklet enn emosjonelle </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke fysiske endringer skjer i puberteten? (nevn minst 2 punkter) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Høydevekst * Primære kjønnskarakteristika ** Modning av kjønnsorganer for reproduksjon * Sekundære kjønnskarakteristika ** Brystutvikling ** Behåring ** Menstruasjon ** Stemmeskifte </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fire måneder senere kommer hun tilbake, gravid i svangerskapsuke 30. Hun er bekymret for om hun vil bli en god nok mor for barnet sitt Fra tidligere vignett: <<< En jente på 15 år kommer til deg på legekontoret. Hun bor sammen med mor og tre yngre halvsøsken, har ingen kontakt med far. Du vet fra tidligere at mor til jenta har hatt rusproblemer og vært utsatt for vold fra flere av sine samboere. Jenta selv er oppløst i gråt og fortvilet. Hun har funnet ut at hun er gravid og har kranglet med mor. Hun er tidligere frisk, men har hatt et stort fravær fra skolen de siste 2-3 månedene samtidig med at hun brukt hasj og har drukket alkohol nesten hver helg det siste året. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil du fortelle henne er god omsorg for barn de første levemånedene? (Nevn minst seks punkter innenfor 3 ulike områder) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Emosjonelt: * Varm og kjærlig omsorg for babyen * Kroppskontakt * Kommunisere med barnet, synge for/snakke med * Regulere barnet når det har ubehag, f.eks vugge, bære, trøste * Tolke barnets signaler – når det trenger trøst og når det trenger pause Kognitivt: * Kommunisere med barnet, synge for/snakke med * Respondere på barnets signaler/tegn til kontakt * Etter hvert leke med barnet og la barnet utforske omgivelser under nødvendig tilsyn Mat: * Sørge for at barnet får mat i forhold til sitt behov Søvn: * Sørge for at barnet får tilstrekkelig søvn og hvile i forhold til sin alder Stell: * Ivareta god hygiene gjennom bading, bleieskift o.l. Helse: * Følge opp anbefalinger fra helsestasjon * Følge vaksinasjonsprogram * Ta kontakt med helsestasjon eller fastlege dersom babyen har symptomer eller tegn på sykdom Sikkerhet: * Tilse at barnet har trygge omgivelser </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, minst tre ulike områder må være dekket. Inntil 3 poeng totalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) Fra tidligere vignetter: <<< En jente på 15 år kommer til deg på legekontoret. Hun bor sammen med mor og tre yngre halvsøsken, har ingen kontakt med far. Du vet fra tidligere at mor til jenta har hatt rusproblemer og vært utsatt for vold fra flere av sine samboere. Jenta selv er oppløst i gråt og fortvilet. Hun har funnet ut at hun er gravid og har kranglet med mor. Hun er tidligere frisk, men har hatt et stort fravær fra skolen de siste 2-3 månedene samtidig med at hun brukt hasj og har drukket alkohol nesten hver helg det siste året. <<< <<< Fire måneder senere kommer hun tilbake, gravid i svangerskapsuke 30. Hun er bekymret for om hun vil bli en god nok mor for barnet sitt <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke risikofaktorer for psykisk sykdom har jenta på 15 år? (nevn minst to faktorer) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Bruk av alkohol/hasj * Mor med rusmisbruk, mulig utsatt for omsorgssvikt * Vitne til vold mot mor * Skolefravær * Sosialt utenforskap * Belastning ved tenåringsgraviditet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig svar, inntil to poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter to uker får du vite at jenta har født en liten gutt. Fra tidligere vignetter: <<< En jente på 15 år kommer til deg på legekontoret. Hun bor sammen med mor og tre yngre halvsøsken, har ingen kontakt med far. Du vet fra tidligere at mor til jenta har hatt rusproblemer og vært utsatt for vold fra flere av sine samboere. Jenta selv er oppløst i gråt og fortvilet. Hun har funnet ut at hun er gravid og har kranglet med mor. Hun er tidligere frisk, men har hatt et stort fravær fra skolen de siste 2-3 månedene samtidig med at hun brukt hasj og har drukket alkohol nesten hver helg det siste året. <<< <<< Fire måneder senere kommer hun tilbake, gravid i svangerskapsuke 30. Hun er bekymret for om hun vil bli en god nok mor for barnet sitt <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke risikofaktorer for psykisk sykdom har gutten? (Nevn minst to faktorer) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Utsatt for rus i svangerskapet * Utsatt for mors stress i svangerskapet * Ung og umoden omsorgsperson * Arvelig belastning for rus/ psykisk sykdom * Prematuritet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig svar, inntil 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hvite blodceller har ulike oppgaver i vårt infeksjonsforsvar. Mest tallrike av de hvite blodcellene er nøytrofile granulocytter </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I forsvaret mot hvilke typer infeksjoner er de nøytrofile granulocyttene særlig viktige? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Forsvar mot bakterie- eller soppinfeksjoner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bakterie- og soppinfeksjoner. Studentene kan nevne ord som medfødt eller uspesifikt immunforsvar, men det svarer ikke dirkete på spørsmålet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles prosessen som i løpet av minutter får nøytrofile granulocytter fra blodbanen og til det stedet til trengs for mikrobedrap? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Prosessen kalles kjemotaksi og er benevnelsen for bevegelse av celler mot eller fra en kjemisk gradient. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kjemotaksi må være nevnt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv trinnvis denne prosessen som rekrutterer granulocyttene til vevet </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Først ruller granulocyttene langs endotel i karsengen. Det kalles marginalisering og kan skje grunnet selektiner på celleoverflaten. Neste trinn er adhesjon til karveggen ved integriner. Tredje trinn er transmigrasjon gjennom porer i endotelet . Det er binding av bakterie-molekyler via G-protein koblede reseptorer på celleoverflaten av nøytrofile granulocytter som direkte stimulerer motiliteten til cellen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Begrepene marginalisering – adhesjon og diapedese/transmigrasjon må være nevnt. Studentene kan også nevne begrep som locomotion og cytoskjelettets betydning for cellenes bevegelse </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Nøytrofile granulocytter hører til gruppen av fagocyterende celler </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv trinnene i prosessen for mikrobedrap som kalles fagocytose </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gjenkjennelse av patogener skjer ved såkalte pattern recognition receptors (PRR), komplementreseptor eller FC-reseptor på immunglobulin (opsonisering). Mikrobe/mikrobeprodukt tas opp i granulocytten ved endocytose: avsnøring av cellemembranen med dannelse av en intracellulær vakuole. Denne vakuolen/fagosomet smelter sammen med et lysosom inne i cellen og danner et fagolysosom. Selve mikrobedrapet skjer i fagolysosomet vha enzymer som lysozym og hydrolaser som bryter ned bakteriecelleveggen. I membranen til fagolysosomet dannes oksygenradikaler som er toksiske også for den nøytrofile granulocytten selv, og denne dør til slutt som følge av akkumulasjon av toksiske produkter fra mikrobedrapet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Første del (gjenkjennelse av patogen) er ikke direkte etterspurt i oppgaven og må ikke være med for å gi poeng). Begrepene endocytose- fagolysosom (evt fagosom + lysosom) – toksiske oksygenradikaler, lysozym og laktoferrin – cytokinfrigjøring og celledød. Noen vil kanskje også nevne «respiratory burst» som er hvordan fagocyterende celler kan øke oksygenforbruket og danne flere oksygenradikaler til mikrobedrapet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Man mener i dag at nøytrofile granulocytter også spiller en rolle i ekstracellulært mikrobedrap </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort mekanismene for slikt ekstracelleulært mikrobedrap utøvd av nøytrofile granulocytter </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det kalles Neutrophil Extracellular Traps (NET) og består av et nettverk av fibre med kjerneinnhold (histoner) og granula fra nøytrofile granulocytter som danner feller for mikrober. Mikrober som fanges i disse nettverkene vil gå i apoptose. Mekanismene er ikke fullstendig klarlagt, men granula og histoner fra granulocytter spiller en rolle </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> NET må være nevnt og kort forklart. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Steroidhormoner er en viktig gruppe av hormoner som medierer sin aktivitet gjennom binding til en rekke spesifikke reseptorer. På delspørsmål 1 og 4 kan du gjerne bruke eksempler i tillegg til å gi en mer generell beskrivelse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I hvilke vev/organer blir steroidhormonene produsert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Steroidhormonene produseres i binyrebarken, testikler og ovarier. Hos gravide produseres også steroidhormoner i placenta. * Eksempel 1: Testosteron produseres i testikler hos menn, mens det også produseres små mengder i ovariene, binyrebarken og i placenta hos gravide. * Eksempel 2: Østrogene produseres hovedsakelig i eggstokkene og i placenta. Noe østrogen blir også produsert i testikler og i binyrebarken. * Eksempel 3: Kortisol (glukokortikoid) produseres i binyrebarken. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Viktigst er at steroidhormonene produseres i binyrebarken, testikler og ovarier. Gir ett poeng. To poeng om man har med et eksempel i tillegg. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket molekyl er utgangspunktet for produksjonen av steroidhormoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alle steroidhormoner produseres med utgangspunkt i kolesterol. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kolesterol </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er karakteristisk for reseptorene som binder steroidhormoner (lokalisering og struktur)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Selv om det også finnes reseptorer som binder steroidhormoner på cellemembranen er reseptorene i all hovedsak lokalisert i cytoplasma og i kjernen. Dette fordi steroidhormonene er fettløselige og kan passere cellemembranen. Reseptorene består av to hovedelementer, et ligandbindende domene som hormonet binder seg til, og et DNA-bindende domene som gjør at den stimulerte reseptoren binder til DNA </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Lokalisering: cytoplasma og kjernen. * Struktur: DNA-bindende og hormon-bindende domene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) Fra tidligere vignett: <<< Steroidhormoner er en viktig gruppe av hormoner som medierer sin aktivitet gjennom binding til en rekke spesifikke reseptorer. På delspørsmål 1 og 4 kan du gjerne bruke eksempler i tillegg til å gi en mer generell beskrivelse. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan er virkningsmekanismen for steroidhormoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fordi steroidhormonene er fettløselige passerer de cellemembranen og binder reseptorer intracellulært. Steroidreseptorene er transkripsjonsfaktorer og vil når de stimuleres binde til DNA og regulere DNA-transkripsjonen (produksjonen av mRNA). For eksempel er signal fra testosteron nødvendig for spermatogenesen og fertilitet hos menn. Det betyr at de genene som stimulerer disse prosessene blir aktivert vha. testosteron og dens reseptorer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dersom det ikke tidligere er sagt at steroidhormoner er fettløselige og kan passere cellemembranen, må det med her. Videre må studenten ha med at reseptorer for steroidhormoner er transkripsjonsfaktorer. For full uttelling bør studenten ha med et eksempel som f.eks. testosteron. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 52 år gammel kvinne kommer med ambulanse til skadepoliklinikken kl. 02.30. En time tidligere hadde hun sklidd på den islagt verandaen da hun skulle ut å se på stjernene. Hun holdt seg fast i gelenderet da hun falt. Hun fikk først en vridning i venstre arm og slo deretter armen i bakken. Hun har nå sterke smerter i venstre skulder og overarm. Ved ankomst til sykehuset blir det gjennomført bildediagnostikk. <<imgLink "IAB-2021-A.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Se på bilde 1. Hvilken type radiologisk undersøkelse er gjennomført, og hvilke(t) skjelettavvik foreligger? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er gjennomført røntgen av venstre overarm og skulder. Det foreligger en fraktur (mer presist en tverrfraktur) i midtre del av humerus, samt en fraktur i proksimale humerus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å angi at det er gjennomført røntgen. 0.5 poeng for angivelse av hver aktuelle fraktur </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det blir besluttet at pasienten skal opereres, og ortopeden ønsker mer omfattende og detaljerte bilder av pasientens skader som ledd i operasjonsplanleggingen. Det blir gjennomført en ny radiologisk undersøkelse. Se bilde 2 og bilde 3. <<imgLink "IAB-2021-B.PNG">> <<imgLink "IAB-2021-C.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hovedprinsippet bak bildedannelse ved hjelp av denne type bildeundersøkelse, og kan du beskrive to fordeler med og en potensielt skadelig effekt av undersøkelsen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved computertomografi (CT) ligger pasienten inne i en maskin, omgitt av en roterende bue. På denne buen står det på den ene siden et røntgenrør, og på motsatt side er det montert en røntgenstråle-detektor. Når buen står i en posisjon, vil røntgenstråler sendes inn mot pasientens kropp. Noen av røntgenstrålene blir absorbert i pasienten. Dette skjer i større grad i de områdene av pasienten som er røntgentette (områder med mye og tettpakkede eller store atomer, som for eksempel kalkholdig skjelett). De fleste av de resterende røntgenstrålene passerer gjennom kroppen, og treffer detektoren som er plassert på den andre siden. Når røret står i en bestemt posisjon, vil det tredimensjonale volumet som kroppen representerer bli registrert som et 2-dimensjonelt bilde. Dette bildet kalles et tomogram. Ved CT roterer buen med rør og detektor rundt pasienten, og gjør røntgenregistreringer/tar bildeopptak i mange ulike retninger. Basert på de mange ulike registreringene/bildeopptakene, kan man ved hjelp av datamaskiner (derav computerized) regne seg frem til tettheten til vevet inne i det tredimensjonale volumenet som kroppen representerer. Fordeler med CT er at undersøkelsen kan gjennomføres raskt, og gir derfor informasjon om mye volum på kort tid. CT kan gi samtidig informasjon om både bløtvev, blodårer og skjelett. Videre er CT smertefri og ikke-invasiv, og gir bildefremstilling med høy oppløsning. I tillegg kan bildene rekonstrueres til alle ønskelige plan. CT benytter seg av røntgenstråler, som har ioniserende egenskaper. Med dette menes at røntgenstrålene har evnen til å slå elektroner ut av sine skall/orbitaler, og skaper et ion. Molekyler som er ioniske har større reaksjonsevne med andre atomer/molekyler, og hvis det dannes ioner i DNA, kan dette medføre mutasjoner, som igjen kan være kreftfremkallende. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å beskrive at CT benytter seg av et roterende apparat med røntgenrør og detektor. 0.5 poeng for å beskrive at det tas bilder i mange ulike retninger, og at dette kan benyttes til å regne ut og lage bilder av hva som befinner seg inne i kroppen (computerized tomography eller computertomografi). 0.5 poeng for å nevne en fordel med CT, 1 poeng for å nevne to fordeler. 1 poeng for å forklare at CT benytter røntgenstråler som er ioniserende stråling med potensiell skadelig effekt. Maks 2.5 poeng. Dersom studenten velger feil modalitet gis det ingen poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten blir operert. To dager senere får hun sterke smerter i øvre del av magen, og blir innlagt på sykehuset igjen. Legen i mottaket ønsker å utelukke at smertene skyldes en blødning fra en skade i lever. Det blir gjennomført både MR- og CT-avbildning, se bilde 4 og 5. <<imgLink "IAB-2021-D.PNG">> <<imgLink "IAB-2021-E.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket bilde er tatt med henholdsvis CT og MR? Kan du tenke deg hvorfor det ene bildet er så mye mer uklart enn det andre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bilde 4 er et MR-bilde, og bilde 5 er et CT-bilde. På CT er skjelettstrukturer hvite, og fettvev (som for eksempel subkutant vev) er mørkt. På MR blir kortikalt beinvev (som inneholder mye kalk og få hydrogenatomer) stort sett sort på alle sekvenser, og fett blir lyst på både vanlige T1- og T2-sekvenser. CT-undersøkelse gjennomføres raskt, opptaket over abdomen er gjort i løpet av få sekunder. MR-undersøkelse tar lang tid, mange sekvenser kan ta flere minutter. For å unngå artefakter fra bevegelser, som for eksempel pustebevegelser, kan det gjennomføres relativt raske sekvenser hvor pusten holdes. Alternativt kan det tas multiple delbildeopptak kun i samme del av respirasjonen, som settes sammen til et helt bilde. Årsaken til at MR-bildet er mer uklart enn CT-bildet, er derfor at bildeopptak med MR tar lang tid, hvilket øker sjansen for bevegelsesartefakter (i dette tilfellet forårsaket av pusting/bevegelse av diafragma). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for korrekt angivelse av MR- og CT-bilder. 1 poeng for å angi at bildeopptak med MR tar mye lengre tid enn opptak ved CT, og at dette disponerer for bevegelsesartefakter </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Se på bilde 6. <<imgLink "IAB-2021-F.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke anatomiske strukturer er det satt piler på? Benevningen strekker seg fra A-F. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * A: Lever * B: Milt * C: Aorta (i avgangen av truncus cøliacus) * D: Magesekk, ventrikkelen * E: Nyre * F: Vena cava inferior </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.25 poeng for hvert riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar prinsippet bak avbildning med magnetisk resonans (på maks 300 ord). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MR-bilder skapes ved å manipulere kjernen til hydrogenatomer (=protoner). Et proton er positivt ladet, og har et egenspinn omkring egen akse. Elektrisitet i rotasjon gir magnetisme, og derfor kan et proton oppfattes som en liten stavmagnet. Vann og fett inneholder mye protoner, og menneskekroppen inneholder mye av begge disse substansene. Protoner i kroppen (og for så vidt for øvrig) har magnetisk vektor som er tilfeldig orientert. De mange protonene som befinner seg i et bestemt volum vil ha ulike magnetiske vektorer, slik at summen av vektorene (resultatvektoren) vil være 0. Hvis en legger et volum i et eksternt magnetfelt (som en MRmaskin har), vil de enkelte protonene rette sitt magnetfelt inn parallelt eller antiparallelt med det eksterne magnetfeltet. Det vil være en liten overvekt av protoner som stiller seg inn parallelt, og resultatvektoren av disse vil derfor være rettet parallelt. I tillegg til å ha et egenspinn, slingrer også den roterende aksen til protonene, med en såkalt presesjon. Denne presesjonen har for protoner en bestemt frekvens som korrelerer med feltstyrken til det eksterne magnetiske feltet. Ved 1.5 tesla er denne frekvensen 63.8 MHz. Den magnetiske resultatvektoren av de parallelle protonene i et magnetfelt er fryktelig liten i forhold til det eksterne magnetfeltet, og derfor ikke målbart. Hvis en kunne bikket vektoren ut fra denne retningen, til en retning 90 grader på magnetfeltet, kunne man imidlertid ved hjelp av en coil registrert de roterende magnetiske protonene og fått signaler som en kunne lagd et bilde av. Det er her begrepet resonans i «magnetisk resonans» kommer inn. Hvis en sender inn en radiofrekvenspuls som har samme frekvens som presesjonsfrekvensen (63.8 MHz ved 1.5 tesla), vil en bikke den magnetiske vektoren til protonene fra parallell retning til etter hvert 90 grader på parallell retning. En måler da i dette planet, kjent som transversalplanet, roterende magnetisme, som er det samme som elektrisitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 poeng for å ha med at protoner brukes til bildedannelse, og at protonene er magnetiske. Begge deler må være med. * 0.5 poeng for å ha med at protonene orienteres i samme retning som et eksternt magnetfelt. * 0.5 poeng for å beskrive fenomenet presesjon og at denne kan påvirkes av en resonnerende radiofrekvenspuls. Begge deler må være med. * 0.5 poeng for å beskrive at signalene til de roterende protonene kan måles i transversalplanet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 45 år gammel mann som malte huset sitt falt 3 meter ned fra en stige. Han er tungpustet og har brystsmerter. På røntgen ses forandringer forenlig med høyresidig trykkpneumotoraks, med forskyving av hjerte mot venstre side. Dette må avlastes ved å legge inn et toraksdren. Ved innleggelse av toraksdrenet skal man ta høyde for nerver, kar og årer mellom ribbein (den nevrovaskulære intercostale bunt). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du beskrive hvor den neurovaskulære intercostale bunt ligger i forhold til ribbein og rygg, samt hvordan nerver, arterier og vener ligger i forhold til hverandre. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den nevrovaskulære bunt ligger under hver costa. Derfor skal et toraksdren føres inn over costa. Øverst på den nevrovaskulære bunt ligger vena intercostalis, nedenfor der ligger arteria intercostalis og så nervus intercostalis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for korrekt beliggenhet og i forhold til hverandre, ** 0.5 poeng for korrekt beliggenhet ** 0.5 poeng for beliggenhet i forhold til hverandre. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når mann legge inn et toraksdren er det viktig å være sikker på at man er i torakshulen. Derfor sjekker man med en finger om man har gått gjennom det innerste lag på toraksveggen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket lag er innerst på toraksveggen og hvilket lag omgir lungene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Pleura parietalis ligger innerst på toraksveggen * Pleura visceralis omgir lungene </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.0 poeng for hvert korrekt navn på lagene (pleura parietalis og visceralis). (Pars cervicalis av parietalis godkjennes også) 0.5 poeng for hver korrekt plassering av lagene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved et pneumotoraks legges et toraksdren oppover og ved et hematotoraks nedover </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Toraksdrenet ved en pneumotoraks skal ligge øverst i lungehulen. Det er samme området hvor apex av lungen ligger. Hva heter dette område? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cupula (pleuræ) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Cupula </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Da det ble påvist høyresidig trykkpneumotoraks ble det sett forskyving av hjerte mot venstre på røntgen toraks. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter den delen av torakshulen som inneholder hjerte og de store kar? Kan du beskrive inndelingen av de forskjellige delene denne delen av torakshulen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den delen av torakshulen heter mediastinum. Mediastinum er delt inn i en mediastinum superius og inferius. Mediastinum inferius er delt inn i mediastinum anterius, mediastinum medium og mediastinum posterius. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Mediastinum 1 poeng * Riktig benevning i superius og inferius 1 poeng * Riktig inndeling av mediastinum inferius 1 poeng * Terminologi hvor andre inklinasjoner er brukt godkjennes (f.eks. superior, inferior, fremre, øvre og bakre). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gjennom mediastinum går det to store nerver. En er den tiende hjernenerve mens den andre kommer fra rami anterior av nervus cervicales III-V. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter disse to nervene og beskriv beliggenhet i forhold til hverandre i høyde med lungehilus? Beskriv hvilke strukturer disse to nervene hovedsakelig innerverer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nervus vagus er den tiende hjernenerve, mens nervus phrenicus kommer fra nervus cervicales III-V. Nervus vagus ligger baktil lungehilum mens nervus phrenicus ligger foran. Nervus vagus innerver de fleste organer i kroppen vår (hjerte, lungene og indre organer. Nervus phrenicus innerverer diaphragma </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Riktig navn på hver nerve (0.5 poeng hver) * Riktig beliggenhet på hver nerve (0.5 poeng hver) * Riktig innervasjon av struktur på hver nerve (0.5 poeng hver) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du renser en torsk du har fanget selv. Dessverre skjærer du deg på fingeren. Det blør litt </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv et umiddelbart tiltak for å stoppe blødningen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kompresjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1p. Bare rett svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet stimulerer til dannelse av plateplugg. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Trombocyttene benytter integrinkompleksene gp Ia-IIa og gp I-V-IX på celleoverflaten for å adherere til stroma (bindevevet rundt blodåren). Hvilke proteiner binder disse integrinkompleksene til? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Kollagen binder gpIa-IIa * gpI-gpV-gpIX komplekset binder von Willebrand faktor (vWF) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kollagen 1p + vWF 1p hver, dvs til sammen maks 2p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet starter koagulasjonsfaktorsystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tissue factor (TF, vevsfaktor) bidrar til å starte koagulasjonskaskaden. Hvor lages TF og hvilket molekyl danner kompleks med TF for å spalte FX til FXa? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> TF syntetiseres i stromale celler som omgir blodkarene (f.eks fibroblaster). FVII er partner til TF </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Stromale celler eller fibroblaster gir 1p * FVIIa 1p. FVII er også akseptabelt * Totalt max 2p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det dannes nå en plateplugg </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar i korte trekk hvordan platepluggen dannes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # aggregasjon (via gpIIb-IIIa-komplekset) # aktivering (archidonsyre metabolitter (prostaglandiner, tromboxan) ADP trombin) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Aggregasjon og aktivering gir 1 p hver * gpIIb-IIIa, ADP, trombin, prostaglandiner eller tromboxan gir alle 0.5 p * Totalt 3 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Platehemmere er vanlige legemidler </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan virker acetylsalicylsyre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hemmer prostaglandinsyntese via hemming av cykloxygenase (COX) -1 og -2) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar gir 1p – Både hemming av COX, produksjon av tromboxan eller prostaglandiner er godt nok svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Trombin er den store dirigenten i koagulasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken koagulasjonsfaktor hemmes av koagulasjonshemmerkomplekset av protein C og S? Denne mekanismen reduserer dannelsen av trombin. Hvilket enzym spalter fibrin til d-dimerer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # FVa (FV er akseptabelt også) # Plasmin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert svar gir 0.5p Maks 1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det finnes to hovedtyper celler, prokaryote og eukaryote </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi minst fire forskjeller mellom prokaryote og humane eukaryote celler. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * De fleste humane eukaryote celler har cellekjerne * Humane eukaryote celler er ofte større enn prokaryote celler * Enkelte prokaryote celler har en cellevegg i tillegg til cellemembranen * Humane eukaryote celler har organeller * DNA er lineært i cellekjernen i humane eukaryote celler. I prokaryote celler er DNA sirkulært. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha nevnt 4 forskjeller for å få 2 poeng. 0.5 poeng for hver rette. Maks 2 poeng på oppgaven. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Sykdommen Progeria skyldes en mutasjon i genet som koder for lamin A. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil dette kunne påvirke cellene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lamin A er en type intermediært filament, som sammen med lamin B1, B2 og C danner kjernelamina, som er et nettverk som ligger under kjernemembranen og støtter opp denne. Svekket kjernelamina gir en mer ustabil kjernembran, og økt risiko for feil under celledeling og økt celledød. Cellene hos pasienter med progeria vil typisk kunne ha deformert kjernemembran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> At kjernemembranen vil kunne være deformert, eller andre resonnement som knytter lamin A til funksjon i kjernelamina. Bør nevne ustabil kjernemembran og svekket kjernelamina for å få 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Immunceller vil kunne indusere apoptose i en målcelle (infisert celle, tumorcelle). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hvordan dette skjer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Immunceller utrykker ligander i TNF-familien (feks. Fas-ligand) som kan binde til og aktivere dødsreseptorer» på infiserte celler/tumorceller. Dødsreseptorer (feks. Fas) har alle et såkalt dødsdomene som ved aktivering vil føre til danning av et dødsinduserende signalkompleks (DISC). Dette fører til spalting og aktivering av initiator-caspaser (typisk caspase 8) som vil sette i gang en kaskadereaksjon og aktivering av effektor-caspase 3. Effektor caspaser vil spalte viktige cellulære proteiner som feks anti-apoptotiske proteiner, cytoskjelettet, inibitor av DNAse osv, som vil føre til celledød. Denne type apoptose kalles for også for den «eksterne vei» til apoptose </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Type apoptose: Dødsreseptor/ekstern signalvei til apoptose * TNF-familie reseptorer/ligander * DISC * Aktivering av caspaser * Initiator caspase, effektor caspase * Spalting av viktige cellulære proteiner Minst 2 av punktene over for 2 poeng, 1av punktene for 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil en mangel på makrofager eller andre fagocyterende celler føre til i situasjonen beskrevet ovenfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Apoptotiske celler vil vanligvis gjenkjennes av fagocyterende celler som makrofager som vil fjerne de døde cellene. Mangel på makrofager/fagocytter og vil føre til et «hav» av døde celler i vev som ikke vil bli fjernet, noe som vil kunne føre til en betennelsesreaksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Beskrive at det vil føre til opphoping av apoptotiske celler i vev (2 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skiller apoptotisk og nekrotisk celledød? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved nekrose sveller cellene, og plasmamembranen går i stykker. Cellens innhold lekker ut i omgivelsene og tiltrekker seg betennelsesceller. Ved apoptose vil cellen skrumpe, kjernen kondenseres, DNA fragmenteres og cellefragmenter vil pakkes i små «pakker» kalt apoptotiske legemer (apoptotic bodies). Cellemembranen er intakt gjennom hele prosessen. Celleinnholdet vil derfor ikke slippes ut i omkringliggende vev, og betennelsesceller vil ikke tiltrekkes. En annen årsak til at det ikke blir betennelse ved apoptose, er at apoptotiske celler gjenkjennes (via fosfatidylserin på celleoverflaten) og fagocyteres av makrofager. Dermed forsvinner den døde cellen fra vevet, og betennelse forhindres. Ved fagocytose av apoptotiske celler skilles det også ut anti-inflammatoriske cytokiner som feks TGFb og IL-10 som vil bidra til å hindre en immunreaksjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha med: * frigjøring av celleinnhold ved nekrose, ikke ved apoptose * betennelse vs ikke betennelse * fagocytose av apoptotiske celler 3 av punktene gir 2 poeng, 1-2 av punktene gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 52 år gammel kvinne kommer med ambulanse til skadepoliklinikken kl. 02.30. En time tidligere hadde hun sklidd på den islagt verandaen da hun skulle ut å se på stjernene. Hun holdt seg fast i gelenderet da hun falt. Hun fikk først en vridning i venstre arm og slo deretter armen i bakken. Hun har nå sterke smerter i venstre skulder og overarm. Ved ankomst til sykehuset blir det gjennomført bildediagnostikk. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Se på bilde 1. Hvilken type radiologisk undersøkelse er gjennomført, og hvilke(t) skjelettavvik foreligger? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er gjennomført røntgen av venstre overarm og skulder. Det foreligger en fraktur (mer presist en tverrfraktur) i midtre del av humerus, samt en fraktur i proksimale humerus. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å angi at det er gjennomført røntgen. 0.5 poeng for angivelse av hver aktuelle fraktur </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det blir besluttet at pasienten skal opereres, og ortopeden ønsker mer omfattende og detaljerte bilder av pasientens skader som ledd i operasjonsplanleggingen. Det blir gjennomført en ny radiologisk undersøkelse. Se bilde 2 og bilde 3. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hovedprinsippet bak bildedannelse ved hjelp av denne type bildeundersøkelse, og kan du beskrive to fordeler med og en potensielt skadelig effekt av undersøkelsen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved computertomografi (CT) ligger pasienten inne i en maskin, omgitt av en roterende bue. På denne buen står det på den ene siden et røntgenrør, og på motsatt side er det montert en røntgenstråle-detektor. Når buen står i en posisjon, vil røntgenstråler sendes inn mot pasientens kropp. Noen av røntgenstrålene blir absorbert i pasienten. Dette skjer i større grad i de områdene av pasienten som er røntgentette (områder med mye og tettpakkede eller store atomer, som for eksempel kalkholdig skjelett). De fleste av de resterende røntgenstrålene passerer gjennom kroppen, og treffer detektoren som er plassert på den andre siden. Når røret står i en bestemt posisjon, vil det tredimensjonale volumet som kroppen representerer bli registrert som et 2-dimensjonelt bilde. Dette bildet kalles et tomogram. Ved CT roterer buen med rør og detektor rundt pasienten, og gjør røntgenregistreringer/tar bildeopptak i mange ulike retninger. Basert på de mange ulike registreringene/bildeopptakene, kan man ved hjelp av datamaskiner (derav computerized) regne seg frem til tettheten til vevet inne i det tredimensjonale volumenet som kroppen representerer. Fordeler med CT er at undersøkelsen kan gjennomføres raskt, og gir derfor informasjon om mye volum på kort tid. CT kan gi samtidig informasjon om både bløtvev, blodårer og skjelett. Videre er CT smertefri og ikke-invasiv, og gir bildefremstilling med høy oppløsning. I tillegg kan bildene rekonstrueres til alle ønskelige plan. CT benytter seg av røntgenstråler, som har ioniserende egenskaper. Med dette menes at røntgenstrålene har evnen til å slå elektroner ut av sine skall/orbitaler, og skaper et ion. Molekyler som er ioniske har større reaksjonsevne med andre atomer/molekyler, og hvis det dannes ioner i DNA, kan dette medføre mutasjoner, som igjen kan være kreftfremkallende. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å beskrive at CT benytter seg av et roterende apparat med røntgenrør og detektor. 0.5 poeng for å beskrive at det tas bilder i mange ulike retninger, og at dette kan benyttes til å regne ut og lage bilder av hva som befinner seg inne i kroppen (computerized tomography eller computertomografi). 0.5 poeng for å nevne en fordel med CT, 1 poeng for å nevne to fordeler. 1 poeng for å forklare at CT benytter røntgenstråler som er ioniserende stråling med potensiell skadelig effekt. Maks 2.5 poeng. Dersom studenten velger feil modalitet gis det ingen poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten blir operert. To dager senere får hun sterke smerter i øvre del av magen, og blir innlagt på sykehuset igjen. Legen i mottaket ønsker å utelukke at smertene skyldes en blødning fra en skade i lever. Det blir gjennomført både MR- og CT-avbildning, se bilde 4 og 5. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket bilde er tatt med henholdsvis CT og MR? Kan du tenke deg hvorfor det ene bildet er så mye mer uklart enn det andre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bilde 4 er et MR-bilde, og bilde 5 er et CT-bilde. På CT er skjelettstrukturer hvite, og fettvev (som for eksempel subkutant vev) er mørkt. På MR blir kortikalt beinvev (som inneholder mye kalk og få hydrogenatomer) stort sett sort på alle sekvenser, og fett blir lyst på både vanlige T1- og T2-sekvenser. CT-undersøkelse gjennomføres raskt, opptaket over abdomen er gjort i løpet av få sekunder. MR-undersøkelse tar lang tid, mange sekvenser kan ta flere minutter. For å unngå artefakter fra bevegelser, som for eksempel pustebevegelser, kan det gjennomføres relativt raske sekvenser hvor pusten holdes. Alternativt kan det tas multiple delbildeopptak kun i samme del av respirasjonen, som settes sammen til et helt bilde. Årsaken til at MR-bildet er mer uklart enn CT-bildet, er derfor at bildeopptak med MR tar lang tid, hvilket øker sjansen for bevegelsesartefakter (i dette tilfellet forårsaket av pusting/bevegelse av diafragma). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for korrekt angivelse av MR- og CT-bilder. 1 poeng for å angi at bildeopptak med MR tar mye lengre tid enn opptak ved CT, og at dette disponerer for bevegelsesartefakter. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Se på bilde 6. Hvilke anatomiske strukturer er det satt piler på? Benevningen strekker seg fra A-F. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * A: Lever * B: Milt * C: Aorta (i avgangen av truncus cøliacus) * D: Magesekk, ventrikkelen * E: Nyre * F: Vena cava inferior </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1/4 poeng for hvert riktige svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar prinsippet bak avbildning med magnetisk resonans (på maks 300 ord). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MR-bilder skapes ved å manipulere kjernen til hydrogenatomer (=protoner). Et proton er positivt ladet, og har et egenspinn omkring egen akse. Elektrisitet i rotasjon gir magnetisme, og derfor kan et proton oppfattes som en liten stavmagnet. Vann og fett inneholder mye protoner, og menneskekroppen inneholder mye av begge disse substansene. Protoner i kroppen (og for så vidt for øvrig) har magnetisk vektor som er tilfeldig orientert. De mange protonene som befinner seg i et bestemt volum vil ha ulike magnetiske vektorer, slik at summen av vektorene (resultatvektoren) vil være 0. Hvis en legger et volum i et eksternt magnetfelt (som en MRmaskin har), vil de enkelte protonene rette sitt magnetfelt inn parallelt eller antiparallelt med det eksterne magnetfeltet. Det vil være en liten overvekt av protoner som stiller seg inn parallelt, og resultatvektoren av disse vil derfor være rettet parallelt. I tillegg til å ha et egenspinn, slingrer også den roterende aksen til protonene, med en såkalt presesjon. Denne presesjonen har for protoner en bestemt frekvens som korrelerer med feltstyrken til det eksterne magnetiske feltet. Ved 1,5 tesla er denne frekvensen 63,8 MHz. Den magnetiske resultatvektoren av de parallelle protonene i et magnetfelt er fryktelig liten i forhold til det eksterne magnetfeltet, og derfor ikke målbart. Hvis en kunne bikket vektoren ut fra denne retningen, til en retning 90 grader på magnetfeltet, kunne man imidlertid ved hjelp av en coil registrert de roterende magnetiske protonene og fått signaler som en kunne lagd et bilde av. Det er her begrepet resonans i «magnetisk resonans» kommer inn. Hvis en sender inn en radiofrekvenspuls som har samme frekvens som presesjonsfrekvensen (63,8 MHz ved 1,5 tesla), vil en bikke den magnetiske vektoren til protonene fra parallell retning til etter hvert 90 grader på parallell retning. En måler da i dette planet, kjent som transversalplanet, roterende magnetisme, som er det samme som elektrisitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ poeng for å ha med at protoner brukes til bildedannelse, og at protonene er magnetiske. Begge deler må være med. * ½ poeng for å ha med at protonene orienteres i samme retning som et eksternt magnetfelt. * ½ poeng for å beskrive fenomenet presesjon og at denne kan påvirkes av en resonnerende radiofrekvenspuls. Begge deler må være med. * ½ poeng for å beskrive at signalene til de roterende protonene kan måles i transversalplanet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 45 år gammel mann som malte huset sitt falt 3 meter ned fra en stige. Han er tungpustet og har brystsmerter. På røntgen ses forandringer forenlig med høyresidig trykkpneumotoraks, med forskyving av hjerte mot venstre side. Dette må avlastes ved å legge inn et toraksdren. Ved innleggelse av toraksdrenet skal man ta høyde for nerver, kar og årer mellom ribbein (den nevrovaskulære intercostale bunt). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du beskrive hvor den neurovaskulære intercostale bunt ligger i forhold til ribbein og rygg, samt hvordan nerver, arterier og vener ligger i forhold til hverandre. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den nevrovaskulære bunt ligger under hver costa. Derfor skal et toraksdren føres inn over costa. Øverst på den nevrovaskulære bunt ligger vena intercostalis, nedenfor der ligger arteria intercostalis og så nervus intercostalis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for korrekt beliggenhet og i forhold til hverandre, * 0.5 poeng for korrekt beliggenhet * 0.5 poeng for beliggenhet i forhold til hverandre. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når mann legge inn et toraksdren er det viktig å være sikker på at man er i torakshulen. Derfor sjekker man med en finger om man har gått gjennom det innerste lag på toraksveggen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket lag er innerst på toraksveggen og hvilket lag omgir lungene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pleura parietalis ligger innerst på toraksveggen Pleura visceralis omgir lungene </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1.0 poeng for hvert korrekt navn på lagene (pleura parietalis og visceralis). (Pars cervicalis av parietalis godkjennes også) 0.5 poeng for hver korrekt plassering av lagene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved et pneumotoraks legges et toraksdren oppover og ved et hematotoraks nedover. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Toraksdrenet ved en pneumotoraks skal ligge øverst i lungehulen. Det er samme området hvor apex av lungen ligger. Hva heter dette område? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cupula (pleuræ) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Cupula </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Da det ble påvist høyresidig trykkpneumotoraks ble det sett forskyving av hjerte mot venstre på røntgen toraks </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter den delen av torakshulen som inneholder hjerte og de store kar? Kan du beskrive inndelingen av de forskjellige delene denne delen av torakshulen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den delen av torakshulen heter mediastinum. Mediastinum er delt inn i en mediastinum superius og inferius. Mediastinum inferius er delt inn i mediastinum anterius, mediastinum medium og mediastinum posterius. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Mediastinum 1 poeng Riktig benevning i superius og inferius 1 poeng Riktig inndeling av mediastinum inferius 1 poeng Terminologi hvor andre inklinasjoner er brukt godkjennes (f.eks. superior, inferior, fremre, øvre og bakre). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gjennom mediastinum går det to store nerver. En er den tiende hjernenerve mens den andre kommer fra rami anterior av nervus cervicales III-V </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter disse to nervene og beskriv beliggenhet i forhold til hverandre i høyde med lungehilus? Beskriv hvilke strukturer disse to nervene hovedsakelig innerverer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nervus vagus er den tiende hjernenerve, mens nervus phrenicus kommer fra nervus cervicales III-V. Nervus vagus ligger baktil lungehilum mens nervus phrenicus ligger foran. Nervus vagus innerver de fleste organer i kroppen vår (hjerte, lungene og indre organer. Nervus phrenicus innerverer diaphragma </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig navn på hver nerve (0.5 poeng hver) Riktig beliggenhet på hver nerve (0.5 poeng hver) Riktig innervasjon av struktur på hver nerve (0.5 poeng hver) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du renser en torsk du har fanget selv. Dessverre skjærer du deg på fingeren. Det blør litt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv et umiddelbart tiltak for å stoppe blødningen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kompresjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1p. Bare rett svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet stimulerer til dannelse av plateplugg. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Trombocyttene benytter integrinkompleksene gp Ia-IIa og gp I-V-IX på celleoverflaten for å adherere til stroma (bindevevet rundt blodåren). Hvilke proteiner binder disse integrinkompleksene til? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kollagen binder gpIa-IIa gpI-gpV-gpIX komplekset binder von Willebrand faktor (vWF) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kollagen 1p + vWF 1p hver, dvs til sammen maks 2p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vaskulær diskontinuitet starter koagulasjonsfaktorsystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tissue factor (TF, vevsfaktor) bidrar til å starte koagulasjonskaskaden. Hvor lages TF og hvilket molekyl danner kompleks med TF for å spalte FX til FXa? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> TF syntetiseres i stromale celler som omgir blodkarene (f.eks fibroblaster) FVII er partner til TF </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Stromale celler eller fibroblaster gir 1p FVIIa 1p. FVII er også akseptabelt Totalt max 2p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det dannes nå en plateplugg </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar i korte trekk hvordan platepluggen dannes </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # aggregasjon (via gpIIb-IIIa-komplekset) # aktivering (archidonsyre metabolitter (prostaglandiner, tromboxan) ADP trombin) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Aggregasjon og aktivering gir 1 p hver gpIIb-IIIa, ADP, trombin, prostaglandiner eller tromboxan gir alle 0.5 p Totalt 3 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Platehemmere er vanlige legemidler </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan virker acetylsalicylsyre? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hemmer prostaglandinsyntese via hemming av cykloxygenase (COX) -1 og -2 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar gir 1p – Både hemming av COX, produksjon av tromboxan eller prostaglandiner er godt nok svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Trombin er den store dirigenten i koagulasjonen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken koagulasjonsfaktor hemmes av koagulasjonshemmerkomplekset av protein C og S? Denne mekanismen reduserer dannelsen av trombin. Hvilket enzym spalter fibrin til d-dimerer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # FVa (FV er akseptabelt også) # Plasmin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert svar gir 0.5p Maks 1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det finnes to hovedtyper celler, prokaryote og eukaryote </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi minst fire forskjeller mellom prokaryote og humane eukaryote celler </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * De fleste humane eukaryote celler har cellekjerne * Humane eukaryote celler er ofte større enn prokaryote celler * Enkelte prokaryote celler har en cellevegg i tillegg til cellemembranen * Humane eukaryote celler har organeller * DNA er lineært i cellekjernen i humane eukaryote celler. I prokaryote celler er DNA sirkulært. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha nevnt 4 forskjeller for å få 2 poeng. 0.5 poeng for hver rette. Maks 2 poeng på oppgaven </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Sykdommen Progeria skyldes en mutasjon i genet som koder for lamin A. Hvordan vil dette kunne påvirke cellene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lamin A er en type intermediært filament, som sammen med lamin B1, B2 og C danner kjernelamina, som er et nettverk som ligger under kjernemembranen og støtter opp denne. Svekket kjernelamina gir en mer ustabil kjernembran, og økt risiko for feil under celledeling og økt celledød. Cellene hos pasienter med progeria vil typisk kunne ha deformert kjernemembran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> At kjernemembranen vil kunne være deformert, eller andre resonnement som knytter lamin A til funksjon i kjernelamina Bør nevne ustabil kjernemembran og svekket kjernelamina for å få 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Immunceller vil kunne indusere apoptose i en målcelle (infisert celle, tumorcelle). Forklar kort hvordan dette skjer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Immunceller utrykker ligander i TNF-familien (feks. Fas-ligand) som kan binde til og aktivere «dødsreseptorer» på infiserte celler/tumorceller. Dødsreseptorer (feks. Fas) har alle et såkalt døds-domene som ved aktivering vil føre til danning av et dødsinduserende signalkompleks (DISC). Dette fører til spalting og aktivering av initiator-caspaser (typisk caspase 8) som vil sette i gang en kaskadereaksjon og aktivering av effektor-caspase 3. Effektor caspaser vil spalte viktige cellulære proteiner som feks anti-apoptotiske proteiner, cytoskjelettet, inibitor av DNAse osv, som vil føre til celledød. Denne type apoptose kalles for også for den «eksterne vei» til apoptose </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Type apoptose: Dødsreseptor/ekstern signalvei til apoptose * TNF-familie reseptorer/ligander * DISC * Aktivering av caspaser * Initiator caspase, effektor caspase * Spalting av viktige cellulære proteiner Minst 2 av punktene over for 2 poeng, 1 av punktene for 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil en mangel på makrofager eller andre fagocyterende celler føre til i situasjonen beskrevet ovenfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Apoptotiske celler vil vanligvis gjenkjennes av fagocyterende celler som makrofager som vil fjerne de døde cellene. Mangel på makrofager/fagocytter og vil føre til et «hav» av døde celler i vev som ikke vil bli fjernet, noe som vil kunne føre til en betennelsesreaksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Beskrive at det vil føre til opphoping av apoptotiske celler i vev (2 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skiller apoptotisk og nekrotisk celledød? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved nekrose sveller cellene, og plasmamembranen går i stykker. Cellens innhold lekker ut i omgivelsene og tiltrekker seg betennelsesceller. Ved apoptose vil cellen skrumpe, kjernen kondenseres, DNA fragmenteres og cellefragmenter vil pakkes i små «pakker» kalt apoptotiske legemer (apoptotic bodies). Cellemembranen er intakt gjennom hele prosessen. Celleinnholdet vil derfor ikke slippes ut i omkringliggende vev, og betennelsesceller vil ikke tiltrekkes. En annen årsak til at det ikke blir betennelse ved apoptose, er at apoptotiske celler gjenkjennes (via fosfatidylserin på celleoverflaten) og fagocyteres av makrofager. Dermed forsvinner den døde cellen fra vevet, og betennelse forhindres. Ved fagocytose av apoptotiske celler skilles det også ut anti-inflammatoriske cytokiner som feks TGFb og IL-10 som vil bidra til å hindre en immunreaksjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha med: * frigjøring av celleinnhold ved nekrose, ikke ved apoptose * betennelse vs ikke betennelse * fagocytose av apoptotiske celler 3 av punktene gir 2 poeng, 1 -2 av punktene gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Under ser du et bilde av overgangen mellom tynntarmen og tykktarmen. <<imgLink "IAB-2022-1-A.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) 1: Hvilken del av tykktarmen ser vi på bildet? 2: Kan du angi navnet på strukturene som de angitte bokstavene peker på? * A: * B: * C: * D: * E: (Hvert delsvar gir 0,25 poeng, maks. 1,5 poeng). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * 1: Cøkum (ileocøkalovergangen godtas også) * 2A: Valva ileocoecalis (Bauhins klaff, ileocøkalklaffen) * 2B: Ileum (terminale ileum) * 2C: Appendixostiet, åpningen til appendix godtas også * 2D: Appendix vermiformis (blindtarmsvedhenget, blindtarmen) * 2E: Tenia coli (tenia libra) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0,25 poeng, maks. 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved blindtarmsvedhenget forenes de tre muskellagene som ligger som bånd utenpå tarmoverflaten </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Disse båndene er ett av de tre kjennetegnene til colon. Hva heter disse båndene, og hvilke to andre kjennetegn til colon finnes? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Tænia coli * Haustra coli * Appendices epiploicæ På utsiden har den tre langsgående bånd (taenia coli) av glatt muskulatur, samt innsnøringer (haustra coli) av tversgående ringmuskulatur, noe som gir tykktarmen et bobleaktig utseende. Mellom 'boblene' og muskelbåndene er det større eller mindre ansamlinger av fett (appendices epiploicae). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig delsvar, totalt 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Colon er delt opp i flere avsnitt som hver har sitt eget anatomiske navn </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er navnene til de forskjellige tykktarmsavsnittene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Coecum (blindtarm) * Colon ascendens (oppadstigende tykktarm) * Colon transversum (tverrdelen av tykktarm) * Colon descendens (oppadstigende tykktarm) * Colon sigmoideum (S-formede delen, gresk S av Sigma) * Rectum (endetarmen) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å nevne inntil fire av disse. Maks 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Noen av tykktarmsavsnittene ligger retroperitonealt (bak bukhinnen) og noen andre ligger intraperitoneal (omgitt av bukhinnen). De avsnittene som ligger intraperitonealt har et egen mesocolon (krøs). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke avsnitt ligger intraperitonealt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er i hovedsak colon transversum og colon sigmoideum som har et eget mesocolon / krøs og dermed ligger intraperitonealt. Appenidx vermiformis er også lokalisert intraperitonealt, noe som er lett å glemme. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,75 poeng for hvert delsvar av transversum og sigmoideum. Ytterligere 0,5 poeng for å nevne appendix vermiformis. Maks. 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Peritoneum (bukhinnen) beskrives som en lukket pose som har mye til felles med pleura og pericard. Hva er navnet på de to forskjellige peritoneumlagene. Et lag dekker bukveggen og et lag som dekker bukorganene </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er navnene til disse lagene? Hvilket dekker bukorganene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> //Peritoneum parietalis// og //peritoneum visceralis// </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert lag av peritoneum. 0,5 poeng for å angi visceralis som dekker bukorganene. Til sammen 0,5 poeng for hvert riktige delsvar, maks 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Under leveren er det en sving i tykktarmen ved navn //Flexura coli dextra// </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket tarmavsnitt ligger dorsalt for colon i dette området? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Duodenum </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Totalt 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blodforsyning til tykktarm forsynes av to abdominale hovedgrener fra aorta abdominalis. Embryologisk består nemlig tykktarmen av både midttarm og baktarm. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hovedgrener er dette, og hvor går skillet mellom midttarm og baktarm? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den embyologiske midttarm forsynes av arteria mesenterica superior (øvre krøsarterien) og baktarm forsynes av a.- mesenterica inferior (nedre krøsarterien). Skille mellom disse er frem til flexura coli sinistra </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hver arterie, maks 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Lipider er en viktig klasse av organiske stoffer i mennesket, i tillegg til hovedklassene proteiner og karbohydrater </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hovedklasser kan lipider deles inn i? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> "Organiske stoffer som er løselige i upolare løsemidler" * Fettsyrer CH3-(CH2)n-COOH - plasma * Fettsyrer koblet til sukkermolekyler (glyserider) - fettvev * Fettsyrer koblet til fosfatforbindelser (fosfolipider) - cellemembraner * Steroler – aromatiske forbindelser (ringstrukturer) som kolesterol </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fettsyrer (0,5), triglyserider (0,5), fosfolipider (0,5), steroler (0,5). Det er også ok å si kolesterol om steroler, selv om steroler er bredere og inkluderer testosteron/østradiol/progesteron/aldosteron/m.fl </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fettstoffer er en viktig del av maten. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan tas fett opp fra maten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fettstoffer som triglyserider tas opp i tarmen. Gallesalter skilles ut fra galleblæra, og gallesaltene løser opp fett i mindre strukturer kalt miceller. Triglyseridene brytes ned til frie fettsyrer og monoglyserider, som tas opp av enterocytter i tarmveggen. I enterocyttene settes fettsyrer og monoglyserider sammen til triglyserider, og transporteres videre med blodbanen i lipoproteiner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Gallesalter (0,5), miceller (0,5), triglyserider (0,5), lipoproteiner (0,5). Om studenten har skjønt poenget er det ok om navnet ikke er brukt, f.eks ‘micelle’ må ikke være eksplisitt nevnt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En medisinstudent har gjennom en langvarig eksamensperiode spist brownies flere ganger i uka, og nå når eksamen er unnagjort er det også dessverre klart at vedkommende må gjøre noen livsstilsendringer. Rett etter avlagt eksamen henter derfor studenten fram igjen læreboka om lipidmetabolisme </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er ketogen, og hvordan kan slik diett bidra til fettvevsreduksjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ketogen diett er diett med svært lavt inntak av karbohydrat. Kroppen sikrer raske energikilder i blodbanen for bl.a hjernen, som ikke kan forbrenne fettsyrer, ved å holde et visst blodsukkernivå. Glukose kan ikke produseres direkte fra fettsyrer. Dersom karbohydratinntak er lavt over tid, slik at glykogenlagrene tømmes, vil kroppen måtte starte fettforbrenning og produsere ketoner, og dette er en måte å tvinge fram kontinuerlig fettforbrenning. Det bemerkes at akkurat denne medisinstudenten valgte å satse på regelmessig aktivitet og mindre brownies, og det gikk fint </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ketogenese som respons på lavt inntak karbohydrat (1 poeng), ketogenese gir direkte fettforbrenning (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er på sommerferie og blir spurt av dine besteforeldre, som lurer på om de kan smake forskjell på godt og dårlig kolesterol </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er godt og dårlig kolesterol, og hvorfor brukes disse navnene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Godt og dårlig kolesterol er folkelige ord for å beskrive intrikat biokjemi. I blodbanenen transporteres kolesterol sammen med andre lipider i lipoproteiner. Lipoproteinene navngis etter tettheten, fra ‘veldig lav tetthets lipoproteiner’ til ‘høy tetthets lipoproteiner’, på engelsk brukes forkortelsene VLDL (very low density lipoprotein), LDL (low), IDL (intermediate), og HDL (high). Kolsterol transporteres til perifert vev ved VLDL, IDL, LDL, og fra vev til lever ved HDL. Kolesterol som måles i blodet bundet i HDL-partikler kalles ‘godt kolesterol’, mot non-HDL-kolesterol som kan kalles ‘dårlig kolesterol’. Høy verdi av HDL-kolesterol beskytter mot hjerteinfarkt og hjerneslag. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> HDL og non-HDL-kolesterol (1 poeng), sammenheng med karsykdom og kolesterol (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vinett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det viktigste hastighetsbegrensende enzymet i kolesterolsyntese, og hvilke medisiner brukes for å hemme kolesterolsyntesen ved å virke på dette enzymet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> HMG CoA reductase, eller 3-hydroxy-3-metylglutarly coenzym A reduktase. Statiner virker ved å hemme enzymet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> HMG CoA reductase (1 poeng), statiner (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du har så lenge du kan huske «hatt noe med magen» og vært plaget med oppblåsthet og romling, smerter og løs vandig avføring. Du merker at det har sammenheng med hva du spiser, og melkeprodukter er en av de tingene som gjør det spesielt ille. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan laktose fordøyes og absorberes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alle karbohydrater må spaltes til monosakkarid for absorpsjon. Disakkaridet laktose spaltes til sine komponenter glukose og galaktose av enzymet laktase, som ligger i mikrovilli / brush border av tynntarmsepitelet. Både glukose og galaktose fraktes over den apikale enterocyttmembranen via et bærerprotein («glukose carrier») som også tar med seg et Na+ ion samme vei (glukose-Na+ symporter), dvs ned den elektrokjemiske gradienten til Na+. Det er en form for aktiv transport (sekundær aktiv transport) som bruker energien fra å frakte Na+ med sin gradient til å ta med seg glukose/galaktose. Både glukose og galaktose går ut av den basolaterale membranen av enterocyttene ved fasilitert transport ned sin osmotiske gradient gjennom et bærerprotein (GLUT2). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Disakkaridet laktose spaltes av enzymet laktase i tynntarmsepiteles brush border til sine enheter glukose og galaktose – 0,75p Monosakkaridene glukose og galaktose fraktes inn i enterocyttene via sekundær aktiv transport med Na+ og ut av enterocyttene ved fasilitert transport ned sin osmotiske gradient (GLUT2 kanal) – 0,75p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Laktose som passerer til tykktarmen vil kunne gi diare. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor det skjer, basert på det du vet om hvordan vann i hovedsak blir absorbert i tarmen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vann er ikke aktivt absorbert over tarmveggen, men beveger seg i all hovedsak passivt mellom celler (paracellulær vei) sekundært til osmotiske krefter som skapes av transport av molekyler over tarmveggen dvs elektrolytter og næringsstoffer. Absorpsjon av andre stoffer gir altså konsentrasjonsgradienter (osmotiske gradienter), sånn at vann strømmer fra der det er lav konsentrasjon til der det er høy konsentrasjon av andre stoffer. Netto retning på vannstrømmen er avhengig av forskjellen på osmolaritet på det som er i lumen mot det som er interstitielt/i blodet. Normalt har det aller meste av næringsstoffer, inkludert laktose, blitt fordøyd og absorbert i øvre del av tynntarmen og konsentrasjonen videre distalt er lav. Dersom laktose likevel passerer nedover vil det gi høy konsentrasjon og ved osmotiske krefter trekke vann inn i tarmlumen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vann absorberes ikke aktivt i tarmen, men beveges passivt paracellulært sekundært til osmotiske krefter som oppstår når absorpsjon av næringsstoffer og elektrolytter gir lavere konsentrasjon av disse inni lumen enn utenfor – 0,75p Laktose fordøyes og absorberes normalt i tynntarm, hvis det likevel passerer videre til tykktarm vil det gi mye høyere konsentrasjon av dette i lumen enn det normalt skal være, slik at vann trekkes ut i lumen og gir vandig avføring – 0,75p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er det som gjør at motiliteten i tarmen øker ved denne tilstanden? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Økt volum og distensjon av lumen i tarmen vil stimulere til økt motilitet. Når laktose binder vann, vil volumet og fekalmassen øke og dermed også motiliteten øke. Dette er det samme prinsippet som benyttes av både volumøkende midler og osmotiske virkende midler mot forstoppelse, som består av naturlige polysakkarid fibre eller kunstige disakkarider. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Laktose «binder» vann/drar til seg vann slik at volum/massen i tarmen øker – 0,5p Økt volum/masse i tarmen stimulerer til økt motilitet – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hva peristaltikk og segmentering i tarmen er, og hvilken funksjon de har. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Peristaltikk'' er organisert framdrift av innholdet i tarmen fra ett sted til et annet via kontraksjon. Det foregår ved bølger av muskulære kontraksjoner som beveger seg langs lengden av kanalen. Bak (proksimalt for) materialet som skal flyttes kontraherer det sirkulære muskellaget og det longitudinale laget relakserer, samtidig som tarmen foran (distalt for) det som skal flyttes klargjøres for å ta imot ved at det longitudinale muskellaget kontraherer og det sirkulære relakserer. ''Segmentering'' er sirkulære kontraksjoner vekslende med relaksasjoner i løpet av sekunder som dytter føden fram og tilbake og på den måten elter og blander den. Dette styres av programmer og reflekssløyfer i ENS, stor grad av antroduodenal koordinasjon ettersom åpning av pylorus og tømming av ventrikkelen. Begge bevegelsesmønstrene er typisk under/etter måltid </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Peristaltikk er en type motilitet der koordinerte kontraksjoner i de sirkulære og longitudinelle muskellagene som gir fremdrift av innholdet i tarmen og beveger det fra ett sted til et annet – 0,75p Segmentering er en type motilitet der vekslende kontraksjoner og relaksasjoner i det sirkulære muskellaget gir bevegelser som blander/mikser/elter innholdet i tarmen – 0,75p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du går til lege og undersøkelse viser at du også har anemi som sannsynligvis skyldes malabsorpsjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort i hvilken form jern finnes i kosten og hva det er som påvirker og regulerer mengden som absorberes fra en normal tarm </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Effektiviteten i opptaket av jern i tarmen er i prinsippet avhengig av tre ting: 1. ''Kostens innhold av jern''. I kosten finnes jern hovedsakelig (ca 90%) som treverdig jern (hydroksider, Fe3+) bundet til ulike organiske molekyler, typisk i planter og melkeprodukter. I tillegg finnes det som heme-jern (ca 10 %), bundet til globiner typisk i kjøtt. Absorpsjon av jern er i utgangspunktet relativt lite effektiv og utgjør kun en liten andel (ca 10%) av det totale jerninnholdet i kosten. Heme-jern spaltes fra globinet i magesekken og tas effektivt opp i enterocytter via en spesifikk hemetransporter. Man vet minst om opptak av heme-jern, og selv om det opptaket er mest effektivt, utgjør ikkeheme-jern hovedtyngden. 2. ''Kostens sammensetning for øvrig og innhold av såkalte kostfaktorer''. Treverdig jernhydroksid (Fe3+) må reduseres til Fe2+ før det kan tas opp. Det finnes enzym (ferroreduktasen Dcytb) i brushborder av enterocyttene som katalyserer dette, men denne prosessen blir også godt hjulpet av magesyre. I tillegg påvirkes dette av kostfaktorer som enten stimulerer reduksjon til Fe2+ som for eksempel askorbinsyre (vitamin C) eller hemmer reduksjonen ved for eksempel å danne uløselige salter eller komplekser med jern, for eksempel fosfat og kalsium i melkeprodukter, garvesyre i te/kaffe, fytinsyre i korn, oksalat i grønnsaker. 3. ''Kroppens behov for jern/jernlagerstatus''. Kroppens jernstatus regulerer også opptaket: Høy transferrinmetning i blodet (mye jern bundet til transportproteinet i blod transferrin) øker produksjonen av peptidehormonet hepcidin i levercellene. Hepcidin hemmer jern-absorpsjonen ved å binde til og gi internalisering av transportproteinet som frakter jern ut av enterocyttene (ferroportin). Når jern ikke kommer seg ut av enterocyttene, vil det intracellulære nivået av jern øke. Dette gir signal om å redusere syntesen av transportproteinet som frakter jern inn i enterocyttene (DMT1 divalent metalliontransporter1) og absorpsjonen vil da gå ned. Økt akkumulering av jern intracellulært i enterocyttene vil også gjøre at kroppen kvitter seg med jern ved at epitelcellene regelmessig erstattes og avskalles ut i tarmlumen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Jern i kosten finnes hovedsakelig som Fe3+ jern (ikke-hemejern) men også litt som heme-jern – 0,25p Prinsippet tre ting som normalt påvirker jernabsorpsjonen: * Mengden jern i kosten og hvilken form det jernet er i – 0,5p * Andre kostfaktorer påvirker tilgjengelig jern i kosten ved å enten stimulere eller hemme omdanningen av ikke-hemejern fra Fe3+ til Fe2+ eller danne uløselige salter og komplekser – 0,5p * Ved høy jernstatus i kroppen vil høy transferrinmetning gi økt produksjon av leverhormonet hepcidin som hemmer transport av jern ut av enterocyttene. Dette gir økt intracellulær konsentrasjon av jern i enterocyttene som så hemmer produksjonen av proteinet som transporterer jern inn i enterocyttene fra lumen, og dermed redusert absorpsjon – 0,75p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan vitamin B12 absorberes fra tarmen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vitamin B12 (kobalaminer) frigis fra de bestanddelene det er bundet til i maten i magesekken ved hjelp av pepsin og syre. Proteinet R-faktor (haptocorrin) produseres i spyttkjertler og skilles ut i spytt i munnhulen. R-faktor har høy affinitet for vitamin B12 og i magesekken bindes disse sammen til et kompleks som beskytter vitamin B12 fra å bli ødelagt av magesyren. Komplekset R-faktor-vitB12 går videre til duodenum hvor proteolytiske pankreasenzymer spalter R-faktor slik at vitamin B12 igjen frigis. I den nøytrale pH i duodenum bindes vitamin B12 så til ”intrinsic factor” som produseres i parietalcellene i magesekken. Komplekset intrinsic factor-vitB12 går videre nedover tarmen til terminale ileum, hvor komplekset bindes til en spesialisert overflatereseptor på enterocyttene (cubilin), blir internalisert via endocytose, intrinsic factor degradert og vitamin B12 transportert over den basolaterale membranen, frigitt til portalblodet hvor det transporteres bundet til transkobalamin. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vitamin B12 spaltes fra maten av pepsin og syre i magesekken og bindes til R-faktor fra spytt – 0,5p Komplekset vitB12-R faktor spaltes av proteolytiske enzym i duodenum og bindes til intrinsisk faktor fra parietalcellene/den syreproduserende cellen i magesekken – 0,5p Komplekset vitB12-Intrinsisk faktor tas opp av spesifikke reseptorer hovedsakelig i terminale ileum – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter hvert får du stilt diagnosen cøliaki. Du starter behandling med glutenfri diett og blir etter det også helt kvitt problemene du opplevde etter inntak av melkeprodukter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mest sannsynlig forklaringen på det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved ubehandlet cøliaki vil det være en betennelse i tynntarmsslimhinnen og histologisk ses totteatrofi (svinn av tarmtotter/villi), hypertrofi av kjertler og økt infiltrasjon av immunceller i lamina propria og epitelet. Siden laktose brytes ned til glukose og galaktose av enzymet laktase i mikrovilli / brush border av tynntarmsepitelet, vil en slik betennelse i slimhinnen gi en forbigående reduksjon i laktasefunksjon og redusert evne til å bryte ned laktose (Sekundær laktoseintoleranse). Denne funksjonen vil komme tilbake igjen når behandling med glutenfri diett gjør at slimhinnen også går tilbake til normalen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Cøliaki gir betennelse i tynntarmsslimhinnen og totteatrofi – 0,5p Det vil redusere aktiviteten/ta helt bort enzymet laktase som ligger i epitelcellenes brush border og som er nødvendig for absorpsjon av laktose – 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Benjamin er 74 år gammel og oppsøker allmennlegekontoret på grunn av opplevelse av økende hevelse i beina. I tillegg har han de siste månedene merket klemmende smerte foran i brystet og tung pust ved lette til moderate fysiske anstrengelser. Typisk når han går to etasjer i trapp i rolig tempo. De anstrengelsesutløste plagene gir seg raskt når han holder opp med aktiviteten </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) For å beskrive hjertesviktpasienters funksjonsnivå benyttes ofte NYHA-klassifisering. (Funksjonsnivå beskrives som NYHA-klasse 1 til 4. (NYHA = New York Heart Association)). Hvilken NYHA-klasse er mest korrekt for Benjamins funksjonsnivå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> NYHA-klasse 3 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kun NYHA-klasse 3 gir poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Benjamin angir at han av og til merker uro i brystet, uregelmessig hjertebank og ujevn puls. Også dette har økt både i hyppighet og varighet, faktisk har han denne opplevelsen nå under konsultasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelsesmetode er best egnet for å dokumentere din mistanke om at pasienten har atrieflimmer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Elektrokardiogram, EKG. Alle typer EKG der hjertefrekvens og tilstedeværelse eller fravær av P-bølger kan dokumenteres er velegnet. Vanligst brukt er standard 12-kanalers EKG, eventuelt kan langtidsregistrering av hjerterytmen være hensiktsmessig der atrieflimmer opptrer anfallsvis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Undersøkelsesmetoder basert på elektrokardiogram/EKG gir poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved den kliniske undersøkelsen finner du ved perkusjon over hjertet at området med dempning er større enn forventet og ictus cordis (spiss-støtet) observeres beliggende lateralt for medioclaviculærlinjen. Du mistenker at hjertet er forstørret. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelse er best egnet for å avbilde hjertet og vurdere hjertets pumpefunksjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ekkokardiografi (ultralydundersøkelse av hjertet) er lettest tilgjengelig og oftest mest hensiktsmessig for å angi hjertets dimensjoner og pumpebevegelser. MRI og Røntgen CT kan også benyttes i helt spesielle tilfeller. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ekkokardiografi gir 2 poeng. MRI og/eller Røntgen CT gir 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved auskultasjon over hjertet hører du normale hjertetoner, det foreligger en systolisk bilyd grad 3 (3 av 6), best hørbar over apex og med utstråling mot venstre aksille. Du mistenker at Benjamin har lekkasje i mitralklaffen (bicuspidalklaffen). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelse er best egnet for å underbygge din mistanke om klaffelekkasje? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Doppler ekkokardiografi (Doppler ultralydundersøkelse) er lettest tilgjengelig og oftest mest hensiktsmessig for å påvise og kvantitere (bedømme grad av) klaffelekkasjer. MRI kan benyttes for diagnostikk og kvantitering av klaffelekkasjer i spesielle situasjoner Venstresidig hjertekaterisering med kontrastinjeksjon i venstre ventrikkel (ventrikulografi) er lite brukt. Metoden var tidligere ( før introduksjon av Doppler utlralyd) den rådende metoden for påvisning og bedømming av alvorlighetsgrad av klaffelekkasjer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Doppler ekkokardiografi/ ultralydundersøkelse gir 2 poeng MRI og/eller venstre ventrikulografi gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved auskultasjon over lungenes bakflater hører du fremmedlyder over lungenes basale deler. Du mistenker at Benjamin har hjertesvikt med lungestuvning (væskeoverskudd i lungevev og dels også i alveolene). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken supplerende undersøkelsesmetode er vanligst for å dokumentere mistanke om at pasienten har lungestuvning? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Røntgen thorax er den vanligste metoden. Ultralyd av lunger kan i øvede hender benyttes. Røntgen CT kan avdekke lungestuvning, da oftest som et bifunn ved andre indikasjoner for slik undersøkelse MRI kan avdekke lungestuvning, men metoden benyttes ikke på slik indikasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Røntgen thorax gir 2 poeng. Øvrige modaliteter gir enkeltvis eller samlet 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 36 årig kvinne blir funnet ved siden av en stige og klager over dyspne (tung pust) og ømhet i høyre side av brystet, hun fraktes til sykehus i ambulanse. Som Lis1 tilser du pasienten i akuttmottaket. Hun har dyspne, men kan ikke helt redegjøre for om dette oppstod i forbindelse med fallet. Du mistenker en pneumothorax (luft mellom lunge og brystvegg) som årsak til dyspne og henviser til et stående røntgenbilde av thorax. <<imgLink "IAB-2022s-1-A.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vedlagte bilder viser et rtg thorax, front og side. Redegjør for hvordan røntgenstråler dannes, deretter redegjør kort for hvordan røntgenbildene dannes </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dannelse av røntgenstråler: elektroner frigis fra en katode, akselererer og treffer anoden. Nedbremsingen av elektroner danner fotoner. Dannelse av bilder: ulikt vev bremser / absorberer fotoner i ulik grad. Mengden fotoner som trenger gjennom objektet registreres av en detektor. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Elektroner frigis fra katode 1 * Nedbremsing danner fotoner 1 * Vev absorberer fotoner 1 * Fotoner registreres på en detektor 1 Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Røntgenbilde viste ikke pneumothorax. Nå tror pasienten kanskje hun fikk dyspne allerede før hun falt av stigen. Du mistenker lungeemboli (blodpropp i lungearterier). Siden hun har et mulig svangerskap gjøres det først ultralyd av dype vener på underekstremitetene med tanke på dyp venetrombose (blodpropp i dype vener i underekstremitetene vil sannsynliggjøre mistanken) <<imgLink "IAB-2022s-1-B.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vedlagt er et ultralydbilde av arterie og vene på låret, inkl. fargedoppler. Redegjør for prinsippet bak ultralyd og doppler </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> UL-probe sender ut lydbølger. Lydbølgene vil dels penetrere og dels kastes tilbake (ekko). Lydbølgeekko fanges opp av proben. Ved doppler vil ekko fra lydbølger som kastes tilbake fra et objekt i bevegelse endre bølgelengde. Hastighet og retning på objektet avgjør hvor stor endringen i bølgelengde blir </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Utsendte lydbølger og ekko som fanges opp 2,0 * Doppler måler endret bølgelengde 2,0 Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siden det ikke ble påvist dyp venetrombose må lungeemboli avklares med en CT-undersøkelse av brystet inkl. lungeaterier. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Redegjør for prinsippet bak computertomografi. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Røntgenrør og detektor roterer rundt mens pasienten kjøres gjennom CT-maskinen. Røntgenstrålene som slipper igjennom pasienten registreres i detektoren. En datamaskin regner ut tettheten i det avbildede området og lager anatomiske snittbilder. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Alt med gir 2,5 poeng, kun delvis med gir 1,5 poeng Totalt 2,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vedlagt er 2 bilder fra en CT-undersøkelse av thorax. <<imgLink "IAB-2022s-1-C.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 1 ulempe og 1 fordel med røntgenkontrast. Er undersøkelsen kontrastforsterket? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Fordeler er bedre kontrast i bildet * Ulempe er risiko for redusert nyrefunksjon. * Undersøkelsen er med kontrast </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for ulempe + fordel + bilde med kontrast. Totalt 3 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Samme to CT-bilder <<imgLink "IAB-2022s-1-C.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Pek og benevn 5 anatomiske strukturer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er et utall anatomiske strukturer avbildet, studenten kan angi strukturer etter eget ønske. Sensor forventes å kunne vite om strukturene studenten avgir er korrekte. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver anatomisk struktur Totalt 2,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Under et mosjonsløp over 20 km får du etter halvveis løp relativt hurtig innsettende symptomer i form av utmattelse, svette, lett skjelving, svimmelhet og sterk sultfølelse. Du får lyst til å bryte løpet, men fortsetter i lavere tempo og etter noen minutter går det bedre </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige årsaken til de beskrevne symptomene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fysiologisk hypoglykemi </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hypoglykemi gir 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blodsukkernivået er nøye regulert og sikrer jevn tilførsel av energi til kroppens organer. Flere hormoner bidrar til å holde blodglukosenivået innenfor normalområdet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hormoner har en særlig viktig rolle i blodsukkerreguleringen i situasjonene som beskrives nedenfor, og hvilke kjertler og (eventuelt) celler produserer disse hormonene: A) etter et karbohydratrikt måltid; B) når blodsukkernivået synker før neste måltid; C) en periode med høyt stressnivå; D) under kortvarig ekstremt stress. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> A) Insulin fra betacellene i pankreas, B) glukagon fra alfacellene i pankreas, C) kortisol (=hydrokortison) fra binyrebarken (zona fasciculata), D) adrenalin og noradrenalin fra binyremargen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> A) Insulin og betacellene i pankreas (½ poeng), B) glukagon og alfacellene i pankreas (½ poeng), C) kortisol (eventuelt hydrokortison) fra binyrebarken (zona fasciculata) (½ poeng) (zona fasciculata ble nevnt på forelesning, men sensor får vurdere om det skal ha betydning for poengtildeling), D) adrenalin og noradrenalin fra binyremargen (½ poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kroppens organer er avhengige av en relativt jevn tilførsel av energi, mens tilbudet av energiholdige næringsstoffer fra tarmen kan være svært varierende gjennom døgnet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke er de viktigste molekylene for lagring av kjemisk energi til bruk under normale fysiologiske forhold (se bort fra langvarig faste)? I hvilke organer finnes disse molekylene? Nevn fordeler og ulemper knyttet til hvert av dem? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Monosakkarider (særlig glukose) utgjør nærlageret av energi som hurtig kan omsettes til ATP gjennom glykolyse og oksidativ fosforylering. Alle kroppens celler har et visst nivå av glukose under normale betingelser. Ulempen er at forrådet av glukose i blodet og i cellene ikke er tilstrekkelig til å dekke energibehovet i perioder med økt forbruk eller lav tilførsel (Aminosyren glutamin kunne vært nevnt her som viktig brennstoff for Krebs syklus, men har ikke vært nevnt under forelesningene). Fjernlager av energi utgjøres av glykogen og triglyserider (fett). Glykogen finnes i lever- (25 %) og i muskelceller (75 %). Glykogen kan raskt brytes ned til glukose og videre til ATP når glukosenivået i blodet er lavt, men energiinnholdet per vektenhet (17 kJ/g) er lavere enn i triglyserider (37 kJ/g). Triglyserider lagres hovedsakelig i fettceller (adipocytter). Energiinnholdet er høyere enn i glykogen per vektenhet. Det er ulempe med triglyserider at fettsyrer ikke i vesentlig grad kan omdannes til glukose i glukoneogense. Når fett omsettes til energi, må nødvendig glukoseproduksjon hovedsakelig baseres på omdanning av såkalte glykogene aminosyrer eller andre glykogene molekyler som f.eks. laktat. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Glukose som umiddelbart kan omsettes til energi, men med kort varighet: 1 poeng. Glykogen i lever og muskulatur, raskt omsettelig, men mindre energiinnhold enn fett: 1 poeng. Triglyserider/fett i adipocytter (fettceller). Høyt energiinnhold, men kan ikke omdannes til glukose i noen særlig grad: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fullstendig nedbryting av glukose og fettsyrer til ATP er avhengig av Krebssyklus og oksidativ fosforylering i cellene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I hvilken organelle i cellene foregår Krebssyklus og oksidativ fosforylering? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mitokondrier 2p </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Mitokondrier 2p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett For at Krebssyklus og oksidativ fosforylering skal gå er disse prosessene avhengig av at cellene har tilgang på co-faktorer som er nødvendige i disse biokjemiske prosessene. Flere av disse cofaktorene dannes fra vitaminer </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) * Tilgang på hvilket vitamin er nødvendig for at cellene skal danne den viktig co-faktoren NAD+ (Nikotin Adenin Dinukleotid) slik at disse prosessene kan gå? * Hva kalles mangelsykdommen som opptrer ved mangel på NAD+? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Vit. B3 eller niacin 1 p * Pellagra 1 p </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Vit. B3 eller niacin 1 p * Pellagra 1 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 67 år gammel mann som har røkt mye i over 40 år er undersøkt ved en lungepoliklinikk pga økende tungpust over tid. Spirometri viser en uttalt obstruktiv ventilasjonsinnskrenkning og det blir fastslått at han har kols (kronisk obstruktiv lungesykdom). Hos en slik pasient blir luftveiene/bronkiene forsnevrede og trange ved ekspirasjon og det blir tungt å puste ut. Dette fenomenet oppstår også hos friske ved forsert ekspirasjon under en spirometri, men hos pasienter med alvorlig kols vil det også kunne skje ved normal respirasjon/ekspirasjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mekanismen her og hva kalles dette fenomenet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Høyere trykk intratorakalt enn intrabronkialt gjør at bronkiene presses sammen, kalles dynamisk luftveiskollaps </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for mekanisme og 0,5 poeng for å nevne dynamisk luftveiskollaps </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tilleggsundersøkelser viser at RV (residualvolumet) er økt, noe som passer med hyperinflasjon/emfysem </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil dette påvirke volumet av vitalkapasiteten og evt. hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, økt residualvolum okkuperer volum i toraks og gir redusert VK (RV = TLC – VK) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å angi hvordan vitalkapasiteten påvirkes og 1 poeng for å forklare hvorfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Denne pasienten har hypoksemi (lavt oksygeninnhold i arterieblod) med PaO2 7,1 kPa. Normalt for en frisk person på hans alder vil være PaO2 minst ca. 10 kPa </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn (ikke nødvendig å forklare/utdype) hvilke mekanismer som kan gi hypoksemi hos en person? (generelt, ikke spesifikt for denne pasienten). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fire mekanismer: # hypoventilasjon/lavt oksygeninnhold i inspirasjonsluften # diffusjonsbarriere # ventilasjons/perfusjonsmisforhold # shunt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 3 poeng for 3 riktige av 4; 2 poeng for 2 av 4; 1 poeng for en av fire. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken autoreguleringsmekanisme skjer i lungekarene på grunn av lavt oksygeninnhold i alveolene? (dvs. pga alveolokapillære enheter med lav PO2)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det gir kontraksjon av pulmonalkar for å dirigere blod fra alveolokapillære enheter med lav PO2 til enheter med høyere PO2 (blodet går dit det er mest oksygen å hente). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil langvarig hypoksemi påvirke trykket i lungekretsløpet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kontraksjonen av pulmonalkar gir høyt trykk i lungekretsløpet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken konsekvens kan dette (dvs. langvarig hypoksemi) ha for hjertets funksjon og arbeid? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette gir økt motstand å arbeide mot for høyre hjertehalvdel, altså økt belastning og kan over tid resultere i høyresidig hjertesvikt (cor pulmonale) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Denne pasienten har røkt betydelig og røyker forsatt. Tobakksrøyk inneholder CO (karbonmonoksid) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På hvilken måte påvirker denne gassen oksygentransporten i blodet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gir redusert oksygentransport fordi CO bindes til Hb med større affinitet enn oksygen og hindrer/reduserer dermed binding av oksygen til Hb </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Alle blodets celler har sitt opphav fra den multipotente stamcellen. Av blodets celler er erytrocyttene antallsmessig mest dominerende. Etter et akutt blodtap (blødning) trer fysiologiske kompensasjonsmekanismer inn for å erstatte tapt erytrocyttmasse </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan akutt blødning aksellererer erytropoiesen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nedsatt hemoglobinkonsentrasjon fører til nedsatt O2-tilbud i nyrene. Dette igjen stimulerer til økt produksjon av erytropoetin (EPO). EPO øker celledelingshastigheten og modningshastigheten i erytropoiesen og en raskere uttømming av reticulocytter fra benmargen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må nevne erytropoetin (1p), at denne produseres i nyrene (1p) og at stimuli for økt EPO er hypoksi eller nedsatt hgb-konsentrasjon (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Cirka hvor lang tid tar utviklingen fra delende erytroid forstadium i benmargen til moden erytrocytt i blodet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 3-7 dager. Mer presist: ca 3 dager der hvor EPO har sin virkning. Celledelingsevnen er høyest i de tidlige utviklingsstadiene (proerytoblast og basofil erytroblast) mens hemoglobinsyntesen er høyest i de senere utviklingsstadiene (orthokromatisk erytroblast) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det kan være litt ulikt hvordan studentene svarer her, men alt fra 3-7 dager bør gi poeng. Prosessen fra de helt umodne erytroide progenitorvellene (BFU-E) tar ca 1 uke, mens prosessen fra de hurtigst delende forstadiene (CFU-E) tar 3 dager. EPO virker imidlertid kun fra CFU-E og utover, og etter en akutt blødning er det nettopp fra dette trinnet i erytropoiesen porsessen er speedet opp. Det er ikke nødvendig å navngi de ulike utviklingstrinnene i erytropoiesen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter en slik akutt blødning kan andelen reticulocytter i blod øke </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På hvilke måter skiller reticulocytter seg fra modne erytrocytter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reticulocyttene har ribosomer. Det foregår fortsatt litt hemoglobinsyntese. De er større og har en mer blålilla farge, mens de ved vitalfarging får en nettverksmønster av blåfarge som er klumpet ribosomrester </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må nevne at de har ribosomer, i motsetning til modne erytrocytter </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ferdige erytrocytter vil så sirkulere i blodet i ca 120 dager </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor og hvordan foregår nedbrytningen av røde blodceller? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fagocytose av makrofager, først og fremst i milten (rød pulpa) og lever. Eldre erytrocytter er mindre fleksible og har problemer med å passere mellom slitsene inn til venesinusoidene. De blir «fanget» utenfor sinusoidene og fagocytert av makrofager. Yngre erytrocytter beskytter seg mot slik fagocytose fordi de har et «ikke spis meg»- signalmolekyl på celleoverflaten </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Makrofager (1p), milten (1p) (rød pulpa) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Menn har gjennomsnittlig litt høyere hemoglobinkonsentrasjon enn kvinner </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan være årsaken til det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mannlig kjønnshormoner (androgener) stimulerer til EPO-produksjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må nevne androgener for poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 62 år gammel mann har kjent hyperkolesterolemi og leversteatose (fettlever). Han har i lang tid vært plaget med diare og ubehag/smerte i øvre del av magen. Nå har han fått økende plager med mer konstante smerter som han selv synes er relatert til måltid. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort den viktigste hormonelle reguleringen av magesyresekresjon som skjer i antrum- og corpusslimhinnen i gastrisk fase. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> G-celler i antrumdelen av magesekken er normalt under hemming av den sure pH i magesekken. ”Måltid” stimulerer G-celler ved at maten nøytraliserer pH og ulike komponenter i maten, spesielt peptider, stimulerer cellene direkte. G-celler produserer hormonet gastrin som skilles ut i blodbanen (endokrint) og når corpusdelen av magesekken, der det stimulerer ECL celler til å skille ut histamin. Histamin virker hovedsakelig parakrint og via lange utløpere direkte på parietalceller og stimulerer til syresekresjon. Økt mengde magesyre (H+ ioner, synkende pH) virker så inhiberende tilbake på prosessen (=negativ feedback). Det viktigste hemmende hormonet er somatostatin fra D-celler i både antrum og corpus som hemmer alle de tre andre celletypene i prosessen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5 poeng – Innhold i måltid+økt pH stimulerer gastrinutskillelse fra G-celler i antrum til blodet * 0,5 poeng – Gastrin stimulerer ECL-celler i corpus til å skille ut histamin parakrint * 0,5 poeng – histamin stimulerer parietalcellen i corpus til å skille ut magesyre * 0,5 poeng – Somatostatin fra D-celler i både antrum og corpus hemmer alle tre celletypene Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar på hvilken måte sekret fra munnhule og magesekk er involvert i fordøyelse og absorpsjon av ulike næringsstoffer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Alfa-amylase'': skilles ut i spytt og er første trinn i nedbrytningen av karbohydrater ved at det katalyserer spaltingen av stivelse og glykogen til mindre oligo-og disakkarider ''Pepsinogen'': Skilles ut fra hovedceller i corpusslimhinnen, aktiveres av den sure pH i magesekken til enzymet pepsin som katalyserer nedbrytning av proteiner. ''HCL'': Skilles ut fra parietalceller i corpusslimhinnen og er involvert i fordøyelse av proteiner ved at syra aktiverer pepsinogen. Bidrar til opptak av ikke-heme jern ved å redusere Fe3+ til Fe2+. Lav pH bedrer løseligheten til kalsiumsalter og bidrar til kalsium absorpsjon. Denaturering av proteiner letter proteinnedbrytning og gjør at for eksempel mat-bundet vitamin B12 løsner (og kan binde seg til R-faktor fra spytt). ''Intrinsisk factor (IF)'': Skilles ut fra parietalceller I corpusslimhinnen, bindes til fritt vit B12 i et kompleks som er nødvendig for absorpsjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5 poeng – a-amylase fra spalter karbohydratene stivelse/glykogen * 0,5 poeng – Pepsinogen/pepsin spalter ulike proteiner * 0,5 poeng – Magesyre aktiverer pepsinogen, gir gunstige forhold generelt for proteinnedbrytning og opptak av div vitamin / mineraler (gjerne nevn redusering av jern) * 0,5 poeng – Intrinsisk faktor nødvendig for opptak av vitamin B12 Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten viste seg å ha gallestein. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan utskillelse av galle til tarmen reguleres, og hvilken rolle gallesalter har i å forhindre dannelse av gallesteiner spesielt i galleblæra. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Utskillelse av galle til tarmen reguleres ved at hormonet cholecystokinin (CCK) stimulerer til kontraksjon og tømming av galleblæren og relakserer sfinkter Oddi (og sekresjon av pankreasenzym). Hormonet produseres i enteroendokrine I-celler i tarmslimhinnen i duodenum og jejunum når disse registrerer økt mengde fett/priteiner i tarmlumen og skilles ut i blodet (portasirkulasjonen) for å nå målcellene. En av hovedfunksjonene til galleblæren er å absorbere vann og konsentrere innholdet i gallen. De fleste gallesteiner inneholder mye kolesterol. Gallesalter er amfifatiske molekyler som danner miceller og sørger for at lite vannløselige molekyler som kolesterol holdes i løsning/suspensjon. Dersom konsentrasjonen av kolesterol er for høy i forhold til konsentrasjonen av gallesalter, vil kolesterol begynne å felle ut og danne krystaller og etter hvert større konkrement også sammen med ulike salter og bilirubin. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5 poeng – Hormonet CCK stimulerer kontraksjon av galleblæra og åpning av sfinkter Oddi. * 0,5 poeng – CCK kommer via blodet fra I-celler i tarmslimhinnen som reaksjon på økt mengde fett/protein øker i lumen * 0,5 poeng – Gallesalter er amfifatiske og danner miceller som hjelper til med å holde spesielt kolesterol i løsning slik at konkrementer ikke felles ut * 0,5 poeng – spesielt viktig i galleblæra der gallen konsentreres. Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en kort oversikt over transport av fettstoff fra enterocyttene i tarmen etter absorpsjon og videre til leveren. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fettsoff fra maten (triglyserider, kolesterol) samles i chylomicroner i enterocyttene, går ut av enterocyttene ved eksocytose, diffunderer til lymfesystemet og tømmes til blodbanen via den store lymfegangen (ductus thoracicus). En god del av triglyseridene i chylomicroner blir hydrolysert til frie fettsyrer av lipoprotein lipase (LPL) som ligger på den kapillære endotelveggen i spesielt fettvev og muskelvev, og tas opp her. Resten kalles chylomicron remnant (rest) og tas opp av levercellene der triglyserider og kolesterol kan lagres, brukes til energi og byggeklosser, skilles ut i galle, eller pakkes i VLDL og skilles ut i blodet for bruk av annet perifert vev. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5 poeng – Fettstoff pakkes i chylomicroner i enterocyttene og kommer ut i blodsirkulasjonen via lymfesystemet * 0,5 poeng – På veilen til lever spaltes mye av triglyseridene i chylomicroner av lipoprotein lipase i karveggen og til frie fettsyrer tas opp i spesielt fett- og muskelvev * 0,5 poeng – chylomicron-rest tas så opp av hepatocytter. Totalt 4 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter flere år utvikler pasienten leversvikt. Han har tydelige ødemer i beina og måling viser at blodet bruker lengre tid på å koagulere (forhøyet INR). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke syntesefunksjoner i hepatocyttene som svikter når pasienten får disse symptomene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En av de viktige oppgavene til levercellene er å produsere ulike plasmaproteiner som sirkulerer i blodet, hvorav albumin og proteiner i koagulasjonssystemet er noen av disse. Albumin er svært viktig for å opprettholde kolloid osmotisk trykk i plasma og når konsentrasjonen av albumin i blodet synker, vil mer væske sive/bli dratt ut i perifert vev og gi ødemer. Koagulasjonsproteiner er viktige for å sørge for koagulasjon og hemostase og ved redusert produksjon vil det kunne gjøre at blodet bruker lengre tid på å koagulere og økt blødningstendens. Både måling av albumin og INR brukes som test for å bedømme leverens proteinsyntesefunksjon, der økt INR viser redusert produksjon av vitamin K-avhengige koagulasjonsfaktorer. Disse symptomene er tegn på at syntesefunksjonen i levercellene er redusert og er tegn på leversvikt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,2 poeng – Svikt i syntese av (plasma)proteiner. * 0,4 poeng – Redusert syntese av albumin gir ødemer fordi albumin er viktig for å opprettholde kolloid osmotisk trykk i plasma. * 0,4 poeng – Redusert syntese av koagulasjonsfaktorer gir forlenget koagulasjon og dermed høyere INR-verdi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten har også hyperbilirubinemi (ikterus). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor kommer bilirubin fra og på hvilken måte kan nedsatt funksjon i hepatocyttene (leversvikt) gi opphopning i kroppen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bilirubin er nedbrytningsproduktet til heme, som er en viktig prostetisk gruppe i hemeproteiner. Slike proteiner finnes i alle celler i kroppen, men de aller største kildene til heme er hemoglobin i røde blodceller, enzymer i hepatocyttene og myoblobin i muskulatur. Bilirubin skilles ut via galle og går ut av kroppen i avføring/urin. Dette skjer ved at hepatocyttene tar opp ukonjugert bilirubin som er fettløselig og fraktes i blodet bundet til albumin, og som dermed er lite tilgjengelig for vanlig filtrasjon i nyrene. For å gjøre bilirubin mer vannløselig og lettere å skille ut i gallen, skjer det en omdanning/detoksifisering/fase II-reaksjon i hepatocyttene der to sukkermolekyler glukuronat konjugeres på bilirubin. Dette kalles konjugert bilirubin og blir skilt ut i gallen via en aktiv pumpemekanisme i cellemembranen. Konjugeringen og utpumping i gallen er viktige hastighetsbestemmende trinn i kroppens utskillelse av dette nedbrytningsproduktet. Ved funksjonssvikt vil cellene kunne ha nedsatt evne til konjugering og også å pumpe ut konjugert bilirubin, slik at konsentrasjonen øker i blodet og hoper seg opp i kroppen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,5 poeng – Bilirubin nedbrytningsprodukt fra heme, kommer først og fremst fra nedbrytning av hemoglobin. * 0,5 poeng – Ukonjugert bilirubin må fraktes til lever for å konjugeres slik at det kan pumpes ut i gallen og ut av kroppen. * 0,5 poeng – Nedsatt funksjon i hepatocyttene vil gi dårligere evne til å konjugere bilirubin og skille ut ferdig-konjugert bilirubin og det vil «stases opp» og gi økt konsentrasjon i blodet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Epidermolysis bullosa simplex er en sykdom som kan være forår saket av mutasjoner i gener som koder for komponenter av intermediære filamenter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den generelle oppbyggingen av intermediære filamenter. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Intermediære filamenter er bygget opp av fibrøse proteiner (langstrakte proteiner) med et sentralt stavdomene og ustrukturerte domener i hver ende. Ett filament er satt sammen av monomerer som assosierer til å danne en coiled-coil dimer- som igjen danner tetramerer som er forskjøvet i forhold til hverandre. Tetramere pakkes sammen ende mot ende- og åtte tetramerer blir til et tau-lignende filament. Filamentene har form som fleksible tau på ca 10 nm i diameter. De danner et ikke polarisert nettverk i cytoplasma. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fibrøse proteiner som danner ikke polarisert nettverk i cytoplasma </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hva heter det viktigste intermediære filamentet i epitelceller? </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den generelle oppbyggingen av intermediære filamenter. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Keratin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Keratin </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Symptomene på Epidermolysis bullosa simplex er blant annet sårdannelser i huden. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan mutasjoner i intermediære filamenter kan gi slike symptomer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Intermediære filamenter i hud er først og fremst keratin. Keratin danner et nettverk gjennom cellen, og bidrar også til å danne epitelcellelaget (huden) ved å binde de enkelte cellene til hverandre. Desmosomer er proteinstrukturer som forbinder keratinfilamenter i naboceller med hverandre. Dette gir epitelcellelaget mekanisk styrke/strekkstyrke, fordi nettverket sørger for å fordele den lokale belastningen påført huden ved feks. støt/slag. Mutasjon i keratin fører altså til et svekket epitelcellelag som tåler mindre mekanisk belastning, og pasienter med denne sykdommen får dermed svært skjør hud og har lett for å få sår. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Beskrivelse av at nettverk av intermediære filamenter gir epitelcellelag mekanisk styrke ved å fordele den mekaniske belastningen (1poeng). Beskrivelse av desmosomer i tillegg gir 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen celler kan overleve uten kommunikasjon med andre celler. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv minst fire ulike måter for hvordan ei celle kan sende et signal til ei anna celle. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Celler kan kommunisere med hverandre på både kort og lang avstand. De fire viktigste kommunikasjonsmåtene er: # Endokrin- signalering: Signalet (hormon) produsert av celler i endokrinekjertler føres med blodet til målceller som kan være langt unna avsendercella. Går sakte, lav konsentrasjon- reseptoren må kunne respondere på lave konsentrasjoner. # Nervesignalering: Virker over lange avstander, men skilles ut i nærheten av målcella. Synapsen ligger langt unna cellekroppen. Når ei nervecelle blir aktivert så sendes elektriske impulser langs axonet, den elektriske impulsen omdannes til kjemisk signal ved frigøring av nevrotransmitter. Svært høy konsentrasjon av nevrotransmitter i den synaptiske kløften. # Parakrin-signalering: signalmolekyler (feks. cytokiner, vekstfaktorer) skilles ut lokalt i ekstracellulærvæske og virker lokalt på celler i nærheten av avsendercellen. # Kontakt-avhengig signalering: et celleoverflatebundet signalmolekyl på ei celle binder til reseptor på nabocelle. Viktg feks i organutvikling/fosterutvikling og ved aktivering av enkelte immunceller. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 4 av 4 gir 3 poeng, 3 av 4 gir 2 poeng, 2 av 4 gir 1 poeng, 1 av 4 gir 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett G-protein-koblede reseptorer utgjør den største gruppen membranreseptorer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv generelt hvordan G-protein koblede reseptorer er bygd opp og kort hvordan signaloverføringen skjer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> G-protein-koblede reseptorer består av en lang polypeptidkjede som går igjennom membranen sju ganger (seven-pass transmembrane protein). Når en ligand binder den ekstracellulære delen av reseptoren, skjer det en konformasjonsendring som fører til aktivering av et G-protein inne i cella. Det finnes ulike typer G-proteiner, men alle er bygd opp av tre deler: alpha, beta og gamma. Alpha og gamma- enhetene er bundet til membranen. Ikke-aktivert G-protein har GDP-bundet, ved aktivering (konformasjonsendring) byttes GDP med GTP. Aktivert G-protein kan deretter aktivere ulike nedstrøms signalveier (ionekanaler og enzymer (fosfolipase C og adenylsyklase)). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Seven-pass transmembran protein (0.5p), intracellulære G- proteiner (0.5p), aktivering ved å bytte GDP mot GTP (0.5p), nedstrøms aktivering av ionekanaler og enzymer (0.5p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Økning i cytosolisk Ca^^2+^^ aktiverer mange biologiske prosesser </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er det vanligvis lav konsentrasjon av Ca^^2+^^ i cytosol? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ca2+ blir aktivt pumpet ut av cytosol vha. pumper i plasmamebranen som pumper Ca2+ ut av cella og av pumper i ER-membranen som pumper Ca2+ inn i ER. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Beskrivelse av at Ca^^2+^^ aktivt pumpes ut av cytosol. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Til sirkulerende blodceller regner vi blant annet erytrocytter, trombocytter, lymfocytter, granulocytter og monocytter. Disse har alle et felles opphav. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke egenskaper har den multipotente hematopoetiske stamcellen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Stamcellen er en liten celle som morfologisk ligner en moden lymfocytt. Ved deling i disse cellene dannes i gjennomsnitt 1 ny stamcelle (selvfornying) og 1 celle som går videre til produksjon av modne celler gjennom flere trinn med differensiering/ spesialisering </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha med evne til selvfornying (0.5p) og modning/differensiering (0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra fosterlivet til fødselen og gjennom årene fra barn til voksen er det ulike organer som har hovedansvar som bloddannende vev </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke vev vi regner til hematopoietiske (bloddannende, inkludert lymfoide) organer og hvor dette foregår ved ulike stadier i utviklingen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De første multipotente stamcellene har sitt opphav i plommesekkens kar. Fra 5. fosteruke foregår hematopoiesen i lever (+ i noe mindre grad i milten) og fra ca 12. fosteruke overtar gradvis benmargen. I barnealder har vi hematopoietisk benmarg i alle rørknokler samt aksialskjelettet. Jo eldre vi blir sentreres hematopoietisk benmarg til aksialskjelettet bekken, columna og brystkassen. Til hematopoietisk vev regnes foruten benmarg også milt , lymfeknuter, thymus og mukosa-assosiert lymfatisk vev (MALT). Benmargen er viktigst for utviklingen av de myeloide cellene (erytrocytter, trombocytter, granulocytter), mens lymfeknuter, milt, thymus og MALT er viktig for utviklingen av lymfocytter </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Embryologien (1,5p) + nevne alle vev vi regner til hematopoietisk og lymfoid vev (1.5p). Trekk -0.5p hvis man ikke har med lever, rørknokler, aksialskjelett. Trekk -0.5p hvis man ikke har tatt med milt, lymfeknuter, thymus, MALT. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Cellene som senere sirkulerer i blod skiller seg i egenskaper fra stamcellene i benmargen på flere måter </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn på hvilken måte eksempelvis en nøytrofil granulocytt skiller seg fra en multipotent stamcelle </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Har mistet evnen til selvfornylese/ deling. Dør etter endt levetid. Er spesialisert (committed), uttrykker linjespesifikke proteiner, har funksjonell kompetanse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må nevne at de ikke har delingsvene (1p) og at de er funksjonsdyktige (1p) (fagocytose/bakteriedrap når det gjelder nøytrofile granulocytter) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer er det som avgjør om en multipotent stamcelle utvikler seg til en nøytrofil granulocytt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Viktigste til stimulus til granulopoiesen er G-CSF (granulocytt- kolonistimulerende faktor) og i noen grad GM-CSF, SCF og IL-3. Hemmer av granulopoiesen er laktoferrin </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må nevne G-CSF </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På veien fra multipotent stamcelle til moden nøytrofil granulocytt går cellen også gjennom morfologiske endringer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv de morfologiske endringene som skjer i cellen fra umoden til moden celle </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Stamcellen ser ut som en liten lymfocytt. Ved aktivering endrer den utseende til en blastcelle, med basofilt cytoplasma (høyt RNA-innhold). Med økende differensiering og proteinsyntese blir cytoplasma tiltagende eosinofilt. Granula med linjespesifikke proteiner (eks MPO) kommer til syne i granulocyttene. Kjernekromatinet pakkes tettere, og kjernen segmenteres i granulocyttene. Cellen minker i størrelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Størrelsesendring (1p), kondensering av kromatin og segmentering av kjernen (1p) og granula i cytoplasma (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Til tross for store fremskritt i behandlingen av koronarsykdom og akutt hjerteinfarkt de siste tiårene er fortsatt hjerteinfarkt den vanligste årsaken til hjertesvikt </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du beskrive hvordan hjertet og hjertecellene endres morfologisk ved post infarkt hjertesvikt? Hvordan skiller dette seg fra endringer som følge av økt perifer motstand som f.eks. ved aorta stenose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Etter infarkt endres normal sett hjertet ved eksentrisk hypertrofi av det ikke infarkterte viable myokard. Dette kjennetegnes ved dilatert ventrikkel som følge av volumoverbelastning. Dette innebærer at hjertecellene vokser i lengden og i liten grad i bredden (cellene vokser med sarkomerer i serie). Konsentrisk venstre ventrikkel hypertrofi er en unormal økning i venstre ventrikkel myokardmasse forårsaket av kronisk økt arbeidsbelastning på hjertet, oftest et resultat av trykkoverbelastning indusert av arteriolers vasokonstriksjon som forekommer ved kronisk hypertensjon eller aortastenose. Her vil man se at hjertecellene i hovedsak vokser i bredden og blir tykkere (flere sarkomerer i parallell). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Infarkt: Eksentrisk hypertrofi, hjertecellene vokser i lengden med flere sarkomer i serie (1 poeng) Økt perifer motstand (pressure overload): Konsentrisk hypertrofi med hjerteceller som har flere sarkomerer i parallell (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved hjerteinfarkt så er det kritisk å gjenopprette tilførsel av okygenrikt blod så raskt som mulig. Ved reperfusjon så vil hjertecellene og mitokondriene igjen få tilgang til okygen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er konsekvensen av at okygentilførselen til hjertecellene og mitokondriene blir gjenopprettet? Beskriv de viktigste cellulære og mitokondrielle konsekvensene av at oksygentilførselen gjenopprettes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reoxygenering er helt nødvendig for at hjertecellene skal overleve. Likevel er dette en svært kritisk fase som i seg selv også fører til at hjertecellene får en betydelig ekstrabelastning i den akutte reperfusjonsfasen. Under reperfusjon reaktiveres elektrontransportkjeden, og genererer reaktive okygen species (ROS). Andre kilder til ROS inkluderer xantinoksidase (endotelceller) og NADPH oksidase (nøytrofiler). ROS medierer myokard reperfusjonsskade ved å indusere åpningen av mitokondriell permeabilitetsovergangspore (mitochondrial permeability transition pore - mPTP). ROS fungerer også som en nøytrofil kjemoattraktant og i tillegg vil ROS gjøre det sarkoplasmatisk retikulum (SR) dysfunksjonelt. Dette bidrar til forhøyet intracellulært kalsium. ROS overbelastning skader også cellemembranen ved lipidperoksidasjon, induserer enzymdenaturering og forårsaker direkte oksidativ skade på DNA. Reperfusjon og reaktivering av Na+/H+-veksleren resulterer i utvasking av H+- ioner som er akkumulert gjennom anaerob metabolisme i den iskemiske perioden, noe som resulterer i rask gjenoppretting av fysiologisk pH. Denne raske hevingen av intracellulær pH frigjør den hemmende effekten på mPTP- åpning. Redusert H+ konsentrasjon intracellulært gjør i tillegg at H+ sin blokkerende effekt i forhold til myofilament kalsium binding opphører noe som bidrar til hyperkontraktur av hjertecellene. Gjenopprettingen av mitokondriemembranpotensialet driver kalsium inn i mitokondriene, som også kan indusere mPTP-åpning. Åpning av mPTP fører i tillegg til frislipp av cytokrom C fra mitokondrien noe som fører til apoptose. Kilde: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3533275/ </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ROS induserer åpningen av mPTP og fører til overbelastning av kalsium som følge av SR dysfunksjon (0.75p). ROS fungerer også som en nøytrofil kjemoattraktant og i tillegg fører ROS til overbelastning og skader på cellemembranen ved lipidperoksidasjon, induserer enzymdenaturering og forårsaker direkte oksidativ skade på DNA (0.75p). Reperfusjon og reaktivering av Na+/H+-veksleren fører til rask gjenoppretting av fysiologisk pH, som videre frigjør den hemmende effekten på mPTP-åpning. Redusert H+ konsentrasjon intracellulært gjør i tillegg at H+ sin blokkerende effekt i forhold til myofilament Ca2+ binding opphører noe som bidrar til hyperkontraktur av hjertecellene. (0.75p). Gjenopprettingen av mitokondriemembranpotensialet driver kalsium inn i mitokondriene, som også kan indusere mPTP-åpning og apoptose (0.75p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er forskjellen mellom iskemi og hypoksi og hvilken av disse som normalt sett blir sett på som mest alvorlig? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Med iskemi menes som regel lokal forsnevring av en arterie, enten på grunn av fortykket arterievegg (aterosklerose) eller på grunn av en blodpropp som stanser deler av, eller hele blodstrømmen til et organ. Konsekvensen av iskemi kan være at kroppsdelen eller organet blir varig skadet. Iskemi vil også føre til mangel på næringsstoffer og immunceller som blodet frakter med seg i tillegg til at metabolitter og avfallsstoff fra det iskemiske området ikke blir fraktet bort. Den alvorligste typen skade er om hele eller deler av organet dør, slik som ved et infarkt. Begrepet hypoksi, betyr at cellene i organet får for lite oksygen. Mens iskemi skyldes for lite tilførsel av blod, skyldes hypoksi for lite tilførsel av oksygen. Iskemi er mer alvorlig enn hypoksi. Dette skyldes at i tillegg til mangel på tilførsel av oksygenrikt blod så vil også andre stoffer som brukes til energiomsetning blir redusert eller bortfalle når blodstrømmen avtar. I tillegg vil ikke metabolitter og avfallsstoff fra det iskemiske området bli fraktet bort. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Iskemi blir sett på som mest alvorlig er definert som nedsatt eller opphør av perfusjon av okysygenrikt blod samt mangel på næringsstoffer og immunceller som blodet frakter med seg. I tillegg vil ikke metabolitter og avfallsstoff fra det iskemiske området bli fraktet bort (1 poeng). Hypoksi er at cellene i organet får for lite oksygen (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter et akutt hjerteinfarkt så vil hjertecellene som ikke blir forsynt med okygenrikt blod gradvis begynne å dø </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Om man tar et tverrsnitt av hjerteveggen i infarktområdet, hvilken del av hjertemuskel vil først utvikle myokardnekrose etter okklusjon? Hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nekrose starter først i endokard der energikravet er størst </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Nekrose starter først i endokard der energikravet er størst </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor stor andel av hjertecellene i det iskemiske området av myokard kan man anta er mulig å redde etter 4 timer uten reperfusjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Omtrent 30% av hjertecellene kan potensielt være mulig å redde etter 4 timer. Kilde Braunwald, heart disease, 12th ed (2022) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Omtrentlig svar på 30% gir 1,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Proteinsyntesen starter på ribosomer i cytosol. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva bestemmer om proteinet blir i cytosol eller om det skal til en annen destinasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Proteinene har signalpeptid eller signalsekvenser som fungerer som adresselapper. Chaperoner og transportproteiner gjenkjenner disse og frakter proteinene dit de skal. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Forklaring av signalpeptid og prinsippet for gjenkjenning. Kan gi bonus på 0,5 poeng om både signalpeptid og signalsekvenser beskrives (signalsekvensene ligger gjerne spredt over polypeptidkjeden og danner et signal først når proteinet foldes riktig) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mange proteiner fraktes via ER og Golgi før de når sin endelige destinasjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke viktige prosesser skjer i ER og Golgi? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ER: kvalitetssjekk av feks riktig folding, samt N-glykosylering Golgi: modifisering av N-glykosylering og O-glykosylering, sortering av proteiner til ulike destinasjoner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for ER, 1 poeng for Golgi (forventer ikke at de skal huske alt, men minst to ulike funksjoner må nevnes av kvalitetskontroll, glykosylering og sortering for full score). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Cystisk fibrose kan skyldes mutasjon i et protein som danner en klorkanal i plasmamembranen på epitelcellene. Mutasjonen gjør at proteinet ikke foldes riktig. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med proteinet, og hvordan kan dette forklare noen av problemene pasientene med cystisk fibrose har? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Siden proteinet sitter i plasmamembranen så blir det laget og foldet i ER, der også kvalitetskontrollen skjer. Om det ikke foldes riktig så blir det degradert. Resultatet er at pasientene får lite klorkanaler i membranen på epitelcellene, og dette gjør at vanntransporten også påvirkes slik at pasientene får tykt slim. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for beskrivelse av kvalitetskontroll i ER /degradering, 1 poeng for hvordan det påvirker proteinnivået i epitelcellemembranen, 1 poeng for forklaring av klor/vanntransport og tykt slim </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett For å studere proteinsyntesen i mer detalj så kan en bruke mikroskopi </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvilke mikroskopimetoder som kan brukes og hva som begrenser hva en kan se? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er ulike typer mikroskopi som kan brukes for å studere celler og intracellulære prosesser. Cellene er fargeløse og en må bruke en form for kontrast for å se både celler og strukturer inni cellene, men den største begrensningen er oppløsningen en kan oppnå. Lysmikroskopi begrenses av bølgelengden på lys og er omtrent 200 nm, selv om dette i dag "tweakes" litt med optiske teknikker som gjør at en kan nå ned mot 50 nm (super resolution). Dersom en merker proteiner, ribosomer, organeller med fluorescens så kan en likevel se på molekylære interaksjoner - men da med forbehold om begrensning i oppløsning. For å se mer detaljerte strukturer i cella, feks ribosomer, så må en bruke energi med lavere bølgelengde - som elektroner i elektronmikroskopi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for kontrast, 1 poeng for å forklare begrensningen i oppløsning pga bølgelengden, 0,5 poeng for fluorescens og 0,5 poeng for elektronmikroskopi og hvorfor det gir høyere oppløsning. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med uløselige proteinaggregater i cytosol? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Autofagi. Proteiner blir degradert i proteasomer, men når du får større aggregater så blir de omsluttet av en dobbeltmembran til det dannes autofagosom som fusjonerer med lysosomer slik at innholdet degraderes. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Autofagi </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 48 år gammel mann har blitt stukket i brystet til venstre for brystbenet (parasternalt) mellom 5 og 6 costa. Kniven har gått inn i hjertet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken av de fire hjertekamrene har kniven penetrert mest sannsynligvis først? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Høyre ventrikkel ligger fremst mot brystkassen og penetreres først ved et stikk skade. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for korrekt del av hjerte </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blødninger fyller hjerteposen med blod, noe som kalles hjerte-tamponade. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er navnet på hjertepose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pericardium og pericard godkjennes </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1,0 poeng for korrekt navn på hjertepose </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hjerteposen består av to lag som omfavner hjertet </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hjerteposen er delt opp i to lag. Hva er navnet på disse to lag? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lagdeling består strikt sett av lagene ''pericardium fibrosa'' og ''pericardium serosa''. Dersom det angis ''pericardium parietalis'' og en p''ericardium visceralis'' (som ligger rundt hjerte) godkjennes det også. Strikt sett er det pericardium serosa som danner den parietale og viscerale blad av pericardium. Så ligger det en fibrøst lag utenfor pericardium serosa som er pericardium fibrosa </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Enten 0,5 poeng for korrekt navn på lagene (pericardium fibrosa og pericardium serosa) eller Pericardium parietalis og en pericardium visceralis godkjennes også med 0,5 poeng. Maks antall poeng er uansett 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hjerteposen inneholder også røttene (starten) til de store hovedkarene. På bildet er deler av pericardsekken fjernet og 4 store kar er angitt med et nummer. <<imgLink "IAB-2023s-2-A.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er navnet på de fire markerte karene? Angi riktig nummer til hvert kar. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 0,5 poeng for korrekt navn på hver storkar </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # vena cava superior # aorta ascendens (arcus aortae godkjennes) # truncus pulmonalis (arteria pulmonalis godkjennes) # vena pulmonalis dextra ( vena pulmonalis godkjennes) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten må opereres og kirurgen tar hjerte i hånden sin for å se på bakveggen av hjertet. Kirurgen tar da sin hånd i et rom (2 pil sinus) For å stenge av blodforsyning har kirurgen fingrene i et rom (1 pil sinus) mellom aorta/vena pulmonalis og vena cava / arteria pulmonalis (bilde tatt fra Thieme) <<imgLink "IAB-2023s-2-B.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er navnet på disse to sinusene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Første pil er sinus transversus pericardii og andre pil er sinus obliquus pericardii. Både sinus transversus og sinus obliquus godkjennes. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1,0 poeng for korrekt navn på hver sinus </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gjennom mediastinum går det to store kjente nerver. En er den tiende hjernenerve mens den andre kommer fra rami anterior av nervi cervicales III-V. Sistnevnte går langs hjerteposen og kan skades ved åpning av hjerteposen ved en tamponade. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter disse to nervene og beskriv beliggenhet i forhold til hverandre i høyde med lungehilum? Beskriv hvilke strukturer disse to nerver hovedsakelig innerverer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nervus vagus er den tiende hjernenerve, mens nervus phrenicus kommer fra nervi cervicales III-V. Nervus vagus ligger baktil lungehilum mens nervus phrenicus ligger foran. Nervus vagus innerver de fleste organer i kroppen vår (hjerte, lungene og indre organer. Nervus phrenicus innerverer diaphragma </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Riktig navn på hver nerve (0.5 poeng hver) * Riktig beliggenhet på hver nerve (0.5 poeng hver) * Riktig innervasjon av struktur på hver nerve (0.5 poeng hver) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 36 årig kvinne blir innbrakt til Akuttmottaket grunnet akutt innsettende dyspne (tungpust) og brystsmerter. Som Lis1 tilser du pasienten i akuttmottaket. Hun har dyspne og brystsmerter, EKG er uten anmerkning. Du mistenker en lungeemboli (blodpropp i lungearterier) som årsak til symptomene. For rask avklaring trenger du bilder dannet av røntgenstråler i kombinasjon med intravenøs kontrast. <<imgLink "IAB-2023s-3-A.jpg">> <<imgLink "IAB-2023s-3-B.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vedlagte bilder viser et CT-bilde gjennom thorax og et konvensjonelt rtg thorax, frontbilde. Redegjør for hvorfor du velger kontrastforsterket CT undersøkelse fremfor rtg thorax under intravenøs kontrastinjeksjon til utredning av lungeemboli hos denne pasienten. Redegjør for prinsipielle forskjeller mellom CT og konvensjonell røntgen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * CT gir bedre bilder, volumopptak, høy oppløsning etc. * Røntgenrør og detektor roterer rundt mens pasienten kjøres gjennom CT-maskinen. Røntgenstrålene som slipper igjennom pasienten registreres i detektoren. * En datamaskin regner ut tettheten i det avbildede området og lager anatomiske snittbilder. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * CT gir bedre bilder 0,5 * Ved CT dreier rtg.-rør og detektor rundt pasienten 0,5 * Bildedata prosesseres matematisk for å danne et tverrsnitts-bilde 0,5 Totalt 1,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Før pasienten skal undersøkes med CT lungearterier viser svar på blodprøver at hun er gravid. Hun har også lett hevelse i venstre underekstremitet. For å unngå unødig eksponering for røntgenstråler henviser du i stedet til ultralyd av dype vener venstre underekstremitet (dersom det påvises blodpropp i benet skal det uansett iverksettes behandling med antikoagulasjon / blodfortynnende og indikasjon for CT bortfaller). <<imgLink "IAB-2023s-3-C.jpg">> <<imgLink "IAB-2023s-3-D.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken egenskap ved ultralyd gjør denne bildemodaliteten svært velegnet hos barn, unge og gravide? Vedlagt er et ultralydbilde av arterie og vene på låret, inkl. fargedoppler. Redegjør for prinsippet bak ultralyd og doppler. Hvorfor foreligger det ikke dyp venetrombose / blodpropp? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ultralyd er UTEN ioniserende stråler UL-probe sender ut lydbølger. Lydbølgene vil dels penetrere og dels kastes tilbake (ekko). Lydbølgeekko fanges opp av proben. Ved doppler vil ekko fra lydbølger som kastes tilbake fra et objekt i bevegelse endre bølgelengde. Hastighet og retning på objektet avgjør hvor stor endringen i bølgelengde blir </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * UL er uten ioniserende stråler 0,5 * Utsendte lydbølger og ekko som fanges opp 1,0 * Doppler måler endret bølgelengde 1,0 * Venen er komprimerbar og med dopplersignal 0,5 Totalt 3 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siden det ikke ble påvist dyp venetrombose må lungeemboli avklares med en CT-undersøkelse av brystet inkl. lungeaterier. Vedlagt er 2 bilder fra CT undersøkelse av thorax. <<imgLink "IAB-2023s-3-E.jpg">> <<imgLink "IAB-2023s-3-F.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Redegjør for hvordan røntgenstråler dannes, deretter nevn 1 ulempe og 1 fordel med røntgenkontrast. Er undersøkelsen kontrastforsterket? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dannelse av røntgenstråler: elektroner frigis fra en katode, akselererer og treffer anoden. Nedbremsingen av elektroner danner fotoner. Fordeler er bedre kontrast i bildet Ulempe er risiko for redusert nyrefunksjon. Undersøkelsen er med kontrast. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Elektroner frigis fra katode 0,5 * Nedbremsing danner fotoner 0,5 * En ulempe 0,5 * En fordel 0,5 * Bilde med kontrast 1 Totalt 3 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Samme 2 CT-bilder <<imgLink "IAB-2023s-3-E.jpg">> <<imgLink "IAB-2023s-3-F.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Pek og benevn 5 anatomiske strukturer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er et utall anatomiske strukturer avbildet, studenten kan angi strukturer etter eget ønske. Sensor forventes å kunne vite om strukturene studenten avgir er korrekte </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver anatomisk struktur Totalt 2,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 65 år gammel mann har time hos deg på grunn av økende tungpust ved anstrengelse det siste året og de siste månedene også tørrhoste. Du undersøker pasienten og hører fine knatrelyder over lungene. Som ledd i utredningen gjøres det først spirometri med følgende kurve og verdier (% av forventet) * FEV1 = 53 % (lav) * FVC = 55 % (lav) * FEV1/FVC =0.80 (normal) <<imgLink "IAB-2023s-4-A.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva FVC og FEV1 er. Hvilken type ventilasjonsinnskrenkning foreligger? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> FVC står for forsert vitalkapasitet og er det volumet av luft man klarer ekspirere (pust ut) etter en full inspirasjon (dvs helt til TLC= total lungekapasitet). FEV1 er det forserte ekspiratoriske volum etter 1 sekund; dvs det volum luft man klarer puste ut i løpet av 1 sekund etter en full inspirasjon (dvs helt til TLC= total lungekapasitet) Kurven og verdiene viser reduksjon av FEV1 og FVC i samme størrelsesorden. Ratio FEV1%FVC er over 0.7 og dermed normal. Det foreligger derfor en restriktiv ventilasjonsinnskrenking. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for FEV1 og FVC; 1 poeng for FVC eller FEV! 1 poeng: Oppgir at det foreligger restriktiv ventilasjonsinnskrenkning </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det ble også utført måling av lungenes gassdiffusjon. Denne var nedsatt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvilken barriere oksygenet må passere på sin vei fra alveol-luft til blod og beskriv oppbyggingen av denne barrieren. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> På sin vei fra alveol-luften i lungene til blodbanen (lungekapillærene) passerer oksygenet ''den alveolokapillære membran = den respiratoriske membran''. Den består av (fra alveolside til kapillærside) et lag surfaktant (som ikke er en anatomisk del av membranen), et epitellag (på alveolsidenalveolepitel), denne hviler på epitellagets basalmembran, så et passerer oksygenet et tynt interstitie-sjikt, så igjen en basalmembran (endotel-lagets basalmembran) og deretter et tynt lag kapillær-endotel. I den respiratoriske membran mangler ofte basalmembranen slik at epitel og endotel ligger mot hverandre. (Membranen blir således svært tynn slik at avstanden som oksygen må diffundere (”diffusjonsveien”) blir svært kort. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å oppgi alveolokapillære membran (den respiratoriske membran), 1,5 poeng for å redegjøre for oppbygning (fortsatt 1,5 poeng om man mangler et av lagene i oppbygningen). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan redusere lungenes evne til gassdiffusjon? Nevn minst 3 årsaker. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Redusert areal av alveoloverflaten # Økt avstand som oksygenet må diffundere, dvs fortykket avleolokapillær membarn # Redusert kapillært blodvolum tilgjengelig for gassutveksling # Lav Hemoglobin (Hb) # Redusert trykkgradient. Jo lavere trykkgradient, jo lavere diffusjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver, maks 3 poeng selv om det nevnes flere. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det ble tatt en arteriell blodgass (som viser nivå av oksygen og karbondioksid i arterieblod). Pasienten fikk da ikke oksygentilførsel. Arteriell blodgass viste at PaO2 (partialtrykk av oksygen i arterieblod) var lav og PaCO2 (partialtrykk av karbondioksid i blodet) var normalt </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kaller vi en slik respirasjonssvikt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette kalle type 1 respirasjonssvikt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ett poeng for å angi hypoksisk respirasjonssvikt eller type 1 respirasjonssvikt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vinett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke fire fysiologiske mekanismer kan ligge bak en slik type respirasjonssvikt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fire mekanismer kan forklare en slik blodgass: # Lavt oksygeninnhold i inspirasjonsluften # Diffusjonsbarriere # Ventilasjons/perfusjons misforhold (VQ-mismatch) # Shunt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar; 2 poeng hvis alle fire (evt 3 da shunt også kan regnes som et VQ misforhold) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 23 år gammel mann blir fraktet til St. Olavs hospital med ambulanse. Han har falt på ski i Vassfjellet og har vondt i ankel/legg. Som lege i akuttmottaket får du i oppgave å undersøke ham, og som ledd i dette bestiller du en undersøkelse med røntgen skjelett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan dannes røntgenstråler, og hvordan kan disse benyttes til å skape et bilde av biologisk vev? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Røntgenstråler dannes ved at elektroner inne i et røntgenrør akselereres mot en anode av metall. I møte med metallatomene, slår elektronene et annet elektron ut av sitt orbital, og dette skaper et foton som har energi/bølgelengde som en røntgenstråle.<br><br> Disse fotonene rettes gjennom et biologisk vev, hvor de enten treffer atomkjerner/elektroner i vevet og stanses opp/bøyes av – eller de går gjennom hele vevet. Røntgenstrålene som passerer gjennom det biologiske vevet registreres på en detektorplate. Forskjellen på de områdene som registrerer røntgenstråler og de områdene om som ikke registrerer røntgenstråler danner kontrast, som igjen danner et bilde. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: For å beskrive at elektroner inne i et røntgenrør treffer en anode og danner røntgenstråler.<br> 1 poeng: For å beskrive detektorplate, og at denne enten detekterer eller ikke detekterer røntgenstråler, og at dette er grunnlaget for et bilde. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På røntgen viser det seg at mannen har et komplisert brudd i ankelen. Du beslutter å utrede videre med CT som kartlegging forut for planlagt åpen operasjon. Hva står forkortelsen CT for, og hva er prinsippet bak CT-avbildning? </div> <$details class="answer" summary="Svar" state="!!showanswer"> CT = computer tomografi. CT benytter røntgenstråler. CT-maskinen er bygd opp med en bue/sirkel, hvor pasienten ligger inne i midten av sirkelen. På sirkelen står det på den ene siden et røntgenrør, og mot motsatt side en detektor. Dette røret roterer rundt pasienten mens det passerer røntgenstråler gjennom pasienten fra røntgenrør til detektor, slik at det registreres gjennomgang av røntgenstråler fra mange vinkler. Ut fra dette beregnes tettheten i det vevet / den kroppen som var inne i CT-maskinen. Derav «computer». </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: Computer tomografi.<br> 1 poeng: Røntgenstråler, sirkel med røntgenrør og detektor, roterer, beregner hva som var inne i sirkelen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ville du hatt betenkeligheter med å undersøke et tilsynelatende ikke alvorlig skadd 3 år gammelt barn med CT? I så fall hvorfor? </div> <$details class="answer" summary="Svar" state="!!showanswer"> CT er en røntgenundersøkelse. Dette medfører bruk av ioniserende stråling, som har evnen til å slå løs elektroner fra atomer i det biologiske vevet. Dette kan gi vevskade og skade på arvemateriale / DNA – hvilket øker risikoen for kreft på sikt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: Røntgenstråler og ioniserende stråling. <br> 1 poeng: Ionisererende stråling kan slå løs elektroner og skade arvemateriale / DNA. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er som oftest raskest å gjennomføre, CT- eller MRundersøkelse? </div> <$details class="answer" summary="Svar" state="!!showanswer"> CT-undersøkelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: CT </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hovedprinsippet bak MR-undersøkelse? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Protoner i hydrogenatomer i biologisk vev plasseres i et eksternt magnetfelt i en MR-maskin. Hydrogenatomene har magnetisme, og har en vektor, og innstiller seg parallelt med det eksterne magnetfeltet. En radiofrekvenspuls som har samme frekvens som presesjonen til protonene tvinger vektoren til protonene ned fra den parallelle retningen til magnetfeltet og mot en retning transversalt fra det eksterne magnetfeltet. Protonene roterer deretter i transversalplanet, og kan registreres med en coil. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: Hydrogenatomer/protoner. Eksternt magnetfelt. <br> 1 poeng: Presesjon og radiofrekvenspuls. <br> 1 poeng: Endrer retning til transversalplan, og rotasjon i dette planet kan registreres med en coil. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En nøyaktig regulering av jernbalansen er nødvendig for å unngå både jernmangel og jernoverskudd </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 3 organer/ celletyper i kroppen som er med i reguleringen av jernmetabolismen (2 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enterocytt (i tynntarmen) <br> Hepatocytt (i lever) <br> Makrofag (i milt og lever) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng hvis kun en celletype/ ett organ nevnes, 1 poeng hvis to riktige svar og 2 poeng hvis tre riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Ved en jernmangel trer regulatoriske mekanismer inn som sørger for å øke mengden tilgjengelig jern i sirkulasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter plasmaproteinet som transporter jern i sirkulasjonen og hva vil skje med ette i situasjonen med jernmangel? (1 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> Transferrin. Produksjonen av transferrin fra lever øker ved jernmangel. (Transferrinmetningen går ned (jern/ TIBC) men det er ikke det som spørres om her) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for transferrin, 1 poeng hvis man også har fått med at dette øker ved jernmangel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved en fullstendig mangel på dette proteinet, hva tror du skjer? (1 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> En fullstendig mangel på transferrin er ikke forenlig med liv </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kun riktig svar gir poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Det meste av jernet vi tar opp er jern bundet til heme, men jern kan også tas opp som jernsalt, og denne prosessen er nøye regulert. Figuren under illustrerer en situasjon med jernmangel. [img[1AB_2024_24.png]] </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Navngi de ulike proteinene på figuren som er essensielle for transport av jernioner inn og ut av celler (1-6) og beskriv kort hva de gjør. (4 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Ferrireduktase eller duodenal cytokrom B: reduserer 3-verdig jern til 2-verdig <br> 2) 2-verdig jern transporteres inn i enterocytten fra tarmlumen via DMT-1 (divalent metalltransporter-1) <br> 3) Ferroportin: 2- verdig jern transporteres ut av cellen til blodet (fra enterocytten og fra makrofagen/ hepatocytten <br> 4) hephaesin: oksiderer 2-verdig jern til 3- verdig jern <br> 5) transportproteinet for jern i plasma: transferrin. For at jernet skal kunne tas opp av transferrin må det først oksideres til 3-verdig jern <br> 6) ceruloplasmin i makrofager og hepatocytter. Oksiderer 2-verdig jern til 3-verdig jern som kan tas opp av transferrin. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng per riktig plassering + navn på følgende : ferrireduktase/DCB, DMT-1, ferroportin (til sammen 3 poeng), 0.5 poeng for hhv hephaesin og ceruloplasmin (til sammen 1 poeng). Transferrin (nr 5) gir ikke ekstra poeng fordi det er spurt om i en tidligere oppgave. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hepcidin, hvilken rolle har den for jernmetabolismen og hva skjer i situasjonen med jernmangel som beskrevet over? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hepcidin er et hormonpeptid produsert i lever. Det binder seg til ferroportin og som da internaliseres i cellen og jernopptaket via enterocyttene går ned. Ved jernmangel vil genet som koder for hepcidin nedreguleres, og jernopptaket via tarm økes og tilgjengeligheten av jern til RBC økes. (Faktorer som påvirker er økt EPO, økt erytropoiese, hypoksemi og østrogen) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hormonpeptid, 0.5 poeng for produksjon i lever, 0.5 poeng for mekansime og 0.5 poeng for å beskrive at hepcidinnivået vil gå ned ved jernmangel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 63 år gammel mann oppsøker fastlegen på grunn av smerter i brystet. Smertene beskrives som klemmende og blir verre når han går opp bratte bakker eller flere etasjer. Han har aldri hatt plager når han er i ro. Han forteller om en episode for cirka fire uker siden da smertene ikke gikk over og varte cirka 1 time. Deretter ble han gradvis bedre, og dagen etterpå kjente han lite til symptomene. Du tar EKG og undersøker pasienten. EKG viser sinusrytme og en Q-bølge i avledning II, III og aVF. Blodtrykket er 179/98 mmHg og du hører ingen bilyd over hjertet. Han har lette ødemer i underekstremitetene. Du mistenker at pasienten kan ha iskemisk hjertesykdom og starter behandling og utredning av dette </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi minimum 6 av de viktigste risikofaktorene for iskemisk hjertesykdom og hjerte-kar sykdom generelt? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alder, kjønn, hereditet, hypertensjon, diabetes mellitus (sukkersyke), hyperkolesterolemi, røyking, abdominal fedme, fysisk inaktivitet, revmatisk sykdom, kronisk nyresvikt, Sørasiatisk etnisitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng dersom >= 6 risikofaktorer er nevnt. 1,5 poeng gis for 5 risikofaktorer. 1 poeng gis for 4 risikofaktorer. 0,5 poeng gis for 3 risikofaktorer. 0 poeng for < 3 risikofaktorer. <br> Noen studenter vil kanskje nevne psykososialt stress, men dette er ikke en av de viktigste faktorene og brukes kun skjønnsmessig i risikokalkulatorer (f.eks NORRISK 2). <br> Maks 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Pasienter med økt risiko for iskemisk hjertesykdom kan ha forstyrrelser i endotelfunksjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er endotel? <br> Forklar videre hva som menes med endotelfunksjon og gi eksempler på viktige fysiologiske mekanismer som endotelet regulerer. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Endotel er betegnelsen på cellelaget som kler innsiden av blodårer og lymfekar. <br><br> Endotelfunksjon er endotelcellene sin evne til å opprettholde normal arteriefunksjon gjennom regulering av en rekke faktorer. En av de viktigste er å regulere blodstrøm gjennom arteriene og tilpasse diameteren til arteriene i respons til ulike stimuli (regulere kartonus). Endotelfunksjonen inkluderer også regulering av hvilke stoffer som går inn og ut av vevet (permeabilitet for stoffer, barrierefunksjon). Endotelcellene er også sentrale mht koagulasjon (hindrer normalt koagulering), inflammasjon (gir ulike signaler til hvite blodceller) og angiogenese (dannelse av nye blodårer). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng gis for riktig svar på første spørsmål. 0,5 poeng gis for delvis riktig svar, her må man bruke skjønn. <br> 2 poeng gis samlet for siste del av spørsmålet. For å full score bør begrepet endotelfunksjon være definert og minst 3 mekanismer nevnt, og regulering av kartonus må være en av disse mekanismene (den er best kjent og er sentral i undervisningen som er gitt). 1-1,5 poeng gis skjønnsmessig dersom deler av svaret er riktig, f.eks dersom studenten bare nevner dette med kartonus. 0,5 poeng gis dersom enkeltelementer er riktig, men helheten tyder på manglende forståelse. <br> Maks 3 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke(n) kliniske diagnose(r) er mest sannsynlig basert på opplysningene i innledningen til oppgaven? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Angina pectoris (typiske brystsmerter ved belastning, men ikke i hvile). Gjennomgått hjerteinfarkt (basert på episoden han hadde for fire uker siden, samt funn i EKG). Hjertesvikt godkjennes også (gjennomgått hjerteinfarkt, perifere ødemer). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng dersom 2/2 riktige. 0,5 poeng dersom 1/2 riktig. Akutt hjerteinfarkt er ikke riktig og gir ikke poeng. Denne oppgaven er nok litt vanskelig for studentene på dette nivået, men de får en del hint i oppgaven og også i de senere spørsmålene som stilles. I tillegg er det begrenset poengsum å hente på denne oppgaven. <br> Maks 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Du henviser pasienten til sykehuset for videre utredning. Ved ultralyd av hjertet (ekkokardiografi) finner man redusert kontraktilitet (muskelsammentrekning) i høyre ventrikkels frie vegg og i venstre ventrikkels nedre vegg. Øvrige deler av hjertet har normal kontraktilitet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken koronararterie er høyst sannsynlig affisert? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Høyre koronararterie forsyner som regel høyre ventrikkel og venstre ventrikkels nedre vegg og det er derfor høyst sannsynlig høyre koronararterie (RCA) som er affisert. Dette samsvarer også med EKG-forandringene som gjengitt i oppgavens vignett. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng gis for høyre koronararterie (RCA). 1 poeng gis også for arteria circumflexa, men kun dersom studentene forklarer at pasienten har venstredominant anatomi (dette er nokså avansert og forventes ikke som svar). <br> Maks 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke to undersøkelser (metoder) kan man bruke til å framstille pasientens koronaranatomi? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Koronar angiografi og CT angiografi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 0,5 poeng for hvert riktig svar. <br> Maks 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Kardiologen ved sykehuset var enig i din mistanke om at pasienten hadde iskemisk hjertesykdom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som menes med iskemi (ischemi). Gi minst to andre eksempler på sykdomstilstander som har iskemi som årsak. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Iskemi er manglende blodforsyning til vev eller organ. Det er ikke nødvendig å svare mer utfyllende, men noen studenter vil kanskje gå inn på kardial iskemi ved hvile og belastning (forskjell på angina og hjerteinfarkt), evt også snakke om årsaker til iskemi (som regel aterosklerose, evt embolier). <br> Eksempler på andre tilstander som har iskemi som årsak er transitorisk iskemisk attakk/anfall (TIA), hjerneinfarkt, perifer karsykdom (som regel i underekstremiteter, claudicatio, gangren), nyreinfarkt, tarmiskemi / iskemisk colitt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig mht iskemi. <br> 1 poeng for minst 2 tilstander, 0,5 poeng dersom kun 1 tilstand er nevnt. <br> Maks 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Anette er 13 år gammel og ønsker å bruke p-piller. Hun tar kontakt med fastlegen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den helserettslige myndighetsalderen i Norge og hva er hovedhensikten med en slik aldersgrense? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Generelt 16 år <br> Hensikten er å etablere grensen for hvor lenge pasienter er å anse som barn – hvor da foreldre samtykker på vegne av helsehjelp til sine barn og helsepersonell har informasjonsplikt til foreldre - og når pasienten blir «voksen»/myndig forstått som at man selv samtykker til helsehjelp og helsepersonell ikke lenger har informasjonsplikt til foreldre. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Første del er enkelt gjengivelse: 0,5 poeng <br> Andre del, resonnerende; 1,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Anette mener fastlegen har taushetsplikt og at taushetsplikten forhindrer fastlegen i å involvere foreldrene </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Drøft om taushetsplikten forhindrer fastlegen i å informere foreldrene </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei i utgangspunktet er ikke taushetsplikten en hindring her, ettersom Anette er et barn (mangler samtykkekompetanse), og foreldre da samtykker til helsehjelp for sine barn (fordi de har foreldreansvaret) og helsepersonell har informasjonsplikt til foreldre. Spørsmålet er altså i utgangspunktet ikke et spørsmål om taushetsplikt, men om Anettes manglende samtykkekompetanse og foreldrenes rett til å utøveforeldreansvar. <br> Så er det nyanser og unntak her – loven sier at barn i alderen 12-16 år, i noen tilfeller kan tilskrives samtykkekompetanse. Taushetsplikten blir da aktuell igjen. Og informasjonsplikten til foreldrene kan under visse omstendigheter da settes til side. Hvilke omstendigheter det er snakk om, kommer inn under neste delspørsmål. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for en drøfting som trekker opp disse hovedlinjene som omtales her. Altså en drøfting som gjerne nevner at hovedregelen er at foreldre samtykker til behandling av sine barn (under 16 år) – og at taushetsplikten som hovedregel da ikke er til hinder. Men så det viktigste for denne situasjonen; at unntaksregelen kan tilsi at barn mellom 12 og 16 år tilskrives samtykkekompetanse og at taushetsplikten da, i helt bestemte situasjoner, kan være et hinder for å informere foreldrene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Anette forteller legen at foreldrene ikke må involveres fordi de, med sitt strenge livssyn, vil komme til å nekte at hun får p-piller </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Drøft om dette er relevant informasjon for fastlegen når han eller hun skal ta en beslutning </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja dette er relevant informasjon. Loven sier nemlig at «Er pasienten mellom 12 og 16 år, skal opplysninger ikke gis til foreldrene eller andre med foreldreansvaret når pasienten av grunner som bør respekteres, ikke ønsker dette». Det store spørsmålet er da om Anette sine grunner er av en slik art at de «bør respekteres». Det er ikke sikkert, men uansett er det sikkert at det er relevant å ta med inn i vurderingen. Legen må vurdere om Anette befinner seg i en slags unntakssituasjon sammenliknet med andre unge tenåringsjenter som kanskje ikke vil snakke med sine foreldre om disse tingene. Er livssynet så strengt at åpen kommunikasjon med foreldrene er helt uaktuelt? Og kan uønsket graviditet bli konsekvensen av ikke å gi Anette p-piller? </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Opp til 2 poeng gis, avhengig av hvor godt man får frem og drøfter poengene i svaret ovenfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Anette vurderes som svært moden for alderen av fastlegen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Drøft om denne vurderingen er relevant for fastlegen når han eller hun skal ta en beslutning </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja også dette er svært relevant. For når loven åpner for unntak fra hovedregelen om at man er samtykkekompetent først som 16-åring, så ligger det også i dette at det må gjøres en individuell vurdering av pasienten i 12-16-års gruppen. En svært moden 13- åring har helt andre forutsetninger for samtykkekompetanse enn en normal 13-åring for ikke å snakke om en umoden 13-åring. Tilskrivning av samtykkekompetanse forutsetter en spesielt moden 13-åring </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Opp til 2 poeng gis, avhengig av hvor godt man får frem og drøfter poengene ovenfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Lovene våre forsøker ofte å ivareta flere etiske hensyn på en gang. Det gjelder også i spørsmålet om Anette og p-pillene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ulike etiske hensyn er i spill her og som fastlegen og loven skal forsøke å balansere? </div> <$details class="answer" summary="Svar" state="!!showanswer"> I all helselovgivning og etikk rundt behandling av barn, står hensynet til barnets beste sentralt. Dette hensynet er jo i spill enten det taler for eller mot å gi p-piller. Men det er også et etisk hensyn at foreldre må få lov å utøve foreldreansvar. Riktignok skal utøvelse av foreldreansvar også basere seg på hva som er til barnets beste. Men dette kan det jo finnes ulike legitime meninger om. I spørsmålet om P-piller vil det jo kunne være legitimt for foreldre til en 13-åring å ha meninger om barnets eventuelle seksualliv. De kan også være viktige omsorgspersoner for å forhindre og forebygge evt seksuell utnytting. På den annen side kan hensynet til barnets beste selvsagt stå i spenning til foreldres ønske om å oppdra/kontrollere. Utover disse hensynene kan man selvsagt også reflektere over tillit som et tungtveiende etisk hensyn, og hva det betyr her. Og det finnes sikkert andre gode perspektiver. Oppgaven er åpen for flere svar og perspektiver, selv om kjernen i problemstillingen må sies å ligge i første del. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Opp til 2 poeng gis, avhengig av hvor god drøfting man får til her av vesentlige hensyn som er i spill. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 45 år gammel kvinne kommer til fastlegen sin med vedvarende tretthet, vekttap og diaré de siste 6 månedene. Hun har også merket at hun føler seg oppblåst etter måltider, spesielt etter inntak av matvarer som inneholder mye fett. En blodprøve viser jernmangel og lavt vitamin B12. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) a) Beskriv de makroskopiske strukturene i tynntarmen som bidrar til absorpsjonen av ernæringsstoffer. <br><br> b) Forklar hvordan de mikroskopiske strukturene i tynntarmen bidrar til denne absorpsjonsprosessen. </div> <$details class="answer" summary="Svar" state="!!showanswer"> a) De makroskopiske strukturene i tynntarmen som bidrar til absorpsjonen av næringsstoffer inkluderer tarmens totale lengde, plica circulares (sirkulære folder) og villi (tarmtotter). Disse strukturene øker overflatearealet og optimaliserer absorpsjonen. Tarmens lengde gir tilstrekkelig tid for næringsstoffene å bli absorbert, mens plica circulares bretter slimhinnen og gir en litt større absorpsjonsflate. Villi er fingerlignende utvekster som ytterligere øker overflatearealet og inneholder blodkar og lymfekar for å transportere absorberte næringsstoffer.<br> b) Mikroskopiske strukturer som bidrar til absorpsjonen inkluderer mikrovilli, som danner en børstesøm på overflaten av enterocyttene (tarmepitelcellene). Mikrovilli øker overflatearealet dramatisk og inneholder enzymer og transportproteiner som er viktige for fordøyelse og absorpsjon av næringsstoffer. Tight junctions mellom enterocyttene regulerer paracellulær transport og bidrar til selektiv absorpsjon av molekyler. Sammen gir disse strukturene en effektiv og omfattende absorpsjonsprosess i tynntarmen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For makroskopiske strukturer: minst to av lengde, plica circulares og villi (1 poeng, 0,5 poeng dersom kun en); For mikroskopiske strukturer: mikrovilli (0,5 peong) og en kort beskrivelse av enten enterocytter eller tight junctions (0,5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv prosessen for hvordan fettstoffet triglyserider absorberes i tynntarmen, inkludert viktige enzymer og strukturer involvert. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Triglyserider fordøyes litt først i magen av enzymet lipase fra spytt og magesekkens hovedceller, men hovedsakelig videre i tynntarmen av pankreaslipase. Lipase bryter ned triglyserider til monoglyserider og frie fettsyrer. Gallen med gallesalter fra leveren emulsifiserer fettet og bidrar til å danne miceller, noe som øker overflaten som pankreaslipasen med co-lipasen kan virke på. Micellene transporteres helt inn til tarmepitelcellene (enterocyttene), slik at nedbrytningsproduktene kan diffunderer inn i cellene. Inne i enterocyttene blir de re-esterifisert til triglyserider og pakkes inn i chylomikroner, som deretter transporteres via lymfesystemet til blodet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fordøyelse i magen av lipase og i tynntarmen av pankreaslipase (0,5 poeng), galle emulsifiserer (0,5 poeng) og dannelse av miceller med hjelp av gallesalter (0,5 poeng) som transporteres til tarmepitelceller (enterocytter) (0,5 poeng), der fettproduktene pakkes i chylomikroner som så går via lymfe ut i blodet (0,5 poeng). Maks 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Fastlegen mistenker cøliaki, noe som bekreftes ved en endoskopisk undersøkelse som avslører avflatede tarmtotter (villi) i duodenum og biopsier som viser både betennelse og avflatede tarmtotter . </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan absorpsjonen av jern foregår i tynntarmen, og hvordan denne prosessen kan påvirkes av de avflatede villi beskrevet hos denne pasienten med cøliaki. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Jern absorberes hovedsakelig i duodenum (tolvfingertarmen) i to former: heme-jern (ca. 10 %) fra animalske produkter og treverdig jern (90 %, hydroksider, Fe3+) fra plantebaserte matvarer. Hemejern tas opp direkte via en spesifikk hemetransporter av enterocyttene etter å ha blitt spaltet fra globinet i magesekken, mens treverdig jern må først reduseres fra ferrijern (Fe3+) til toverdig ferrojern (Fe2+), blant annet ved hjelp av enzymer i børstesømmen, før det tas opp ved hjelp av et transportprotein for divalente metallioner. Ved cøliaki er slimhinnen i duodenum ofte skadet med totteatrofi og reduksjon i viktige enzym og transportprotein, noe som reduserer absorpsjonsevnen og kan føre til jernmangelanemi, sånn som sett i pasientens blodprøvesvar. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Beskrivelsen av heme-jern og treverdig jern (1 poeng), konsekvenser for absorpsjonsevnen av reduksjon i tynntarmoverflate og enzym og transportprotein (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) a) Beskriv tynntarmens rolle i absorpsjonen av vitamin B12. Hvilken spesifikk del av tynntarmen er primært involvert? (2 poeng) <br><br> b) Hva er den fysiologiske rollen til vitamin B12? Nevn minst ett funn/symptom som kan oppstå ved mangel (1 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> a) Absorpsjon av vitamin B12 skjer primært i den distale delen av tynntarmen, ileum. Vitamin B12 bundet til intrinsisk faktor (IF) utskilt av gastriske parietalceller blir svært mye lettere absorbert ved å bindes til spesifikke reseptorer på enterocyttene i ileum.<br><br> b) Vitamin B12 er essensielt for DNA-syntese og nervefunksjon ved vedlikehold av myelinskjeder. Mangel på vitamin B12 kan føre til megaloblastisk anemi (pernisiøs anemi) med anemisymptomer som blekhet, trøtthet/slapphet, svimmelhet, hodepine, økt puls, samt nevrologiske symptomer som nummenhet og prikking i hender og føtter, hukommelsesproblemer og balanseproblemer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> (a) Distale delen av tynntarmen (ileum) (1 poeng), og beskrivelsen av IF og spesifikke reseptorer på enterocytter der (1 poeng)<br> (b) Essensielt for DNA-syntese og nervefunksjon (0,50 poeng) og å nevne minst to riktig symptom/funn (0,50 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Pasienten i kasuset kan oppleve diaré etter inntak av fettholdig mat. Beskriv de underliggende mekanismene som fører til dette symptomet ved fettmalabsorpsjon. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Når fett ikke absorberes effektivt i tynntarmen, forblir det i tarmlumen og vil bidra til at vann trekkes inn i lumen, noe som fører til osmotisk diaré. Uabsorbert fett kan også fermenteres av bakterier i tykktarmen, noe som produserer gasser som bidrar til oppblåsthet.<br> (Mekanismene bak fettmalabsorpsjon kan inkludere mangel på gallesalter, som er nødvendige for emulsifisering av fett, eller enzymmangel som hindrer effektiv nedbrytning og absorpsjon av fettsyrer. Ved tilstander som cøliaki kan skadet tarmvev ytterligere redusere absorpsjonsoverflaten og forverre symptomene.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> (Beskrivelsen av osmotisk diaré er tilstrekkelig for å få 1 poeng (full skår). Ellers hvis osmotisk diaré ikke nevnes eller beskrives: 0,5 poeng for gasser fra fermentering av fett av bakterier og / eller 0,5 poeng for beskrivelser av underliggende årsaker bak fettmalabsorpsjon. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 24 år gammel mannlig fotballspiller kommer til klinikken etter en vridningsskade i høyre kne under en kamp. Han rapporterer om umiddelbare smerter og hevelse i kneet, og han er ikke i stand til å bære vekt på det berørte benet. Ved fysisk undersøkelse er det merkbar leddeffusjon og ømhet over det mediale aspektet av kneet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Identifiser og beskriv beinene som danner kneleddet og hvordan de artikulerer sammen? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kneleddet består av tre bein: femur, tibia og patella. Femur og tibia artikulerer sammen ved de mediale og laterale kondylene for å danne tibiofemoralleddet, mens patella artikulerer med femur i patellafemoral leddet. Disse leddene tillater fleksjon, ekstensjon, og små grader av rotasjon og glidning, som er essensielle for kneets funksjon og bevegelse. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Inkluder femur, tibia og patella, (1 poeng) og beskriv hvordan de artikulerer sammen i kneleddet (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Tre dager senere kommer pasienten tilbake. Kneet kjennes ustabilt ut og pasienten fortsatt kan ikke belaste kneet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du navngi de seks viktigste bindevevstrukturene som er avgjørende for kneets stabilitet? </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1. Meniscus medialis / mediale menisk <br> 2. Meniscus lateralis / laterale menisk <br> 3. Lig. collateral tibiale / mediale sideligament (MCL) <br> 4. Lig. collaterale ulnare/ laterale sideligament (LCL) <br> 5. Lig. cruciatum anterius / anterior cruciate ligament (ACL) / fremre korsbånd <br> 6. Lig. cruciatum posterius / posterior cruciate ligament (PCL) / bakre korsbånd </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for korrekt navn på hver struktur (maks 3 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Du mistenker at pasienten har skadet lig. collaterale tibiale / mediale sideligament (MCL) på bakgrunn av mediale ømhet og hevelsen. Noen ganger er denne skaden ledsaget av det som kalles «unhappy triad». Hvilke andre to strukturer er da skadet? (1 poeng). </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1. Meniscus medialis / mediale menisk <br> 2. Lig. cruciatum anterius / anterior cruciate ligament (ACL) / fremre korsbånd </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng per riktig svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort meniskenes funksjon i kneleddet? (1 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> Meniskene i kneleddet er to bruskstukturer som fungerer hovedsakelig som støtdempere. I tillegg beskytter de leddbrusken, bidrar til stabilitet og «passform» (leddkongruens). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Støtdempere (1 poeng); stabilisering av leddet, leddkongruens og eller beskyttelse av leddbruksen (maks. 1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi navn på de to viktigste muskelgruppene som beveger kneleddet? Hvilken bevegelse utfører hver gruppe og i hvilket anatomiske plan foregår bevegelsene? (3 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> Store muskelgrupper rundt kneet inkluderer: <br> • Quadriceps på lårets fremside, som er involvert i ekstensjon av kneet <br> • Hamstrings på lårets bakside, som er involvert i fleksjon av kneet. <br> Bevegelsene fleksjon og ekstensjon av kneet foregår i sagittalplanet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Inkluder quadriceps og ekstensjon (1 poeng), hamstring og fleksjon (1 poeng), og sagittalplan (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Oppgaven fordrer beskrivelse av respirasjonsfysiologiske prinsipper og fenomener. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv sammenhengen mellom elastisk tilbakefjæringskraft og ekspiratorisk luftstrøm på hhv høye og lave lungevolum? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Luftstrømmen avtar gradvis i ekspiriet fordi barduneffekten på luftveiene fra den elastisk tilbakefjæringskraften avtar på lavere lungevolum. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Større barduneffekt på luftveiene på høyere vs lavere lungevolum. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan forholdet mellom 2 sentrale delfunksjoner i lungen bestemmer sammensetningen av respiratoriske gasser i alveolene. Hva menes med «shunt» og «dødrom» </div> <$details class="answer" summary="Svar" state="!!showanswer"> Forholdet mellom ventilajson og perfusjon bestemmer sammensetningen av respiratoriske gasser i alveolene. Ventilasjonen tilfører O2 og fjerner CO2. Perfusjonen fjerner O2 og tilfører CO2. <br> Shunt: Perfusjon av ikke- eller underventilerte alveoler <br> Dødrom: Ventilasjon av ikke- eller underperfunderte alveoler. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: Beskrivelse av V/Q forhold. <br> 1 poeng: Shunt og dødrom beskrivelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan transporteres oksygen i blodet og hvilke faktorer bestemmer oksygenkonsentrasjonen (CaO2) i arterielt blod? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Oksygen transporteres hhv bundet til hemoglobin og løselig. <br> Faktorer som bestemmer CaO2: Hb, SaO2 og PaO2 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: Bundet og løselig form. <br> 1 poeng: Alle tre faktorer. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Under en fysisk belastningstest med gradvis økende intensitet viser gjentatte arterielle blodgassmålinger at oksygenmetningen (SaO2) faller mot maksimal belastning selv om partialtrykket av oksygen (PaO2) er helt uendret gjennom hele testen. Hva forklarer dette? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Høyreforskyning av oksyhemoglobinets dissosiasjonskurve på grunn av belastningsindusert lactacidose/lav pH og økt kroppstemperatur. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Høyreforskyvning pga lav pH og økt temperatur under fysisk aktivitet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Karbonmonoksid (CO) benyttes til å teste lunges diffusjonsegenskaper. Hva menes med at CO er en diffusjonsbegrenset gass? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binding mellom CO og hemoglobin i erytrocyttene forhindrer stigende partialtrykk av CO i pulmonalt kapillært blod. Da oppstår det ikke et mottrykk i kapillærene og transporten av CO over alveolokapillær membran bestemmes da av membranens diffusjonsegenskaper og ikke mengden tilgjengelig blod i kapillærene (perfusjonen). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På tross av at vi spiser bare noen få ganger i løpet av dagen og dermed får ujevn tilførsel av næringsstoff gjennom døgnet, greier kroppen å holde et nokså jevnt nivå av glukose i blodet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles de to viktigste hormonene som hindrer store svingninger i nivået av blodglukose i situasjoner uten ekstra høye krav til forbruk av energi? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Insulin og glukagon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ett poeng for hvert av hormonene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvor disse hormonene produseres (organ og celletype) og hvordan de forhindrer store svingninger i blodglukose? </div> <$details class="answer" summary="Svar" state="!!showanswer"> Begge hormonene produseres i bukspyttkjertelen (pankreas), insulin av betacellene og glukagon av delta-cellene i de langerhanske øyene. De skilles ut til blodet i respons til hhv. høy og lav blodglukose hos friske mennesker. <br> Insulin og glukagon forhindrer store svingninger i blodglukose ved at insulin senker et høyt blodsukkernivå, mens glukagon øker nivået av glukose når det er lavt. Insulin fremmer glukoseopptak i celler (spesielt i muskel- og fettceller) ved å oppregulere nivået av glukosetransporteren GLUT4. Import av glukose til cellene via GLUT4 skjer ved fasilitert diffusjon og importhastigheten øker ved at insulin senker intracellulært glukosenivå gjennom å stimulere glykolyse og, i lever og muskelceller, glykogensyntese. Glukagon øker glukosenivået i cellene gjennom å hemme glykolysen og ved å stimulere glykogenolyse (lever- og muskelceller) og glukoneogenese (leverceller). Når det intracellulære glukosenivået holdes oppe, vil diffusjonen av glukose inn i cellene reduseres. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig produksjonssted og 1 poeng for kort forklaring på hvordan de bidrar til glukosehomeostase. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Energiinnholdet i glukose kan enten lagres eller omformes til ATP. Under normale forhold, vil lagring av glukose sikre at celler har tilgang på glukose for både kortvarig energiutnyttelse og langvarig energilagring. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvordan energien i glukose kan lagres i henholdsvis en lett mobiliserbar og en tyngre mobiliserbar form. </div> <$details class="answer" summary="Svar" state="!!showanswer"> Energien i glukose kan lagres ved at glukose omdannes til glykogen eller til triglyserider. <br> Glykogen er en polymer av glukosemolekyler som lagres i lever- og muskelceller, og fungerer som korttidslager av energi. Glykogen kan raskt brytes ned ved behov (glukogenolyse). <br> Triglyserider lages ved lipogenese, hvor glukose først omdannes til glyserol og fettsyrer, hovedsakelig i lever- og fettceller. Triglyseridene lagres i fettceller (adipocytter) og fungerer som langvarig energilagring. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Glykogen med beskrivelsen (1 poeng) og triglyserider med beskrivelsen (1 poeng). For hvert molekyl – 0,5 for å oppgi navn og 0,5 for hvor det lagres. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Glukose kan brytes ned og utnyttes til ATP-produksjon i glykolyse og eventuelt videre i krebssyklus (sitronsyresyklus) og oksidativ fosforylering. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor i cellene foregår henholdsvis a) glykolyse og b) krebssyklus/oksidativ fosforylering? (2 poeng) </div> <$details class="answer" summary="Svar" state="!!showanswer"> Glykolyse skjer i cytosol og b) krebssyklus/oksidativ fosforylering i mitokondrier. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Sluttproduktet i glykolysen er α-ketosyren pyruvat. Denne metabolitten kan betraktes som et viktig metabolsk «veikryss» ved at den kan være utgangspunktet for flere ulike metabolske spor. fosforylering. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn minst tre molekyler som pyruvat kan omdannes til i humane celler (se figur) og gi en kort beskrivelse av forhold som bestemmer hvilket av disse mellomproduktene cellen prioriterer å lage (3 poeng). [img[1AB-2024s-45.png]] </div> <$details class="answer" summary="Svar" state="!!showanswer"> I celler med god tilgang på oksygen vil to av karbonatomene fra pyruvat kunne gå inn i krebssyklus ved at det dannes sitronsyre (citrat). Først reagerer pyruvat med koenzym-A. Da dannes acetylkoenzym-A som igjen kan spaltes til koenzym-A og sitronsyre. Deretter kan sitronsyren omdannes videre i krebssyklus. Pyruvat kan også gå inn i krebssyklus eller bli utgangspunkt for glukoneogenese ved at det reagerer med et bikarbonation til oxaloacetat. I celler med lavt oksygennivå kan puruvat omdannes til melkesyre (laktat) ved hjelp av enzymet laktatdehydrogenase (LD). I celler som inneholder enzymet alanin-aminotransferase (ALAT) kan pyruvat omdannes til aminosyren alanin i en såkalt transamineringsreaksjon der en aminoguppe overføres fra glutamat til pyruvat. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 3 mulige poeng totalt. To poeng for kombinasjonen citrat, laktat og alanin. Eventuelt kan ett av molekylene være byttet ut med oxaloacetat. Etanol er ikke riktig svar siden det er snakk om humane celler. Ett riktig produktmolekyl gir 1 poeng. <br><br> 1 poeng for tilfredsstillende beskrivelse av hva som bestemmer hvilket metabolsk spor som velges </$details>
<<imgTiddler>>
<<imgTiddler>>
<<imgLink>>
<<imgLink>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<<imgLink>>
<div class="oppgave"> <div class="vignett"> !!Vignett Ola ble født med keisersnitt i uke 34 på grunn av sviktende morkakefunksjon. Mor drakk noe alkohol i svangerskapet, også etter at hun visste at hun var gravid. Gutten veide kun 1,5 kg ved fødselen (gjennomsnittsvekt ved denne gestasjonsalder: 2.3 kg) og hadde litt spesielle ansiktstrekk. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan alkoholbruk i svangerskapet skade fosteret? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alkohol skader fosteret særlig ved sin __innvirkning på sentralnervesystemets utvikling__. Sentralnervesystemet __utvikler seg gjennom hele svangerskapet__ og er dermed særlig sårbart for skadelige effekter av alkohol. Alkohol hemmer dannelsen av nerveceller, fører til feilvandring (malmigrasjon) av nerveceller, skader støttevevet og påvirker normal myelinisering og synapsefunksjon. Dette kan føre til __strukturelle endringer i hjernen, mikrocefali__ og til __ulike grader av nevrologisk funksjonsnedsettelse__: Lærevansker, atferdsvansker, hukommelsesvansker, oppmerksomhetsvansker/ADHD, sosiale vansker, motoriske vansker etc. Grad av fosteraffeksjon er avhengig av: tidspunkt for eksposisjon i fosterlivet, hyppighet, og mengde alkohol (mange usikkerhetsfaktorer), genetisk disposisjon, sårbarhets/ beskyttelsesfaktorer. Alkoholinntak skjer ofte i kombinasjon med andre uheldige prenatale og postnatale eksponeringer/risikofaktorer (polydrugs, røyking, dårlig ernæring, vanskjøtsel). I tillegg til å gi skader på sentralnervesystemet, påvirker alkohol __vekst, ansiktstrekk og kan gi medfødte misdannelser__ også i andre organsystemer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0-2 poeng avhengig av hvor mye som nevnes av understreket tekst over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er karakteristisk for barn med medfødt alkoholskade (FAS) med tanke på vekst og ansiktstrekk? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Karakteristika for barn med medfødt alkoholsyndrom (FAS): __Nedsatt vekst__ – både av vekt, lengde og hodeomkrets - __mikrocefali__. __Spesielle ansiktstrekk__: Liten øyespalte, dårlig definert filtrum, lite lepperødt på overleppa. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng hvis nevner både vekstkarakteristika og minst ett ansikts-karakteristika, 1/2 poeng dersom kun vekst __eller__ ansikt nevnes korrekt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På helsestasjonskontrollen ved 12 måneders alder gjør du som helsestasjonslege en utviklingsvurdering av Ola. Han kravler og har nettopp begynt å komme opp i 4–fots krabbing. Han sitter alene uten støtte. Han reiser seg ikke opp fra sittende til stående stilling. Han griper etter småting med et helhåndsgrep. Han har ingen sikre ord ennå. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Synes du utviklingen til Ola virker aldersadekvat? Begrunn svaret </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ola er noe forsinket i sin utvikling da han mangler en del milepæler som en ville forvente ved 12 mnds alder (1 poeng). Hans utvikling passer best med et barn på ca. 8-10 mnd (1 poeng) – han sitter, kravler, men krabber ikke, og reiser seg ikke opp ennå. Han har ikke utviklet pinsettgrep. Han har heller ikke noen ord ennå. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du observerer også at når Ola sitter på mors fang, så smiler han og strekker armene ut mot deg. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv markører for normal utvikling av barnets forhold til og samspill med primær omsorgsperson i de første 1½ leveår </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Første 3 mndr: Interessert i ansikter – __sosialt smil, liksomgråt – første sosiale gråt__ 3 mndr: __tristhet ved atskillelse, emosjonsregulering karakterisert av at foreldre trøster.__ 3-6 mndr: økt orientering mot primære omsorgspersoner, egenregulering av emosjoner begynner, foreldre tilpasser stimulering. 4-12mndr: __Fremmedfrykt__ oppstår gradvis (peak ~9 mndr). Foreldre er tilgjengelige og responderer på barnets behov. Fra 10 mndr: __sosial referering__: barnet bruker andres emosjonelle uttrykk for å avgjøre hva de skal gjøre i usikre situasjoner. Omsorgsperson og barn kan ha felles oppmerksomhet mot noe utenfor dem selv og dele emosjoner. Ca. 1 ½ år: omsorgsgiver er __trygg base__ for barnets utforskning av omgivelsene, og som barnet stadig vender tilbake til. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Før 1 ½ år: 2 poeng hvis nevner flere aspekter av understreket tekst, 1 poeng dersom kun nevner et par av punktene, 1/2 poeng dersom kun nevner ett av punktene. Ca. 1 ½ år: 1 poeng hvis nevner understreket tekst. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Som 8-åring er han en aktiv gutt som er upopulær blant barna i klassen. Han dominerer i lek, vil være først i alt som skal foregå, og hører ikke etter når lærer ber ham ta hensyn til andre </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke trekk kjennetegner barn som viser god sosial samhandling? Begrunn svaret </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Et barn som har __innlærte holdninger og regler for atferd__, dvs. hva man gjør og ikke gjør overfor andre individer. God sosial samhandling krever også __forståelse av andres sinn__: ulike individer kan oppfatte samme situasjon ulikt, og en må kunne trekke slutninger om andres oppfatninger, tanker og følelser. Andre momenter som kan telle positivt i besvarelsen: Må kunne opprettholde turer i samspill, være villig til å dele, være positiv og lite aggressiv, kunne forhandle konflikter. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng hvis nevner understreket tekst, 1 poeng dersom kun nevner ett av punktene (men utover de stikkord som er gitt i oppgaven). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 38 år gammel kvinne kontakter deg som hennes fastlege. Hun er samboer og har 2 friske barn på 10 og 6 år. Hennes mor fikk for 5 år siden påvist diabetes som kunne behandles med tabletter, 64 år gammel. Pasienten har de siste 2-3 månedene ikke følt seg helt i form. Hun har vært litt slapp og tørst, har hatt økt søvnbehov, økt urinmengde med minst én nattlig vannlating, og hun har gått ned 3-4 kg i vekt tross ganske god matlyst. Hun har ikke vært i form til å trene. Ved klinisk undersøkelse finner du at pasienten er i god allmenntilstand. Blodtrykket er 155/95, pulsen 84 og regelmessig. Høyde 168 cm, vekt 78 kg. Normale forhold ved undersøkelse av hjerte og lunger. Abdomen er bløt og uøm, litt adipøs med økt bukomfang. På grunn av tidsnød rekker du ikke å undersøke føttene. Blodprøver ble tatt kl. 1100, 3 timer etter frokost: Hemoglobin 15,4 g/dL (referanseområde 11,7 – 15,3 g/dL), plasmaglukose 10,7 mmol/L (referanseområde for fastende prøve: 4,2 – 6,3 mmol/L), ~HbA,,1c,, (glykosylert hemoglobin) 8,6 % (referanseområde 4,3 – 5,6 %). Urinprøve undersøkt med strimmeltest: Glukose +++, ketoner negativ, blod negativ, protein negativ, leukocytter negativ. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken kroppsmasseindeks (body mass index, BMI) har denne pasienten? Oppgi svaret med én desimal </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> BMI 27,6 (78 / (1,68 x 1,68)) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mekanismen for at personer med høyt blodsukker (plasmaglukose) ofte plages med økt tørste? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Økt p-osmolalitet (pga. økt p-glukose) trigger osmoreseptorer og tørstesenteret i hypothalamus. Økt osmotisk diurese gir et mindre bidrag til tørsten. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du mistenker at pasienten har diabetes mellitus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Begrunn hvor sikker diabetesdiagnosen er. Forklar om det er behov for ytterligere tester for å kunne stille diagnosen diabetes mellitus? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den er sikker. Hun har symptomer på diabetes, klart forhøyet ~HbA1c (≥ 6,5 % som er Helsedirektoratets anbefalte foretrukne diagnostiske kriterium for diabetes). Hun er ikke fastende, så man kan ikke si at p-glukose bekrefter diagnosen, men p-glukose ligger nær oppunder et nivå som også ville ha bekreftet diagnosen (≥ 11,1 mmol/L). Det er ikke behov for flere tester/prøver for å stille diabetesdiagnosen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke argumenter kan i dette tilfellet tale for henholdsvis type-1 og type-2 diabetes mellitus? Nevn minst 2 prøver eller tester som kan tas for å klassifisere hennes (mulige) diabetes sikrere? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Følgende argumenter bør være med: ''For type 1 taler:'' Vekttap, alder (svakt argument), ikke veldig overvektig, kan godt ha autoimmun diabetes (LADA) selv om en del kliniske kjennetegn taler for type 2. Sykehistorien er nokså kortvarig. ''For type 2 taler:'' Moderat vekttap, alder, overvekt (selv om den er beskjeden), abdominal fedme, familiehistorie, flere måneders sykehistorie, forhøyet blodtrykk. Minst 2 prøver som kan tas: Insulin C-peptid, diabetesrelaterte autoantistoffer (antiGAD, anti-IA2, anti-ZnT8). Vesentlig mer avansert svar: Tester for å utelukke Cushings syndrom, akromegali eller andre årsaker til sekundær diabetes. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det viser seg neste dag at fastende plasmaglukose er 8,4 mmol/L (referanseområde 4,2 – 6,3 mmol/L) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mekanismen for forhøyet fastende plasmaglukose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Økt hepatisk glukoseproduksjon (glykogenolyse og glukoneogenese) pga. for liten insulineffekt på leveren </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dersom du hadde tatt deg tid til å undersøke pasientens føtter nærmere på legekontoret, hvilke undersøkelsesmetoder vil vært aktuelle? Hvilke funn vil du spesielt sett etter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Undersøkelse av sensibilitet ved hjelp av monofilament og stemmegaffel, eller mer avanserte undersøkelsesmetoder, og palpasjon av puls i fotarterier, evt. vurdering av arteriell sirkulasjon ved hjelp av mer avanserte metoder (BT-måling med utregning av ankel/arm-indeks). Tegn til nedsatt sensibilitet (berøringssans, vibrasjonssans, andre sansekvaliteter) og tegn til nedsatt arteriell sirkulasjon (nedsatt puls og/eller blodtrykk i ankelnivå eller lenger opp i underekstremiteten). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv mekanismen for at ~HbA,,1c,, stiger med økende gjennomsnittlig plasmaglukose. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Jo høyere gjennomsnittlig p-glukose over tid, jo høyere andel av hemoglobinmolekylene blir glykert eller glykosylert, dvs. inngår en varig forbindelse med glukose. Dette er en non-enzymatisk langsom, irreversibel prosess (Hemoglobin + glukose <-> Schiff base -> ~HbA,,1c,,), som gjør at ~HbA,,1c,, reflekterer gjennomsnittlig p-glukosenivå plasma over 6-8 uker. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke diagnostiske prøver/tester kan brukes som alternativ i de tilfeller der ~HbA1c ikke er tilgjengelig? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fastende p-glukose og/eller peroral glukosebelastning (2-timers, 75 g glukose, blodprøve 0 og 120 minutter). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Infeksjonssykdommer er fortsatt en viktig årsak til sykdom og død, særlig i lavinntektsland. For å kunne påvise og behandle slike sykdommer er det viktig å kjenne til mikrobene, hvordan de forårsaker sykdom, og hvordan de kan forebygges og behandles. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv prinsippet for Gram-farging, og forklar hvorfor bakterier får forskjellig farge ved denne teknikken </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gram 1 (krystallfiolett) bindes til celleveggen, Gram 2 (jod) danner kompleks med krystallfiolett og binder denne til celleveggen, Gram 3 (etanol eller aceton) avfarger bakteriecellene, og Gram 4 (safranin) kontrastfarger alt som ikke er blått. Den tykke celleveggen (pga tykt peptidoglycanlag) hos Gram positive bakterier holder bedre på krystallfiolett enn den tynne celleveggen (med lite peptidoglycan) hos Gram negative bakterier. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Bakterier kan erverve genmateriale fra omverdenen. Beskriv tre ulike måter som dette kan skje på. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Transduksjon (via bakteriofag), konjugasjon (via pilus- plasmid) og transformasjon (opptak av nakent DNA) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Enkelte bakterier har spesielle egenskaper som gjør dem i stand til å forårsake sykdom hos mennesker. Nevn type og funksjon for de viktigste virulensegenskaper hos humanpatogene bakterier. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kapsel (kamuflasje-hindre fagocytose), evne til adheranse (kolonisering), produksjon av toksiner (ekso/ endo-toksiner, påvirke funksjon, cytotoksisitet), evne til å invadere vev/celler (enzymer), evne til bevegelighet (flageller, pili), evne til å overleve intracellulært, resistens mot antibiotika, induksjon av inflammasjon. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Både mikroskopi, dyrkning og PCR er nyttige metoder for påvisning av årsak ved bakterieinfeksjoner. Beskriv fordeler og begrensinger ved hver av disse metodene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mikroskopi: rask og billig, men dårlig sensitivitet. Dyrkning: vanligvis bedre sensitivitet enn mikroskopi, kan finne noe en ikke har tenkt på, viktig for å teste antibiotikafølsomhet og for genotyping, men tar lengre tid, og avhengig at mikroben fortsatt er i live. PCR: rask, sensitiv og spesifikk, men finner kun det en leter etter. Kan detekter rester av døde mikrober. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan fastsettes brytningspunkt for om en bakterieart er følsom overfor ett bestemt antibiotikum? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mikrobiologisk respons (bakteriens naturlige følsomhet, in vitro følsomhet og resistensmekanismer), farmakokinetikk (opptak, distribusjon etc), farmakodynamikk (dose-respons,maks effekt, varighet av effekt etc), toksisitet, og klinisk respons (kliniske studier, dyrestudier). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 77 år gammel mann fikk akutt innsettende høyresidige lammelser i arm og ben og ble innlagt nevrologisk avdeling. Han hadde ellers en kronisk obstruktiv lungesykdom og skulle visstnok ha hatt problemer med hjertet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket blodkar er rammet dersom dette er en cerebrovaskulær hendelse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Arteria cerebri media på venstre side. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mannen fikk økende hoste og feber og fikk antibiotika grunnet mistanke om lungebetennelse. Han ble funnet død i sengen seks dager etter innleggelsen. Legene ønsket å rekvirere (medisinsk) obduksjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den generelle grunnen til at man rekvirerer obduksjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette gjøres av medisinske grunner for å stadfeste eller kartlegge dødsårsaken. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva må legen alltid først si til pårørende før obduksjon eventuelt blir rekvirert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> At man ønsker å rekvirere obduksjon og at obduksjonsmateriale (organer) kan bli brukt til undervisning og forskning. Videre at pårørende kan nekte at obduksjon blir utført, eller at organer blir brukt til forskning og undervisning. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Obduksjon ble utført. Den utvendige undersøkelsen av hjernen var normal. Den ble fiksert i formalin for nærmere undersøkelse etter noen uker. Videre ble det påvist makroskopiske forandringer som ved akutt lungebetennelse i høyre lunge, et hvitt område i bakre vegg av venstre hjertekammer, tre hvite, faste, rundovale tumorer med største tverrmål 4 cm i lever, og i tykktarmens nedre del en vollformet ulcererende tumor med største tverrmål 5 cm. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort det viktigste du ser ved mikroskopi av lungevev med akutt betennelse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Neutrofile granulocytter i alveolene (og ev. granulocytter i bronkiene/bronkiolene) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags vev er det hvite vevet i hjertet og hva er diagnosen? Hvilket blodkar er mest sannsynlig involvert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hvit er arrvev. Arrvev i hjertet representerer gammelt (tilhelet) infarkt. Arteria circumflexa eller høyre koronararterie, avhengig av individuell anatomi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den sannsynlige diagnosen på forandringene i tykktarm og lever? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Adenokarsinom i tykktarmen med metastaser til lever. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter noen uker blir storehjernen undersøkt ved at den blir skåret i 1 cm tynne skiver i frontalplanet. Sentralt i venstre storehjerne var det en grågul, bløt forandring som er 2 cm stor. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor er denne forandringen lokalisert, og hva er diagnosen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Capsula interna og diagnosen er ferskt infarkt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Jesper er en gutt på 3 år som blir innlagt for andre gang med lungebetennelse. Ved analyse av en blodprøve oppdages det at serumet til Jesper inneholder veldig mye IgM, mens nivået av IgG og IgA er lavt. En genetisk undersøkelse viser at Jesper har en mutasjon i genet for CD40 ligand (CD40L = CD154). Jesper blir diagnostisert med x-linked hyper-IgM syndrom (XHIGM). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) CD40L er et protein som er høyt uttrykt på T-celler etter aktivering. Beskriv kort hvordan mutert CD40L protein på T-celleoverflaten kan føre til Jespers tilstand med mye IgM, men lave nivåer av IgG og IgA. Hvorfor er det viktig at B-cellene har evne til å lage forskjellige typer antistoff? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Isotypeskifte fra IgM til andre isotyper antistoff er avhengig av B cellekontakt med T hjelperceller (CD4+ Tfh –follikulære T hjelperceller) via CD40/CD40L. Mutasjoner i CD40L kan føre til redusert T cellehjelp til isotypeskifte og dermed reduserte nivåer av andre typer antistoff enn IgM (1 poeng). ''Bakgrunn'' (ikke påkrevd for full poengsum): Isotypeskifte skjer i aktiverte B celler etter somatisk hypermusjon og krever interaksjon med T celler (Tfh) via CD40/CD40L, cytokiner bestemmer hvilken isotype av antistoff som lages. Forskjellige isotyper antistoff kan mediere forskjellige effektorfunksjoner i forsvar mot patogener (1 poeng). ''Bakgrunn'' (ikke påkrevd for full poengsum): Forskjellige isotyper antistoff har samme spesifisitet, men utløser forskjellige effektorfunksjoner (se delspørsmål b), ikke nødvendig med noen eksempler eller mer utdypende forklaring her </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Skisser strukturen av et antistoff-molekyl, og angi ovedbestanddelene og deres viktigste funksjoner på skissen. Hva er de viktigste effektormekanismene mediert av antistoffmolekyler? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hovedbestanddelene og viktigste funksjoner (1 poeng, informasjon i parentes er ikke påkrevd for full poengsum): * 2 tunge og 2 lette kjeder (holdes sammen av disulfidbroer) * variabel og konstant del på både tung og lett kjede * 2 identiske antigen-bindende seter (sammensatt av variable deler på tung og lett kjede) * konstant del av tung kjede bestemmer effektorfunksjon. Effektormekanismer (1 poeng hvis 3 av 4 blir nevnt): * Nøytralisering * Komplementaktivering * Opsonisering * Antibody-Dependent Cell-mediated Cytotoxicity (ADCC) <<imgLink "ICD-2015s-1-A.PNG" 500>> </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv mekanismen(e) som under B-cellemodningen sikrer at B-celler ikke blir autoreaktive og gjenkjenner kroppens egne strukturer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Negativ seleksjon av B celler på slutten av modningsprosessen i beinmargen: Celler som har en sterk binding til egne celleoverflateantigener (sterk binding til multivalente antigener) dør i apoptose eller gjennomgår "receptor editing" (re-arrangement av ny lett kjede). Hvis den nye B cellereseptoren fortsatt er selv-reaktiv dør cellene i apoptose ("clonal deletion"). B celler som har en svak binding til egne monovalente løselige antigener blir anergiske (cellen blir ikke-responsiv). For full poengsum bør nevnes negativseleksjon og gi en kort forklaring av begrepet (1 poeng) med mulig utfall hvis cellen oppdages som autoreaktiv (arrangement av ny reseptor, celledød, celler blir ikkeresponsiv, det er ikke krav å ha med fagtermene "receptor editing", "apoptose", "anergi", 1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv forskjellene mellom en primær- og en hukommelses B-cellerespons. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Raskere og mer effektiv- respons med antistoff som har høyere affinitet: Økt antall spesifikke hukommelsesceller som kan reagere mot antigenet sammenlignet med antall naive B celler under en primærrespons. Hukommelses-B celler har en lavere terskel for aktivering enn naive B celler (konstitutiv uttrykk av B7). Hukommelses-B celler har gått gjennom affinitetsmodning (somatisk hypermutasjon) og isotypeskifte -> produserer antistoff med høyere affinitet enn under en primærrespons, isotype-skifte fra IgM til for eksempel IgG. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hovedforskjellene i måten B-cellereseptorer og T-cellereseptorer gjenkjenner antigen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> B cellereseptor gjenkjenner nativt antigen direkte (ikke presentert på MHC) T cellereseptor gjenkjenner prosessert antigen presentert på MHC I eller II på overflaten av antigenpresenterende celler (korte lineare peptide som gjenkjennes i kontekst med MHC molekylet). For full poengsum bør nevnes at T celler identifiseres korte peptider presentert på MHC og at B celler identifiserer antigener direkte (informasjon som står i parentes er ikke påkrevd for full poengsum). <<imgLink "ICD-2015s-1-B.PNG" 600>> </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 51 år gammel mann ble innlagt for elektiv brokkoperasjon. Under operasjonen ble det funnet en stor tumor i abdomen, og derfor ble hele colon transversum og deler av magesekken fjernet. Undersøkelse av patolog konkluderte med at det dreide seg om en «gastrointestinal stromal tumor» (GIST). Dette er en type ondartet tumor som er karakterisert ved aktiverende mutasjoner i genet for en tyrosin-kinase. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Mange tumortyper er forbundet med overaktivitet i ulike tyrosin-kinaser. Hva er tyrosinkinase? Forklar kort hvilken rolle slike enzymer spiller i celler og vev, og forklar ut fra dette hvordan de kan være involvert i tumorutvikling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tyrosin-kinaser er enzymer som katalyserer fosforylering av proteiner ved å kople fosfatgruppe på tyrosin. Slik fosforylering har ofte dramatisk effekt på proteinets funksjon, ofte i form av økt aktivitet, så tyrosin-kinaser spiller derigjennom stor rolle som regulatorer av mange cellulære funksjoner, særlig slike som har med vekst og differensiering å gjøre. Mange vekstfaktorer virker via tyrosin-kinaser og proteinfosforylering. Mange vekstfaktorer binder seg til en cellemembranbundet reseptor, som har et ekstracellulært, ligandbindende sete, en transmembran-del, som går gjennom cellemembranen, og en intracellulær, enzymatisk aktiv del som er en tyrosin-kinase. Binding av ligand utløser en endring i reseptorproteinet som formidles gjennom membranen og fører til økt aktivitet i den intracellulære kinasen, med påfølgende fosforylering og endret aktivitet i de proteinene som er substrat for det aktuelle enzymet. Derved gis et intracellulært signal, som via ulike trinn, fører til cellevekst og -deling. Endringer i tyrosin-kinaser, typisk mutasjoner, kan føre til økt aktivitet og ikke sjelden til konstitutivt uttrykt aktivitet i den intracellulære delen av en reseptor selv uten binding til ligand. Dermed kan et vekstsignal bli stående konstant «påslått» og de affiserte cellene går inn i ukontrollert celledeling, en av faktorene som bidrar til svulstutvikling. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett <<imgLink "ICD-2015s-2-A.PNG" 500>> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dette er et CT-bilde fra øvre del av abdomen hos den aktuelle pasienten, pilene viser metastaser. Hvilket organ er dette og hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> CT-bildet viser et tverrsnitt av øvre del av abdomen, med ryggen nedad på bildet, og med høyre side til venstre på bildet (dette er konvensjon, og dessuten er bildet markert med en "R"). Den store skyggen med to ulike nyanser i grått som fyller ut pasientens høyre side, som strekker seg fortil og over på venstre side, må altså være leveren. De tre runde områdene merket med sort pil, fortil og til venstre for midtlinja, hos en pasient med stor, ondartet tumor i tarmkanalen (magesekk eller tykktarm), passer med sekundærsvulster (metastaser) i leveren. Det store, buklete området i høyre side, merket med pilhoder, har noenlunde samme grånyanse (med litt lokal variasjon), og det er rimelig å oppfatte også dette som et stort, sammenhengende område med samme type, metastatisk tumor. (Det samme gjelder også for det store området svarende til leverhilus, som er merket med hvite piler). Leveren er et hyppig fokus for metastaser. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Godartede og ondartede tumorer navngis i praktisk diagnostikk ut fra deres histologiske opprinnelse. Forklar hovedtrekkene i denne praksisen. Hvilken kategori faller GIST [gastrointestinal stromal tumor] under? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den typiske betegnelsen for godartede svulst er suffikset «-om» hengt på et substantiv som angir hvilken vevstype tumor er gått ut fra. Ondartede svulster benevnes med suffikset «-karsinom» dersom de er av epitelial opprinnelse, «-sarkom» dersom de har startet i bindevev eller muskulatur. Noen ganger er denne navnsettingen litt avvikende, dels fordi det kan være vanskelig å avgjøre helt sikkert om en gitt svulst er ondartet eller godartet, dels av historiske grunner: F.eks. er lymfom, og gliomer ondartete svulster utgått fra henholdsvis lymfatisk vev og fra gliaceller i sentralnervesystemet, mens pheokromocytom er en type svulst som det er notorisk vanskelig å angi prognosen for. GIST er en type stromal tumor, altså en tumor utgått fra bindevev. I og med at det dreier seg om en ondartet tumor, er det en slags sarkom </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mange pasienter med GIST som behandles med tyrosin-kinase-inhibitorer får symptomer på hypotyreose. Tross behandling med tyroksin substitusjon ble det hos den aktuelle pasienten funnet følgende verdier i serum: * Tyroksin (T4): ''18-54'' nmol/l (normalt 64 - 142 nmol/l) * Trijodtyronin (T3): ''0.3 - 0.6'' nmol/l (normalt 1,1-2,6 nmol/l) * Tyreotropin (TSH): ''70-181'' mU/l (normalt 0,5-5,0 mU/l) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv disse tre hormonene; hvordan de dannes, deres virkemåte og deres effekter i kroppen. Kommenter serumverdiene til pasienten. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Thyroideahormoner dannes ut fra aminosyren tyrosin, som inkorporeres i proteinet thyroglobulin og skilles ut fra thyroideacellene til follikkellumen, der de utgjør det meste av kolloidet. Cellene pumper også iodatomer ut i follikkellumen, der de oksyderes. Slik iod er svært reaktiv og interagerer med tyrosin på thyroglobulin, ved å binde seg til den aromatiske ringen, først ett iodatom, deretter eventuelt et til på samme tyrosin. Deretter koples to tyrosiner sammen. Et par av tyrosiner kan således ha bundet til seg tre eller fire iodatomer, og disse har potensiell hormonvirkning. Hormonmolekyler med tre iodatomer, kalles triiodthyronin (T3), mens dersom molekylet har fire iodatomer, kalles det thyroxin (T4). Når hormonet frisettes, tar follikkelcellene opp kolloid ved endocytose, kolloidet spaltes proteolytisk og hormonet frisettes. En del T4 endres i periferien (særlig lever og nyre) ved avspalting av iod, og derved omdannes det til T3, som er det mest potente av de to. Thyroideahormonene er lipofile og passerer gjennom cellemembraner. De binder seg til en intracellulær reseptor, som transporterer til kjernen, der den påvirker modifiserer cellenes proteinsyntesemønster. Thyroideahormonene øker basalmetabolismen og har katabol virkning på metabolismen av fett og karbohydrat, og de fører til økt hjerte- og respirasjonsfrekvens, samt økt varmeproduksjon. De påvirker proteinsyntesen, regulerer vekst av knokler og dermed av kroppsstørrelsen, samt modningen av sentralnervesystemet. De øker effekten av katekolaminer og påvirker vekst og modning av så å si alle organer og vev i kroppen. Utskillelsen av thyroideahormoner stimuleres av TSH (thyroidea-stimulerende hormon, thyrotropin) fra hypofysen, styrt av TRH («TSH releasing factor»)fra hypothalamus. Dersom nivået av hormon blir lavt, vil hypofysen skille ut mer TSH. I det foreliggende tilfellet er verdiene av thyroideahormoner lavt og TSH-nivået er høyt. Det viser at affeksjonen av thyroidea-hormoner er primær, mens økningen i TSH er sekundær. <<imgLink "ICD-2015s-2-B.PNG" 500>> </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Digitalisglykosider er en av de eldste «skolemedisinene» vi har. Bruken har avtatt, men ett slikt middel, digoksin, brukes fortsatt i begrenset grad i behandling av hjertesvikt og atrieflimmer. Nedenfor finner du opplistet noen av de farmakologiske egenskapene til preparatet: |! |!Digoksin | |Absorpsjon |Ca. 75% | |Levermetabolisme|Minimal | |Renal eliminasjon|80% | |Proteinbindingsgrad |25% | |Fettløselighet|Lav | |Halveringstid |1.5-2 døgn | |Effekt etter |1-2 timer | |Terapiområde (nmol/liter) |0.6-1.3 | Du er fastlege for Anna Karlsen, en dame på 83 år som i en årrekke har brukt digoksin. Anna har vært og besøkt sønnen sin, som arbeider og bor i Australia, i en hel måned. Hun hadde et fint opphold, men allerede etter en uke gikk hun tom for digoksin. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Basert på data fra tabellen over, hvor lenge etter seponering vil digoksin gjenfinnes i blodet til en pasient? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ifølge gjeldende konvensjon er alle legemidler ut av kroppen etter 5 halveringstider. I tilfelle digoksin vil det si 7.5-10 dager. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du og Annas kardiolog kommer i fellesskap fram til at dere bør starte med digoksinterapien igjen. Kardiologen sier at du skal starte med «den vanlige, gamle dosen» (digoksin 62.5 µg morgen og kveld) og måle digoksinnivået i serum når Anna er i likevekt («steady state»). |! |!Digoksin | |Absorpsjon |Ca. 75% | |Levermetabolisme|Minimal | |Renal eliminasjon|80% | |Proteinbindingsgrad |25% | |Fettløselighet|Lav | |Halveringstid |1.5-2 døgn | |Effekt etter |1-2 timer | |Terapiområde (nmol/liter) |0.6-1.3 | </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor lang tid bør det gå fra oppstart til serumprøven tas? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Serumprøven bør ikke tas før pasienten er i farmakokinetisk likevekt (steady-state). Dette oppnås etter 5 halveringstider. Prøven bør derfor ikke tas før 10 dager etter oppstart. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Da Anna kommer for å få tatt blodprøve for måling av digoksin, forteller hun at hun de siste dagene har følt seg kvalm, appetittløs og at synet har endret seg. Anoreksi og gul/grønnsyn er tegn på digitalisoverdosering. Det viser seg at Anna har en konsentrasjon av digoksin i serum på 2,1 nmol/liter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Det finnes i prinsippet to typer bivirkninger, type A og type B. Beskriv begge. Hvilken type bivirkning står vi overfor i dette tilfellet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Type A bivirkninger er doseavhengige og derfor forutsigbare. De har ofte sammenheng med legemidlets virkemekanisme(r) og er vanligvis raskt reversible etter dosereduksjon eller seponering. Type B bivirkninger er ikke-doseavhengige og derfor ikke forutsigbare, ofte betinget av en idiosynkratisk reaksjon, og kan være farlige/livstruende. I Annas tilfelle dreier det seg om en type A bivirkning (overdosering). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I fellesskap kommer du og kardiologen fram til at du bør redusere Annas digoksindosering slik at likevektskonsentrasjonen halveres. |! |!Digoksin | |Absorpsjon |Ca. 75% | |Levermetabolisme|Minimal | |Renal eliminasjon|80% | |Proteinbindingsgrad |25% | |Fettløselighet|Lav | |Halveringstid |1.5-2 døgn | |Effekt etter |1-2 timer | |Terapiområde (nmol/liter) |0.6-1.3 | </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor lenge må du seponere behandlingen før serumkonsentrasjonen halveres? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Serumkonsentrasjonen vil per definisjon være halvert etter 1 halveringstid, dvs. 1.5-2 dager. Av praktiske grunner vil man i dette tilfelle seponere i 2 dager før gjenoppstart i lavere dosering. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter å ha seponert behandlingen i det aktuelle tidsrommet, starter du opp igjen med en redusert dose digoksin. Det finnes i prinsippet to måter du kan endre doseringen på slik at likevektsnivået av et legemiddel reduseres. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke to strategier har du til rådighet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enten dosereduksjon eller lengre doseringsintervall </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Anna fikk tegn på overdosering etter å ha brukt digoksin i en dose hun tidligere – altså før Australiaturen - tålte godt. |! |!Digoksin | |Absorpsjon |Ca. 75% | |Levermetabolisme|Minimal | |Renal eliminasjon|80% | |Proteinbindingsgrad |25% | |Fettløselighet|Lav | |Halveringstid |1.5-2 døgn | |Effekt etter |1-2 timer | |Terapiområde (nmol/liter) |0.6-1.3 | </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest nærliggende årsaken til at digoksinnivåene i Annas serum øker, med påfølgende bivirkninger, med en dose hun tidligere har tolerert godt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Siden digoksin utskilles for det meste umetabolisert gjennom nyrene, er den mest sannsynlige årsaken at Annas nyrefunksjon ble dårligere. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Inntil for få år siden hadde vi et digitalispreparat til, digitoksin, på det norske markedet. Digitoksin er forskjellig fra digoksin blant annet når det gjelder farmakokinetikk og terapiområde, som for digitoksins vedkommende er på 8-15 nmol/liter. Annas kardiolog er kritisk til at digitoksin ikke lenger er å få tak i, og begrunner dette med at «terapiområdet var mye videre, slik at midlet både var tryggere i bruk og lettere å dosere.» |! |!Digoksin | |Absorpsjon |Ca. 75% | |Levermetabolisme|Minimal | |Renal eliminasjon|80% | |Proteinbindingsgrad |25% | |Fettløselighet|Lav | |Halveringstid |1.5-2 døgn | |Effekt etter |1-2 timer | |Terapiområde (nmol/liter) |0.6-1.3 | </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Har hjertespesialisten rett i dette? Begrunn svaret </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kardiologen tar feil. Et terapivindu er et relativt begrep, og terapibredden kan med fordel betraktes som et forholdstall mellom den lave grensen (grensen der midlet går fra å være uvirksomt til å fungere) og den høye grensen (hvor midlet går fra å være virksomt til å bli toksisk). For både digoksin og digitoksin er dette forholdet omtrent 2, noe som betyr at midlene i så måte er like. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Nyrene har en sentral rolle i reguleringen av ekstracellulært volum og osmolalitet, hvor volumreguleringen stort sett har førsteprioritet. Ved fall i ekstracellulært volum, for eksempel etter betydelig oppkast, diare eller blødning, vil nyrene forsøke å opprettholde det effektivt sirkulerende volumet (ESV), som er volumet på arteriesiden i sirkulasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan og hvor i kroppen registreres et fall i ESV? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Via baroreseptorer (trykkreseptorer) i aortabuen og i carotidene, samt i afferente arterioler i nyrene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken effekt har et fall i ESV på det sympatiske nervesystem og på renin-angiotensinaldosteron-systemet (RAAS)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sympaticus stimuleres. Det vil igjen stimulere reninfrigjøring, og derved aktivere RAAS. (1p). Renin vil også stimuleres direkte via trykkfall i afferente arterioler, som utvider seg. (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan responderer hjertet, blodkarene og nyrene på fall i ESV? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hjertet; ved økt hjertefrekvens og økt kontraktilitet i forsøk på å gi større slagvolum. Dette gir igjen større minuttvolum. (1p). Blodkar; ved økt vasokonstriksjon på arteriell og venøs side (1p). Nyrene; ved å øke saltreabsorpsjonen (Na+) i proksimale tubuli og i samlerør (og dermed øker også vannretensjon). (Angiotensin II og Noradrenalin øker Na+ reabsorpsjonen proksimale tubuli, og Aldosteron øker Na+ reabsorpsjonen i samlerør.) Angiotensin II vil dessuten føre til efferent vasokonstriksjon for å opprettholde den glomerulære filtrasjonen (GFR) (2p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved et betydelig fall i sirkulerende volum (over 10 %) vil dette også påvirke frigjøringen av antidiuretisk hormon (ADH). Hvordan skjer dette og hva er effekten? Hvorfor er det hensiktsmessig i en slik situasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> På grunn av fallet i effektivt sirkulerende volum, vil det gå et nerve-signal til de ADHproduserende cellene i hypotalamus, noe som gir økt produksjonen av ADH som så bringes rundt i kroppen av blodet. Dette vil føre til at aquaporin 2 blir satt inn i den apicale cellemembranen i de prinsipale cellene i samlerørene. Dette gir økt reabsorpsjon av vann i samlerørene, noe som vil bidra til å opprettholde sirkulasjonen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 71-årig kvinne har følt seg uvel i 1 1/2 døgn. Det startet brått med hodepine og deretter intens verking i musklene. Så fikk hun sår hals og tørrhoste. Hun begynte å fryse og følte seg varm. Temperaturen har nå steget til 39^^o^^C. Hun har lest i lokalavisen at mange i bygda har influensa og antar at hun er blitt smittet. En celletype fra det medfødte forsvaret er viktigst for virusbekjempelsen de første dagene av infeksjonen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for hvordan disse cellene bekjemper infeksjonen de første dagene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> NK-celler er det viktigste forsvaret i starten av en virusinfeksjon. Virus befinner seg i hovedsak intracellulært i epitelcellene på slimhinnene i luftveiene. NK-cellene binder seg til infiserte celler (se også spm. 3) ved hjelp av adhesjonsmolekyler som passer med adhesjonsmolekyler på målcellen. De skiller ut perforin/granzym i kontaktområdet mellom cellene. NK-cellen løsner deretter fra målcellen. De utskilte molekylene induserer apoptose av målcellen. Perforins viktigste funksjon er å lage porer i membranen slik at granzymene komme inn i målcellen. NK-cellene produserer også cytokiner som bidrar til aktivering av dendrittiske celler (interferon gamma), et nødvendig ledd i aktivering av det ervervede forsvaret. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Å nevne NK-celler gir 1/2 poeng. Fullt hus for mekanismen krever binding med adhesjonsmolekyler, utskillelse av perforin/granzymer, apoptose og cytokinproduksjon. Manglende cytokinproduksjon trekker 1/2 poeng. Svar med hovedvekt på nøytrofile granulocytter og fagocytose gir ikke poeng fordi dette ikke er den viktigste mekanismen. Fagocytose spiller en viss rolle, men virus er bare ekstracellulære en kort stund, ikke i flere dager. Når virus er intracellulære, er de ikke tilgjengelige for granulocyttene. Svar med hovedvekt på mekanismen antistoffmediert direkte cytotoksisitet (ADDC) av NK-celler eller andre celler gir ikke poeng. Denne mekanismen forutsetter at kvinnen har passende antistoff fra tidligere infeksjon med samme virustype. I så fall forventer man ikke at kvinnen får såpass sterke symptomer på ny infeksjon i så lang tid. Denne mekanismen har også betydning når infeksjonen er i ferd med å gå over og det er dannet antistoff som følge av den aktuelle infeksjonen, men det skjer mye senere i forløpet. Svar om T-celler gir ikke poeng fordi de hører til det ervervede forsvaret. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Senere i forløpet bidrar også celler fra det ervervede forsvaret til bekjempelse av influensaen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan disse cellene bidrar i forsvaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> T-celler begynner å spille en rolle for drap av infiserte celler tidligst etter 5 dager. Mekanismen går imidlertid over to trinn: Først aktiveres naive CD4 positive hjelperceller med antigenreseptor som gjenkjenner virusrelaterte peptider. Responsen vris i retning av Th1, blant annet på grunn av primingcytokinet interferon gamma fra aktiverte NK-celler (og interleukin 12 fra dendrittiske celler). De resulterende hjelpereffektorcellene kan deretter bidra i neste trinn, som er aktivering av CD8 positive T-celler med passende antigenreseptor. Det dannes cytotoksiske T-effektor-celler. De dreper infiserte celler ved en mekanisme som ligner den som er beskrevet for NK-celler </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fullstendig svar må ha med både CD4^^+^^ og CD8^^+^^ celler fordi begge typer er nødvendige for å få slutteffekten på infiserte celler. Mekanismene med hjelp fra hjelperceller og deretter med drap ved kontakt må nevnes. Det er OK om det mangler detaljer vedrørende forskjeller i effektormolekyler eller adhesjonsmolekyler mellom NK- og T-celler. Svar om nøytrofile eller monocytter gir ikke poeng - er ikke ervervet forsvar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett De aktuelle cellene fra det medfødte og det ervervede forsvaret har ulike måter å oppdage influensainfeksjonen på. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv mekanismene de bruker med vekt på å nevne forskjellene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> NK-celler: gjenkjenner endret selv som summen av mange signaler: Nedregulert HLA klasse I på målcellen, som er en vanlig konsekvens ved virusinfeksjon i en celle. Cytokiner i vevet (bl.a. IL-12 og IL-15) som regulerer NK-cellenes aktiveringsgrad og påvirker uttrykket av reseptorer og adhesjonsmolekyler. Om NK-cellen er bundet til en målcelle via adhesjonsmolekyler (dvs. de oppfatter signaler fra adhesjonsmolekylene når disse er bundet til sine ligander). NK-cellene har også reseptorer for andre ligander på målcellen: HLA, collagen, sialinsyre, MIC-A og MIC-B, virale hemagglutininer m.fl. T-cellene gjenkjenner "ikke selv" = virusrelaterte peptider, som de må få må få presentert på HLA av korrekt klasse. De CD4 positive cellene: for aktivering skjer presentasjonen av HLA Klasse II på dendrittiske celler. Når de ferdigutviklede CD4 positive effektorcellene skal hjelpe CD8 positive celler til aktivering, må virusrelaterte peptider fremvises på HLA klasse I. Da skjer også antigenpresentasjon av dendrittiske celler, som har både HLA klasse I og II. Derved kan den CD4 positive og den CD8 positive cellen samlokaliseres og den CD8 positive cellen kan få hjelp til differensiering til cytotoksiske effektorceller av den dendrittiske cellen og hjelpercellen i samarbeid. De cytotoksiske T effektorcellene gjenkjenner infiserte celler som skal drepes ved at disse fremviser virusrelaterte peptider på HLA klasse I. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1/2 poeng for å nevne at NK-celler gjenkjenner endret selv, men uten mer forklaring. Fullt poeng krever detaljert mekanisme, men ikke navn på reseptorene og alle ligander som er involvert. 1/2 poeng for å nevne at T-celler gjenkjenner virusrelaterte peptider på HLA. Fullt poeng krever korrekte HLA-klasser og dendrittiske celler. Generelle svar om pattern recognition receptors (PRR) i det medfødte forsvaret og / eller spesifikke antigenreseptorer i det ervervede forsvaret gir ikke poeng - spørsmålet er knyttet til de aktuelle cellene ved influensainfeksjonen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen fikk influensavaksine for tre år siden. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor hun allikevel er blitt syk i år </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vaksinen gir immunologisk hukommelse som særlig bygger på antistoff (fordi det er vanskelig å få sterke cytotoksiske vaksineresponser med drepte vaksiner). Antistoffene er i stor grad spesifikke for virusets hemagglutinin og neuraminidase, som skifter noe fra år til år og mye enkelte år. Derfor lages det ny vaksine årlig med antigener som er tilpasset årets influensavariant/-er. Effektene av drepte vaksiner varer heller ikke så lenge. Kvinnen har derfor for lav antistoffkonsentrasjon og antistoff med for lav affinitet til at hun er beskyttet 3 år etter vaksinasjonen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for antistoffspesifisitet og virusantigener som skifter. ½ poeng for kortvarig effekt av drepte vaksiner. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter en uke føler kvinnen seg verre. Hun hoster opp mye grønt og gult slim og har vondt i høyre side av brystet når hun puster eller hoster. Hun får nesten ikke i seg mat eller drikke. Fastlegen stiller diagnosen pneumoni og legger henne inn på lokalsykehuset. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige årsaken til pneumonien? Begrunn svaret kort. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kvinnen har typiske symptomer på en bakteriell superinfeksjon. Purulent ekspektorat er typisk for bakterieinfeksjoner. Det består for en stor del av døde nøytrofile granulocytter og døde vevsceller (debris). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Selv om studentene ikke har hatt så mye sykdomslære skal de vite mekanismen for dannelse av puss og kunne resonnere seg frem til bakterieinfeksjon (evt. bakteriell superinfeksjon) ut fra det. Dessuten gir mange virusinfeksjoner redusert aktivitet av fagocytter (via mange forskjellige mekanismer som studentene ikke behøver å kjenne til) og derved økt risiko for sekundære bakterieinfeksjoner. Det er ikke nødvendig å vite hvilke bakterier som er vanligst ved bakteriell superinfeksjon etter influensa. 1/2 poeng for bakterieinfeksjon uten forklaring. Fullt poeng krever begrunnelsen med puss som nøkkelord for å skille fra ren gjetting. Ikke poeng for influensa, som også kan gi pneumoni, men med blankt ekspektorat. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved innkomsten måles forhøyet C-reaktivt protein (CRP). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor konsentrasjonen av CRP er forhøyet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Økt konsentrasjon av CRP skyldes proinflammatoriske cytokiner som skilles ut av forskjellige typer celler i det infiserte området, særlig IL-6. Cytokinene virker på hepatocytter som syntetiserer og secernerer CRP og andre molekyler som trengs til immunforsvaret ved infeksjonen. Dette er ledd i akutt fase-reaksjonen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Poeng krever proinflammatoriske cytokiner og akutt fasereaksjon - beskrivelse er greit også uten begrepet akutt fase. Det er ikke nødvendig å angi celletypene som kan skille ut cytokiner. Det er ikke nok å nevne «akutt fase» uten forklaring </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan immunforsvarets bekjempelse av pneumonien påvirkes av forhøyet CRP. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved bakterieinfeksjon er hovedforsvaret fagocytose. CRP kan bindes til bakterier og aktivere klassisk vei av komplementkaskaden. Aktiveringsprodukter av komplement som sitter på bakterieoverflaten opsoniserer dem slik at fagocytosen blir mer effektiv fordi fagocyttenes komplementresptorer stimuleres. Derved bidrar akutt fase-reaksjonen og CRP-produksjonen til mer effektiv bekjempelse av en bakteriell pneumoni. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 1/2 poeng for mekanismen for opsonisering og fagocytose. 1 poeng hvis ikke pathway for komplementaktivering er nevnt eller forklaring mangler på hva opsonisering er (bare begrepet er nevnt). Mekanismesvar som bare går på at CRP øker antistoffrespons fordi komplement-aktiverende antigener reduserer B-cellers aktiveringsterskel gir 1/2 poeng (er korrekt, men ikke det mest sentrale. Derfor ikke nødvendig å ha med dette for fullgodt svar). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved laboratoriearbeid, enten det er på sykehus eller innen undervisning og forskning, kan laboranter og andre bli utsatt for forskjellige arbeidsmiljøpåvirkninger. En av disse er eksponering for kjemikalier. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fire andre hovedgrupper av påvirkninger som vi kan finne i laboratorier og som kan ha betydning for helsa til de som arbeider der. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fysikalske påvirkninger bør nevnes. Her kan støy og radioaktiv/ioniserende/UV stråling godkjennes som to separate svar, mens Fysikalske påvirkninger og enten støy eller radioaktiv/ioniserende/UV stråling ikke godkjennes som to svar siden fysikalske påvirkninger er det overordnete begrepet. Vibrasjonspåvirkning godkjennes ikke fordi det ikke er noe typisk for laboratorier. Mikrobiologiske påvirkninger bør nevnes. Her kan også smitte og bakterier, virus og sopp godkjennes, men ikke som flere riktige siden vi sier hovedgrupper. Psykososiale/organisatoriske påvirkninger bør nevnes. Her kan også stress, mobbing, og seksuell- eller annen trakassering godkjennes, men ikke som flere riktige siden vi sier hovedgrupper. Ergonomiske forhold bør nevnes. Dette dreier seg om tilpasning mellom mennesket og arbeidet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kjemiske påvirkninger framgår av spørsmålet, og står i ingressen, så det gir ikke poeng. Gi 0,5 poeng for hver riktig hovedgruppe </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På en arbeidsplass i et laboratorium er støynivået 78 dBA. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke virkninger kan slik støy ha for den som arbeider der, og hvordan kan man best forebygge støyskader generelt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # 78 dBA er ikke regnet som hørselskadelig støy, men et slikt støynivå kan føre til konsentrasjonsvansker og økt tretthet i forbindelse med arbeidet. # For forebygging av støyskader regner man alltid at det første tiltaket er å redusere støykilden enten ved å fjerne, modifisere eller bygge inn denne. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # 1 poeng. # 1 poeng. Personlig verneutstyr med hørselsvern kommer alltid i siste rekke og bør ikke gi poeng hvis bare dette nevnes. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Formalin (40-50% vandig løsning av formaldehyd) er en reaktiv løsning en kan eksponeres for i enkelte laboratorier. Formaldehyd er sterkt polart og elimineres raskt fra blodet (plasma t,,1/2,, i størrelsesorden 2 minutter). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil en forvente at formaldehyd distribueres til fett, og vil en forvente at formaldehyd akkumuleres i kroppen fra den ene arbeidsdagen til den neste? Forklar </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Svaret er nei. På grunn av sin høye vannløselighet finner du nesten ikke formaldehyd i fett. # Svaret er nei. I løpet av 5 x t,,1/2,,, dvs 10-15 minutter etter opphør av formalin eksponeringen, vil så godt som alt formaldehyd være eliminert fra kroppen (ca 97%). En vil derfor møte opp neste arbeidsdag uten formaldehyd i kroppen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # 1,0 poeng. Korrekt svar uten forklaring gir 0,5 poeng. Korrekt svar med gal forklaring gir 0 poeng. # 1,0 poeng. Ikke tilstrekkelig å kun svare nei og referere til rask eliminasjon (gir kun 0,5 poeng). For å få full score må en i svaret konkret referere til faktoren 5 x t,,1/2,,. (eller 4 x t,,1/2,,) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Formaldehyd (fra formalin) kan gi mange effekter i kroppen ved langtidseksponering for høye doser. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På hvilke måter kan formaldehyd påvirke reproduksjon og fosterutvikling, og hvilke mekanismer kan være involvert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Formaldehydeksponering kan hos kvinner påvirke reproduksjon gjennom uregelmessig menstruasjon, økt forekomst av endometriose og redusert fruktbarhet. For menn foreligger det ikke sikre studier på mennesker som påviser sammenheng mellom formaldehydeksponering og reproduksjonsskader. Generelt kan fosterskader uttrykkes ved spontanaborter, dødfødsler, for tidlige fødsler, redusert fødselsvekt og skader av forskjellige typer hos levende fødte barn. # De viktigste mekanismene for fosterskader og reproduksjonsskader etter formaldehydeksponering hos både kvinner og menn er gentoksisitet av forskjellige typer (kromosomabberasjoner, mikronuklei, søsterkromatidutbytte, DNA-brudd, kryssbinding mellom DNA og proteiner) og oksidativt stress. I tillegg knyttes apoptose, redusert aktivitet av enzymer (LDH og SDH) som er involvert i modning av mannlige kjønnsceller, redusert testosteron, epigenetiske forandringer og stress via hormoner i aksen hypothalamus - hypofyse – binyrebark til formaldehydeksponering. Disse mekanistiske sammenhengene er framkommet ved studier på både dyr og mennesker. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # 1 poeng. Både reproduksjon og fosterskader må omtales. Ufullstendig svar gir kun 0,5 poeng # 1 poeng. Både gentoksisitet og oksidativt stress må være med for å gi 1 poeng. Det kan aksepteres at noen av tilleggsmomentene i andre del av svaret ikke er med uten at det trekkes poeng. Uten tilleggsmomenter gis kun 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn i prioritert rekkefølge de fem hovedtiltakene som er vanlige for å beskytte arbeidstakere mot skadelig kjemisk påvirkning. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Eliminasjon (fjerning av den skadelige påvirkningen) # Substitusjon (bytte ut et helsefarlig kjemikalium med et annet som representerer en lavere helserisiko ved eksponering) # Innkapsling eller lukking av prosesser (herunder regner vi avtrekkskap på laboratorier) # Ventilasjon/avtrekk (herunder regner vi allmennventilasjon og punktventilasjon) # Personlig verneutstyr (maske, klær, briller m.m.). Et av disse kan godkjennes, men ikke flere. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Gi 0,3 poeng for hvert riktig tiltak og 0,5 poeng hvis også rekkefølgen er riktig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Les det følgende sammendraget fra en vitenskapelig artikkel: <<< The purpose of this study was to determine the risk for divorce among cancer patients. We conducted a nationwide, population-based study of 46,303 persons aged 30-60 years in whom selected cancers were diagnosed in 1981-2000 and 221,028 randomly sampled, cancer-free persons. Information on socioeconomic status, demographics and comorbidity was obtained from Danish administrative registries. We analysed the risk for divorce, adjusted for several potential confounders, during follow-up. We found that cancer patients had the following relative risks for divorce compared to the general population: Relative risk (RR), 1.01 and 0.99 for women and men, respectively. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Konklusjonen er slettet fra sammendraget. Trenger kreftpasienter frykte for ekteskapet sitt mer enn andre? Hvorfor, eller hvorfor ikke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei, ingen grunn til større frykt enn hos andre. Den relative risikoen er tilnærmet lik 1, hvilket betyr at kreft og skilsmisse ikke er assosiert. Med andre ord: Kreftpasienter har samme risiko for skilsmisse som sammenlikningsgruppa. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng gis for svaret ”nei”. Ytterligere 1 poeng gis for forklaringen over. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Relativ risiko (RR) var 1,01 blant menn og 0,99 blant kvinner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan dette alene indikere at kjønn er en konfunder (confounder) for sammenhengen mellom kreft og skilsmisse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Svaret ”nei” er tilstrekkelig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) Relativ risiko (RR) var 1,01 blant menn og 0,99 blant kvinner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan dette alene indikere at kjønn modifiserer sammenhengen mellom kreft og skilsmisse (effektmodifikasjon)? Hvorfor, eller hvorfor ikke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei. RR i begge subgrupper er tilnærmet lik 1 (1 poeng). Hvis studenten skriver at 1,01 og 0,99 er veldig like slik at effektmodifikasjonen er veldig liten, blir det også godtatt som korrekt svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) Relativ risiko (RR) var 1,01 blant menn og 0,99 blant kvinner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan dette alene indikere at sammenhengen mellom kreft og skilsmisse medieres via kjønn? Hvorfor, eller hvorfor ikke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei. De subgruppe-spesifikke relative risikoene, uten informasjon om relativ risiko for hele studiepopulasjonen, kan ikke hjelpe oss til å avgjøre om det foreligger mediering (1 poeng). Alternativt godtas det også som korrekt svar dersom studenten skriver at mediering er utelukket fordi kjønn ikke kan være en konsekvens av eksponeringen (kreft). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forfatterne skriver at de "analysed the risk for divorce, adjusted for //several potential confounders//." </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er kriteriene for at en variabel skal være en konfunder (confounder) for sammenhengen mellom kreft og skilsmisse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Variabelen må (1) være assosiert med både kreft (eksponeringen) og skilsmisse (sykdommen), (2) men den må ikke være påvirket av (være en følge av) kreft eller skilsmisse. Begge kriteriene må være oppfylt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Begge kriteriene må være nevnt for at det skal gis 2 poeng. Dersom bare 0 eller 1 kriterium nevnes, gis 0 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et par oppsøker sin fastlege på grunn av ufrivillig barnløshet. Kvinnen er 41 år, og mannen er 35 år. Mannen har i mange år drevet med kroppsbygging, og han fremstår svært muskuløs. Du bestiller en sædundersøkelse ved Fertilitetsenheten på St Olavs hospital. Svaret viser at det er sædceller i prøven, men i betydelig redusert antall og med dårlig motilitet. Ved klinisk undersøkelse finner man to testikler i scrotum. Disse har normal konsistens ved palpasjon, men er knapt halvparten så store som forventet. Mannen innrømmer å ha brukt anabole steroider gjennom flere år, og dette vurderes som den mest sannsynlige årsaken til redusert spermiekvalitet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke årsaksmekanismer (organer, celler og hormoner) ligger bak den reduserte spermiekvaliteten i dette tilfellet? Tegn og forklar. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Spermieproduksjonen skjer i testes og reguleres via negativ feedback til hypofyse (FSH og LH) og hypothalamus (~GnRH=gonadotropin releasing hormon). Ved eksogen tilførsel av testosteron (inntak av anabole steroider) vil hypofysen svare med å supprimere LH og testosteron, hvilket i neste omgang medvirker til redusert ny-syntese av testosteron fra Leydigcellene og redusert spermiogenese fra germinalcellene i testes. Sistnevnte er i varierende grad reversibelt om misbruket av anabole steroider opphører. (2 poeng) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dersom svaret inneholder: «Negativ feedback» – gis 0. 5 poeng, «FSH, LH og GnRH gis 0.25 poeng, «Leydigceller og germinalceller i testes» gis 0. 5 poeng, «suppresjon av testosteronsyntese i testes» gis 1 poeng. Instruktiv tegning med riktige benevnelser og inntegnet ± kan erstatte tekst og gi full score. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to faktorer hos kvinnen som også gjør det vanskelig å bli gravid. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hennes eggreserver vil være redusert både kvantitativt (færre primordialfollikler) (1poeng) og kvalitativt (dvs. relativt større andel av gjenværende eggceller vil ha genetisk feil) (1 poeng). Begge deler forverres jo eldre kvinnen er </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Paret får tilbud om assistert befruktning. Eggproduksjonen hos kvinnen forsøkes stimulert med FSH (folikkelstimulerende hormon). På tross av at hun får maksimalt høye doser FSH lykkes man ikke med å få ut mer enn 3 oocytter. Disse forsøkes befruktet med mannens sædceller. På dag 2 etter befruktning tilbakeføres et 2-celle embryo til kvinnens livmor. To uker senere har hun en positiv graviditetstest. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva måles ved en graviditetstest og hvilke(t) prøvemateriale kan benyttes? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Graviditetstesten er positiv hCG i urin (0.5 poeng) eller kvantitativ hCG i serum. (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter noen uker får kvinnen en vaginalblødning. Hun får time til ultralydundersøkelse ved NFSM (Nasjonalt senter for fostermedisin) ved St Olavs Hospital. Ultralydundersøkelsen utføres transvaginalt. Ved undersøkelsen kan man blant annet se at fosterhjertet slår med en frekvens på 105 slag per minutt </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan dannes det primitive hjerterøret og når i svangerskapet skjer det? Når begynner fosterhjertet å slå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hjertet begynner å slå etter fem fullgåtte uker basert på siste menstruasjon, ca. 22 eller 23 dager etter unnfangelsen. Med transvaginal ultralyd ser man et lite blafrende hjerteslag. Hjertet er svært primitivt og rør-formet, men funksjonelt. Hjerterøret er oppstått som følge av embryoets laterale folding med etterfølgende sammensmelting (apoptose) av de to endokardiale tuber/ rør. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av de to utviklingstrinnene; embryoets laterale folding og etterfølgende sammensmelting (apoptose) av de to endokardiale tuber/rør. 0,5 poeng for å vite når dannelsen av hjerterøret skjer 0,5 poeng for når hjertet begynner å slå </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På grunn av kvinnens alder henvises hun til ytterligere undersøkelser i svangerskapsuke 11 for å vurdere sannsynligheten for kromosomfeil/utviklingsavvik hos fosteret. Det er vanskelig å få oversikt over hjertets anatomi, men legen lurer på om det kan foreligge en defekt i skilleveggen mellom hjertekamrene. Det synes å mangle tommel på begge hender, det ses kun en navlearterie, og fosteret har et nakkeødem som ses som en oppklaring ved nakken. På bakgrunn av funnene tilbys paret kromosomundersøkelse, noe de takker ja til. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv aktuelle prøvetakingsmetoder av fosteret, og hvilke farer som er forbundet med selve prøvetakingen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fostervannsprøve tas vanligvis først etter uke 15, da det ofte er for få celler i fostervannet før den tid. CVS (Chorion villus sampling) er morkakeprøve som tas rundt uke 10-12, og det vil være den mest aktuelle prøvetakingsmetoden her. Begge prosedyrene assisteres av ultralyd. Både fostervannsprøve og CVS medfører en økt risiko for spontanabort med 0.5-1 %. Det kan også tas prøve av navlestrengsblod. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Man ønsker å utføre en genetisk undersøkelse på prøvematerialet. Hvordan fungerer den mest aktuelle undersøkelsen, og hva kan den gi svar på? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Karyotyping er den mest aktuelle analysen å rekvirere på CVS prøven. G-bånd-karyotyping er mest vanlig. Det er en lysmikroskopisk undersøkelse av celler i delingsfase, det vil si at cellene må dyrkes. De kondenserte metafase-kromosomene trypsinbehandles og Giemsa-farges. Det er en ressurs- og tidkrevende analyse som tar 2-3 uker før svar foreligger. Karyotyping egner seg godt til å se på numeriske kromosomavvik (trisomier og Turner), samt større delesjoner eller duplikasjoner av kromosombiter. Kromosomfeil under en viss størrelse oppdages ikke med karyotyping (dvs <5 – 15 Mb). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Svaret på prøven viser at fosteret har trisomi 18. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige hjertefeilen hos dette fosteret? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En ventrikkelseptumdefekt er den mest sannsynlige hjertefeilen hos dette fosteret. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Åse kommer til deg som allmennlege. Hun er 21 år, samboer, og arbeider som frisør. Hun forteller at hun nå siste ukene har hatt flere anfall. Først trodde hun det var noe alvorlig galt med hjerte, men tror nå det handler om angstanfall. Siste dagene har hun vegret seg for å gå på jobb da hun er redd hun skal få anfall på mens hun jobber med kundene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn symptomer på frykt og angst og angi hvilke funksjon disse symptomene har. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Hjertebank (øke arbeidskapasitet) * Økt respirasjon (øke arbeidskapasitet) * Økt spenning i muskulatur (økt arbeidskapasitet) * Svette (resultat av økt muskelaktivitet) * Rødme (fordele blod mer perifert for å øke muskelkapasitet) * Skjelve (økt spenning i muskulatur) * Tørr i munnen (nedprioritering av fordøyelse) * Store pupiller (slippe inn mer lys, øke synsevnen). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Mer enn fem symptomer=1p. Mer enn fem forklaringer=1p. Forklaring som sier noe om at det handler om å gjøre kroppen klar til økt funksjon (fight/flight) kan også godtas </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke system i kroppen er ansvarlig for samordnet aktivering av disse symptomene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Samordnet aktivering av disse symptomene styres av sympatikus(/parasympatikus) i det autonome nervesystemet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sympatikus(/parasympatikus)=1p. Kun autonome nervesystem er ikke nok. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke typiske reaksjonsmønstre ser vi i frykt- og angstsituasjoner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> “Fight, flight, freeze and faint” (eller tilsvarende forklaringer på norsk) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1-2 riktige svar=1p 3-4 riktige svar=1p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn de viktigste risikofaktorene for psykisk sykdom. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Traumer (tidlige og nylige, inkludert seksuelt/fysisk overgrep, ulykker, tap) * Psykisk sykdom i nær familie (genetisk sårbarhet/arv) * Somatisk sykdom (kreft, hjertesjukdom, nevrologiske lidelser, alvorlig sykdom) * Rusmisbruk (alkohol, tablettmisbruk og narkotika) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Navn på hovedgrupper eller eksempler på de enkelte hovedgrupper gir poeng. 1 hovedgruppe=1p 2 hovedgrupper=2p 3-4 hovedgrupper=3 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Arne (35) jobber som lærer i ungdomsskolen. Han er stort sett frisk, bruker ingen faste medisiner og har knapt vært til legen de siste 10 årene. Han har imidlertid blitt gradvis mer slapp og uvel de siste månedene. Han er kvalm, har dårlig matlyst og har også litt hudkløe. Du mistenker at han har utviklet alvorlig nyresvikt, og du ønsker å få bekreftet dette. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Glomerulær filtrasjonsrate (GFR) brukes som et mål på nyrefunksjon. Hva baseres dette prinsippet på? Forklar hva GFR er rent fysiologisk med utgangspunkt i oppbygning av glomerulus, og forklar hvilke krefter som avgjør GFR. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Forklare kort om oppbygning av filtrasjonsmembranen (endotel med karbohydratlag, basalmembranen, podocytter med nefrin i spalten) (1p), * virker som en semipermeabel membran, cut off-verdi omkring albuminets størrelse, det dannes pre-urin ved mekanisk filtrasjon og mengden som produseres per minutt = GFR (1p) * GFR= (glomerulært kapillært hydrostatisk trykk – hydrostatisk trykk i Bowmans kapsel – glomerulært kapillært osmotisk trykk + Bowmans osmotisk trykk) x arealet av membranen (x konstant) (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nyrene har flere funksjoner utover filtrasjon. Hvilke av disse funksjonene samvarierer med GFR? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, GFR er tydelig assosiert til andre funksjoner slik som evne til å regulere salt/vann/blodtrykk, tubulære funksjoner, syre-base og hormonproduksjon. (Bør vel klare 4 av disse 6 for å få ett poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan vi direkte måle GFR? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Måling av endogene (kreatinin, karbamid) eller eksogene (inulin, ~CrEDTA, iohexol, etc) substanser som filtreres fritt uten påfølgende reabsorpsjon eller sekresjon. Man kan måle hvor mye som utskilles i urin per tid, eller man kan måle hvor fort de eksogene stoffene forsvinner fra blodet. (1p) * GFR=konsentrasjon i urin x urin volum per tid/konsentrasjon i plasma (1p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ikke-invasive metoder finnes for å estimere nyrefunksjonen? Beskriv kort hvordan dette gjøres. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Estimering av GFR gjøres ved hjelp av serum-kreatinin og en eller annen form for justering for muskelmasse ved hjelp av alder, kjønn og etnisitet. Cockgroft Gault formel, MDRD formel, CKD-epi formel eller andre. (1,5 p) * Man kan også måle nyrefunksjon non invasivt ved kreatinin clearance, dvs måle s-kreatinin og u-kreatinin og urinvolum, men kreatinin clearance overestimerer GFR (spesielt ved lave verdier) og har en betydelig måleusikkerhet pga at pasientene måler feil urin volum (0,5 p) </$details>
⚠ Spørsmålet i denne oppgaven er feil, men det er vanskelig å korrigere da originalen er utilgjengelig <div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke ikke-invasive metoder finnes for å estimere nyrefunksjonen? Beskriv kort hvordan dette gjøres. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Serum-kreatinin øker med økende muskelmasse. * Kan øke etter kraftig trening, etter stor kjøttmåltid eller etter lavt væskeinntak. * Kan øke etter medikamenter som hindrer tubulær sekresjon. * Forholdet mellom s-kreatinin og GFR er ikke lineært, men eksponensielt. (0,5 p for hvert av punktene) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du jobber som allmennlege på et legekontor og har besøk av en mannlig pasient på 50 år. Han har ukarakteristisk svimmelhet og ustøhet. Han har ingen øresus, men han sier at hørselen er litt dårligere på venstre øre, noe den har vært i flere år. Du bestemmer deg for å gjøre en otoskopi. Ved undersøkelsen får du greit innsyn på trommehinnen. Du synes du ser et lite hull i trommehinnen tilsvarende lysrefleksen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan inndeler du trommehinnen i kvadranter og hvor plasserer du lysrefleksen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fire kvadranter, deles i en linje langs hammerskaftet i fremre/bakre og med en linje 90 grader på denne gjennom umbo (enden på hammerskaftet) i øre og nedre kvadranter. Lysrefleksen ligger i nedre fremre kvadrant. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for første del, definisjon av kvadrantene 1 poeng for riktig plassering. </$details>
⚠ Spørsmålet i denne oppgaven er feil, men det er vanskelig å korrigere da originalen er utilgjengelig <div class="oppgave"> <div class="vignett"> !!Vignett Du vil undersøke om det foreligger et mekanisk tap av hørsel, og bestemmer deg for å bruke en stemmegaffel til dette. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan inndeler du trommehinnen i kvadranter og hvor plasserer du lysrefleksen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Webers prøve går mot det syke øret, Rinnes prøve er negativ på det syke øret (sterkest mot benet, gjerne mot ørebensknuten). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver av de 2, reduseres til ½ dersom navn mangler. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det viser seg at det foreligger et moderat nevrogent høretap og at pasienten har jobbet i støyfylte omgivelser i flere år </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er øvre grense for tillatt støy i løpet av en 8-timers arbeidsdag når det gjelder langvarig støy og impulsstøy? Nevn tre yrker som er særlig utsatt for støyskader. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Grense 85 dB i 8 timer, impulsstøy 130 dB # Mekanisk industri, Verkstedindustri, Bygg/anlegg, Tungtransport, Sjøfart/fiske, Skogbruk </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert av momentene i (1) ½ poeng for å ha 3 av de i (2), reduseres til ¼ ved 2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du bestemmer deg for å teste det perifere balansesystemet ved å dreie raskt på hodet til pasienten i sittende stilling og observere øyebevegelsene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken del av vestibulærapparatet er det du da tester og hvilken refleks? Hvilke andre bevegelser registreres i andre deler av vestibulærapparatet, og hvor registreres de? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Buegang og vestibulookulære refleks, rotasjon * Makula: Lineær akselerasjon * Sacculus: Stilling i rommet (vertikal akselerasjon) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver del, halveres hvis ett av elementene mangler </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Refleksen er utslukket - det viser seg at pasienten har fått intravenøs antibiotika som er toksisk for vestibulærapparatet, og i en slik dose at funksjonen her sannsynligvis er utslokket. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to situasjoner hvor pasienten da kan bli ekstra ustø basert på de to gjenværende elementene i det posturale systemet (balansesystemet). Hvilke er de? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # I mørke eller dårlig lys (når det visuelle input er redusert i tillegg til de vestibulære) # Ved svømming eller lignende når de proprioceptive input (fra leddsansen) er redusert </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for situasjon og/eller navn på posturale input (visuelle og proprioreceptive) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er lillehjernens (cerebellums) tre funksjonelle hoveddeler i motorisk kontroll, og hvilke oppgaver har disse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Cerebrocerebellum (planlegging), vestibulocerebellare (balanse), spinocerebellum (utførelse) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for hver av de tre (en eller begge av navn eller funksjon er nok) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I hjernens basalarterier kan det oppstå trombosering og aneurismer som kan gi opphav til infarkter og blødninger. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Lag en enkel skisse av hjernens basalarterier. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <<imgLink "ICD-2016s-4-A.PNG">> (Fig. ref.: imgarcade.com). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For 3 p kreves følgende arterier nevnt: * art. carotis interna * art. cerebri ant./med./post. * art. communicans ant./post. * art. basilaris, * art. vertebralis * art. cerebelli sup./art. superior cerebelli * art. cerebelli inferior superior/art. inferior anterior cerebelli * art. cerebelli inferior posterior/art. inferior posterior cerebelli. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er definisjonen på et infarkt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Et infarkt omfatter et velavgrenset område med nekrotisk vev som følge av opphør/redusert blodtilførsel og redusert oksygenforsyning, eg. område med nekrose på iskemisk grunnlag. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Nekrose (vevsdød) pga redusert blodtilførsel = full score, 2 poeng Bare nevne «Nekrose» = 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I tilhelingsprosessen ved et hjerneinfarkt vil det skje en fagocytose av dødt vev </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type celle i hjernen er involvert ved slik fagocytose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mikroglia (0,5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type celle i blodet rekrutteres fra blodbanen ved en slik prosess? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Monocytter (0,5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved sykdom og skade i hjernen kan ventrikkelsystemet affiseres og gi komplikasjoner som hydrocefalus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type celle i blodet rekrutteres fra blodbanen ved en slik prosess? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> CSF dannes i plexus choroideus som finnes i samtlige ventrikler. Den strømmer fra sideventriklene gjennom begge interventrikulærhull (foramen interventriculare/Monro) til 3. ventrikkel, derfra gjennom aquaeductus cerebri (akvedukten) til 4. ventrikkel, derfra ut i subaraknoidalrommet i cisterner her, gjennom tre hull under cerebellum, to laterale hull, apartura lateralis/foramen Luschkae, og et midtre hull, apertura mediana/foramen Magendii, derfra sirkulasjon i subaraknoidalrommet, også omkring medulla spinalis, bl.a. til cisterna lumbalis, til slutt drenasje gjennom villi/granulationes arachnoidalis inn i hjernens venesinus, sinus sagittalis superior. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ''Første del:'' CSF dannes i ventriklene eller CSF dannes i plexus choroideus = 1 poeng ''Andre del:'' Fra sideventriklene til 3. ventrikkel så gjennom akvadukten til 4. ventrikkel så til subarachnoidalrommet og til slutt sinus sagitallis superior (venesystemet) = full score, 2 poeng Om bare nevner «Fra sideventriklene til fjerdeventrikkel til subarachnoidal til venesystemet» = 1 poeng Om bare nevner «Fra sideventriklene til subarachnoidalrommet til venesystemet» = 0,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Cytologisk undersøkelse av cerebrospinalvæske kan være en viktig prosedyre ved utredninger av nevrologiske sykdommer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags type betennelse og infeksiøse agens kan foreligge når det i CSF påvises 1) nøytrofile granulocytter; 2) lymfocytter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Akutt betennelse, oftest som ledd i en bakteriell infeksjon. (1 poeng) # Kronisk betennelse, kan forekomme ved infeksjoner med virus, sopp og atypiske mycobakterier (tbc). (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Antibiotika er en av våre aller viktigste legemiddelgrupper. I denne oppgaven skal vi ta opp en del sentrale farmakologiske prinsipper og begreper og applisere disse på ulike typer antibiotika. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer er det som bestemmer hvor høy konsentrasjon man får av et legemiddel ved konsentrasjonslikevekt (”steady state”) i plasma? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den dosen som gis per tidsenhet (dose/tau), legemidlets biotilgjengelighet (F), og legemidlets clearance (Cl). Matematisk er konsentrasjonen i steady state = [(dose/tau) x F] / Cl. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvis alle tre faktorene (eller 4 hvis man tar med tiden mellom dosene som en separat faktor) er med, gis det 2 poeng. Hvis to av de tre er med, gis 1,5 poeng, hvis en av de tre er med, gis 1 poeng (altså ingen poeng ekstra hvis man har tiden som egen faktor) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Doksysyklin har en halveringstid på 20 timer </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor lang tid vil det ta før det oppnås konsentrasjonslikevekt (”steady state”) i plasma for dette midlet, og hvordan kan man sikre at pasienten oppnår en terapeutisk effektiv konsentrasjon raskere enn dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * 5 ganger halveringstiden, dvs. 100 timer eller ca. 4 døgn. (4 ganger halveringstiden, dvs. 80 timer) aksepteres også). * Ved å gi en metningsdose (også kalt ladningsdose), altså å gi en høyere dose initialt enn det som er aktuell dose ved langtidsbehandling. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,75 poeng for hvert riktig delsvar, til sammen 1,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva som menes med begrepet ”terapeutisk indeks” (”terapeutisk bredde”) og nevn antibiotikagrupper (en av hver) som har henholdsvis svært høy terapeutisk indeks (svært stor terapeutisk bredde) og svært lav terapeutisk indeks (svært liten terapeutisk bredde). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Terapeutisk indeks uttrykker forskjellen mellom den dosen/konsentrasjonen som gir den ønskede effekten og den dosen/konsentrasjonen som gir uønskede effekter/bivirkninger/toksiske effekter (eller tilsvarende formuleringer). Formelt er terapeutisk indeks ratioen LD50/ED50. Begge typer svar godtas. Antibiotikagruppe med svært høy terapeutisk indeks: Penicillin. Antibiotikagruppe med svært lav terapeutisk indeks: Aminoglykosider </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig definisjon. 0,5 poeng for et eksempel på en gruppe med høy og 0,5 poeng for et eksempel på en gruppe med lav. Hvis de nevner andre eksempler enn de to som er de aller mest typiske, må poengsettingen vurderes individuelt – da kan det eventuelt være aktuelt å gi 0,5 poeng i stedet for 1 på dette delspørsmålet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) De to vanligste, prinsipielt forskjellige bivirkningstypene kalles type A og type B. Forklar hva som ligger i disse begrepene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Type A (”augmented”): Bivirkninger som kan opptre hos alle, og som er forutsigbare ut fra legemidlets farmakologiske virkning og doserelaterte (“intoleranse”). Type B (”bizarre”): Bivirkninger som kun opptrer hos et fåtall, og som verken kan forutses eller relateres til dose (“idiosynkrasi”). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,75 poeng for hver riktig, maksimalt 1 poeng. Hvis «halvveisriktig» på begge, gis til sammen 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn én vanlig type A-bivirkning og én viktig type B-virkning for fenoksymetylpenicillin (penicillin V). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Type A: diaré, kvalme, mageproblemer etc. Type B: Alle former for allergiske reaksjoner godkjennes, som allergi, urticaria, anafylaksi, utslett etc. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for korrekt eksempel under hver type, til sammen 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hvilke momenter er mest sentrale for å vurdere om et symptom eller en tilstand hos er pasient kan være en legemiddelbivirkning? </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn én vanlig type A-bivirkning og én viktig type B-virkning for fenoksymetylpenicillin (penicillin V). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De viktigste momentene er # at det skal være et rimelig tidsforløp mellom eksponering og reaksjon, # at reaksjonen skal være beskrevet tidligere, # at reaksjonen går tilbake når midlet seponeres (eller dosen reduseres), # at reaksjonen kommer tilbake etter fornyet eksponering for legemidlet, og # det skal ikke foreligge alternative forklaringer på reaksjonen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver, maksimalt 2 poeng hvis 4 eller 5 er riktige. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er legevaktslege og det kommer en 21-årig mann til deg med en tre-ukers sykehistorie med slapphet og hoste. Ut fra klinikk og labanalyser vurderer du at diagnosen mycoplasma-pneumoni er den absolutt mest sannsynlige. Du ønsker å starte antibiotikabehandling med en gang, men siden det er helg og apoteket er stengt må du starte opp med et av de to midlene som du har tilgjengelig på legevakta: Fenoksymetylpenicillin og erytromycin. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket av disse to bør du velge, og hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Erytromycin. Siden Mycoplasma-bakterien ikke har cellevegg, vil ikke penicillin virke. Erytromycin virker på ribosomnivå/proteinsyntesen til bakterien, og har derfor effekt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for rett middel og 1,5 poeng for rett begrunnelse (0,75 poeng for hvorfor penicillin ikke virker, og 0,75 poeng for hvorfor erytromycin virker). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Nervesystemet vårt består av flere typer celler og vev, deriblant nevroner og gliaceller. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Navngi de ulike delene av et nevron (A-D). <<imgLink "ICD-2017-2-A.PNG">> </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> A=Dendritt B=Soma C=Aksonterminal D=Her godtas to alternativer; både akson og myelin (som utgjøres av de schwannske cellene i det perifere nervesystemet og oligodendrocyttene i det sentrale nervesystemet) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng pr riktig bokstav. Maks 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fire typer støtteceller/gliaceller i det sentrale nervesystemet og beskriv kort hvilke oppgaver de har. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Astrocytter:'' Har både strukturelle og fysiologiske funksjoner; * utgjør barrierer mot blodkar (blod-hjernebarriere) og meninger (glia limitans) * kontroll av nervecellenes miljø (transmittorsubstanser, elektrolytter) – sikre homeostase * danner astrocyttnettverk (via «gap junctions»: elektriske impulser, Ca^^2+^^-ioner) * danner gliose (arrvev) som respons på skader/tumor ''Oligodendrocytter'' lager myelinskjeder til flere nervefibre ''Mikroglia:'' * hjernens makrofager med evne til fagocytose * utgjør i hovedsak hjernens immunforsvar * fjerner patogener, døde nevroner, plakk ''Ependym:'' * kler ventrikler, akvedukten og sentralkanalen * involvert i produksjon av cerebrospinalvæske (CSF) * drifter sirkulasjon av CSF og absorbsjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for å navngi hver av gliacellene (maks 1 poeng). Deretter 0,5 poeng for å angi en av de overnevnte funksjonene til hver av gliacellene (maks 2 poeng). Tilsammen maks 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Nervesystemet vårt kan deles inn i flere funksjonelle enheter. En av disse funksjonelle enhetene er ikke viljestyrt og kontrollerer blant annet fordøyelsen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles denne funksjonelle enheten i nervesystemet vårt og hvilke deler består den av? Nevn to eksempler på oppgaver denne delen av nervesystemet utfører. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det autonome nervesystemet. Vi deler det autonome nervesystemet inn i det sympatiske, det parasympatiske og det enteriske nervesystemet. Det autonome nervesystemet styrer aktiviteten i glatt muskulatur, hjertemuskulatur og kjertler, det vil si så godt som alle våre indre organer unntatt skjelettmusklene og skjelettet. Eksempler på oppgaver: * regulering av kroppstemperatur * regulering av blodtrykk * regulering av åndedrett * sekresjon og absorpsjon fra tarmslimhinnen og * regulering av den rytmiske sammentrekningen i tarmene og blodkarenes diameter <<imgLink "ICD-2017-2-B.PNG">> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for å navngi det autonome nervesystemet og 0,25 poeng for de riktige delene sympatiske, parasympatiske og enteriske. 0,25 poeng for hvert eksempel på funksjoner (maks 0,5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Denne funksjonelle enheten av nervesystemet har også fibre i fire hjernenerver. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva heter disse hjernenervene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nervefibrene fra det autonome nervesystemet inngår også ifire av de tolv hjernenervene: * nervus occulomotorius * nervus facialis * nervus glossopharyngeus * nervus vagus. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hver riktig hjernenerve </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan undersøker man hjernenerve VII? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hjernenerve VII: ''N. facialis''. Undersøkes ved * å teste funksjonen i mimisk muskulatur. Man ser etter asymmetri. La pasienten rynke pannen, knipe igjen øynene, smile, blåse opp kinnene og stramme platysma. * tester for smakssans i fremre 2/3 av tungen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert av punktene over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva menes med begrepet somatotopi? Nevn to typiske områder i hjernebarken med somatotopisk ordning. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Somatotopi/ somatotopisk organisering er at ulike kroppsdeler/punkter på kroppen er representert i spesifikke deler av hjernebarken. Nevroner som står i forbindelse med samme område på kroppen løper sammen. Både de motoriske og sensoriske barkområdene i hjernen har somatotopisk organisering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert av punktene over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Les det følgende forkortede og lett modifiserte sammendraget (abstractet) fra en vitenskapelig artikkel: <<< ''BAKGRUNN:'' Valget av medikamentavgivende stent i behandlingen av pasienter med diabetes mellitus og koronarsykdom som gjennomgår perkutan koronar intervensjon (PCI), har vært omdiskutert. Studier som har sammenliknet paclitaxel-avgivende stenter med stenter som avgir everolimus, har gitt motstridende resultater. ''METODE:'' Vi randomiserte 1830 pasienter med diabetes mellitus og koronarsykdom som gjennomgikk PCI til å få enten paclitaxelavgivende eller everolimus-avgivende stent. Det primære endepunktet var behandlingssvikt definert som kardial død eller hjerteinfarkt eller revaskulariseringskrevende iskemi i den behandlede arteriens forsyningsområde i løpet av 1 års oppfølging. ''RESULTATER:'' I løpet av 1 års oppfølging var risikoen for behandlingssvikt 5,6% i gruppa som fikk paclitaxel-avgivende og 2,9% i gruppa som fikk everolimus-avgivende stent. Risikodifferansen var 2,7 prosentpoeng (95% konfidensintervall 0,8-4,5), og relativ risiko var 1,9 (95% konfidensintervall 1,2-3,0). <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den viktigste fordelen med en randomisert kontrollert studie sammenliknet med andre studiedesign? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Randomiserte studier er generelt betydelig mindre konfundert enn andre studiedesign. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det er akseptabelt om studenten skriver at randomiserte studier teoretisk sett ikke er konfunderte, eller skriver at randomiserte studier har mindre systematisk feil, eller skriver at den systemiske feilen som kan være til stede, er slik at den undermen ikke overestimerer de sanne effektene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn minst to av de viktigste ulempene med randomiserte kontrollerte studier sammenliknet med andre studiedesign. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * En randomisert studie er ikke etisk akseptabelt for mange forskningsspørsmål * Det er umulig å randomisere i mange situasjoner selv om det ville være etisk akseptabelt, * Høye kostnader, * Generelt kan bare de som samtykker bli inkludert, * Det er alltid en eksperimentell situasjon, * Compliance-problemer fra deltakerens side, * Generelt bare kort oppfølgingstid </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> To av punktene over, 1 poeng for hver riktig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) "Risikodifferansen var 2,7 prosentpoeng." Tolk dette med egne ord. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Risikoen for behandlingssvikt var 2,7 prosentpoeng høyere blant dem som fikk paclitaxel- sammenliknet med everolimusavgivende stent </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det må fremkomme at risikoen var 2,7 prosentpoeng høyere med paclitaxel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) "Relativ risiko var 1,9." Tolk dette med egne ord. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienter som fikk paclitaxel-avgivende stent hadde 1,9 ganger høyere risiko for behandlingssvikt sammenliknet med dem som fikk everolimus-avgivende stent. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det må fremkomme at med paclitaxel var risikoen 1,9 ganger høyere </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Konklusjonen var slettet fra abstractet. Hvilken behandling bør anbefales basert på disse resultatene, en paclitaxel-avgivende stent eller en everolimus-avgivende stent? Hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det var betydelig lavere risiko for behandlingssvikt ved bruk av everolimus-avgivende stent (1 poeng) og derfor bør bruk av everolimus-avgivende stent anbefales framfor bruk av paclitaxelavgivende stent basert på disse resultatene (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne i 50-årene søkte lege pga. hodepine og synsfeltutfall. I forbindelse med utredningen ble det påvist en tumor i hypofyseområdet. Hun ble operert, og det ble tatt et frysesnitt av tumorvevet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er et frysesnitt? Gi noen eksempler på bruken av frysesnitt. Angi også kort noen fordeler og ulemper/usikkerhetsmomenter ved denne metodikken. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Frysesnitt er en hurtigdiagnostikk som patologiavdelingene tilbyr og som anvendes i forbindelse med kirurgiske inngrep. Ferskt vev tas ut peroperativt og blir raskt fraktet til patologiavdelingen. Dette vevet blir lagt i et nedfrysningsmedium og frosset ned. Derpå blir det skåret 4-5µm tynne vevssnitt som blir farget med hematoksylin/eosin som så blir mikroskopert av en patolog. En diagnose blir så meddelt kirurgen telefonisk så raskt som mulig, vanligvis innen ca. 15 min. Frysesnitt gir således kirurgen svar under selve operasjonen (peroperativt), og kan således være retningsgivende for inngrepets art/omfang. Frysesnittsdiagnosen er å betrakte som en foreløpig diagnose. Eksempler på anvendelsesområder: ved spørsmål om det foreligger en malign diagnose eller ikke, reseksjonskantenes forhold ved tumorkirurgi (tumorvev eller ikke her), om det er infeksjon eller ikke, påvisning av ulike typer vev (eks.: lymfeknuter, gl. parathyroidea m.fl.). Fordeler: rask metode, kan bestemme omfanget av et kirurgisk inngrep, kan forhindre reoperasjon. Ulemper: frysesnittet er av dårligere morfologi slik at mistolkninger kan skje, både med falske positive/negative svar. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For at studenten skal få 1 p kreves at studenten har et visst begrep om metodikken og dens fordeler/ulemper og kan nevne ett bruksområde. For en 2 p-besvarelse trengs følgende: peroperativ teknikk, hurtigdiagnostikk, ferskt materiale til patologisk avd., nevne minst to bruksområder. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det endelige histologisvaret fra patologiavdelingen var at detforelå et hypofyseadenom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er et adenom? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Med adenom forstås en godartet (benign) epitelial neoplasme utgått fra et kjertel- eller sekretorisk epitel. Et adenom kan ha et kjertelpreg eller et glandulært mønster, men trenger ikke alltid vise dette. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> I svaret må det fremgå for å få poeng at dette er en benign epitelial tumor relatert til kjertelvev. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mange hypofyseadenomer skiller ut ulike typer hormoner, og for å undersøke tumorvevet med henblikk på dette anvendes immunhistokjemi. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en kort beskrivelse av prosedyren immunhistokjemi og minst to bruksområder. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Immunhistokjemi er en metode der tilstedeværelse av antigener i vevssnitt kan detekteres ved hjelp av antistoffer som er reaktive mot disse antigene. Denne immunologiske bindingen kan visualiseres mikroskopisk med ulike fargemetoder, enten enzymatisk eller ved et fluorokrom. Eksempler på anvendelsesområder: sykdomsprosesser (antigen/antistoffkomplekser), påvisning av infeksiøse agens, kanser [type, invasjon (in situ vs karsinom), metastase, proliferativ aktivitet (Ki67/MIB-1 proliferativ indeks), reseptorstatus (østrogen- og progesteronreseptor, HER2, EGFR, muterte protein]. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få minst 1 poeng må det fremgå at dette er en antigen/antistoff reaksjon, altså en immunologisk metode, samt et eksempel på bruk. For en 2 p-besvarelse trengs: Metode for påvisning av antigener i vev ved bruk av antistoff, at det er en immunologisk metode, at både enzymatisk og fluorescens er deteksjonsmåter, videre minst to bruksområder. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Økt sekresjon av hypofyseadenomer kan medføre hyperplastiske forandringer i diverse indre organer </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hyperplasi? Gi to eksempler på fysiologisk og to eksempler på patologisk hyperplasi. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hyperplasi er en økning av antall celler i et vev eller organ som følge av økt celledeling hvilket medfører vanligvis en økning i et organs størrelse og vekt. En slik prosess kan bare skje i celler og vev som har evne til celledeling (altså ikke skjelett eller hjertemuskulatur eller nervevev). Eksempler på hyperplasi: * Hyperplasi kan være både fysiologisk og patologisk. En fysiologisk hyperplasi kan være både hormonelt betinget: eks.: brystkjertler ved pubertet og graviditet, endometriet under menstruasjonssyklus) eller kompensatorisk: eks.: en hyperplasi som skjer når et organ beskadiges eller fjernes/tapes (lever, nyre), bindevev i forbindelse med sårtilheling (fibrose), benmargshyperplasi med økt dannelse av erytrocytter ved f. eks. opphold i høyden. * Patologisk hyperplasi: ved f. eks. økt hormonell påvirkning eller vekstfaktorstimulering: hypofyseadenom med økt utskillelse av veksthormon [gigantisme (før lukking av epifyseskiver) og akromegali), ACTH (binyrebarkhyperplasi)], lav serum-kalsium gir hyperplasi av gl. parathyroidea, gynekomasti (østrogenstimulering), prostatahyperplasi, struma (ved jodmangel), lymfoid hyperplasi ved inflammasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For 1 p: stikkord for hva som må være med: økt celletall, celledeling, det må være nevnt minst ett eksempel på hyperplasi For 2 p: økt celletall, celledeling, minst ett eksempel på hhv. fysiologisk og patologisk hyperplasi. For 3 p: økt celletall, celledeling (økt mitoseaktivitet), og to eksempler på hhv. fysiologisk og patologisk hyperplasi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen utviklet i 60-års alder en uttalt kronisk obstruktiv lungesykdom (KOLS). I forbindelse med et røntgenbilde av lungene ble det også funnet en tumor i høyre lunges overlapp. Denne ble operativt fjernet, og histopatologisk undersøkelse av tumorvevet viste et adenokarsinom. Noen dager etter inngrepet ble hun en morgen funnet død i sin seng. Obduksjon ble begjært for å påvise dødsårsaken, og det ble da funnet dyp venetrombose i høyre underekstremitet og en lungeemboli i truncus pulmonalis med utstrekning inn i begge pulmonalarterier. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Sett opp en dødsmelding for denne pasienten. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ia: Sentral lungeemboli (sadelemboli) Ib: Dyp venetrombose Ic: Adenokarsinom høyre lunge, operert II: Kronisk obstruktiv lungesykdom </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det viktige her er forståelsen av hvilke tilstander som skal under I og II og rekkefølgen av sykdommene/tilstandene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Antibiotikaresistens har de senere årene blitt et stadig større problem internasjonalt, og vi frykter at vi snart kan stå overfor en situasjon der vi regelmessig ser pasienter med infeksjoner som er resistent mot alle kjente antibiotika. Dersom vi skal unngå å havne i denne situasjonen er det viktig at leger kjenner godt til dette temaet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn minst tre ulike virkningsmekanismer for hvordan antibiotika kan hemme vekst av eller drepe bakterier. For hver av disse, nevn et antibiotika som benytter denne mekanismen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Celleveggsyntese (betalaktamer, glykopeptider) * Nukleinsyresyntese (eks: kinoloner) * Proteinsyntese (eks: aminoglykosider) * Hemming av metabolisme (eks: trimetoprim/sulfa). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Tre forskjellige mekanismer med eksempel på antibiotikum for hver av disse kreves for maks poeng, to mekanismer og antibiotika kreves for 1 p, en mekanisme og antibiotikum 0,5 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bakterier som er naturlig følsomme kan utvikle resistens mot et gitt antibiotikum. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan slik resistens kan oppstå, og forklar hvordan en resistent bakterie etter hvert kan utvikles til å bli en dominerende del av bakteriefloraen i et miljø. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En bakterie kan utvikle ervervet resistens gjennom mutasjoner i sitt arvemateriale eller gjennom opptak av fremmed arvemateriale som inneholder resistensgener. Horisontal overføring skjer via tre ulike prinsipper: * opptak av nakent DNA (transformasjon) * overføring gjennom direkte kontakt med en annen bakterie (konjugasjon) * via en bakteriofag (transduksjon) I en bakterieflora kan en av mange bakterier være resistente. Over tid vil denne bakterien i utgangspunktet ikke ha noen fordel sammenlignet andre bakterier. Dersom det tilsettes antibiotika til miljøet vil følsomme bakterier hemmes mens den resistente subpopulasjonen vil unne ta over ledig plass og dominere populasjonen (dette kalles seleksjon) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Utvikling av resistens (1,5 p): 0,5 p for å nevne mutasjoner, 0,5 p for å nevne horisontal overføring, pluss 0,5 dersom minst to av tre typer horisontal resistens nevnes. Beskrivelse av prinsippet for seleksjon av resistens (0,5 - 1 p), maks forutsetter en god beskrivelse av fenomenet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et mye omtalt tema innen antibiotikaresistens er ekstendert spektrum betalaktamase (ESBL) hos bakterier innen familien //Enterobacteriaceae//. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv prinsippet for hvordan ESBL gir resistens, hvilke hovedgrupper av ESBL som finnes og hvilke klasser av antibiotika de gir resistens mot. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enzym som spalter betalaktamringen hos betalaktamantibiotika. Det finnes to (tre er også korrekt) hovedgrupper av ESBLer: de som hemmer penicilliner og betalaktamantibiotika t.o.m. 3 gen. cefalosporiner, men ikke karbapenemer, og de (ESBLcarba) som også hemmer karbapenemer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for å beskrive hvordan ESBL gir resistens, 0,5 p for å nevne penicilliner, cefalosporiner, og evt karbapenemer, og 0,5 p for å nevne skillet mellom vanlig ESBL og karbapenemaser. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I beskrivelsen av bakteriers følsomhet overfor antibiotika benyttes begrepene «epidemiologisk cut-off» forkortet ECOFF og «klinisk brytningspunkt». </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hva de to begrepene betyr (gjerne med en illustrasjon), og forklar hvilken nytte vi kan ha av å benytte begge begrepene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Epidemiologisk cut-off: den MIC-verdi som skiller mellom bakterier innen en bakterieart som ikke har ervervet resistens (villtypebakterier) og bakterier innen samme art som har ervervet resistens. Klinisk brytningspunkt: den MIC-verdi som benyttes til å skille mellom bakterieisolater som klassifiseres som følsomme vs resistente (dvs. resistens: tolererer en antibiotika-konsentrasjon som er høyere enn det som er oppnåelig i infeksjonsfokus og som derfor innebærer høy risiko for behandlingssvikt) overfor et bestemt antibiotikum. Nytte av å benytte begge begrepene: Epidemiologisk cut-off er nyttig til epidemiologisk overvåkning, spesielt for å vurdere hvor stor andel av bakterier innen en bakterieart som er i ferd med å utvikle (ervervet) resistens. Kliniske brytningspunkter er bedre egnet når en skal vurdere om en kan forvente klinisk effekt av en bestemt antibiotikabehandling hos en konkret pasient med infeksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p poeng for korrekt svar ECOFF, 1 p for korrekt svar klinisk brytningspunkt, og 1 p for god beskrivelse av nytten av begrepene. For maks poeng må beskrivelsen vise at studenten forstår at begrepet klinisk brytningspunkt sier noe om forventet klinisk effekt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan vi gjøre for å hindre utvikling av antibiotikaresistens? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Overvåkning av antibiotikaforbruk og antibiotikaresistens, unngå overforbruk av antibiotika, øke kunnskapen om antibiotika og resistens hos helsepersonell og publikum generelt, fokus på smittevern, bedre diagnostikk, nye antibiotika. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for hvert delsvar. Må inkludere delsvarene overvåkning, unngå overforbruk, smittevern for å få maks poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vanlige nociceptive smertetilstander begynner med aktivering av en perifer nociceptor, og slutter med at vår erkjennelse av smerten leder til en smerteatferd. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke typer stimuli kan aktivere perifere nociceptorer? Skisser kort hvordan et enkelt, akutt smertesignal leder til smerteerkjennelse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Varme * Trykk * Skjæring * Kulde * Ischemi * Inflammasjon Ved en enkel akutt smerte aktiveres en primær afferent nociseptor i det perifere nervesystemet, aksjonspotensialet ledes inn til bakhornet i ryggmargen der transmittorstoffer frigjøres fra den primære afferente i synapsespalten og overføres til den sekundære afferente nociseptoren. Ved aktivering av den sekundære afferente, vil smerteimpulsene bli ledet opp tractus spinothalamicus, flesteparten på motsatt side av ryggmargen sammenlignet med smertens lokalisasjon, til «smerte-matrix» = hjernestamme, periakveduktale grå substans (PAG), thalamus, ulike områder i cortex. I noen situasjoner vil nedadstigende hemmende baner til dorsalhornet modulere transmisjonen av nociceptive signaler. <<imgLink "ICD-2017s-2-A.PNG">> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Å nevne punktene over: 5 av 6 bør gi 1 poeng, 3 av 6 bør gi 0,5 poeng. Deretter 2 poeng for å ha med - at det primære nevronet går inn til bakhornet i ryggmargen, - at et sekundært nevron aktiveres der, - at det krysser over til motsatt sides tractus spinothalamicus, og – at det går videre opp til ulike strukturer i CNS som er med i oppfattelsen av smerte (=smerte-matrix). 0,5 poeng reduksjon ved hvert manglende punkt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved vevsskade fører celleskade/-død til inflammasjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På hvilke måter påvirker de inflammatoriske substansene primære afferente nociceptorer? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De inflammatoriske substansene (produkter fra hvite blodceller og bestanddeler fra ødelagte celler) kan føre til enten direkte aktivering av nociceptorer eller øke følsomheten til nociceptorer. De aktiverer også stille nociceptorer </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.25 for direkte aktivering, 0.25 for å øke følsomheten, 0,5 poeng for å aktivere stille nociceptorer. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Begrepene hyperalgesi og allodyni beskriver to ulike former for økt følsomhet for smerte. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er hyperalgesi og hva er allodyni? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hyperalgesi innebærer at et stimulus som til vanlig gir smerte, gir sterkere smerte enn vanlig (økt smerte), mens allodyni innebærer at et stimuli som til vanlig ikke gir smerte, er smertefullt (noe som vanligvis ikke gir smerte, gir smerte). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Smerte og nocicepsjon er beslektede begreper, men er ikke synonymer. Å forstå forskjellen mellom smerte og nocicepsjon er avgjørende for å gi god smertebehandling. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er forskjellen mellom smerte og nocicepsjon? Hvilke behandlingsmessige konsekvenser vil det ha dersom man tenker at smerte og nocicepsjon er det samme? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Smerte er en subjektiv opplevelse av vevsskade eller truende vevsskade, mens nocicepsjon er aktivering av perifere nociceptorer. Man kan oppleve smerte uten aktivering av nociceptorer, og man kan ha nocicepsjon uten å oppleve smerte. Dersom man tenker at det er et proporsjonalt forhold mellom nocicepsjon og smerte, står man i fare for å basere smertebehandlingen for mye på medikamenter og intervensjonsprosedyrer. Når man forstår forskjellen, velger man en helhetlig og ofte tverrfaglig vurdering/behandling av smerten. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for forskjellen mellom smerte og nocicepsjon. 0,5 poeng for at det er fare for overbehandling med analgetika dersom man gjør feilen med å anta proporsjonalt forhold mellom nocicepsjon og smerte. 0,5 poeng for å formidle at smerte må vurderes helhetlig, og ofte trenger tverrfaglig behandling. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Den samme nociceptive input til hjernen vil ikke alltid gi opphav til samme smerteatferd. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer påvirker smerteatferden? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Smerteatferden bestemmes av fortolkning av smerten. Fortolkningen påvirkes av blant annet kunnskap, tidligere erfaringer og tendens til verstefallstenkning. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> # Å angi fortolkning # Å angi faktorer som påvirker fortolkningen av smerte. 1 poeng for å angi «fortolkning», 2 poeng dersom man utdyper om hvilke faktorer som bidrar til fortolkningen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En tidligere frisk kvinne på 36 år oppsøker fastlegekontoret. De siste 3-4 ukene har hun vært slapp og sliten. Hun har hatt økt tørste og hyppig vannlating, den siste uken med toalettbesøk 1-2 ganger hver natt. Hun har gått ned 4 kg i vekt og veier nå 72 kg (BMI 24,6 kg/m^^2^^)(normal 18,5-24,9 kg/m^^2^^). Ved undersøkelse er hun i relativt god allmenntilstand. BT 121/68, puls 79 regelmessig. Du måler et kapillært blodsukker på 28,2 mmol/l, og ~HbA1c er 11,6 % (4,3 – 5,6%). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) For å avgjøre hvilken type diabetes slike pasienter har, hvilke opplysninger (anamnestiske og/eller kliniske observasjoner/funn) er viktigst å vurdere, og hvilke supplerende undersøkelser (til det som er nevnt) er aktuelle? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasientens alder, vekt/BMI, tidligere sykehistorie (autoimmune sykdommer?) og arv (diabetes type 2 i familien, autoimmunitet) er faktorer som bør vurderes. Supplerende undersøkelser: p-glukose og insulin C-peptid for evaluering av egenproduksjon av insulin. Antistoff mtp autoimmun diabetes, viktigst anti-GAD og anti-IA2. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng ved diskusjon av opplysninger som vurderes, bør inkludere minst 2 av faktorene alder/BMI/arv/tidligere sykdommer. 1 poeng for supplerende undersøkelser; minimum autoantistoff (0,5 poeng), og C-peptid (0,5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er underliggende årsak/mekanisme bak de to hovedtypene diabetes? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Type 1 diabetes: nedsatt, etter hvert helt fraværende insulinproduksjon som følge av autoimmun ødeleggelse av betaceller i pankreas. Noen grad av arvelig predisposisjon, HLA-assosiasjon. Type 2 diabetes: nedsatt insulinfølsomhet (insulinresistens) som følge av overvekt (spesielt visceralt (buk) fett), metabolsk syndrom, inaktivitet, genetisk predisposisjon (arvelighet), samt nedsatt insulinproduksjon – pga arvelig predisposisjon, uttretting av beta-celler som følge av vedvarende kompensasjon for manglende insulinfølsomhet, vedvarende høyt blodsukker og inflammasjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Type 1: 1 poeng for autoimmun destruksjon av betaceller i pankreas (som gir nedsatt/fraværende insulin). Type 2: 0,5 poeng for insulinresistens og mulige årsaker (minst én) og 0,5 poeng for nedsatt insulinproduksjon og mulige årsaker (minst én). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hormoner deltar i blodsukkerreguleringen, i hvilke organ lages de og hvordan virker de i regulering av blodsukkeret? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Blodglukosenivået holdes stabilt ved kombinert hormonell regulering av spesielt lever, muskelvev og fettvev ved balansering av glukoselagring, glukosedannelse og energiproduksjon. ''Insulin'' (lages i bukspyttkjertel, beta-celler) signaliserer for høyt blodsukkernivå. Stimulerer opptak av glukose og omdanning til glykogen (lever, muskler) og triglycerider (lever, fettvev). ''Glukagon'' (lages i bukspyttkjertel, alfa-celler) signaliserer for lavt blodsukkernivå. Mobiliserer glukose ved å stimulere glykogennedbrytning (glykogenolyse i lever og muskler), glukoneogenese (nysyntese av glukose i lever) og fett-oksidering (fettvev, lever) for å produsere glukose som kan frigjøres. ''Adrenalin'' (lages i binyremarg) frigjøres i blodet for å klargjøre muskler, lunger og hjerte raskt for høyere aktivitet. Økt tilgjengelighet av glukose ''Kortisol'' (lages i binyrebark) bidrar til kroppens håndtering av stress over tid. Økt tilgjengelighet av glukose. ''Veksthormon'' (GH, lages i hypofysens forlapp) virker ved å mobilisere fettsyrer fra fettvev og senke utnyttelsen av glukose. ''Glukagon'', ''adrenalin'', ''kortisol'' og ''veksthormon'' er motreguleringshormoner ved hypoglykemi. I tillegg vil peptidhormoner fra tarm (inkretiner, i hovedsak ''GLP-1'' og ''GPI'') virke ved å senke blodsukkeret i forbindelse med måltid ved å stimulere insulinsekresjon og hemme glukagonsekresjon fra pankreas. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for insulin og glukagon og hvor de lages, 1 poeng for hvordan de regulerer blodsukkeret. 1 poeng for adrenalin og kortisol, hvor de lages og hvordan de påvirker blodsukkeret. (Beskrivelse av veksthormon og inkretiner kan brukes i oppjustering av poeng om noe annet mangler). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn prinsippene i behandlingen av type-1 diabetes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Insulinbehandling. Insulin settes subkutant. Hovedprinsipp er basalinsulin (oftest langsomtvirkende insulin/insulinanalog, evt insulinpumpe), samt måltidsinsulin (hurtigvirkende insulinanalog). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for insulinbehandling 0,5 poeng for å nevne hovedprinsippet basalt insulin + måltidsinsulin </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort mekanismen bak de to akutte komplikasjonene som kan oppstå ved type 1 diabetes. Nevn de viktigste umiddelbare tiltak. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Hypoglykemi oppstår når en har dosert mer insulin enn en hadde behov for. Dette medfører for lavt blodsukker. Tiltak: tilføre sukker (drikke/mat, evt intravenøst) # Ketoacidose oppstår ved insulinmangel, hvor glukose ikke kommer inn i cellene. Insulinets hemming av hormonsensitiv lipase opphører. Fett spaltes som alternativ energikilde, og fettsyrer dannes og frigjøres til sirkulasjonen. Disse omdannes til acetyl CoA som omdannes til ketoner i leveren. Tiltak: tilføre insulin (og væske, da pasientene ofte er dehydrerte pga glukosuri med vanntap). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver komplikasjon, hovedårsak og tiltak </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne på 78 år begynner å føle at kroppen ikke fungerer like godt som før. Konkret plages hun av dårligere syn og hørsel. Hun synes disse funksjonene har endret seg mye siden hun var ung, og er i tvil om hvilke endringer man må regne med og hva som kan være tegn på underliggende sykdom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke anatomiske og fysiologiske forandringer som normalt oppstår hos eldre når det gjelder syn og hørsel, og hva personen selv opplever som følge av disse forandringene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Syn: presbyopi = «gammelmannssyn»: Stivere / mindre elastisk linse. Merker økt nærpunktsavstand og nedsatt akkomodasjonsevne (ser ikke godt på nært hold), men ser fortsatt skarpt på lang avstand. Atrofi av tårekjertel, færre slimproduserende celler i conjunctiva: merker tørre øyne. Grålig cornea og linse: merker endret farvesyn. Mange merker også nedsatt mørkeadaptasjon, redusert dybdesyn og snevrere synsfelt. Hørsel: presbyacusis = «gammelmansshørsel»: Hårcelledegenerasjon, tap av nerveceller i hørselsbanene, økt stivnet i mellomøreknoklene, kjemiske forandringer i det indre øret. Merker dårligere hørsel og særlig problemer med å høre lyse toner, nedsatt evne til å skille lyder fra hverandre, blir mer plaget av bakgrunnsstøy. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for syn, 1 poeng for hørsel. ½ poeng ved ufullstendige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen slo seg mot et bordben og fikk et sår på leggen. Etter et par dager oppdager kvinnen gulgrønt puss i såret. Huden omkring er rød og vond. Kvinnen går til lege, og mikrobiologisk undersøkelse viser oppvekst av streptokokker </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi hvilke leukocytter som spiller den viktigste rollen for bekjempelse av sårinfeksjonen de første par dagene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bakterieinfeksjoner bekjempes særlig ved fagocytose. De første dagene er nøytrofile granulocytter viktigst. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Monocytter/makrofager gir ikke poeng fordi disse først blir viktige senere i infeksjonsforløpet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar detaljert de to viktigste mekanismene som disse leukocyttene bruker for å bekjempe infeksjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tre aktuelle mekanismer som kan nevnes her: # Fagocytose: Granulocytten må ha direkte kontakt med bakterien som skal fagocyteres. Bakterien __bindes til ulike reseptorer__, bl.a. komplementreseptorer, antistoffreseptorer hvis kvinnen har antistoff fra tidligere infeksjon, og andre pattern recognition receptors (PRR) som CD11b/CD18. Faresignaler som kjemokinreseptorer, FMLP-reseptor og Toll-like reseptorer binder ligander som __aktiverer granulocytten__. Det gir __endringer i cytoskjelettet__ som dytter ut cellemembranen til bakterien ender i en dump. Deretter lukkes membranen over bakterien og det er dannet et __fagosom__. # Intracellulært drap i fagolysosomer: Fagosomet smelter sammen med et lysosom og det dannes et __fagolysosom__. Ved aktiveringen av granulocytten samles de ulike komponentene av __NADPH-oksydasen__ og superoksyd frigjøres inn i fagolysosomet. Det dannes __ROS__ – reaktive oksygenforbindelser. Noen er kortlivede, som hydrogen peroksyd (H,,2,,O,,2,,). Videre omdannelse ved hjelp av enzymet __myeloperoksidase__ fører til produksjon av langlivede reaktive forbindelser som hypokloritt/hypoklorsyre og kloraminer. Det dannes også __reaktive nitrogenforbindelser__. __Degranulering inn i fagolysosomet__ tilfører proteinaser og andre bakteriedrepende substanser. Disse, ROS og reaktive nitrogenforbindelser dreper bakteriene. # NETose: Dannelse av «neutrophil extracellular traps». Intracellulære membraner brytes ned og granula-komponenter som laktoferrin og myeloperoksidase vandrer til kjernen. Kromatin-biter og granulaproteiner skilles ut av cellen som et nett med stor overflate. Bakteriene kan fanges i nettet og immobiliseres, evt. også drepes </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> De to viktigste mekanismene er fagocytose og drap i fagolysosomer, mens NETose trolig særlig har betydning når fagocytosekapasiteten overskrides. For full poengsum må derfor fagocytose og intracellulært drap være beskrevet. For full poengsum kreves noen detaljer om mekanismene. Bare NETose gir inntil 1 poeng. NETose pluss en av de andre mekanismene gir inntil 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan komplementsystemet kan aktiveres ved en streptokokkinfeksjon, og hvordan det kan bidra til bekjempelse av denne infeksjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Streptokokker er Gram positive bakterier. Komplementaktivering kan skje via binding av CRP til bakteriekapselen og deretter aktivering av __klassisk komplementvei__, og via __lektin pathway__ med binding av mannose-bindende lektin (MBL) til karbohydratstrukturer i bakteriekapselen. __Alternativ pathway__ kan aktiveres av bakterieoverflaten fordi den ikke har humane komplementhemmere og vil dessuten alltid delta som forsterkning når C3b er dannet, uansett pathway som startet aktiveringen. Pga. tykk kapsel vil dannelse av det terminal komplementkompleks ikke lett føre til lyse fordi TCC er for kort til å nå gjennom bakteriekapselen. Derfor er de viktigste effektene dannelse av __analafylatoksiner (C3a og C5a) som øker inflammasjonen og aktiverer fagocyttene__, samt at bakteriene dekkes med C3b og andre komplement-aktiveringsprodukter som fungerer som __opsoniner__ for fagocytose. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For full poengsum må mekanismene for alle aktiveringsveiene være nevnt (1 poeng), samt økt inflammasjon, opsonisering og ikke lyse (1 ½ poeng). Spørsmålet er formulert som «forklar hvordan», så det forventes korte begrunnelser for svarene. Streptokokker har imidlertid måter å unngå komplement: Mproteinet degraderer C3b på bakterieoverflaten og noen species kan produsere et enzym som degraderer C5a. Det er ikke forventet at studentene tar med dette poenget i svaret. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen er urolig for om hun feiler noe mer alvorlig enn sårinfeksjonen, og legen tar ulike blodprøver. De aller fleste prøvene viser seg å være normale, men screeningtesten mot antinukleære antistoffer er svakt positiv. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke hovedmekanismer som sørger for at de fleste autoreaktive B-celler ikke utvikler seg til plasmaceller </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De to viktigste mekanismene er sentral og perifer toleranse. Sentral toleranse for B-celler: Selv-reaktive B-celler fjernes under modningen i benmargen når B-cellereseptoren dannes, mens B-cellene er i kontakt med stromaceller. Dette kalles __negativ seleksjon__ fordi cellene som overlever mangler en egenskap = de mangler selv-reaktivitet. Selvreaktive celler gjennomgår enten __apoptose__ (multivalente selv-antigener som HLA) eller __anergi__ (løselige selv-antigener). Anerge celler dør deretter raskt. Hvis noen nevner muligheten for receptor editing for å unngå selvreaktivitet på dette stadiet, er det fint, men det kreves ikke. Perifer toleranse for B-celler: Det viktigste er trolig __at det ikke finnes tilsvarende autoreaktive T-celler__ som kan gi autoreaktive B-celler hjelp ved aktivering. Derved vil B-cellene isteden bli anerge og deretter dø. Et annet forhold som kan være med her, men som ikke kreves er __høydosetoleranse__, dvs. at de fleste selvantigener finnes i høy konsentrasjon og at lymfocytter oftest ikke reagerer hvis antigendosen er svært høy. Det er heller ikke nødvendig å ha med at vanlige selvantigener presenteres når vevsceller gjennomgår apoptose. Dette starter vanligvis ingen immunreaksjon eller B-celleaktivering fordi det mangler faresignaler som kunne aktivere antigenpresenterende celler. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Både sentral og perifer toleranse må nevnes for fullt poeng - om ikke begrepene, så minst hovedinnholdet i dem. Spørsmålet lyder «forklar» så fullgodt svar må inneholde noe om mekanismer. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 57 år gammel mann kommer til akuttmottaket etter å ha hatt langvarig oppkast og diare. Blodtrykk er 96/54 mmHg og puls 110 regelmessig. Han har tørre slimhinner og gir uttrykk for tørste. Ekstremitetene er kalde perifert. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Pasienten er åpenbart hypovolem. Hvordan registrerer kroppen det reduserte sirkulerende volumet i en slik situasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Via trykkreseptorer på den arterielle siden av sirkulasjonen, i aortabuen, i carotidene og i de afferente arteriolene i nyrene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Trykkreseptorer på den arterielle siden av sirkulasjonen (høytrykksreseptorer) gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved redusert effektivt sirkulerende volum aktiveres det sympatiske nervesystem som i sin tur stimulerer reninangiotensin-aldosteron systemet (RAAS). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan påvirker disse to systemene tonus i afferente og efferente arterioler i nyrene, og hvordan påvirker dette glomerulær filtrasjonsrate (GFR) og filtrasjonsfraksjonen (FF)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sympatikus (adrenalin/noradrenalin) og Angiotensin II (ATII) gir begge vasokonstriksjon av efferente og afferente arterioler, men ATII gir sterkere efferent vasokonstriksjon. Resultatet er fall i GFR. På grunn av kraftigere efferent vasokonstriksjon av Angiotensin II, vil filtrasjonsfraksjonen (FF) øke slik at fallet i GFR blir mindre enn det ellers ville ha blitt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * efferent og afferent vasokonstriksjon gir 1 poeng * fall i GFR gir 1 poeng * økt FF gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Reabsorpsjon av salt og vann til interstitiet og videre til de peritubulære kapillærer, er viktig for å øke det sirkulerende volumet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke faktorer intrakapillært i de peritubulære kapillærene som fremmer reabsorpsjon i en tilstand av hypovolemi? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> På grunn av vasokonstriksjonen i de afferente og efferente arteriolene, vil det hydrostatiske trykket i de peritubulære kapillærene bli redusert, slik at reabsorpsjonen fra interstitiet øker. Siden filtrasjonsfraksjonen er økt, vil det kolloid-osmotiske (onkotiske) trykket i de peritubulære kapillærene øke, noe som også fremmer reabsorpsjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * fall i intrakapillært hydrostatisk trykk gir 1 poeng * økt intrakapillært kolloid-osmotisk (onkotisk) trykk gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Serum-osmolalitet er normal (285 mmol/kg), men likevel er det økt frigjøring av antidiuretisk hormon (ADH). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mekanismen bak den økte frigjøring av ADH i denne kliniske situasjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fall i blodtrykk eller blodvolum fører til aktivering av baroreflekser som via hjernenerver sender signaler til de hypotalamiske sentra som i sin tur øker syntesen og utskillelsen av ADH, selv om osmolaliteten er normal/lav. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fall i blodtrykk/blodvolum registreres av baroreseptorer og signalene overføres til hypotalamiske sentra som skiller ut ADH. Gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Nyrene forsøker i en slik klinisk situasjon å opprettholde sirkulasjonen så godt det lar seg gjøre. Urinvolumet er redusert, og inneholder lite Na^^+^^. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke mekanismer i nyrene fører til det reduserte urinvolumet og den lave Na^^+^^-konsentrasjonen i urinen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Aktivering av det sympatiske nervesystem og RAAS-systemet fører til fall i glomerulær filtrasjons rate (GFR), og til økt reabsorpsjon av Na^^+^^ langs store deler av nefronet. Frigjøring av ADH øker vann-reabsorpsjonen distalt i nefronet, og gir redusert urinvolum. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * sympatikus og RAAS-systemet fører til økt reabsorpsjon av Na^^+^^ langs nefronet gir 1 poeng * fall i GFR gir 1 poeng * frigjøring av ADH gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I bukhulen finnes en tynn, fuktig hinne (peritoneum) som kler hele bukhulens overflate. Noen organer er helt omgitt av denne hinnen (intraperitoneale), mens andre ligger bak eller er bare delvis omgitt av den (retroperitoneale). Ved embryogenesen vandrer noen organer og går fra å være intraperitoneale til å bli retroperitoneale. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor blir binyrene og nyrene dannet __under__ organogenesen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nyrene og binyrene (og ureter) er helt retroperitoneale, også under organogenesen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for nyrer og 0,5 poeng for binyrer. Ureter gir ikke poeng da det ikke regnes som et organ. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Binyrer er et eksempel på organer som er lokalisert retroperitonealt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort binyrenes makroskopiske oppbygning. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binyrene, to hormonproduserende kjertler som ligger oppå hver sin nyre og er delvis omgitt av nyrekapselens fettvev. Binyrene består av bark (cortex) og marg (medulla). De to lagene har forskjellig opprinnelse, og de produserer forskjellige hormoner med ulike oppgaver i organismen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å nevne cortex og 1 poeng for å nevne medulla. Maks 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Binyrene er et hormonproduserende organ, og som alle hormonproduserende organer har de god blodforsyning. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke eller hvilken arterie(r) sørger for blodforsyning til binyrene og hvor avgår den/de fra? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binyrene suppleres av tre arterier: * arteria suprarenalis superior, som avgår fra arteria phrenica inferior * arteria suprarenalis media, som avgår fra aorta * arteria suprarenalis inferior, som avgår fra arteria renalis </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å nevne arteria suprarenalis, 0,5 poeng for å vite at det er flere enn èn arterie til binyrene og 0,5 poeng for å nevne enten avgang fra aorta eller fra arteria renalis, maks 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den mikroskopiske oppbygningen av binyrene og nevn eksempler på hvilke hormoner de ulike cellene produserer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binyrebarken deles histologisk inn i tre cellelag, regnet utenfra: * zona glomerulosa, * zona fasciculata, * zona reticularis. Hormonene fra binyrebarken (cortex) kalles kortikosteroider. Vi inndeler binyrebarkhormonene i * mineralokortikoider som regulerer natriumbalansen (aldosteron), * glukokortikoider som virker på omsetningen av karbohydrater, salter, fett og proteiner i kroppen (kortisol), * androgener (testosteron). Binyremargen er i virkeligheten en funksjonell del av det autonome nervesystemet og regnes til de såkalte paragangliene. I det sympatiske nervesystemet overføres impulsene fra nerveendene til organene ved hjelp av noradrenalin. Både dette og det beslektede adrenalin dannes i binyremargens celler. Det viktigste hormonet som produseres i binyremargen er adrenalin. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av zonaene i binyrebarken, maks 1,5 poeng, og 0,5 poeng for hvert av de 3 hormonene som nevnes, maks 2 poeng. Både generell benevnelse (mineralokortikoider) og spesiell benevnelse (aldosteron) kan godtas. Navngivelse av adrenalin eller noradrenalin gir 0,5 poeng, ingen ekstra poeng for å nevne begge. Til sammen maks 3,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Binyrene dannes embryonalt fra to kimblad. Hvilke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binyrebarken dannes embryonalt av det midterste kimblad (mesoderm). Binyremargen dannes embryonalt fra det ytterste kimblad (ectoderm, nevrallisten). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert kimblad med riktig del av binyret, maks 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forstyrrelser i binyrebarkens funksjon kan gi opphav til sykdom. Akutt mangel på binyrebarkhormoner kan utløse en livstruende tilstand, en såkalt Addison krise. Denne tilstanden kan skyldes en primær svikt i binyrebarken, eller den kan oppstå hos pasienter som brått har stanset en langvarig behandling med kortison. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er typiske symptomer ved en Addison krise? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Typiske symptomer ved Addison krise er __hypovolemi__ og __hypotensjon__. Pasientene har ofte __feber__ på grunn av underliggende infeksjon. De kan ha __sterke magesmerter__, __kvalme__ og __brekninger__. Andre symptomer er __motorisk uro__, __akutt forvirring__ og __krampeanfall__. Uten behandling vil pasienten gå i __koma__. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å nevne et av de understrekede symptomene, maks 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du har fått jobb som fastlegevikar ved et legekontor. En 37 år gammel mann har time for helsesjekk. Han jobber som trailersjåfør, og arbeidsgiveren har tilbudt å betale helsesjekk for alle sine ansatte. Mannen er lett overvektig (BMI: 25), men rapporterer ingen spesielle plager. Du finner heller ingenting unormalt ved rutinemessig undersøkelse. Du rekvirerer likevel noen blodprøver. Etter noen dager får du svar som viser forhøyede kolesterolverdier i blodet (totalkolesterol 9.4 mmol/L; referanseområde 30-49 år: 3,3 - 6,9 mmol/L). På bakgrunn av resultatet inviterer du pasienten til ditt kontor for en samtale. Du orienterer om funnet og spør samtidig om det er andre i familien som har høyt kolesterol. Han er noe usikker på dette, men vet i alle fall at moren ble satt på kolesterolsenkende medisin etter et hjerteinfarkt for tre år siden. Mannen har for øvrig to barn, på 6 og 9, som begge er tilsynelatende friske. Du mistenker en mulig arvelig tilstand og ønsker å rekvirere en gentest. Pasienten gir sitt muntlige samtykke til dette. Gentesting er regulert i Bioteknologiloven, som skiller mellom ulike typer gentester </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type gentest vil det her være snakk om? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En diagnostisk gentest. Pasienten har allerede symptomer (dvs. høyt kolesterol), og testen utføres for å bekrefte (eller avkrefte) en genetisk tilstand. Påvist mutasjon gir 100 % sikker diagnose. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Spørsmålet søker å avdekke om studentene har kunnskap om de ulike gentester som bioteknologiloven skiller mellom. Andre gentester omfatter prediktive-, pre-symptomatiske, eller bærerdiagnostiske tester. I de to førstnevnte utføres gentesten før symptomer på sykdommen er manifest. I det siste tilfellet vil ikke personen selv ha sykdommen, men vil kunne overføre den til sine barn. Loven plasserer også genetiske undersøkelser for kjønnsbestemmelse i en egen gruppe (unntatt for identifikasjonsformål). Bare riktig svar (diagnostisk gentest) gir uttelling (1 poeng). Referanse [[Lovdata|https://lovdata.no/dokument/NL/lov/2003-12-05-100?q=bioteknologiloven]] </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Drøft hvilke lovmessige og praktiske forutsetninger som gjelder for at du skal kunne rekvirere en slik test? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Genetiske undersøkelser deles inn etter formålet med undersøkelsen. Det er et viktig lovmessig skille mellom det å genteste en syk person (med klinisk fenotype) i diagnostisk og/eller behandlingsmessig øyemed, i forhold til det å genteste en klinisk frisk (evt. presymptomatisk) person. //I henhold til Bioteknologiloven stilles det ikke krav til genetisk veiledning ved diagnostisk testing.// Testing av friske innebærer derimot at det skal foreligge skriftlig samtykke, og det er krav om genetisk veiledning før, under og etter testingen. Av praktiske forutsetninger gjelder at det eksisterer en gentest for denne tilstanden, og at slik testing er etablert som et helsetilbud i Norge. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Når en person er syk, er formålet med den genetiske testen først og fremst å stille en diagnose, forklare hvorfor sykdommen/tilstanden inntraff, eller for å tilpasse behandling. At en person oppsøker helsevesenet på egne vegne er å regne som et stilltiende samtykke til undersøkelser, og har en klar forventning om at helsevesenet gjør sitt ytterste for å stille en diagnose og gi den beste behandling. //Da kreves det ikke skriftlig samtykke// (i dette tilfellet ble det gitt muntlig samtykke). //Loven krever heller ikke at det gis genetisk veiledning siden pasienten allerede får oppfølging av helsevesenet// (riktig svar på disse to punktene gir 1,5 poeng). At det faktisk eksisterer en test er en forutsetning. For at den skal kunne rekvireres må den være etablert som et helsetilbud (riktig svar på dette punktet gir 0,5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tilstanden du mistenker er familiær hyperkolesterolemi (FH). Inntil 25.000 personer i Norge har FH, men bare én fjerdedel er klar over sin diagnose. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den vanligste årsaken til FH, og hvilken arvegang utviser den? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> FH er en autosomal dominant arvelig tilstand med høyt nivå av LDL-kolesterol i blodet, som oftest forårsaket av mutasjoner i genet som koder for LDL-reseptor. Autosomal betyr at kvinner og menn har samme risiko for å arve sykdommen (genet ikke på kjønnskromosomer). Dominant arvegang betyr at det er tilstrekkelig å arve én mutert genkopi (dvs. fra en av foreldrene) for fenotypisk manifestasjon (dvs. forhøyet kolesterol og sekundært økt risiko for hjertekarsykdom). Med FH menes i de fleste tilfeller heterozygot FH, med ca. 50 % reduksjon i opptaket av LDL. Det er den heterozygote formen som forekommer hos inntil 25 000 nordmenn (prevalens 1:300 til 1:200). Homozygot form forekommer hos ca 1 av 500.000 til en million, og kan være en livstruende tilstand. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Angivelse av den vanligste årsaken til FH (mutasjon i genet for LDL-reseptor) (1 poeng). Autosomal dominant arvegang (1 poeng). I noen tilfeller kan FH være forårsaket av mutasjon i APOB-genet eller i PCS9 genet, men disse tilfellene er betydelig mindre frekvent. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Etter tre uker får du svar på gentesten som bekrefter at pasienten har FH. Han blir funnet å være heterozygot for FH-mutasjonen. Arvelige tilstander kan ha betydning for slektninger av den berørte. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke rammer norsk lov setter for oppfølging av pasientens familiemedlemmer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Udiagnostisert og ubehandlet FH kan få store konsekvenser for både den enkelte pasient og dens familiemedlemmer. En stor andel av nydiagnostiserte blir funnet ved å screene slektninger til den som er affisert gjennom den genetiske veiledningen (kaskadescreening). Opplysninger om helseforhold og slektskap er imidlertid beskyttet av personopplysningsloven, og oppsøkende genetisk virksomhet er per i dag ikke tillatt i Norge. //Helsevesenet kan derfor ikke ta direkte kontakt med pasientens slektninger.// Det er pasienten selv som må informere slektningene, og så må slektningene selv ta kontakt med helsevesenet (f.eks. fastlege) for mulig gentesting. //Det er derfor viktig å minne pasienten om dette.// Pasienter bør gis veiledning i hvordan de kan informere sine slektninger og hvordan slektningene kan ta kontakt med helsevesenet. NB! I henhold til bioteknologilovens paragraf 5-8, annet ledd, så er det i utgangspunktet forbudt å spørre om genetiske undersøkelser eller om systematisk kartlegging av arvelig sykdom i en familie har vært utført. //Helsepersonell som trenger opplysningene i diagnostisk og behandlingsmessig øyemed er unntatt fra dette forbudet.// Referanse: [[Lovdata|https://lovdata.no/dokument/NL/lov/2003-12-05-100?q=bioteknologiloven]]. I enkelttilfeller der pasienten av praktiske årsaker ikke selv kan opplyse slektninger, kan helsepersonell søke Helsedirektoratet om godkjenning til genetisk oppsøkende virksomhet. Referanse: [[Helsedirektoratet|https://helsedirektoratet.no/Documents/Lovfortolkninger/Bioteknologiloven/15-9890-2%20Svar%20p%C3%A5%20s%C3%B8knad%20om%20godkjennelse%20til%20%C3%A5%20drive%20opps%C3%B8kende%20genetisk%20virksomhet%20vedr.%20famili%C3%A6r%20hyperkolesterolemi.pdf]]. Pasientens barn er 6 og 9 år gamle. Barn og ungdom under 16 år //kan bare gentestes for sykdomsrisiko hvis undersøkelsen kan påvise forhold som kan forhindre eller redusere helseskade hos barnet dersom det får rett behandling. Barnets foresatte har i tilfeller hvor genetisk testing anbefales krav på å få genetisk veiledning.// Ved FH kan det være viktig å starte forebyggende behandling allerede i ung alder, og man bør derfor anbefale å genteste barna. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Anledning til oppsøkende genetisk virksomhet strengt lovregulert, og det er i utgangspunktet ikke anledning til å drive oppsøkende genetisk virksomhet (riktig svar gir 1 poeng). Det er derfor viktig å informere pasienten om mulige konsekvenser for familiemedlemmer, at pasienten selv bør informere sine familiemedlemmer, anbefale at disse blir informert om resultatet av gentesten, og anbefale at disse oppsøker helsevesenet for genetisk veiledning og evt. gentesting (riktig svar gir 1 poeng) Riktig svar i forhold til testing av barn (nedre grense 16 år), men at det i de tilfeller hvor det kan foreligge en alvorlig tilstand som det eksisterer effektiv behandling for (eller hvor behandlingen reduserer symptomutvikling og som gir betydelig helsegevinst) kan barn under 16 år gentestes. FH er en slik tilstand hvor det er viktig å få tidlig behandling for å motvirke seneffekter (riktig svar her gi 1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du får senere vite at mannens kone ''ikke ''har FH. De har to barn sammen (6 og 9 år). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er sannsynligheten for at __ingen__ av barna har arvet FHmutasjonen? Hva er sannsynligheten for at __minst ett__ av barna har arvet FH-mutasjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> FH er en autosomal dominant sykdom. Om far er heterozygot vil hvert av barna ha 50% risiko for å arve sykdomsallelet – og 50% sjanse for å arve det friske allelet. Sannsynligheten for at ingen av barna har arvet FH-mutasjonen (dvs. begge er friske) blir derfor 50% x 50% = 25%, (eller 0.5 x 0.5 = 0.25)¨. Sannsynligheten at minst et av barna har arvet FH-mutasjonen blir 1 minus sannsynligheten at begge barna er friske; dvs. 1 – 0.25 = 0.75 (=75%). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar på hver av de to deloppgavene gir 1 poeng – til sammen 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Marit er førstegangs gravid. Hun har hatt et normalt svangerskap frem til uke 30, da hun får spontane rier. Hun oppsøker nærmeste fødeavdeling der hun blir innlagt med truende prematur fødsel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort i hvilket stadium lungeutviklingen er ved 30 ukers svangerskap og hva som karakteriserer dette stadiet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lungeutviklingen er i den sakkulære fasen. Distale luftveier består av alveolære ducter som alveolene dannes fra. Surfaktantproduksjonen er i gang, men ikke moden (fra uke 23-24 til uker 34). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sakkulær fase gir 0.5 poeng. Beskrivelse av alveolære ducter gir 0.5 poeng. Det holder for å få poeng å beskrive differensiering av respiratoriske bronkioler med begynnende alveoledannelse uten at begrepet alveolære ducter brukes. Umoden surfaktantproduksjon gir 0.5 poeng (ikke nødvendig å angi ukene). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Marit føder en gutt som veier 1600g, og han har symptomer på respirasjonsbesvær rett etter fødselen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke kliniske symptomer og tegn brukes for å vurdere respirasjonsbesvær hos et nyfødt barn? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Respirasjonsfrekvens # Inndragninger # Grynting/pressing (ekspiratorisk presselyd) # Nesevingespill # Behov for ekstra oksygen/hypoksi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det kreves minst to av de fire første for å få poeng. 0.25 poeng per parameter unntatt for hypoksi som gir 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gutten har symptomer på respiratorisk distress syndrom (RDS) og han legges på CPAP («continuous positive airway pressure»). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Redegjør for den viktigste årsaken til RDS og hvordan den påvirker forholdet mellom trykk og volum i lungene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Årsaken til RDS er surfaktantmangel. Surfaktant produseres i type II pneumocytter fra ca 24 uker i svangerskapet. Mangel på surfaktant fører til redusert «compliance» («stive» lunger). Det fører til at trykkvolumkurven blir flat og det trengs høyere trykk for å oppnå adekvate lungevolum sammenlignet med lunger med høy compliance. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0.5 poeng for å nevne surfaktantmangel som årsak til RDS. * 0.5 poeng for at surfaktant produseres i type II pneumocytter. * 0.5 poeng for at surfaktantmangel gir redusert compliance eller stive lunger * 0.5 poeng for korrekt beskrivelse av effekten av redusert compliance på trykk-volumkurven </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gutten utvikler etter hvert en hyperbilirubinemi (gulsott) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den viktigste faktoren som gjør at premature har høyere forekomst av gulsott enn barn født til termin? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nedsatt enzymaktivitet i leveren som nedsetter konjugeringen til vannløselig bilirubin. Det godtas som riktig å bruke begrepet nedsatt konjugering, nedsatt glukuronidering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar gir 1 poeng. Ved bruk av begrepet nedsatt enzymaktivitet (uspesifisert hvilke enzymsystem), gis 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Premature barn har også risiko for lavt blodsukker etter fødsel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den viktigste årsaken til denne risikoen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Små glykogenlagre p.g.a. at disse akkumuleres i siste trimester. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det holder med små glykogenlagre/energilagre for å få poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Barn som fødes av mødre med diabetes har også risiko for hypoglykemi etter fødsel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Redegjør for den viktigste årsaken til dette. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Relativ hyperinsulinisme hos barnet p.g.a. eksponering for høye blodsukkere i svangerskapet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Poeng krever at det redegjøres for at det er en sammenheng mellom mors blodsukkere i svangerskapet som gjør at fosteret får høyt blodsukker og produserer mer insulin. 0,75 poeng Ved fødselen nedreguleres ikke insulinproduksjonen umiddelbart, mens sukkertilførselen via placenta forsvinner umiddelbart når navlesnora kuttes. 0,75 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kliniske symptomer på en persisterende åpenstående ductus arteriosus etter fødsel vil gi ulike tegn og symptomer avhengig av trykkforholdene på høyre og venstre side i hjertet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Redegjør for hvordan retningen på blodstrømmen over ductus blir når lungetrykket faller og trykket på venstre side av hjertet blir høyere enn på høyre side. Beskriv kort hvordan dette kan påvirke blodstrømmen til henholdsvis hjerne, lunger, tarm og nyrer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved høyere trykk på venstre side vil blodstrømmen over ductus gå fra aorta til a.pulmonalis. 1poeng Dette vil gi lavere blodstrøm til hjerne, tarm og nyrer, mens blodstrømmen blir større til lungene. 1 poeng. Det kreves at både hjerne, nyrer og tarm beskrives med lavere blodstrøm og at der er økt flow til lungene for å få 1 poeng på denne delen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Stine er 22 år og oppsøker deg som fastlege fordi hun mistenker at hun er gravid. Hun bruker p-piller og graviditeten er således ikke planlagt. Du tar en urinprøve som bekrefter graviditet. Stine innrømmer at hun nok ofte kan glemme en pille eller to, men trodde ikke det hadde så mye å si. Hun tenker at hun ønsker å gjennomføre svangerskapet. Hun hadde en vanlig bortfallsblødning på forrige p-pillebrett for ca. 6 uker siden, og du antar derfor at hun kan være ca. 6 uker gravid. Det er anbefalt å bruke folattilskudd i første trimester for å forebygge ryggmargsbrokk, og du anbefaler Stine å begynne med dette. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv den normale menstruasjonssyklus med vekt på de ulike fasene (navn, varighet, hvilke hormoner som er involvert og hva deres oppgave er). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <<imgLink "ICD-2018s-1-A.PNG">> Folikellfase, frem til eggløsning. Lutealfase; fra eggløsning til menstruasjonsblødningen starter. Hypofysens gonadotropiner (FSH, LH) stimulerer veksten av eggfolliklene, eggløsning og gule legemer i eggstokkene. I disse dannes østrogener (østradiol) og i det gule legemet progesteron, som stimulerer veksten til livmorslimhinnen etter menstruasjonen. Når mengden av progesteron i blodet øker, blir livmorslimhinnen ekstra tykk og rik på stoffer som kan ernære et befruktet egg etter at det har festet seg. Kommer det ikke noe befruktet egg, tilbakedannes det gule legemet, det fører til sterkt fall i ovariets hormonproduksjon, og livmorslimhinnen blir avstøtt sammen med menstruasjonsblodet. FSH og LH stiger rundt eggløsning. Østradiol stiger frem mot eggløsning og synker deretter. Progesteron stiger i lutealfasen og synker mot menstruasjonsblødningens start. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1/2 poeng for hver av fasene med varighet (varighet er nødvendig for å få poeng), ½ poeng for hvert hormon med funksjon. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil folattilskudd kunne forebygge ryggmargsbrokk hos Stine sitt embryo? Hvorfor/hvorfor ikke? Beskriv neurulasjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei, fordi neuralrøret allerede er lukket i svangerskapsuke 5. (1 poeng) Neurulasjonen er dannelsen av nevralrøret. Vi får først dannet neural plate (neuroektoderm) og det defineres en cranial og caudal retning. Deretter får vi dannet neural fold og neural groove. Neural folds fusjonerer og vi får dannet neuralrøret. Neural crest-celler oppstår og gir opphav til det perifere nervesystemet. (1 poeng) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar og begrunnelse på folattilskudd. ½ poeng for å ha med at neurulasjonen er dannelsen av nevralrøret. Et helt poeng for å ha med mer detaljer i hvordan det skjer (neural platen, neural fold og neural groove og neural-crest cellene som opphav til det perifere nervesystem). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gastrulasjonen er en annen vesentlig hendelse i den tidlige embryoutviklingen. Når foregår denne? Beskriv hva som skjer i gastrulasjonen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Gastrulasjonen finner sted i uke 3 av embryoutviklingen. Dette er dannelsen av de 3 kimlagene (germ layers) som videre gir opphav til forskjellige typer vev i kroppen.'' Ved start av gastrulasjonen er embryoet en bilaminar disk bestående av to cellelag. Primitive streak oppstår og vi får definert retning cranialt, caudalt, høyre og venstre. Primitive node og primitive groove oppstår. Prosessen med invaginasjon starter, hvor celler fra epiblast migrerer gjennom primitive streak og inn mellom cellelagene hvor disse cellene først erstatter hypoblast og blir til definitive endoderm. Epiblastcellene som er igjen er nå definert som ectoderm og celler som migrerer inn og blir liggende i midten kallen mesoderm. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for det vesentlige ''uthevet'', 1/2 poeng å ha med dannelsen av primitive streak og dannelsen av retning, ½ poeng for å ha med en beskrivelse av invaginasjonen opprinnelsen til de tre kimlagene; endo-, ecto- og mesoderm. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Stine forteller videre at hun var på fest forrige helg og drakk ”ganske mye” alkohol. Du kjenner Stines historie og vet at hun har testet forskjellige rusmidler, men hun forsikrer nå spontant om at hun ikke bruker noen form for rusmidler lenger. Du spør om barnefar. Hun sier at han er motivert for å slutte med rusmidler dersom han skal bli far. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor mye alkohol er det trygt å drikke i svangerskapet for å være sikker på at fosteret ikke tar skade av det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vi vet ikke, og det finnes ingen definert nedre grense for hva som er trygt av alkoholinntak (1 poeng). </$details><br/>
<div class="oppgave"> <div class="vignett"> !!Vignett Du føler deg usikker på om Stine fortsatt bruker rusmidler </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er din primære oppgave som fastlege dersom du er bekymret forat en gravid kvinne ruser seg? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fastlegens primære oppgave er å identifisere problemet og varsle videre til riktig instans (holder å skrive dette, for riktig instans kan variere fra kommune til kommune og man må bli kjent med rutinene i sin kommune) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar. Videre utdyping av svaret med for eksempel flere kontroller, mer detaljer om innholdet i kontrollene med tanke på omsorg for mor osv, vil ikke gi mer poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Stine har katt. Hvorfor kan nærkontakt med katter være farlig i svangerskapet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Katt kan være bærer av toxoplasmose. Dersom Stine ikke har gjennomgått toxoplasmose infeksjon tidligere kan det være farlig å bli smittet i svangerskapet. Toksoplasmoseinfeksjon i svangerskapet kan føre til store hjernemisdannelser eller øyeskader, alt etter når i svangerskapet smitten oppstår. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for toxoplasmose og førstegangssmitte og ½ poeng for mulige fosterskadelige effekter. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Abort og fosterdiagnostikk er temaer som vekker debatt både innenfor og utenfor helsetjenesten. Abort er regulert i Abortloven, og fosterdiagnostikk er regulert i Bioteknologiloven. I denne kortsvarsoppgaven ønsker vi dels å få deg til å reflektere rundt tilbudet av abort og fosterdiagnostikk i Norge som lovene gir rom for. Dels ønsker vi at du demonstrerer en forståelse av debattene rundt disse temaene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Abortloven gir kvinnen rett til selvbestemt abort innen utgangen av 12. uke. Hvorfor har vi som samfunn frem til nå ment at det er rimelig å gi kvinner selvbestemmelse i dette spørsmålet, men ikke menn? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Et sentralt forsvar for abortloven, er kvinners råderett over egen kropp. «Selvbestemmelse» handler sånn sett ikke bare om å kunne bestemme over sitt eget liv, men mer presist, å kunne bestemme over egen kropp. Siden fosteret er og må være plassert i kvinnens kropp, og ikke mannens kropp, så er kvinnens råderett over egen kropp relevant, mens mannens råderett over egen kropp er irrelevant. Skulle mannen gis selvbestemmelse i abortspørsmålet, ville hans selvbestemmelse fort kunne føre til begrensning av kvinnens rett til å bestemme over egen kropp, som vi ville anse som uakseptabelt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng gis til den som knytter selvbestemmelse til egen kropp og som dermed klarer å vise asymmetrien mellom gravid kvinne vs mann. Jo svakere man klarer å forklare asymmetrien mellom kvinne og mann i abortspørsmålet, desto mindre poeng. Om noen trekker inn refleksjoner rundt «juridisk abort», så er det bra og kan trekke opp, men fravær av dette skal ikke trekke ned, siden vi ikke rakk å diskutere dette med studentene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fosterdiagnostikk og abort ved fosteravvik som Downs syndrom diskuteres mye mer i dagens samfunn, enn abort i situasjoner hvor fosterdiagnostikk og fosteravvik ikke er involvert. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi noen forskjeller på de to abort-situasjonene som kan hevdes å være etisk relevant? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er to tydelige forskjeller på disse abort-situasjonene som en del har ment er etisk relevant: # De generelle abortene er typisk preget av at man ikke ønsket barn, mens aborter ved fosteravvik er typisk kjennetegnet av at man ønsket barn, men ikke dette barn med den bestemte skaden eller avviket. # De generelle abortene handler ikke om noen som allerede lever. Abortene basert på funn fra fosterdiagnostikken, må imidlertid ofte handle om mennesker som lever med tilsvarende avvik og diagnoser, siden det er nettopp hvordan disse livene er å leve som kan informere beslutningene. Så mens generell abort lett kan betraktes som en privat sak, så vil selektiv abort ha en større signaleffekt ut i samfunnet, og dermed også bli en politisk sak. Det er også mulig å peke på en rekke andre forskjeller som riktignok ikke er like markante: De generelle abortene vil som regel handle om selvbestemte aborter tidlig i svangerskapet, mens selektive aborter vil måtte være senaborter. Sen vil for mange være mer problematisk enn tidlig. Man kan også snu fokuset helt rundt, og hevde at abortene rundt alvorlige fosteravvik som regel handler om ekstremt store belastninger på et familieliv, mens dette sjeldnere er tilfelle for situasjonene rundt generell abort i dagens samfunn. I så fall taler dette for at abortene ved fosteravvik burde problematiseres mindre. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her er det rom for at ulike svar kan gi poeng, men hovedfokuset i undervisningen har ligget på de to første grunnene nevnt ovenfor. Finnes begge disse i teksten, så gis det to poeng. Finnes de ikke, så kan det fremdeles gis poeng, dersom det finnes andre gode og rimelige argumenter, som forskjellen mellom sene og tidlige aborter, mm. Men har man ikke med de to nevnte, så har man gått glipp av den vesentligste kritikken, og da skal det litt til for å få full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Alle gravide i Norge tilbys en ultralydundersøkelse rundt uke 18 i svangerskapet – ofte kalt «rutineultralyd». Undersøkelsen er ukontroversiell og anses som en naturlig del av svangerskapsomsorgen. Samtidig er ultralydundersøkelsen i første trimester – ofte kalt «tidlig ultralyd» eller «KUB» (kombinert ultralydundersøkelse og blodprøve), politisk kontroversiell, og tilbys bare et fåtall gravide. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor disse undersøkelsene oppfattes så ulikt? Er det rimelig etter din mening å behandle de to såpass ulikt? (Begrunn svaret ditt) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Rutineultralyd oppfattes i politisk og juridisk sammenheng som del av en god og trygg svangerskapsomsorg hvor hensynet til kvinnen og barnet står i fokus. Tidlig ultralyd anses som en undersøkelse som mye er motivert utfra å gi en risikovurdering for trisomier og i særdeleshet trisomi 21. Siden Downs syndrom, «sorteringssamfunn», o.l., har blitt et politisk minefelt, så vil undersøkelser i svangerskapet som tydelig har til hensikt å identifisere slike fostre bli etisk problematiske, mens de som har fokus på omsorg for mor og barn blir uproblematiske. Politisk har dette skillet blitt betegnet som skillet mellom fostermedisin og fosterdiagnostikk. Det er neppe rimelig å behandle de to undersøkelsene så fryktelig ulikt. Rutineultralyden undersøker fosterets anatomi i detalj og kan absolutt sies å være fosterdiagnostikk. Hos en rekke gravide vil man gjøre funn på rutineultralyden som vil lede til en abortavgjørelse. «Tidlig ultralyd»/«KUB» er dårligere til å oppdage en del strukturelle avvik, men er bedre på å oppdage Downs syndrom. Hvorvidt man så mener at denne forskjellen med tanke på Downs syndrom er så avgjørende at forskjellsbehandling er rettferdiggjort, blir til en viss grad en subjektiv vurdering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her er det to spørsmål, med da mulighet for 1 poeng på hver. Ett poeng på den første gis når man har fått med seg at tidlig ultralyd/KUB bl.a. er et verktøy for risikovurdering for trisomier. Det er vanskelig å se for seg poeng for svar som ikke er inne på dette. I del 2 er det større rom for subjektive meninger, men de må være velbegrunnet. Man behøver ikke å ha enten-eller-svar. Studenten må ha skjønt at flere fostre med Downs vil bli oppdaget om alle ble tilbudt tidlig diagnostikk. Men de bør også ha fått med seg at rutineultralyden aktivt leter etter avvik. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Eldre gravide – kvinner over 38 år – har i dag rett til fosterdiagnostikk slik det defineres i Bioteknologiloven, mens yngre gravide ikke har det. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor har man ment at alder er en relevant faktor for hvem som skal få tilbudet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Her er svaret enkelt og greit at gravides risiko for å få et barn med kromosomfeil er aldersbetinget. Alder har historisk sett vært relevant fordi man da kunne tilby testing til de med høyest bakgrunnsrisiko, noe som virker rimelig. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng gis til de som har fått med seg at risiko for kromosomfeil er aldersavhengig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kritikere av fosterdiagnostikken hevder ofte at fosterdiagnostikk uttrykker en medisinsk forståelse av funksjonshemming og ikke tar høyde for at funksjonshemming bør forstås gjennom en sosial modell. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva mener de med det? Hva tenker du om det? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> I all teoretisering rundt funksjonshemming er man opptatt av å skille mellom en medisinsk modell og en sosial modell. I den sosiale modellen, ligger ikke funksjonshemmingen primært i den enkeltes kropp. Snarere er det samfunnet, med sine funksjonshemmende barrierer, som forhindrer et individ i å realisere sitt potensial. Ved å forsøke å vri funksjonshemming vekk fra kroppen og medisinen, og over mot samfunnets utforming og tilbud, har funksjonshemmingsorganisasjonene lykkes i å gjøre funksjonshemming til et politisk spørsmål. I fosterdiagnostikken kritiserer ofte funksjonshemmede medisinen for å ha for stort fokus på «avviket» og den individuelle kroppen, og at de dermed undergraver innsikten om at det avgjørende for god livskvalitet er samfunnets utforming. Dette er utfordrende debatter for vår tid (jfr «kan et menneske med Downs leve et fullverdig liv»). Den sosiale modellen har viktige innsikter. Samtidig har den også blitt kritisert fra funksjonshemmede selv som mener den overser hindringer og begrensinger som ligger i den individuelle personens funksjonsnedsettelser og aldri kan oppheves av noe som helst samfunn vi kan forestille oss. Dessuten er det mulig å hevde at medisinen nettopp i mange tilfeller (som eksempelvis i veiledningen i fosterdiagnostikken) tar høyde for samspillet mellom en individuell kropp og det samfunnet man eventuelt skal fungere i. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ett poeng får studenten for å kunne si noe fornuftig om forskjellen på den medisinske modellen og den sosiale modellen i funksjonshemmingssammenheng. Ett til får hun for å kunne gjøre noen rimelig fornuftige avveininger om realismen i kritikken. Studenter som ikke har hørt om den sosiale modellen, blir poengløse her. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I Norge har vi satt det som kalles «levedyktighetsgrensen» til utgangen av 22. uke (21+6). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du redegjøre kort for hva som juridisk følger av denne grensen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Levedyktighetsgrensen er den juridiske grensen for når et foster kan aborteres i Norge. Det eneste unntak fra dette er en situasjon hvor fosteret har et dødelig avvik. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Siden dette er en 1-poengs oppgave, så bør man få full pott dersom man klarer å si at levedyktighetsgrensen bestemmer siste frist for når (nemndbestemt) abort kan gjøres i Norge – med andre ord at abort ikke kan gjøres på fostre som anses å kunne overleve utenfor livmor. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kari, 45 år, har hatt lavt stoffskifte i flere år og har vært behandlet med tyroksin. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort syntesen av tyreoideahormoner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tyreoglobulin (TG) er et protein som blir jodinert på tyrosiner i follikkelcellene og lagres i kolloid (1 poeng). Tyroksin og trijodtyronin dannes ved proteolyse av dette (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar samspillet mellom TSH og tyroksin og trijodtyronin. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> TSH produseres i hypofysens forlapp og er den overordnede regulatoren av blodnivået av T3 og T4 ved en klassisk negativ feedback-mekanisme (0,5 poeng). TSH stimulerer produksjonen og sekresjonen av T3 og T4 (0,5 poeng). Lavt nivå av T3 og T4 øker produksjonen av TSH, slik at produksjonen og sekresjonen av T3 og T4 igjen øker (0,5 poeng). Høye nivåer av T3 og T4 reduserer produksjonen av TSH ved negativ feedback (0,5 poeng). Det er i hovedsak T3 som står for den negative feedbacken (0,25 poeng). T3 hemmer i tillegg frigjøring av TRH (thyrotropin releasing hormone) fra hypothalamus (0,25 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hun oppsøker fastlegekontoret fordi hun over en tid har følt seg slapp, har hatt dårlig matlyst og gått litt ned i vekt de siste 2-3 månedene. Hun synes også at hun er brunere enn hun pleier å være. Det blir tatt blodprøver som viser lav kortisol og høy ACTH. Videre har hun høyt kalium og lavt natrium, samt noe lavt blodsukker forenlig med primær binyrebarksvikt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hormoner produseres i binyrebarken? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kortisol, aldosteron, androgener </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha med kortisol og aldosteron for å få 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for den økte pigmenteringen hos denne pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved kortisolmangel får man økt produksjon av proopiomelanocortin (POMC) som er forstadiet til ACTH (0,5 poeng). Det blir også økte nivåer av melanocytt-stimulerende hormon (MSH) som spaltes av fra POMC, og dette er årsaken til økt pigmentering (0,5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for elektrolyttforstyrrelsene hos denne pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Aldosteronmangel. Aldosteron bidrar til at reabsorpsjon av natrium øker samtidig som kalium skilles ut. Mangel vil derfor medføre lavt natrium og høyt kalium. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Aldosteronmangel (1 poeng), beskrivelse av mekanismen (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Binyrebarksvikt kan medføre lavt blodsukker </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke fire av kroppens hormoner er viktige for å motvirke hypoglykemi? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kortisol, glukagon, adrenalin, veksthormon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng hvis 3 riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken substans er utgangspunktet for syntese av binyrebarkhormonene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kolesterol </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne i 50-årene tok kontakt med sin fastlege på grunn av hodepine og økende tretthet de siste ukene. Det ble rekvirert MR-undersøkelse som viste en intrakraniell tumor. Hun ble innlagt på nevrokirurgisk avdeling for operasjon. Under operasjonen ble det tatt biopsier fra tumorvevet som ble sendt til patologiavdelingen for frysesnittsundersøkelse. Frysesnittsdiagnosen fra patologen var «benign mesenkymal tumor». </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi fem eksempler på benigne mesenkymale tumores. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Eks. på benigne mesenkymale tumores (bløtdelssvulster): fibrom, lipom, angiom, lymfangiom, hemangiom, kondrom, osteom, meningeom, leiomyom, rhabdomyom. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for hvert delsvar, maks. 2,5 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Under operasjonen tilkom det komplikasjoner i form av et hjerneinfarkt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er definisjonen på et infarkt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Infarkt er iskemisk nekrose i et avgrenset område/lokalt på grunn av nedsatt/utilstrekkelig blodforsyning, for eksempel som følge av karokklusjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p gis ved angivelse av iskemisk nekrose, 0,5 p om de angir avgrenset område og nedsatt/utilstrekkelig blodforsyning. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bildediagnostisk viste det seg å være noe resttumor igjen, og det var indikasjon for postoperativ strålebehandling. Denne behandlingen tolererte pasienten godt, men en del år senere utviklet hun økende kognitiv svikt. Strålebehandling er kjent å kunne gi forsinket stråleskade av hjernen, blant annet i form av strålenekrose. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Rent morfologisk fins det ulike former for nekroser. Beskriv tre ulike typer nekroser og kort om deres patologiske særtrekk. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det fins flere typer nekroser: # ''Koagulativ nekrose'' er en form for nekrose der vevsarkitekturen er rimelig godt bevart i noen tid etter hendelsen, og man aner konturene av cellene i det nekrotiske området. Dette er den vanligste formen for nekrose og forekommer i alle solide organer unntatt hjerne. # ''Likvifaktiv nekrose'' (eng. liquefactive/colliquative necrosis) skjer ved infeksjoner som tiltrekker leukocytter som ved fagocytose «fordøyer» det døde vevet. Ved en bakteriell infeksjon vil det døde vevet ende opp som puss. I hjernen gir hypoksi-/anoksiskade en slik type nekrose. # ''Kaseøs nekrose'' (ostet nekrose) er typisk ved tuberkulose. Vevet har en gulig-hviltlig osteaktig konsistens. Mikroskopisk ses nekrotisk vev, amorft, rødlig til rosa, all vevsstruktur er utvisket, perifert brem av makrofager (histiocytære celler), deriblant flerkjernede kjempeceller (langerhanske kjempeceller), videre er det tilblanding av lymfocytter, mer perifert også en bindevevsreaksjon med proliferasjon av fibroblaster. Dette gir samlet sett en såkalt kronisk nekrotiserende granulomatøs betennelse. # ''Gangren (gangrenøs nekrose)'' er en nekroseform som mest har en klinisk anvendelse og refererer gjerne til en ekstremitet som har undergått en iskemisk nekrose (koagulativ nekrose) som derpå er blitt misfarget pga. degradert blod. Som en komplikasjon kan dette vevet bli infisert som fører til en likvifaktiv nekrose, og man får da et såkalt «vått gangren». # ''Fettvevsnekrose'' skyldes fokalt ødelagt fettvev som følge av enten direkte traume (traumatisk fettvevsnekrose) eller enzymatisk destruksjon pga. frigjorte lipaser som ved akutt pankreatitt. # ''Fibrinoid nekrose'' omfatter en type nekrose som kan sees ved uttalt hypertensjon (malign hypertensjon) med skade/nekrose av karvegg og med lekkasje av plasmaproteiner og deponering av fibrin som gir et lyst rosa/rødaktig og glassaktig utseende som kan minne om nekrotisk vev, derav navnet «nekrose». Tilstanden kan også sees ved immunologiske reaksjoner og liknende sykdommer med deponering av antigen/antistoffkomplekser i karveggen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Navn på nekrosetype gir 0,5 p, supplerende relevant patologi gir til sammen 1 p for hver type, maks. 3 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Noen år senere i forbindelse med en influensaepidemi pådro hun seg en lungebetennelse (pneumoni). Hun ble behandlet med antibiotika med god effekt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) En akutt infeksjon kan forløpe på ulikt vis. Nevn fire eksempler på forløpet av en akutt infeksjon. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En akutt infeksjon kan ha følgende forløp: # Resolusjon (tilheling) # Abscessutvikling (suppurasjon, puss) # Reparasjon og fibrose # Vedvarende kronisk infeksjon (som evt. senere vil gå over i fibrose) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0,5 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ulike infeksiøse agens kan gi ulike typer betennelse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags type inflammasjon gir vanligvis 1) bakterier, 2) virus og 3) atypiske mykobakterier? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Bakterier: akutt (purulent/suppurativ) betennelse # Virus: kronisk (uspesifikk)/serøs betennelse # Atypiske mykobakterier: kronisk nekrotiserende granulomatøs betennelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0,5 p, totalt 1,5 p. For delsvar 3) godtas også bare granulomatøs betennelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne (32 år) er gravid for andre gang. Hun leser om svangerskap på nettet, og finner at NK-celler (naturlige dreperceller) bidrar til at fosteret ikke forkastes under svangerskapet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv forskjellene i funksjon mellom uterine NK-celler og NK-celler som deltar i infeksjonsforsvaret hvis kvinnen for eksempel blir forkjølet. Stikkord om mekanismer forventes i svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Uterine NK-celler:'' Har som oppgave å bidra til toleranse for fosteret (dette er gitt i vignetten). Mekanismer: De er __dårlige til å drepe__ fordi de hemmes av HLA-E og HLA-C, som uttrykkes på trofoblasten. De er viktige __cytokinprodusenter__: __hemmer antigen-presenterende celler__ så disse induserer T-celletoleranse, utskiller IFN-gamma som oppregulerer IDO i antigenpresenterende celler så disse dreper cytotoksiske T-celler. De bidrar også til å regulere placentas dybde, bl.a. ved utskillelse av proangiogene faktorer. ''NK-celler i infeksjonsforsvaret:'' Har som oppgave å bekjempe virusinfeksjon: __dreper virusinfiserte celler__ tidlig i infeksjonsforløpet ved å gjenkjenne __«manglende selv»__ = nedregulert HLA klasse I og «stresset selv» = molekyler som MIC-A og MIC-B m.fl. som celler bl.a. uttrykker når de er infiserte. NK-cellene er viktige __cytokinprodusenter__, bl.a. av IFN-gamma, som __aktiverer antigenpresenterende celler__ og drar immunresponsen i retning av Th1-responser. Sent i infeksjonsforløpet kan de også drepe infiserte celler ved __antistoffmediert direkte cytotoksisitet__. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver av celletypene, hvor man har med egenskaper med stikkord om mekanismer når det gjelder drapsevne, cytokinproduksjon og effekter av denne, og henholdsvis proangiogene faktorer/antistoffmediert cytotoksisitet, Reduksjon til ½ p eller 0 p for hver celletype avhengig av hvor mye som mangler i svaret. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Svangerskapet forløp normalt, og kvinnen fødte en frisk gutt til termin. Gutten er blitt 5 måneder gammel, og storesøsteren hans blir smittet av streptokokker i barnehagen. Kvinnen er bekymret for om lillegutten kan bli alvorlig syk. Hun blir litt beroliget da hun leser at småbarn har naturlig antistoff. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hva som karakteriserer disse antistoffene, hvordan de oppstår, og i hvilke situasjoner de dannes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Naturlige antistoffer karakteriseres ved særlig å være __~IgM eller ~IgA__ (på slimhinner). De er __polyreaktive__ = binder til flere ulike epitoper som ligner på hverandre; kan også kalles kryssreaktivitet. De har ofte __lav affinitet__. Naturlig antistoff er rettet mot __selv__ (kan være viktig for selvtoleranse), __endret og stresset selv__ (beskytter mot oksydativ skade, bidrar ved fjernelse av apoptotiske celler) og mot konserverte epitoper på __vanlige virus, bakterier og sopp__ (inngår som naturlig frontlinjeforsvar), og samme antistoff kan fungere i flere av disse settingene (= polyreaktivitet). __Produseres uten antigenstimulering__ (dvs. uten at vi først må møte antigenet ved en infeksjon) av en spesiell type B-lymfocytter (__B1-celler__) som særlig finnes i peritoneum og pleura, noen i milt og lymfeknuter. Disse cellene er pre-programmert til å lage antistoff. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for hver del: ~IgM/~IgA av lav affinitet; polyreaktivitet; hva de er rettet mot; produseres uten antigenstimulering av B1-celler. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gutten får vaksinasjoner i samsvar med barnevaksinasjonsprogrammet. Ved 3- og 5-måneders alder får han blant annet vaksiner mot stivkrampe (tetanus), difteri og kikhoste (pertussis). Dette er drepte vaksiner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor disse tre vaksinene blir gjentatt flere ganger, herunder mekanismene for at gjentatt vaksinering øker effekten </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Generelt: Førstegangs vaksinering gir en __primærrespons__, mens gjentatt eksponering for antigenene fører til en __sekundærrespons__ med mer effektivt forsvar og sterkere / mer langvarig hukommelse. Drepte vaksiner gir __svake faresignaler__ = lite inflammasjon og derfor en svak immunrespons. Dette fører til liten dannelse av hukommelsesceller og __kortvarig hukommelse__. Mer spesifikt: Formålet med disse vaksinene er å danne __antistoff som kan nøytralisere__ toksin ved infeksjon. Ved primærresponsen dannes __~IgM, som har lav affinitet__. Nøytralisering __krever antistoff med svært høy affinitet__ slik at det kan utkonkurrere binding til de cellulære målmolekylene som utløser symptomer ved sykdom. Som ledd i sekundærresponsen skjer det __isotypeskifte til IgG__ og __somatisk hypermutasjon__ (= affinitetsmodning av antistoffet), dvs. to viktige mekanismer for fintilpasning og bedre beskyttelse av antistoff. I tillegg __øker plasmakonsentrasjonen__ av antistoff med aktuelle spesifisiteter som ledd i sekundærresponsen, slik at mer toksin raskt kan nøytraliseres. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Generell beskrivelse av egenskaper ved primær- og sekundærrespons, svake faresignaler: ½ poeng. Angitt at beskyttelsen er via antistoff /nøytralisering av toksin: ½ poeng Nevnt antistoff av ~IgM og ~IgG type og at det skjer isotypeskifte: ½ poeng, Forklart hvilke egenskaper ved ~IgM og ~IgG som er viktige, nevnt somatisk hypermutasjon: ½ poeng. Nevnt økt konsentrasjon av antistoff: ½ poeng Svar som fokuserer på T-celler og mangler B-celler/antistoff får evt. poeng for generell forståelse av primær- og sekundærrespons, men er ikke tilpasset korrekt mekanisme for vaksineeffektene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er det som oftest ikke nødvendig med gjentatt vaksinering med levende vaksiner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Levende vaksiner inneholder svekkede mikroorganismer som har stor nok likhet med de sykdomsfremkallende mikroorganismene til at vaksinen gir beskyttelse. Ved levende vaksiner utløses det __kraftige faresignaler fordi man får en infeksjon__, selv om infeksjonen ikke har like alvorlige konsekvenser eller risiko for alvorlige bivirkninger. Det utløses en __sterk immunrespons__ som varer inntil infeksjonen er bekjempet. Derfor gir levende vaksiner sterk immunitet som oftest varer livet ut. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Forklaring som omfatter infeksjon/faresignaler og kraftig immunrespons. Studentene kan resonnere seg frem til uten å ha hatt detaljert undervisning om ulike typer vaksiner. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Da gutten var 1 1/2 år gammel, fikk han utslett i lyskene under bleien. Det ble påvist oppvekst av //Candida albicans//. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi de mikrobiologiske kjennetegnene ved denne mikroorganismen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> //Candida albicans// er en gjærsopp, og består av eukaryote celler som reproduseres ved knoppskyting. Kan også danne pseudohyfer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1/4p for hver av opplysningene gjærsopp, eukaryote celler, knoppskyting, pseudohyfer. Svar om type infeksjoner (hud/slimhinner, systemiske infeksjoner hos immunsvekkede etc.) teller ikke fordi spørsmålet er om mikroorganismen, ikke infeksjonene den gir. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan komplementsystemet inngår i forsvaret mot en //Candida//-infeksjon, herunder aktiveringsmåte og effektormekanismer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Aktiveringsmåte:'' Komplement aktiveres av //Candida// via alternativ pathway (fremmed overflate som binder C3b, bl.a. til chitin => chitin ikke nødvendig for poeng) og via lektin pathway (mannose på overflaten gjenkjennes av mannose-bindende lektin = MBL). ''Effektormekanismer:'' Komplementaktivering fører til at det deponeres komplementaktiveringsprodukter på soppens overflate, bl.a. C3b, iC3b og C4b, som fungerer som opsoniner for fagocytose, bl.a. av nøytrofile granulocytter (evt. makrofager ved kronisk infeksjon). Dette skjer ved at komplementfragmentene bindes til komplementreseptorer på fagocyttene (C3b og C4b: bindes til CR1, iC3b: bindes til CR3 og CR4 – reseptorene ikke nødvendig i svaret). Binding kombinert med andre aktiveringssignaler (faresignaler) gir aktivering av fagocytten og effektiv fagocytose og drap. Komplementaktivering fører til dannelse av anafylatoksinene C3a og C5a, som gir økt inflammasjon med kjemotakse av nøytrofile, og bidrar til nøytrofilaktivering. //Candida// har tykk cellevegg, så terminal komplementaktivering med dannelse av det terminale komplementkompleks (TCC, MAC) vil ikke gi lyse av soppen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Aktiveringsmåte med to korrekte pathways: ½ p. Forventer ikke at de beskriver detaljene i de to aktuelle pathways. Mekanismen for opsonisering: ½ p Økt inflammasjon/kjemotakse: ½ p Vet at komplement ikke klarer å lysere //Candida// pga. tykk cellevegg: ½ p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 50 år gammel mann kommer på legevakten på grunn av hjertebank. Ved start av undersøkelsen har han regelmessig puls på 120. Du finner ellers ikke noe galt ved en enkel klinisk undersøkelse. Når du er ferdig med undersøkelsen har han rolig puls og er sliten. Du mistenker at han har en angstlidelse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre symptomer kan du spørre om for å finne ut om han har en angstlidelse? Nevn minst fire symptomer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Følelse av frykt, frykt for å dø, frykt for å bli gal, uro, svette, skjelving, rødming, svimmelhet, uvirkelighetsfølelse, tørr munn, brystsmerter, kvelningsfornemmelse/ snører seg i halsen, ”urolig mage”/ trang til å gå på do, kvalme. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for hvert av disse symptomene inntil maks 2 poeng (ikke poeng for hjertebank som er nevnt i oppgaveteksten). Frykt teller bare en gang. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre symptomer kan du spørre om for å finne ut om han har en angstlidelse? Nevn minst fire symptomer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Somatisk undersøkelse Blodprøver inkl stoffskifte Systematisk psykiatrisk vurdering mot diagnosekriterier Anamnese, forløp, tidligere plager </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> (man får poeng for å nevne minst et av svarene som skilles med skråstrek) Somatisk undersøkelse/evt henvisning kardiolog/EKG: 1 poeng Blodprøve/måle stoffskifte: 1/2 poeng (Systematisk) psykiatrisk vurdering (med kriterier for angstlidelse/spørreskjema): ½ poeng Anamnese/forløp/ tidligere psykiske plager: ½ poeng Får maks skåre 2 poeng, men må nevne somatisk undersøkelse/kardiolog/ EKG for å få 2 poeng, kan ellers få maks 1 ½ poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Han forteller at hans mor og morfar var engstelige for alt og at han hadde det svært vanskelig da hans foreldre ble skilt da han var 10 år. Han har fått økende angst og fastlegen diagnostiserte en angstlidelse etter at han ble permittert for 3 måneder siden. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn en modell for psykiatrisk forståelse som kan brukes for å forklare at han har fått en angstlidelse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bio-psyko-sosial modell </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ hvis to av elementene er med 1 poeng hvis alle tre elementene er med ½ poeng for å svare stress-sårbarhetsmodellen i stedet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved utredning hos fastlegen forteller han at han var med i en trafikkulykke for 15 år siden. Han hadde mareritt om ulykken, unngikk å sitte på i bil og var svært skvetten. Dette gikk over etter noen år da han gradvis begynte å sitte på bil igjen selv om han fortsatt var redd. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken psykisk lidelse kan forklare disse symptomene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Post traumatisk stresslidelse (PTSD) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Post traumatisk stresslidelse/ PTSD: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved samtaler med fastlegen forteller pasienten at han har mindre psykiske plager fordi han unngår steder og situasjoner som gjør at han får angst. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du nevne minst to negative konsekvenser med en slik atferd? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Begrenser livsutfoldelse/reduserer mulighet for aktivitet Hindrer bedring av angstlidelsen/opprettholder angstlidelsen Kan gi generalisering av angsten/kan få angst for å få angst </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Begrenser livsutfoldelse/ muligheter i livet/livskvalitet: ½ poeng Hindrer bedring/ opprettholder angstlidelse: ½ poeng Kan gi generalisering av angsten, får angst for å få angst: ½ poeng Maks skåre ved å nevne to, siste moment er vanskelig </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Sist sommer ble pasienten sittende inne det meste av tiden fordi han var redd for at han kunne komme i nærheten av en edderkopp. Når han så en edderkopp på terrassen fikk han hjertebank og så for seg at edderkoppen kunne hoppe på ham. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles en slik lidelse og hva er hovedprinsippet for behandling av lidelsen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fobi, edderkoppfobi </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Fobi (for edderkopp, for insekter)/spesifikk fobi/isolert fobi/enkel fobi/fobisk angstlidelse: 1 poeng Eksponeringsbehandling/eksponering: 1 poeng Får ikke poeng for å si angstlidelse uten nærmere spesifisering Får ikke poeng for å nevne noen medikamenter </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved nærmere samtale kommer det frem at han har vært sliten og nedfor, har sovet dårlig med tidlig oppvåkning og har hatt svært dårlig matlyst den siste måneden samtidig som han har fått angst. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Basert på opplysningene i denne vignetten, hvilken annen psykisk lidelse kan foreligge sammen med angst for denne pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Depresjon. Angstsymptomene skyldes en pågående depresjon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Depresjon/Angst pga depresjon/angst som del av en depresjon: 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På formiddagslista på legekontoret er det en baker, en maler, en frisør, en fabrikkarbeider på en skumplastfabrikk, en bonde, en bensintankbilsjåfør, en førskolelærer, en ortopedisk sykepleier, en tunnelarbeider, og en tidligere maskinist (sjøfart). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I hvilke av disse yrkene er det mest sannsynlig å finne følgende eksponeringer? (en eksponering for hvert yrke) Ammoniakk, isocyanater, organiske løsningsmidler, alfaamylase, smitte, UV-stråling, asbest, kvartsstøv, ioniserende stråling, benzen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Baker / alfa-amylase * Frisør / ammoniakk * Skumplastfabrikkarbeider / isocyanater * Tankbilsjåfør / benzen * Førskolelærer / smitte * Ortopedisk sykepleier / ioniserende stråling * Tunnelarbeider / kvartsstøv * Tidligere maskinist / asbest * Bonde / UV-stråling * Maler / organiske løsningsmidler </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,2 poeng for hver riktig kobling – maks 2 poeng. Andre mulige koblinger er: * Smitte / bonde eller sykepleier * UV stråling / sykepleier * Ammoniakk / tankbilsjåfør Slike bør også gi 0,2 poeng, samtidig som studenten da får problemer med å få alt rett (2 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vi som jobber i helsevesenet har en god del arbeidsmiljøutfordringer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to andre påvirkninger enn det du svarte i spørsmål 1 som man utsettes for i helsevesenet og som er kjent for å være kreftfremkallende. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Noen av følgende: * Cytostatika / cellegift * Formaldehyd * Radionukleider (Ioniserende stråling (hvis det ikke ble svart for sykepleieren i spørsmål 1) og nattarbeid) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det som er angitt i parentes over bør også gi poeng. Nattarbeid gir poeng fordi det for tiden diskuteres om utstrakt nattarbeid gir økt risiko for bl.a. brystkreft. Radionukleider brukes i nukleærmedisinsk diagnostikk og behandling og bør gi poeng selv om det også der strengt tatt dreier seg om ioniserende stråling. I tidligere tider ble det i helsevesenet også brukt benzensprit, men ikke nå lenger og det gir ikke poeng, ei heller passiv røyking som til nød kan være aktuelt noen steder, men det er ikke lenger noen typisk eksponering. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasientene på legekontoret denne formiddagen hadde henholdsvis astma, hypersensitivitetspneumonitt (allergisk alveolitt), anemi, lungekreft, irritativ rhinitt, blodkreft, forkjølelse, silikose, katarakt og hodepine. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke av eksponeringene ovenfor kan settes i sammenheng med de respektive sykdommene? (Ammoniakk, isocyanater, organiske løsningsmidler, alfaamylase, smitte, UV-stråling, asbest, kvartsstøv, ioniserende stråling, benzen) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Alfa-amylase / astma * Ammoniakk / irritativ rhinitt * Isocyanater / hypersensitivitetspneumonitt (allergisk alveolitt), evt astma * Benzen / blodkreft (anemi) * Smitte / forkjølelse * Ioniserende stråling / anemi (blodkreft) * Kvartsstøv / silikose * Asbest / lungekreft * UV-stråling / katarakt * Organiske løsningsmidler / hodepine </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,2 poeng for hver riktig kobling – maks 2 poeng. Andre mulige koblinger er: * Isocyanater / astma * Benzen / anemi * Ioniserende stråling / blodkreft Dette bør også isolert sett gi poeng, men hvis de kobler isocyanater med astma så får de problemer med å koble hypersensitivitetspneumonitten til en eksponering. Benzen har vært nevnt som mulig årsak til lungekreft, men det er ikke etablert. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Isocyanater er kjent for å kunne forårsake to av sykdommene som er nevnt i spørsmål 3. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den andre sykdommen i forhold til det du svarte? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Astma eller hypersensitivitetspneumonitt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> En av de to (alt ettersom hvilken diagnose studenten tilordnet isocyanater i sitt svar på spørsmål 2) gir 1 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bakeren lurer på hva som kan gjøres for å redusere eksponeringen på sin arbeidsplass. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket forebyggingsprinsipp er mest aktuelt i et bakeri? Hvordan kan dette forebyggingsprinsippet best oppnås, og hvilken instans bør allmennlegen primært samarbeide med? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Forebyggingsprinsipp: Støvreduksjon (eksponeringsreduksjon). Reduksjon av eksponering (støvreduksjon) er det overordnete prinsippet her. Det oppnås gjennom innebygging av prosesser, kanskje særlig når mel tappes fra silo og ned i bakekar og annen håndtering av råvarer som tømming av sekker. Også at man er påpasselig med håndtering og lagring av tomme sekker. Særlig må man være forsiktig med håndtering av såkalte bakeforsterkere som ofte inneholder alfa-amylase som er et potent allergen ved siden av selve melet. Og så er det viktig med gode renholdsrutiner. Tidligere brukte man ofte trykkluft til å blåse bort mel og annet støv fra bakebenker. Dette ga rimeligvis mye støveksponering. Dersom man bruker støvsuger til rengjøring bør det helst være en sentralstøvsuger, eller en med et godt filter (totalfilter) som ikke redistribuerer det fineste støvet til arbeidslokalene. Instans: Både arbeidstilsynet, bedriftshelsetjenesten, arbeidsmedisinsk avdeling, NAV og arbeidsgiver er aktuelle samarbeidspartnere. Men, det er bedriftshelsetjenesten som er den primære. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Støvreduksjon som forebyggingsprinsipp gir 0,5 p. Innebygging av mel, det å droppe bakeforsterkere (f.eks. alfaamylase), endrede rengjøringsrutiner eller håndtering av emballasje kan alle gi 0,5 p hver (men maks 1 poeng). Forslag om redusert arbeidstid eller personlig verneutstyr (åndedrettsvern) gir ikke poeng. Bedriftshelsetjeneste som primær instans å samarbeide med gir 0,5 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det å være bonde er på mange måter et utsatt yrke </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) For hvilken uønsket hendelse topper bøndene den offisielle statistikken i Norge (sett i forhold til antall sysselsatte)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Arbeidsrelaterte dødsfall. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her kan selvfølgelig også dødsulykker og lignende godkjennes </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne på 25 år kommer til svangerskapspoliklinikken i svangerskapsuke 37. Hun er henvist fra fastlegen pga. usikkert fosterleie, og ved ultralyd påvises seteleie. Fødselslegen bestiller CT pelvimetri for å avgjøre om de anatomiske forhold i bekkenet ligger til rette for at kvinnen kan føde vaginalt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved CT pelvimetri vil røntgenlege bl.a. måle «sum utgang». Hvilke mål må gjøres for å beregne «sum utgang»? Angi navnet på beinstrukturene som må identifiseres for å gjøre denne beregningen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Målene som må gjøres: # Interspinalavstand # Intertubaravstand # Sagital utgang: Mellom nedre del av os sacrum og nedre del av symfysen. Navn på beinstrukturer: # Spinae ischiadica # Tuber ischiadicum # Nedre del av os sacrum # Nedre del av symfysen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Målene: 0,5 p. for hvert mål som gjøres, maksimalt 1,5 p. Navn på beinstrukturer: 0,25 p for hvert svar, maksimalt 1 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke muskler danner den nedre begrensningen av bekkenet, og kalles samlet bekkenets diafragma (pelvic diaphragm)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Mm. Levator ani * Mm. Coccygeus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for hvert svar, maksimalt 1 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er de viktigste funksjonene til bekkenets diafragma? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Bekkenets diafragma støtter viscera i abdomen og bekken. * Hever bekkenbunnen, noe som er viktig ved forsert utpust, hosting, oppkast, vannlatning og ved tunge løft. * Støtter prostata og bakre del av vagina. * Løfter analkanalen opp, og påvirker derfor defekasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Støtte av viscera * Involvert i forsert utpust, hosting, oppkast, eller tunge løft * Involvert i vannlatning * Involvert ved defekasjon * Støtter prostata eller bakre del av vagina 0,5 p for hvert svar, men maksimalt 2 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Under fødsel er man opptatt av å unngå skader i mm. sphincter ani </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar oppbygningen, lokalisasjonen og funksjonen til mm. sphincter ani. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Sirkulær rundt endetarmen * Indre (involuntær) sphincter: Fortykning av det sirkulære muskellaget i tarmen. Omgir øvre del (øvre 2/3) av analkanalen. * Ytre (voluntært) sphincter: To brede bånd på hver side av analkanalen. Omgir nedre del (nedre 2/3) av analkanalen. * Funksjon: Lukkemuskel for endetarmen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p på hver, maksimalt 2 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv de viktigste forskjellene mellom det kvinnelige og det mannlige bekkenskjelettet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Formen på bekkeninngangen (kvinnelig bekken ovalt, mannlig bekken hjerteformet). * Mannlige bekken tyngre, kraftigere beinstrukturer * Kvinnelige sylinderformet, mannlige traktformet * Laterale deler av bekkenet er flatere og bredere hos kvinner * Vinkelen under symfysen (Menn: Angulus subpubicus; Kvinner: Arcus pubis) er større hos kvinner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p på hver, maksimalt 2 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ingen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken plage kan en kvinne få dersom bekkenets diafragma skades under fødsel? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Inkontinens for urin og avføring </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Maksimalt 0,5 p, evt 0,25 p dersom kun nevner enten urin eller avføring </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bakterien //Staphylococcus epidermidis// er en del av hudens normalflora, men kan også forårsake alvorlig infeksjon hos mennesker. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken nytte har vi av normalflorabakterier som //S. epidermidis// og andre bakterier på hud og slimhinner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Beskytter mot patogene bakterier (for eksempel ved prod. av antibakterielle peptider) (0.5p) # har en rolle i utvikling av lokal immunitet/ stimulerer sekresjon av interleukiner (0.5p) # metabolisme (eks. syntese av vitaminer, metabolisme av karsinogener, fermenteringav ellers ufordøyelige elementer i mat) (0,5 p per element, maks 1,0p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvilke egenskaper //S. epidermidis// har ved Gramfarging, og hva som er hovedforskjellene i oppbygning av celleveggen mellom Gram-positive og Gram-negative bakterier. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Gram positive kokker (oftest i hauger) (0.5p) # peptidoglycan (tykt lag med peptidoglykan hos GP, tynt peptidoglykanlag hos GN) (0.5p) # yttermembran og periplasmisk rom hos GN, men ikke hos GP (0.5p) # lipopolysakkarid hos GN, ikke hos GP(0.5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett //S. epidermidis// og andre koagulase-negative stafylokokker er kjent for å gi infeksjoner hos pasienter med proteser. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken egenskap hos disse bakteriene gjør de spesielt egnet til dette, og hvilke konsekvenser har dette for antimikrobiell behandling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # evne til å danne biofilm (0.5p) på overflaten av fremmedlegemer # bakterien dekkes av biofilmen (0.5p) # beskyttes derved mot antibiotika som trenger dårlig inn i biofilm (0.5p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett //S. epidermidis// er ofte meticillin-resistent, men er likevel vanligvis følsom for glykopeptider (eks. vankomycin) som også angriper bakteriecelleveggen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv virkningsmekanismene for penicillinasestabile penicilliner og glykopeptider. Forklar hvorfor en bakterie kan være meticillinresistent og samtidig følsom for glykopeptider. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Betalaktamer generelt binder PBP som er transpeptidaser og hindrer derved transpeptidering av peptidsidekjeder i peptidoglykanet i celleveggen; i tillegg er penicillinasestabile penicilliner resistente for betalaktamaser som bryter ned betalaktamringen (0.5 p) # glykopeptider som vankomycin utøver sin virkning ved å bindes til enden av peptidsidekjeder og derved sterisk hindre at PBP (transpeptidasen) kommer til og får utøve sin virkning (0.5 p) # Ved meticillinresistens danner bakterien alternativt penicillinbindende protein (PBP2a) som ikke bindes/hemmes av Pc-stabile penicilliner, men glykopeptider hinder tilgang til aktivt sete på peptidsidekjeden for både vanlige PBPer og alternative PBPer (1p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett De senere årene har det blitt betydelig fokus på hvilke konsekvenser økt antibiotikaresistens vil kunne ha for behandling av infeksjoner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan vi som leger gjøre for hindre utvikling av antibiotikaresistens? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Redusere bruken av antibiotika/ AB kun når nødvendig/ benytte alternativ behandling (0.5p) # korrekt bruk, følge nasjonale retningslinjer/ helst smalspektrede midler når mulig (0.5p) # smitteverntiltak for å hindre smitte av resistente bakterier i helseinstitusjoner (0.5p) # andre poenger (maks 1p dersom minst to andre faktorer nevnes): for eksempel unngå langvarige antibiotikakurer når ikke nødvendig, oppfordre til vaksinasjon dersom aktuelt, overvåkning av antibiotikabruk og antibiotikaresistens, venteresept, forbedret diagnostikk. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En mor kommer til deg som helsestasjonslege med to av sine barn, en gutt på 4 måneder og en jente på 5 år. Hun uttrykker bekymring for gutten fordi han spiser lite, ikke løfter hodet fra mageleie og gråter mye. Moren er alene med barna, og veldig sliten av søvnmangel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer relatert til svangerskap og fødsel er viktige for å vurdere spedbarnets psykiske helse? (Nevn minst fire faktorer totalt). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Alkohol/rusmidler/medikamenter i svangerskap * Infeksjoner i svangerskapet * Stress/traumer/belastning i svangerskapet (fattigdom, vold, krig) * Mors og fars psykiske helse i svangerskapet * Mors og fars fysiske helse i svangerskapet * Prematuritet * Fødselsskade/komplikasjon som påvirker barnets psykomotoriske utvikling </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 2 poeng For å få poeng, må det være nevnt faktorer som er relatert til svangerskap eller fødsel, ikke generelle risikofaktorer for dårlig psykisk helse. Ref: # Hantsoo, L. et al. Inflammation: A Proposed Intermediary Between Maternal Stress and Offspring Neuropsychiatric Risk. Biological psychiatry 2018 Sep 5. pii: S0006-3223(18)31795-5. # Grøholt, B. et al Lærebok i barnepsykiatri. 5. utgave. Universitetforlaget 2015. ISBN 978-82-15-02285-7 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< En mor kommer til deg som helsestasjonslege med to av sine barn, en gutt på 4 måneder og en jente på 5 år. Hun uttrykker bekymring for gutten fordi han spiser lite, ikke løfter hodet fra mageleie og gråter mye. Moren er alene med barna, og veldig sliten av søvnmangel. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil du vurdere for å kunne beskrive samspillet mellom mor og gutten? (Nevn minst fire faktorer totalt). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Blikk-kontakt mellom gutt og mor * Hvordan mor snakker //om// gutten * Hvordan mor snakker //til// gutten * Kvaliteten på fysisk kontakt mellom mor og gutt * Mors fokusering og felles oppmerksomhet ved å følge med på hva gutten er opptatt av, hva han ser på og er interessert i. * Om mor smiler til gutten, og får smil tilbake fra gutten * Om det oppstår turtaking mellom gutt og mor * Om mor prøver roe barnet om det blir urolig i løpet av konsultasjonen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 2 poeng Vi ønsker med dette spørsmålet å kartlegge om studenten har forståelse for begrepet samspill, og om studenten er i stand til å vurdere elementer ved samspill mellom foreldre og barn Ref: # Tetzchner, S. Utviklingspsykologi, 2. utgave, Gyldendal forlag 2012. ISBN/EAN: 9788205390782 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Storesøster på 5 år skal begynne på skolen om ett halvt år. Hun er adoptert fra Colombia, og kom til familien da hun var 2 år gammel. Hun er motorisk urolig, har hyppige sinneutbrudd, sovner seint og har mareritt. I barnehagen har de uttrykt bekymring for at hun har dårlig språk, og det blir ofte konflikt mellom henne og jevnaldrende. Hun foretrekker lek med barn som er 1-2 år yngre enn seg selv </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan man normalt forvente av et barn på 5 år når det gjelder motorisk, psykologisk og sosial utvikling? (Nevn minst fire utviklingsmessige milepæler totalt, og minst ett i hvert område). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Motorisk: ** Løper ** Hopper ** Hinker ** Klatrer ** Tegner menneske * Psykologisk: ** Leker alene ** Nysgjerrig og interessert * Sosialt: ** Godt utviklet språk ** Kler på seg alene ** Leker med andre </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hver riktig milepæl koblet til riktig område, inntil 1.5 poeng totalt. I tillegg 0.5 p for ytterligere en riktig faktor Ref.: # https://www.helsebiblioteket.no/pediatriveiledere?menuitemkeylev1=5962&menuitemkeylev2=5973&key=144638 # Noritz GH, Murphy NA, Neuromotor Screening Expert Panel. Motor delays: early identification and evaluation. Pediatrics 2013; 131:e2016. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du avtaler en egen time med mor og datter for å snakke om hennes emosjonsregulering og sosiale fungering. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil du spørre moren om for å avklare risiko- og beskyttelsesfaktorer for jentas psykiske helse? (Nevn minst to risikofaktorer og to beskyttelsesfaktorer for barnets psykiske helse). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Risikofaktorer: * Prematuritet * Utsatt for rus i svangerskap * Komplikasjoner i svangerskap eller fødsel * Oppvekstvilkår/omsorg før hun kom til familien (adoptert 2 år) * Familiære sykdommer (psykisk eller fysisk, både biologisk og adoptivfamilie) * Kronisk sykdom hos barnet * Utviklingsforstyrrelser * Funksjonshemming * Traumatiske opplevelser (inkludert vold, omsorgssvikt, seksuelle overgrep) * Belastninger i familien (økonomi, rus) Beskyttelsesfaktorer: * God familiefungering * Sosial støtte * Sosial kompetanse * Gode kognitive evner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 2 poeng Ref # Johnson S et al. Preterm Birth and Childhood Psychiatric Disorders. Pediatric research, Vol. 69, No. 5, Pt. 2, 2011 # Plessen K.J. Hjernen og følelser –fra barn til voksen. Tidsskr Nor Legeforen nr. 9, 2010; 130 # Kolb B. et al. Principles of plasticity in the developing brain. Developmental Medicine & Child Neurology 2017, 59: 1218–1223 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du etablere kontakt med jenta på 5 år? (Nevn minst 4 punkter). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Informere om hvem du er * Informere om hensikten med samtalen * Bruke kunnskap om hennes alder/ utviklingsnivå * Gjør barnet trygg * Være konkret (direkte spørsmål) * Bruke fantasien * Vise interesse og engasjement * Aktiv bruk av nonverbal kommunikasjon (smile, gi blikkontakt, * bruke gester, vise med kroppen) * Unngå å bringe barnet i lojalitetskonflikt * Triangulering (bruke felles fokus for å gjøre kommunikasjon mindre intens) * Lytt til barnet </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvert riktig svar, inntil 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Synsskarpheten er best i den delen av synsfeltet som faller på fovea. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke forhold ved netthinnen og hjernebarken bidrar til at synsskarpheten er best her? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Minst konvergens i fovea: De enkelte ganglieceller mottar signaler fra relativt få fotoreseptorer (gangliecellene her har små reseptoriske felter). # Tetthet av fotoreseptorer (tapper) er høyest i fovea. # Lyset forstyrres i mindre grad før det treffer fotoreseptorer i fovea: Mesteparten av netthinnen er organisert slik at lyset må passere gjennom de andre cellelagene før det treffer fotoreseptorer. Sentralt i fovea (foveola) er ganglieceller og bipolare celler skjøvet til siden slik at lyset ikke må passere gjennom disse cellelagene før det treffer fotoreseptorer (denne delen av fovea har dessuten ingen blodkar). # Sentralnervøs signalbehandling: Langt flere nerveceller i hjernen brukes på å behandles synsinntrykk fra denne delen av netthinnen enn andre deler av netthinnen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.75 poeng for hvert riktig punkt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et relativt kraftig lysglimt treffer et lite område i netthinnen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med membranpotensialet til, og frigjøring av nevrotransmitter fra, en fotoreseptor når lyset treffer dens ytre segment? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fotoreseptoren hyperpolariseres og den slipper ut mindre nevrotransmitter (glutamat). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hyperpolariseres (0.5 poeng), mindre nevrotransmitter (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Lyset treffer sentrum av det reseptoriske feltet til en OFF-center bipolar celle (også kalt AV-bipolar) og en ON-center gangliecelle (også kalt PÅ-gangliecelle). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med membranpotensialet og frekvensen av aksjonspotensialene til disse cellene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den bipolare cellen hyperpolariseres. Dette er en gradert endring av membranpotensialet. Bipolare celler lager ikke aksjonspotensialer. ON-center ganglicellen depolariseres og frekvens av aksjonspotensialer fra cellen øker </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bipolare celler hyperpolariseres (0.5 poeng), fyrer ikke aksjonspotensialer (0.5 poeng) ON-center gangliecelle depolariseres (0.5 poeng), høyere frekvens av aksjonspotensialer (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En skygge faller over hele det reseptoriske feltet til en OFF-center gangliecelle (AV-gangliecelle). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva skjer med frekvensen av aksjonspotensialer fra denne cellen og hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Frekvensen av aksjonspotensialer endrer seg lite. Ganglieceller har typisk et todelt reseptorisk felt. OFF-center celler stimuleres når det blir mørkere i sentrum av deres reseptoriske felt, og hemmes når det blir mørkere i den perifere delen av feltet. Stimulus som beskrives i denne oppgaven vil derfor totalt sett ha liten effekt på cellen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Liten/ingen endring gir 0.5 poeng. 0.5 poeng for riktig forklaring. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Aksonene til gangliecellene i netthinnen går til ulike deler av sentralnervesystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 4 ulike områder som disse aksonene går til, og beskriv kort hva som er hovedfunksjonen til disse banene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Corpus geniculatum laterale (thalamus): Nevroner her sender aksoner til primære synskorteks. Signalene i denne banen er grunnlaget for bevisste synsinntrykk Pretektum: Fibrene til pretektum utgjør den afferente delen av lysrefleksen(Signalene går videre til parasympatisk aksessorisk oculomotorius kjerne (Edinger-Westphal kjernen) på begge sider) Colliculus superior: Viktig for koordinering av øyebevegelser. Hypothalamus (nucleus suprachiasmaticus): Viktig for døgnrytme. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.75 poeng for hvert punkt inkludert riktig beskrivelse av funksjonen, maks 3 poeng (0.25 poeng for bare riktig område, maks 1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En studie undersøkte om det var sammenheng mellom røyking og insidens av hoftefraktur hos eldre. Alle innbyggere i et fylke ble invitert til studien hvis de var minst 70 år gamle og ikke allerede hadde hatt hoftebrudd eller hoftekirurgi ved studiens oppstartdato 1. januar 2008. Blant personer som oppfylte disse kriteriene og som takket ja til å delta i studien, identifiserte forskerne 5 000 personer som røykte og 20 000 personer som ikke røykte ved studiens start. Alle disse personene ble fulgt opp fram til 31. desember 2017. I oppfølgingstida ble første gangs hoftefraktur registrert, og dødsfall blant deltakerne ble også registret. Insidensen av hoftefraktur i oppfølgingstida ble sammenliknet mellom røykerne og ikke-røykerne. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket design har denne studien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kohortstudie. I en kohortstudie identifiseres eksponerte (her: røykere) og ikke-eksponerte (her: ikke-røykere). Studiepopulasjonen følges opp over tid for å finne ut hvem som får utfallet (her: hoftefraktur), og insidensen av utfallet sammenliknes mellom eksponerte og ikke-eksponerte </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kohortstudie gir 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blant de 5 000 som røykte, oppstod 600 hoftefrakturer i løpet av 40 000 person-år. Blant de 20 000 ikke-røykerne oppstod 1800 hoftefrakturer i løpet av 180 000 person-år </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva var risikoen (insidensandelen eller incidence proportion) for å få hoftefraktur blant røykerne? Og hva var denne risikoen blant ikke-røykerne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Blant røykerne: 600/5000 = 0.12 eller 12%. Blant ikke-røykerne: 1800/20 000 = 0.09 eller 9%. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for angi at risikoen blant røykerne var enten 0.12 eller 12% 0.5 poeng for å angi at risikoen blant ikke-røykerne var enten 0.09 eller 9%. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Blant de 5 000 som røykte, oppstod 600 hoftefrakturer i løpet av 40 000 person-år. Blant de 20 000 ikke-røykerne oppstod 1800 hoftefrakturer i løpet av 180 000 person-år <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva var risikoratioen (risk ratio) for å få hoftefraktur blant røykerne sammenliknet med ikke-røykerne? Tolk risikoratioen med egne ord. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 0,12/0,09 = 1,33 (≈1,3) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å angi at risikoratioen var 1,33 (eller 1,3). 1 poeng for å angi at det betyr at risikoen for hoftefraktur var 33% (eller 30%) høyere blant dem som røykte sammenliknet med ikke-røykerne. Alternativt kan det angis at risikoen for hoftefraktur var 1,33 (eller 1,3) ganger høyere blant dem som røykte sammenliknet med ikke-røykerne. Det gis også poeng dersom regnestykket er riktig satt opp/fortolkningen er rett, men feil utregning i spørsmål 2 gjør at svaret på spørsmål 3 blir feil. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Blant de 5 000 som røykte, oppstod 600 hoftefrakturer i løpet av 40 000 person-år. Blant de 20 000 ikke-røykerne oppstod 1800 hoftefrakturer i løpet av 180 000 person-år <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva var insidensraten av hoftefraktur blant røykerne? Og hva var denne insidensraten blant ikke-røykerne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Blant røykerne: 600 / 40 000 personår = 0,015 per personår eller 150 per 10 000 personår Blant ikke-røykerne: 1800 / 180 000 personår = 0,01 per personår eller 100 per 10 000 personår </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 0,5 poeng for å angi at insidensraten blant røykerne var enten 0,015 per personår, 15 per 1000 personår eller 150 per 10 000 personår osv (det er også ok å angi f eks per 100 000 personår) Tilsvarende gis 0,5 poeng for å angi at insidensraten blant ikkerøykerne var 0,01 per personår eller 10 per 1000 personår osv. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< Blant de 5 000 som røykte, oppstod 600 hoftefrakturer i løpet av 40 000 person-år. Blant de 20 000 ikke-røykerne oppstod 1800 hoftefrakturer i løpet av 180 000 person-år <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva var insidensrate-ratioen (incidence rate ratio) for hoftefraktur blant røykerne sammenliknet med ikke-røykerne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> (150 / 100 000 personår) / (100 / 100 000 personår) = 1,5 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1,5 gir 1 poeng. Det gis også poeng dersom regnestykket er rett satt opp, men feil utregning i spørsmål 4 gir feil svar på spørsmål 5. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett (Ikke egen vignett) </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Svarene i spørsmål [[3|ICD - 2019s - Oppgave 4 - Del 3]] og [[5|ICD - 2019s - Oppgave 4 - Del 5]] er begge relative mål på sammenhengen mellom røyking og insidens av hoftefraktur. Hvorfor er de to målene forskjellige, og hvilket av dem er det beste målet for sammenhengen mellom røyking og insidens av hoftefraktur? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De to målene er forskjellige fordi beregning av risikoratio ikke tar hensyn til at endringer i oppfølgingstida kan være ulike mellom de to gruppene på grunn av konkurrerende risiko (competing risks) og loss to follow-up. Insidensrateratioen er det beste målet, fordi den tar hensyn til disse forholdene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å angi at insidensrateratioen tar hensyn til konkurrerende risiko (competing risks) (evt loss to follow-up). Alternativt gis 1 poeng for å angi at risikoratioen ikke tar hensyn til disse. 1 poeng for å angi at insidensrateratioen er det beste målet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Sammenhengen mellom røyking og hoftefrakturrisiko skyldes i alle fall delvis at røyking fører til lavere beintetthet. Det er derimot liten grunn til å tro at beintettheten påvirker folks røykevaner. Da forskerne i denne studien justerte for deltakernes beintetthet i de statistiske analysene, ble sammenhengen mellom røyking og hoftefrakturrisiko sterkt svekket, slik at den relative risikoen var tilnærmet lik 1. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil du etter dette konkludere med at røyking er assosiert med økt insidens av hoftefraktur? Hvorfor eller hvorfor ikke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, røyking er assosiert med økt hoftefrakturinsidens. I denne situasjonen er beintettheten en mediator i sammenhengen mellom røyking og hoftefraktur, og en mediator er ikke en feilkilde som man skal justere for (tvert imot kan justering for en mediator introdusere bias i resultatet). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å konkludere med at røyking er assosiert med økt hoftefrakturinsidens. 1 poeng for å angi at beintetthet i denne situasjonen er en mediator (som derfor ikke skal justeres for). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne (23 år) har plager om våren med nesetetthet og nysing, samt kløende og røde øyne. Etter utredning konkluderte legen med at hun er allergisk mot bjørk. 4 hovedgrupper celler fra immunforsvaret er involvert i mekanismen for plagene hennes fra hun første gang var i kontakt med bjørkepollen til hun nå får symptomer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Fyll ut det som mangler i tabellen nedenfor slik at du navngir og karakteriserer disse 4 celletypene (A-D). Rekkefølgen i listen er ikke nødvendigvis logisk. | !Celletype | !Tilhører naturlig (medfødt) eller ervervet (spesifikt) forsvar | !Viktig cellereseptor ved aktiveringen | !Stikkord for hovedfunksjoner | |A) | | ICOS-ligand | | |B) | | CD19 | | |C) | | Fc-reseptor FcεR1 | | |D) | | CD40 | | </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> | !Celletype | !Tilhører naturlig (medfødt) eller ervervet (spesifikt) forsvar | !Viktig cellereseptor ved aktiveringen | !Stikkord for hovedfunksjoner | |A) Tfh-celle, T follikulær hjelpercelle (//NB Se kommentar i Hva gir poeng?//) | Ervervet | ICOS-ligand |Hjelpe ved aktivering av B-cellen | |B) B-lymfocytt/B-celle | Ervervet | CD19 |Utvikles til plasmaceller som produserer IgE | |C) Mastcelle | Naturlig | Fc-reseptor FcεR1 |<ol><li>Binde IgE og</li><li>Degranulere/skille ut proinflammatoriske mediatorer</li></ol> | |D) Dendrittisk celle | Naturlig | CD40 |<ol><li>Presentere antigen for T-cellen (signal 1),</li><li>kostimulering av T-cellen (signal 2),</li><li>produksjon av primingcytokiner ("signal 3").</li></ol> | </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Pga. feil i oppgaveteksten er fasit Tfh på linje A feil. Riktig svar her blir isteden dendrittisk celle. Se informasjonen på linje D. Hvis man har svart dendrittisk celle på A, blir det ingen logiske steder å sette T-celle (Tfh). Eneste riktige svar på B er B-celle. Eneste riktige svar på C er mastcelle. D blir tvetydig fordi man har «brukt opp» både B-celle og dendrittisk celle tidligere i oppgaven, og oppgaven ber om 4 ulike celletyper. Både dendrittiske celler og B-celler kan uttrykke CD40. Ved retting har vi derfor gitt poeng for dendrittisk celle både på linje A og D, og for B-celle på linje B og D. Noen studenter har oppdaget feilen og inkludert T-celle (Tfh eller Th2) i svaret sitt, evt. med ekstra forklaring. De har fått poeng for dette. Ved poenggivningen har vi tatt hensyn til at oppgaven er blitt forvirrende og vært rause med poengene for celletypene. Detaljene om cellenes funksjoner er vurdert i henhold til fasit nedenfor. Navn på de 4 celletypene: 0,5 p. ~~Ut fra overflatemolekylet ICOS-L forventes Tfh og ikke «T-celle/Tlymfocytt» for fullt poeng.~~ Det forventes også bruk av betegnelsen dendrittisk celle istedenfor antigenpresenterende celle fordi ikke alle typer antigenpresenterende celler kan fungere i den aktuelle sammenhengen. Dendrittiske celler er ikke alene om å uttrykke CD40, men med kunnskap om hvilke celler som er involvert, blir svaret opplagt. Riktig karakterisering av naturlig/ervervet immunforsvar: 0,5 p. Riktig beskrivelse av hovedfunksjoner: * 0,5 p for Tfh-celle (med forklaring) eller dendrittisk celle på linje A * 0,5 p for B-cellen, må inkludere IgE. B-celle godkjennes også på linje D. * Mastcellen: 0,5 p for binding av IgE, 0,5 p for degranulering * Dendrittisk celle: 1 p hvis har med alle tre elementer i svaret, 0,5 p hvis har med to av de tre elementene, 0,25 p hvis har med ett av de tre elementene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Noen måneder senere reagerer kvinnen med magesmerter, diare og kløende øyne når hun spiser hasselnøtter. Det samme gjentar seg senere. Legen sier at hun har fått en allergisk kryssreaksjon, som er nokså vanlig ved bjørkeallergi. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for kryssreaksjonen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Forskjellige planter kan inneholde samme antigen eller antigener som har svært lik struktur. __En B-celles reseptor kan binde flere slike nesten like antigener, evt. med litt forskjellig styrke. Dette kalles en kryssreaksjon__. Også antistoffene som dannes etter aktivering av en B-celle, for eksempel antistoff mot bjørkepollen, kan gi kryssreaksjoner. __Fordi allergi er antistoffmediert, kan dette utløse allergiske symptomer ved kontakt med noe annet enn det man opprinnelig ble allergisk mot__ </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Studenten behøver ikke kjenne til at bjørk og hassel ofte gir kryssreaksjoner, men skal kunne forklare hva en kryssreaksjon er (binding av samme antistoff til strukturlike antigener; 0,5p) og at dette kan gi allergiske symptomer fra ulike, men lignende allergener (allergisk kryssreaksjon) (0,5p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen oppdager at hun tåler å spise melkesjokolade som inneholder biter av hasselnøtter </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er forklaringen på dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Når proteiner varmes opp, denatureres de. B-celler kan binde __konformasjonsepitoper som ødelegges ved denaturering__ av proteinet. I dette tilfellet __kan derfor ikke antistoffet som utløser allergien lenger binde allergenet__. Da utløses __ikke mastcelledegranulering__ og kvinnen får ikke allergiske symptomer </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Har med noe om denaturering av protein og endret binding til antistoff (0,5p). Behøver ikke nevne ordet konformasjonsepitop. Manglende allergenbinding utløser ikke mastcelledegranulering (0,5p). Selv om man ikke vet mye om sjokoladeproduksjon, forventes at man forstår at sjokolade må varmes/smeltes for å lages til et salgbart produkt. Noen studenter har nevnt at lav konsentrasjon av nøtter i sjokoladen er årsak til manglende reaksjon. Dette gir ikke poeng fordi allergikere vanligvis reagerer på svært små allergenmengder og oppgaven angir «biter av hasselnøtter» (ikke «spor» slik det blir hvis man f.eks. lager flere sorter sjokolade på samme maskiner og rengjøringen ikke er fullgod) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett For å dempe allergiplagene, bruker kvinnen tabletter med antihistamin i pollensesongen. Antihistaminer blokkerer histaminreseptorer i ulike vev </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for at kvinnen får mindre plager fra nesen </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved allergi er histamin er en av de sentrale mediatorene som skilles ut når mastceller degranulerer. Histamin gir vasodilatasjon, økt vasopermeabilitet og kløe. Når reseptorene for histamin er blokkert, reduseres derfor ødem, nesetetthet, nesesekresjon og nasal kløe. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vet at histamin er en viktig mediator for allergi (0,5 p) og forklarer mekanismen for symptomlindring (0,5p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Senere begynner kvinnen med allergivaksine. Hun får lave doser bjørkepollen injisert subkutant. Dette fører bl.a. til dannelse av IgG4 og IgA </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor vaksineringen resulterer i reduserte allergiplager. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> IgG og IgA bindes ikke til Fc-reseptorene på mastceller. Fordi disse antistoffene skyldes immunisering med bjørkepollen, fanger de opp pollen på (IgA) og i (IgG4) slimhinnene. Derved forhindrer de at sensibiliserte mastceller kommer i kontakt med pollen. Disse antistoffisotypene aktiverer heller ikke komplement, som bidrar til redusert inflammasjon i slimhinnene. (Allergivaksinering påvirker også andre deler av immunforsvaret, men dette er ikke tema for oppgaven) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> IgG og IgA kan ikke bindes til mastceller (0,5p), antistoffene fanger opp pollen så mastceller ikke degranulerer (0,5p), IgA og IgG4 aktiverer ikke komplement (0,5p) => Det er ikke sikkert alle tenker på dette, men de mest kunnskapsrike får derved litt ekstra. Det at oppgaven presiserer IgG4 og ikke IgG, gir litt hjelp. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Antistoffresponser med dannelse av IgG som i dette eksempelet, er resultat av isotypeskifte </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismen for isotypeskifte. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Isotypeskifte er betegnelsen på at __antistoff bytter konstantdelen på tung kjede__ med en annen konstantdel, som fører til et antistoff med andre egenskaper (mht. Fc-reseptorbinding / komplementaktivering etc.). Dette skjer ved __looping out av DNA-tråden__ i den aktuelle cellen, og __utkutting__ av de delene av DNA-tråden som ligger mellom gensegmentet for variabel del og gensegmentet for den nye konstantdelen. Såkalte __switch-regioner__ i tungkjede-genet må først __aktiveres av cytokiner__. Flere enzymer (bl.a. AID og UNG) bidrar til __dobbelttrådede DNA-brudd__, før DNA skjøtes sammen igjen ved hjelp av andre enzymer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Vet hva isotypeskifte er – bytte konstantdel på tung kjede (0,5p), looping out og utkutting av DNA (0,5p), har med mer detaljer om cytokinaktivering, switch-regioner, dobbelttrådede brudd, ligaser etc. (0,5p). Det forventes ikke detaljer om enzym-navn eller hvilke cytokiner som gir skifte til ulike isotyper. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Legeerklæringen om dødsfall (melding om unaturlig dødsfall) sendes til Dødsårsaksregisteret </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hva dødsårsaksoppsettet betyr? (Ia, Ib, Ic, II) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Den umiddelbare dødsårsaken føres opp på linje Ia''. Her skal det ikke føres uspesifikke tilstander eller terminale hendelser slik som hjertestans, arytmi eller kardiorespiratorisk svikt. Bakenforliggende tilstander føres opp på linje Ib og Ic. ''Den underliggende dødsårsaken'' er definert som «den sykdom eller skade som startet rekken av sykelige tilstander som førte direkte til døden» og ''føres på den nederste linje som benyttes''. Hvis den sykdom eller tilstand som føres på Ia beskriver hendelsesforløpet fullstendig, er det ikke nødvendig å bruke linje Ib og Ic. En årsakssammenheng omfatter ikke bare direkte medisinsk sammenheng, men også der en grunnlidelse kan ha ført til den umiddelbare dødsårsaken på grunn av funksjonsnedsettelse. ''På linje II føres medvirkende dødsårsaker'', det vil si andre vesentlige tilstander som kan ha bidratt til dødens inntreden, men uten å stå i direkte årsaksforhold til den tilstand som forårsaket døden. Hvis det er flere tilstander på II, skal den mest betydningsfulle angis først. Varigheten av tilstandene på I og II angis dersom den er kjent. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å nevne umiddelbare dødsårsak på linje Ia. 1 poeng for å nevne underliggendedødsårsak på siste linje (Ib eller c). 0,5 poeng for å nevne medvirkende dødsårsak på linje II. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Som turnuslege på et sykehus blir du tilkalt til avdelingen for å fylle ut en legeerklæring om dødsfall på en eldre og dement pasient som sovnet stille inn. Pasienten var innlagt grunnet lungeemboli og det ble ikke igangsatt gjenoppliving. Ved rask gjennomgang av journal finner du at pasienten hadde flere diagnoser: Adenokarsinom i mamma med utbredt metastaserende sykdom, lungeemboli, KOLS, hjertehypertrofi, vaskulær demens og aterosklerose av aorta. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest riktige måten å angi Ia og Ib (evt Ic) i dødsårsaksoppsettet på? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ia: Lungeemboli Ib: Adenokarsinom i mamma med metastaser </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for lungeemboli på Ia. 1 poeng for adenokarsinom med metastaser på Ib. Samme poengsum selv om det er delt opp i Ib metastaser og Ic adenokarsinom i mamma. Ingen poeng for riktige diagnoser, men feil rekkefølge </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Som turnuslege i distrikt blir du tilkalt av politiet for å skrive ut en legeerklæring om dødsfall på en person som har skutt seg. Politiet opplyser om at avdøde var observert beruset noen timer i forveien og at han hadde flere diagnoser: Hjertesykdom, KOLS, alkoholmisbruk samt at han tidligere var behandlet for depresjon og angst </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva bør føres som II i dødsårsaksoppsettet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> II: Alkoholpåvirket tilstand </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her er det naturlig å anta at avdødes alkoholpåvirkede tilstand trolig har vært medvirkende til dødsfallet. Vi har ingen opplysninger om avdødes psykiske helse på dødstidspunktet og tidligere angst og depresjon antas ikke å ha vært en medvirkende faktor. 1 poeng for å angi alkoholpåvirkning. Ingen poeng for de andre alternativene/diagnosene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Obduksjon er åpning av lik for å kunne studere forandringer i kroppens organer og vev forårsaket av sykdom eller skade, og for å fastslå dødsårsaken. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hvordan en obduksjon rent teknisk gjennomføres. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Obduksjon utføres ved at et y-formet snitt legges langs begge krageben og inn mot brystbenet og videre ned mot skambenet. <img src="images/ICD-2020-2-A.jpg" /> <img src="images/ICD-2020-2-B.jpg" /> <img src="images/ICD-2020-2-C.jpg" /> <img src="images/ICD-2020-2-D.jpg" /> Brystbensskjoldet fjernes ved at brystbena klippes av. Organblokken løsnes ved å skjære tungen fri fra øvre del av strupen og ved å dele av rektum ned mot anus. Organblokken løsnes deretter fra bakre feste langs ryggraden og ved å løsne mellomgulvet før organblokken så undersøkes. Hjernen hentes ut ved å løsne huden fra skallen, vrenge huden frem over ansiktet og sage ut calvariet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å nevne y-snitt eller organblokk. 1,0 poeng for å huske at å undersøke hjernen også inngår i undersøkelsen og hvordan man tar ut denne. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Dødsfallet i [[spørsmål 2|ICD - 2020 - Oppgave 2 - Del 2]] er ikke meldepliktig til politiet, men du ønsker å få utført en medisinsk obduksjon av pasienten. Pårørende ønsker imidlertid __ikke__ at obduksjon skal utføres. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du likevel få utført en obduksjon? Begrunn svaret ditt </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei. «Lov om obduksjon og avgjeving av lik til undervisning og forsking» (obduksjonslova) regulerer vanlige obduksjoner av personer som dør i sykehus eller annen helseinstitusjon. Avdødes pårørende kan motsette seg at slik obduksjon utføres. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig svar, 0,5 poeng om kun riktig og ikke begrunner </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Som turnuslege i sykehus blir du tilkalt til avdelingen for å skrive legeerklæring om dødsfall på en person som var innlagt med KOLS (kronisk obstruktiv lungesykdom) og som ble funnet død i sengen på morgenen. Ved gjennomgang av journal finner du at avdøde hadde gjennomgått behandling for en pneumoni og det var planlagt hjemreise samme dag. Du finner også at pasienten kvelden i forveien hadde fått sovemedisin av en sykepleier grunnet uro </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Er dødsfallet meldepliktig til politiet? Begrunn svaret ditt. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja * Her har døden inntrådt plutselig og uventet da pasienten var oppfattet å være i bedring (hjemreise/utskriving var planlagt). __Plutselige og uventede dødsfall er meldepliktige__ til politiet, men vi har ingen opplysninger om avdødes grad av KOLS. Dersom denne var svært alvorlig, ville kanskje ikke dødsfallet være så uventet. * Det er også opplysninger om uro og at sovemedisin var gitt. Det vites ikke om avdøde var urolig grunnet symptomer eller om det ble gitt videre oppfølging etter dette. __Feil, forsømmelse eller uhell ved undersøkelse eller behandling av sykdom er også meldepliktig__ til politiet. Det er ikke alltid klart om et dødsfall er naturlig eller ikke. Ofte kan dette bare avklares ved politiets etterforskning og sakkyndig likundersøkelse. Dødsårsaksforskriften angir derfor at __legen skal melde på mistanke__. Det er ikke legens oppgave å avgjøre hvorvidt et dødsfall skyldes en straffbar handling, det er opp til politiet å etterforske. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å svare ja. 1 poeng for å diskutere noen av de nevnte momenter. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Barns vekst og utvikling defineres av deres genetiske potensial, fravær av sykdom, god ernæring og en god familie å vokse opp i. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan defineres det genetiske potensiale for kroppshøyde hos en jente? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ((Fars høyde + mors høyde) – 13 cm) / 2 (+/- 9 cm) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig formel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fem typiske sykdommer (sykdomskategorier) som er assosiert med vekstavvik? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Alle kroniske sykdommer som hjertesykdom, gastro-intestinal sykdom, alvorlig nyresykdom, # endokrinologiske sykdommer, # medfødt; sykdommer som CMV-infeksjon, født SGA, rusmisbruk mor (FAS), # de fleste syndromer, # skjelettdysplasier </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Å vise innsikt i at det er sykdommer som tar tid å utvikles og diagnostisere, hvor vekstavvik rekker å bli et aktuelt klinisk symptom. Orienterende gis 0,5 poeng for hver delkategori 1-5. Genetisk kortvokshet/konstitusjonelt forsinket vekst er ikke sykdommer og gir ikke poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et barns vekst fram til voksen høyde deles inn i tre vekstfaser som alle karakteriseres av hormoner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort de ulike vekstfasene hva gjelder start, varighet og hormonelle drivere. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Foster/spedbarnsalder (Infancy): ** Intrauterint til 4-6 mndr’s alder ** Hormoner: ''Insulin'', IGF-BP 1 og 2 * Småbarns/barnealder (Childhood): ** Fra og med uti første leveår og til pubertetsstart ** Hormoner: ''Veksthormon'', thyroxin * Pubertet: ** Fra pubertetsstart (normalt 12 år for gutter og 11 år for jenter) og til utvokst. ** Hormoner: ''kjønnshormoner (østrogen og testosteron)'', thyroxin og veksthormon </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng hvis bare benevnelse av kategoriene, +0,5 poeng med rett angivelse varighet, + totalt 1p for benevning insulin, veksthormon, kjønnshormoner i riktig fase, +0,5 hvis alle inkl. IGF-BP 1 og 2 nevnes i tillegg til insulin i foster/spedbarnsalder-fasen, thyroxin i tillegg til veksthormon nevnes i småbarns/barne-fasen, og thyroxin og veksthormon i tillegg til kjønnshormoner i pubertets-fasen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Når starter puberteten for gutter og jenter, og hvordan defineres pubertetsstarten for begge kjønn? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Gutter: 12 år, testikkelvolum 4 ml (Tanner 2) * Jenter: 11 år, "knoppskyting" med brystkjertelvekst (Tanner 2) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Halv score hvis bare definisjonen er angitt, full score med alder i tillegg. Aldersavvik < +/-1 år. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Det vanligste ernæringsproblemet for barn globalt, og også i Norge, er overernæring med utvikling av overvekt og fedme. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan defineres overvekt og fedme hos barn i Norge? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Overvekt: isoBMI25 ≥ BMI < isoBMI30 * Fedme: BMI ≥ isoBMI30 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig definisjon. Ingen annen definisjon av overvekt og fedme er aktuelle eller poenggivende bortsett fra vekt/høyde ratio > 0,5 som definisjon på fedme som gir 0,25 poeng. Det må sies isoBMI for å vise forståelse for at barns BMI er avhengig av alder og kjønn. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Barn har spesielle næringsbehov fram til 3-årsalder. Fem viktige forhold ved anbefalt sped- og småbarnskost avviker fra voksenkostholdet </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn de fem forholdene og beskriv i detalj hva anbefalingene er innenfor hver av dem. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Fett: Bør utgjøre 50% av total kalorimengde fra fødsel, reduseres til 30% fra 3 år * Proteiner: 2,7 g/kg ved fødsel og ned til 1,0 g/kg ved 1 års alder og videre i voksenalder. * Salt: Redusert salttilskudd fram til 1 års alder. * Kaloribehov: 108 kcal/kg ved fødsel, reduseres til 60(mann)/40(kvinne) i voksen alder. * Vitamin/mineraltilskudd: Vit D trengs fra 4 uker, Vit C og jern fra 6 mndr. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Alle punktene må nevnes for full poengpott (0,5 poeng for hvert forhold). Morsmelk/formula fram til 1 års alder kan evt erstatte en av de fem og også gi full pott. Hva gjelder kalorier kan et slingringsmonn på +/- 10 kcal ved fødsel og for kvinner og menn også gi fulle poeng. De bør vite at proteinbehovet er 2-3 ggr høyere pr kg ved fødsel enn ved 1 års alder og resten av livet, og det kan gi max poeng. Også for fett kan de få noe poeng ved å vite at behovet er større de første årene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er fersk lege på et ambulant akutteam ved et distriktspsykiatrisk senter (DPS) og med på en vurderingssamtale med en pasient som du ikke kjenner fra før. Han håndhilser og presenterer seg høflig. Pasienten forteller at han fikk schizofrenidiagnosen da han var 25 år, etter et alvorlig selvmordsforsøk med innleggelse på både akuttpost og DPS. Han ble satt på et antipsykotisk medikament og en sovetablett, og dette har han tatt siden da sammen med et medikament mot høyt blodtrykk som han fikk av fastlegen sin. Han sier at han nå har begynt å se sin døde far som begikk selvmord for 12 år siden. Faren dukker opp flere ganger om dagen og kommenterer mye av det pasienten gjør. Han kjenner mye på angst og uro. Han sier at dette skyldes at hans forfølger (faren) også overvåker ham via TV. Han kjenner at hele situasjonen gjør ham trist. Under samtalen kikker han seg mye rundt og vrir hendene sine. På grunn av grubling tar det litt tid før han sovner, men ellers sover han godt. Han har ikke sykmeldt seg, noe han synes er bra, fordi det er familie og jobb som gir ham trygghet og økonomisk stabilitet. Utenom familien er hans eneste venn hunden sin som han tar med seg på rypejakt. Tanker eller planer om selvmord avkrefter han. Samtalen pågår en stund fordi pasienten hver gang bruker litt tid før han svarer. Ofte svarer han litt omstendelig og mister også tråden. Etter samtalen skriver du innkomstjournalen til pasienten. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fire hovedkategorier i et psykiatrisk journalopptak som det finnes opplysninger om i vignetten. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Psykiatrisk sykehistorie * Aktuell problemstilling * Legemidler i bruk * Psykisk status presens * Suicidrisikovurdering * Naturlige funksjoner * Somatisk sykehistorie </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig kategori av disse, totalt 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mens du skriver innkomstjournalen, merker du at du har glemt å spørre om en del. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to hovedkategorier i et psykiatrisk journalopptak som det ikke finnes opplysninger om i vignetten. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Rusanamnese * Seksualanamnese * Komparentopplysninger * Formalia (f.eks. henvisende instans, paragraf) * Tiltak, evt. videre utredning * Somatisk undersøkelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig kategori av disse, totalt 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et viktig ledd mellom pasientens beskrivelse og din observasjon, tolkning og vurdering av situasjonen, ligger i beskrivelsen av pasientens psykiske status presens. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fire opplysninger i vignetten som er viktige for, og en del av, det å beskrive pasientens psykiske status presens. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Hører kommenterende stemmer * Ser ofte sin døde far ved siden av ham * Svarer omstendelig eller mister tråden * Overbevisning at han blir forfulgt * Overbevisning at han blir overvåket på TV * Angir tristhet og fremstår engstelig * Det er rimelig å vurdere at han er våken og klar * Svarer med latenstid * Grubling </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig opplysning, totalt 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !! Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tilordne opplysningene fra spørsmål 3 til de passende hovedkategoriene som finnes i en psykisk status presens. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Hører kommenterende stemmer → Persepsjonsforstyrrelse eller hørselshallusinasjoner eller akustiske hallusinasjoner * Ser ofte sin døde far ved siden av ham → Persepsjonsforstyrrelse eller synshallusinasjoner eller optiske hallusinasjoner * Svarer omstendelig eller mister tråden → (Formelle) tankeforstyrrelser * Overbevisning at han blir forfulgt → (Innholdsmessig) tankeforstyrrelse, vrangforestilling * Overbevisning at han blir overvåket på TV → (Innholdsmessig) tankeforstyrrelse, vrangforestilling * Tristhet → Stemningsleie, affekt * Fremstår engstelig → Affekt, basisemosjon * Det er rimelig å vurdere at han er våken og klar → Bevissthet * Svarer med latenstid → (Formell) tankeforstyrrelse * Grubling → (Formell) tankeforstyrrelse eller tvang </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 riktige tilordninger gir 0.5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !! Vignett Du vurderer pasientens selvmordsrisiko som lav, selv om han har en del risikofaktorer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fire risikofaktorer for selvmord som det finnes opplysninger om i vignetten. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Alvorlig psykisk lidelse * Tidligere selvmordsforsøk * Selvmord i familien * Våpen tilgjengelig * Lite sosialt nettverk </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig faktor, totalt 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !! Vignett Begrunnelse for din vurdering ligger i de beskyttende faktorene som du mener bidrar til at selvmordsrisikoen er lav. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to beskyttende faktorer det finnes opplysninger om </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Tilhørighet til familien * Økonomisk sikkerhet/stabilitet * Trygg arbeidsplass * Fravær av konkrete tanker eller planer </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig faktor, totalt 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !! Vignett Situasjonen hadde vært veldig annerledes dersom du hadde vurdert pasienten med akutt forhøyet og overhengende selvmordsrisiko. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn to akutte tiltak som er viktigst for å håndtere pasienter med akutt forhøyet og overhengende selvmordsrisiko. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Innleggelse på psykiatrisk akuttpost * Kontinuerlig observasjon * Beroligende medikasjon f.eks. benzodiazepiner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng per riktig tiltak, totalt 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Arbeidslivet er en viktig bærebjelke i samfunnet, og forholdene på den enkelte arbeidsplass kan også ha stor innvirkning på helsa til de ansatte. Blant annet i helsevesenet har mange mennesker sin arbeidsplass på forskjellige laboratorier. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn fem hovedgrupper av påvirkninger som vi kan finne i laboratorier og som kan ha betydning for helsa til de som arbeider der. Gi to konkrete eksempler for hver hovedgruppe </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # ''Fysiske arbeidsmiljøfaktorer'' bør nevnes. Som eksempler godkjennes: ## Støy ## Radioaktiv/ioniserende stråling ## UV stråling godkjennes. ## Andre eksempler som vurderes klart relevante. (Vibrasjonspåvirkning godkjennes ikke som eksempel fordi det ikke er noe typisk for laboratorier.) # ''Biologiske arbeidsmiljøfaktorer'' bør nevnes. Som eksempler godkjennes: ## "Smittefare" fra bakterier / virus / sopp. ## Allergener fra biologiske faktorer, f.eks ekskrementer, flass etc i dyrestall ## Andre eksempler som vurderes klart relevante. # ''Kjemiske arbeidsmiljøfaktorer'' bør nevnes. Som eksempler godkjennes: ## Formaldehyd ## Desinfeksjonsmidler/rengjøringsmidler ## Reagenser/reaktive kjemikalier. ## Forurensning generert i prosesser ## Andre kjemikalier eller faktorer som kan vurderes klart relevante. # ''Psykososiale/organisatoriske arbeidsmiljøfaktorer'' bør nevnes. Som eksempler godkjennes: #* Psykososiale: #*# Krav til arbeidstempo/produksjonspress/ "stress" #*# Krav til særlig forsiktighet ved håndtering av farlige kjemikalier/farlige smittestoff og risiko for konsekvenser ved uhell. #*# Mobbing/ seksuell- eller annen trakassering. #*# Andre eksempler som vurderes klart relevante. #* Organisatoriske: #*# Ubekvem arbeidstid: Skiftarbeid/nattarbeid/helgearbeid #*# Potensielt lite variert arbeid/mye rutiner. #*# Potensielt lite medbestemmelse, rigide strukturer for oppgaveløsning. #*# Andre eksempler som vurderes klart relevante. # ''Ergonomiske forhold'' bør nevnes. Dette dreier seg om tilpasning mellom mennesket og arbeidet. Som eksempler godkjennes: ## Ensidig gjentakende arbeid. ## Ubekvemme arbeidsstillinger. ## Tunge løft. ## Andre eksempler som vurderes klart relevante. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig hovedområde som har to relevante eksempler, inntil 5 hovedområder, (0,25 poeng for hvert relevante eksempel.) Ut fra at Arbeidstilsynet gjerne slår sammen biologiske og kjemiske arbeidsmiljøfaktorer og deler opp psykososiale og organisatoriske faktorer, så vil en slik alternativ inndeling også kunne gi full uttelling, så lenge man har med minst to relevante eksempler for hver av de 5 hovedområdene man har svart. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett De tre hovedveiene for opptak av kjemikalier i kroppen er gjennom hud, luftveier og mage/tarmsystemet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv i grove trekk omfanget av kontakt mellom en gjennomsnittlig voksen persons luftveier og omgivelsesluften i løpet av en dag ved å angi omtrentlig mengde luft som kommer i kontakt med luftveiene og luftveienes samlede overflate. Nevn kort hvordan minuttvolumet som en arbeidstaker har under en arbeidsoppgave, kan påvirkes av selve arbeidsoppgaven. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lungene er i kontakt med omtrent 10 m^^3^^ luft daglig (og dermed også med forurensning i luften.) (vel å merke i hvile/rolig arbeid.) Lungenes samlede overflate er omtrent 140 m^^2^^. Fysisk krevende arbeidsoppgaver medfører økt oksygenbehov og dermed økt lungeventilasjon/minuttvolum. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 0,25 poeng for omtrentlig beskrivelse av mengden luft lungene kommer i kontakt med i løpet av en dag (7-14 m^^3^^ godkjennes). * 0,25 poeng for omtrentlig beskrivelse av lungenes samlede overflate (90 – 170 m^^2^^ godkjennes). * 0,5 poeng for riktig beskrivelse av sammenhengen mellom fysisk krevende arbeidsoppgaver og økt minuttvolum. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv i korte trekk fire hovedmekanismer i luftveienes forsvar mot skadelig luftforurensning. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Nedsatt inhalasjon ## Grovt luftfilter (nesehår) ## (Flukt (lukt)) ## (Bronchokonstriksjon) # Inaktivering ## Sekresjon av mucus ## Metabolisme (enzymer ex. Cytokrom P450) # Fjerning ## Hoste ## Mucociliær transport ## Fagocytose # Innkapsling ## Fagocytose ## Bindevevsdannelse (fibrose) Annen fornuftig inndeling kan også gi poeng. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hver riktige mekanisme. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Luftforurensning på arbeidsplasser kan blant annet bestå av ulike partikler med ulike egenskaper. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke egenskaper ved partiklene i luftforurensning har størst betydning for hvor i luftveiene de deponeres, og hva kjennetegner partikler som deponeres perifert i luftveiene? Gi minst ett eksempel på partikler som kan deponeres perifert i luftveiene, og som kan føre til arbeidsrelaterte luftveisplager/sykdom. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Veldig forenklet så kan man si at dette avgjøres av partiklenes «størrelse», ved at «små» partikler følger luftstrømmen lettere, og dermed også kan deponeres mer perifert i luftveiene. Et riktigere svar er imidlertid at dette avgjøres av hvor godt partiklene klarer å følge luftstrømmen inn i lungene, hvilket igjen er avhengig av hvor godt partiklene svever i luften. Partiklenes sveveegenskaper kan også beskrives som hvor sakte partiklene faller mot bakken i stillestående luft. Dette påvirkes hovedsakelig av partiklenes volum, tetthet og fasong. Partikler som har gode svevegenskaper, og har lett for å følge luftstrømmen, vil kunne deponeres mer perifert enn partikler som ikke svever like godt, og dermed ikke klarer å følge luftstrømmen. Sveveegenskapene til partiklene oppgis som aerodynamisk diameter. Dess raskere fallhastighet/dårligere sveveegenskaper en partikkel har, jo høyere aerodynamisk diameter defineres for partikkelen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Full skår krever at man nevner volum, tetthet og fasong, samt at partikler med gode sveveegenskaper deponeres mer perifert enn partikler med dårligere svevegenskaper. I tillegg må det nevnes minst ett konkret relevant eksempel, f.eks asbeststøv, α-kvarts, sveiserøyk, stekeos m.f. Svar som nevner at aerodynamisk diameter er avgjørende og at partikler med liten aerodynamisk diameter deponeres mer perifert enn partikler med større aerodynamisk diameter, kan også gi full pott. Svar som kun nevner størrelse, og at små partikler deponeres mer perifert enn store partikler gis 1 poeng. Svar som kun nevner størrelse, uten noe mer forklaring gir 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En av arbeidsmedisinens sentrale prinsipper er at det er bedre å hindre at sykdom oppstår enn bare å være opptatt av å behandle/rehabilitere arbeidstakere som har blitt syke/sykmeldte. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn, __i prioritert rekkefølge__, det som i fagmiljøet anses som hovedgrupper av forebyggende tiltak for å beskytte arbeidstakere mot skadelig luftforurensning i arbeidsmiljøet (maks 6 hovedgrupper). Gi minst ett (men maks tre) konkrete eksempel for hver hovedgruppe. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Eliminasjon (fjerning av den skadelige påvirkningen, f.eks avslutte produksjonen av en vare.) # Substitusjon (bytte ut et helsefarlig kjemikalium med et annet som representerer en lavere helserisiko ved eksponering) # Innkapsling eller lukking av prosesser (herunder regner vi avtrekkskap på laboratorier) # Ventilasjon/avtrekk (herunder regner vi allmennventilasjon og punktventilasjon) # Organisatoriske forhold (herunder arbeidstidsbegrensninger, rullering, opplæring, skriftlige arbeidsinstrukser) # Personlig verneutstyr, er alltid siste utvei, som kun skal brukes dersom man ikke klarer å sikre et fullt ut forsvarlig arbeidsmiljø med øvrige tiltak. (Eks. maske, klær, briller m.m.). Et av disse kan godkjennes, men ikke flere. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Gi 0,3 poeng for hver riktig hovedgruppe med relevant eksempel, opp til maks 1,5 poeng, og 0,5 poeng hvis også rekkefølgen er stort sett riktig. (Dersom noen bytter plass på nr 3 og 4 fører ikke dette til trekk. Det er også i orden å plassere punktavsug sammen med innkapsling.) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På slutten av en arbeidsdag viser det seg at det har vært en gasslekkasje på en arbeidsplass. Lekkasjen blir stanset, og de fem ansatte som er på jobb i det aktuelle lokalet blir evakuert til en annen del av bygningen. Ved nærmere undersøkelser viser det seg at gasslekkasjen har oppstått like etter arbeidsdagens start, og medført at luften de ansatte har pustet inn mesteparten av arbeidsdagen sannsynligvis har vært forurenset med gass. Ingen av de fem ansatte har lagt merke til noe spesielt i løpet av arbeidsdagen, men når de kjenner etter, bemerker noen av dem at de kanskje kjenner seg litt tunge i hodet og litt uvel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken egenskap ved en gass som virker lokalt i luftveiene, er av størst betydning for hvilke deler av luftveiene som affiseres av eksponeringen? Drøft med to forskjellige gasser som eksempel hvilken betydning dette kan ha hatt for de fem ansatte? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er gassens vannløselighet som bestemmer hvor i luftveiene en gass har sin vesentlige virkning. Det betyr at lite vannløselige gasser har virkning mer distalt i luftveiene. Dersom gassen hadde vært nitrogendioksid, (evt fosgen som er lite sannsynlig) som er svært lite vannløselig, så ville virkningene kunne være distalt i luftveiene med i verste fall alvorlige virkninger og mulige senvirkninger. Dersom lekkasjen hadde vært av ammoniakkgass som er godt vannløselig så ville virkningen i tilfelle vært proksimalt i luftveiene, d.v.s. nese munn svelg. Ammoniakk har også en sterk lukt og derfor kan man si at konsentrasjonen i tilfelle ikke under noen omstendighet har vært høy siden ingen merket noe mens lekkasjen sto på. Andre gasser kunne være ozon, formaldehyd, svoveldioksid, klorgass, hydrogensulfid m.fl. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kunnskap om vannløselighetens betydning gir 0,6 poeng, mens hvert av to eksempler gir 0,7 poeng hver. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En kvinne på 40 år oppsøker fastlegen på grunn av hjertebank og svetting/økt varmefølelse de siste månedene. Hun har gått litt ned i vekt til tross for at hun spiser mer enn vanlig. Hun har også utviklet struma. Blodprøver viser at hun har høye verdier av fritt tyroksin (fT4) og trijodtyronin (fT3), mens thyreoideastimulerende hormon (TSH) er lavt (under referanseområdet). Det påvises også høyt nivå av antistoff mot TSH-reseptor i blodet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort syntesen av thyreoideahormoner. Hvilket hormon er det aktive? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Syntesen består av fem trinn # Opptak og konsentrering av jodid (I^^-^^) i gl. thyreoidea # Oksidasjon av I^^-^^ til I^^+^^ (jodinium-ion) ved enzymet tyreoperoksidase (TPO) # Jodinering av tyrosin i tyreoglobulin (TPO) # Kobling av mono- og dijodert tyrosin (ved TPO?) # Proteolyse av tyreoglobulin og frigjøring av T3 og T4 T3 er det aktive hormon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bør kjenne til minst tre av trinnene (2 poeng), samt at T3 er det aktive hormon (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Tidligere vignett En kvinne på 40 år oppsøker fastlegen på grunn av hjertebank og svetting/økt varmefølelse de siste månedene. Hun har gått litt ned i vekt til tross for at hun spiser mer enn vanlig. Hun har også utviklet struma. Blodprøver viser at hun har høye verdier av fritt tyroksin (fT4) og trijodtyronin (fT3), mens thyreoideastimulerende hormon (TSH) er lavt (under referanseområdet). Det påvises også høyt nivå av antistoff mot TSH-reseptor i blodet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan forklarer du pasientens blodprøvesvar? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <img src="ICD-2020s-2-A.jpg" /> Det er påvist antistoffer mot TSH-reseptor som medfører økt syntese av thyreoideahormoner. Høye nivåer av T3 og T4 hemmer utskillelsen av TSH, (mens lave nivåer medfører økning av TSH). Det er i hovedsak T3 som er regulatoren. T3 har en negativ feedback både på hypofyse og hypothalamus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må kjenne til effekten av antistoffer mot reseptoren og feedbackreguleringen via hypothalamus og hypofyse for å få full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Tidligere vignett En kvinne på 40 år oppsøker fastlegen på grunn av hjertebank og svetting/økt varmefølelse de siste månedene. Hun har gått litt ned i vekt til tross for at hun spiser mer enn vanlig. Hun har også utviklet struma. Blodprøver viser at hun har høye verdier av fritt tyroksin (fT4) og trijodtyronin (fT3), mens thyreoideastimulerende hormon (TSH) er lavt (under referanseområdet). Det påvises også høyt nivå av antistoff mot TSH-reseptor i blodet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan forklarer du pasientens symptomer på bakgrunn av thyreoideahormonenes effekter? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Effekter av T3: * Stimulerer varmeproduksjonen og regulerer energiomsetningen * Øker det sympatiske nervesystemets virkning * Stimulerer impulsledningshastigheten i nervesystemet Som følge av disse effektene vil overproduksjon av thyreoideahormoner medføre svetting, vekttap, hjertebank </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bør ha med alle disse tre punktene for full pott, to gir to, en gir ett poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan transporteres thyreoideahormonene i blodbanen og hvordan transporteres de inn i cellen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Transport i blodbanen: ** T3 og T4 er bundet til proteiner i plasma: *** tyroksinbindende globulin (TBG) 70-80% *** transtyretin (prealbumin) *** albumin * Transport over cellemembranen: ** Spesifikke TH- transportere *** Monocarboxylate transporter (MCT)8 *** MCT10 *** Organic anion-transporting polypeptide (OATP1C1) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må minst kjenne til TBG for transport i blodbanen og at transport inn i cellen skjer ved spesifikke transportere for å få full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken effekt har thyreoideahormonene på karbohydratmetabolismen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Stimulerer karbohydratmetabolismen: * Økt glykolyse * Økt glukoneogenese </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Må ha med begge effekter for full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fragilt X-syndrom affiserer ca. 1 av 4000 levendefødte gutter. Symptomene omfatter ofte mild mental retardasjon, og pasientene har ofte et særpreget utseende. Syndromet ble tidligere klassifisert som X-bundet dominant – med variabel ekspressivitet og muligens redusert penetrans. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva menes med begrepene variabel ekspressivitet og redusert penetrans i denne sammenheng? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ''Variabel ekspressivitet'': Individer med samme mutasjon utviser ulik grad av sykdom (debutalder, alvorlighetsgrad). ''Redusert penetrans'': Ikke alle som har samme mutasjon uttrykker sykdommen. F.eks. 80% penetrans innebærer at 20 av 100 med mutasjon ikke uttrykker sykdommen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig svar (totalt 2 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fragilt X-syndrom skyldes i mer enn 98% av tilfellene ekspansjon av en trinukleotid-repetisjon (CGG) i 5’ utranslaterte del av FMR1-genet. I normal-alleler er lengden <55 CGG repetisjoner. Ekspansjon til >200 CGG repetisjoner er i de fleste tilfeller forbundet med bortfall av transkripsjon av genet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken mekanisme er involvert som fører til at transkripsjonen opphører? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ekspansjon til >200 CGG-repetisjoner er assosiert med hypermetylering av cytosiner i CGG repetisjonene (i CpG kontekst) til 5-metylcytosin (5meC). Dette fører igjen til rekruttering av metylbindende proteinkomplekser som modifiserer histoner/nukleosomer slik at det dannes en tett kromatinstruktur, som også omfatter genets promotor. I en slik tett kromatinstruktur kan ikke nødvendige transkripsjonsfaktorer bindes til promotoren, og transkripsjonen av genet opphører. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å forklare at CpG metylering er involvert. 1 poeng for å forklare at dette fører til dannelsen av en tett kromatinstruktur som hindrer transkripsjon. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett PCR (eng. //polymerase chain reaction//) kan anvendes til å bestemme temmelig nøyaktig lengden på CGG repetisjonen hos personer med mistanke om Fragilt X-syndrom. Likevel er denne metoden ikke tilstrekkelig til å si med sikkerhet at FMR1-genet er inaktivert. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er det sånn? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> PCR-analysen kan fortelle om lengden er ≤200 CGG repetisjoner – eller >200 repetisjoner. PCR-analysen forteller imidlertid ingenting om metyleringsstatusen i genet, og hvor hypermetylering er den egentlige årsaken til at genet inaktiveres. PCR er en //in vitro//-metode som er upåvirket av metyleringsstatus av cytosin i templatet. (For å sjekke metyleringsstatus anvendes som regel kutting av DNA med metyleringssensitive restriksjonsenzymer, etterfulgt av Southern blot analyse. Alternativt kan en nå anvende metyleringsanalyse med next generation DNA sekvensering. En tredje metode er RT-PCR (reverse transcription-PCR, som kan anvendes for å se om mRNA er uttrykt – og danner utgangspunkt for neste spørsmål). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar på den del av svaret som beskriver at PCR, når anvendt for kun å detektere lengde, ikke kan si noe om metyleringsstatus i genet – som er den direkte årsaken til at gentranskripsjonen inaktiveres. Selv ved >200 CGG-repetisjoner må man verifisere at genet faktisk ikke er uttrykt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett FMR1-genet er normalt også uttrykt i hvite blodceller </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken metode ville kunne være egnet for å demonstrere at FMR1-genet med stor sannsynlighet ikke var uttrykt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # RT-PCR (reverse transcription-PCR) anvender RNA som templat og kan anvendes for å påvise om FMR1 mRNA er til stede i blod eller isolerte hvite blodceller. Negativ test ville indikere at genet ikke er uttrykt. # Påvisning av FMRP (FMR1 proteinet) i hvite blodceller ved bruk av spesifikke antistoffer. Negativ test ville indikere at genet ikke er uttrykt. (I begge tilfeller måtte man inkludere egnede og validerte positive kontroller). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å nevne minst en av disse Om ingen av metodene over nevnes, så kan det gis 1 poeng om studenten beskriver en annen metode som enten 1) bruk av metyleringssensitive restriksjonsenzymer etterfulgt av Southern blot analyse – eller 2) beskriver hvordan metyleringsstatus kan analyseres ved bisulfittbehandling og next generation sequencing, men det forventes ikke at studentene har detaljkunnskap om disse metodene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I en familie har far blitt påvist å være en pre-mutasjonsbærer med 150 CGG-repetisjoner i FMR1-genet (premutasjon: 55-200 CGG repetisjoner). Mor har normal lengde på sine repetisjoner (henholdsvis 17 og 26). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du vurdere risikoen for å få Fragilt X-syndrom for 1) en sønn, 2) en datter og 3) en sønn av denne datteren (barnebarn)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Sønnen har ingen eller svært lav risiko siden han arver sitt X-kromosom fra mor (som har <50 repetisjoner). # Datteren har liten risiko siden det er far som er bærer av premutasjonen (CGG ekspansjonen skjer primært i oogenesen, og ikke i spermatogenesen). Selv om datteren vil arve X-kromosomet fra far, så er det liten sannsynlighet at FMR1-allelet har økt i lengde til fullmutasjon (>200 CGG repetisjoner). # Det er 50% sjanse for at en sønn av denne datteren vil arve et FMR1 allel som nå med stor sannsynlighet har ekspandert til en full-mutasjon i oogenesen – det vil derfor være ca. 50% sannsynlighet for Fragilt X-syndrom. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig delspørsmål (til sammen 3 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En stor kjønnsforskjell i antall affiserte personer er ofte karakteristisk for X-bundne sykdommer. Noen autosomale sykdommer kan også utvise store kjønnsforskjeller, et fenomen kjent som kjønnsbegrensning. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan du best, uten å kjenne selve mutasjonen eller teste etter mutasjonen, finne ut om en sykdom er autosomal heller enn X-bundet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dersom en i familiestudier kan påvise overføring av sykdommen fra far til sønn, så vil dette utelukke X-bundet arv (siden en gutt arver sitt X-kromosom fra mor). (Her er vi ikke på jakt etter å direkte påvise mutasjonen på et av de autosomale kromosomene). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Rett svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En pasient kommer til undersøkelse hos fastlegen og forteller om lammelse i halve ansiktet de siste dagene og problemer med å lukke det ene øyet på samme side. Fastlegen gjør en nevrologisk undersøkelse med fokus på noen av hjernenervene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Med tanke på pasientens symptomer, hvilke spesifikke hjernenerver kan det her være aktuelt å undersøke? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienten forteller om motorisk lammelse i halve ansiktet og motoriske øyesymptomer. Her er det derfor viktig å sjekke flere hjernenerver og som minimum: * III: Nn. oculomotorius. * V: N. trigeminus. * VII: N. facialis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av nervene som er nevnt. Det gir ikke fratrekk i poeng hvis man nevner flere enn disse, men dersom alle 12 hjernenervene blir nevnt utgjør dette kun 0,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved nevrologisk undersøkelse finner fastlegen at pasienten har svakhet i både øvre og nedre ansiktshalvdel, med utvisking av nasolabialfuren, asymmetrisk smil, redusert evne til å løfte øyebryn, rynke panne og knipe sammen øyet. Det var ingen øvrig hjernenerveaffeksjon eller andre nevrologiske utfall. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken hjernenerve er affisert og hva er den sannsynlige diagnosen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> VII: N. facialis. (Idiopatisk) perifer facialisparese (Bells parese) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å nevne N. facialis og 0,5 poeng for å nevne perifer facialisparese (Bells parese). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fastlegen undersøker spesifikt om lammelsen rammer både øvre og nedre halvdel av ansiktet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort (maks 10 setninger) hvorfor det er viktig å avklare utbredelsen av lammelsen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er viktig å avklare om det er en sentral eller perifer facialisparese. Sentral facialisparese rammer bare nedre del av ansiktet, pannen er spart. Sentral facialisparese kan skyldes en skade eller sykdom i den forbindelsen som finnes mellom ansiktsområdet i hjernebarken og ansiktsnervens utspring i hjernestammen. Årsaken kan være hjerneslag, hjernesvulst eller en annen sykdom eller skade i hjernen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å beskrive at og hvordan det skiller mellom perifer og sentral årsak. 0,5 poeng for å nevne skade i hjernen. Maks 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tre av hjernenervene våre kalles samlet for øynenes bevegelsesnerver. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles disse tre hjernenervene og beskriv kort hvilke muskler de innerverer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * 3. hjernenerve, nervus oculomotorius. Forsyner den øverste rette øyemuskel (musculus rectus superior), den nederste rette (musculus rectus inferior), den innerste rette (musculus rectus medialis) og den nederste skrå øyemuskel (musculus obliquus inferior). Denne hjernenerven forsyner også den muskelen som hever øvre øyelokk (musculus levator palpebrae). * 4. hjernenerve, nervus trochlearis. Forsyner den øverste skrå øyemuskel (musculus obliquus superior). * 6. hjernenerve, nervus abducens forsyner den ytterste rette øyemuskel (musculus rectus lateralis). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for å navngi hver av hjernenervene. 0,5 poeng for å nevne musklene de innerverer, og man må nevne minst 2 muskler til 3. hjernenerve </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et hypofyseadenom er en tumor som utgår fra hypofysen og som kan affisere synsnerven </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv i korte trekk synsbanen (formidling av synsinntrykk fra nervus opticus til synscortex) og angi hvilken type synsfeltutfall en hypofysesvulst kan forårsake </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> <img src="images/ICD-2020s-4-A.jpg" /> En hypofysesvulst kan vokse inn i chiasma og gi bitemporal hemianopsi; samtidig synsfeltutfall til høyre for det høyre øyet og til venstre for det venstre øyet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,75 poeng for å tegne eller beskrive synsbanen i grove trekk; nervus opticus (synsnerven), chiasma (synsnervekrysningen), tractus opticus (synstrakten), thalamus (evt. corpus geniculatum laterale (knekroppen)), radiatio optica (synsnervestrålingen) og area striata (synscortex) bør nevnes. 0,75 poeng for å angi at en hypofysesvulst vil vokse inn ved chiasma og gi bitemporal hemianopsi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Et hypofyseadenom kan også vokse inn i sinus cavernosus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hjernenerver og grener av hjernenerver kan bli affisert ved tumorinnvekst i sinus cavernosus? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * 3. Nervus oculomotorius * 4. Nervus trochlearis * 5. Nervus trigeminus; 1. gren n. ofthalmicus og 2. gren n. maxillaris * 6. Nervus abduscens </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,3 poeng for å navngi hver av hjernenervene. Begge grener av nervus trigeminus må nevnes for å gi 0,6 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 70 år gammel mann kommer til deg som LIS1 i allmennpraksis. Han har blitt sendt av kona som de siste 10 årene har angitt at han responderer dårlig når hun snakker til ham. Han har siden 18-års alder jobbet som snekker på store byggeplasser, men brukt hørselsvern kun fra 50-årsalder. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvilke deler av hørselssystemet som kan få skade ved 1) kronisk støypåvirkning og 2) presbyakusis (aldersbetinget hørselssvekkelse), og angi patogenesen for presbyakusis. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Kronisk støypåvirkning kan skade hårcellene i cochlea, fortrinnsvis nærmest mellomøret der diskanthørselen formidles # Alderdomshørselssvekkelse kan skade hårcellene i cochlea og nervefibrene, både nærmest mellomøret der diskanthørselen formidles, men også lenger opp i cochlea der mellomfrekvensene formidles Det er 3 forskjellige mekanismer: # Nedbrytning av hårcellene basalt i cochlea # Nedbrytning av stria vaskularis (blodtilførselen) # Nedbrytning av nervefibrene i cochlea </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av de to beskrivelsene av skade. For 1) holder hårcellene i cochlea og for 2) holder hårcellene i cochlea eller nervefibrene i cochlea. 0,5 poeng for 1 av 3 mekanismer rett. 1,0 poeng for 2 av 3 rett. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort (stikkordsmessig) hvordan lydoverføringen skjer fra en lydkilde utenfor øret til lyd oppfattes i hørselskorteks. Angi alle lokaliseringer der det skjer overføring av lydenergi og hvordan dette skjer </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Fra en lydkilde utenfor øret oppstår lydbølger (lydtrykkvariasjon) som beveger seg inn gjennom øregangen # Trommehinnen og de 3 mellomørebeina (hammeren, ambolten og stigbøylen) settes i bevegelse # Bølgebevegelse i væsken i cochlea setter hårcellene i bevegelse. (Bølgebevegelse i perilymfen i øvre hulrom (scala vestibuli) i cochlea (sneglehuset) til toppen (apex) av cochlea og ned gjennom nedre hulrom i cochlea (scala tympani) samt fra øvre hulrom tvers gjennom midtre hulrom (ductus cochlearis) til nedre hulrom). # Bøyning av flimmerhår på hårcellene, åpning av K^^+^^ kanaler, depolarisering av hårcellen, åpning av Ca^^2+^^ kanaler. # Transmittorsubstans i synapsen ved hårcellen initierer nervesignal gjennom hørselsnerven til cochleariskjernene i hjernestammen. # Fra synapse i cochleariskjernene overføres nervesignalene til de sentrale hørebaner, de aller fleste nervene krysser midtlinjen på vei til neste synapsepunkt som er oliva superior i hjernestammen # Fra synapse i oliva superior går nervesignalene til hørselskorteks via 2 andre synapsepunkter, colliculus inferior og corpus geniculatum mediale. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av de 7 delpunktene: # Fra lydkilde dannes lydbølger gjennom øregangen # Trommehinnen og de 3 mellomørebeina settes i bevegelse # Bølgebevegelse i væsken i cochlea setter hårcellene i bevegelse. # Bøyning av flimmerhår på hårcellen, åpning av K^^+^^ kanaler, depolarisering av hårcellen, åpning av Ca^^++^^ kanaler, transmittorsubstanser i synapsen. # Fra synapse ved hårcellen initieres nervesignal gjennom hørselsnerven til cochleariskjernene i hjernestammen. # Fra synapse i cochleariskjernene nervesignal til oliva superior i hjernestammen, de aller fleste krysser midtlinjen. # Fra synapse i oliva superior nervesignal til hørselskorteks. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasientens rentoneaudiogram er nærmest normalt til og med 2000 Hz (20 dB eller bedre), deretter faller høreterskelkurven brått til dårligst 80 dB ved 8000 Hz. <<imgLink "ICD-2021-1-A.PNG">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mest sannsynlig årsak til pasientens hørselstap? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kronisk støyskade etter mange års arbeid i bygningsindustrien uten bruk av hørselsvern. Bratt fall i høreterskelkurven er karakteristisk for støyskade og avgjørende for å skille støyskade fra presbyakusis. Alternativt svar: Presbyakusis gir også dårligst hørsel i diskanten, men da er det typisk slakkere fall på høreterskelkurven. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1,0 poeng: Kronisk støyskade etter mange års arbeid i bygningsindustrien uten bruk av hørselsvern 0,5 poeng: Bratt fall i høreterskelkurven er avgjørende for å skille støyskade fra presbyakusis. Angis presbyakusis pga. diskanttap gis 1,0 poeng totalt på oppgaven. //Kommentar til eksamenskommisjonen og sensor: Noen vil kanskje kommentere at «bratt» og «slakt» fall på høreterskelkurven er lite presist i en fasit. I klinisk audiologi har vi grenser på stigningstallet til hørselskurven for å skille bratt og slakt fall på høreterskelkurven som bl.a. brukes i forsikringssaker, men stigningstallet på høreterskelkurven faller utenfor studentenes pensum.// </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi den mest aktuelle hørselsforbedrende behandlingen for hver av tilstandene kronisk støypåvirkning og presbyakusis (aldersbetinget hørselssvekkelse). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> For begge tilstandene er høreapparat hovedbehandlingen. Dessuten aktuelt med hørselsteknisk tilleggsutstyr som teleslynge eller liknende tilleggsutstyr. Alternativt svar ved presbyakusis: Samtaleforsterker ved betydelig nedsatt kognitiv funksjon. Alternativt svar for kronisk støyskade: Støydempning av støykilden og/eller hørselsvern som sekundærprofylakse mot ytterligere hørselstap </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av tilstandene. Kun høreapparat gir full score. Kun hørselsteknisk tilleggsutstyr gir 0,25 poeng for hver av tilstandene. De alternative svarene gir 0,25 poeng (for hver av tilstandene). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi en utfordring ved behandlingen for hver av tilstandene presbyakusis og akutt/kronisk støyskade. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ved presbyakusis kan nedsatt talediskriminasjon redusere nytten av høreapparat. Dessuten kan nedsatt kognitiv funksjon redusere evnen til nødvendig innlæring av nytt lydbilde og vanskeliggjøre håndtering av et teknisk utstyr som høreapparat. Ved akutt støyskade kan frekvensområdet med hørselstap være så smalt at høreapparat blir vanskelig å innstille godt nok til at det gir hørselsforbedring. Ved akutt/kronisk støyskade kan fallet i høreterskelkurven være så bratt at høreapparatet ikke gir bedre hørselsfunksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver av tilstandene. Tilstrekkelig med et svar for hver av tilstandene for full score. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du tenke deg en utfordring ved den hørselsforbedrende behandlingen av den aktuelle pasienten som ikke skyldes hørselstapet? Har du et forslag til å løse denne utfordringen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienten kan være lite motivert for høreapparat ettersom det var kona som sendte ham til legen. Du kan sannsynligvis bedre hans motivasjon for høreapparatbruk hvis du forteller at nedsatt kognitiv stimulering ved hørselstap øker risikoen for demensutvikling og at høreapparatbruk kan motvirke demensfaren. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En ung mor kommer til deg som fastlege med sitt barn på 3 mnd. Barnet gråter og virker utilpass. Far til barnet er på jobbreise de neste 3 ukene. De har også et barn på 7 år som går 2. trinn på barneskolen. Mor er sliten, gråter under samtalen, har ikke sovet mer enn 3 timer i døgnet den siste uka. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi hvilke elementer som inngår i en generell psykiatrisk status presens ved vurderingen av moren. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Førsteinntrykk/ fremtoning (kontaktfunksjon, hygiene, påkledning) * Orientering * Bevissthet * Kognitive funksjoner * Emosjoner/affekt/selvoppfatning * Hukommelse * Tale * Psykomotorikk * Tvang * Persepsjon/hallusinasjoner * Tankeforstyrrelser * Suicidalitetsvurdering </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig punkt, inntil 3 poeng totalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du finner at mor har en fødselsdepresjon </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På hvilken måte kan mors fødselsdepresjon kan innebære en risiko for barnets sosio-emosjonelle utvikling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det vil være risiko for at en deprimert mor ikke greier å være en tilstrekkelig emosjonell støtte for barnets tidlige utvikling * Vansker med å reagere på barnets signaler som gråt og uro * Manglende oppmerksomhet på barnets positive emosjoner * Mest fokus på barnets negative emosjoner * Risiko for tilknytningsvansker hos barnet * Mor emosjonalitet med stemmebruk og ansiktsuttrykk kan påvirke samspillet negativt * Kan være en begynnende negativ transaksjonsprosess som kan få konsekvenser på lang sikt både for barnet og for mor </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, inntil 2 poeng totalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv faktorer i svangerskapet som kan påvirke utviklingen av fosterets hjerne </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Maternelle faktorer (Infeksjoner, strukturelle intrauterine forhold, mors livsstil, ernæring og bruk av rusmidler inkl røyk, sykdom inkl svangerskapsrelatert sykdom (eks preeklampsi)) * Faktorer ved barnet (genetiske avvik, misdannelser, infeksjoner (sekundært til infeksjon av mor)) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, inntil totalt 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett To uker senere kommer mor tilbake sammen med datteren på 7 år. Hun har vansker med å sovne om kvelden og er mye sint på dagtid. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du legge til rette og forberede deg for å kartlegge psykisk status presens av jenta? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Sikre at barnet føler seg trygt, snakke med barnet sammen med forelder, snakke til forelder på en respektfull måte foran barnet * Ha nok tid * Snakk til barnet på dets eget nivå, bruk barnets ord, bruke konkret språk * Ting å aktivere barn med på kontoret: tegnesaker, leker, bøker * Vite hva som er normalt for ulike aldre i forhold til kognisjon, motorikk, språk, atferd og samspill med foreldre/omsorgspersoner * Generalisere vansker «det er vanlig at barn..» </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, inntil totalt 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er annerledes ved å vurdere psykisk status presens hos et barn sammenlignet med hos voksne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Alder og utviklingsnivå – evne til å sette ord på egne vansker og symptomer * Prevalens av psykiske sykdommer * Hvem gir informasjon – komparenter * Observasjon av atferd, samspill med forelder * Motivasjon – ønsker hjelp selv eller andre som ønsker bedring? * Grad av selvinnsikt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig faktor, inntil 1 poeng totalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Virus kan kalles for obligate intracellulære molekylære parasitter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi en kort beskrivelse av de syv trinnene i et virus’ livssyklus </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Binding # Entring («entry») # Frisetting av genom («uncoating») # Biosyntese av genom og proteiner # Partikkeldannelse («assembly») # Frigjøring fra vertscelle («exit», «release») # Modning </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for 6 av punktene, 1 poeng for tre av dem osv </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Virus inndeles på flere måter. Den mest brukte klassifiseringen baserer seg på virusgenomenes bestanddeler og kalles Baltimore-klassifiseringen, oppkalt etter David Baltimore som fikk Nobelprisen i medisin i 1975. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke karakteristika ved virus’ genomer baserer denne klassifiseringen seg på? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # DNA og RNA # Dobbelttrådet eller enkelttrådet # For RNA-virus: positiv og negativ polaritet # Revers-transkriberende virus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for de tre første. Punkt fire kan kompensere hvis punkt tre mangler </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Virus er ofte svært kresne med hvilke arter og hvilke celler de infiserer. De fleste infiserer kun én art, og kun et fåtall celler hos denne arten. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan forklare denne høye spesifisiteten i interaksjonen mellom virus og vert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bindingen mellom virus og målcelle medieres av interaksjon mellom overflatemolekyler på både viruset og målcellen. Dette er ofte glykoproteiner på virusets overflate. På celleoverflaten kan dette være flere typer molekyler (proteiner og/eller karbohydrater), og kalles her reseptorer og koreseptorer. Cellens permissivitet er også en faktor her (medfødt immunitet, transkripsjonsfaktorer, celledelingsfase m.m). En permissiv celle lar virus omgå eller modulere dens innebygde cellulære forsvaret. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Overflatemolekyler på virus (0,5 poeng), reseptor og koreseptor (0,5 poeng) på celleoverflaten. Oftest svært spesifikk binding (0,5 poeng). Evolusjonære betraktninger og omtale av cellens permissivitet (kan også kompensere for mangler ellers i besvarelsen) (0,5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett HIV-viruset er et eksempel på et slikt kresent (eller spesifikt) virus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken celletype er den primære målcellen for HIV-viruset? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> CD4- lymfocytter/T-hjelpe-celler/T-lymfocytter </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> CD4-celler/T-hjelpe-celler er mest presist og gir 1 poeng, Tlymfocytter er mindre presist og gir 0,5 poeng, tilsvarende gir lymfocytter 0,5 poeng og leukocytter eller hvite blodlegemer 0,5 poeng. Makrofager og mikroglia kan gi 0,5 poeng. Viruset kan infisere disse cellene, men dette er ikke de primære målcellene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett HIV-virusets binding til målcellen kjenner vi i detalj. Denne er en kompleks interaksjon som omfatter minst fire proteiner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan denne interaksjonen er mellom to virusproteiner og to overflatemolekyler på cellemembranen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Virusproteinene (glykoprotein) gp41 og gp120 danner henholdsvis hals og hode på molekylet som binder seg til cellens reseptor. Binding skjer både til reseptor og en såkalt koreseptor (hhv CD4 og CCR5/CXCR4). Bindingen utløser konformasjonsforandringer i proteinene som fører til at virusets membran føres mot cellens membran og man får fusjon mellom membranene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Overflateprotein på viruset samt «reseptor» og «koreseptor» på celleoverflaten samt «fusjon» må beskrives og gir 0,5 poeng. Hvis man nevner gp41, gp120 og CD4 får man 0,5 poeng til. CCR5/CXCR4 forventes ikke, men nevner man dette kan det erstatte andre mangler i besvarelsen. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Cellekjernen er arena for vertscellens gen-replikasjon, men de fleste RNA-virus har en livssyklus der vertscellens cellekjerne ikke er direkte involvert. Det vil si at virusets genom er ikke innom cellekjernen der vertscellens replikasjon foregår. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan er dette mulig? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> RNA-virus’ genom kan fungere direkte som mRNA og starte proteinsyntesen umiddelbart ved RER (ru endoplasmatisk retikulum) i cytoplasma. Andre RNA-virusgenomer har negativ polaritet, men bringer med seg et enzym (RNA-polymerase) som sørger for at mRNA-syntesen skjer i cytoplasma. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Omtale av RNA-avhengig RNA-polymerase, av at genomet kan fungere som mRNA, og at det går direkte til RER eller proteinsynteseapparatet i cytoplasma gir full score – 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er fastlege og en 38 år gammel kvinne kommer til deg på legekontoret den 2. april. Hun forteller at hun tror hun er gravid, fordi hun har tatt en positiv graviditetstest hjemme. Hun sier at hun ikke bruker prevensjon, har regelmessig menstruasjon og at siste menstruasjon startet 12. februar </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor langt kommet i svangerskapet vil du anta at kvinnen er ut fra siste menstruasjon? Omtrent hvor gammelt vil du anta at embryoet er (regnet fra fertilisering)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 7 uker (7+0) og ca 5 uker </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng 7 uker og ½ poeng for 5 uker </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen spør om hjertet har begynt å slå enda. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Har embryoets hjerte begynt å slå? Hvilken dag etter fertilisering og omtrent hvilken dag etter siste menstruasjon begynner hjertet å slå? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, hjertet har begynt å slå. Dag 22 etter fertilisering og ca dag 32 etter siste menstruasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ poeng for ja på hjertet * ½ poeng for da 22 * ½ poeng for ca dag 32 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen forteller videre at svangerskapet ikke var planlagt og at hun ikke har brukt folat-tilskudd. Hun lurer på om det er noe vits i å begynne med det nå. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor er det anbefalt å bruke folat i svangerskapet? Ut fra dine antagelser om hvor langt kvinnen har kommet i svangerskapet og dine kunnskaper om den embryonale utvikling; vil du anbefale henne å begynne med folat? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er anbefalt å bruke folat i svangerskapet for å forebygge nevralrørsdefekter og leppe/kjeve/ganespalte. Nevralrøret vil være lukket på dette tidspunktet, men ikke leppe/kjeve/gane. Det er anbefalt å bruke folat i første trimester (første 12 uker) så ja, ville anbefalt å begynne med folat. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for hvorfor (ev ½ for nevralrør defekter + ½ for l/k/g) * ½ poeng for ja til å anbefale folat </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv i korte trekk ansiktets utvikling i svangerskapet fra tidlig embryoutvikling. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Utvikles hovedsakelig mellom uke 4-8 Underkjeven utvikles først Det ferdige ansiktets proporsjoner utvikles helt til fødsel, og fortsetter utviklingen også etter fødselen og helt til voksen alder (f.eks tenner, bihuler, skjelett) * Tidlig i uke 4 oppstår det fem folder i ansiktet” primordial swellings” * For det meste bestående av mesenchyme fra neural crest * Foldene formes rundt ”stomodeum" * 1 frontonasal prominence * 2 maxillære prominenser * 2 mandibulære prominenser Munnen dannes først, men med en membran som senere brytes ned for å opprette forbindelse til GI traktus) Neseborene dannes etter munnen. Ganen er ikke fullstendig lukket før uke 10 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ poeng for tidsperspektiv (uke 4-8 + at utvikler seg til voksen) * ½ poeng for primordial swellings og mesenchyme fra neural crest * ½ poeng for de 3 prominencene * ½ poeng for munnen først, deretter nesen og at ganen ikke lukkes fullstendig før uke 10 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kvinnen forteller videre at hun har drukket MYE alkohol ved to anledninger etter siste menstruasjon og før hun fant ut at hun var gravid. Hun lurer på om det er fare for at embryoet er skadet </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil du svare? Hvor mye alkohol regnes som trygt å drikke i svangerskapet for å være sikker på at fosteret ikke tar skade? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vi vet ikke om embryoet kan ha tatt skade av dette. Vi anbefaler ikke abort på bakgrunn av dette. Vi vet ikke om noen grense for trygt alkoholinntak i svangerskapet og anbefalingen er derfor totalavhold hele svangerskapet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ poeng for vet ikke om embryoet har tatt skade * ½ poeng for ikke anbefale abort * ½ poeng for vet ikke om grense for trygt inntak * ½ poeng for anbefaler totalavhold </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dersom du skulle få mistanke om at denne kvinnen misbruker alkohol eller andre rusmidler og vil fortsette med dette i svangerskapet, hva er dine oppgaver som fastlege? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Være fastlege for mor og foster, informere, veilede Melde fra til sosialtjenesten (ikke fastlegens jobb å tvangsinnlegge) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for være fastlege, informere, veilede * 1 poeng for melde til sosialtjenesten </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er fastlege, og en av dine pasienter (en 23 år gammel mann) har nettopp vært innlagt på Medisinsk avdeling på grunn av slapphet og diffuse plager i flere år. Han har ingen kjente sykdommer fra før. Han har nå fått diagnosen «Fanconi syndrom», og i en lang og komplisert epikrise merker du deg følgende beskrivelser/kommentarer: * Metabolsk acidose * Hypokalemi * Glukosuri * Polyuri </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags type sykdom er Fanconi syndrom, det vil si hvilket organ/substruktur/celletype er affisert? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En generell dysfunksjon av tubuluscellene i proximale tubulus i nyre. Dette kan man resonere seg frem til når man kjenner til hvordan tubulusfunksjonene er plassert langs nefronet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Proximale tubulus i nyre må spesifiseres for å gi poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gjør kort rede for begrepene pH, acidose og alkalose, og forklar kort og prinsipielt hvordan metabolsk acidose og metabolsk alkalose oppstår. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * pH er en logaritmisk skala for konsentrasjonen av H^^+^^-ioner i blodet * normal pH er 7,4, acidose <7,35 alkalose >7,45 * metabolsk acidose skyldes overproduksjon av syre i kroppen * metabolsk acidose kan skyldes manglende evne til å filtrere ut syre i nyrene * metabolsk acidose kan også skyldes manglende evne til å reabsorbere og / eller produsere bikarbonat i nyrene * metabolsk acidose kan skyldes gastrointestinale tap av bikarbonat * metabolsk alkalose skyldes ofte bruk av diuretika som fører til dehydering og elektrolyttforstyrrelser som stimulerer nyrene til økt bikarbonat reabsorbsjon * metabolsk alkalose kan skyldes tap av syre ved brekninger eller bruk av nasogastrisk sonde slik at kroppen taper H^^+^^ og klorid ioner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hvert av punktene ovenfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke mekanismer har kroppen for å motvirke acidose? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> I prinsippet har vi følgende mekanismer for å motvirke acidose: # ''Bikarbonat/CO2 buffersystemet'': Dette er det viktigste systemet ettersom det kan endres (justeres opp/ned etter behov): #* Kontroll/endring av CO2 innholdet i blodet ved å endre ventilasjonen slik at karbonsyre likningen forskyves #* Kontroll/endring av HCO3 (bikarbonat) innholdet i blodet ved at nyrenes utskilling / reabsorbsjon av bikarbonat endres # ''Protein buffer'': ulike aminosyrer i både intra- og ekstracellulære proteiner har muligheten til å binde til seg H^^+^^. Hemoglobin er det viktigste proteinet. # ''Fosfat buffer'': både organisk og uorganisk fosfat har god evne til å binde H^^+^^ # ''Ammonium buffer i urin'': viktig mekanisme for å regulere endringer i syrebase ettersom man påvirker hvor mye syre som fjernes fra kroppen, ikke bare midlertidig bufring. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for 1, 0,5 p for 2, 0,25 p for 3 og 0,25 p for 4 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke transportmekanismer som prinsipielt finnes for å reabsorbere molekyler fra tubulus-lumen (0.5 p for hver mekanisme). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * ''ATP-krevende aktiv transport'' ved hjelp av relativt store proteiner som sitter i cellemembranen og som ved å endre form eller lokalisering transporterer molekylet til innsiden (ATPase). Dvs en primær aktiv transport imot konsentrasjonsgradienten. * ''Co-transportere (synporter)'' som frakter to ulike molekyler inn samtidig uten bruk av ATP (sekundær aktiv transport). Dette skjer ved at ett av molekylene transporteres med sin konsentrasjons- eller elektrokjemiskegradient (downhill) og får selve transporten til å skje, mens det andre molekylet som er koblet på utnytter denne bevegelsen og transporteres mot sin konsentrasjonsgradient (uphill). * ''Counter-transportere (antiporter)'' er helt likt cotransporterne beskrevet ovenfor bare at transporten av de to molekylene foregår i motsatt retning av hverandre (en inn og en ut av cellen). - Kanaler er cellemembranproteiner med en åpning/tunell som i de fleste tilfeller kan åpnes og lukkes ved hjelp av ulike signaler, og som gjør at en elektrolytt kan passivt strømme gjennom (ned sin gradient). * ''Osmose'': vann reabsorberes ved at det strømmer inn paracellulært gjennom tight junctions langs den osmotiske gradienten. Da vil det også følge med småmolekylære stoffer. * ''Pinocytos(=endocytose)'': store molekyler blir reabsorbert ved at de fester seg til børstesømmen som invagineres og snøres av. Vesiklen kan enten tømme seg intracellulært for nedbrytning eller tømme innholdet til utsiden ved å fusjonere med cellemembranen på den basolaterale siden (exocytose). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert av punktene ovenfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvor og hvordan filtrert K^^+^^ reabsorberes. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # K^^+^^ reabsorberes stort sett i proximale tubulus og Henles sløyfe (kun 10% lenger distalt) # Reabsorbes passivt ved at Na^^+^^ pumpes aktivt inn i tubuluscellene og videre til interstitiet og dermed dras vann og K^^+^^ inn paracellulært (mellom cellene) og inn til interstitiet # Økende elektropositivitet i tubulusvæsken litt lenger distalt i proximale tubulus bidrar også til at K^^+^^ diffunderer ut fra tubuluslumen og mellom cellene til interstitiet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for punkt 1 og 3, 0,5 poeng for punkt 2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvor og hvordan glukose reabsorberes </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Nær fullstendig i første del av proximale tubuli # SGLT2 pumper Na^^+^^ og glukose inn i tubuluscellene # Glukose kan metaboliseres til ATP eller pumpes videre ut i intersitiet (GLUT2), for så å fraktes bort med blodet. # Stor kapasitet, fullstendig reabsorpsjon opp til glukoseterskel på ca 11-12 mM i blod, som tilsvarer definisjonen av diabetes (ikke-fastende prøve) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 p for hvert av punktene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Øyet er sanseorganet som reagerer på lys, og synet er nok menneskets viktigste sans. Oppbygningen av øyet er kompleks, og kunnskap om dette er viktig i diagnostisk og terapeutisk øyemed. Kornea er den strukturen i øyet der det meste av øyets lysbryting skjer, og sykdom og skader av korneas ulike lag kan gi svekket syn. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke lag består kornea av? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lag i kornea fra ytterst og innover: # Epithelium anterius corneae (korneaepitelet) # Lamina limitans anterior (Bowmanns lag) # Substantia propria corneae (korneastroma) # Lamina limitans posterior (Descemets membran) # Epithelium posterius (endothelium camerae anterioris) NB! Det er også rapportert et sjette lag, //Duas lag//, liggende mellom stroma og Descemets membran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 0,5 p for hvert lag, i alt 2,5 p. Ang. //Duas lag//: Dette er nevnt i kursmanualen, så det er mulig noen studenter vil kunne nevne dette laget. Om noen skulle nevne dette i stedet for et av de andre ovenfornevnte lagene, så vil det gi 0,5 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv hvordan noen av lagene i kornea fortsetter over i andre anatomiske strukturer perifert for limbus. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Epithelium anterius corneae (korneaepitelet) går i limbus over i konjunktiva # Lamina limitans anterior (Bowmanns lag) ender i limbusregionen, men noen beskriver at det går over i konjunktivas substantia propria og Tenons kapsel # Substantia propria corneae (korneastroma) går over i sklera # Lamina limitans posterior (Descemets membran) ender i limbus som Schwalbes linje, men noen beskriver at det går over i trabekelverket (reticulum trabeculare, ligamentum pectinatum) # Epithelium posterius (endothelium camerae anterioris) vil gå over i trabekulære celler som kler de kollagene fibre i trabekelverket </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her kan studentene gi i prinsippet fem riktige svar, men det gis bare poeng for to. 0,5 p for hver, maks 1p på hele deloppgaven. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer i kornea er det som bidrar til at den er glassklar? (Det er flere faktorer, én gir 0,5 p). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Korneas tårefilm som glatter ut uregelmessigheter på korneas overflate # Meget regelmessig oppbygd flerlaget plateepitel over hele kornea som er konstant fem cellelag tykt # Ingen blod- eller lymfekar, dvs. at kornea er avaskulær # Ingen myeliniserte nervefibre # I stroma er det kollagene mikrofibriller med lik tykkelse og som ligger parallelt med lik avstand seg imellom. De kollagene fibrillene i de ulike lamellene ligger vinkelrett på hverandre (ortogonal array) som vil danne et diffraksjonsgitter # Tynt epithelium posterius (endothelium camerae anterioris) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver faktor gir i prinsippet 0,5 p, men her må man vise skjønn i poenggivingen da det kan være litt overlapp mellom svarene. F.eks. når det gjelder stroma, vil angivelse av bare et av punktene her gi poeng. Totalt 1,5 p for hele deloppgaven </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Vedvarende økt intraokulært trykk fører til glaukom (grønn stær) som kan skade øyet og medføre irreversibelt synstap. En konsekvens av et slikt langvarig økt intraokulært trykk er en utbuling, ekskavering, av discus opticus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke strukturer går igjennom denne delen av øyet og hva er grunnen til at utbulingen skjer i dette området? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gjennom dette området går nervefibre (aksoner fra nervefiberlaget i retina som vil danne synsnerven) og a. v. centralis retinae I dette området, kalt lamina cribrosa, er sklera svekket ved at laget er perforert, og discus vil bli presset ut, ekskavert, ved langvarig økt intraokulært trykk. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0,5 p, i alt 1 p. I første del vil angivelse av enten nervefibre og/eller blodkar gi poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Netthinneavløsning er en annen alvorlig tilstand i øyet som kan gi synstap. Da skjer det en løsning av pars nervosa retinae fra pigmentepitelet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er bakgrunnen for at en slik avløsning kan skje nettopp mellom disse to lagene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Under øyets utvikling invagineres øyeblæren og danne et øyebeger (optic cup), med to lag; det indre lag blir retinas pars nervosa, det ytre til pars pigmentosa. Sistnevnte gror sammen med det utenforliggende mesenkymale lag, som etter hvert vil bli Bruchs membran. Forbindelsen mellom de to retinalagene er mer løst og uten noen kontaktkomplekser og vil danne et intraretinalt rom utfylt med en matrix rik på bl.a. glykosaminoglykaner. Ved ulike sykelige tilstander representerer dette et svakt punkt, noe som medfører at pars nevrosa løsner mens pars pigmentosa sitter igjen festet til Bruchs membran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Henvisning til både embryologi, det intraretinale rom og ingen intercellulærkontakter mellom fotoreceptorer og pigmentepitel gir 1 p. Bare deler av dette svaret gir 0,5 p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi hvilke oppgaver pigmentepitelet ivaretar og forklar hvilken betydning dette har for retinafunksjonen. (Det er flere faktorer, angivelse av én gir 0,5 p). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pigmentepitelet har mange funksjoner i så henseende, bl.a.: * Blodforsyning fra kapillærnettet i lamina choriocapillaris dekker ytre deler av retina (til og med stratum plexiforme externum) * Pigmentepitelet utgjør en viktig del av den ytre blodretinabarrieren (den indre utgjøres av endotel), bl.a. pga. zonula occludens (tight junctions) mellom cellene i deres apikale deler. Dette regulerer bl.a. opptak av ioner, glukose, A-vitamin (retinol) og fettsyrer, m.m., samt beskytter retina mot toksiske stoffer, plasmakomponenter m.m. * Pigmentepitelet produserer ulike vekstfaktorer og cytokiner for å opprettholde og bevare retinas funksjon m.m. (maintaince of the structural integrity of retina): kan ha beskyttende effekt på sanseceller, regulering av matrix, vaskularisering, osv. * Pigmentepitelet regulerer og opprettholder retinas mikromiljø (homeostase) mhp. elektrolytter, pH, osv. * Pigmentepitelet fagocyterer og degraderer fotoreseptorenes ytre segment (disci) * Pigmentepitelet absorberer lys som bl.a. forhindrer dannelse av frie radikaler, som ellers kan ødelegge cellene * Pigmentepitelet syntetiserer komponenter til Bruchs membran * Pigmentepitelet utgjør en del av synssyklus ved regenerering av fotopigment (rhodopsin) (enzymatisk omdannelse av all-trans-retinal til 11-cis-retinal) * Pigmentepitelet tar opp og omdanner A-vitamin (retinol) som inngår i syntesen av rhodopsin (som består av opsin og retinal, som er derivat av A-vitamin) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ovenfor er det oppgitt flere funksjoner, noen kanskje litt overlappende, så man får vise skjønn i poenggivingen, men i prinsippet gir angivelse av en funksjon el oppgave 0,5p, i alt 2p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Makuladegenerasjon er en sykdom som svekker skarpsynet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer i makulaområdet er det som bidrar til dette skarpsynet? (Det er flere faktorer, angivelse av én 0,5 p). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Macula lutea med fovea centralis ligger der synsaksen treffer bak i øyet. Mot macula lutea øker antallet tapper på bekostning av staver, og sentralt i makulaområdet, fovea centralis, er det bare tapper og ingen staver. Her er også retina tynnere fordi den her består bare av fotoreseptorer, mens de øvrige av retinas lag er skjøvet lateralt. Det innebærer også at tappenes «aksoner» løper parallelt med retina til de danner synaptisk kontakt utenfor fovea. Dermed når lyset fotoreseptorene mer direkte. Tappene i dette området er også tynnere og lengre enn ellers i retina, de står tettere og helt parallelt. Hver tapp danner også bare synaptisk kontakt med en bipolar celle som igjen har kontakt med bare en gangliecelle (hvilket gir høy grad av bildeoppløselighet, dvs. flere pixler per arealenhet). Det er ingen blodkar på og retinas innside over fovea (dvs. mot corpus vitreum). Makulas gule pigment (utgjøres av xanthofyll (karotenoider danner to hovedgrupper: karotener og xanthofyll, xanthofyllene zeaxantin og lutein utgjør pigmentene i makula hos mennesket) avleiret i gangliecellene og i de bipolare cellene, bidrar til at lyset i større grad rettes mot tappene, videre absorberes eller filtreres skadelig lys (kortbølget lys) og ikke spres for mye, videre har dette laget antioksidativ effekt som beskytter tappene (fotobeskyttelse). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> I svaret over er det beskrevet flere faktorer som bidrar til skarpsynet, og man må vise skjønn i poenggivingen, men i prinsippet gir angivelse av en funksjon eller faktor 0,5 p, i alt 1 p. Bare svaret «fovea centralis» gir ikke poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Antibiotika er en mye anvendt legemiddelgruppe. To viktige undergrupper er penicilliner og aminoglykosider </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort virkningsmekanismen til penicilliner og aminoglykosider. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Penicillin: Virker ved å hemme celleveggsyntesen (syntesen av peptidolykaner) slik at bakterien sprenges (https://www.legemiddelhandboka.no/L1.2.1/Antimikrobielle_midl er) Aminoglykosider: virker ved å binde seg til ribosomer slik at bakterienes egen dannelse av proteiner hemmes. (https://sml.snl.no/aminoglykosider) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ett poeng for hvert riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Penicilliner har tidsavhengig bakteriedrap. Aminoglykosider har konsentrasjonsavhengig bakteriedrap. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort hva som ligger i begrepene «tidsavhengig bakteriedrap» og «konsentrasjonsavhengig bakteriedrap», og fortell hvordan du prinsipielt vil dosere et penicillin og et aminoglykosid gjennom døgnet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tidsavhengig bakteriedrap: Tiden med legemiddelkonsentrasjon over MIC (T>MIC) er avgjørende for effekten. Selve konsentrasjonen av antibiotikumet har mindre betydning, så lenge den er over MIC-verdien. Konsentrasjonsavhengig bakteriedrap: Dette fenomenet innebærer at en høy toppkonsentrasjon vil resultere i et raskere og mer omfattende bakteriedrap. https://tidsskriftet.no/sites/default/files/pdf2008--2750.pdf Ved tidsavhengig bakteriedrap må en dosere hyppig når halveringstiden er kort, som for penicilliner. Ved konsentrasjonsavhengig bakteriedrap kan en dosere sjeldnere, men dosen må være høy nok hver gang. For eksempel dosere 1 gang daglig ved aminoglykosider, selv om halveringstiden skulle tilsi hyppigere dosering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for riktig svar på hver av de to definisjonene, 1 poeng for riktig resonnement omkring dosering </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Dikloksacillin er et betalaktamasestabilt penicillin. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hva det innebærer at et antibiotikum er betalaktamasestabilt og gi et eksempel på en infeksjonstype der det er riktig å starte med et betalaktamasestabilt penicillin. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bakterier blir ufølsomme for penicilliner ved at det vokser frem varianter av bakteriene som klarer å inaktivere penicillinet. Inaktiveringen gjøres ved hjelp av et bakterielt enzym som kalles betalaktamase (penicillinase); det spalter betalaktamringen i penicillinmolekylet. Dette kan hindres ved å endre penicillinmolekylet, slik at betalaktamase ikke lenger kommer til, og gjør at antibiotikumet blir betalaktamasesatbilt. Bakterietyper/infeksjonstyper: Stafylokokk-infeksjoner. Hudinfeksjoner. Osteomyelitter. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for mekanisme. 0,5 poeng for infeksjonstype. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du tilser en 34 år gammel kvinne i allmennpraksis. Pasienten er tidligere frisk, men har pådratt seg en pneumoni </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I din hypotetiske legekoffert har du kun to typer antibiotika: fenoksymetylpenicillin og amoksicillin. Hvilket av disse to legemidlene bør du velge til denne pasienten, og hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fenoksymetylpenicillin fordi det er mest smalspektret, men samtidig virksomt mot de fleste samfunnserhvervede pneumonier hos tidligere friske </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for rett legemiddel, 0,5 poeng for riktig begrunnelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Åtte dager senere kommer den samme pasienten tilbake til deg på legekontoret. Hun har tatt ferdig kuren du forskrev, men hun forteller at hun i forigårs brått utviklet et rødt utslett på brystet. Det klør ikke, men har etter hvert bredt seg utover hele overkroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Det er flere måter å kategorisere bivirkninger på, men de fleste tilhører to hovedkategorier. Hva kaller vi disse bivirkningskategoriene og hva kjennetegner de? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Dose-relaterte, forutsigbare (type A) * Ikke-dose-relaterte, uforutsigbare (type B) (noen vil kanskje nevne c og d også, men dette er ikke «hovedkategorier». Om noen nevner disse kategoriene også kan det dra opp helhetsinntrykket av besvarelsen, men siden det ikke spørres om så skal det ikke gis poeng for) https://www.legemiddelhandboka.no/legacy/chapter/G5 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver riktig kategori </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra tidligere vignett: > Åtte dager senere kommer den samme pasienten tilbake til deg på legekontoret. Hun har tatt ferdig kuren du forskrev, men hun forteller at hun i forigårs brått utviklet et rødt utslett på brystet. Det klør ikke, men har etter hvert bredt seg utover hele overkroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan pasienten få samme antibiotikum senere? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, pasienten kan bruke penicilliner senere. Dette er ikke straksallergi / type I-reaksjon / utrikarielt / IgE-mediert (da er senere bruk kontraindisert) – dette er mest sannsynlig en immunkompleksreaksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for «ja», 0,5 poeng for riktig begrunnelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra tidligere vignett: > Åtte dager senere kommer den samme pasienten tilbake til deg på legekontoret. Hun har tatt ferdig kuren du forskrev, men hun forteller at hun i forigårs brått utviklet et rødt utslett på brystet. Det klør ikke, men har etter hvert bredt seg utover hele overkroppen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Er denne bivirkningen meldepliktig til RELIS/legemiddelverket? Begrunn svaret kort. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei Bivirkninger skal meldes ved mistanke om at bruk av ett/flere legemidler har gitt: * Dødelige eller livstruende bivirkninger, * Bivirkninger som har gitt varige alvorlige følger, eller * Uventede eller nye bivirkninger (ikke omtalt i preparatomtalen) https://legemiddelverket.no/bivirkninger-og-sikkerhet/meldbivirkninger/bivirkningsmelding-helsepersonell </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for «nei», 0,5 poeng for riktig begrunnelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Les det følgende forkortede og modifiserte sammendraget (abstractet) fra en vitenskapelig artikkel: <<< ''Objective'': To investigate the risk of osteoporotic fracture with warfarin vs dabigatran in patients with atrial fibrillation (AF). ''Design'': Cohort study Exposures: Warfarin or dabigatran use during the study period ''Main outcomes and measures'': Risk of osteoporotic hip fracture and vertebral fracture was compared between warfarin and dabigatran users after adjustment for several potential confounders. ''Results'': The risk ratio was 2.6 when users of warfarin were compared to those using dabigatran. The association with lower risk for dabigatran use was shown in patients with a history of falls, fractures, or both but not in those without such a history. ''Conclusions'': … (deleted sentence) … Additional study, perhaps including randomized clinical trials, may be warranted to further understand the relationship between use of warfarin vs dabigatran and risk of fracture. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Første setning I konklusjonen er slettet fra abstractet. Hvilken behandling bør anbefales basert på disse resultatene, warfarin eller dabigatran? Hvorfor? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dabigatran bør anbefales framfor warfarin fordi det var betydelig lavere risiko for brudd ved bruk av dabigatran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dabigatran bør anbefales framfor warfarin (1p) Fordi det var betydelig lavere risiko for brudd ved bruk av dabigatran enn ved warfarin (1p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett ”The risk ratio was 2.6 when users of warfarin were compared to those using dabigatran” </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Tolk dette med egne ord. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienter som fikk warfarin hadde 2,6 ganger så høy risiko for hoftebrudd sammenliknet med dem som fikk dabigatran. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> «2,6 ganger så høy risiko» </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett «…adjusted for several potential confounders» </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er kriteriene for at en variabel skal være en konfunder (confounder) for sammenhengen mellom eksponeringen (warfarin eller dabigatran) og sykdommen (hoftebrudd)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Variabelen må (1) være assosiert med både eksponeringen (warfarin eller dabigatran) og utfallet (hoftebrudd og vertebrale brudd), (2) men den må ikke være påvirket av (være en følge av) eksponeringen eller utfallet. Begge kriteriene må være oppfylt. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Variabelen må (1) være assosiert med både eksponeringen (warfarin eller dabigatran) og utfallet (hoftebrudd og vertebrale brudd) (1 poeng), (2) men den må ikke være påvirket av (være en følge av) eksponeringen eller utfallet (1 poeng). Studenten angir at begge kriteriene må være oppfylt (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett «The association with lower risk for dabigatran use was shown in patients with a history of falls, fractures, or both but not in those without such a history.» </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan det indikere hvis sammenhengen mellom eksponeringen og utfallet er forskjellig i en undergruppe? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det kan indikere interaksjon (effektmodifikasjon) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> effektmodifikasjon eller interaksjon (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett “Additional study, perhaps including randomized clinical trials, may be warranted to further understand the relationship between use of warfarin vs dabigatran and risk of fracture” </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den viktigste fordelen med en randomisert kontrollert studie sammenlignet med andre studiedesign? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Randomiserte studier er generelt betydelig mindre konfundert enn andre studiedesign. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Randomiserte studier er generelt betydelig mindre konfundert enn andre studiedesign. Det er akseptabelt om studenten skriver at randomiserte studier teoretisk sett ikke er konfunderte, eller skriver at randomiserte studier har mindre systematisk feil, eller skriver at den systematiske feilen som kan være til stede, er slik at den under- men ikke overestimerer de sanne effektene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn minst to av de viktigste ulempene med randomiserte kontrollerte studier sammenlignet med andre studiedesign. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * En randomisert studie er ikke etisk akseptabelt for mange forskningsspørsmål * Det er umulig å randomisere i mange situasjoner selv om det ville være etisk akseptabelt * Høye kostnader * Generelt kan bare de som samtykker bli inkludert * Det er alltid en eksperimentell situasjon * Compliance-problemer fra deltakerens side * Generelt bare kort oppfølgingstid </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> To av punktene over, 1 poeng for hver riktig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Immunresponsene ved infeksjoner varierer avhengig av typen patogen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilken betydning antistoff har ved primære og sekundære virusinfeksjoner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Antistoff har to hovedeffekter ved virusinfeksjoner: de kan ''forhindre opptak'' av virus i målcellene (''nøytralisasjon''), og de kan ''målstyre antistoff-mediert direkte cytotoksisitet'' (ADDC) som særlig utføres av NK-celler. Ved en primærinfeksjon har vi ikke spesifikt antistoff mot det aktuelle viruset på forhånd, men aktivering av B-celler og dannelse av plasmaceller som produserer antistoff inngår ofte som en del av responsen (selv om cytotoksisitet er vanligvis er hovedresponsen!). ''ADDC kan derfor først skje mot slutten av en primærinfeksjon''. Antistoffmediert ''virusnøytralisasjon er viktig ved sekundærinfeksjoner''. Det er mer effektivt å bekjempe en infeksjon ved å hindre virus i å etablere seg enn å skulle ta hånd om virus inni infiserte celler. Ved sekundærinfeksjon kan ADDC også starte raskt og bidra til å begrense infeksjonen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ p for nøytralisasjon * ½ p for ADDC * ½ p for primær- vs. sekundærinfeksjoner mht. Bcelleresponsene * ½ p for NK-celler </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort de øvrige immunresponsene ved primære og sekundære virusinfeksjoner (dvs. de delene av responsen som ikke dekkes i deloppgave 1). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hovedforsvaret ved virusinfeksjoner er vanligvis ''drap av infiserte celler, utført av NK-celler og cytotoksiske T-celler''. Dette er nødvendig for å utrydde virus, som er intracellulære patogener. NK-celler klarer sjelden å utrydde virus alene, selv om de spiller en stor rolle for forsvaret i tiden før effektorceller fra ervervet forsvar er utviklet. Derfor er T-cellemediert immunitet med dannelse av ''CD4+ hjelperceller'' som kan bidra til aktivering av ''CD8+ dreperceller'' svært sentrale immunresponser ved primære virusinfeksjoner. Ved sekundærinfeksjon vil ''hukommelsesceller'' raskt føre til effektiv T-cellemediert drap av infiserte celler og gjøre at infeksjonen raskere bekjempes. T-cellehjelp er også sentralt for de fleste antistoffresponser. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ p for hjelperceller og cytotoksiske T-celler * ½ p for hukommelsesceller </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når ulike vaksiner mot SARS-CoV-2 blir testet ut, bruker man bl.a. telling av antall smittede i gruppene som har fått vaksine eller placebo til å måle vaksineeffekten. I tillegg inkluderer flere studier målinger av mengden spesifikt antistoff mot virus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken annen immunologisk respons enn antistoffdannelse ville vært nyttig å måle for å vurdere vaksineeffekten, og hvordan måles det? Hva er de mest sannsynlige grunnene til at undersøkelse av denne responsen oftest ikke blir inkludert i studiene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det ville vært nyttig å undersøke om den vaksinerte har utviklet en T-cellerespons. Den mest sentrale responsen her er ''T-cellemediert drap'' av SARS-CoV-2-infiserte celler. Det gjøres ved å isolere lymfocytter fra de vaksinerte personene og tilsette dem i ''cellekulturer hvor det også finnes antigenpresenterende celler''. Cellekultur er ''arbeidskrevende og tar tid''. For å unngå HMS-utfordringer ved arbeid med levende virus, kan man også kunstig syntetisere aktuelle virusproteiner som T-cellene kan reagere på. Også dette er en arbeidskrevende metode. Derfor blir T-celleundersøkelser bare inkludert hos et mindre antall av studiedeltagerne i enkelte studier. Man antar isteden at de som har en god spesifikk antistoffrespons, også har en adekvat Tcellerespons. T-celler er også involvert ved antistoffresponsen på vaksinen. Testing av CD4+ T-cellers cytokinproduksjon er en metode for å måle dette. Krever også cellekultur. Men det er mye enklere å teste selve antistoffresponsen direkte, så dette er ikke et godt svar selv om det omtaler T-celler. "Harde endepunkter" som antall smittede/alvorlige syke med og uten vaksine er det viktigste, fordi det avspeiler den samlede effektiviteten av forsvarsreaksjonen mot infeksjon. Men dette er ikke hva oppgaven mener med en immunologisk respons, fordi det også avhenger av mange andre faktorer som ligger utenfor immunforsvaret. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 p for T-cellefunksjoner – bør nevne cytotoksiske T-celler for fullt poeng * ½ p for cellekultur, evt. at også trenger antigenpresenterende celler * ½ p for tid- og arbeidskrevende </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett For de fleste typene vaksine mot SARS-CoV-2 benyttes to doser, evt. også senere boosterdoser. Denne fremgangsmåten brukes også for virusinfeksjoner hvor det ikke oppstår nye virusvarianter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor det er behov for å gi vaksinen flere ganger, og særlig til de eldste innbyggerne. Fokuser på årsaker knyttet til immunsystemet </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vaksineresponsen er eksempel på effektene av immunologisk hukommelse, trigget av at innholdet i vaksinen eller protein som uttrykkes pga. vaksinen (mRNA-vaksine eller DNA-vaksine) oppfattes som fremmed. # Sekundærresponsen (dvs. etter 2. vaksinedose) blir sterkere og gir derfor bedre beskyttelse. Det vil også skje isotypeskifte og affinitetsmodning av antistoffet (pga. somatisk hypermutasjon), som bidrar til bedre beskyttelse. (Den cytotoksiske T-celleresponsen vil også bli mer effektiv og det dannes flere T-hukommelsesceller). # Uten ny kontakt med antigenet vil responsen gradvis avta, bl.a. ved at antistoffmengden reduseres, selv om det fortsatt finnes hukommelsesceller (T- og B-celler) som raskt kan aktiveres hvis man utsettes for SARS-CoV-2-smitte. Alle immunresponser nedreguleres når antigenmengden blir liten nok. Boosterdoser sørger for å vedlikeholde vaksineresponsen. # Eldre har et mindre effektivt immunsystem, både for B- og T-celleresponser. De har bl.a. dårligere evne til å aktivere nye T-celler og er i stor grad avhengig av hukommelsesceller, som er en betydelig ulempe når de eksponeres for et "nytt" patogen som SARS-CoV-2. Med flere vaksinedoser er det mer sannsynlig at immunresponsen blir sterk nok til å gi beskyttelse, og den må i større grad holdes ved like for å være effektiv nok. Eldre har også dårligere evne til å produsere antistoff (bl.a. på grunn av dårligere T-cellehjelp og færre naive B-celler) og mindre effektivt medfødt forsvar, inkl. NK-celler. # Eldre har generelt dårligere helse / flere tilleggssykdommer og mindre organreserver, og tåler infeksjoner dårligere. Dette punktet er ikke direkte knyttet til immunsystemet og går derfor utenfor forventet svar.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ p for sekundærrespons generelt * ½ p for isotypeskifte, affinitetsmodning * 1 p for nedregulering av immunresponsen og boosterdose for å opprettholde stimuleringen * 1 p for mindre effektivt immunforsvar hos eldre (med noe presisering) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mange virus, inkludert SARS-CoV-2, gjennomgår hyppige mutasjoner som kan påvirke immunresponsene mot de ulike variantene. Slike mutasjoner kan også påvirke beskyttelsen fra vaksinene. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismene for hvorfor små endringer i virusproteinene ofte ikke har stor betydning for antistoffbeskyttelsen fra vaksinene hvis man utsettes for smitte med SARS-CoV-2, mens større endringer kan føre til betydelig redusert beskyttelse. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Binding mellom antistoff og virusprotein er avhengig av "passformen" mellom dem ("nøkkel som passer i en lås"). Ved små endringer i virus vil antistoffet kunne bindes med noe redusert affinitet fordi konformasjonen av virusproteinet ikke endres dramatisk. Dessuten vil aktiverte B-hukommelsesceller kunne gjennomgå en ny runde med somatisk hypermutasjon som resulterer i bedre tilpasning av antistoffet til virusproteinet (affinitetsmodning). Ved store endringer vil antistoffet passe dårligere til virusproteinets konformasjon og gi dårligere evne til nøytralisasjon av virus. Dessuten vil tilstedeværelse av antistoff fra vaksinasjonen (selv om det ikke har så høy affinitet) hemme aktivering av nye naive B-celler. Derved er det vanskelig å få en sterk, ny respons mot et antigen som er relativt tett beslektet med et antigen man har møtt før. Vi vet ennå ikke i hvor stor grad blir bli et klinisk problem med SARS-CoV-2. Seleksjonspresset på viruset gjør at mutasjoner som reduserer immuniteten eller øker spredningsevnen vil velges ut, slik vi har sett med delta- og omikron-variantene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * ½ p for binding med lavere affinitet * ½ p for ny affinitetsmodning * ½ p for dårligere nøytralisasjon ved mer endret antigen * ½ p for hemmet aktivering av naive celler ("the original antigenic sin") </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett For å kunne vurdere sykelige forandringer i og omkring øyet, må man kjenne til normalanatomien. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Her ses et bilde av det ytre øyet med bokstavmarkeringer a-e som har tilhørende spørsmål under (Bilde: SH Torp). <<imgLink "ICD-2022-2-A.PNG">> # Hva heter det ytre glinsende vevslaget som kler det hvite på øyet? # Hva heter det hvite laget under? # Hva heter det lett eleverte området i mediale øyevinkel? # Hva kalles dette fremre gjennomskinnelige laget på øyet? # Hva heter den ytre sirkulære grunne furen som pilene peker på? # Hva kaller man dette overgangsområdet i øyet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Tunica conjunctiva bulbi (øyets bindehinne) # Sclera (senehinnen) # Caruncula lacrimalis # Cornea (hornhinnen) # Sulcus sclerae # Limbus </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar gir 0,25 poeng, maks. 1,5 poeng. Ang. 1) bare «conjunctiva» og «øyets bindehinne» godtas også som riktige svar Poengberegning: 1-2 riktige svar: 0,5 poeng, 3-4 riktige svar, 1 poeng; 5-6 riktige svar: 1,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ved fare for skade av øyet er blunkerefleksen en viktig beskyttelsesmekanisme </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved opphevet blunkerefleks hvilke nerveforbindelser kan da være affiserte? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sensoriske afferenter går via n. trigeminus (n. ophthalmicus) (5. hjernenerve), motoriske via n. facialis (7. hjernenerve). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar på hver hjernenerve, totalt 1 poeng. Ang. sensorisk del (n. trigeminus): her får man poeng også om man svarer «n. trigeminus» eller bare «n. ophthalmicus». </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Tørre øyne kan være forårsaket av flere ulike sykdommer, og dette kan medføre skade av øyets epitelbekledning. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn noen av de strukturene som bidrar til å holde øyets overflate fuktig og på hvilken måte de bidrar. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Tårekjertel (gl. lacrimalis) produserer tårevæske # Meibomske kjertler (glandulae tarsales) er store talgkjertler som skiller ut fettholdige produkter som forhindrer fordamping av tårevæske # Conjunctiva inneholder begerceller som skiller ut mucin (slim) som bidrar til å holde øyet fuktig # Corneas plateepitel har mikrovilli som binder tårefilmen og dermed beskytter dette epitelet. Dette epitelet bidrar, sammen med epitelet i conjunctiva, til dannelse og opprettholdelse av glykokalyks som utgjør et viktig og beskyttende lag av tårefilmen. Andre kjertler: Aksessoriske tårekjertler (Wolfrings og Krauses kjertler) bidrar også til å lage/beholde tårefilmen, glandulae ciliares (Molls kjertler) nevnes også Ref.: Brüel et al. Genesers histologi. Munksgaard. 2012; W Pawlina. Histology. A text and atlas. Walters Kluwer. 2016 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvert delsvar med struktur og funksjon gir 0,5 poeng, inkludert også de angitt med liten skrift, maks. 2 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Alexander Fleming oppdaget penicillin i 1928. Kliniske studier, hvor den australske farmakologen Walter Howard Florey og den tyskjødiske biokjemikeren Ernst Boris Chain var sentrale, ble ikke igangsatt før etter en 10-årsperiode. Arbeidet, som stor grad foregikk i hemmelighet pga. utbruddet av 2. verdenskrig, fant sted ved universitetet i Oxford. En kollega av Florey og Chain omtalte penicillin som «a remarkable substance, grown in bedpans and purified by passage through the Oxford police force” (PNAS 1983; 80: 4572). Dyrking i bekken (bedpans) refererer til datidas primitive dyrkingsmetode for penicillumsoppen, og «passage through the Oxford police force» viser, avhengig av hva vi velger å tro, til en av de første penicillin-behandlede pasientene (som altså var en politimann som ble behandlet i 1941) eller de første «friske frivillige» i de kliniske utprøvingene – hvor man samlet urin og gjenvant midlet derfra. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kunne det ha seg at penicillin kunne gjenvinnes fra urinen til de første brukerne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Penicillin utskilles uomdannet i urinen, og kunne – i den tiden de hadde små mengder – isoleres og renses fra pasienturin – og deretter injiseres til samme pasient …. eller nestemann…... </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> «Utskilles uomdannet i urin» holder for 1p. Intet annet duger </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) En av dine pasienter ringer deg og forteller følgende: Han var på legevakta i helga og ble satt på en ukes behandling med fenoksymetylpenicillin pga. lungebetennelse. Pasienten har stått på CYP2D6-hemmeren paroksetin (Seroxat®) det siste halvåret pga. tilbakevendende depresjonsepisoder, og drikker 1-2 glass av CYP3A4- hemmeren grapefruktjuice til frokost hver dag. «På apoteket sier de at begge disse stoffene kan påvirke andre legemidler», sier pasienten. «Kan det også påvirke penicillinbehandlingen?» Hva svarer du? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nei, fenoksymetylpenicillin metaboliseres ikke, og påvirkes følgelig heller ikke av CYP-hemmere. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> «Utskilles uomdannet i urin” (jfr. spm. 1) ”metaboliseres ikke” eller liknende varianter gir full pott; intet annet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Penicillin er ofte implisert ved type B-bivirkninger. Hva står B’en for, hva slags bivirkninger er dette og hvor stor andel av alle bivirkninger er av denne typen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Type B står for «bisarr» (0,25 p). Dette er bivirkninger som kun opptrer hos et fåtall, og som hverken kan forutses eller relateres til dose (0,5 p). Type B-bivirkninger utgjør 20-25% av alle bivirkninger; resten er av type A (0,25 p). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se over </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett To andre viktige undergrupper av antibiotika er makrolider og cefalosporiner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kortfattet virkningsmekanismen til makrolider og cefalosporiner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Minimum som trengs for å få poeng er følgende: Makrolider: Makrolidene bindes til bakterienes ribosomer og hindrer proteinsyntesen. L1.2.8 Makrolider | Legemiddelhåndboka (legemiddelhandboka.no) Cefalosporiner: Som andre betalaktamantibiotika virker de ved å hemme celleveggsyntesen. L1.2.4 Cefalosporiner | Legemiddelhåndboka (legemiddelhandboka.no) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Et halvt poeng for hvert riktige svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Erytromycin er et makrolid. Et av problemene med å bruke erytromycin er at middelet gir interaksjoner med mange andre legemidler. En interaksjon kan være farmakodynamisk eller farmakokinetisk. Forklar kort hva en farmakokinetisk og en farmakodynamisk interaksjon er. Hva er den viktigste mekanismen bak interaksjoner utløst av erytromycin, og er dette en farmakodynamisk eller en farmakokinetisk interaksjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Farmakokinetiske interaksjoner oppstår ved at et legemiddel forandrer absorpsjonen, distribusjonen, metabolismen eller ekskresjonen til et annet legemiddel slik at konsentrasjonen i kroppen endres. Farmakodynamiske interaksjoner oppstår ved at et legemiddel direkte eller indirekte påvirker effekten av et annet legemiddel uten at legemidlets konsentrasjon forandres. G6 Interaksjoner | Legemiddelhåndboka (legemiddelhandboka.no) Makrolider metaboliseres i leveren via cytokrom P-450 systemet gjennom isoenzymene CYP1A2 og CYP3A4. Makrolidene hemmer CYP3A4, og dermed også metabolismen av andre legemidler som omsettes av dette enzymet. Bruk av makrolider innebærer derfor en betydelig risiko for legemiddelinteraksjoner i form av økt konsentrasjon av bl.a. antiepileptika, ciklosporin, ergotamin, metylprednisolon, lovastatin, warfarin og en rekke andre legemidler. L1.2.8 Makrolider | Legemiddelhåndboka (legemiddelhandboka.no). Dette er en farmakokinetisk interaksjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig definisjon. 0,5 poeng for mekanismen, 0,5 poeng for riktig type interaksjon </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vi sier gjerne at antibiotika kan være smalspektrede eller bredspektrede. Forklar kort hva vi legger i disse to begrepene og hvorfor det er viktig å ha kunnskap om denne forskjellen. Gi et typisk eksempel på et smalspektret og et bredspektret antibiotisk legemiddel. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Noen antibiotika virker bare på et begrenset utvalg av bakterier, for eksempel særlig på de grampositive, og kalles derfor smalspektrede (effektive mot et fåtall ulike bakterier). Andre angriper grampositive og gramnegative bakterier mer likt og kalles bredspektrede (altså effektive mot mange ulike bakterier). Benzyl- og fenoksymetylpenicillin er eksempel på et smalspektret antibiotikum Ciprofloksacin er eksempel på et bredspektret antibiotikum antibiotika – Store medisinske leksikon (snl.no) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig def, 0,5 poeng for hvert eksempel. Her må en vise litt skjønn og kanskje ikke være VELDIG streng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Det første kommersielt tilgjengelige antibiotikum var ikke et penicillinpreparat, men representant for en type bakteriostatiske midler som ble utviklet på 1930-tallet av den tyske patologen og bakteriologen Gerhard Johannes Paul Domagk. Slike midler er i dag i begrenset bruk. Hva kalles de? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sulfapreparater eller sulfonamider. Det første – som Domagk stod bak – het prontosil. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sulfa, sulfapreparater eller sulfonamider gir alle 1 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En av dine pasienter (en 75 år gammel kvinne) har nettopp vært innlagt på Medisinsk avdeling på grunn av vekttap, slapphet og dårlig matlyst over de siste 3-5 månedene. Hun har kjent diabetes mellitus type 2 fra før, men den har hele tiden vært godt regulert. I en lang og komplisert epikrise er det kommentert at hun har «nyresvikt», og du merker deg følgende laboratorieverdier / data: Høyde 166 cm, vekt 52 kg, s-kreatinin 155 μmol/l (50-90) eGFR 28 ml/min/1.73 m2 </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv / definer Glomerulær Filtrasjons Rate (GFR) og en ideell filtrasjonsmarkør, og hva som er forskjellen mellom kreatinin clearance og GFR? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # GFR er den totale mengden filtrat/pre-urin som produseres og flyter ut i Bowmans rom per minutt, ofte normalisert til en standard kroppsoverflate på 1.73m2 # En ideell markør filtreres fritt over membranen, og det er ingen reabsorbsjon fra eller sekresjon til tubulus. # Kreatinin clearance er ca 20% høyere enn GFR fordi kreatinin sekreres fra blod og ut i tubuli i tillegg til å bli fritt filtrert over glomerulus membranen. Clearance er altså hvor mye av blodet som blir renset per minutt, dvs summen av filtrasjon og sekresjon av et stoff </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p per underspørsmål. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke nyrefunksjoner er direkte og indirekte assosiert med GFR? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Direkte: utskillelse av nitrogenholdige avfallsprodukter, fremmede stoffer, vann, elektrolytter, Indirekte: syre-base kontroll, hormon produksjon (Epo, vit D), </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hvert av punktene ovenfor, max 1.5 p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke kliniske og anatomiske forhold som påvirker GFR, herunder hvilke fysiske krefter som bestemmer effektivt filtrasjonstrykk over filtrasjonsmembranen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> GFR= total overflate av filtrasjonsmembranen x filtrasjonstrykket. Overflaten bestemmes av antall nefroner og om nyresykdom har gjort at antall/lengde av glomeruluskapillærene er redusert pga celleinfiltrater eller bindevev som presser kapillærene sammen og til slutt oblitererer sirkulasjonen. Filtrasjonstrykket bestemmes av systemisk blodtrykk, balansen mellom motstanden i afferente og efferente arteriole, og kreftene over membranen (hydrostatisk trykk glom cap – hydrostatisk trykk bowman – osmotisk trykk glom cap + osmotisk trykk bowman (men dette er nesten alltid=0 da det ikke er proteiner i filtratet, og man kan dermed se bort fra dette)) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for momenter markert i gult, 0,2 p for momenter markert i grønt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan måler man GFR direkte ved norske sykehus? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> I Norge måles GFR ved å injisere en nøyaktig oppmålt mengde av et stoff intravenæst, og så ta blodprøver ved ett eller flere tidspunkter for å se hvor raskt stoffet fjernes fra kroppen. Man bruker enten radioaktivt merket bærermolekyl (Cr EDTA, Tc DTPA, el) eller Iohexol (rtg kontrast). Det finnes så formler som beregner GFR utfra injisert mengde og serum konsentrasjoner på de ulike tidspunkter. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for hvert av punktene ovenfor </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke problemer er det med å bruke s-kreatinin til å bedømme nyrefunksjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Sammenhengen mellom s-kreatinin og GFR er ikke linjær, men eksponentiell slik at det er vanskelig å beregne i hodet. Skreatinin varierer også med andre variabler enn GFR: muskelmassen har stor innvirkning på s-kreatinin og denne varierer med flere generelle / gruppevariabler (synker med alder, lavere hos kvinner), og i tillegg varierer s-kreatinin med en rekke individuelle variabler som inntak av kjøtt, om man trener og bygger muskler, hydreringsgrad, sykdom og underernæring gir muskeltap, hard trening kan gi muskelskade og utslipp av kreatinin til blodet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,33 p for hvert moment marker med grønt (eksponentiell gir 0,66 p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan man beregne kreatinin clearance, og hvilke fordeler og ulemper har denne metoden? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kreat clearance (ml per minutt) = u kreat x u volum (ml per minutt) / s kreat. Fordelen er at kreatinin er en endogen markør slik at man slipper å injisere noe stoff. Problemet er at det er tubulær sekresjon slik at clearance er større enn GFR (men dette kan være en fordel ved vurdering av en del medikamentdoseringer da en del medikamenter også sekreres), og dessuten forutsetter man korrekt urinvolum-måling hvilket er vanskelig i praksis. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 p for formelen, 0,25 p for grønne momenter </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siri er en 44 år gammel tobarnsmor bosatt i Trondheim. Den siste tiden har hun følt et diffust ubehag i abdomen og en dag oppdager hun friskt blod i avføringen. Hun tar umiddelbart kontakt med sin fastlege som henviser henne videre til gastroenterologisk avdeling på St. Olavs Hospital for videre utredning. Ved koloskopi blir det påvist en tumor (2 x 3 cm) i nedre del av tykktarmen (sigmoideum). En biopsi bekrefter at tumoren er malign (ondartet). Tumoren blir fjernet lapraskopisk (kikkhullsteknikk) og sendt til Avd. for Molekylær Patologi for ytterligere analyse. Analysen påviser betydelig mikrosatellittinstabilitet (MSI-H; MSI-high). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken molekylærgenetisk metode vil være egnet til å påvise mikrosatellitt-instabilitet? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Polymerase chain reaction (PCR) og påfølgende fragmentanalyse (som regel ved kapillærelektroforese). Som regel anvendes et panel bestående av >5 utvalgte mikrosatellitter for denne analysen. Normalvev inkluderes som kontroll. Ved MSI vil mikrosatellittene (som er repeterte sekvenser av 2-6 nukleotider; eks. ''CAG''CAG''CAG''CAG) variere i lengde i ulike tumorceller. Metoden som velges må derfor være i stand til å bestemme lengde på fragmenter. Ved PCR anvendes primere som flankerer mikrosatellitten(e). Amplifiserte mikrosatellitter blir deretter lengdebestemt ved kapillærelektroforese, hvor det anvendes standarder med kjent lengde. Ved MSI vil en for en gitt mikrosatellitt få mange ulike lengder av de amplifiserte fragmentene. I normalt vev vil en person være heterozygot, med én definert lengde for hvert allel. DNA sekvensering ved Next generation sequencing KAN være en metode som er egnet, men dette er nylig utviklede metoder som ennå ikke godt utprøvd og validert, og som krever spesiell bioinformatisk analyse for klassifisering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> PCR + fragmentanalyse for å bestemme lengdene av mikrosatellittene. (1 poeng) Om studenten svarer NGS bør det legges vekt på hvilken begrunnelse studenten oppgir før det evt. gir poeng. NGS er ikke angitt som foretrukken metode for MSI analyse i forelesninger, og er (ennå) ikke standard metode for å påvise MSI i molekylær patologi. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett På grunn av Siris unge alder (44 år) blir det tatt en blodprøve som blir sendt til Avd. for Medisinsk Genetikk for genetisk analyse. Denne viser at Siri er heterozygot for en inaktiverende mutasjon i MSH2, et protein involvert i DNA mismatch reparasjon (MMR). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hovedprinsippene ved DNA mismatch reparasjon. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MMR er et multiprotein reparasjonsspor som korrigerer ulike typer DNA replikasjonsfeil (unike misinkorporeringer, samt insersjoner og delesjoner). Heterodimerer av MSH2 og MSH6 (komplekset kalles MutS) detekterer mismatcher og enkeltbase insersjoner/delesjoner, mens heterodimerer av MSH2 og MSH3 (komplekset kalles MutSβ) detekterer større «replikasjonsbobler»på opptil 13 baser. Deretter rekrutteres en annen heterodimer, MLH1/PMS2 (kalt MutL) sammen med PCNA. Dette stimulerer tilbakekutting (ved eksonukleasen EXO1) forbi replikasjonsfeilen i dattertråden. Det «tomme» området fylles så igjen med DNA polymerase og ligeres med DNA ligase 1. MMR- systemet foretar alltid korrigeringene i den nysyntetiserte DNA-tråden, men eksakt hvordan templat/dattertråd blir identifisert er enda ikke helt klart. En tror det med jevne mellomrom oppstår midlertidige trådbrudd i den nysyntetiserte tråden (kanskje fordi RNA-baser feilinnsettes oftere enn før antatt, og disse fjernes ved at det først dannes et trådbrudd ved RNA-basen), og at disse tjener til å dirigere reparasjon til riktig tråd. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hvilke skader som gjenkjennes (0.5 poeng), at reparasjon er dirigert til nysyntetisert tråd (0.5 poeng), + navn og funksjon på protein(kompleksene) involvert (tot 1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forskning har vist at mikrosatellitt-instabilitet skyldes feil som oppstår under DNA-replikasjonen. I cellene våre finnes flere mekanismer som skal sikre at den akkumulerte feilfrekvensen (Accumulated Error Frequency, AEF) skal holdes på et lavt nivå (under 1 feil per cellegenerasjon). Her spiller blant annet ulike DNA-reparasjonsprosesser en viktig rolle. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre mekanismer kjenner du til som bidrar til å senke AEF? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Preferensiell baseparing (A:T/C:G), induced fit (i DNA polymerasen), balansert nivå av A, T, C og G, proofreading (eksonukleaseaktivitet i DNA polymerasen) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hver av de fire mekanismene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siri opplyser at hennes 68 år gamle pappa fikk påvist kreft i tykktarmen for tre år siden, og at også hans mamma (Siris farmor) fikk påvist endometriekreft før hun var 60 år. Mutasjon i gener involvert i DNA mismatch reparasjon (MMR) er typisk for Lynch syndrom. Sykdommen nedarves autosomalt dominant, og er karakterisert av tidlig debut av flere kreftformer (kolorektal, i endometrium, duodenum, nyrebekken/ureter, ventrikkel, lever- og galleganger, bukspyttkjertel, eggstokker mfl.), hvorav kolorektal-kreft dominerer i de fleste familier. At Siri er heterozygot for mutasjonen betyr at hennes celler har noe redusert evne til å reparere DNA-skader via MMR, men ikke tilstrekkelig redusert til at det i seg selv fører til kreft </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er mekanismen som fører til at Lynch syndrom nedarves dominant? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MMR-gener inngår i klassen tumor suppressor gener. Begge kopiene av et tumor suppressor-gen må inaktiveres eller tapes før en person vil utvikle kreft (Knudsons two-hit hypotese, loss of heterozygosity, LOH). Hvorvidt en person som har en kjønnscelle-mutasjon vil utvikle kreft og hvor kreften vil utvikle seg, avhenger av hvor (hvilken celletype) den andre mutasjonen oppstår. Ved arv av mutasjon vil alle somatiske celler ha mutasjonen (og da som regel i heterozygot form). Risikoen er derfor stor for at det andre (normale allelet) på et eller annet tidspunkt i en eller annen celle inaktiveres eller tapes. Derfor sees høyere risiko for kreft og tidligere debutalder enn ved sporadisk kreft. Life time risk for kreft (enhver form) med inaktiverende mutasjon i MSH2 er anslått til 70-80%. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> At MMR gener defineres som tumor suppressor-gener (1 poeng) – samt beskrivelse av prinsippet bak Knudsons two-hit hypotese (1 poeng) (behøver ikke nevne Knudson/LOH, men prinsippet må beskrives) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siri har to barn, Marius på 19 og Anne på 15 år. Siri har også en søster, Maren, som er 47 år. Siris fastlege har nå fått beskjed fra Medisinsk genetisk avdeling at Siri har en arvelig mutasjon i MHS2 som gir betydelig økt risiko for kreft. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva bør fastlegen foreta seg i forhold til Siris barn og til Maren? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ifølge bioteknologiloven §5.9 kan ikke fastlegen på eget initiativ velge å kontakte Maren eller Siris barn. Det er den som har testet seg som avgjør om familien skal informeres om testresultatet. Vedkommende kan få hjelp av helsepersonell til å gjøre dette dersom han/hun ønsker det. Et unntak gjelder dersom vedkommende ikke kan informere (fordi han/hun er uten bevissthet eller er død). Da kan helsepersonell på eget initiativ oppsøke familien forutsatt at visse kriterier er oppfylt. Fastlegen bør derfor oppfordre Siri til selv å informere barna og Maren om mutasjonen. Gentesting av barn skal normalt utsettes til de er fylt 16 år og selv kan bestemme, med mindre testingen gjør at man kan starte forebyggende behandling. I denne sammenheng kan Marius velge å teste seg om han vil. Anne, som er 15, bør vente til hun er 16 år og selv kan bestemme. Kolorektalkreft ved Lynch syndrom debuterer ofte i yngre alder, og man anbefaler derfor koloskopi annet hvert år fra 25 års alder. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> At fastlegen på egen hånd ikke kan velge å kontakte Maren eller Siris barn (0.5 poeng). Et svar som at fastlegen ikke bør foreta seg noe gir IKKE poeng. Fastlegen bør oppfordre Siri til selv å fortelle barna og Maren om mutasjonen. Det er den som har testet seg som avgjør om familien skal informeres om testresultatet (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Maren er frisk, men har nå valgt å teste seg for å se om hun kan ha arvet samme mutasjon som Siri. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type test er det her snakk om (diagnostisk, presymptomatisk, prediktiv, bærerdiagnostisk), og hva sier bioteknologiloven om denne typen test? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Gentesting av friske personer er strengt lovregulert. I denne situasjon er det snakk om en ''prediktiv test'' – som sier noe om fremtidig risiko for sykdom (det er viktig å huske at gentester for sykdomsrisiko ikke gir svar på om du helt sikkert kommer til å utvikle sykdommen). * En presymptomatisk test derimot, som f.eks. ved Huntingtons sykdom, sier noe om du vil, eller ikke vil, utvikle sykdommen. * En bærerdiagnostisk test sier noe om risikoen for å videreføre en sykdomsassosiert mutasjon til neste generasjon. Ved en bærertilstand (heterozygot) vil ikke den som tester seg selv utvikle sykdommen. * En diagnostisk test tas innenfor helsevesenet med den hensikt å bekrefte eller avkrefte en diagnose. Dersom en frisk, voksen person vurderer å ta en gentest som kan gi prediktiv, presymptomatisk eller bærerdiagnostisk informasjon, har du også krav på genetisk veiledning før du eventuelt tar testen. Det er fordi du skal kunne gjøre et valg basert på best mulig informasjon før du eventuelt gir samtykke til å gjennomføre testen. Dette skal gis skriftlig. Det er stor forskjell på om en syk person blir testet for å kunne få en diagnose og om en helt frisk person ønsker å teste seg for å få vite noe om fremtidig risiko for sykdom hos seg selv eller hos fremtidige barn. De sykdommene man ønsker å teste friske personer for, må derfor godkjennes for dette. Institusjonene som skal utføre gentestingen, må også godkjennes. Det er ikke krav om skriftlig samtykke for å gjennomføre diagnostiske gentester (som var tilfelle med Siri). <<imgLink "ICD-2022s-1-A.PNG">> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Prediktiv test (0.5 poeng) – og at det skal gis genetisk veiledning før du eventuelt tar testen. Evt. samtykke skal være skriftlig (0.5 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mutasjonen som Siri fikk påvist i MSH2 var tap av ett basepar (A:T basepar) tidlig i exon 3. MSH2-genet har 16 exons som til sammen koder for 934 aminosyrer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvorfor denne mutasjonen med stor sannsynlighet vil gi opphav til et ikke-funksjonelt MSH2 proteinet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tap av ett basepar gir leserammeskift. I de aller fleste tilfeller fører den endrede leserammen etter mutasjonen til dannelsen av et prematurt STOP-kodon, og kraftig avkortet polypeptidkjede. I dette tilfellet ligger mutasjonen tidlig i exon 3 (av totalt 16 exons), noe som tilsier at det ikke vil produseres noe funksjonelt MSH2 protein. Ca 80% av inaktiverende mutasjoner i MSH2 er «truncation mutations» (dvs. gir opphav til leserammeskift og prematurt stopkodon). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig svar (dvs. leserammeskift og prematurt stop-kodon. At det er tidlig i polypeptidkjeden øker sannsynligheten for inaktivt produkt). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er lege på en helsestasjon. Du møter mor og et barn (jente) på 3 mnd. Mor forteller om et svangerskap uten komplikasjoner. Hun opplevde fødselen noe traumatisk da den endte i et hastekeisersnitt. Det var startvansker med amming, men det gikk seg til etter noen uker. Hun forteller at jenta smilte da hun var 5 uker gammel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vurderer du jentas sosiale utvikling (normal/unormal) ut ifra disse opplysningene? Begrunn kort. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Normal * Sosialt smil skal senest være til stede ved 6 uker. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * Normal (0.5 poeng) * Begrunnelse at sosialt smil skal være til stede senest ved 6 uker (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre milepæler/ferdigheter ser du etter sammen med det sosiale smilet i løpet av spedbarnets første leveuker? Nevn minst en. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Riktig svar kan være: * Blikkontakt * Løfte hodet eller snu hodet i mageleie </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for et av de overstående alternativene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke reflekser er det aktuelt å undersøke ved dette helsestasjonsbesøket (3 mnd)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Søke-sugerefleks * Mororefleks * Palmar griperefleks * Plantar griperefleks </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hver riktig refleks </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor er litt bekymret for at jenta virker litt slapp i muskulaturen når hun holder henne </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du undersøke dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Traksjonsreaksjon * Generell observasjon av tonus i ulike stillinger </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for traksjonsreaksjon (eller en beskrivelse som passer med traksjonsreaksjon), 0,5 poeng for generell observasjon </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor og barn kommer tilbake til deg på 6 mnd kontroll på helsestasjonen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva forventer du av jentas motoriske utvikling på dette tidspunktet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Riktige svar kan være: * God hodekontroll * Underarmstøtte/strakarmstøtte i mageleie * Ruller fra mage til rygg * Forsøk på krabbebevegelser * Pivotering i mageleie * Leker med hendene i midtlinjen i ryggleie * Griper etter leker * Snur hodet mot lydkilder * Sitter med støtte </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for et av overstående alternativer (inntil 4 riktige = 2 p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Jenta kommer til 1-års kontroll sammen med mor. Mor er bekymret for at jenta ikke går ennå og lurer fortsatt på om noe kan være galt. Du observerer at jenta setter seg opp selv og reiser seg opp fra gulvet og støtter seg til mors knær. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva gjør du? Begrunn hvorfor. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Samtale. Trygger mor på at det er normalt at ikke alle barn går ved 1 års alder, da median alder for å gå i Norge er 13 måneder og det først er ved 18 mnd at det anses som seint og noe som bør undersøkes videre. Du blir ikke bekymret fordi du ser at jenta setter seg opp selv og reiser seg opp til stående med støtte. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for samtale om at dette er normalt. * 0,5 poeng for å begrunne med en av tidsangivelsene * 0,5 poeng for at jenta setter seg opp selv * 0,5 poeng for at jenta reiser seg </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kristian bor sammen med sin søster Lise. Kristian har en alvorlig sinnslidelse og går på medisiner. Ofte vil han ikke ta medisinene, og problemet hans med vrangforestillinger øker. Lise vurderer å blande medisinen i maten hans. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan er de legale og etiske forholdene omkring det å blande medisiner i maten til en pasient? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> I helsetjenesten er det å blande medisiner i maten forstått som tvang. Det kreves et vedtak på tvang før man kan gjøre dette. Å blande medisiner i maten kan i noen tilfeller være risikofylt med tanke på tillit. Om det oppdages, kan det være ødeleggende for tillitsforholdet mellom helsearbeider og pasient. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å påpeke at dette er å anse som tvangsbehandling når det skjer i helsetjenestens regi. 1 poeng for å ha drøftet tillitsaspektet som er relevant både innenfor og utenfor helsetjenesten. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kristian har blitt dårligere. Lise mener han bør innlegges for psykiatrisk behandling. Kristian ønsker ikke slik behandling. Behandling under tvang blir da et tema. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan tvang i helsetjenesten etisk forsvares, når vi samtidig ønsker å respektere pasientens selvbestemmelse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det viktigste etiske forsvaret for tvang, er omsorg – at vi bryr oss. Samtidig vil vi mene at tvang ikke nødvendigvis bryter så sterkt mot selvbestemmelsen dersom det er «sykdommen som snakker» og ikke pasienten selv. I så fall er ikke pasienten samtykkekompetent, og vedkommende må respekteres må en annen måte (gjennom økt innslag av omsorg) enn ved respekt for selvbestemmelsen. Mennesker skal ha lov til å velge å gå til grunne i samfunnet vårt, men da må det være som et resultat av et valg, og ikke som et resultat av sykdom. Videre kan tvang forsvares utfra at pasienten vil være takknemlig for dette, dersom pasienten hadde vært seg selv, eller når pasienten blir seg selv. I tillegg har samfunnet enn etisk og legitim rett til å beskytte seg mot psykisk syke pasienter som er farlige for andre. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Her er det mange måter å formulere gode svar på, og de kan skjønnsmessig vurderes fra 1-3 poeng avhengig av hvor mange av momentene beskrevet ovenfor som er med. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I psykisk helsevern vurderer man å legge inn Kristian på tvang. Først av alt må samtykkekompetansen vurderes. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva vil det egentlig si å ha samtykkekompetanse? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Samtykkekompetanse vil i hovedsak si at pasienten har innsikt i og er i stand til å vurdere konsekvensen av sine valg etter at tilstrekkelig informasjon er gitt </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> For å få full pott her, er det viktig at studenten har skjønt at samtykkekompetanse i bunn og grunn er konsekvensforståelse. Om noen studenter velger å fokusere på hva som skal til for at en pasient //mangler// samtykkekompetanse, så er det greit. Men også her er det mest sentrale at pasienten åpenbart ikke er i stand til å ta valg eller forstå rekkevidden av egne valg. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Når Kristian vurderes innlagt med tvang, er det av hensyn til hans egen helse og muligheten til å gi ham god behandling. Det finnes imidlertid et annet kriterium for tvangsinnleggelse i psykisk helsevernloven som ikke primært er begrunnet i den mulige behandlingsgevinsten for pasienten. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags begrunnelse kan gis for tvunget psykisk helsevern dersom det ikke primært handler om behandlingsgevinst for pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> I loven er det to ulike veier inn til tvang - det såkalte «behandlingskriteriet» og «farekriteriet». Her er det altså «farekriteriet» vi er ute etter. Da er det samfunnshensynet som står på spill – hensynet til andre borgeres liv og helse. Pasienten behandles da egentlig ikke for sin egen skyld, men for å verne samfunnet mot fare. Farekriteriet rommer imidlertid også muligheten for tvang når pasienten utgjør en alvorlig fare for sitt eget liv. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Studentene har kun fått en enkel innføring i helseretten på dette feltet, og derfor skal ikke lista legges før høyt. 1 poeng til alle som klarer å si noe om «farekriteriet» eller på en eller annen måte nevner «samfunnshensyn» som er den vesentlige forskjellen fra behandlingskriteriet. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Behandling med tvang står i direkte motsetning til samtykkebasert behandling. Likevel er det mulig å peke på en dypere etisk forbindelse mellom de to. «Antatt samtykke» er et uttrykk som ofte dukker opp i etiske debatter rundt tvangsbehandling. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan «antatt samtykke» hjelpe oss til å tenke etisk godt rundt tvangsbehandling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> «Antatt samtykke» er ikke nevnt i lovgivningen vår, men har dukket opp i utredninger om psykiatrien ved flere anledninger. Tanken er at når pasienter behandles med tvang etter behandlingskriteriet, så bør behandlingen kunne bestå en test om at pasienten ville ha ønsket denne behandlingen om han/hun hadde tenkt klart. Eller sagt på en annen måte; pasienten vil være takknemlig for denne behandlingen når han/hun blir frisk. Denne måten å tenke på, er interessant etisk sett. Det ville eksempelvis være en stor etisk utfordring for oss om det store flertallet av pasienter som behandles med tvang i psykiatrien, i ettertid (når samtykkekompetansen er på plass) ikke opplevde tvangen som riktig, nyttig eller nødvendig. «Antatt samtykke» gjør det mulig å se en dypere etisk forbindelse mellom tvang og samtykke, slik at de ikke bare fremstår som enkle motpoler. Legitim tvang skal vi tenke som at tvangen må kunne være ønsket/villet fra pasienten når han/hun er seg selv igjen og sykdommen ikke lenger snakker. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dette er den mest «filosofiske» og kanskje mest krevende delen av besvarelsen. Samtidig ligger noe av svaret allerede implisitt i begrepet «antatt samtykke». Her må det brukes skjønn og sensor må vurdere hvor solid studentens forståelse er fra 0-2 poeng gitt svar-beskrivelsen ovenfor. Temaet er gjennomgått i forelesning </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Marianne er 35 år og gravid med sitt første barn. Ved kontroll i svangerskapsuke 28 måler legen et blodtrykk på 145/96. Dette er litt for høyt. Pga blodtrykket sendes hun til kontroll ved sykehuset. På sykehuset gjør man ultralyd som viser at barnet er litt lite i vekst og det besluttes derfor også å gjøre en blodstrømsmåling av uterinarterien </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv forløpet til uterinarterien fra aorta til kapillærene </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Aorta deler seg i to, høyre og venstre A. Iliaca communis, # denne deler seg i A. iliaca interna og A. iliaca externa. # A. uterina går av fra A. iliaca interna. # A. uterina kommer inn ved nedre del av uterus (istmus) og går oppover laterale side av uterus og # spiralarteriene går av fra A. uterina og inn i uterus. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½-1 poeng for delvis beskrivelse, 1,5 for komplett </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Siden Marianne er gravid, har hun en placenta i uterus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv placenta og navlesnorens anatomi makroskopisk </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Svaret må inneholde disse tre poengene: # Maternell side med lobes mot livmorveggen # Føtal side med hinner (chorion og amnion) og navlesnor, # 3 kar i navlesnor </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ -1 poeng for delvis beskrivelse, 1,5 for komplett </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mariannes blodtrykk fortsetter å stige til tross for at hun får blodtrykkssenkende medisiner. Det er også proteiner i urinen. Hun diagnostiseres med svangerskapsforgiftning. Fordi tilstanden til Marianne er alvorlig bestemmes det at hun må forløses med keisersnitt i svangerskapsuke 34. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ved et keisersnitt er det mange strukturer i bekkenet kirurgen må ta hensyn til. Hvilke organer finner vi i bekkenet hos kvinner? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Urinblæren, uterus, 2 eggledere, 2 ovarier (eggstokker), rektum </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,4 poeng per organ, totalt 2 (maks) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilket organ er det viktigste organet å tenke på i forbindelse med et keisersnitt (foruten uterus)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Urinblæren </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mariannes lille gutt ble født i svangerskapsuke 34^^+0^^ </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor mange uker er det da siden fertilisering fant sted? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 32 uker </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv utviklingen fra fertilisering til implantasjon (uke 1). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Utviklingen kan deles i flere stadier: # Fertilisering, hovedsakelig i egglederen. Celledeling; # 2-cellestadiet, # 4-cellestadiet, # morula, # blastocyst, og # implantasjon dag 6-8 <<imgLink "ICD-2022s-4-A.PNG">> </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ca ½ poeng pr stadium, maks 3 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En forskergruppe undersøkte sammenhengen mellom vitamin D- nivå og hjerteinfarktrisiko. Studien tok utgangspunkt i et tilfeldig utvalg på 55 000 innbyggere over 50 år i en norsk kommune. 5000 av dem hadde allerede hatt hjerteinfarkt på tidspunktet da studien startet. Serumkonsentrasjonen av vitamin D ble målt hos alle deltakerne. Lavt vitamin D-nivå, definert som serumkonsentrasjon lavere enn 50 nmol/L, forelå hos 22 000 av de 55 000 deltakerne, og hos 20 000 av de 50 000 deltakerne som ikke hadde hatt hjerteinfarkt. Deltakernes forekomst av førstegangs hjerteinfarkt ble deretter undersøkt gjennom de neste 10 årene, og forekomsten av førstegangs hjerteinfarkt i oppfølgingstida ble sammenliknet mellom personer med og uten lavt vitamin D-nivå. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags observasjonsstudie er dette? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kohortstudie. Studien har kjennetegnene til en kohortstudie: Personer med og uten eksponering (her: lavt vitamin D-nivå) inkluderes i en studie og følges deretter opp over tid, og risikoen for utfallet (her: førstegangs hjerteinfarkt) i oppfølgingstida sammenliknes så mellom eksponerte og ueksponerte personer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten må kunne oppgi at det er en kohortstudie (0,5 poeng) og begrunne det med hva som er kjennetegnene ved en kohortstudie (0,5 poeng): Personer med og uten eksponering følges opp over tid, og risikoen for utfallet i oppfølgingstida sammenliknes mellom eksponerte og ueksponerte personer. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forrige vignett: <<< En forskergruppe undersøkte sammenhengen mellom vitamin D- nivå og hjerteinfarktrisiko. Studien tok utgangspunkt i et tilfeldig utvalg på 55 000 innbyggere over 50 år i en norsk kommune. 5000 av dem hadde allerede hatt hjerteinfarkt på tidspunktet da studien startet. Serumkonsentrasjonen av vitamin D ble målt hos alle deltakerne. Lavt vitamin D-nivå, definert som serumkonsentrasjon lavere enn 50 nmol/L, forelå hos 22 000 av de 55 000 deltakerne, og hos 20 000 av de 50 000 deltakerne som ikke hadde hatt hjerteinfarkt. Deltakernes forekomst av førstegangs hjerteinfarkt ble deretter undersøkt gjennom de neste 10 årene, og forekomsten av førstegangs hjerteinfarkt i oppfølgingstida ble sammenliknet mellom personer med og uten lavt vitamin D-nivå. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Da studien startet, hva var prevalensen av lavt vitamin D- nivå, og hva var prevalensen av gjennomgått hjerteinfarkt? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Prevalensen av lavt D-vitaminnivå var 40% eller 0,4 (22000/55000), og prevalensen av gjennomgått hjerteinfarkt var 9% eller 0,09 (5000/55000). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig oppgitt prevalens. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forrige vignett: <<< En forskergruppe undersøkte sammenhengen mellom vitamin D- nivå og hjerteinfarktrisiko. Studien tok utgangspunkt i et tilfeldig utvalg på 55 000 innbyggere over 50 år i en norsk kommune. 5000 av dem hadde allerede hatt hjerteinfarkt på tidspunktet da studien startet. Serumkonsentrasjonen av vitamin D ble målt hos alle deltakerne. Lavt vitamin D-nivå, definert som serumkonsentrasjon lavere enn 50 nmol/L, forelå hos 22 000 av de 55 000 deltakerne, og hos 20 000 av de 50 000 deltakerne som ikke hadde hatt hjerteinfarkt. Deltakernes forekomst av førstegangs hjerteinfarkt ble deretter undersøkt gjennom de neste 10 årene, og forekomsten av førstegangs hjerteinfarkt i oppfølgingstida ble sammenliknet mellom personer med og uten lavt vitamin D-nivå. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor mange av dem med og uten lavt vitamin D-nivå var under risiko for å få førstegangs hjerteinfarkt i oppfølgingstida? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 20 000 med lavt vitamin D-nivå og 30 000 (dvs. 50 000 – 20 000) uten lavt vitamin D-nivå var under risiko for å få førstegangs hjerteinfarkt. (De resterende 5000 personene hadde allerede hatt hjerteinfarkt da studien startet og kunne således ikke få førstegangs hjerteinfarkt i oppfølgingstida.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert av de to riktige antallene. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Blant deltakerne med lavt vitamin D-nivå utviklet 2000 førstegangs hjerteinfarkt i oppfølgingstida på 10 år. Blant dem uten lavt vitamin D-nivå var det tilsvarende antallet 1500. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva var 10-årsrisikoen for førstegangs hjerteinfarkt blant deltakerne med og uten lavt vitamin D-nivå? Og hva var relativ risiko for førstegangs hjerteinfarkt blant deltakerne med, sammenliknet med dem uten, lavt vitamin D-nivå? Fortolk den relative risikoen med egne ord. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 10-årsrisikoen var 10% (eller 0,1) blant dem med lavt vitamin D- nivå (2000/20000) og 5% (eller 0,05) blant dem uten lavt vitamin D-vitamin (1500/30000). Relativ risiko = 0,1 / 0,05 = 2. Det betyr at risikoen var dobbelt så høy blant dem med lavt vitamin D-nivå som blant dem uten lavt vitamin D-nivå. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver korrekt 10-årsrisiko gir 0,5 poeng. Korrekt relativ risiko gir 0,5 poeng. Rett fortolkning gir 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Høy kroppsmasseindeks (KMI) kan øke risikoen for både lavt vitamin D-nivå og hjerteinfarkt. Lavt vitamin D-nivå kan øke risikoen for å få frakturer, og i tida etter en fraktur kan risikoen for hjerteinfarkt være økt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gitt disse sammenhengene, burde forskerne ha justert for KMI ved studiens start og/eller frakturer i oppfølgingstida i de statistiske analysene av sammenhengen mellom vitamin D- nivå og hjerteinfarktrisiko? Begrunn kort </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Forskerne burde ha justert for KMI fordi det er en konfunder (confounder, konfunderende faktor), det vil si en variabel som er assosiert med både eksponering og utfall, men som ikke er en følge av eksponeringen eller utfallet. Forskerne burde ikke ha justert for frakturer i oppfølgingstida fordi det er en mediator, det vil si en variabel langs årsakskjeden mellom eksponeringen og utfallet. (Frakturer som har forekommet i oppfølgingstida kan ikke ha påvirket vitamin D-nivået ved studiestart og kan således ikke være en konfunder.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Forskerne burde ha justert for KMI (0,5 poeng) fordi det er en konfunder (confounder, konfunderende faktor) (0,5 poeng), det vil si en variabel som er assosiert med både eksponering og utfall, men som ikke er en følge av eksponeringen eller utfallet. Forskerne burde ikke ha justert for frakturer i oppfølgingstida (0,5 poeng) fordi det er en mediator (0,5 poeng), det vil si en variabel langs årsakskjeden mellom eksponeringen og utfallet </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Forskerne fulgte opp med en studie der deltakere over 50 år fra nabokommunen ble invitert. Halvparten av deltakerne ble tilfeldig trukket ut til å få målt sitt vitamin D-nivå, og dersom lavt vitamin D- nivå ble påvist, ble deltakeren anbefalt å ta vitamin D-tilskudd. Etter 10 års oppfølgingstid var det ingen forskjell i risikoen for hjerteinfarkt mellom dem som ble trukket ut til å få målt vitamin D- nivå og de øvrige deltakerne. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kan være årsaker til at denne studien ikke fant samme resultat som observasjonsstudien? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En sannsynlig årsak er at observasjonsstudien er utsatt for konfunderende faktorer, mens i denne randomiserte studien er konfunderende faktorer likt fordelt mellom dem som ble randomisert til vitamin D-måling (og påfølgende behandling) og de øvrige deltakerne. Men det kan også være feilkilder ved den randomiserte studien: Kanskje var etterlevelsen av anbefalingen om D-vitamintilskudd lav, og kanskje førte fokuset på D- vitamintilskudd i kommunen (samt studieresultatet fra nabokommunen) til at også mange i den øvrige halvdelen av befolkningen sørget for å få målt sitt vitamin D-nivå og begynte med tilskudd? Dette kan ha ført til at det ikke var noen vesentlig forskjell i vitamin D-nivå mellom de to gruppene. (Tilfeldige feil kan også ha påvirket resultatene, men det kreves ikke at studentene kan nå.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Svar som beskriver at observasjonsstudien er utsatt for konfunderende faktorer, mens i denne randomiserte studien er konfunderende faktorer likt fordelt mellom dem som ble randomisert til D-vitaminmåling (og påfølgende behandling) og de øvrige deltakerne, gir 1,5 poeng. For å få det siste 0,5 poenget kreves at det også nevnes minst én feilkilde ved den randomiserte studien. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dersom resultatene fra den siste studien er valide, kan de overføres til britiske innbyggere i 60-årene? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, det kan de trolig. Det er ikke grunn til å tro at effekten av D- vitaminmangel /-tilskudd på hjerteinfarktrisiko er vesentlig annerledes blant nordmenn enn blant briter i noenlunde samme aldersgruppe. Både Norge og Storbritannia er populasjoner med nokså høy forekomst av D-vitaminmangel. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for begrunnet svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 53 år gammel kvinne dør etter kort tids sykdom hvor det ble påvist metastatisk kreftsykdom, med metastaser til hjerne og bekken. Det utføres en medisinsk obduksjon og ved undersøkelse av hjernevevet finner du metastaser i de 3 områdene markert med røde piler, altså et område markert med en sort diamant (♦), et område markert med et kryss (×), og et område markert med en stjerne (*). <<imgLink "ICD-2023-2-A.jpg">> Redigerte bilder fra Robbins and Cotran Atlas of Pathology. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) For hver av de tre områdene, angi hva området heter og beskriv hvilken del av hjernen det tilhører. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Området markert med en sort diamant (♦) er putamen. Putamen er en del av storehjernens basalganglier som ligger mellom capsula interna og capsula externa og danner sammen med globus pallidus (+) den såkalte nucleus lentiformis. # Området markert med et kryss (×) er hippocampus, som er et område i storhjernen som ligger basalt i hver av temporallappene. # Området markert med en stjerne (*) er cerebellum. Den er adskilt fra storhjernens med tentorium cerebelli. Den ligger dorsalt for fjerde ventrikkel og fyller bakre skallegrop. Den består av to hemisfærer som henger sammen i en midtre, litt forhøyet vertikal del (vermis). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ca. 0,25 poeng for hvert korrekte svar om hhv. Navn og hvilken del av hjernen de ligger i. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Fra forrige vignett: <<< En 53 år gammel kvinne dør etter kort tids sykdom hvor det ble påvist metastatisk kreftsykdom, med metastaser til hjerne og bekken. Det utføres en medisinsk obduksjon og ved undersøkelse av hjernevevet finner du metastaser i de 3 områdene markert med røde piler, altså et område markert med en sort diamant (♦), et område markert med et kryss (×), og et område markert med en stjerne (*). <<imgLink "ICD-2023-2-A.jpg">> Redigerte bilder fra Robbins and Cotran Atlas of Pathology. <<< </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi hvilken funksjon hver av de tre hjerneområdene har </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Putamen mottar fibre fra forskjellige deler av hjernebarken som inneholder grov, ubearbeidet informasjon som hjelper kroppen å utføre viljestyrte bevegelser som en del av det ekstrapyramidale systemet. Putamen er primært involvert generelt i motorisk kontroll, også finmotorisk kontroll som taleartikulasjon, men også dels involvert i kognitive funksjon, belønning, og avhengighet. # Hippocampus er sentralt for hukommelse, læring, orientering og konsolidering av faktakunnskaper. # Forenklet kontrollerer cerebellum-hemisfærene i hovedsak signaler fra den motoriske hjernebarken (gyrus precentralis), mens signaler fra ledd og muskler bearbeides i hovedsak i vermis. Cerebellum har en ren motorisk funksjon inkludert kontroll av kroppens stilling, muskeltonus, koordinering av bevegelser, og læring av bevegelser. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ca. 0,5 poeng for hvert korrekte svar om funksjon. Studentene trekkes ikke for følgefeil, men får poeng dersom man svarer fornuftig og riktig mtp beskrivelser av områder, selv om områdene er feil eller ikke besvart på deloppgave 1. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Før pasienten døde hadde pårørende påpekt flere endringer i hennes motoriske og kognitive funksjon. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke symptomer kan man forvente om man mister funksjon av henholdsvis området markert med en sort diamant (♦), området markert med et kryss (×), og området markert med en stjerne (∗). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Putamenskade vil blant annet kunne gi grovmotoriske utfall som ukontrollerte bevegelser, ataksi og endringer i muskeltonus, men også finmotoriske utfall som påvirket taleartikulasjon/språkfunksjon, samt dels også kunne påvirke kognitiv funksjon, belønning og avhengighet. Hippocampusskade vil kunne påvirke hukommelse, læring, og evne til å orientere seg, og er hyppig rammet i blant annet Alzheimers sykdom og andre demensformer. Cerebellærskade kan resultere i blant annet ataksi (ustøhet, famlende bevegelser, gangvansker), talevansker, tremor (skjelving), nystagmus (uvilkårlige rykkende øyebevegelser). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Ca. en tredel av poengene for hvert korrekt svar på hver av de tre strukturene. Studentene trekkes ikke for følgefeil, men får poeng dersom man svarer fornuftig og riktig mtp beskrivelser av funksjon for områder beskrevet i deloppgave 2. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du tar snitt fra området markert med en stjerne (∗), fikserer det, farger det med hematoksylin og eosin, og ser på det i mikroskop. Snittet under traff ikke selve hjernemetastasen, men viser normal morfologi. <<imgLink "ICD-2023-2-B.jpg">> </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke lagstrukturer (A, B og C) vises her, og hvilke celler er markert med blå piler i dette snittet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Viser HE-snitt fra cerebellar cortex i form av et tverrsnitt av et enkelt folium. C angir molekylærlaget (stratum moleculare) som ligger like under meningene. B angir kornlaget (stratum granulare) som ligger over den sentralt beliggende hvit substans (A). Mellom molekylærlaget og kornlaget er et enkelt lag med store Purkinje-celler (blå piler). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng per riktig svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Du tar også snitt fra de områdene i hjernen som viser sannsynlig patologiske lesjoner. Viser snittet normalt eller unormalt vev? Hvilken tilleggsmetode kan man som patolog bruke for å komme nærmere opphavet til disse cellene? <<imgLink "ICD-2023-2-C.jpg">> </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> # Studentene bør kunne gjenkjenne at vevet ser unormalt ut, uten at de kan forventes å stille diagnosen adenokarsinom. Bildet viser uregelmessig formede kjertler med atypiske epiteliale celler, med variasjon i størrelse og form på cellekjernene, og omgitt av desmoplastisk stromareaksjon, forenlig med adenokarsinom. # Her vil immunhistokjemi med markører for de vanligste opphavene til adenokarsinommetastaser til hjerne (colorektum, lunge, etc.) kunne gi en mer informasjon om opphav (studentene behøver ikke nevne hvilke antistoffer). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hvert riktig svar. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du møter mor og en gutt på 3 mnd. på helsestasjon hvor du er lege. Du snakker med mor og får vite at hun hadde en del plager under svangerskapet, med kvalme i starten og kynnere i slutten av svangerskapet. Fødselen startet spontant i uke 38, vaginal fødsel. Gutten var litt slapp i starten og ble behandlet for gulsott, men kom seg raskt. Han ammes og har lagt godt på seg. Mor forteller at gutten smilte da han var 5 uker gammel. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vurderer du guttens sosiale utvikling (normal/unormal)? Begrunn kort. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Normal Sosialt smil skal senest være til stede ved 6 uker </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Normal (0.5 poeng) Begrunnelse at sosialt smil skal være til stede senest ved 6 uker (0.5 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke andre ferdigheter ser du i løpet av spedbarnets første leveuker? Nevn minst en. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Riktig svar kan være: Blikkontakt Løfte hodet eller snu hodet i mageleie </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for ett av de overstående alternativene </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor er litt bekymret for at gutten virker litt slapp i muskulaturen når hun holder ham. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du undersøke dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Traksjonsreaksjon Generell observasjon av tonus i ulike stillinger </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for traksjonsreaksjon (eller en beskrivelse som passer med traksjonsreaksjon), 0,5 poeng for generell observasjon </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ikke egen vignett </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Bortsett fra undersøkelse av psykomotorisk utvikling, hvilke andre ting gjøres alltid ved denne helsestasjonskontrollen (3 mnd.)? (Nevn minst 2) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lengde/vekt, evt samtale om ernæring Vaksinasjoner (rotavirus, difteri, stivkrampe, kikhoste, poliomyelitt, HiB, hepatitt B, pneumokokk) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for hver av de ovenstående svarene Trenger ikke spesifisere hvilke vaksiner for å få full skår </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor og barn kommer tilbake på 6 mnd. kontroll på helsestasjonen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva forventer du å finne ved guttens motoriske utvikling på dette tidspunktet? (Nevn minst 4 ferdigheter) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Riktige svar kan være: * God hodekontroll * Underarmstøtte/strakarmstøtte i mageleie * Ruller fra mage til rygg * Forsøk på krabbebevegelser * Pivotering i mageleie * Leker med hendene i midtlinjen i ryggleie * Griper etter leker * Snur hodet mot lydkilder * Sitter med støtte </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for et av overstående alternativer (inntil 4 riktige = 2 p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Gutten kommer til 1-års kontroll sammen med mor. Mor er bekymret for at han ikke snakker noe ennå og lurer fortsatt på om noe kan være galt. Du observerer at gutten ser ut til å følge med på hva mor sier og kommer med en del lyder. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva gjør du? Begrunn hvorfor. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Samtale. Trygger mor på at det er normalt at barn ikke snakker noe særlig ved 1 års alder. Du blir ikke bekymret fordi du hører at gutten lager lyder og ser ut til å forstå noe av det mor sier til han. Ved 1 års alder er det vanlig at de kan uttrykke noen få enkeltord, som mamma og pappa. Normalt ordforråd ved 2 års alder er 20-50 ord. Språkforståelsen kommer forut for språkproduksjonen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng for samtale om at dette er normalt. * 0,5 poeng for å begrunne med en av tidsangivelsene * 0,5 poeng for at gutten lager lyder * 0,5 poeng for at gutten følger med på hva mor sier/språkforståelse kommer før talespråk </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Denne oppgaven går ut på kunnskap om binyrehormoner og deres fysiologi. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Angi hvilke hormoner som lages i binyrebarken og i hvilket anatomisk lag deres syntese finner sted i binyrebarken. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Zona Glomerulosa: Aldosteron * Zona Fasciculata: Kortisol * Zona Reticularis: Kjønnshormoner </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for riktig benevnelse soner, 0,5 poeng for delvis riktig benevnelse soner, 1 poeng for riktig benevnelse hormoner, 0,5 poeng for delvis riktig benevnelse hormoner Ved benevnelse riktige hormoner og riktige lag, men der feil hormon står i feil lag, blir trukket 0,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En ung kvinne har over måneders tid utviklet utmattelse, ufrivillig vekttap, muskelsmerter, kvalme, og abdominale smerter, og hun er i tydelig redusert allmenntilstand. Du mistenker at hun kan ha primær binyrebarkssvikt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hormonelle prøver og hvilke elektrolytter vil du måle? Forklar også hvilke utslag du forventer på prøvene dersom mistanken din stemmer. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Hyponatremi * Hyperkalemi * Lav kortisol * Høy ACTH * Lavt blodsukker * (Høy Renin) * (Lav Aldosteron) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for benevnelse ACTH, kortisol, Na, K, og Renin eller Aldosteron 1 poeng for riktig benevnelse av hva som forventes lavt og høyt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Hyperkortisolisme og behandling med høydose glukokortikoider har betydelig innvirkning på glukosemetabolismen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv de fysiologiske effektene av kortisol på glukose- metabolismen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Øker glukoneogenesen i lever * Hemmer glykogensyntesen i lever * Øker glukagonutskillelse i pankreas * Senker glukoseopptak og glukoseforbruk i muskulatur, øker insulinresistensen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å nevne mekanismer i alle 3 (lever, pankreas, muskulatur), 0,5 poeng for å nevne 1 eller 2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Endogen hyperkortisolisme fører til langtidseffekter som vi omskriver som Cushings syndrom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Benevn de andre fysiologiske effektene (andre enn glukosemetabolismen) av kortisol som du kjenner til </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Øker blodtrykket (salt og væskeretensjon) * Reduserer cellulær og humoral immunitet (immunsuppresjon) * Hemmer fibroblast proliferasjon og kollagen dannelse (muskel/hudatrofi) * Osteoporose (Hemmer osteoblaster, stimulerer osteoklaster) Det er selvfølgelig flere effekter av kortisol, men ovenfornevnte effekter vurderes her som kliniske viktige og obligate å nevne for å få poeng </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng: nevner minst 3, 0,5 poeng nevner minst 2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Primær hyperaldosteronisme er en kjent årsak til alvorlig hypertensjon, men Aldosteron er også fysiologisk en viktig regulator av blodtrykket. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv de fysiologiske faktorene som fører til utskillelse av Aldosteron. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Angiotensin II * Redusert plasma Na+ eller økt plasma K+ * ACTH </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for benevning alle 3 (ATII, Na/K, ACTH), 0,5 poeng for benevning av 1 eller 2 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Noradrenalin virker hovedsakelig på α-adrenerge og litt på β- adrenerge reseptorer. Adrenalin virker i lik grad på α og β- adrenerge reseptorer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv de fysiologiske effektene som oppstår ved henholdsvis α-adrenerg og β-adrenerg stimulering. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> α: Mydriase/pupilldilatasjon (α1), Vasokonstriksjon (α1), Bronkokonstriksjon (α1), Insulin redusert / Glukagon økt (α2) β: Vasodilatasjon (β2), Hjerteakselerasjon (β1), Bronkodilatasjon (β2), økt hjertekontraktilitet (β1) Det finnes flere alfa og beta adrenerge effekter en det som er nevnt ovenfor, og der studentene har benevnt ytterligere effekter riktig, har det blitt belønnet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng Nevner 2 mekanismer for hhv α og β 1 poeng Nevner minst 1 og < 2 for hhv α og β </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Androgener produsert i binyrebarken har liten klinisk betydning i menn, men har mer betydning for androgen effekt i kvinner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn androgenene som lages i binyrebarken. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> * Androstendion * DHEAS/DHEA </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> * 1 poeng: Nevner Androstendion og DHEAS/DHEA * 0,5 poeng: Nevner enten Androstendion eller DHEAS/DHEA Mange har nevnt testosteron alene, og det gir 0,5 poeng Påfallende mange har nevnt østradiol/østrogen, når det her spørres om binyreandrogener, og da har det blitt satt 0 poeng uansett ytterligere svar </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I førskolealder sover barn typisk 2 perioder i døgnet før det blir vanlig å bare sove om natten. Når man blir gammel, er det ikke så uvanlig igjen å sove noe på dagtid. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan søvnen reguleres gjennom døgnet </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Reguleringen beskrives ved 2-prosessmodellen (0,5p): homeostatisk faktor (hvor lenge man har vært våken) (0,5p), adenosin (viktig signalstoff) (0,5p) og døgnrytme, vanligvis ca. 24 timer (0,5p), n. suprachiasmaticus (NSC) (0,5p). Melatonin har en plass i døgnrytmereguleringen, men er veldig avhengig av lyset som treffer netthinnen. I forholdet til utgangs-spørsmålet med å sove henholdsvis 2 og perioder ila døgnet er ikke melatonin så relevant, men er absolutt relevant for etableringen av døgnrytme generelt (0,5p). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5p for å ha med og forklare de ulike punktene som angitt over, opptil totalt 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor tenderer en som gammel til å gjenoppta «barnslig» søvnmønster med å sove på dagen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Utover våkenhetsperioden/dagen hoper det seg opp med homeostatiske faktorer, bl.a. adenosin – som øker søvntrykket. N. suprachiasmaticus (NSC), viktigste indre døgnrytmeklokke i kroppen, jobber for å stå imot det økende søvntrykket, men gir seg/tar pause med 24-timers mellomrom. Kapasiteten til å stå imot søvntrykket reduseres ofte med årene i NSC – det blir færre celler og synkronisiteten reduseres (ulike celler med ulik «klokkedrift»). Derfor kan en bli tvunget til å sove med kortere mellomrom (middagshvil etc.). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Utover våkenhetsperioden/dagen hoper det seg opp med homeostatiske faktorer, bl.a. adenosin – som øker søvntrykket (0,75p). N. suprachiasmaticus er en indre døgnrytmeklokke som jobber mot økende søvntrykk utover dagen (0,75p), men tar pause med ca. 24 timers mellomrom og lar søvntrykket få full effekt – legger til rette for innsovning (0,75p). NSC-kapasiteten til å stå imot søvntrykk utover våkenhetsperioden synker ved aldring (0,75p). Totalt 3 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan endres typisk søvnkvaliteten med aldring? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lavere andel dyp søvn, mer lett søvn iblandet våkenhet – lavere søvneffektivitet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Dårligere søvnkvalitet, spesifisert som minst 2 av 3 punkter over – 1,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type søvn dominerer intrauterint og første tiden etter fødsel? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> REM-søvn. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> REM-søvn, 1 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Normal innsovning hos nyfødte skiller seg fra normal innsovning senere i livet – beskriv kort på hvilken måte </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Innsovning hos nyfødte skjer typisk til REM-søvn. Etter noen mnd endres innsovning mot NREM-søvn. Som voksen kommer første REMperiode typisk først etter 70-90 minutter. Ved såkalt Sleep Onset REM søvn som ses ved narkolepsi, kommer første REM-periode innen første 15 minutter etter innsovning. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Innsovning – overgang fra våkenhet til REM-søvn hos nyfødte (0,75p) i motsetning til innsovning mot NREM senere i livet (0,75p), totalt 1,5p. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Å være i arbeid er en viktig kilde til god helse og livskvalitet. Samtidig er mange arbeidstakere i Norge også eksponert for en del arbeidsmiljøfaktorer som kan påvirke helsa negativt. To barndomsvenner av deg startet som henholdsvis frisørlærling og bakerlærling to år før du startet på medisinstudiet. De har nå tatt fagbrev og jobber fulltid. Begge sier de trives veldig godt i jobben, men er samtidig bekymret for forskjellige helseplager de tror henger sammen med arbeidet. Bakeren opplever litt tetthet i brystet og tungpusthet på jobb, mens frisøren opplever utslett på hendene som kommer og går. Frisøren har dessuten litt smerter i nakke og skuldre av og til. På lørdagskvelder blir de sjeldent med på fest, for da er de ofte slitne etter travle arbeidsdager. Arbeidstilsynet har en arbeidsmiljømodell som kan brukes ved vurdering av arbeidsmiljø i ulike yrker. I denne modellen deles arbeidsmiljøfaktorene inn i 5 hovedgrupper. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) List opp de fem hovedgruppene av arbeidsmiljøfaktorer som Arbeidstilsynets arbeidsmiljømodell foreslår å bruke ved vurdering av arbeidsmiljø i ulike yrker. (Alternativ inndeling hvor kjemiske og biologiske faktorer ikke er slått sammen kan også aksepteres). <br><br> Gi totalt minst 7 og maks 12 konkrete eksempler på relevante arbeidsmiljøfaktorer hos frisører, fordelt på følgende vis: <br> - Minst 3 relevante eksempler på kjemiske og/eller biologiske arbeidsmiljøfaktorer som kan påvirke helsa. <br> - For hver av de andre 4 hovedgruppene av arbeidsmiljøfaktorer, angi minst ett konkret eksempel på en arbeidsmiljøfaktor som kan påvirke helsa. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kjemiske og biologiske arbeidsmiljøfaktorer bør nevnes. (Det aksepteres også om disse er delt i to hovedområder) <br> Som eksempler på kjemiske arbeidsmiljøfaktorer godkjennes: <br> 1) Vann/vått arbeid <br> 2) Frisørkjemikalier som kan medføre hud- og luftveisirritasjon <br> 3) Frisørkjemikalier som kan medføre allergiske reaksjoner, <br> både hud og luftveier 4) Hårfargemidler<br> 5) Blekemidler<br> 6) Permanentvesker<br> 7) Desinfeksjonsmidler/rengjøringsmidler <br> 8) Nikkel i sakser/frisørutstyr <br> 9) Andre kjemikalier eller faktorer som kan vurderes klart relevante. <br><br> Som eksempler på biologiske faktorer godkjennes: <br> 1) «smittefare» fra bakterier / virus / sopp <br> 2) Inneklimaproblematikk/fuktskader (sannsynligvis lite vanlig) <br> 3) Andre eksempler som vurderes klart relevante. <br><br> Fysiske arbeidsmiljøfaktorer bør nevnes. Som eksempler godkjennes: <br> 1) støy (hårfønere, mye folk og omgivelser) <br> 2) temperatur (varme instrumenter (krølltang, rettetang, etc.) <br> 3) Andre eksempler som vurderes klart relevante. (Vibrasjonspåvirkning godkjennes ikke som eksempel fordi det ikke er typisk for frisøryrket) <br><br> Psykososiale arbeidsmiljøfaktorer bør nevnes. Som eksempler godkjennes:<br> 2) Uheldige belastninger som resultat av kontakt med andre, - f.eks. «håndtere kundens følelser» mm. <br> 3) Mobbing/seksuell- eller annen trakassering. <br> 4) Vold og trusler om vold.<br><br> Organisatoriske arbeidsmiljøfaktorer bør nevnes. Som eksempler godkjennes:<br> 1) Ubekvem arbeidstid: (Skiftarbeid/ helgearbeid)<br> 2) Krav til arbeidstempo/produksjonspress/ «stress» ofte provisjonsbasert <br> 3) Potensielt lite variert arbeid/mye rutiner. <br> 4) Andre eksempler som vurderes klart relevante. <br><br> Ergonomiske forhold bør nevnes. Dette dreier seg om tilpasning mellom mennesket og arbeidet. Som eksempler godkjennes: <br> 1) Ensidig gjentakende arbeid.<br> 2) Ubekvemme arbeidsstillinger, f.eks. stående arbeid, arbeid med hender over skulderhøyde.<br> 3) Andre eksempler som vurderes klart relevante.<br> Det er akseptabelt å slå sammen kjemiske og biologiske arbeidsmiljøfaktorer, eller å slå sammen organisatoriske og psykososiale faktorer, eller å ha 6 hovedgrupper. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.4 poeng for hvert riktig hovedområde med minst ett konkret eksempel, inntil 2 poeng totalt. <br> 0.25 poeng for hvert øvrig riktig eksempel på kjemiske og/eller biologiske arbeidsmiljøfaktorer, inntil 0.5 poeng totalt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Frisøren som opplever hudplager knyttet til yrket, sier at hen får oppbluss av utslett på hendene særlig når hen driver med farging av hår. Yrkeshygieniker har funnet ut at hårfargeproduktet hen bruker på jobb inneholder parafenylendiamin, et stoff som kan tenkes å være årsak til plagene. Hen utredes blant annet med en epikutantest, også kalt «lappetest» på hudavdelingen, hvor lav konsentrasjon av stoffet (fortynnet i buffer) settes direkte på huden på ryggen og legges under okklusjon. Når lappetesten avleses etter 72 timer er det tilkommet en reaksjon med erytem, infiltrasjon, papler og vesikler i området for lappetesten. Testen vurderes som positiv </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type hypersensitivitetsreaksjon er årsak til den positive epikutantesten? Beskriv de immunologiske mekanismene (viktigste hovedtrekk/faser). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det bør angis hvilken type hypersensitivitetsreaksjon og hva som karakteriserer denne i korte trekk. Svaret under er mer utfyllende enn hva som forventes fra studentene. De sentrale og poenggivende momenter er understreket. <br> Testen viser at det er en kontakt hypersensitivitet og er en type IV hypersensitivitetsreaksjon. <br> Kontakt hypersensitivitet er karakteristisk som en eksemliknende tilstand i kontaktpunktet med allergenet i huden. Type IV reaksjoner er de eneste som ikke er antistoffmediert, men aktiveres av antigen-spesifikke T-celler. Dette gir en T-celle mediert inflammasjon og videre lokale ødemer i vevet. Siden responsen er forsinket, kalles de delayed-type hypersensitivitets reaksjoner (DTH). I et sensibilisert individ vil ny kontakt med allergenet gi en DTH respons som vanligvis har en topp rundt 48 timer. Reaksjonen avtar når antigen elimineres/brytes ned. Sensibiliseringsfasen tar mellom 10-14 dager. I vårt tilfelle er det nærliggende å tenke at et av frisørkjemikaliene har bidratt som et sensibiliserende stoff og har bundet seg til proteiner i huden. Dette fører til at proteinene modifiseres og oppfattes som fremmede. I tilfellet med parafenyldiamin (PPD) vet vi at det er en lavmolekylær forbindelse som nettopp fungerer som et allergent hapten. De generelle immunologiske mekanismene i sensibiliseringsfasen for type IV hypersensitivitetsreaksjon kan detaljeres som følger; De modifiserte proteinene presenteres for antigen-presenterende celler (APC) i huden slik som Langerhanske celler (LC) og dermale dendrittiske celler (dDC). Antigenet presenteres via MHCII for T-celler (CD4+). Dette induserer videre en Th1 type respons med sekresjon av INF-y. I tilfeller hvor frisørkjemikaliet bidrar til en lipid-løselighet av antigenet, kan antigenet også presenteres via MHCI for CD8+ Tceller. Dette vil også føre til en aktivering av cytotoksisk effektor responser (CTL). Det er vanlig at både CD4+ og CD8+ er involvert i en kontakt hypersensitivitets reaksjon. I prosessen blir også keratinocyttene aktivert, og disse bidrar med cytokiner (TNF, IL-1) som ytterligere bidrar til aktivering av LC og sDC. Effektor-fasen: Etter at et individ er sensibilisert kan et nytt møte med samme antigen (som i epicutan testen) fremlokke en raskere respons, som vanligvis topper seg rundt 48 timer. Denne fasen er karakterisert ved en rask produksjon/sekresjon av proinflammatoriske cytokiner, og videre lokal rekrutering av effektor T celler og monocytter. Histologisk kan man vanligvis se de første endringene etter 4-8 timer, ved tilstrømming av mononukleære celler rundt blodårer. Deretter invaderer makrofager og lymfocytter dermis og epidermis, med en topp rundt 48-72 timer. Haptenspesifikke Tceller stimuleres av DC til å ekspandere. Blant disse er sees CD4+ Th1 celler (INF-y produserende) og CD8+ T celler (opptil 50%). CD8+ cellene er essensielle for vevskaden og dannelsen av lokale ødemer. Informasjon om PPD som ikke forventes, men som nevnes her for læring; Vi vet at den lavmolekylære forbindelsen PPD svært effektivt penetrerer hårstrå og har en sterk evne til å binde proteiner. Kun en liten andel (<1%) av PPD penetrerer huden, og mesteparten detoksifiseres (vha acetylering via Nacetyltransferase enzymer). Resterende PPD kan imidlertid oksideres til protein-reaktive PPD. Det brukes også oksiderende stoffer i hårfargingsprosessen som kan ytterligere eskalere denne reaktiviteten. PPD i kontakt med proteiner i dermis/epidermis fører til at det den virker som et allergent hapten. Den økende bruken av hårfargingsmidler blant unge har også ført til en økende forekomst av kontakt allergi. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Type IV hypersenstivitetes reaksjon/kontakt hypersensitivitet: 0.5 poeng Immunologiske mekanismer hvor følgende stikkord er med gir 0.25 pr stikkord, maks 2 poeng; DTH, T-celle mediert, ikke-antistoff mediert, hapten, proteinmodifikasjon/konfigurasjonsendring/fremmed, antigenpresenterende celler (APC, dDC, LC), MHCII/CD4+, MHCI/CD8+, sensibliseringsfase, effektorfase </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Bakeren har over noen år opplevd plager med rennende nese og øyne på jobb. Siste året har hen også fått plager med tetthet i brystet og tungpusthet ved eksponering for melstøv i arbeidet sitt. Ved utredning påvises blant annet positiv prikktest mot mel. (Prikktesten utføres ved at løsning med allergenet stikkes inn i huden med en kanyle, og resultatet avleses etter 15 minutter.) Hen får beskjed om at hen har utviklet typisk bakerastma. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type hypersensitivitetsreaksjon er knyttet til en slik «bakerastma»? Beskriv de immunologiske mekanismene (viktigste hovedtrekk/faser) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Svaret under er mer detaljert enn hva som forventes fra student. De sentrale og poenggivende delene er understreket. <br> Bakerastma er en av de mest kjente typer yrkesbetinget astma. Klassisk bakerastma er forårsaket av en allergisk reaksjon som er knyttet til Type 1 hypersensitivitet, og kan være forbudet med atopi/forhøyet IgE. En baker kan bli eksponert for flere typer allergener som proteiner/enzymer fra hvete, rug, bygg, sopp, planteproteiner og midd. α-amylase/trypsin inhibitorer ser ut til å være de allergener som er mest vanlig knyttet til bakerastma. Komplekser av hvete/midd allergener kan også være involvert. Eksponering kan skje ved inhalasjon av hele melpartikler som deponeres i slimlaget i bronkier. Dette kan videre føre til at assosierte allergener løser seg i bronkial væsken og trigger en IgE-mediert allergisk respons. Vanlige mekanistisk forløp i en type 1 hypersensitivitetsreaksjon som forventes kort oppsummert; Sensibiliseringsfase: Antigen presenteres via T-lymfocytter som stimulerer B-celler til å produsere IgE antistoff via Th2 medierte cytokiner (IL-4, IL-13). Antigenspesifikke IgE vil binde seg til mastcellene. Akutt-fasen: Ved neste eksponering (gjerne repeterende) med samme antigen binder de seg til IgE på mastcellene. Dette fører til histamin frigjøring (degranulering i løpet av minutter) og leder til en rekke akutt-fase reaksjoner; histamin påvirker muskel celler (sammentrekning), blodårer (sammentrekning), slimkjertler (slim sekresjon og produksjon), nerver og eosinofile celler. Det skilles også ut leukotriener og prostaglandiner som fører til ytterligere påvirkning. Ved astma vil denne reaksjonen spesielt foregå i lungene (alveoler) og føre til både økt slimproduksjon som hemmer oksygen-opptak og inflammasjonsresponser (via cytokin frigjøring). Kronisk astma/re-modellering: Ved gjentatte/vedvarende eksponeringer vil immunreaksjoner (histaminer, cytokiner, aktiverte eosinofiler, monocytter, granulocytter) før til vevsdestruksjon og reorganisering. Det kan da oppstå lokalt kollagen deponering som kan forringe lungenes elastisitet. Ytterligere detaljer som ikke forventes, men kan bidra positivt (ytterligere 0.5 poeng); Aktivering av lokale mast celler, basofiler samt eosinofile celler vil videre bidra til å danne et lokalt inflammatorisk miljø. Viktige cytokiner som IL-4, IL-5, IL-8, IL-13, GM-SCF, TNF, hvor spesielt IL-4/IL-13 bidrar til en Th2 forskyving viktig for IgE produksjon. IL-5 er spesielt viktig for rekruttering av eosinofiler i senere fase. Eosinofiler bidrar til å forsterke inflammasjon og videre i vevsdestruksjon (egen sekresjon proteaser og ytterlige via rekruttering av og bidrag fra nøytrofile celler). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Type I hypersensitivitet/Atopi/forhøyet IgE: 0.5 Utgreiing som inneholder følgende stikkord gir 0.25 poeng/stikkord (opp til 2); Allergisk respons/IgE mediert, Allergen (evt 1x0.25 for å spesifikke antigen som nevnt over), inhalasjon/bronkier, sensibilisering/sensitisering, akutt-fase, kronisk fase, antigensensitisering via IgE bundet til mast-celler, degranulering/histamin/leukotriener/fysiologiske responser, cytokiner/inflammasjon/vevsendring </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Yrkesastma kan oppstå både gjennom allergiske og ikkeallergiske mekanismer knyttet til ulike typer eksponering i forskjellige yrker. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv kort hva slags forhold/eksponeringer som kan gi eller forverre astma gjennom ikke-allergiske mekanismer, og gi inntil 3 eksempler. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Irritant-induced/irritantindusert: klorgass, ammoniakk, SO2, NO2, ozon, dieseleksos og fosgen. Gjelder i prinsipp alle irritanter som kan inhaleres til nedre luftveier. <br> «Provokers»: Kulde og tørr luft </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for å nevne irritantindusert/irritanter som kan inhaleres til nedre luftveier. <br> Inntil 0,25 poeng for 3 riktige konkrete eksempel </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Allergener som kan gi allergisk astma deles ofte inn i forbindelser med lav og høy molekylærvekt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gi minst ett eksempel fra hver av disse gruppene </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> HMW: melstøv, dyreproteiner, pollen og husstøvmidd <br> LMW: isocyanater (lakk, skumplast, m.m.m.), persulfater (hårblekemiddel), metallsalter (typisk ved sveising) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,25 poeng for et riktig eksempel på HMW <br> 0,25 poeng for et riktig eksempel på LMW </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn, i prioritert rekkefølge, det som i det arbeidsmedisinske fagmiljøet anses som 6 hovedgrupper av forebyggende tiltak for å beskytte arbeidstakere mot skadelig luftforurensning i arbeidsmiljøet. Gi minst ett konkret eksempel for hver hovedgruppe. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Eliminasjon (fjerning av den skadelige påvirkningen, f.eks avslutte produksjonen av en vare.) <br> 2) Substitusjon (bytte ut et helsefarlig kjemikalium med et annet som representerer en lavere helserisiko ved eksponering) <br> 3) Innkapsling eller lukking av prosesser (herunder regner vi avtrekkskap på laboratorier) <br> 4) Ventilasjon/avtrekk (herunder regner vi allmennventilasjon og punktventilasjon) <br> 5) Organisatoriske/administrative tiltak (herunder arbeidstidsbegrensninger, rullering, opplæring og skriftlige arbeidsinstrukser) <br< 6) Personlig verneutstyr, er alltid siste utvei, som kun skal brukes dersom man ikke klarer å sikre et fullt ut forsvarlig arbeidsmiljø med øvrige tiltak. (Eks. maske, klær, briller m.m.). <br> NB: Punkt 3 og 4 er ofte sammenslått til ett område: «tekniske tiltak». </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Gi 0,2 poeng for hver riktig hovedgruppe med relevant eksempel, opp til maks 1 poeng, og 0.5 poeng hvis også rekkefølgen er riktig. Dvs. at dersom man har slått sammen punkt 3 og 4 til ett område, «Tekniske tiltak», så vil det fortsatt være mulig å få full pott. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En mor kommer til deg som fastlege med datteren på 2 år. Moren er bekymret for språkutviklingen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv normale utviklingsmessige milepæler for språk, motorikk, kognisjon, sosialt og emosjonelt ved 2 års alder. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Kognisjon – barnet koordinerer sanseinntrykk og motoriske ferdigheter. Begynnende målrettet atferd. Utsatt imitasjon. <br> Objektpermanens.<br> Språk – to-ordssetninger. Ordspurt. Sier ca. 200 ord. <br> Overekstensjon og underekstensjon. <br> Motorisk – Går stødig (senest 18 mnd.), tegner streker med tegneblyant (fra 18 mnd.) (hoppe og løpe ikke forventet før 2,5 år). <br> Sosialt – egosentrisitet, men gjenkjenner andres følelser. <br> Begynnende empati. Tilknytning til foreldre. Interessert i andre barn, men leker mest ved siden av. <br> Emosjonelt – emosjoner er differensiert fra uro og tilfredshet til primære emosjoner som frykt, sinne, frustrasjon, tristhet, glede og overraskelse. Barn fremviser egosentrisk empati. Trenger hjelp fra voksne til å regulere følelser. Bruker andres emosjonelle uttrykk for å avgjøre hva de skal gjøre i usikre situasjoner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,4 poeng for hvert område som er besvart riktig, opptil 2 poeng totalt. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke faktorer kan påvirke språkutviklingen i spe- og småbarnsalder? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hvor mye språk de hører (barn med foreldre som snakker mye og stiller mange spørsmål har mer avansert tidlig språkutvikling). Dette påvirkes av: <br> - Barnets personlighet og hvor interessert er det i å prate<br> - Barnets hørsel<br> - Omsorgssituasjon <br> - Eventuell somatisk og/eller psykisk sykdom hos barn og/eller foreldre <br> - Samspill med andre barn og voksne (f.eks. går barnet i barnehage?) <br> - Kognitivt evnenivå (ord som ‘borte’ og ‘titt-tei’ kommer når barnet mestrer objektpermanens, korttidshukommelse, prosesseringshastighet, selektiv oppmerksomhet og nysgjerrighet) <br> - Sosioøkonomisk status (mer barnerettet tale, snakker mer med barna, bruker flere ord, foreldrestil, turtaking, hvor mye barnet blir lest for, antall og variasjon på bøker i hjemmemiljø) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, opptil 2 poeng totalt </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Mor og datter kommer tilbake til deg som fastlege noen år senere. Datteren har blitt 9 år og går i 4. trinn på skolen. Språkutviklingen har bedret seg og er nå normal. Hun er mye alene og har vansker med å få venner. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke risikofaktorer og beskyttende faktorer kan påvirke sosial fungering hos jenta? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hvor mye språk de hører (barn med foreldre som snakker mye og stiller mange spørsmål har mer avansert tidlig språkutvikling). Dette påvirkes av: <br> - Barnets personlighet og hvor interessert er det i å prate<br> - Barnets hørsel<br> - Omsorgssituasjon <br> - Eventuell somatisk og/eller psykisk sykdom hos barn og/eller foreldre <br> - Samspill med andre barn og voksne (f.eks. går barnet i barnehage?) <br> - Kognitivt evnenivå (ord som ‘borte’ og ‘titt-tei’ kommer når barnet mestrer objektpermanens, korttidshukommelse, prosesseringshastighet, selektiv oppmerksomhet og nysgjerrighet) <br> - Sosioøkonomisk status (mer barnerettet tale, snakker mer med barna, bruker flere ord, foreldrestil, turtaking, hvor mye barnet blir lest for, antall og variasjon på bøker i hjemmemiljø) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hvert riktig svar, inntil 1 poeng for risikofaktorer og inntil 1 poeng for beskyttende faktorer. Totalt maks 2 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Jenta, som nå har blitt 16 år, kommer alene til deg som fastlege. Hun ønsker p-piller og har en fast kjæreste på 27 år. Hun har blitt flyttet i fosterhjem for ett år siden etter at far brått døde i en bilulykke og mor ble alvorlig skadet og senere utviklet opioidavhengighet. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv prinsippene for den bio-psyko-sosiale forståelsesmodellen for psykisk lidelse og gjør en vurdering av jentas risiko for psykisk lidelse utifra denne. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Del 1: I en bio-psyko-sosial forståelsesmodell for psykisk lidelse samvirker biologiske, psykologiske og sosiale risiko- og beskyttende (resiliens) faktorer i et tidsperspektiv (bakenforliggende, utløsende, vedlikeholdende) for utvikling og opprettholdelse av psykisk lidelse. Forståelsen går ut på at det sjeldent er enkeltfaktorer som fører til psykisk lidelse, men et samspill mellom de biologiske, psykologiske og sosiale elementene i et liv. I tillegg vil økt risiko kunne oppveies av økt resiliens, og motsatt. <br> Del 2: Jenta har hatt en delvis trøblete barndom med bekymring rundt språkutvikling i tidlig alder (utviklingsforstyrrelse), samt sosiale vansker på barneskolen (utenforskap). Hun har opplevd tap av nære relasjoner i form av brått dødsfall hos far (traume). Mor utviklet en opiodavhengighet slik at hun ikke kunne ta vare på jenta (omsorgssvikt ifb. legemiddelavhengighet). Hun har nå en eldre kjæreste og ønsker p-piller, noe som tyder på at hun er seksuelt aktivt med en mye eldre mann (seksuell risikoatferd). Det fremkommer ikke noen beskyttende faktorer. <br> Jenta vil ha en forhøyet risiko for psykiske helseplager. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Totalt maks 2 poeng: 0,5 for hvert element i del 1 (bio-psykososial-modell) til inntil 1 poeng, og 0,5 for hvert element i del 2 (vurdering av jenta) til inntil 1 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett I Norge regnes man som helserettslig myndig ved 16 år, og man kan bestemme selv om man vil motta helsehjelp eller ikke. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Drøft dette kort opp mot kunnskap om frontallappens (prefrontal cortex) funksjoner og modningsprosess. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Del 1: Frontallappens (prefrontal cortex) funksjoner er primært de eksekutive funksjonene i form av å planlegge, organisere, lage strategier for å gjennomføre langsiktige mål, regulere følelser, evaluere, vurdere og endre atferd, ha flere perspektiver samtidig (metaperspektiv), konsentrere seg, holde fokus over tid. Frontallappen er dermed helt sentralt i evnen til selvregulering (adaptiv styring av aktivitet, reaksjoner og følelser) og til å lage planer for å justere atferd for å nå langsiktige mål. Frontallappen er den delen av hjernen som er senest ferdig utviklet og den modnes frem til midten av 20-årene (ca. 25 år). I ungdomstiden er det høy aktivitet i det limbiske området (sterke følelser) og relativ lav utøvende kontroll fra prefrontal cortex, slik at ungdom kan ha vanskeligheter med langtidskonsekvenstenkning. De velger lettere det som gir mest belønningsfølelse her og nå. <br><br> Del 2: Dette kan ha betydning for en 16-årings evne til å ta helsemessige valg, da samtykkekompetanse i helsespørsmål blant annet fordrer at man kan anerkjenne mulige konsekvenser av ulike behandlingsalternativer (som er en frontallappsfunksjon). Eventuelt kan man tenke at en 16 åring har såpass god evne til metaperspektiv og konsekvenstenkning pga. frontallappens modning at det er en fornuftig aldersgrense for helsemessig samtykkekompetanse. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Totalt maks 2 poeng <br> Del 1: 0,5 poeng per riktig svar om frontallappens funksjon inntil 1 poeng, og 0,5 om rett modningstid. <br> Del 2: 0,5 poeng ved drøfting der frontallappsfunksjoner drøftes opp mot helserettslig myndighet ved 16 års alder. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En tidligere frisk kvinne på 68 år får påvist kreft i tykktarmen. Hun blir operert med fjerning av deler av tykktarmen. Operasjonen utføres som en åpen operasjon. Dette er en operasjon som gir en god del smerte, og for å gi god smertelindring får hun i forbindelse med operasjonen epidural smertebehandling. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan vil du klassifisere smerten etter en slik operasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette er en akutt postoperativ smerte som i hovedsak er nociseptiv. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> «Akutt» eller «postoperativ» gir et poeng, og «nociseptiv» gir et poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten får blant annet et lokalanestesimiddel som del av den epidurale smertelindringen </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvor og hvordan virker lokalanestesimidler smertelindrende som del av epidural smertebehandling? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Hemmer innstrømming av Na+ ioner gjennom spenningsstyrte natriumkanaler i primære afferente nociseptor. Slik stoppes ledningen av smertesignaler i nociseptorene. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å angi at man blokkerer natriumkanaler (1/2 poeng dersom man kun angir «ionekanaler». Et poeng for å angi at effekten er (i hovedsak) på primære afferente nociseptor (1/2 poeng om man angir «ryggmargsnært») </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Pasienten får senere tilbakefall av kreftsykdommen med spredning til lever og bukhule. Hun får regelmessig opioider mot smertene, men angir likevel mye smerter. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) I forbindelse med kreftsmerte brukes ofte begrepet «total pain». Hva innebærer dette? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> «Total pain» favner både de somatiske (kroppslige/nociseptive) delene av smerten og at psykologiske, sosiale og åndelig/eksistensielle forhold kan oppleves og rapporteres som smerte. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for å angi somatisk, psykologiske, sosiale og åndelig/eksistensielle. Trekk med ½ poeng for hvert element som mangler. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Til tross for at man etter hvert får lindret pasientens jevne smerte (bakgrunnssmerte) effektivt, opplever hun flere ganger daglige episoder med intense smerter (smertetopper) som varer 15 til 45 minutter. I forbindelse med disse episodene får hun ekstradoser med opioider. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvorfor vil det ikke være hensiktsmessig å dosere de regelmessige dosene med opioider så høyt at de også dekker smertetoppene? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Med tilstrekkelig høye faste doser av opioider, ville pasienten få mye bivirkninger, først og fremst i form av trøtthet/sløvhet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Et poeng for å angi «mye bivirkninger», et poeng til for å konkretisere med «trøtthet/sløvhet» </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Opplevelsen av smerten og smerteadferden kan påvirkes av psykologiske forhold. Hva er sentrale elementer i hvordan psykologiske forhold påvirker smerte? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Psykologiske forhold kan først og fremst påvirke fortolkningen av smerten. Tidligere erfaringer, angst (inkludert verstefallstenkning), depresjon og oppmerksomhet er særlig relevante psykologiske faktorer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for «fortolkning». 1 poeng for å konkretisere hvilke faktorer som kan være særlig aktuelle. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du jobber som fersk LIS1 i et akuttmottak på et lokalsykehus. Det kommer inn en 6 måneder gammel gutt til mottak. Gutten er frisk fra tidligere, født til termin. Foreldrene forteller at de har sett en kul i guttens høyre lyske i forbindelse med bleieskift. Kulen er mer synlig når gutten gråter, og det virker å plage han. Du undersøker gutten, og finner slik som foreldrene har beskrevet en kul i høyre lyske. Du palperer etter begge testikler, du kan kjenne testikkelen i pungen på høyre side, men venstre side fremstår tom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ut fra det du har lært om lyskekanalens anatomi og fosterutvikling, kan du forklare hva som er «feil»/diagnosen på denne guttens høyre og venstre side? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette barnet har mest sannsynlig et høyresidig lyskebrokk og venstresidig kryptorkisme evt. jojo-testikkel. Alle disse tilstandene er relativt vanlig hos små guttebarn, og kan forklares med lyskekanalens anatomi og nedvandringen av testiklene i fosterlivet Det er mest sannsynlig høyresidig lyskebrokk da du palperer testikkelen i pungen på samme side, dermed er det IKKE testikkelen du palperer i lyskekanalen. Lyskebrokk hos guttebarn er relativt vanlig nettopp fordi testiklene vandrer igjennom lyskekanal under fosterutviklingen, og det er ikke alltid at peritoneum har trukket seg tilbake. På venstre side er skrotum tom, ergo ingen testikkel å kjenne. Det vanligste er at testikkelen da ikke har fullført hele nedvandringen altså en testisretensjon. Det er mer sjeldent at testikkelen mangler helt. Noen ganger kan en kjenne en kul i lysken, og dette er da den ikke nedvandrende testikkelen og IKKE et lyskebrokk. Guttebarn har også noen ganger litt overivrig cremastermuskulatur, slik at testikkelen heises opp i lyskekanalen – en såkalt jojo-testikkel. Dette kan også være grunnen til at du ikke kjenner noe testikkel i venstre skrotum. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Studentene trenger ikke komme med riktig diagnose, men de skal kunne resonere rundt lyskekanalen at den er en vandringstunnell for testiklene, og at denne nedvandringen gjennom kanalen gir økt risiko for lyskebrokk eller ikke fullstendig nedvandring av testikkelen. <br><br> 1 poeng for riktig forklaring m.t.p brokk på høyre side og at dette skyldes at testiklene vandrer igjennom lyskekanalen. 1poeng for riktig forklaring m.t.p problemer knyttet til nedvandring av testikkel (testisretensjon/kryptorkisme), de skal da ha med at testiklene vanligvis vandrer igjennom lyskekanalen i fosterlivet, men at det ikke alltid er slik at de er på plass i pungen ved fødsel. De trenger ikke å ha med cremaster muskel og at denne kan trekke testiklene opp i lyskekanalen, men det er et pluss. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er lyskebåndet, hvilken struktur danner lyskebåndet og hvor går lyskebåndet til og fra? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Lyskebåndet er et ligament (ligamentum inguinale) som dannes av aponeurosen til den ytre skrå bukveggsmuskelen (m. obliquus externus). Lyskebåndet strekker seg fra spina iliaca anterior superior (SIAS på os ilium) til skambeinet (os pubis). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for å nevne at lyskebåndet er et ligament og at det dannes fra m. obliquus externus – de må ha med begge svarene for å få poeng. ½ poeng for å si riktig utstrekning av lyskebåndet – de må ha med begge svarene for å få poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Kan du forklare hva lyskekanalen egentlig er i grove trekk, og hvilke strukturer som danner den? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er en avlang traktformet kanal/tunnel som skaper en passasje mellom innsiden og utsiden av bukhulen. Den dannes av de skrå fremre bukveggsmusklene og deres muskelfester, der de ulike musklene og deres ligamenter danner tak, gulv og veggene i tunnelen. <br><br> Kommentar etter sensur: her var det veldig mange studenter som blandet femoralkanalen og lyskekanalen. Det er viktig å huske at dette er to forskjellige «åpninger» for komplett forskjellige strukturer selv om de ligger i nærheten av hverandre. Lyskebåndet danner gulvet i lyskekanalen, men samtidig taket i femoralkanalen. Lyskekanalen går derfor på oversiden av lyskebåndet og femoralkanalen på undersiden. Det var også mange som ikke har skjønt forskjellen på lyskebåndet og lyskekanalen – dette er viktig å forstå. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for å forklare at det er en kanal/tunnel, de må ha med en forklaring om at kanalen går mellom innsiden og utsiden av bukhulen. <br> 1 poeng for å forklare at lyskekanalen går gjennom de skrå fremre bukveggsmusklene og deres fester, og at det er disse som danner de ulike delene av tunnelen med gulv, vegger og taket av kanalen. Det er ikke et krav om at de vet hvilke spesifikke muskler og ligamenter som danner henholdsvis tak (m. obliquus internus og m. transversum abdominis), gulv (lig. inguinale), framvegg (aponeurosen til m. obliquus externus) og bakvegg (transversalis fascien) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken/hvilke strukturer går igjennom lyskekanalen hos henholdsvis en mann og en kvinne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ligamentum teres uteri / det runde livmorbåndet / ligamentum rotundum hos kvinner. <br> Sædstrengen/funikkelen hos menn. Funikkelen består av flere komponenter: ductus deferens/vas deferens som er selve sædledere og kar (vener og arterier til testikkelen). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ½ poeng for riktig struktur hos kvinner, alle varianter av svaralternativene godkjennes. ½ poeng for riktig struktur hos menn, godkjennes enten å si funikkelen/sædstrengen. Alternativet er å si strukturene som går i funikkelen nemlig ductus deferens/vas deferens og blodkar. Å kun si ductus deferens er ikke nok. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) På bilde ser du et lyskebrokk, kan du forklare om bildet viser et indirekte eller direkte lyskebrokk og hvorfor? [img[ICD-2024-2E.png]] </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Dette er et indirekte, også kalt lateralt brokk. Grunnet til dette er fordi brokket kommer ut lateralt for a. epigastrica inferior og går den indirekte veien igjennom lyskekanalen (i motsetning til direkte brokk/mediale brokk som går direkte igjennom bukveggen) <br><br> Kommentar etter sensur: mange studenter har sagt at dette er et medialt brokk siden de ser enden på brokket medialt på bildet, men det er hvor brokk kommer ut gjennom bukveggen som definerer dette. Ser en på bildet ser en at åpningen ligger lateralt for a. epigastrica inferior, dvs. tilsvarende indre lyskeåpning. I tillegg er det veldig tydelig at brokket passerer gjennom lyskekanalen sammen med funikkelen. Det var også mange studenter som snakker om hvilket brokk som er farligst. Det er ikke noe forskjell i alvorlighetsgrad på en medialt eller lateralt brokk. Derimot er det større fare for at et femoralbrokk, dvs et brokk som går gjennom femoralkanalen som ligger under lyskebåndet, skal bli inkarserert. Dog er ikke dette noe det ble spurt om på eksamen. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng indirekte brokk (lateralt brokk godkjennes også). <br> 1 poeng for å forklare at det er fordi brokket kommer ut lateralt for a. epigastrica inferior og er et brokk som går igjennom lyskekanalen. <br> En får poeng for å forklare at brokk defineres ut fra lokalisasjon i forhold til a. epigastrica inferior, evt godkjennes også hvis en kun har sagt at det er et lateralt brokk siden det går gjennom lyskekanalen/ut gjennom indre lyskeåpning. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken type lyskebrokk er det mest sannsynlig at barnet har, og hvorfor er denne typen brokk mer vanlig hos guttebarn? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Det er mest vanlig med indirekte/laterale lyskebrokk hos guttebarn. Dette skyldes embryogenesen. Når testiklene, som ligger retroperitonealt i fosterlivet, vandrer nedover mot pungen, vandrer de igjennom lyskekanelen. De dytter en del av peritoneum og magemusklene med seg nedover. Når testiklene er på plass i pungen vil en del av peritoneum legge seg rundt testikkelen, og laget skifter da navn til tunica vaginalis, mens den bakre delen av peritoneum vil trekke seg tilbake inn i bukhulen igjen. Hos nyfødte gutter som har brokk skyldes dette at peritoneum ikke har trukket seg helt tilbake ennå. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 1 poeng for indirekte brokk (lateral brokk godkjennes også) <br> 1 poeng for riktig forklaring med embryogenesen, med vandring av testikkelen og at tunica vaginalis ikke har lukket seg og trukket seg tilbake. Godkjenner også om de heller bruker peritoneum som begrep enn tunica vaginalis. <br> Studentene får poeng for riktig forklaring om hvorfor laterale brokk er mer vanlig hos små guttebarn selv om de evt. har sagt at det er et medialt brokk. Dvs. om en har forklart at en type brokk er vanligere hos guttebarn grunnet embryogensen og nedvandring av testikkel gjennom lyskekanalen har vi valgt å gi poeng. Da nesten ingen hadde tatt med at begrepene tunica vaginal/peritoneum har vi ikke krevd dette for å gi poeng. <br> Mediale brokk er sjeldent hos barn, men vanlig hos eldre da det skyldes en defekt i selve bukveggen grunnet belastning/slitasje over tid. Både kvinner og menn kan få både laterale og mediale lyskebrokk. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Å være i arbeid er en viktig kilde til god helse og livskvalitet. Samtidig er mange arbeidstakere i Norge også eksponert for en del arbeidsmiljøfaktorer som kan påvirke helsa negativt. <br> Fire av dine venner arbeider fulltid i følgende yrker: Sveise- og platearbeider, kokk, tømrer og bonde med melkedrift. Alle fire trives veldig godt med sine arbeidsoppgaver, men er samtidig bekymret for forskjellige helseplager de tror henger sammen med arbeidet. Du er medisinstudent og alle ønsker tips fra deg: Sveiseren opplever av og til plager i form av muskelsmerter, feber, hodepine og slapphet utover arbeidsdagen, slik at han må gå rett til sengs når han kommer hjem fra jobb. Som regel føler han seg bedre neste dag og kan gå på arbeid igjen da. Ingen økt tungpusthet ved fysisk aktivitet. <br> Bonden opplever også lignende plager, kanskje særlig på dager hvor hun har drevet med nedvask av fjøs. Hun har også litt hudplager på hendene, i form av litt tørrhet/flassing og perioder med rødlig utslett. <br> Kokken har lignende hudplager og plages ofte med hoste i løpet av arbeidsdagen, særlig de ukene han jobber ettermiddagsskift når det meste av matlagingen foregår. <br> Tømreren opplever arbeidsdagen som en god treningsøkt, men blir enkelte dager nummen i fingrene, særlig når han har jobbet mye med meisling av flis og betong. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Dersom disse plagene skyldes eksponeringer i arbeid, hvilke eksponeringer er da mest sannsynlig årsaker til plagene for hver enkelt av dem? <br> (Svar stikkordsmessig hvor du knytter yrket og eksponering sammen, f.eks: Luftveisplager hos baker – melstøv og bakeforsterkere; Hudplager på hendene hos kokk – ….. osv) </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> (Både bonden og sveiseren beskriver symptomer forenelig med inhalasjonsfeber. For bonden kan man også mistenke akutt form av hypersensitivitetspneumonitt som kan ha identisk klinisk bilde) Eksponeringer som bør beskrives i svaret: <br> Sveiser: <br> Eksponering for zinkholdig støv/sveiserøyk (som fører til metallfeber/sveisefeber, mandagsfeber) Bonde: Eksponering for organisk støv inneholdende produkter fra vekst av bakterier og/eller sopp. Særlig er det vist at endotoksiner fra cellemembranen til gram negative bakterier i organisk materiale i fjøset, kan gi organic dust toksic syndrom (ODTS). Dersom man tenker i retning av akutt hypersensitivitetspneumonitt vil det da også være produkter fra sopp og bakterier som er mest sannsynlig årsak til slik sykdomsutvikling. <br> Hudplager på hendene med flassing og rødlig utslett hos bonde og kokk er arbeidsutløst kontakteksem inntil det motsatte er bevist. Kontakteksem kan i disse yrkene utløses både av hudirritanter og hudsensibiliserende agens, eventuelt gjerne en kombinasjon av begge deler. Eksponeringer som forårsaker yrkesutløst kontakteksem i disse yrkene og som bør nevnes i svaret er: <br> Bonde og Kokk: <br> Hudirritanter: Vått arbeid i form av hanskebruk og håndvask. Kontakt med vaskemidler, hanskematerialer og kremer. <br> Bonde: Vask av jur/melkeorganer, sprøytemidler, olje og diesel m.fl. <br> Kokk: Svært hyppig håndvask, kontakt med hudirriterende matvarer. <br> Potensielt sensibiliserende agens: <br> Bonde: Kuepitel mm <br> Kokk: Diverse matvarer <br< Bonde og Kokk: Allergener fra hanskematerialer, konserveringsmidler i vaskemidler, kremer mm. <br> Det at kokken opplever plager med hoste bør gi mistanke om eksponering for luftveisirritanter som f.eks stekeos, sprayvaskemidler, evt melstøv for noen etc. Det at plagene kommer i forbindelse med tilberedelse av varmmat bør gi klar mistanke om stekeos som årsaksfaktor. Eksponeringen for stekeos vil ofte være høyest på ettermiddagen når det er mest kunder i restauranten. <br> Nummenhet i fingrene hos tømrer relatert til arbeid med meisling bør gi mistanke om akuttsymptomer på eksponering for vibrasjon fra håndholdt vibrerende verktøy. På sikt kan dette føre til håndarm-vibrasjonssyndrom (HAVS) som kan gi varig og alvorlig invaliditet med betydelig tap av funksjon og redusert livskvalitet. De senere årene har flere arbeidsmedisinske avdelinger opplevd en økning i antall utredninger av relativt unge tømrere med alvorlig og invalidiserende HAVS. Eksponering som er mest sannsynlig årsak til nummenhet i eksempelet over og som bør være med i svaret er: <br> Vibrasjon fra håndholdt vibrerende verktøy (meiselhammer) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Sveiser <br> Slapphet og feber: <br> - sveiserøyk/støv inneholdende metaller/sink 0,5p <br> Bonde <br> Slapphet og feber <br> - organisk støv med komponenter fra sopp/bakterier 0,5p <br> Hudplager: <br> - hudirritanter – håndvask, hanskebruk, vask av jur, vaskemidler, oljer, diesel, sprøytemidler, m.m. 0,5p <br> - hudsensibiliserende agens: f.eks. dyrepitel/proteiner/konserveringsmidler/gummimykgjørere m.m. <br> Kokk <br> Hudplager <br> - hudirritanter – håndvask, hanskebruk, vaskemidler, div matvarer 0,5p <br> - hudsensibiliserende agens: f.eks. div matvarer, vaskemidler, /konserveringsmidler/gummimykgjørere m.m. <br> Hoste <br> - Luftveisirritanter, særlig stekeos 0,5p (evt bare sprayvaskemidler 0,25 p) (-melstøv kan også være relevant hos noen, men er mindre sannsynlig) <br> Tømrer <br> Nummenhet i fingrene: <br> - vibrasjon fra håndholdt vibrerende verktøy 0,5p <br> Maks 0.4 poeng for hver plage og yrke med riktig/relevant eksempel på type eksponering, inntil 2,4 poeng totalt. 0,1 poeng ekstra ved god og tydelig formulering som viser god forståelse. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Gårdbrukere kan oppleve episoder med feberfølelse og slapphet i relasjon til en del arbeidsoppgaver, som for eksempel nedvask av fjøs. Som regel er dette en selvbegrensende tilstand som ikke regnes å ha potensiale til å utvikle seg til kronisk eller alvorlig sykdom. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles denne tilstanden og hva er den immunologiske mekanismen som ligger til grunn for reaksjonen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Tilstanden det siktes til her er inhalasjonsfeber/Organic dust toxic syndrome (ODTS). <br> For bonden vil dette typisk utløses av endotoksiner (lipopolysakkarider; LPS) fra gram-negative bakterier og tilstanden kalles da ODTS. Eksponering med LPS vil binde seg til pattern recognition receptors (PRRs) av type toll-like reseptor 4 (TLR4) assosiert med CD14 på monocytter/makrofager. Dette vil utløse en storm av cytokiner som TNF-α, IL-β og IL-6. Disse cytokinene er direkte årsak til feberresponsen (virker på feber senteret i talamus). <br> (For sveiseren kan eksponering for metaller i sveisestøv føre til oksidativt stress og celle skade. Dette kan igjen føre til inflammasjonsresponser som involverer samme cytokiner og derfor utløser feber. Tilstanden kalles ofte gjerne «sveisefeber»/«zinkfeber» -NB det er ikke spurt om sveiseren i oppgaven og dette gir ikke poeng, men er nevnt her til orientering). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Navn på tilstanden: Organic Dust Toxic syndrom: 0,5 poeng, evt 0,25 poeng dersom det bare er brukt begrepet inhalasjonsfeber. <br><br> Immunologiske mekanismer hvor følgende stikkord er med gir maks 1,5 poeng fordelt på følgende vis; <br> LPS binding til reseptorene TLR4 (gjennom CD14) – 0,5 poeng, Cytokiner-feber 0,5 poeng. Spesifikt cytokiner (0,25 pr cytokin, riktig opp til 0,5 poeng, dvs det holder å nevne to av disse for full score på denne); TNF-α, IL-1β, IL-6. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke luftbårne eksponeringer er vanlige på kjøkken? Og hvilke egenskaper ved disse eksponeringene er det som avgjør hvilke deler av luftveiene som kan affiseres? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Bioaerosoler, kanskje først og fremst stekeos, men noen steder også melstøv. Aerosoler fra renggjøringsmidler. Noen steder kan det også være røyk fra vedfyrte ovner. <br> Aerosolenes svevegenskaper avgjør i stor grad hvilke deler av luftveiene som affiseres, dette oppgis gjerne som aerodynamisk diameter, hvilket igjen avgjøres av aerosolenes størrelse, tetthet og fasong. Forenklet kan man si at aerosoler med gode sveveegenskaper har større tendens til å trenge lengre ned i luftveiene, mens aerosoler med aerodynamisk diameter over 10 µm i liten grad kommer seg helt ned til de nedre luftveier. Stekeos har en stor andel små og ultrafine partikler som kan trenge langt ned i luftveiene. <br><br> Det er også et vesentlig poeng at per vektenhet aerosol, (f.eks milligram) så vil antallet aerosoler øke dess mindre hver enkelt partikkel er, og det samme gjelder alle disse aerosolenes samlede overflate som kan reagere med omgivelsene. Dersom målinger viser at det er omtrent 1 mg aerosoler per kubikk luft i arbeidsmiljøet, så er vil dette vanligvis utgjøre en større helsefare dersom aerosolene er små, enn hvis de er relativt store. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> -Bioaerosoler/stekeos 0,5p, (evt også melstøv, rengjøringsmidler, røyk) <br> -Aerodynamisk diameter/sveveegenskaper/størrelse 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Både bonden og kokken beskriver hudplager som man kan mistenke kan ha sammenheng med yrkeseksponering. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke mulige underliggende årsaker kan være knyttet til arbeidsrelaterte hudplager? Hvilke tre ulike immunologiske årsaksmekanismer kan ligge bak? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> De underliggende hudplagene kan skyldes a. allergisk sensitisering (type I hypersensitivitesreaksjon), b. kontakt eksem/kontakt hypersensitivitetsreaksjon (hypersensitivitetsreaksjon IV), c. Irritant utløst kontakt dermatitt. Symptomene kan også oppstå som en følge av kombinasjon av disse. <br><br> Mulighet a: Type I hypersensitivites reaksjon kjennetegnes av forhøyet IgE og er allergisk betinget. Effektor celler involvert er mast-celle som binder IgE antistoff (gjennom FC reseptor) og leder til frigjøring av histaminer/eikosanoider. Reaksjon vil være utløst av enten hud/oral eksponering av allergener presentert til dendrittiske celler– for eksempel dyreepitel, proteiner i dyreurin (bonde) eller også som følge av oral sensibilisering. Sensibiliseringen og aktivering av mastceller i hud fører til frigjøring av histaminer/eikosanoider. Reksjonen er drevet av typiske Th2 cytokiner, slik som IL-4, IL-5 og IL-13. Aktivering av hudens epitelceller vil bidra til ytterligere aktiveringer gjennom frigjøring av alarminer (IL-25, IL33 og TSLP). <br> Mulighet b: Sensibilisering gjennom type IV hypersensitivitets reaksjon. Dette er en celle-mediert respons (ikke antistoff mediert) som involverer sensibilisering av dendrittiske celler. Denne kan utløses av stoffer som virker som haptener, og som bidrar til at egne proteiner endres og gjenkjennes av dendrittiske celler/hud makrofager som «fremmed». Et irritant stoff (kjemikalie slik som isocyanater) kan for eksempel bidra til haptendannelse. Aktiveringen leder til en celle-mediert respons (CD4+ eller CD8+ T-lymfocytter) og frigjøring av mediatorer som fører til vevskade (sår eller blemmer). <br> Mulighet c: Irritantutløst kontaktdermatitt. Hudirritasjon –gjennom eksponering av kjemiske stoffer som virker som hudirritanter, og direkte tap av inntakt hudbarriære.Tap av inntakt hudbarriære er en inngang både for den kjemiske irritanten, allergener og mikroflora. Tilstanden fremmer aktivering av keratinocytter i hud og øker produksjonen av epidermale cytokiner (IL-1β, IL-1α, INFƴ og IL-2) samt oppregulering av celle-adhesjons molekyler. Det skjer både en aktivering og økning av antallet antigenpresenterende celler i hud, og videre en infiltrasjon av Tlymfocytter. Klinisk minner derfor irritant indusert eksem mye om allergisk kontakt eksem. <br> Kombinerte muligheter: En hudirritasjon med sår og sprukken hud, kan lettere lede til at allergener trenger gjennom hud og kan presenteres for dendrittiske celler og videre til allergi/eksem i hud. <br> Risikoen for å utvikle defekt hudbarriære kan økes gjennom genetiske disposisjoner knyttet til epitel barriærer (for eksempel defekter i fillagrin) og polymorfismer knyttet til inflammasjonsgener, patogen sensing, immune toleranse og cellulær aktivering. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Oppgaven gir maks 3 poeng. <br><br> Underliggende årsakstyper, totalt 0.9 poeng fordelt på; <br> Allergisk/type I (0.3 poeng), kontakt hypersensitivitet/type IV (0.3 poeng), irritasjons mediert (0.3 poeng) <br> Mekanismer (totalt 2.1 poeng, 0.1 poeng pr stikkord gitt beskrivelse i riktig sammenheng, kan være ujevnt fordelt mellom mekanismer); <br> Allergi/hypersensitivitets reaksjon I: IgE, FC mediert mastcelle aktivering, histaminer/eicosanoider, Th2 cytokiner (IL-4, IL-5, IL13), alarminer fra epitelceller (TSLP, IL-25, IL-33), antigen presentasjon, allergener <br> Kontakt hypersensitivitets reaksjon (IV): Celle-mediert, hapten indusert (kjemikalie), egne proteiner registreres som fremmed av dendrittiske/antigenpresenterende celler i hud, T-celle respons, vevsdestruksjon (proteaser, cytoksiske effekter). Irritant kontakt dermatitis: Keratinocytter, cytokiner (IL-1beta, ILa, IL-2, INF-y), permeabel hudbarriære/tap av hudbarriære, dendrittiske celler, Influx T-lymfocytter. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Onkelen din jobber som ortoped og ber deg passe deg for diatermirøyk og stråling når du skal på operasjonsstua i praksis. Han nevner også at det blir stadig travlere på jobb, særlig på nattestid da operasjoner som ikke fikk plass på dagtid i økende grad utføres av vaktteamet på natt. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn, i prioritert rekkefølge, det som i det arbeidsmedisinske fagmiljøet anses som 5 hovedgrupper av forebyggende tiltak for å beskytte arbeidstakere mot skadelig eksponering i arbeidsmiljøet. Gi minst ett konkret eksempel for hver hovedgruppe, knyttet til arbeidsmiljøet for en ortoped. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Eliminasjon (fjerning av den skadelige påvirkningen, f.eks velge konservativ behandling heller enn operasjon. <br> 2) Substitusjon (bytte ut et helsefarlig kjemikalium med et annet som representerer en lavere helserisiko ved eksponering, bytte ut helsefarlig prosess med mindre helsefarlig prosess) Bytte ut latexhansker med allergivennlige operasjonshansker. Droppe diatermikniv, og bruke skalpell. Droppe gjennomlysning ved reponering og heller ta kontrollbilde etterpå. <br> 3) Tekniske tiltak: isolere person fra faren eller den negative påvirkning ved hjelp av tekniske barrierer. (f.eks Innkapsling eller lukking av prosesser). Bygge inn bedre barrierer mellom røntgenapparat som brukes til gjennomlysning på operasjonsstua og personellet (f.eks. mobil eller fastmontert blyskjerm og blypanel). Ventilasjon/avtrekk (herunder regner vi allmennventilasjon og punktventilasjon) – integrert punktavsug på diatermikniven. Godt dimensjonert ventilasjonsanlegg på operasjonsstue. <br> 4) Organisatoriske/administrative tiltak (herunder arbeidstidsbegrensninger, rullering, opplæring og skriftlige arbeidsinstrukser). Opplæring og informasjon om helsefare ved eksponering for stråling, diatermirøyk etc. Spesifikk informasjon om risikofaktorer som kan ha betydning ved evt. graviditet, f.eks. ionisering. Ved St. Olavs hospital er det f.eks. bestemt at gravide ikke skal utføre gjennomlysningsprosedyrer på røntgen, operasjon, intervensjon/angiografi, eller assistere pasienter under svangerskapet. Riktig merking med fareskilt i lokaler hvor det oppbevares eller benyttes ioniserende stråling. Opplæring i bruk av riktig personlig verneutstyr dersom bruk av dette er nødvendig for å sikre et fullt forsvarlig arbeidsmiljø etter at andre tiltak er vurdert. Redusere mengden arbeidsoppgaver med potensielt skadelig eksponering. Opplæring i rett arbeidsteknikk / arbeidsutførelse f.eks. knyttet til gjennomlysning med fokus på å redusere eksponering (kortest mulig tid ved gjennomlysning, færrest mulig bilder etc.). Planlegging av tilstrekkelig ressurser. Ved f.eks. sommerferieavvikling kan det bli mye eksponering dersom det er planlagt med for få ortopeder i traumemottak. Overholde forbud mot nattarbeid slik at det kun er ø-hjelp som utføres på natt, og ikke oppgaver som kan vente til neste dag. <br> 5) Personlig verneutstyr, er alltid siste utvei, som kun skal brukes dersom man ikke klarer å sikre et fullt ut forsvarlig arbeidsmiljø med øvrige tiltak. (Eks. sprutvern (munnbind, skjerm), klær, briller, åndedrettsvern m.m.). Bruk av riktig åndedrettsvern ved behov. Bruk av blyfrakk/blykrage/blybriller/vernetøy ved mulig eksponering for stråling. [img[ICD-2024-2E_.png]] </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Gi 0,2 poeng for hver riktig hovedgruppe med relevant eksempel, opp til maks 1 poeng, og 0.5 poeng hvis også rekkefølgen er riktig. (Det kreves altså ikke så utfyllende besvarelse som gitt i eksemplet ovenfor for å få 1,5 poeng). I mange tilfeller er det vanskelig å finne realistiske eksempler under «eliminasjon» slik at dersom dette mangler kan man likevel gi 1,5 poeng hvis alt ellers er godt besvart. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Kari er lykkelig gravid med Per, og de ser begge frem til å bli foreldre. Nå har de fokus på at svangerskapet skal bli en god opplevelse. Kari har fått tilbud om en tidlig ultralydundersøkelse. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Gjør kort rede for mulige formål med denne undersøkelsen og diskuter hvorfor den har vært politisk kontroversiell i Norge. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Mulige formål: Gi økt kunnskap om fosteret, dels med tanke på 1) behandlingsmuligheter før, under eller etter fødsel, 2) muligheten for å kunne avbryte svangerskapet ved et alvorlig avvik, og 3) å kunne vite om et mulig fosteravvik, for å være mentalt forberedt. Tidlig UL har vært kontroversiell pga undersøkelsen kan påvise risiko for trisomier, og i særdeleshet er det Trisomi 21/ Downs syndrom som utgjør kjernen i kontroversen. På grunn av dette er første trimester ultralyd regulert som «fosterdiagnostikk», mens ultralyd i 18. uke er vurdert som å være en rutinemessig del av svangerskapsomsorgen. Politikerne har vært bekymret for om man legger til rette for «sortering» dersom man innførte tidlig UL og hva dette får å si for samfunnets holdning til de svakeste blant oss. Formålet med tidlig UL er langt mer enn å oppdage trisomier, men dette har dominert debatten i mange år inntil det ble bestemt i 2020 at tidlig UL skulle tilbys alle gravide. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng gis til alle som har fått med seg forbindelsen mellom tidlig ul og fosterdiagnostikk (og i særdeleshet Trisomi 21), samt klarer å gi en dekkende oversikt over den politiske diskusjonen vi har bak oss. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Under ultralydundersøkelsen oppdager ultralyd-jordmoren en unormalt stor nakkeoppklaring. Tilleggsundersøkelser bekrefter det Kari og Per fryktet – fosteret har Trisomi 21. Kari og Per henvender seg til deg som lege med spørsmål om hvor alvorlig en slik trisomi egentlig er. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forsøk å gi en velbegrunnet vurdering av hvor alvorlig diagnosen Trisomi 21 er – hvor du er åpen om hva du legger i uttrykket «alvorlig». </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Alvorlighet kan her handle om barnets livskvalitet og om den i stor eller liten grad er truet av syndromet. De mange tilleggsutfordringene for barn med Downs syndrom, kan bidra til å gjøre diagnosen mer alvorlig. Spennet i diagnosen, stor variasjon i IQ, osv, bidrar til utfordringer med entydig å slå fast alvorlighet. Selvrapportert livskvalitet synes å være god – bør man legge det til grunn? Spørsmålet er nemlig også «alvorlig for hvem?» – i fosterdiagnostikken er foreldrenes/familiens situasjon helt relevant å trekke inn. Livslang avhengighet til foreldrene kan være noe som foreldrene anser som svært alvorlig, selv om hovedpersonen selv ikke behøver å gjøre det. På en måte er det åpenbart at Trisomi 21 er mindre alvorlig enn Trisomi 13 og 18 – de to sistnevnte er i grenselandet mot «dødelige avvik». Downs syndrom har de siste årene blitt kalt «mulighetenes syndrom». På den andre siden kan selvsagt foreldre oppleve dødelige avvik som en kortvarig alvorlig hendelse, mens tanken på å få et barn med Downs syndrom vil kunne prege hele livet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> I dette svaret er det stort rom for subjektive oppfatninger, ettersom spørsmålet om hvor alvorlig Trisomi 21 er, er en «evig» diskusjon hvor mange har ulike meninger. Poeng gis ut fra grad av velbegrunnethet i svaret. Viktige temaer er antydet ovenfor. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Kari befinner seg nå i 19. uke av svangerskapet. Abortspørsmålet blir aktuelt. Men Kari blir usikker om hun har lov til å ta abort. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Vil det være mulig for Kari å ta abort i 19. uke? Hvis ja, hvem bestemmer om hun får lov? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Ja, loven åpner opp for muligheten til å ta abort, dersom bestemte vilkår er oppfylt. Dette betyr at kvinnen ikke bestemmer helt selv om hun kan få abort. Etter utgangen av 12. uke, og frem til utgangen av 22. uke, har vi «nemndbestemt» abort i Norge. Nemnda har det avgjørende ordet, men det skal legges betydelig vekt på kvinnens ønske. Abortloven nevner ulike vilkår som kan gi grunnlag for abort, og ved fosteravvik er det paragraf 2 C som er mest relevant. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for å ha fått tydelig frem at Ja det er mulig å gjøre abort i uke 19, men at det må vurderes og godkjennes av en abortnemnd. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Kari er i tenkeboksen og må lufte hodet på kafe. Der treffer hun tilfeldigvis Anja, en gammel bekjent som hun ikke har sett siden videregående. Hun forteller Anja om sin situasjon. Til Karis store overraskelse forteller Anja at hun selv har en datter, Lea, som har Downs syndrom. Anja legger ut om livet med Lea og hvor mye fint de har sammen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Abortvalg etter påvist fosteravvik blir ofte omtalt som spesielt krevende valg for den gravide og paret. Beskriv kort noen ulike grunner til at disse abortvalgene kan fremstå som spesielt krevende. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Vignetten gir en antydning om at disse abortvalgene (i motsetning til abort etter en uønsket graviditet) «angår» folk som lever ute i samfunnet. I dette tilfelle kan det være krevende for Kari å velge abort etter å ha møtt Anja som har fortalt så mye positivt om sin datter, Lea. I den faglige debatten har det blitt snakket om at abort etter fosterdiagnostikk «signaliserer» eller «uttrykker» en bestemt oppfatning om de menneskene som lever med tilsvarende diagnoser. Dette er krevende ting å forholde seg til. Det er også krevende for paret at de allerede har begynt å se på seg selv som foreldre i og med at graviditeten var ønsket. Nå må de «som foreldre» vurdere hva de tenker er best for sitt barn, seg selv og familien. Og de må vurdere om et ønsket svangerskap skal bli uønsket. Disse to trekkene ved abortvalgssituasjonen etter påvise fosteravvik, er prinsipielt forskjellig fra abortvalgssituasjonen ved uønsket graviditet. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Opp til 2 poeng ut fra hvor godt drøftingen får frem poengene som er nevnt over. Også andre momenter kan gi uttelling, eksempelvis at vi her snakker om en sen abort og at sene aborter generelt anses mer krevende enn tidlige. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Anja sier til Kari at Lea er så mye mer enn diagnosen. Medisinen er så opptatt av hva som er feil med Lea, mener hun, mens det man burde være opptatt av er hvordan vi kan endre samfunnet slik at mennesker som Lea blomstrer. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar kort motsetningen mellom en såkalt medisinsk og en sosial forståelse av funksjonshemming, og gi din egen vurdering av medisinens rolle og oppgave i møte med pasienter som Lea. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Funksjonshemmingsteoretikere har ment at det er bedre og riktigere å forstå funksjonshemming gjennom en «sosial modell» enn en «medisinsk modell». I den sosiale modellen, så blir funksjonshemming mer av et politisk spørsmål enn i den medisinske modellen hvor funksjonshemmingen lett kan bli en «feil» i den individuelle kroppen. Fordelen med å gjøre funksjonshemming til politikk er at det kan gi gruppen som helhet mer rettigheter, bedre tilrettelegging (jf universell utforming) og bedre livskvalitet. Samtidig er medisinens oppgave å forholde seg til individuelle pasienter og løse medisinske utfordringer. Selvsagt må ikke medisinen bare fokusere på diagnoser og begrensninger, men i den grad det kan bidra til mer livskvalitet, blomstring og mestring, så er det rettferdiggjort. Et helhetlig perspektiv er vel et stikkord her. Funksjonshemmingsteoretikere har de siste årene gått i seg selv, og påpekt viktigheten av den medisinske forståelsen, ikke minst med tanke på god livskvalitet. Det satses mye i medisinen på barn med alvorlige funksjonsnedsettelser, og det virker rimelig å hevde at medisinen spiller en viktig rolle i å bidra til at pasienter som Lea kan leve gode liv. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 2 poeng for den som kan beskrive forskjellen mellom disse to modellene og samtidig gi en god og selvstendig vurdering av medisinens muligheter og evt tilkortkommenhet i møte med pasienter som Lea. Stort rom for individuell variasjon i dette svaret. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 73 år gammel tidligere frisk mann legges inn på sykehus som øyeblikkelig hjelp etter 3 dagers sykehistorie med feber og redusert allmenntilstand. Dagen etter innleggelsen kommer det telefon fra mikrobiolog om funn av bakterier i blodkultur, og hvor de ved mikroskopi av gramfarget preparat har funnet gram positive kokker i hauger. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke tester kan en benytte for å avklare hvilke bakterieart dette er? Beskriv kort prinsippet for testene. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Koagulase test; skiller mellom S. aureus og koagulase negative stafylokokker. S. aureus produserer enzymet koagulase som omdanner fibrinogen til fibrin, enten rørkoagulase (fri koagulase) eller slide koagulase test (bundet koagulase) <br> 2) Massespektrometri med Maldi TOF MS: bakterier i renkultur settes av på en plate, dekkes av matriks for å beskytte og ionisere bakterieproteinene, settes maskina, vakuum opprettes, bakterien bestråles med laser, bakterielle proteiner (hovedsakelig ribosomale) løsrives fra fast overflate (desorpsjon) og ioniseres, proteinene akselereres i et elektrisk felt og treffer detektoren. Massespekter basert på masse vs ladning sammenlignes med database, identifikasjon i slekt og art basert på score. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Koagulase test 0,5 p, testprinsippet (enzymet koagulase som omdanner fibrinogen til fibrin) 0,5p, massespektrometri MALDI-TOF 0,5p, testprinsippet (må vise at hen har forstått hovedprinsippene, men ikke nødvendig å ha med alle deletementene) 0,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Videre diagnostikk identifiserer bakterien som Staphylococcus aureus (S. aureus). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilken gruppe antimikrobelt middel er førstehåndsvalg ved behandling av invasiv infeksjon med S. aureus og hvordan er virkningsmekanismen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Penicillinase-stabile penicilliner som kloksacillin og dikloxacillin. Virkningsmekanisme: Bindes til det aktive setet på transpeptidaser (også kalt penicillinbindende proteiner, PbP) som hemmer transpeptidering av peptidsidekjedene i pepitidoglykanlaget i bakteriens cellevegg. Derved blir celleveggen ustabil og bakterien autolyserer. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Korrekt førstehandsmiddel 0,5p, virkningsmekanismen (nevner at AB hindrer transpeptidering av peptidoglykansidekjeder og at dette fører til lysering av bakterien/bakteriedød): 1,5p </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Neste dag kommer det beskjed fra mikrobiologisk avdeling om at bakterien er resistent mot standardbehandlingen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige molekylære mekanismen som gjør S. aureus resistent? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Genet mecA (eller mecC) koder for et alternativ transpeptidase-enzym (penicillinase-bindende protein) som har lav affinitet for betalaktamantibiotika inkludert penicillinasestabile penicilliner. Det alternative PBP vil da kunne sikre transpeptidering av peptidoglykanet i celleveggen slik at bakterien kan vokse videre selv under behandling med penicillinase-stabile penicilliner. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Genet mecA 0,5p, beskrivelse av mekanisme (beskrivelsen bør inkludere at genet koder for alternativ PbB som har lav affinitet for penicillinasestabile penicilliner som vil sikre transpeptidering av peptidsidekjendene): 1,5 </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> På legevisitten kommer det fram at pasienten nylig har vært på reise i sørøst-Asia, og var da innom et sykehus og fikk behandling for betennelse i et sår på en finger. Det er viktig å hindre spredning av resistente bakterier i norske sykehus. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke resistente bakerier bør en screene for hos denne pasienten? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> MRSA, VRE og ESBL, karbapenemresistente enterobakterier kan erstatte ESBL </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> MRSA (0,5p), VRE (0,5p) og ESBL/karbapenemresistente bakterier (0,5p). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> I screening av avføringsprøve påvises Klebsiella pneumoniae med følgende resistensprofil: <br> Ampicillin (aminopenicillin) R <br> Cefotaksim (3 gen. cefalosporin) R <br> Ceftazidim (3 gen. cefalosporin) R <br> Ciprofloksacin (kinolon) S <br> Gentamicin (aminoglykosid) S <br> Meropenem (karbapenem) R <br> Trimetoprim-sulfamethoksazol R </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke(n) resistensmekanisme(r) er mest sannsynlig årsak til denne resistensprofilen og hvordan oppstår slik resistens? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> ESBL-karba eller karbapenemresistens, gen som overføres horisontalt mellom bakterier via plasmider. I tillegg en annen resistensmekanisme som gir resistens mot TMS (mutasjoner i folsyresyntese). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> ESBL-karba (0,5p), horisontal overføring via plasmider (0,5p). TMS mutasjoner i folsyresyntesen (behøver ikke detaljer mht mekanisme her, kun at studenten forstår at TMS R representerer en annen mekanisme enn ESBL/ESBL Karba (0,5) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Under sykehusoppholdet får pasienten også symptomer på urinveisinfeksjon, og det påvises Enterococcus faecalis ved dyrkning av urinprøve, med følgende resistensprofil: <br> Ampicillin (aminopenicillin) S <br> Cefotaksim (3 gen. cefalosporin) R <br> Meropenem (karbapenem) R </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er den mest sannsynlige molekylære mekanismen bak denne resistensprofilen? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Enterokokker har penicillinbindende proteiner (PBPer) som har ulik affinitet for ulike betalaktamantibiotikaklasser. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Endrede PBPer (0,5p), ulik affinitet for ulike antibiotikaklasser (0,5p). <br> Alternativt svar: Enterokokker er naturlig resistente for cefalosporiner og karbapenemer (0,5p) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En mann (74 år) har tendens til ankelødemer og tørr, sprukken hud på leggene. En dag føler han seg uvel, er kaldsvett og varm om hverandre og har hodepine. Nederst på høyre legg er et område av huden illrødt og ømt, og huden her er fortykket og kjennes fast ut. Legen stiller diagnosen erysipelas, en hudinfeksjon med streptokokker. En blodprøve viser at konsentrasjonen av C-reaktivt protein hos mannen er 45 mg/L (referansenivå < 5 mg/L). Mannen har ikke hatt infeksjon med denne serotypen streptokokk tidligere. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan kroppen setter i gang produksjon av antistoff ved denne infeksjonen, og hvilken type antistoffer som dannes i tidlig fase. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Fasit: Streptokokker er Gram-positive bakterier med tykk kapsel. Her er aktivering to typer B-celler aktuelle: <br> a) B-celler som ligger rett under kapselen i lokale lymfeknuter samt i milten, og som gjenkjenner karbohydratantigener fra bakterienes kapsel. (Kalles B1-celler). De aktiveres av repeterende karbohydratstrukturer på bakteriene (kryssbinding av antigenreseptorene) og gir raskt opphav til plasmaceller med produksjon av IgM. De er ikke avhengige av T-cellehjelp. 1p <br> b) «Vanlige» / konvensjonelle B-celler (kalles av og til B2-celler) som vanligvis gjenkjenner proteinantigener fra bakteriene. Disse bruker lengre tid på aktiveringen, og er i all hovedsak avhengige av T-cellehjelp. Derfor må det aktiveres Thjelperceller (naive CD4+ T-celler = Th0-celler) til follikulærdendrittiske celler (Tfh-celler) før B-cellene kan aktiveres ferdig til plasmaceller i germinalsentrene i lokale lymfeknuter. Th0-cellen aktiveres av antigen fra bakteriene, som blir presentert (for T-cellereseptor) på HLA på en dendrittisk celle (signal 1). Stimulering til reseptoren ICOS og passende primingcytokiner vrir responsen i riktig retning = mot Tfh. Videre stimulering til en ferdig Tfh-celle skjer parallelt med aktiveringen av B-cellen. På B-cellen trigges aktivering via reseptorbinding av antigen (signal 1) fulgt av internalisering av B-cellereseptor med antigen i B-cellen, presentasjon av antigen-relatert peptid for den aktiverte T-cellen på HLA klasse II på B-cellen, og «samsnakk» mellom den aktiverte B-cellen og den aktiverte Th0-cellen. Til slutt oppnås kostimulering av B-cellen fra den ferdige effektor Tfh-cellen (signal 2). [Fremstillingen her er forkortet / forenklet.] 1 1/2p <br> I begge tilfelle utvikles aktiverte B-celler til kloner av plasmaceller, som skiller ut IgM. 1/2 p. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se ovenfor. Spørsmålet fokuserer på hvordan aktivering settes i gang, og det forventes noen detaljer om dette. Bare generelt stoff om B-celleaktivering og videre differensiering etter start av aktivering er ikke tilstrekkelig. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan komplement aktiveres ved denne infeksjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Generelt: Det er tre mulige aktiveringsveier for komplement: klassisk, lektin og alternativ vei. I dette tilfellet skjer aktiveringen slik: <br> a) Klassisk => vanligvis via antigen-antistoffkomplekser som aktiverer C1. Videre aktivering av C4 og C2 til dannelse av C3- konvertasen C4b2a. Denne mekanismen er ikke så aktuell i starten av infeksjonen, mener viktig når det er dannet IgM (tar vanligvis minst 1 uke) 1/2 p. Men i starten av infeksjonen kan klassisk aktivering skje via CRP, som er forhøyet hos denne pasienten, istedenfor via antistoff og C1. Det er en viktig mekanisme hos den aktuelle pasienten. 1/2 p <br> b) Lektin => Mannose-bindende lektin / fikoliner bindes til bakterieoverflaten og trigger aktivering av C4. Videre aktivering gir C3-konvertasen C4b2a. Det er litt omdiskutert hvilken betydning lektinveien har ved streptokokkinfeksjon (men det forventes det ikke at studentene vet), så denne veien bør også være med i svaret. 1/2 p <br> c) Alternativ pathway => alltid en viss aktivering av faktor B i plasma. Videre aktivering fører til dannelse av C3b, som normalt inhiberes på egne celler (omdannes til iC3b). Men bakterieoverflaten mangler humane komplementhemmere og gir videre aktivering og dannelse C3-konvertasen C3bBb. Mekanismen er relevant ved streptokokkinfeksjon. 1/2 p <br> (Alternativ aktivering fungerer også som forsterker av klassisk aktivering: fint om dette er med, men ikke et absolutt krav). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se ovenfor. Spørsmålet fokuserer på hvordan komplement aktiveres (dvs. mekanismene for aktivering) og da er det de tre veiene som er relevante. Svaret skal ta hensyn til typen mikrobe. Generell oversikt over komplementkaskaden er ikke nok. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvilke effekter aktivert komplement har ved denne infeksjonen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Komplementaktiveringsprodukter fungerer som opsoniner på bakterieoverflaten => bindes til komplement-reseptorer på fagocytter og øker fagocytosen (1/2 p). <br> Komplementaktiveringsprodukter virker proinflammatorisk (særlig C3a og C5a) (1/2 p). <br><br> (Feil å nevne lyse: Gram-positive bakterier har for tykk kapsel til at det terminale komplementkompleks klarer å lage en pore som fører til lyse.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se ovenfor. Kan gjerne ha med noe mer detaljer om opsonisering og inflammasjon enn fasit. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar mekanismene for hvordan antistoffet bidrar til bekjempelse av infeksjonen, og hvordan antistoff og komplement samarbeider om forsvaret i dette tilfellet. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> a) I dette tilfellet er hovedfunksjonen av antistoffet aktivering av komplement (IgM som bindes til bakterieantigen og gir klassisk aktivering, se ovenfor) fordi fagocyttene (nøytrofile og makrofager) ikke har Fc-reseptorer for IgM. 1 p <br> b) Sent i infeksjonsforløpet kan det også være dannet noe IgG, og da vil opsonisering av bakteriene for fagocytose kunne skje. I dette tilfellet bindes Fc-delen av antistoff (når det er i kompleks med antigen) til Fc-gamma-reseptorer på fagocytter (nøytrofile og makrofager). Cellene aktiveres, og fagocytosen blir mer effektiv. ½ p <br> Opsoniseringen blir mer effektiv hvis både komplement og IgG er bundet på bakteriene fordi to typer reseptorer på fagocyttene stimuleres. Fint om dette er med, men ikke et krav. <br> c) Terskelen for aktivering av B-celler blir lavere når antigenet (her bakterien) har komplementaktiveringsprodukter på overflaten, fordi komplementet bindes av B-cellens koreseptor. ½ p (Ved denne infeksjonen er nøytralisering med antistoff for å hindre at bakteriene trenger inn i kroppen feil, for infeksjonen er allerede etablert. <br> Målstyring for drap (antistoff-mediert direkte cytotoksisitet) er også feil -> gjelder ved intracellulære infeksjoner. Streptokokker befinner seg ekstracellulært.) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se ovenfor. Det må være noe begrunnelse / forklaring, ikke bare generelle poenger om antistoff og komplement. Fasit del a) og c) viser samarbeid mellom antistoff og komplement. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Mannen behandles med penicillin og blir frisk i løpet av et par ukers tid. Men etter to måneder oppstår de samme symptomene igjen, denne gangen på venstre legg. Mikrobiologisk undersøkelse viser at infeksjonen skyldes samme serotype streptokokker som sist. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Forklar hvordan forsvarsreaksjonen blir denne gangen. Legg vekt på hva som er forskjellig fra første gang mannen hadde erysipelas. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Spørsmålet omhandler sekundærrespons med en mikroorganisme man har immunologisk hukommelse for. <br> Forsvarsreaksjonen starter raskere fordi det nå finnes preformert antistoff, særlig IgM fra den første infeksjonen. Relativt raskt vil det også dannes IgG etter isotypeskifte, som skjer når hukommelses-B-celler aktiveres og modnes ferdig til nye plasmaceller. Isotypeskifte betyr skifte av konstantdelen av genet for antistoffet fra my (som gir IgM) ved primærinfeksjonen til en av de andre kjedene, oftest gamma (som gir IgG). <br> I noen av de aktiverte hukommelsescellene vil det også skje endringer i det antigenbindende stedet slik at antistoffet som senere produseres av plasmacellene binder sterkere til bakteriene = affinitetsmodning av antistoff via somatisk hypermutasjon. Somatisk hypermutasjon er punktmutasjoner i genområdene på tung og lett kjede for det antigenbindende stedet i antistoffet, som oppstår ved celledelingene før cellene blir ferdige plasmaceller. Cellene testes også for autoreaktivitet. <br> Det finnes også Tfh-hukommelsesceller etter den første infeksjonen. Disse gir rask og effektiv hjelp til B-cellene i forbindelse med isotypeskifte og somatisk hypermutasjon. <br> Konsentrasjonen av IgM mot bakteriene øker omtrent like mye som sist. Det kommer også kraftig økt konsentrasjon av bakteriespesifikt IgG med høyere affinitet (dvs. sterkere antistoffrespons). Effektiv komplementaktivering både via IgM og IgG. <br> Fc- og komplementreseptormediert opsonisering for fagocytose. Inflammasjonsresponsen blir i starten lik som sist, men avtar vanligvis raskere fordi infeksjonen bekjempes mer effektivt og derved varer kortere. (Men pasienten må trolig ha penicilling igjen – ikke nødvendig at studentene vet). </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Se ovenfor. Det må være noe begrunnelse / forklaring, ikke bare generelle poenger om antistoff og komplement. Fasit del a) og c) viser samarbeid mellom antistoff og komplement. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett En 31 år gammel mann kommer for utredning for barnløshet. Han leverer en sædprøve som viser azoospermi (dvs. ingen sædceller i ejakulatet). Du tar en blodprøve av mannen. Prøvesvarene viser at serumkonsentrasjonen av testosteron er på 2,6 nmol/L (referanse 6,7 – 31,9 nmol/L), follikkelstimulerende hormon (FSH) er på 0,3 IE/L (referanse 1,3 – 17,9 IE/L) og luteiniserende hormon (LH) er på 0,1 IE/L (referanse 0,9 – 8,4 IE/L). </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva slags hormonell tilstand har denne pasienten? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Pasienten har lave nivåer av alle hormoner, både av hypofysehormonene FSH og LH, men også av testosteron. Dette kalles hypogonadotropisk hypogonadisme. Ved så lave nivåer av testosteron vil hypofysen normalt reagere med å skille ut høye nivåer av FSH og LH for å stimulere testiklene (Leydigcellene) til å produsere testosteron. Vi ville da ha målt høye nivåer av FSH og LH. [img[ICD-2024s-2A.png]] </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten må her oppgi at tilstanden kalles hypogonadotrop hypogonadisme (0,5 poeng). Hen må begrunne dette i hypothalamus, hypofyse, testis-aksen, gjerne tegne opp denne og beskrive hva som skjer normalt med negativ feedback på høyt testosteron og at det her ikke skjer (1 poeng) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke hormoner er involvert i spermatogenese? Beskriv hvordan hver av disse påvirker spermatogenesen. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> • GnRH (gonadotropin releasing hormone, gonadotropinfrigjørende hormon) <br> • FSH <br> • LH <br> • Testosteron <br><br> Fra hypothalamus frigjøres GnRH som stimulerer hypofysen til å produsere FSH og LH. FSH virker på sertolicellene som stimuleres til å sette i gang spermatogenesen. LH stimulerer leydigcellene til å produsere testosteron som igjen stimulerer spermatogenesen ytterligere (og er helt nødvendig for denne) (se illustrasjonen i spørsmål 1) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kun 1 hormon = 0 poeng 2-3 hormoner = 0,5 poeng Alle 4 hormoner = 1 poeng I tillegg må kandidaten beskrive hvordan hormonene påvirker spermatogenesen, se over (1 poeng for full beskrivelse, 0,5 poeng eller mindre for delvis beskrivelse) </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvis du bestemmer deg for å gi pasienten behandling med testosteron, hva slags effekt vil dette da ha på: <br> 1) nivået av FSH og LH i blodet <br> 2) spermatogenese? <br> Forklar og begrunn svaret </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Testosteronterapi vil gi en negativ feedback-effekt på hypofysen og hypothalamus: Når nivåene av sirkulerende testosteron øker, kan det hemme frigjøringen av GnRH fra hypothalamus og dermed redusere sekresjonen av både FSH og LH fra hypofysen. Dette er fordi kroppen søker å opprettholde hormonbalansen gjennom et feedback-system. Dersom man måler FSH, LH og testosteron hos en mann som får testosteronterapi vil man få samme resultater som ved en hypogonadotrop hypergonadisme-tilstand. <br> 2) Effekt på spermatogenese: Selv om testosteron er avgjørende for normal spermatogenese, kan direkte (ekstern) tilførsel av testosteron føre til redusert sædcelleproduksjon. Dette skyldes at ekstern tilførsel av testosteron kan undertrykke kroppens egen produksjon av FSH/LH, som begge er nødvendige for å stimulere testiklene til å produsere sædceller. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten må beskrive hvordan eksternt tilført testosteron: <br> 1) vil virke på hypothalamus – hypofyseaksen <br> 2) vil påvirke GnRH, FSH og LH-nivåene gjennom negativ feedback (1 poeng). <br> I tillegg må effekten på spermatogenese beskrives. FSH/LH nivåene blir så lave at testes ikke vil klare å produsere spermatozoer, til tross for testosteron som også er nødvendig (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvis du bestemmer deg for å gi pasienten behandling med FSH og LH, hva slags effekt vil dette ha på: <br> 1) nivået av testosteron i blodet <br> 2) spermatogenese? <br> Forklar og begrunn svaret for begge hormoner. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Effekt av LH: LH virker på leydigcellene i testiklene. Disse er ansvarlige for produksjonen av testosteron. Ved å gi LH kan man stimulere testiklene til å øke produksjonen av testosteron. Dette fører til en økning av sirkulerende testosteronnivåer, noe som er viktig for å opprettholde sekundære kjønnskarakteristika, seksuell funksjon og generell helse hos mannen. <br> 2) Effekt av FSH: FSH er primært ansvarlig for reguleringen av spermatogenese. Selv om FSH ikke direkte øker testosteronproduksjonen, spiller det en viktig rolle i å stimulere sertolicellene i testiklene, som igjen støtter prosessen med sædcelleproduksjon. Dette er spesielt viktig for pasienter med azoospermi for å forsøke å gjenopprette normal spermatogenese. Ved å kombinere disse hormonene kan man potensielt gjenopprette både normal testosteronproduksjon og spermatogenese. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten må her beskrive både hvordan LH påvirker leydigcellene til egen testosteronproduksjon (1 poeng) og hvordan FSH vil kunne virke inn på selve spermatogenesen (1 poeng). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke kostholds- og livsstilsråd vil du gi til en mann som ønsker å bedre sin sædkvalitet? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Vekt og diettråd: <br> Oppnå normalvekt. <br> Diettråd: Redusere inntaket av prosessert kjøtt, soyaprodukter, poteter, fete melkeprodukter og sukker. <br> Øke inntaket av fisk/skalldyr, lyst kjøtt, frukt og grønnsaker, samt magre melkeprodukter (middelhavsdiett). <br><br> 2) Rusmidler: <br> Unngå snus og røyk. <br> Redusere alkoholinntak. <br> Unngå (illegale) rusmidler (spesielt marihuana og kokain). <br><br> 3) Fysisk aktivitet: <br> Øke fysisk aktivitet, men ikke overtrene. <br> Ikke sitte for lenge i gangen.<br><br> 4) Ha regelmessig utløsning (ejakulasjon) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kun 1 punkt = 0,5 poeng <br> 2-3 punkter = 1 poeng <br> Alle 4 punkter = 1,5 poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Ut fra spørsmål 1 – 4, hvordan vil du foreslå angrepspunkter for hormonell prevensjon til menn? Begrunn svaret. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> 1) Preparater som inneholder hormoner: androgener (+/- gestagener, dvs. kunstig progesteron, ev. GnRH analoger) vil kunne virke negativt på GnRH frigjøringen fra hypothalamus, som så reduserer FSH/LHsekresjonen fra hypofysen. Når FHS/LH nivåene synker, vil også leydigcellene i testiklene produsere mindre mengder av testosteron (blodprøveresultatet vil da vise funn forenlig med hypogonadotropisk hypergonadisme, siste eksternt tilført). I tillegg vil det lave nivået av FSH medføre understimulering av spermatogenesen fra sertolicellene. Se figur under, høyre del, ref Abbe et al 2020, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7513428/pdf/yjbm_93 _4_603.pdf Her fins både orale, transdermale, subdermale og injiserbare legemiddelformuleringer som hittil har vist sikkerhet og reversibilitet på kort sikt i hvert fall. Effektforsøk av hormonelle mannlige prevensjonsmidler har vist prevensjonseffektivitet høyere enn kondomer. De vanligste rapporterte bivirkningene: vektøkning, akne, lett undertrykkelse av serumkolesterol med høy tetthet, humørsvingninger og endringer i libido. [img[ICD-2024s-2F1.png]] [img[ICD-2024s-2F2.png]] </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Kandidaten må foreslå hormonell prevensjon som (slik som hos kvinner) i form av eksternt tilført androgen og/eller GnRH analog og at disse virker via reduserte nivåer av FSH og LH og slik påvirker både spermigenesen og testotsteronproduksjonen (1 poeng). Hvis hen i tillegg kan tenke ut at medikamenter også kan slå ut motilitet eller på annen måte ødelegge funksjonen til spermiene, får de 0,5 poeng. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Som nevrolog skal du undersøke en pasient (dame, 25 år) som nylig har fått diagnosen multippel sklerose (MS). MR av ryggmargen har vist en høysignalforandring i Th9-Th10 nivå (ryggmargsnivå over nerverøttene som går til bena) på venstre side. Du undersøker følgende i begge ben: <br> 1. muskelkraft <br> 2. smertesans <br> 3. leddsans (propriosepsjon) <br> 4. følsomhet for vibrasjon <br> 5. temperatursans <br><br> Hver av disse fem angitte undersøkelsene er unormale i kun ett ben. Ut ifra det du finner ved klinisk undersøkelse konkluderer du med klassisk Brown-Séquard syndrom, altså en halvsidig ryggmargsskade med skade av både motoriske og sensoriske baner på én side, i dette tilfellet venstre halvdel av ryggmargen. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvilke funn gjør du ved undersøkelse av henholdsvis muskelkraft, smertesans, leddsans, vibrasjonssans og temperatursans i hvilket ben? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> - Høyre/kontralaterale ben: nedsatt 2) smertesans og 5) temperatursans. <br> - Venstre/ipsilaterale ben: nedsatt 1) muskelkraft, 3) leddsans (propriosepsjon) og 4) følsomhet for vibrasjon. <br> Se svar på spørsmål 3 og 4 for utfyllende informasjon om forløpet til de spinale banene som forklaring på hvorfor funnene fordeler seg slik. Se doi: 10.5811/cpcem.2022.2.55317 for en case report av MSpasient med Brown-Séquard syndrom. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis maks 3 poeng <br> - 1 poeng for å angi både punkt 2 og 5 på høyre side <br> - 1 poeng for å angi punkt 1 på venstre side <br> - 1 poeng for å angi både 3 og 4 på venstre side </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kalles de tre sentralnervøse banene som formidler de motoriske og sensoriske funksjonene du har undersøkt (hovedbanen for viljestyrt bevegelse fra motorisk korteks og hovedbanene for sensorisk informasjon til primærsensoriske korteks)? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> - Tractus corticospinalis/Kortikospinale bane/Pyramidebanen/Laterale motoriske bane <br> - Tractus spinothalamicus/Spinothalamiske bane/Anterolaterale bane <br> - Dorsal column system/Dorsal columna medial lemniscus system/Posterior column/Faciculus gracile og faciculus cuneatus/Bakstrengsbanen </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver nervebane har flere navn og kan angis både på latin, engelsk og norsk. Det gis 0,5 poeng for to riktig navngitte baner, 1 poeng for alle tre. Det trekkes ikke poeng for små skrivefeil. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv forløpet til den motoriske nervebanen fra motorisk korteks til perifere nerver. Angi hvor det er synapser, eventuelle krysninger og hvor i ryggmargen nervebanen forløper (dorsalt, lateralt eller anterolateralt). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den kortikospinale banen starter i motorisk (og dels sensorisk) korteks. Nervebanen går gjennom capsula interna ned til hjernestammen. I medulla oblongata krysser flesteparten av fibrene til motsatt side før de følger laterale corticospinale bane nedover ryggmargen. Når den enkelte fiber når sitt nivå i ryggmargen dannes synapse mot perifere motornevron i anteriore horn i grå substans. <br> https://www.ncbi.nlm.nih.gov/books/NBK507888/ </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Riktig beskrivelse gir 1 poeng. For å få godkjent beskrivelse må minimum følgende momenter være med: <br> - Kortikospinale bane: Motorisk korteks, krysser i hjernestammen (medulla oblongata, men «hjernestamme» aksepteres som presist nok), første synapse i ryggmargens forhorn. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Beskriv forløpet til de to sensoriske nervebanene fra perifere nerver til sensoriske korteks. Angi hvor det er synapser, eventuelle krysninger og hvor i ryggmargen hver av nervebanene forløper (dorsalt, lateralt eller anterolateralt). </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Den spinothalamiske bane mottar perifer sensorisk informasjon om smerte, temperatur og diffus berøring (Aδ og C-fibre). De perifere nevronene kommer inn gjennom dorsalhornet og synapser i lamina I, II, IV og V i dorsale horn i grå substans. Informasjonen kan påvirkes av internevroner og nedadgående fibre. Projeksjonsnevroner som bringer informasjonen til thalamus går hovedsakelig fra lamina I og V. Aksonene krysser ryggmargen i omtrent samme nivå som det perifere nevronet entret ryggmargen. Videre går aksonene oppover i anterolaterale del av ryggmargen opp til thalamus der de danner ny synapse (i ventrale posterolaterale kjerne/VPN). Fra thalamus går signalene videre opp gjennom posteriore del av capsula interna og opp til primærsensoriske korteks. <br> https://www.ncbi.nlm.nih.gov/books/NBK507824/ <br> Bakstrengsbanen mottar perifer sensorisk informasjon om berøring, vibrasjon, propriosepsjon (Aα og Aβ-fibre). De entrer ryggmargen via dorsalhornet og avgir kollateraler til dorsale og anteriore horn for blant annet modulering av smertesignal og refleksbuer, men hovedbanen går uavbrutt opp dorsalt i ryggmargen på samme side som fibrene entrer spinalkanalen (ipsilateralt). Fibre fra underekstremitetene går lengst medialt i banen som kalles fasciculus gracilis, mens fibre fra overekstremitetene danner fasciculus cuneatus og går like lateralt for gracilis. I caudale medulla oblongata når fibrene nucleus gracilis og cuneatus og danner synapse til andre-ordens nevron. Fibrene krysser i medulla og danner mediale lemniscus som går opp til VPN i thalamus. Der er det en ny synapse og tredje-ordens nevron som fører signalet via capsula interna opp til primærsensoriske korteks. <br> https://www.ncbi.nlm.nih.gov/books/NBK507888/ </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis 1 poeng for riktig beskrivelse av en nervebane, 2 poeng for riktig beskrivelse av begge nervebaner. For å få godkjent beskrivelse må minimum følgende momenter være med: <br> - Spinothalamiske bane: Første synapse i ryggmargens dorsalhorn, krysser i ca samme nivå som banen entrer ryggmargen, forløper anterolateralt, andre synapse i thalamus. <br> - Bakstrengsbanen: Forløper dorsalt, første synapse i hjernestammen (medulla oblongata, men «hjernestamme» aksepteres som presist nok), krysser like etter første synapse. Andre synapse i thalaums. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Pasienten kommer tilbake noen år senere etter et nytt MS-attakk. Hun har nå fått store og voldsomme involuntære bevegelser i høyre arm og ben som du gjenkjenner som hemiballisme. MR viser en lesjon i nucleus subthalamicus venstre side. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan kan dysfunksjon av nucleus subthalamicus føre til involuntære bevegelser? Begrens svaret til den forenklede modellen om «direkte og indirekte vei» i basalgangliene og hvordan dette påvirker aktiveringen i motorisk korteks. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Nucleus subthalamicus er en del av den indirekte vei. Striatum inhiberer globus pallidus externa som inhiberer nucleus subthalamicus. Økt aktivitet i de nevronene som følger indirekte vei fra striatum vil føre til lavere signal fra globus pallidus externa som vil gi mindre inhibering av nucleus subthalamicus. Nucleus subthalamicus eksiterer globus pallidus interna som igjen inhiberer thalamus. Altså vil økt aktivitet i indirekte vei øke aktiviteten i nucleus subthalamicus som vil gi økt inhibering av thalamus og motorisk korteks. Skade av nucleus subthalamicus vil redusere signaler i indirekte vei og dermed svekke inhiberingen av thalamus. Svekket inhibering av thalamus og dermed også korteks gir igjen en overaktivitet i korteks og kortikospinale bane med økt og mer tilfeldig aktivering av kontralateral muskulatur. <br><br> Hemiballisme som resultat av MS er ytterst sjeldent, men det finnes kasuistikker som beskriver dette. Se for eksempel doi: 10.1002/mds.870120644 </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Det gis <br> - 1 poeng for å angi at nucleus subthalamicus er en del av den indirekte vei <br> - 1 poeng for å angi at skade av nucleus subthalamicus vil svekke indirekte veis inhibering av thalamus <br> - 1 poeng for å angi at dette øker aktiveringen av motorisk korteks. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Du er fastlege til en 45 år gammel kvinne, som har vært din pasient i noen år, så du kjenner henne litt. Hun har oppsøkt deg i gjennomsnitt 5 ganger per år på grunn av lettere somatiske problemer, egentlig ingenting hun trengte en lege for. Hun fremstår i hovedsak adekvat, men alltid litt nervøs og nevrotisk. I dag virker hun mye mer anspent og engstelig. Hun forteller deg at hun har hatt angst de siste 4 ukene og nå orker hun ikke lenger dette og ber om hjelp </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Du ønsker i første omgang å finne ut litt mer om hennes angst. Hva ønsker du å vite og hvilken diagnose tenker du på ved å stille ulike mer konkrete spørsmål? Angi 4 lukkete spørsmål som kan bidra til å avklare 4 forskjellige tentative diagnoser. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Eksempler: <br> Kommer angsten som et anfall som går over av seg selv etter en stund? – Panikklidelse <br> Har du angst hele dagen uten at angsten blir utløst av noe konkret? – Generalisert angstlidelse <br> Er du engstelig for din egen helse, har du angst for at du kunne dø av en sykdom? – Hypokondrisk lidelse <br> Har du angst for noen er ut etter deg? – Schizofreni/psykose <br> Osv </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Hver meningsfull kombinasjon (det finnes mange mulige) av ja/nei spørsmål og passende diagnose gir 0,5 poeng. Kombinasjoner med åpne spørsmål kan ikke gi poeng. Diagnosebegrepet trengs ikke å vurderes alt for nøye (psykose kan for eksempel telles). </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hun forteller deg at hun våkner opp med angst og er engstelig gjennom hele dagen uten at hun egentlig vet hvorfor. Hun har også angst når hun legger seg og hun bruker 2 timer før hun sovner. Hun kjenner angsten i kroppen, føler seg anspent og nervøs. Hun har mange bekymringer om alt mulig hun møter på i hverdagen og grubler mye om kvelden. <br> Hvilken diagnose tyder pasientens symptomer mest på? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Generalisert angstlidelse (GAD) </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Bare riktig svar. Kun første angitte diagnose vurderes for poeng </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Ingen egen vignett. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva kaller man tiden hun bruker for å sovne? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Latenstid. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Søvnlatens, latens, innsovningslatens, latenstid, latenstid til innsovning, lang innsovningstid osv. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Du bestemmer deg for å i første omgang hjelpe pasienten med en psykoedukativ tilnærming. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hva er psykoedukasjon? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> En behandlingsform hvor man gi pasienten og pårørende faglig informasjon og kunnskap om egen sykdom ved å forklare dem symptomer og årsaksforhold og eventuelt lindrende tiltak. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for hvis det fremkommer at det er en type behandling. <br> 0.5 poeng for hvis det fremkommer at man gi faglig informasjon <br> 0.5 poeng for hvis det fremkommer at det gjøres for å øke egen kunnskap om sykdom <br> 0.5 poeng for hvis det fremkommer at psykoedukasjon er rettet mot både pasient og pårørende </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> For å normalisere hennes angst, forklarer du henne mer om angstens fysiologi. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Hvordan forklarer du henne hva angst er? </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Angst er en normal og fysiologisk reaksjon på en trussel som forbereder oss kroppslig og mentalt til enten flykt eller konfrontasjon. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> Eksempler på enkeltsvar som gir 0,5 poeng: <br> Angst er en reaksjon på en trussel/utløser <br> Angst er en normal reaksjon og vanligvis ikke sykdom <br> Angst forbereder oss til noe <br> Angsten forbereder oss til: flukt eller konfrontasjon <br> Her må det gis poeng litt etter skjønn, om det gis en fornuftig definisjon av angst. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> Du velger å forklare pasienten mer om angstsymptomer og hvor i kroppen de kan oppleves </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Nevn 4 forskjellige organer/organsystemer med et tilhørende symptom som kan forklares med angst. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Respirasjon – Hyperventilasjon, kvelningsfornemmelse, tungpustet <br> Gastrointestinal – Diaré, mageplager, kvalme <br> Hjerte-kar – Høy puls, hjertebank, brystsmerter, høyt blodtrykk <br> Vegetativ NS – Svetting, munntørrhet, varme <br> Muskel-skjelett – Anspenthet, muskelsmerter <br> Sentralnervøs – Skjelving, svimmelhet <br> Sensorisk – Nummenhet, derealisasjon <br> Kognitiv – Redd for å dø, for å miste kontroll, for å bli gal; dårlig hukommelse </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0,5 poeng for hver riktig kombinasjon organ – symptom. </$details>
<div class="oppgave"> <div class="vignett"> !!Vignett Supplerende vignett: <br> På slutten av konsultasjonen forteller hun at hun har begynt å drikke ett lite glass med vin hver kveld, da det er den eneste måten hun kan roe tankene ned på om kvelden. Hun sier at vinen også hjelper henne med å sove bedre. </div> <div class="question"> !!Spørsmål {{!!question}} ({{!!points}} poeng) Med tanke på søvn, anbefaler eller fraråder du henne regelmessig bruk av alkohol som ligger under grensen for skadelig bruk? Nevn i ditt svar 1 positiv og 2 negative effekter som alkohol kan ha på søvn. </div> </div> <$details class="answer" summary="Svar" state="!!showanswer"> Positive: <br> - Kortere innsovning, da alkohol er sederende <br> - Dypere søvn i første halvdelen av natten <br><br> Negative: <br> - Forstyrrer REM søvn <br> - Fragmenterer andre halvdelen av natten <br> - Kan ved langvarig bruk føre til insomnia <br> - Forverrer søvnkvalitet <br><br> Du råder henne til å ikke bruke alkohol om kvelden som innsovningsmiddel. </$details> <$details class="points" summary="Hva gir poeng?" state="!!showpoints"> 0.5 poeng for en positiv effekt, 0.5 poeng for korrekt negativ effekt, 0.5 poeng for at du ikke råder henne til å bruke alkohol som innsovningsmiddel. </$details>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
<<imgTiddler>>
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IiACfZzAOgsjLLJZwLNA5uA9C3YW5blwZzGdAgH3uWbhTiKfhTVn8riX4kUyTKEgrynbU162zf1iSpEgx8O9LEM73EcQ4H4u9MmjDG3ynnzGhpDAe/IYJ3mIBNk37aXwwXva4KBcjjnP5HGQaDPL0UeOhXuUhxEJ0YK+sjx1uE8eify8V2yfe1mP+9lvjpsxF8vznrazbN5LLoyHutQjcT/vRYZeREAEREAEREAEREAEREAEREAERKAPE+hVGMk5sWgmsSjPRXTmZT7Xxbyo4C+5QM/7XPOeRTjtcbDIpl1Sts/9THmP6+yDeqTiYp5r7nfvk/xiGyz06TPHwP1M2R7XxXK8p40UFeg/55R1c2x5TXkO8rP/Yh3yimPtXq84lmybc86d8pnP++yrp/fZFv0VRQ3qFMdWrJtt0x8HbZCX/eR96iiJgAiIgAiIgAiIgAiIgAiIgAiIQF8l0KMw0lcno3GLgAiIgAiIgAiIgAiIgAiIgAiIgAiIQDkEJIyUQ0tlRUAEREAEREAEREAEREAEREAEREAEKoqAhJGK+jg1GREQAREQAREQAREQAREQAREQAREQgXIISBgph5bKioAIiIAIiIAIiIAIiIAIiIAIiIAIVBQBCSMV9XFqMiIgAiIgAiIgAiIgAiIgAiIgAiIgAuUQkDBSDi2VFQEREAEREAEREAEREAEREAEREAERqCgCEkYq6uPUZERABERABERABERABERABERABERABMohIGGkHFoqKwIiIAIiIAIiIAIiIAIiIAIiIAIiUFEEJIxU1MepyYiACIiACIiACIiACIiACIiACIiACJRDQMJIObRUVgREQAREQAREQAREQAREQAREQAREoKIISBipqI9TkxEBERABERABERABERABERABERABESiHgISRcmiprAiIgAiIgAiIgAiIgAiIgAiIgAiIQEURkDBSUR+nJiMCIiACIiACIiACIiACIiACIiACIlAOAQkj5dBSWREQAREQAREQAREQAREQAREQAREQgYoiIGGkoj5OTUYEREAEREAEREAEREAEREAEREAERKAcAhJGyqGlsiIgAiIgAiIgAiIgAiIgAiIgAiIgAhVFQMJIRX2cmowIiIAIiIAIiIAIiIAIiIAIiIAIiEA5BCSMlENLZUVABERABERABERABERABERABERABCqKgISRivo4NRkREAEREAEREAEREAEREAEREAEREIFyCEgYKYeWyoqACIiACIiACIiACIiACIiACIiACFQUAQkjFfVxajIiIAIiIAIiIAIiIAIiIAIiIAIiIALlEJAwUg4tlRUBERABERABERABERABERABERABEagoAhJGKurj1GREQAREQAREQAREQAREQAREQAREQATKISBhpBxaKisCIiACIiACIiACIiACIiACIiACIlBRBCSMVNTHqcmIgAiIgAiIgAiIgAiIgAiIgAiIgAiUQ+CfzEEx/QGtCQkAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAAnAAAAPwCAYAAACx1EPPAAAMP2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnluSkEBooUsJvQkiUgJICaGF3puNkAQIJcZAULGjiwquXSxgQ1dFFKw0O6JYWBR7XywoKOtiwa68SQFd95XvzffNnf/+c+Y/Z86de+cOAGonOSJRLqoOQJ6wQBwb7E9PTkmlk3oAARABGbgBRw43X8SMjg4HsAy1fy/vbgBE2l51kGr9s/+/Fg0eP58LABINcTovn5sH8SEA8EquSFwAAFHKm08tEEkxrEBLDAOEeJEUZ8pxpRSny/E+mU18LAviVgCUVDgccSYAqpchTy/kZkIN1X6InYQ8gRAANTrEPnl5k3kQp0FsA21EEEv1Gek/6GT+TTN9WJPDyRzG8rnIilKAIF+Uy5n+f6bjf5e8XMmQDytYVbLEIbHSOcO83cqZHCbFKhD3CdMjoyDWhPiDgCezhxilZElCEuT2qCE3nwVzBnQgduJxAsIgNoQ4SJgbGa7g0zMEQWyI4QpBpwkK2PEQ60G8iJ8fGKew2SKeHKvwhdZniFlMBX+OI5b5lfp6IMlJYCr0X2fx2Qp9TLUoKz4JYgrEFoWCxEiIVSF2zM+JC1PYjC3KYkUO2YglsdL4LSCO5QuD/eX6WGGGOChWYV+alz80X2xLloAdqcAHCrLiQ+T5wVq5HFn8cC7YZb6QmTCkw89PDh+aC48fECifO9bDFybEKXQ+iAr8Y+VjcYooN1phj5vxc4OlvBnELvmFcYqxeGIBXJByfTxDVBAdL48TL8rmhEbL48GXg3DAAgGADiSwpoPJIBsIOvoa+uCdvCcIcIAYZAI+cFAwQyOSZD1CeI0DReBPiPggf3icv6yXDwoh/3WYlV8dQIast1A2Igc8hTgPhIFceC+RjRIOe0sETyAj+Id3DqxcGG8urNL+f88Psd8ZJmTCFYxkyCNdbciSGEgMIIYQg4i2uAHug3vh4fDqB6szzsA9hubx3Z7wlNBJeES4Tugi3J4kKBb/FGUE6IL6QYpcpP+YC9wKarri/rg3VIfKuA5uABxwF+iHiftCz66QZSnilmaF/pP232bww9NQ2JGdyChZl+xHtvl5pKqdquuwijTXP+ZHHmv6cL5Zwz0/+2f9kH0ebMN+tsQWYQexNuwUdh47ijUAOnYCa8TasWNSPLy6nshW15C3WFk8OVBH8A9/Q09Wmsl8pxqnXqcv8r4C/jTpNxqwJoumiwWZWQV0JtwR+HS2kOs4ku7s5OwCgHR/kX++3sTI9g1Ep/07N/8PALxPDA4OHvnOhZ4AYL87fP2bvnM2DLh1KANwrokrERfKOVx6IcCvhBp80/SBMTAHNnA+znAX8wJ+IBCEgigQD1LARBh9FlznYjAVzATzQAkoA8vBGrABbAbbwC6wFxwADeAoOAXOgovgMrgO7sLV0w1egH7wDnxGEISEUBEaoo+YIJaIPeKMMBAfJBAJR2KRFCQNyUSEiASZicxHypCVyAZkK1KN7EeakFPIeaQTuY08RHqR18gnFENVUC3UCLVCR6EMlImGofHoBDQTnYIWoQvQpeg6tArdg9ajp9CL6HW0C32BDmAAU8Z0MFPMAWNgLCwKS8UyMDE2GyvFyrEqrBZrhs/5KtaF9WEfcSJOw+m4A1zBIXgCzsWn4LPxJfgGfBdej7fiV/GHeD/+jUAlGBLsCZ4ENiGZkEmYSighlBN2EA4TzsB3qZvwjkgk6hCtie7wXUwhZhNnEJcQNxLriCeJncTHxAESiaRPsid5k6JIHFIBqYS0nrSHdIJ0hdRN+qCkrGSi5KwUpJSqJFQqVipX2q10XOmK0jOlz2R1siXZkxxF5pGnk5eRt5ObyZfI3eTPFA2KNcWbEk/JpsyjrKPUUs5Q7lHeKCsrmyl7KMcoC5TnKq9T3qd8Tvmh8kcVTRU7FZbKeBWJylKVnSonVW6rvKFSqVZUP2oqtYC6lFpNPU19QP2gSlN1VGWr8lTnqFao1qteUX2pRlazVGOqTVQrUitXO6h2Sa1Pnaxupc5S56jPVq9Qb1K/qT6gQdMYrRGlkaexRGO3xnmNHk2SppVmoCZPc4HmNs3Tmo9pGM2cxqJxafNp22lnaN1aRC1rLbZWtlaZ1l6tDq1+bU1tF+1E7WnaFdrHtLt0MB0rHbZOrs4ynQM6N3Q+6RrpMnX5uot1a3Wv6L7XG6Hnp8fXK9Wr07uu90mfrh+on6O/Qr9B/74BbmBnEGMw1WCTwRmDvhFaI7xGcEeUjjgw4o4hamhnGGs4w3CbYbvhgJGxUbCRyGi90WmjPmMdYz/jbOPVxseNe01oJj4mApPVJidMntO16Ux6Ln0dvZXeb2poGmIqMd1q2mH62czaLMGs2KzO7L45xZxhnmG+2rzFvN/CxCLCYqZFjcUdS7IlwzLLcq1lm+V7K2urJKuFVg1WPdZ61mzrIusa63s2VBtfmyk2VTbXbIm2DNsc2422l+1QO1e7LLsKu0v2qL2bvcB+o33nSMJIj5HCkVUjbzqoODAdCh1qHB466jiGOxY7Nji+HGUxKnXUilFto745uTrlOm13ujtac3To6OLRzaNfO9s5c50rnK+NoY4JGjNnTOOYVy72LnyXTS63XGmuEa4LXVtcv7q5u4ndat163S3c09wr3W8ytBjRjCWMcx4ED3+POR5HPT56unkWeB7w/MvLwSvHa7dXz1jrsfyx28c+9jbz5nhv9e7yofuk+Wzx6fI19eX4Vvk+8jP34/nt8HvGtGVmM/cwX/o7+Yv9D/u/Z3myZrFOBmABwQGlAR2BmoEJgRsCHwSZBWUG1QT1B7sGzwg+GUIICQtZEXKTbcTmsqvZ/aHuobNCW8NUwuLCNoQ9CrcLF4c3R6ARoRGrIu5FWkYKIxuiQBQ7alXU/Wjr6CnRR2KIMdExFTFPY0fHzoxti6PFTYrbHfcu3j9+WfzdBJsESUJLolri+MTqxPdJAUkrk7qSRyXPSr6YYpAiSGlMJaUmpu5IHRgXOG7NuO7xruNLxt+YYD1h2oTzEw0m5k48NkltEmfSwTRCWlLa7rQvnChOFWcgnZ1emd7PZXHXcl/w/Hireb18b/5K/rMM74yVGT2Z3pmrMnuzfLPKs/oELMEGwavskOzN2e9zonJ25gzmJuXW5SnlpeU1CTWFOcLWycaTp03uFNmLSkRdUzynrJnSLw4T78hH8ifkNxZowR/5domN5BfJw0KfworCD1MTpx6cpjFNOK19ut30xdOfFQUV/TYDn8Gd0TLTdOa8mQ9nMWdtnY3MTp/dMsd8zoI53XOD5+6aR5mXM+/3YqfilcVv5yfNb15gtGDugse/BP9SU6JaIi65udBr4eZF+CLBoo7FYxavX/ytlFd6ocyprLzsyxLukgu/jv513a+DSzOWdixzW7ZpOXG5cPmNFb4rdq3UWFm08vGqiFX1q+mrS1e/XTNpzflyl/LNaylrJWu71oWva1xvsX75+i8bsjZcr/CvqKs0rFxc+X4jb+OVTX6bajcbbS7b/GmLYMutrcFb66usqsq3EbcVbnu6PXF722+M36p3GOwo2/F1p3Bn167YXa3V7tXVuw13L6tBayQ1vXvG77m8N2BvY61D7dY6nbqyfWCfZN/z/Wn7bxwIO9BykHGw9pDlocrDtMOl9Uj99Pr+hqyGrsaUxs6m0KaWZq/mw0ccj+w8anq04pj2sWXHKccXHB88UXRi4KToZN+pzFOPWya13D2dfPpaa0xrx5mwM+fOBp093cZsO3HO+9zR857nmy4wLjRcdLtY3+7afvh3198Pd7h11F9yv9R42eNyc+fYzuNXfK+cuhpw9ew19rWL1yOvd95IuHHr5vibXbd4t3pu595+dafwzue7c+8R7pXeV79f/sDwQdUftn/Udbl1HXsY8LD9Udyju4+5j188yX/ypXvBU+rT8mcmz6p7nHuO9gb1Xn4+7nn3C9GLz30lf2r8WfnS5uWhv/z+au9P7u9+JX41+HrJG/03O9+6vG0ZiB548C7v3ef3pR/0P+z6yPjY9inp07PPU7+Qvqz7avu1+VvYt3uDeYODIo6YI/sVwGBFMzIAeL0TAGoKADR4PqOMk5//ZAWRn1llCPwnLD8jyoobALXw/z2mD/7d3ARg33Z4/IL6auMBiKYCEO8B0DFjhuvQWU12rpQWIjwHbAn5mp6XDv5NkZ85f4j75xZIVV3Az+2/ANz5fHwehyJsAAAAimVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAA5KGAAcAAAASAAAAeKACAAQAAAABAAACcKADAAQAAAABAAAD8AAAAABBU0NJSQAAAFNjcmVlbnNob3RNv6TFAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB12lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMDA4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjYyNDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrRcyo2AAAAHGlET1QAAAACAAAAAAAAAfgAAAAoAAAB+AAAAfgAB6TtjBx42QAAQABJREFUeAHsvYdzZcd17tvIwGAwOZHDMENKtkzlYOVIibqS0/V9993wrqtu3ar3/ja7XLbLClamsqmcs6xEMZOTB4MZZLzv961e+2wcHMwAB5jhDHka2Kf37rC6e/Xq7m+vDnvozKU/rJWWObLvvs5T+mDnfce3rK0N6WmoDMla429ttayuKSDOw/7B1488mUbSWtWNafpH4YlTLwi2zFB9XoN2y7SfCZPhWkEGtwMOvOgcQE5XV1ebfPDclt3h4eHChfxm2JWVlbK0tFQuXLhQHn300fLjH/+4TE1NlXvvvbc8/PDD5RWveIXjQJQ4hCcN6IyOjvqeZ2iOjIwM2kbD/cHNjTiQspk24duyiTvXj370I8vl3NycSb73ve8tb3jDG3xPeGQyaaSM85xtgTDtyxEHPwMOdHNAMtMBD92eG58DJYAh1uOIjSE3d0mkgbyurK40ASWyzspQUX+u+yEFHAbIZFLItPMrLKT+d215qawJ61xcudzQ2M2boZ4ALnOfKeVz2unegWbAN4G3FoBzSQFv/FG+KCGFo3xDDYALYmsCb0MDANdwdnDz0uFAe9CiVDmoZQkZxNoALsMvLy+XS5culS996Uvlhz/8oQHdsWPHyoc//OHyZ3/2Z2V8fNxgDTqE5UoA545HAyjPAwCXnB7YvTjQLY/dz8RBRnHn8sAk+wc/+IFB3OLiYhkbGyvvfOc7y+te97omiQRwxEkAB51uAJf0m4iDmwEHWhwIeQR8bAAgrVDdt4E6ul3zOWjmU8dGPm2qhawixxW+qB3ErVpD3Eu2I1sCa7o3XYCbAN7qiuIuLgjArZarY0udRHbxrgeAu38jn5Jvaa/LQJS0A+DkWQvPTTKkAXIupHwGAG4dFwcPL10O0Khz0KKU2SbanUgbwBEm41y+fLl8/etf92B55syZMjMzUz7ykY+U17zmNWXfvn1lYmKC4AZvDKSANQZT4tPxDACc2TP4uQ4HUg6x8z5lNKPxnP4J4L773e9aLvHbs2dPedvb3lYeeuihjNJo4IhHmARxmQYBM520m8iDmwEHKgdCXnqCjxvwqAEiG8K1ZbDt2ciho0a/nQAOJyYWsQFyBkq0GWGZtdXluABtupiNXFnRS/X8fDwfGCfCrpseAO7U5gDuOsnDEKZPOxNFQQaGuMAV1Vm9SF0oLMjVfOBRNwMN3HUYPPC6YzlA22h3GNlJpBt2uqVNYRkomZ76/ve/X37yk5+U3/3udx4EP/CBD1jTgTZuenrafEH7xpQrgyRTqBk/B802XXsOfgYcqBxoy2G+aCA3bZPyQ1gGNMJ961vfKt/73vfK5OSkXybe8pa3lFe96lWORjiuBHs4dstipgvtpN9Oc3A/4AAcSDnZTW5spNkGiGAWgxT9hgwDVKx1UyZiFhHQxhIBtQUA28qSAdsqbWNZ7vKjnSxKA7ei54m7Du5m9htaLxqAg4EB7CIvsGsA4Jp6Gdy8hDiwsbOIwqV72ri2B04Gv4WFhfLrX/+6/PKXv/R01dWrV8s73vGO8trXvrbcf//9Zf/+/SaWU6gMhDll2h4YBwNk8Hzwu5EDKX/YDDrISlsOiZHyk2EI99hjj5Vvf/vblsEjR46UN77xjeWVr3ylEyAc1wDAbeT3wGV7HECOdttspBmAzbhNyCQAnICZNUyBVfRKLTQpNzRuemFelYbNWjbutdbNz7pf0eX9AAZwi3JfKTOnT+52EUxvI4CbObX1hFp8BanC59TANV5GrpA0J2KBnzzjqWMT34a1cOpA2iafu5nefiZMhmvHHdwPOPBic6Atp+Ql5TQHt7Z/DpyEwZ1p0aeeeqr89re/LUxZnTt3ztNUrIFjuurgwYMOR9i8SAM6CeR4HpgBBzbjQMof8tgGcCmLKVfZx+bLwte+9jWDuKNHj5a77rqrvP71ry8PPPBAkwzhocmFgR5Xyjbu3KdbE3FwM+BAiwOWv9bzVm/bKAI5CxM4I2U+bU8HgkHs3QFwdlDUIYDbGkBN2jUBsmXNdiwvLRqsrSR4k/uqplIBbLoR0FvV0pbYyDPz4H1bzfa2wu0ugFPSFYats4N19bei6Yafmd3qDrLrMDs887nD7HBvPxMmwyXJgT3gwO3AAeQ0ZbUtpwxg6Zf+OZgRDjcGS0DbE088Ub75zW+Wp59+utx9993WdDBlxeDZHnShyTPgjanUQZu4HSTg9s5Dyl7KDrlFfpBFTMopsoRbTtezuQYQd88993h3NOsyT58+7Tj8EBbayGM+p3ynO8/p5kCDnwEHujiArCSu6PK67mMgjgjS6QehRH9co3Zu7N5JiAC8eER4IbdSNE0KcFvRtaQX60XNjiyzzm05tGwAO6E7gzdr6hSVpf6YmVd02kW47M7vlgBczUPPFJNJtZhNmIzT8KfxiZveAK5Oq3Z5JvOzo0lS7WfCZLj0H9gDDtwOHGAA5MK0B6scGNtynP4pywyWbGR45plnrIH74x//6DVHp06d8q4/wBx0iMegy2BJHO7ZzJB0bgc+DPJwe3Ig5Q85QnaQmW4Ah1yljLHWkuvzn/98+cpXvmKt24MPPuid0ffd19E0QAPTBnDQ5iKtNs2BnN6esvFi5qobQ+Rz5imxRz537AiZ/shamiGd+2F3ySAmpkp1Y6CieLLjNsBbbk5gipR1bgC4JWnefC1IAyc3+3lqVRplAT7WyGFDh7aFvfdPYmmBE93Fn10FcOQrWNey06Er05V/HVdKSeH1292Y8zk7mozUfiZMhkv/gT3gwO3AgRysyEsCNO6jcdPAO40kB72UZQY5NjKwA5WjRH7/+9+Xee1sYsqKzQw5YObgSngGV+hwzEjSIb2BGXCgFwdS/q4H4AB2yBhaXeSLqf3PfOYz5Ytf/KKBG5sXWP/GOYXQQ+5SlgcArhfXB2434kD2itk95nPGS4CWzx07QqY/8odsgzm8i7SFFXCzIRFPk2LnpY0IaNeWF8oq06UCawZukn2mT9HCse6NC+zCpRM3jWGGK2HSpT1M/2ls7onEdu/3ugCOLGEiawCreG7/cpAdJr2aOPUmO4ek4cBo5jOCHfSoAEav9lrvmYNQ0qpR1g18hMlw6T+wBxy4HTiwVQDHAMmVBnnnYiMDB/r+4he/8Fq45557rhw4cKC85z3vKadPn7ZGDrDGgElaCeB4znYxaBvJ1YG9GQdSdpAVgFrKIuAtZQqtLuANmfzUpz5VvvCFL/jwXs5/QwuHRjgBW8of8ZHjlG/sbBPcZ7jN8jVwf3lyYAOWuAEbOqghYoZ2rbNrmp7V3xdoYYWIE/0sMsm6tbjYSaoNCUvaRbp4zeCNQ3kBccvYutDGedpUcUBJ0OIiDa30lIs28Qg8Ivt7HnqtfHbf3BDAmRXKUDKznQUymx4edhQow5Fpe6ddg9pVgWN3hxxNRAWWBzR4DAyrm2py8Ema6d5+zoEq/Qb2gAO3CwfoGNw51EGsLc9tGWYw6/bDn7hXrlwpv/nNb5oLwPb2t7/dX2RgIwNfaUgAxwCag2W2i6R7u/BkkI/bjwPIGUANWbkegAO8oQX+5Cc/WT73uc9ZDt/85jeXU6dOlRMnTngaFrlFHjHdAK5bTgcA7vaThdshRx0sEbnJ58QMDdiomQ3AxkOE9JFlus/+1/hCACP6xEoTfEIfq2vN2rQ4/iM1a4C3pcW5+KIC/j7vjaND4pKDotepU6UFdkkc47PgfNSIANyr31hzubvWDQGcZ48ryOqZtMqPN5mGb/DDBob4ARzKX7DV3gq8pk7CZ7/JxgwAnNkw+HkJcoB2kFcCKoqZblnk9Ev3BH24M2Cy/o3dqHxWC783velNnrZiOpWDVDFJI8Egz+num8HPgAObcGC7AO7jH/94+exnP1ve/e53G8SxmYGzCROwJYADFCLTqW1LAEd6yOcAwG1SIS9z5xaUMCfyeWsATmAq8QfHfhhk0T+KlH6iV4w+WGjM06Ac/4F2jZ2jaNhizdt8WV246nv9EMGyzH1q63QjeqRX19opDPSjH5ebnide/aabUpsbANzhvaeahAy6lJOGca27DJSs8PfAQpNIfoN5FNbxo2D21lyp6UrPCIjLAYa540SuSTPT2MyGQW2TtNpud9r9VsvQXfatlHOrtLdCaxBm6xy4Xl21/bJ+cOPKtRsMcNw/++yzPsyXs7c4D451R3/yJ3/iReQc6EscNCe7vXkh87X1EkfntZ3wvcL2k24vOgO363MgZRBABfiC78hR8h83LuQQ99TAfexjH/M6ONZivutd7/L06aFDh/xyAU3CY7cBHCAOGrgngMuXjevncuB7J3MgZWw7ZVg/uoNDKuyqVgNHJEthwg5NXAfASdjkrWejtwwJsNI/GjRp1gBsyKnXtknWV3W/ygYFT6HO6ctROh/ROeikZcAGaJNfEIOg+m7RtNEj30wl2dGH3hxuu/y7AcAd2nMqkjDw0i3aMllxAb4YXCIIgGtYp+/CTwO4FfnpIoB5rJx7qjQXyimcsG5ZRq0IfYG4aLwjXvy3UwAXuervt125W6XQj1BejzZ52Go+Mu20k27G7+Wefhl2YN8aDnTXRTvVtl/WT7phM8hhAHDsRuU4kX//93/3pga0HXzUnuMbGDhzgGWAxOQACd2kbY9t/vQTN8uwzaTWBe8n3XUEBg9b4kDWVTeAIzJuXMhfyhcvD2ysSQ3cI488UviQ/fHjx30uYSZK/aUMY3O1AVymOwBwybGXrp11vZ0SVpjRRGkDOPCFxCkMN36gr9S9z+7QfQ0gMbTc4YcmTgItkBVTpWjdfHlnaaxrA8xxQC8ATgvgNH26oBnCAGIB4gKYAdz8/Xe1DdLK3aeEIQTp5q7X0Ve/tWZ2d60NAO7g1KlIAQ5xVQAHa1Rs/UZD1I28pP72bwC4tWWF8nfAgtVDetuKbR8KXEHcilSPSzAHTZwBHOcNjZYRldYrJoTs+NuO6Uc4uun3M1jsNN12/Ew/7e78dT+347b9Mn4v//TL8N3P6T6wd5cDvepiqykQl8GTCy0IWrivfvWr5fHHH7em7fTp0+Wtb32r1x7lx+1Tw0EcBsedDpD9yMlOypy86SfdjDuwt84B6oorwRox8yUAGcId/wRfrMfkZeITn/iEp1D5Ni9aOM4kZHNNW96SdtKnTpM2bhjcBnVtVrxkf7Kut1PAkI5WDBCRDGLjuyo/kl45JmDTveUVxBIUkK3hEcEquduvgrM4EiTOdUvNW25QWOMAXs5+W9XnCXWAL5o08EkCMtIDBEabAcCRvo5zchjyFzJNltnUMPqat8tn980GAHeoBeCsPdsOgFtSoQXgMGYw2jlKVIEftjVwzB8rwNpILNoeGpYGTgEDwAELHZuIWzL9CEc34X46kJ2mS/wbpZtppN3ONx1lt0l6vcJn2AyTdroP7JvDgevVxY1SJG5edBbPP/+8T79nLRxakJMnT/o8ONYfMY3K4JgDZNKmnndS1/3E3UmZ2/nO+4F98zjQli9kDJMyBIBLf/obtHCAt4sXL3oTA2fBffSjHy0PP/xw4XNaAwB38+rpTqbcT38Q8KtV6p4ADvgGgAsNmLEGYMqYo8at4MoaM15IrGELbRvALda9xfo3Nicg8/oRCQCcXoKFV7Rv2hdZMDoRTQChX24UJgFcAjwDuMyXIoy9/t2tguze7QYAd1gADsYBvAyylDh2sMSskkOwlo0HPvdENlOoRq0AOHvrRxHNXjEACo4NLWgD3kYVi4TEldDA4fHyAXBUI4NjCnd2lOmO3fbjuW3ab7rp3j3YZnz88z7D9AKASWdg7x4Hku87pQids2fP+gPiv/rVr/xVBgZNFpGfOnXKg2ee/cZAu1v1m/KynfzvRpn7SXc7eRyEDQ5QV1yhTVgP4DxAVX/kiYsjbfg6yKc//eny6KOPlr/4i78oH/zgB8vhw4d7AjhSSdrUaYLDlBHcBnX90pbGrOt+StnElZysM5JLjWrNFZsWAFghzxFW954mZTpUx9nUY0CWNTW6tMQxITrfTfayNG2x81ThW4Bs2ACugjepn0BvzgVtQgDOWj0UUgkSlTb+QjIyalMAQZnJN7/f9m7/7AjAjYh3oTVToWAm06cGcNyrUHU3B5+aoICrCjwsDcHIxFgZHtMiWV0gRTYzcPCdugeV+eUJ4BDSRlBVy9mhpd32ozPE0Jmmvx300/2Me8Ztp5GdccYb2DePA8n/3Ujh0qVLBfD285//vPz0pz+11o2P27OZgSMcJiYmPFj20sT1m34vmboRrd0ocz/p3ihfA/+NHMh+IUEWIRJkZV+Tseg3eIl44YUXfIQIX2L4y7/8ywbA7du3b12/lHKQtKnTpJ1+uA3qOjn80rSzrvsp3Ya4khebCuAAbAZyftYYaAAXKifcVxbmy9L8gsHbiqZFwSP+HJY2Kni9mwAe06V5ZpsGTNNgkwK0UgPXpENqjMFc1sR1NHDkK8I5kLV55H/v2z6E166bjQCubmJIDZzZIH7BInRoYYJhI/IExNkZ5rFdFwAn8MYujpVr18ri/DUdgXBNXiqkANvo1ESZnN5TxqYmBeTGhUIobigcwa1DAnCwoB9zp3UCKZjdNmXPTo0OE9MOYxVvKwz+vcqeNIjbfe2mhob0B2ZzDmTdbR5ic5+Mm/XLtCkftwfA8W1UDMeJ8HF7PiQ+OTnpToP6ZTdqmoyfz9ux+4mb+d5OOrsdtp9873Ye7gR6WVeArOxbkB/4h1ubj9wD3vi0G99CZUMNAO7hhx/2RhoAXDs85U86CQYHAO5OkIrdzWPKWD9Uu+MmfqvAI5RHgJBmnANYAaoAJ6tlUThkSdeqtWx8iJ5pU76mEADOwE1yvlbjtBEIU6dDcvduUtODpkgTvmrq0o70OlO5a8JDrFsm/wfe/RHH2+2fGwI4sptTqBsBnLaKU6jgk20A3JpO6oZhC9IWzF2eLXNXZ8uykCqAbc++vWXm0P4yuXe6jE1PCrOxY8441wmhh+O5H9PdcfRD41bGab+Vkve82nnIMqUQY+e6lLYGrjtc0sJux+Wea6CBa3P55t4n//tJJeuLuNQZp+CfP3++/PrXvy5f/vKXvQ6OE/Afeuihwmn4nAeHfDAAM1CmXKTdTx76ibuTMveTx15x+sl3Lzovdbesq+yPeEZ+MNwnH9NmI82TTz5p8Pbd737Xa+De//73ewfq3r17m/DJN+IlbdwGAC458/KxU8b6KXF33M0AXGjFNPMnYMV0aACyAHDz85zlFu6rgLe6Ds7htPmSOJ4GVQatThIEGdZGSx8VIrCmAPIB6xgR6VHPNc5qBXI8pz/lBMCxw5WwRz7w1zjtutkEwNFolQFwVLWVNWWfP0wUYkQZHAGJ6nEoyydmrALeZmfL7LmzZVaLXS/rXqwrY3umyr5DB8rh40fK5P59ZWLvlAFc0BRwQ/uG6s8gzglt6yc7mG1FehEDZ6dGvttgjCx1C212pNjEw27HybLjnmFxyytptv2JPzA3nwPwvF+T9UV86hJwdk3t63e/+50BHN9I3b9/vzVwTKVyj3wwAKd8tGWgn3wQf7tmJ2Xeblqbhe8n35vRejm4Z39E3SXv8j5lCT6gAWYX9He+853yk5/8pHz4wx/2MSLIHgCuXfcpe7hBH9MGhzxnGO4H5qXJgbZMbL+E2X+G3emNeNbFzF+dyvR6N85vE0ALzdiyzi2c10ygplA1TQqI8wfoFYajQhxGS71WRQNtnY1klZ2jXPLQP8BMfvTjuiiLAV9PAAcYhBZBFU7pYR//0N/abbd/rgPglDgFUOeNrWxU2EYW6twwAwXMI8M+/00BBeBWZi+XaxculvNnXigXz50vl69c9rEhe2ZmyoGjh8uxkzo5/sC+MjozLfI+QU40AW966+N6GQE4Kjc7sHanmSAt/eF625/ndqeafhkPfwxhuDAWKISqppnu9hz83DQOwO9+TTtu1h8gDg3IY4895oGUrzT86Z/+qdchsamhW/OW8tVvHlK2thO/ne/txNvNsP3kezfTv9NotQFcO+/wsd3XcBbh73//e38RBE1wHuTL9GkeKE39p9xh8zwAcG2uvrzud9Yf0H92+lBgSTxXN+EQAzOBtpgWZY0bH5oXkNO0KZsUVjRzgUbOl4BbaugMxKyBgxYArgI1pQcy8XgqoGaAJxn21Knt0OY1wBGAVzVwGYZcxsaKoXLXh/8Lj7tuegC4+5UIhdElTsUnr1QQXIJzuqsATtOlw4A3GMi5KcsKtyAmaur0KjuVtFbiouwrc1f02jVc9krrdvD40XL8nrvK5MH9ZXTvHrMJJnEWnKdTXyQA109nvzOhFD8RBF3tDpJn+JHTpDwnCGvnMePhlpcqxnGzo2zHxY9nLkym6YfBz03lQPJ8p4kgExjqjg/af//73/dU6tNPP+31bx/60Id8rAiDKGHStOUj3bZjt2ltNd5OyryTuJm/nZY56bycbPjuAavVT1B+eInWLOXgD3/4g7/Jy2Ya7t/3vvf5U1po35jCTxqET+CXtNOtm69Ju9t98Hz7cGA32mVfpfGYVTGJCLDgSqNZjGWWWbCHNidoTdsSX05gjduibAG4+L4pmjcdCWItmvpQNGdVe2YNHFoy4RijHECexl/oY/JYkY0ATpo5T9MC+BRHtB3PYA+3iM/pGsM6Ju0WArh7m8y7AChvNBe8HsAFE4cBcBSejQs6A2712nxZmdOmBda9XbxULmh657LA3DVtYmDnKWvfDh47Wo7efUIATruVNKUK/mNgGhoZLyNjEyL84mjg+ulAdirQ2dG1ARo089M18B+DRiXXjYQL8hGdbXaImX9ocmEIg3t7yiLTzCm2pDewbx4HdionmbME9cgL6+DYyMD1i1/8wp8x4iiH+++/3+dxpbxk2ikfSWs7dj9xM93tpJNhdxI3aZDnfvKd8V+OdvK93YfAB/jYBnCcQYjmDS0cLw/vec97fJg0Lw5sosn43f0a7tDCvdsM6qqbI7ffc8rHLc+ZwZCAAgAMYFWfDZh0D1CLXaVaew9wk7ZtGSBX17l5N6nihh3ToQAu6Bl4AcQkmwnqVlnH77RCIUK/m+OmbcBeDW8ajLfQShoVHCLT4xq7by2AmzoZTKq/LEtD8xbTqe2qk2ZIWjdAHF9gYNfp4sXZsnhp1uvfrgrEzUr7NqdTu5e0aHBUGxhmDh/QFOqRcujE0TJxYEYATm9rIrkiGkOjE2VEV0yjbmzg7ZR3+x5G99OBINA7EepeHR1lQ2C4MOSLzpOLtIjTFig6QwZrbMJmntLO+NDK+NgDAAdHbo2B37thshOhrjlOhHVwALgf/ehHXkD+tre9rbChgUN98zy43Ui337bRb9q7wS/y3E+++83znRyvm988p6wlHxN04feb3/zGLw1M47MGk++g/vmf/7m1bwA4XkCJT5y8kib0klabZ4O6anPj9rzvlpObn8vab0rmAqwFsHI+BJgsox4rmToFtFXgxu5S3QPgVrXujWnM2E0KiENbBghEEwc9pkLRutULujyTpoKtdI236zRx8rM2UHGwE8A1a+Yk62OsRdYysZMf+a83hV0bp1An71ZCwTgDt3UArjMto9IHgGP+eEmgYmGhXHnhbJmTZmBJWriF2SvlqsDbotbnwESODUEDN3PkUDlw7HCZ0G5UAzitFBQfGgC3hgbOGxluSnl7Es1OqqfndRyjkquQXSfcZl4IIGAsO7nsxLo7z8wfYekcWfNEGAxHReQnlBLk4d6mgTuG/Kb7AMCZJbfkxx3GLqc0q41BDKBMYzGVysDJUSKvfOUr/X3UqampngNlP9lIudxO3J2UeSdxM4/ZZvJ5YG/OAfidPIdv3Gc/Qd+UvEx3ZO5nP/uZvwrCob4AuLe85S0FmeMcwgGA25zXd7JPysitKwNjqy7kU2MfwAiQhI18+kLL5rVvADYBOECbrjXsCspS84YtAvUSLdOMry2Ylp4N5HCnDShp3Fd0wzdPQ/4jP+SJC+CWlwEcAFFxuOShlWMB4O796K0CcFN3O6NimTPQAXHKjRo3BkTrTAtMDOkqAnDL2uVx6Zlny2VtXFi5ql0f+uDxwtxVo+I1TcGOa4DZo2nTfYcOlv3ayDC+b6YM6Tw4faTM6+yGRyYE4nQuHJsaNgC4ChyVJacfVucXZm4wvdw2BAoHOildEaOmtUnQtjMVGkK9jbQgUINbIKR97AC4oG6aCFo13o4sNe+1q9d0JAsfkr5iAduzZ7pMSYs5qY4TEOdzv2odWSBdT2jw0GhGopFnpSmg3OtNmCS3WZqay/XWZly0XNWgvdLZLF5ECd9Nw/QiuD5blulup5v9HDLSXyqWEToDmZQT7vkeJevg0Ib8+Mc/thzefffdBm8AOdYjtc+BI06/pl8At7461j918hLu7ToN+e+E6Ny1Q+Eaz54dqIEylQQd3TGSVuOeEdJjq7b6tM1NQ33zILeRT1vGsq7pPzAJ4Lj3YKbB7Ze//KVljgN9eZFoAzhkLgFcviRmP9OmCb22yXTbboP7zTnQLX03ReK6Esm+u8vZmbxh+r0irSterwC46dJYuCqc0YArAbNQZkjzJqDGUR0+d1ZfV/C6tDolqgf1i0yZom0DqAUt6AUtNMVB16CwC8ABKwLEAeDiMjDDQyaBm3erKp90Cd4kUQEc7Sr4MlRO/dV/d5zd/tmogdvTAXBk052jtXDKSgvAGe5IVTlktCvNkI42OPfHJ8tlDSqrAnMAusWFq2YuoGxscqJMa+fpzMEDZb+0cGMzWgMnADc0JtAmDRFr4LQIzmmsB3CwoIqHMtR6ErMqO/Imnw1Bmofr84xioaEygGtTv340fKkgX9uFPJk18i0JATy6o3SScjNdOlDRlzAgnGjdLmhnL2+85y9ecH6PHj2uT9ccLFPTe8uk1hNO6u13SNIE+cibCYq2ppMqTyJpBEtpbgDKET7CxH2/v7XGNkSPTiC7gg3edugdt1M3vf0VdSsZ3zRy77zshit10a8h7pLqn8GPwTHXtnGgLwMoi8hZA4d8sICcKdRXv/rV/qQRGpHdMP0MrtEu2qnDg158CPd11QK/NgSN7rJDsSMPCeDaURLAEX4d7UqgcWtH6hC/8Z0BXK/InXzdmMjtEYK6YkDEJNhKmW3zMWcActqevgg5zClUtMADAHdr6rRb8hp53s3kuxLJXrvL2SneMP1ekdbllQDdgaobAE594BoAjSM/BNDQutEvsnFhWc+4GbwJtAVwA1AxZYrmLDYxGHwBrroAHMeJMG1qGvJXZ+vxk+wZwCkb9L/u09RWsN0bqdCAtwBw6mec3RZ9xWHKle7sgb/5n+tKu1sPGwDcob13G22uqJB0fRzzQSOOTjIyP6wcAeCGNM+8psWCy9ekbdMHjs9qe/nF55/V1KoYpq27HJgH04YFkMYnp8q0dqHuOXiw7D10uAI47ZYbHXMaavlarT+mo+CEFg0sxBkY0jI+a07PISzxa2+YpHTMbcUBXbOFmIoxOof5CuM3wlGtJ2NTwIh2vcoeQjul+zXVQkCmgDokAuypmNXJZHaa9MUHkHmnsyMYsTKPjrbhhwp1GAiSqOOEwPltQQX3IkqESoK6oE0gTEefOwd4E4jTBhHyftfJe8vBw0fK9F4ORt6jKYxJbeSVRhOyzhuU2cUaAoceDhPpu3R62phb4nO1y65Hu2G3TfCi49KUreNU76AoGpJyKaVNS6WsfsGz+mBudNMNHoVrhm7C9BrBk1i3nZHS7va/Cc8pH/2QJi4dFTbyy0V7xI3Bk2lUPqnF6fhXpZ0FwL31rW/1dym7D1Vt5wMamLQzbxkmbfy7w2TY69nU83rDc8ct6l7PKheyTm7iitp191MJZPprqmfni2iEpgy8eNWyIAaZCrQcRJZ6MP9Vcrb4jrNNjQBd/dsEOcrNYzqGHzTDqE9Jv3SyTbxsaU3gdSFutwfK3gZw8Dv4AU/EaT0D7BjEuH7wgx/4KyAcKo0/5w/yNRDAG/KJGybjdeqv497NgwzT7T54Xs+BlLkqlY3njSSNFpD10kSqN/j1NE0icZMSn3mgfdAmMSHxbTrte8lCpdVxbYgrNvdxOY+WHz3bZuyWxm1BX1JYXtAF2ELzxiexuA+ZNChrgJnGTcUZAgfosrZNtm5M02lYlhVf7gngwAorhGfcrZiBstGcwRdNGsoX5UAxwsU0Kc/BY/JLnqATS6RI74H//L8gtetmA4A7OHNSR7qtalaUz0cMK3P6bqlKYHYzv6trWP520Y6PtaV5fXHhQrl67kx5/qk/GsCNKcOCRKo0aKiAAhsTU3vKnhlpiw4eEog7rCNE0MAJwHF8CJKgxs+3UdfUASSAawTLiavsBjswKk29A8CJ+f4Wq9JeVceyqjV5AB8+47UMmFSljGsjBRd5GWON0MRkGRpX+gA45UGwk8/VuqxkKcFrphY+PJEzBVC+PDfuGIQPd3K1UaDb+Q6KBqSrCk3+lb8hvSnoVSM8EcZl7erVIYRzAsezlwSQDeC0u1fTFiMCxCfvPVUOHTtRpvcdFG+1hV8HIw+1AJxYIQOAox5UzKDsfHdy2sltsrmx8WoZ3NMPZ7y7gmxoqOmfjX5NhVYzMaV0g0qGg24+b3RDIiPnEar+vsQBHB0VnYC1tJKxtCk9uwDZxMBU6uM6XJVvonIu1/Hjx32ob1uj4o6LSDKWVeQVQW8ZwnDRgeHXTqsVbNPbRj6yx64ho647EhTPatB0dJJ1v2gorNscvQttneBNHiuoUFuhH3BXIFAxxItYffkKKiRY01HRKB0SI31zvcdfUQiCkU1aPsvSROVGPPjiyBHQbApiEUk5SPlNG3KW0HwBNQFcb2+T9U0uUy5SDgB2uKXmlzDf+MY3/Bktlm2g9WUDA18B8QsydaLwKXfmI5FuYLYa7gZkXvLe2Y5SfLPAiObmJvpM6nSdqY/49jRN8LhZ9cs39+QCOxpE+9fO9llPs6s7MA23Kd25EbpFi6r6HXU+cqr3vOxrTFyav+KxEE0cSo2cps8sqgswnVxuxNRqHCFCfMBXHdnhAf/Ql1sCuBVp9uLrDAJ06m9DI8fyJnQl9D0CZVIIBS1eajSeCriNCq9wIb9c+ZIT8aFJ/7ZWHvzbvyODu242ALj9++4xgAOYuNq1Vio6VVWXMmK1JOBO98s6oHfpqj6XJfB25ewL5dLZ53SA7/kyrt5xVDVmTR0FUwHHJjTFN72vTO0/WKYP6rBR3Q9Pz1jr5ilMtGECcKuqCcBU8+eK0Y8Gaf7MOdiQna0qY1mAbUVHmCwvcICfKlvgbUlTSksCP2wrzsoeE/1xTdmybmxK07djskeZxp3UWjwBuVUqgDScTogntxbWWumuAWfDHiEICgHIHVZ8x4JPupNle10cHjQI4U8Z1gTghgBwHpgkdKt6q1WeV/XGMT83W65J83ZFAO6KQNus1hTOaWp6QRtHJmf2l3tOnS4HjuhIFoHhiWmtg5vi27IjtSmQb9JXiQSaANwA7xBcwBwdLZCu5ll3vXAQNLIQ3PsZt5bpUFDQGsDlU5h8DmelLwc1m5pWm1rG6OTI9d2kE/UfaUXYxr9XxonXi3wmk3ZD/+bdbOg4t5FU1BedTVxEpaNIYMUuQI50YFE5a+E4RuS9731vue+++8pdd93lQZU4GT/zkh1O2t1hdgrgaDPoWjNd3fnZ9Wfe0wlKJuWqQBIxXdhZl7Rv2kQjn3SiLohsERAP0Nb7hUUyz0sf7TeqnMhxpxtR6AA4nEl+HYDzy3mLv+qD4IsNAhzJRUQ7QztKRBhKluZOBXAuR0vGkC9koBvAUZ98//TRRx/1pgW+vsAGBgBcyiVxtwvgkn8D+/ocCFlrS1zv8FV6q2f0ndn2mxhVbJt+tPGoN9U/U4vZEzk2bYCbmpKddV/bb3VNXzdHXpTszk8GaICVG2EAJwCUMAbTpWtrzD4ItC1KA4fCSMDMx4MQBoI2anVqr/QnNEXPvKFFUxju3Qfxooin5DemNbFJB2AWa+qQdacL4CO816dr5sN09UzYOoaSXjeAIysJ4PKlm2eSPfU3/09kdZd/NwC4mX1xjIhZo4ThNH9olFAUWrMkpqjUZf7iuTJ/4ay0bk+Xy2ef187TCzoL7ooAnLbPKiDwwMhYHSxnvI3v0VqtmQNaCycAp2m/4T0CceM6OoTp0zFRl/YoUH6mSqVQOaQK4JDtez3CF3p0dfJ8rJYjTBa0uH+Bz3ihfZMNsIupVNA3aHpYOG2s7BVo27NXGwD2zmgzxb4ycuBAGRKYYwBwGipnGBhAteuPzq26KpDvGHCyUZDHkZq3CKvQ+m9kVTfNoABgc97lKADHLWHXpCJeWxF4u6JPj125pEOQz5XLF8+XWQCcpseWUMnCBx23su/Q0XLvAw+WfUeOS5s4XUYnxw2AyVuUNjLLkIYAeoIY4VO96UduOnpEFznEF5Njpx94Trfwjuf0TLuW0XJB+K5nR8qwenD9Kj90BtBPU5PQI9KWfOu4hns852+EVOAklHYSbT8nqW47w95EO2Vkp0nQwSStHCw5ToRpVKa1vva1r5UTJ054SosvM5w+fXqd5sRyaWGLnKQ8po1rhsl0aDNt/xuVIVlO7QLg6PAMBCrgsbSpDugXuEZ06d/THQiPgocQ0Ub0omJfCyahMNQ6EdW7KG9ecgGA0+VDxxUi0s6cBH1eWNLQHzdAUfek6Tf/GoV1pE2ZnTmFr3a8kUTZSAnDUxp6yE4fknlO39vbzsGHXFLvyABu8CKnRnFDzr7whS94o8yhQ4cM4F772tc6HPHyapc25antxn3D526PwXNPDoSstSWuZzC3qY5PCO+GOkh57wrdxGvEWjci0fTZNCCblnwncOuimSG6NdyZRmjG1AABTLq8GUFKGLRhHD+G9k0Hu8WlZ39dAfBmcEf/EDJkJVNNbFWgkL4yNGlozaQ0AJTRv1SZtqwLxyRgS9nHdrtWOHmqj9Iles6nOoqkkW1iFGxTNXDkxZo3xTOAw0GGbN37l//D97v90wPAcYwIRl0tfFXh6fqoM04V5tKcpKZOl8rlF54ps7ouCMBdOvNcGV6c16e1FsuEeuUxdYJ0znTSUBjSBoVRTftNoIWbOVTGBeAAcSMCcENafL8GgNO1IsYt66LQ9IvRGYhJmmrlQDy5kBszEgYD4Hzm3Nnz5arWBAHmlhZB6ap000HYkSqFpQyKO6FDhSe0XmxCU7jj2kwxqXVkYwJzaABHmMp1OopCBNGI+Lp1L67UKZO8DODIgx7IJ5sRbJQnBIMpXUi4kxrtvJWC7OPLFRKMRYVTeMqyKv7xpjF/+WKZ07T0xfNnyyWBuDnKJH6PSIs5oZ2nE9Jc7tcGhuP3ny57BYaHxzUVrLwPaz0fGkQAnI35r7y5wckHAQR8yx7W1Hhq4ILbCpxMr5GVKzfacGfopTj8Ygise/3XIXXT50rY/u4ElJ+mM5Br23RoBd2OH+k5g04Pdw/k3GSW0sZtMxMkktRmoXbVfUPH2Sf1dueDTCFzfBeVxeR8VPxzn/ucB9XXvOY11ohgsy4pB8nsfDL5dE8b9wyTebZcV7nPeNezswqi1agdqG3QoUq6RVvtQSaBGzYXFchudpYR8NkblkOgRV9e1C73+jem/sNtUy+C7geksdeN4hoSWgQYQ1jLaqLOs+7jX71GbZvQI5P5tuJ7PdIGadRQFI2GJ4pvN2xfEUGlkkOE77QJgtzZAI6BD0O9Y5ADeMFzDnJf+cpXLGsHtZ752LFj5c1vfnNB1jJc2iZQf1Ke2m7cN3zu9hg89+RAylpIXs8gdqxi2wpQx8yWS/abTT/a9uO+SUQ3Itj02dGAFCAbBWEjRXvZpz7rHhPtixto6cJmzMtdoFVbxvltADdPZ7LGXv5Ca2VUy4tYYmSQB4Dz2Br9iYTI8pndFP1MG8Aht8u8/JKe0sUvpjg7AK7d7yGTUTLyqdlG8ihbBNwe4Is1cAJutIvrATj8CXv3R/5v82G3fzYAuL0zdznzgkzOLHO49FVMOYyoY2PR3po6V6b5zj71eLnw9BPl/HNPldkzz5cpBZocWSsTAisTmjcmPIyA11IbScumNWhTM2VC03+T0r5NSBvHWq4AcPgPex0aAM7CI9vnqJhJLJDVNKv1eqKqyvCaNxG/ovVh514444X+rHvjYGD8RwVoOEivUdqB8lV5HKsxqoGNdXBjmn7ce/SopnYPlFGBOg4cHvHGCgRedJwX5YdKVT5cIBUHgbS/0kIw8PNUsDJugGbhC94xoAxpwGGDAQbNAoPU6jW9UejIFTZ8kN8Vdu3Oz5XLmoa+JM3bBQDcpfNlkUFN6e89cEiaN64jZb/Wvh285/4yqfVvXgfk6VBXlQCws0uWVV8AbzlQiQigG4TyJQDnOnGBqKWIEzf+jSqwR+e57e8A4dUMjxkpKAb7apCwlJcEcevcm4eQmWB0UCH3+cyw0t3ph788mhvC9zbw5FabzQavreQj42aZeebtDoMbnREaZwDcJz/5Sbvfe++9HlQ52JdzuehECJudlAP1+Gmn0U433XtE2eDUVIH4zL07TL1S0AG6ncgtZFK2ZM+aYYVk3eqarmWVhU78ms6RnFfboL7RbE/qJWVMfcWotPjDKtOQgal83USjLQLe1nhrpJ8gEZU56pt0oISpGUsAF44aHOCPff0T8SK4g6TcuC25ZHKO0iavCBeaANIiQkbC5/Y3HugkW5QnZYa6zwtZQ/a+/OUvl8985jMGbydPnixvfOMbvfOZcO14lDh5k3Y3F1K20u72Hzyv50BI3Hq3rT4h39syTfgq5160rTpt2gBtKWScFmajoNzls4Pq2fUvv5ADxmf1B4yBaMFkL0kpBGjjCwr+HJbcWQ4FeGMt/ZgIjQwxngqESQ5DYy46pGW509iaWUgAJxooLABvyG2+gHizgtxi16ls0ayEbCXoQlnldW/SACaAo8m7fPLLNZ/YadoaONzykP3jj9yib6HO7D1h5tNpwuwVgQ3WaFERnmdWx7isKb7ly5fKC0/8oZx56o/lyrnnNZ16vkypHFzjADh1pAZ8KgTfuV+FnjrWkQlpvdQJj0sTN75nRgBO2iNtJijSILGhQCx3+Ogb1SHUTgHw5sWC1qGpswVAQVgA6qqmTtFCzOucNLYVa9Qwk8cEmEZ1AdioZDogbxZQDdDBDwtQjgrETevrEFOaRp1QvkZ03MmwtXDqhJF4Va4HHsUHiNnIHcFAixa7Ypal/QoNGPmh0tEgsNiScqAZG9Wgw2YOZcTx1vTN2MXZuTKvL1dw7ArCuqjp50UBuFnxdk5TqHNXNYgJkAL+OEfvwJGj+pLFMU2bHi3Th4+VqSPHlH9pDpU2wyHGvFaaZBfg6p0ybkUqR32LgD9MOSmiYlCmKBdxbKqtUDY51uVzhssOoUNBwQmkK0llmKDEL57in//0mAEzgBLLxp+eka4CKmGqoLuzD/8gnWQ2szPvm/nfDPfNBq+tpEXcvHJwbDoi5LkymJ2oTGtd1nQ7i8tZl8RaOD5vlFq4pLNZusnXpJnh0j2fr2c3daF64h5Rk+TpTp2vOlZJv2VTvYGrns5ZDaYsseRBsm4NutrDFe20RrMOAYDelPqISTZCsd5TWuhh+g3aE/wRdQM2OtJxvZjQFiuAcyLOMCnKVGEOtiFM/HdkTo8RjrA8cLWM19n4mU7fFJs6wLkD4PzEzx1jkKvc8Zyy1tYuMAji/8UvfrH827/9m7/4cerUqfKGN7zBh0gjJ+2Lgqcspd3NjJSttLv9B8/rORASt95tq0+1q9hq8BRvha9yLgDnftvjCW6qb9pTK1N4RbPp/JKg698KhABvjNPejCA7vqAAgNMadp8ewQYEQBqb7+gnpIxR/8G6egCdP3Vl0BUJ06e7vZOQDMs2UssGDcutxuLsN5l+TX/cGtmEjohBi0vDtsIBJBfcR7mgWT6F6wZw0OkGcPS90Dr2ob+NzO3y7wYN3L4K4LzujAyxDkWd6Ai1b34Nad2b1r6dPVNeePIPup4QELlgULdH/emkCo32bawCOJhrhZhuVjQNOqI36ZFxab4ElkanBJj8Nq036kkVVNovdAt0+pkWDTsYKjAmRBLrzFStZEd9PwCLM7A42HSJzQyqHIuO/AFvvqqqEwYHiCGyoqKdU5rT0moB4CY1nTrmnakaBBgAlBEEwAWAqIwrW24I34o2TRjA6R5wBs8AdYAxgBeaBATQu3A14KD1M11AnuJeO3+xXDlzzmfooXm4dnVOU2L6goWA2zUdzeLzbdRopjQITx/YXw4fP1EO6JoReJvUTt5haTKHxjSQsZO3Ajh4B4iD7wY7+hnyim3VowQ7GEcADXaU0SYKR5zWY31QlCx7umQ4yFS3tF1vck9DPW004ejfJmIN5cTWO0ZouVkWSDP8k3Tmb2M6G12SctobQ+y+S9NB9EHanULtZLLDgAwdEMc4YHjLYxfqY489Vp566im/zLAz8JFHHin7tMaT87naA+SN8tMO6wS28dPUieJwnxegnY6YaXxco2OWzYuQOm0O/l7kOCJt1OH+0rnz5cqFS35Lpx1OaKnFlMqxf99+rV3d5+UYwwKq1COab2u40TZS1mxnKdC2SVEp1wyG5dhqH7LVdlMmMkwQV6SWSZJuS6YozyYCIsrLYrarVsQ74BaZSk0FMoC8tQEc4A2Z40XhE5/4RDl9+rS//MEGhle96lWWsZSdtFPWsPMeVqR/t30HsOlFzWIV304euh1SiDshmjvEtDt443ndm4i1Jg2YAVyl4taDV166dfJ6po/OfhrSzFYxlhqYqc2zPp1rUeCIcRTwxkUYLz+qRD1+qu8Y0WDP9jzToD/UlaWhTaKosFHa+fmrCCuZRq4BjIrji/FX6RjEmU5ERRY74A0QRz8rYKmlTYrg9Fxm3dHGsz8mDgb5TmBIO8KMqy8i3JEP/mc/7/bPBgC3vwvAeSGxOlDAr16/Yu3b88+Xy88/U84/rcFC69+GNZ06rCMvJsRkdqDmJgaYCnONs1TgVQENzn0bFoAbUoc8PKHdn3S2rG+ZmtD0iD6ErGRIKkQhhQA6YqjfxUM47K+A7EiDaYC3+AitHKkoubnD0COaO2vBqjYOlE3G0PbR2e/R1OSEzqgbn5mRpiy0gc6CKtqaNq2pcwWC7DWdyfq6JQkdu1wBcAjKqCqR8q4sISwLVRsIgKOIo9qxpV2vGnCoTEmUANxSmdUgdfHZF6x5YAppfv5quaZrQfxc1IaGIWkyx7Reb0ZrTfYfOVIOnrir7BOAm9A5eqMNeAv+eQCCx0oxxxO0BQhlADiYJe5mK0boquC5rHCczGLSjqddBHBJGLvep1NNq5elnMsoIP+2IlK4q0jx2CvqBrcMmvaGADfBoT1wbZc8cel0MNm5cG+ZV3vEIFMAN7RwHOrLSflo4D760Y/6w/aAuBwoCX+j/LTDEn47pqkTReq0ZT24A6kATnIYO055OeJSm9ILjzVwADlp0mkbszq4elG7y5fm40VoTP3HHrWjSW048vIH2pPA65hA24SXQ+j7ymrDHA5u7Zw7ddW0hYYaB0REabDUOsiY2ofagtpOmiwDz02bqJ75zIAUkFAeSdThX9oAjul61lr+67/+a2GjDF/9YAMDn3BzX1MZlDKUsoad97Ay/btt/AZmcw60ZdOhuh2u07Ehpt3BN0+p7ROxVg3goi+K1qO2g5evCOPk67N8o43omfEYTVvMWMX9ssY4nyAhd3+3VGAp5SR2qCMnAm/0JBpjWYvGOBxgsNO7WOSieTs+Z7nRP4YWr4I2MEG9SCPxAetz0yCLKGHoZ+OeZGNaN5Z/RI+hXDV9cYaFBnR7AjjNdh350C0CcAf2xho43kfNkzpNyZTlit6QV/SGfEFnT517+gmve+MIEaZNJ8TkURV2TAyRAk6AJvABnaNZLX3kCuvgADBaiFz02aw1XatM/+li/dm4AJw3CtQaMbssDOSEC0NHKwbmrztedQ6onnBXXAuLKjC+kcaaNwDciL5UoDV4mmIhT7x1c9Yd+WH9m8Gbvmgwwm5ODRS8aTC4eG0O06F1cXW8OWiXq8Dboi7AG0JlAKcovKUCJufRoOmefE5oaniKDRxMo1J+a+CWNUidK+ee0ZcrKhCkc5wX2l9CaLRgc1zTuRM6oPeQFgofuEtr3gTgpgXgRpTfIWkv4cWQeSoeAo6lVcuNFtFSlSH9x7SPbigVrVgmppzIHf62YJ9NhKhushqAlOE6XqbPY+NVI3c/R7K4ckXtES9Nk4d0aNsNsXDM/DT5rP7NcztuvU8S3XaPoLvulDzvhzBx2/FzwMONtzx3NJJnjhPhqwysheOYB6a1AHB8Xuuo1nhmvK3kYTthu+llHdAcs4uNusVHLnSYgB+1GfcMamO0H2/gUTtYFnhb0nVF31S+cl7nS2oadf5KfJIPTdyY+gza0bguvxDpBQxAt0fAbUxHWozu07pafZVkBE06bY22TgZkYzJ/CH3cy6YP8aUACkq+U6K75bIjP5SlUqi2Y4nOS00DZ3boJzVwn/70p8u//Mu/eOMC2reHHnqovOIVrzCfu2Un5bctw8Gn4GSGTzvTGtibcKAR4N7+jXcKaitY+qXd8orbLo/sZ7PVCAGozWSrpoXoT3GcVLYB2R6L/ZImP9z1T1/F+vRVKUPYuOCpUilCPJMlP681YyxVPCLQ7jSayQYFQCCmVfH32nPTlTt+tayst8UPRU4CKYM9uxM0XoaRxXgpjvBReJFRoqRrUCai9BhxaDCaQV7YwhCu/TKd8U0XzKCwpI9hDT7r+I88coumUDsADr6IdfTE0hix63RBmwXmNe13/pmnyllNnS5ot+Sy1mrtFSiaZspUFTKsyhmVFk6P7jPRfAEqVrEFMlZVmDW9NQPc1rSQnudVda7j6nTHdRwGYbMxu+pgfu0rdSsDW4WS6SgVD0ZGhbDbMtSaWUHeiizgNUI4pc+npjjIF/qQWlCZVpRPpk7ZkTpGx6+3ena5UW7OnPEbgoDVEm8PAmaAM58zp8EGW7mwoPllX1TZAbtIeE3rkj65HVd5+UpCnlQ+hGZPPL2ig3kvPn9GPSO77RRX4cnTkrZOLwrATei4k6l9e8uRu+8SgLur7BWAmzp81FqGYe1INS8qgIuNDBxITIoy1BsM46JhuMSUOgxHthhM61HsqI5hdULV5y7/Gnpd4AziZOTT/Rx1h2v7WkfJD01e2l4NsXDMjoV8cmWc7nz3IpGk0m6HuVn3yGO/JuNiu1MC+Eieo7OJtoIfx4k8L8044O2zn/2sNSMPP/xwOX36tNcqEQeT8a6Xn2x/1wuzmV+WFPGzCJKmk8aBhoxmnMPA6SPkVhv3Gu2Li5dEbV6YF3i7pstr4XQGor+rrLalluy2zIYg1p0ix+MCa5ztOK6d5BPSNk7o83J7Dh+Sph9NHJuY9IKjNuiMwAeLYEgA+aXPCRCHzUQvJvxTttLFUe1LWXBVyFb9Bn9rGwzvO+YX+eo1hUoBGJTw42L92z/90z+V17/+9f4CA9OnDzzwQE/ZQjbzajMiZazbbocZ3PfgQJW5Hj52arxDfNcFS7+013ny0OWR/Wx6dABcbUKKQhO2cRvQAwBLSh9Pcbq961k24+Y1rVVfZjbLL3Ixc0Un4SlTK0LoG6KPcJqiybjo80ulpY/+A/9oochV5C0yEee7BXhiIyN0Tbvm0eHJn+ORa2QTm/LoRjwz29Tos50DLBnHCdhmaTeASxmnrG0AZ8WOOsBj/+n/ioR2+XfDFOqBaTYxCBpQCJWJAgJcVgVIrmq91qw+2XPhGR0d8szTZe3aXBnSgbMzAkV7x9VRqgMeFvgAvBnA8QJckRxfWDBok5ZoVW4Gbpo65Vwzdo+Na2pkXJ0wnSxpNuBND1Ex5IUBi86R7buhVaMDgHnLqjC0W6wHyk4hO5xgttJQhw6IIjwLHeclTEyjku4YABe+lp0AAEAASURBVItpXY7jIA0JFmtzrHFjulQ8WNHUJm+hHBicqt9R5Z0iuhOXwCSAW1ZY1uMB7MaUp0mlPapjUviIfAK4a9rAMCsQN6xKH1U5FhV/UWnO61rUIDe1b0Zfrdhfjt1zTzkoTcqkTtcfZ+0b63yUV9axrQnAWdMgXlobJ35i4JkZSSMSbypH7UcFNwBO9+skk5C4tYwo2SiLGwx1hen2ahp2eJN8DaWQzX16tuxuQi0v3xI9w6Rdw2Q+u6PwnEG77V5hd9ut02H0TxkarD9ikEXO80LW6TD4rBYg7utf/7p3o7ITlXVwTHMxvZUdDuHbYI4cdecv208/uc06WFUlrQdwkkFkEQCnlzy3YlWGO04JBLvafYC1plCXBeAWpYFb0MYkdphf1XXtypxfikyUjFGRKgvAi13jbPIZow/RS8+0NvrM6Dw8NigB4rh4MeMoI47boXw+P04kyK8PADYt6JGjDo/kvc6QbydNzFrYjQAupWxd1Nv2Ies/QRrPKSf0pzkgpc1u53/8x380eEPGkK/Tp0+7fN2yk7TTTiYQLq90G9hb4EA2sE2CbuotkUy/bnsTUnJeHxIAl27RBppHOdO2A6wxA+YpSoEfn8jAuCilxlUdTB+zUh7d1Y6gr3vkTWE0UIlEAC+PXaLno69qv4HW3ukoJCZkKvLIPfLJjFho4ATkuDfdaLOmWV/PggJE8i7yEk/ZfkObB4jDpGveexbLPpEX8kD+E8RBOzYRDpfjH/mvNeTuWjcGcMrQCjvE9BZ86bnnNX36jM5/e6HMaRMDGrcxVda03nKnhGJGBN6Yp2YKVQovgzcDOA04eigr1sLJ1lvwmu5X1aEahOieDnhcX0Sg0xcL3NfH4Xt6bpiM5gGtG7vMeLPWpWfCcdwJQAawxHQpO0+jUtkST2cBM4mr8Lxp6kLbtSwhsdZNwC7e6tGpKbAzwjSs1Ls6jyoOGJQtNE6Feu2bbL3XhyBScdAViE1whyBR6XGciTZwiEdefwegUtjFOWkaZq8Kjop3yteieDcvnl5VGgA4vhs7ffhwOXH6vnLonpNlTJsXRrVWD16ylpC1g3EB5MRjrgrgLKfwTfnKbb0eaMgQnSeoEx75WW4t07C75eZbwnabTQJvCJrhlKDkXGZDiKC8iXMmSz0SFRK+Tw/ZmUTLqblNst12E+Am3kRHs7MEoMHLA51UyjEgjkEQN6bfORPuW9/6lo944Duop06d8vokNCWEbccjNznYducv3fvJcdZBbwAnipJrznOS5Kka+VPHTeertZ9rAqFLOj6EvmaeXeX67u/8rHZqC7yxwWFZa+EszzUR7zZTXGvieXEzWJsoe7RedOaEDrjWkohRgTp2rTLNOqwlCWyaUoOU7NNylbQEglbK1ifuAYT0K/Cql3mpAjhkgIuXXgwyAA+QG+QL2cMQ5uMf/3j5h3/4B6+z5Kgapk+RNUy37KRspe1ANRxhu8On/8DehAPZwLbrjWzXON32JqTk3A4p+aiDSrYB4kW9IjsCXxrTuHxMh+TI69qYvdM4yZi4oDbOuBnx1W71lg+Ic18AACQFAa7YfKBnwBfujGEVzJFmZoschSGenoir9JHXFWkBVzSe5hSqii9D+IxjBz3q2U7Vz/cBLekZEpDV0I0V9OIxosMD3TkfAn7cyxAOGb/rL/6bn3f7ZyOA23PciRpokAcxZVE7PBfVoQLezjzxpDvXhUsXtWlBn3RSEB3D63NaRsUwNffQwKmWfHwHi+G8IA7gJsYAoOgc1YmuCYR4B5k60zHOeZJWaUUM4FusVABatYa/Bm4asAAvCp8ADhZRv4A4OnIWNZMu/i6I8ueOQnYyOqeillTZALhAm8pTcFsDDOVGaHSDUGonrgGbgFWueeNtID4rJls88huHhBMAtyLNHto7hEp1V/kB+NSDK1nl4iw4AcOVBQm0ysY8+TWBtzmtgbsqOtLflRmtXdp//Fg58eAD5dD992rt2yF9MWLKJAzixDOp9TToMPiIn+I+CboY9QsPTFWh0vZbjorjLBCAurDqMNzk0hiKz9WvcfpdkSm2TQPg1gdIb+Jez4hVLsP1wlzPL+mnfb2wu+XXPXhthy5x86JjwlieqWcqsxpkmkH2hz/8ob9TyT3fqeSQVQbZPI+orbnL+JvlL/0zja3YWY/rAJyzGT7+PrI6+9huIw+1Ezr4pVl9lk99yrw2LqB5W9AzSzZYE7cojdyyZgCYYkX4aZ+hiY8hhXv6kTWmS7Wcg+8sj2md6JhALAd0T2uJxDSblFgmocu7VFMTJx7y7g+Ig7v+PJf7FwnaOhO8xpW7VpHctrLFZN2si3qbP1D/yFbaZJdyJOBP2Up5AMD9/d//vTW8b3/728uDDz7oT7f1KvuNZCtp3uYsun2ylw1sizlqgktg6YObZ8XnhSVM2zXd2rZbhiKEnfCG6FG/kh2PgaHYYLkRmjbGQUBcA+p8HAfjJqAtaEU/YEKiJTeAoGgZCOneaSKbxgKZfpNxIsafxlqDvxaA83OTZ8pDObvKWpkCFTOIYC3TaNNabtyuywE0ZMyLCuC65f7kX92iLzEcmDrmzPkNlIwJTMxrauaaNG5nnnqynP3jU3pDvqwDaK+WKTXyPQICw6qsIWnfxsQslv97WhFtk4CUp+rqjoYV9X4J4JjK4Ow3pj+GBbpGdRzGmHaPoUlDO8Zno5Y4wqQapj8IxxcZvN5LYA3AFt9F5I1ZLK2je9MpKH8+IkDFgOEAw1hgWRmukYA3b7lKXvSr8nqQZKAEfFGpugesIYTwgkpmAKGcHPTHkSEcF8IaQbR0zJc7rAYlwmJiKGAg5g2BPIi+QNXwms6HE+gCgJHDWa2rm9VbCgBuXokc0rq3Q/feXY5rGuywvnE5pOkhoVxhSsUX4OMLDAA43pnjPSY0Mh5kausEwHnAU1awMVhK2pcd2tJoh5vwU9OOmgj6jVNNLrhw47TNrhsH6xkii5p2z0C77NjdmLdDnrgMoNg5oBK/kVXd455psAP1m9/8pjc1cLQOAyznwQHgErzlMoNsJxm3O1/p3+1+veesUwM4mpECU1+xkQYZ1BSwrhwE1vTCsqZlGHPnzpY5bcS4rAO5Z2XHWjgdxaNdqFyskePAa9oc5R0VyBoRYON8SF7afEQPG5TUPuYVZk4ZGZUGblLAbZ802RyAPaUjSCa1LGGoWYKgjIkWeSTf1j3pmX6G9hUmJSVsty15+KkW1prtDC2PfvhWo78oVspSgjgyQRlS3toADvePfexjBnBvfetb/dm206dPDwDcraq5bGBbTK8JLrlkOGqeFX97AE6txGCIV52gwnjivsPjqsZtjX0AN47dyLXibP7zBgXaPXKluH6JY0yFnmmKkECbx0W7AdxqWN3gbkCofjDaX7TFbITkIWU4ARcymwAOlYbxAURhAmXvsu1ut0o7Qjlchq0RbfGT7mknDWOMlj9h7/nr/4m162aDBu6gNHAY8JCnDTlj7bzWvj33nKZQn9OxF89pJ+qVojMvig4DkQZOQEZgBS3UqJiPHmhMneCIQBsdbAA4EZNbAjg2LXgtCgBOU5eAuFHtLmNRMgcHoxlbQu0qkBPshpYAHGEVJgGciIpnQRutGwBO4tFhkjobd6ZZwbYRHISDQiInAnDKN+DOHRjgCOHSFVqreB5SntDGGdgJ3HkGUhLMrhpAnBdgS4BRH/szWdJGcvyasuC0GMCszhVdplYBcCPaxDGu75oGWF0ulwXgLmuwWkY7qQ/TH733nnJUHyU/8MADZd9J7Q6WhhItA1pK1hAOKy6bQ2I4pOziq4oVF2Kre/GHfFjwg5mU3I1XSrqehjy3jeW65dB4NzcIcytA67abVnoRPKLUX1nZMVQPB434tSxyIckcINtp2t0xrv+zWX6uH4vyRT5vFG63/Uk3AVwCMNJAVnO6C3d4wvXEE0/4KJFf/epX/sg9AO4DH/iAP7HFob4MyoTHJB/90OPnRv49ojRVZxGnuciFpQPw3XVEH6Ep1Kh9tQnJ/Jq+QHJFyzJmtQnj/DPPamPPs/5CCSBuTetNtfjPG6m8VlT5z81KtHnzpAI4PsvHNOmc2tYsG4NYAyctJDtU9wrIcdbjtDRzE+xY1beQhzlDUaCPLiSHJV4w/cUUtS9qvNOfkPtoR9j5LdUoEy4YhY5g8djHbz887yOZdVGQMeSJq23IC/xNWcs1xZ/61KfKP//zP/vl4B3veEe5Xy+XJ0+etDx1579Xu+kOQ5q93Np5GdwHB9wNbaUr6pZDPVMXxHedWHC7uNodp3qHblqy4cQ7wCunK1P7ZvCm8Q+FBkdpgR98bAgaNWMD2g90qlJENvfNJfkzqEMOlVa8GIVcMqPgNeXKU4wG3EQLpaGCFJBTwJOVMeqAsJ2WwAzfLHUolwHywcRG5vVcnRwuH5xCx4OI8g9jGqRtN9/4PgFchoOtJ28VgDusT2kFQ7XmRlq2eU1rXKod67w+8bQgbdwaHatOSx8VU8cEtCbEnHE6aU2H8NUG1qH5CwgCaO4M5cdGhVUAkzpdT1PoaA2Dt9TCmcECJwJJTJ0uqTK8Bk5V7kEHgOd1ajHtSjVa60Tvy7/oWgMXw4R5504B7onBMJl56ahUPSufGIMYeK8/l9tCoIpnBEJjhjDpAsChPfMGBGwJ5XC+NeCn6c9UGXPSM28ZgGAOHvZCRj1Qz+Qj3xJGRjjWZKpcvbZQZnWI72WdDTcnOpM6tHfPoYPlxKkHytFTp8r48SPavKCjQ8RXvmaxrI51hQFGtPnCxQrqNPODwoZByEk/ARw+BpTVn3IHB6qDrBx80k4f8t020PJVaeDdHSbDJy3CY9qkuGeAt7sbW9RTBoo0GPwpDeXRpcCe3pfdTtNh28QhmolyX03mJ5+3akcj3Wro3QtHupsBODo1eMMgSxvBXNS6sRcEhvjgOOd1oSUBwN0lbe5xbYIhHHHouLjMW/ha3Xea86wCms+izkTkeUyfyMvP6nkhsvoJat4GzZrOg7rKulq9IJ59Sjvcn5aWX9pDtPxDeikaEh2t9pT81pdDKlH3Fhml4DMe1TfwreVRadeW1EbQwi2qbSzCG14QtT5uj9rVjNrR/sNHtLb0UBmTRm5E6+M8/aryw2tPx+olSQxxDgPANa8WVaRIH4ms7SALrbyQtZ0Y6uNWG/dJ8FMXxgOheaGBD22kDH5odJGvL33pS5YtXg7e+c53Gryd0KYRTHf+k6Y96093mF7x2uEH9x0OuIpq0+m4tu5SfNJOLz27ngE4jGn41zCuj/ocvUi3vJMg4IrWAEhicwLLhXRigq7QvGmjo8bBAGzhzxgZ9R/jZYylvNUxPoom9GSTGleUjX5JYdSBAObiyBFhAr2QOX4n244jIvqT0Y/LV+maVhCU8kdYA3xAQLtl2OBFxDMBe5tihjNtp8Cd0/BN3leaLqfiNLRqoBy37vqr/57RdtXeoIE7Mn1cmYC52qWpxcRXNbVx8dlny1ntPF3UZ3pWBTSGBN54Kx5R5Y0IcU+qk5yAQapYUHMAOABaBXCAN4E4gwajGjRwAjZo1ABwaNW0hssbElRxaN6WJWRomgBl3pRQNXAs3udZPaxESTRhoIQvNzSYO9kJVgEFrMFYAziEg3tHpKoQnuiMA/2LIAKuK9e7+ZkRSQKq1wCvXwuNXJQXIbQGrs75I8iAPxoDa9tiTR4Dp5MWOYVXHlxmaeHmpGWYE08ZcJY0cMwcO6IDe49r48K9Zb92nw4f0AGlmg6KnbyxCQQtZpSfJhWax2BFlAVdHMXHTuDGc7ipeGZU1w+eMm6+EJMxh+q9G4DcDAz1Q8NXMexsAXaM9T9NZ+23JaWrCPAZkmBvMuScVkJOqqZnb+eplkXu4WZHp01qdsOugypumKZjisf4jagRqe1+g/vNyneDaOu8G16sc73+A+nGdICWJ6gjSqCGDCWAa7vnblS+V8lp+ZzRBYhjndKpU6casIc2BbqAP/KVdDM3/eSVuLXq/P7DEgieR7WriU06sH6YlyK1IdqHK5B7Abp59TMLmjo9JwB37uknvf5tSf3NMABOL0Sj4oM+sxzafeROf2iy6ezjBUn9iDYo8Gm+ZfFpSS9Hi0rQR2mrb+LlZ1Lr4dDGzQi8TWtadRxtnI4dIc4Ih/+qH7JwK69iSuxOTenSMybKp3vLGm2AKCGf6euAff70y/c+k3O0lO203T9JvshLTrcTkM8Vnj171judAXFo3wBw+XKwkzy8GOXeSX5frLh0k70775qjENOmf6tia0/qNxb7q/cnXA3rMLpvh63UqkWianGMnbo4G41rkVMZ6pgHmEtNHGG4lFoFaoynoiF84LHUbR8/vXy5QJBXGAUJGorLGKn+iWVH2CwbWg/gGEdqvioNnu3W0Ax/ZJjLpissst6OF/fhRvh4jqj53DxBy0nwk2EzXxGK2QL6hxN/eYs2MRweP1wZs6oPSl/W1MZzmtZ4TgfOPu3dYWjfAG1Mm46wJkUMGFcGx+n0VAmsUfGaFJgmcBZvt6o3oQgDOISGDnVMnZ6O1WAtC2/IFBRAE5sXNGipwtHACa1VAKdwAnwB4KiMeEM2DlOaBnWiYVMFU6z0I2RCtZrz4giyHV0BBK8xQ9AQBPx1xfo33QPKDN4khBpQ7Cc3oBP3sQZOWjjxhrcQOap9xMDlqR7xx/PwCr4i+lwAVbGwLCj+gp75UDdTO/vvulubF/TFhWOH/dWFIR1xMqTBaVmDLZ//WhYtjj4gBa52axQn7MKvgZYGGuBuO1RTVrljKrsqt3Ch/PqFD/Wyq+4xMXVFfVUAZ+fgdoRwMP80HTNTyHJhZ9ASDVnPrE/0dBjcN5ojSg6Gjh55U0TiWnsTzvFbE4uyib+1JA0F5U//nQISKwubdlC64S982KlpeLENQqTb1sAl0EJ+cwq1DeCuSmsFiEMDx3lwTG2xS/DVr361P3eUZxF6SkLym3GjLjtl5Lmv/Nay+X2HJqT8M4WaGjgAHOCt83KkZ0nxykV9jk/nvl1SP3Pp2ae1y/1suSbAQLsa0iAxoryOqLGzo5uzlag+84DBwsIhWVI/wtKMFfUTK1peQDth57syID/1HwJqaOkm9TLENOqUNHKcAcnaOJ75JrPX5irPcR6cUqFPQc6rILU4JNlN8JsS1/HdRhWvC9oPz9cR6OMhZTtt+MpFXpCPzNN5He2Cdvcb3/hG+epXv9pMoQLgjumw8Z2YTGMnNF4Ocd0NqV1tarJfq7bFtgamfkOZUQm0w/CCnc89iWvM1OwQFxo3AJzXuUmDzteJcPNLmeTG7Zt2biAnutUttW4MLta8xSCjZGsYtW/kzv0dAFBtPvIcCo8EcJG9DvBKuXVYGARdmXTnHFavkQ3Hxg9/0uvEE3/gkeJnXO7BJN3G8uq05INtK+N3wt9yAHdo5KAZj5p0Tp3qpeefKxeee1Yg7pmyrIFhSMcVjIm5+oaCgBzrWaRxUxVwjhnCwpRhqCxDAxc7UHmbFbOoKIAcfaI69WHWyaF9o4MFqOlMM4AbwMbrvGAMnbX8odlMoXIwp9JBd0ZVwUy/PVdpFRvN0GAsA6BcEI6K5rPiXNFKg+5XWdKvDGnihtApjoXPgE3CBDDTxRo3/FERW+4V3geRSqjjU1sxKDHMMOACePJTWyLO8jfvfLumKdMrOhphkWeVZ0qfyJrR9M4Bad4OnLxbu041xaNF1+zW5fDjFQFeNG/s4k0Ap6jVxCBCmi4PPJFPTqFSLDRxLpssD6hdDbZDi3BxWaAbfspNxsBQcYkOXUyEi3s/80OYWifcUy8rqgO+MlFnfSuAg1Jczj23dumUgXSyUVVvCDbhiB9/ETN8qn9GcBIN8XaQG95n2jcMeJ0ADS+uE6bbi3TpZDCW85RxudPRYdpTqHwXmOs73/lO+cpXvuJzDzlShPO63vjGN/q7qIC4BHAJ6LIjg16mk/lNG78bmVolajpqm3oITTcyIxAn1vu1i86dlyG0b7Rg+oYrs2VVyzOuqK+Ze/aZckUAbk5fKllTf4O2f0jtblgNJwActOLlYVn9lJdaiAzLNNbUj6zSVnRxcPiaAJ1fEHn508UmIM6H8/EiM9rkIOC2R19vQBPHsSOAPMBeTqsawEmyDOBI0wyQJKOBU5ulXLFA+kac2Zr/dni9NYo3DpWy3baRB/KSGlqo8LWP5zTNjWyxUSY3MTA1z9c+dmJejHLvJL8vVlz3g9EdNFnI7s0OzUNIqqqwMfS/dNieacKVwQvLv3Eft617HEhU7XRJ69ri85Ea5wBwrHUTcGNt2ipHiBFOcqOeSXGUSd7iAGK6AHX404Js13vCO08OF32dNz3IPWayyK/iqCBc3McFyAqg1XELPxF0MRTAtgGc2jSGsGlnPMLlffgHXcLlmXJJsjLLeQlC+m3RxC3T4N7jsfJ9yzRwh4b2i9dSh6rjnNXmhXPqUC9oUTGXPtQprduiNG4cHSLQJgaOiv+AH72LqlBMFwbYYgMD699Ym8aaNwAcFbtGZ60PtBvAyQ/gRpg4201vzur16ZATwDE1KqIB4FQJw1oLF2CtM22ohKWBA9RFB0tKNgiRrjiVWa4SEoTCgxWCBuN1JXjDJioC7bcFhAshZCqIwaaCNxE0eMOPOKiBrVaWP3P1pEH86NwDwPlrEMofCTDscl3WEQkXOeNKaGZFg81BvckelsZk/6lTZf8992naVAutpTFgzRtHfqxoMGLTQhw86qGwlpSGEfUAiDHAoj5wRe2pIvgiUeWVBjRu8Eysyivdwb91xlqxln/1TO0ktNK0hRY3+0Auaeo+6p7yKyNCk6l0M9/Jq67QxDrnIfxwuAbsyl0nEftHfNLOcK3sRTYcpPpmICJswXSXbwtRNgTpZ5Ai3XbaSQO3BHa8JKRmjsN+AWc/+clPyre//W1Pe3HA7/ve977yrne9q7CRYUoAphvAAQZz0CYN6GVaaW8oUA+HlAgAHIYmlCBuDI2rBNEduvoYvcJbDlzF0uyzPOOaAMKC+pzZMwC4s+6HVvUJHlTVw8ojL0JctCfMsto0u9YZRNS7xMsRfQ5fKAG8aZMC06PD2uCgTsQabH+hQWviRvXllwmB2ym9KE3q28KTAnQcO8LuVTY30O8kgDMPaIdOVbzXDa0u27idd+FnO7zeheSiNLWhpJylbJGXNoDjSx9P6zOKHFXzve99zy8FHFGD9u2Izt7biXkxyr2T/L5YcakqhrW2WdeVNQ8hqc2jx18itwhUABe00o8gcZ/yEAnqODG9GC5oxzjfAgdk0YcA4BqA5tZR6ZNJ+hRdnjrlpc0thnFK7cYyp34ecKdOgqUQniZ1HL3c2a1T0HxJJU8AN/qq2GUa/WO4Z1+pPGCcRnwJKadQs0zrwptmh44yFDwQCQM4FDiVZI5nyKv+7Z40M73mWd6MZIS9pQBuRTvDlmYvlcs6OuScOtRLZ7XAWJ2pvhHlTQvjyhiLisG0oyqYtW4Cb3R2HkwE3KwxA/UagKmcADcYY0ESwFH/62NGdMNUGp+7AcTR4RvEialeJ1YBnI8QoUPmNHWDNTrp2qHKjinUENdkoIEGlS2gFXP/CIm6eWiTkGw2XZiKyhGQEFsGd4WJTQuKY/AGiFNlWnuABk7TQwo6rDL5LUTuPi8OoRVtOnfK5vU/3Ct7pM1Asyz7qhoAGrgFZWVBAx5fWzh8Ul9dOH26HLj3lM582+OpUwAwmz9WNKAEgEPE0D5CCSGhDNQD97L5FT3/CcC5wRNQ2XIEpS1yDh/CKncZ8oeR9/WNR69O43KcdgySJ3UYmUSh7WyFHFgd2OpAmtvMt4NHJDQdGMoT9HDHVNtgIcKGe/ilHPipCVpvqtUJf/vfJWDrzmmCN9yRb67f/OY35Wc/+1n5j//4D98//PDD5f3vf385yJEa0jYlgOPrJMTnGfpuv3rGzkE17e50ez2n6IRESrpoz2jA5WEAp5c3NUg5AuCkXZMUU42r2om6punfqwA4af05D25eMwCAN74C46lUtb348kkAJ9Jnw9Oy2p1BnBLz8gTRQ9Tpe9DIxYftda9+g3WkceBvALhxbWJg+nRCwG1M7W1S06kcBMzXWeKwbF4w6ccszCFy5FcFokzwhna+Xi5JvD+zHV63U2jLett9O/dJAxtZcNlacvCs1kL/8Y9/LD//+c/LT3/6Ux/ki2YX7dshHdOyE9NvuXeS5p0Yl7pB7tpG0pc9Ycu5KxDtjM7fkdMv7Kh36NI2ZXM1IEluumct2pLGf3/PVG0XAJdTqREfeQlliMNLflB6eBpUWnKDPKVv8Jb5VfIGcMib+ixkzjtb1c6jnOQ5AudSj3QnLADOccwT8lzLVW2P62qbMfsVY0iGWWe34oc75a28ES/ADx43yUodz7DznrAOTxz+89mZj5+7//oWnQOHBm6JN2GBtksvPF/OqtFevXheGxoueUExZ72NKZNjyiSAQZMN6pg1XaqLIntawZoypiEAW3SAKpQ6bv4aAKe4YLNgAoM9AE4ARYNxat+ovtTA0Ql7U4QW/UOTDpVBItJUJ8rOsWo6zFd6tQJc0bXSzWDdi9PWlBEGrRRVXLvpAHaE4ZJAGZixYA2hNIirAE4RaEBUsoW1Ci01Gf26BkPfROZIm8ODGWjmRVuKZ537tuLrwHGd+3by3nLogQfKgftOl2FpSvTlbg0kKpvKzM7TVQFCpWSNJlORStlcoC7gAPkXx5V8NBXGyzUvPpRH4EqXWwV22ZXpeJY3/LDl3639GFQpaMTUTZYVAVde/QwpmOQLvih0XvhhSFuXWNMmZq+gQYMB7Gcp8YIg0Rrifo6f8EsHsoWJtUy6We9tv9v9J18+2p0HeU4A1+440JT87ne/81TXY489Vh555JHywQ9+sLBb8LC+7tEN4NDc0UbyTfdmADjA1zDadypZb/EAOF5nqPA1vsTA+j0BuGsCcCv6IgPHFQHgVgBwyh8vUVn7SDflRVvPkUNc7tTlRvtiExQgi2uFPkWy4xch9Rucn8jGhVF9+QUAx+G+I9J048bXT47cfY+1cgC9vNxZITSWaWSOTltZt5N+4m2F6tiRyUFhu0TIz05N0sCGl+SlLQdPPfWUZYqXA14MOCSaC3nixWAnpt9y7yTNOzFuI3etzNOVca03yENbJhgIKtCwe8sP2VGbCQCXM1axyYl1tihC8ONokGUpd1jHDIBb0cVSK9JhJKaPZRwiHY+3AnqAOMICtujyPcbWzHoIMG3li/GTNguQY3w11ZpHhY8vLKkNuwwKV8Gb06npOVJE9G0AOPLE2BGJtmXcQV325AtZJ03KG2mDDfTYmKSTdtJwvpR/WOt7xU8ahDn5N7fqHLi1GR8VcuW5p8sFnfl2/nntPp3T+hR1pGxc0GosT2X4o/WqNtDtmM5TGhVYo6zG2AA4vbUOM3UB2LJqSAUaQmMENxRQtTc8TCehWzNXgE9Ij/Vh5hm2Qvp7Y6LhRch1B6oHcQM4U3J80qly0TAu3iKULowV0RREBYgwCC0CpClSL6pUejlAIFyOJ2ECsHEgIR+39zo4ELmumNMPoZREBS1XYgxKIlfLRj5DqBE4H5GitJcAYwKu1yS0c0rj4PG7BeDQwAHgTunAUb7lmJ/+kQZBfGXtGOvIGJhUEUpB+RBtVNJAWv4Z3Dx1qoFrHYCTn4MobWW2cznv8iTveW9/3JJXRFYUWTRcwATGdedK1D3p5j22ytcIup7XNG3K1DlnBDJtHlPn4rjqkst1DQ1fJu/88ky6YcI/tHKkhys/okGa3Fc3upXG4Oy80YXItLzC4fb+pTNwZ0o9wyuXNcrEM/456OLHbkE0Jl/ROrhHH320vPvd7/aOQc7suluaXuqP8KyBI/7NAnDU2/KyfvTPuku01Z78py2tCMRJlnzANX2Mdr3PCrzN6RoWYNN8jYCdvsCgN/9V7dRGC+cXDuS0lpdpF755iAbO5z8pHTAW2n3KuKR2teBLMis/WktRm2LH6rg2DXFZ+waI0yYG1sTtlQZuUl9z8O5Ur5fTujj1ZUzBIrMNiIMW/41c6cEm7e3LVNbrdmO2B4vtxs3wSQM778lPXo8//rjPFkQL9+STT3pN5Zve9CaDt/2aht6J6bfcO0nzToyb9VI7xsbKsnQkT8JOo/OFL21G/7Sdxg1/Hu0hP7UhtSdAFF9QoE2xuzS0Y/ix9g3QVt1q24WexyDLCrQkP6LlrxF5rFAcxkyNKeSv9sAGdIyhljfypbEmFCHksWUUyVP5ihiyyctZjLceB02jFacWi2aJsU0ZZZJ/aTuvNQ81AKGacF5DXtuA/esP8moaLi75if7XZVBZIp/wgXTXyr3/5e/a0XftfsMxIgcW95SrOu/t4hOPx0frzzzjTnRU2h60bqx748wzOlOmTgFwE3qT5VNY3nyANkRb+AFcowA4tEe64gVVKNywDGaD2PWs4Az8/panqnZF2iLKTLFRHDmitC4B4GQDCCGmXrrRpih+e1DLygHAISBBMJhqkIJbvRC0FZ0zxXQpgpW75ZgeBaStyo+3iJX6PVSvhUMYq8BpKPVsIMIpx4ZulEBOuMqPy9M8DCoMOIq/Cl/Eo3n5XQPAnThZDt99T9l/+nTZzxSqAByH9xqsOGwFcKikBeJGdK4CDYfL6btMStCPKm/gO4VF8sXM9EfAaGC6HEjlQXuo1mmwahs/wuFWy5rxFzWwMuArYV1UoGqQURM7n1tu8AA/suHT87W+aFTnAA5rSpz1SSwsZ82Rp6xUtwHkFEXRyLKFgRuLDQ4yyEBzOSMRr6ZP7OguCKuGhGXaQPT+TT8DTcpjv6lmZ5HTnO2dgdCkcwOMAVgIi/+swBBndn3+858vHLzKBoY3vOEN/rj9qVOnxFfaX4TFTtruKPXcbk/4b9XU2hF9S2WITK032hfaV8usNb+SLWvW9OG4y5e0iYEzJ58rs9r5Pi5CbJTKTQwrWmqwqrArDB4aXLzbW3JLmVkH540MqmVyOqnyT7FrW+EWBPyuau3uFV1LatO8PJUxAThp1ya01m1CQI2dqNyzsWFMn6pjM8OYgB1Tqnx+C4A3MqV2iDYcEEefBk8s8y5UPHeGpsqurfOtRujb2qmMtRNu00o5QR5++9vfelqejQy8ICBPXIC3GQHfnZjtyNhO0rnT40bdNK2sqzjVXVZtfbUDJVgFJQYUNEgM4XWpL7AiQ+0I7RdtKw/lpV9giQJtjrECuj4HjrC0JQ8yQSeaQ6Und68LV/v07JXCeyxRfFpFHvlkekQRLSsbIOU81uw5j0SIS6OmsssV5TE/GBtsws7uKmXK4cmrTPCvY1N2SKe7A0VA37ImexQFUhJtAkQcABp5zxdieJIXNA1IZZ/+b/+7FXP3bjcAuP0XSpkTgDv3+B98IvrFs8/7MM1JcJgYp/1d7kj5AoEX5gtcAeDGBeDoIH2orACcd6KqkwR40eF5rGX6hMtDK4wLAEdxWE1mHwCcfFyPrjT9SDNnAMfbL5o2S4q0DslU2R5wKl+aylB+NV7AaYMR23JzpeGmVGA+H6sHrFBJBmTQ0TNvDaF5k0CrvJTZKmMAj8o6rAv6zi30TLOmZ0GDUCBzvvSQa3X8DVbRX1ZkzsdjA8OKBoYj2n167J77y/T9p8rek/fFsQZo4JQvygwfAUGoj4W2BGahr/LwrAbGG49GYn9j1efzLNIYeYtCwJSWNI3KuIKznkGqcGk2eLb6Wm40ML9tVRuVBfxxGJU1yxdvZCp7jMjKHnUUV3PvOqqAjmzKHww5JO3bmBeXA94E5ATeRtGGaPpqTBqQMd3zTVwWoONvrYf4owoWES4Z0fE9fAnBCkfSxJO8kN0qRyoFjw7LNP1OTHYK26HRyON2IrXCkiY0EmShNUs3gvUCcHzYniNF0MB94Qtf8HEi99xzT3nd615nEEccgF4CNrR7dDwJ3NKG/nbKDJ8xBnBVZPwWqvxH7ajdSO5p5ZYrTcmsLl4rC9owtXhBX3zRuturup9UvU5SjZLRIW12WJmn/WkKR/fLeoHk6yfkubP2TfSocaU5pXJNT4wrDyH/8wq7oB3fC5L/Rdq0ZIkdqmjcvAZuOtbAjfAiKsBm4Kap1VF9um5cmxwm9+7XvV6mOM6nHlViGbOMK1nkjcsllFVL2nnG7eaancpYO3dtWsgE9Y+c/PrXvy4/+tGPCseJcKgvssQFeGOn807MdmRsJ+nc6XGjbppW1ioObtVdVoygOIUbIMb3fq5h8z7HAKZGNV4sGcDRzgByUl7wwiQQB03TtQJB9CQbtDGnS/um8UHLF2MJ2ro6riSAs5/yRx4ja1EGxR+2kqFmmbz5X3237uNPtD2uVjfCYKrtJqjHlKV8xh85NkHCyzQyLj9abvNsXzv4jn7QR52JGOHaBpptAJcgLm1oJoB78H/8n3bUXbvfAOBmnrrq3adnHv+9vkv4fLl84ayB257xEU2fao2MvhjIFweW9WbLYEjDBsDxLVMAHKtU4rulAnHSqrCF3ztSBVSYMoWJTKFI12Y7SxJP6tZViVxUjZduwTh15t7woLQ8kNNx0glXlgJuYDTGTKZCuaCi/wBaIcAWZMK54kRBlcDbBto2wUTFrxUFSAPIIMQqL2Xm0yB+i5A7bwneSQMdgxtSDxPCgCCHoFHRsVuOtToCVFwS/EUJ9TKAVuCXQePYfafKCV2TAnGTd90T2jeBYIzBD2WkmAA24kkDZy2apqJWWU/EdBOXBu9FaRwWdC0uLGv3EIOdpmylTaTR8TY1r3WOS1o4Di2EsFGdU2ZflJ8y0FDFRPKg8mBoIPA7F2+7wcB4WkyCKA9uenaFhB+1zxQUX+kAkAPQxjTQjuvzR1OSoUnxYI8G0EkNnl6TJHtY/sOczyU5CjCnOiIdCMOPFoDLhhu5JL+ufmcfN5/J8xIAcGw8oKx0FBjaIHXDM+48cw/g47gHzuwCrLH7lEXnr3nNa3ycyITAMmExhM/65TkBHPSSr7hv1UjMEDXXgeMof37LVoMcUc/tzl73a2xSuHZF575po9SZF8o1bVxY0HrbKdXTlOoX8MZuVX+yTn0OC6mXpAHmSAM0bAngmMJwr6GK3iMZm55Q30PCekY7xzeW51XGxcVYwsBw5JkCvSx4ClU7UkdZD6drXMANGwDHBgd2qI5KLof37tGShtAWqwCWPyxeJJGvMNFfheDL8xaZdt31m2Q3DZ7pu5AF5OQXv/iFd58C3pCt1772tZYlwNsetd2dmH5kbCfp3alx1WKU9by4TclruyF9erZX+K8DcI6Dv6j5Uj9C+xfgAqgB2vyipDpe1pjhryEw5mgsoE3xlSG1btk5xsU4EcCNe/oS6OkinmQIO9etxXMthixMKE74xSj3GnN8KR3atpcNQUvPKacuhsNHeVOGos+SWza/Ws7KEMdIGiLmNINW8KqStIWSCtn36Qhy6ZCMtmEFkMZJ+s/2Rbvx5TF0rfzJ//p/22R37X4DgJv++fNl9tL5cubJJ8vshTPlmqY2RlRR0xMqhCplmDO8BGoANhRsRGvfRvwd0/GyJJTBJ2u9eUFuTFP4awt+028DOOgA2aiQMChnEQ+JhSoMcCZ2i1vWsqkmPKB4/Ulo3vwhew3eMJ4x3P6KEwzuCCcon28oOiCVBSAR9Vy/Jinx2W3sNgW6IUJ+M0DgUCdLO7fM1E0FcIAbwB7pAAxjzh6BlYNNNAroel4cW+l7EBHNGHBkq+wAVA44Zscb0zgsnj4izduY1sKNHz1hYMciaogHL0iAspEe6wqUL6azl6VN00C4rIsNKEtz0mg0AE4nZkv7QEMExCFw1qqhrVM5gla602jqPWlSKF28GdEh8IiJBqLM1xaSz+TRAK4OaH52TUKG+iWy7h1OnFbjYEqcswCteROgmNLACYCz5oNzunTPYDoikIemjrVIsatQ8Q3eBEAkF7ku0sKQ6TjXNPlI3xpWdtTswGQnsR0STWexnUitsKQJDQZN7NTA0WFgaIe480xYnrMD4TgRjn3gDC+mVTk5n3VLaE0YdGk3GMJDgwvj9iRaWbd23MYPGt8laX4hN8qaR8V1W1Eb8Mfs3WalOJa8LguwzQq8zUrbv6KzJlevzfmYIqZRhyTjQ5QbTYDaIQCO9sghogA42pUveg61R+R0VIMQswVjyv9odA6UyNOnaOAW1Q7QxrnPkeyxqcEvCbK9Bu6gDtDer+NEBHgTwI0JpIxLHnmhYCrVMqcXEbcBpWPZhj9Kj87egu5S43jzTdbbTlLqpsEzcoEsIFPsav7Wt74lbSa7h4sBHF/6yKNpdpJ2P+1qJ+ndqXHVQpX11sWtTbrpQbe0AweLH7VD+nrcuLiPfl6dhuqYqy5LQGGhcY/x3YCEe4UljNeJK74BHC9hkvqUEegD9JihYoy0Zk5tLdIN2wCPfoY0md1RVtKgPAmQFH2OT41g1sh01VY13nEvl4xSS5YtjfyEsSzpQc2yGvLcufddTRxnB2tnJoPK9pjBOKU2TbgkmeVuKz6SX9jZ/2Jj/vTv/j/bu/2zAcBNfuu35Yo61DNaAD0nILdw9Yo6wtUypUNk2bigmo0KVIFjCkbTW5pYXdXAqJOaZLPQl/VMAm8CH/7eKVq4qoGj0hEuANyQYlCL8M6uYhKwLqsC5gaAo7cPEIdtNwYehXcFeDAAZPAHyY6wUnHu2GGkEorNCjjWVBCoqpkiNofdmoYqgbVxqW1kyob7ZjGmwgHgfP6UwroQLksMghY8hC8vhY3Pg4mm0mT40AJC8UpTPjqsd1pv+fuPnSgHBN6GDx0uIweOaKDQtI34CG3EgDh+o9GdwRvToEvSYCzNl2WdowV4W5Q9r6mzBX1fFRC3JAC6JACn9qcGGXkDvDL2cPhyADgVBj7Iwm5ahh4JgujGkARnwjEbB1GywXDvusHWRXPLQSGe5S5+qBTiiwLIeH2ebDRsaOUmALMaOP9/9s7zV5frus9zern9XvYiibTYJJGS1RXENi0kMeDAMfzBMQykOrGdnvwXKbblgiBI4ORDviQfktgwEiCJDKtQlGzK6laxSIqSSFmURFLkbaeXPM9v7T3ve849pMSS6yLPvXNm3pld1l5r7bV/e+0y7snlZ49WAbbLNJ4LPFtgjpLzlOZoRFEoeEchcnWYnpNhsb7lQ2hSV8wDYpV2JqSmJGbIecTRde+IV3n0Qg3N8yQZHrTitmTr1xh++uXE0hC2QpinfOyLGKx3Ckbj4eFG0b4PgCOOjW0vnytRH3mk5i499thj7Af3g2zA+o5s+3ASvTNgpa/8kYvy96kGizzcpPb5yzyWIHGm/6hrm3h/1akl5zsS1A6EwyoznFZfbcI2ixc2WeV+4alvDuc5Z/G2zdEpmads8zQe+b4yjYn7wPm5uszN4ZrhZOso9OZEr6wb2foH75xbHjFjjf0OsVvOW8siK3gIXevU603S2+Le9RV7vN9n2sc+HmEXL5y+7vp8pWF+dTneuUXq5pKdCfRxDj2czVCqwK/kIJiTa4rRhVhXADjKXiJ+fn5N8+6o+0nMSmkSpt4ou8NvJmHqbkzjeQKaxngQuOtDB3Cf/vSn8xUG9cxOhJ5cAZye3WWmQLyc4/l17OWk+v8v7hSnxkxG/o5P2s1RgQ+H8fcRCUyi1t1Eyv6evC1L56N6FkdFbuv32CZqeFtdyVw26mLAmp0hQRt1rgBIgZCMwpgPcdKIxD7QWtt+jjoiIDOe7YynQI4Gh7xKpwgfuvhN/BrhMXzRZtHnqDfOqe92RwAnyNMeSY8Azp0sLL/51jHewLpuuX0/eS6P/Fl1klgty+LXhJs9xfEKvaYiJjB+rvldIXrd6ABO2xw6R/5RTmg3nPTc/Td+dkz6lby5AsDNv+8zwxrL959hLsr6pfN4dfh0FosN/NbpjAAOAYlKnew/T6PrBD9oxhDifUMAVwI4hsoC4ECxrkLE1IXZhwCcbzIPjrSLdWF98TtgTSlAg42yHG3PlEd9C1F2tzqgsvQTJsaoc430UMSE5E/aSp9TAN21gpQO4OJ9671+epyCN71xATiENQ2HUCefEWnKybMMSZJPX5niliH8yu8I3neWku/BzgOMl/h8lp4m96BaOXmG/d/4rI8Tp/nQvcOr5BrwtwPvncRd7mk9EoA3PgTuohJB3C7fU3Vo27lttS+dPSEoteiULp/+8U7iqWCzVkpOK3fc1Z1nlmFU9OIpnB8rhkPn8dxEVqZNMqapXCiXUS27Ze1nfvM8uiMA4V327OoVlbhuUJyNV9UrPG4LNAqLTirnqufNYeYVAN0iiztQvuysn2F6Ogp65/xg+RyfUMr3dUmjb78SoE/aArgqDVdvrzgmutdfdV30d2IfGa9CP9+r8KAnmGvpornlyMWcuAkPDwTmWXma9d6alnMyfBYAR6a6+QOMea+hERhVOjNZifpHf/T14cEHHxw+8YlPDO9+97vZ0PcvZO+uWjnYqOZi2gUKJUjwZp2dyP0gVcZrcQ++yK/DAE57oY7ZSPjVEos5xzdSty9dGDa+/XQDcC5e2B+WqJhOB/B0nyg/o+WiKT3/WbzQjWXjRwE4wghoBYfYqayYpxhuIRA64Vf0jUZhSwAHmLRDFQBHp9MOqHNR5wFnDpnqARas6XVbZt+8ZSbqr5xC91zgwNDq3DK6ho7GC4wu+hUIC5VOhLYpvGn84VLSbb+P4NfhR4dDTn4rG08Pn9abK3UsAQ78GdPo0Q+8Lfn3R7LNNOVtB3DOf1OPPARsfp7tnnvuyf2fA7guic7Bqevz8HsqRN2OApq8mUT1rmxrve1v6jqxJRUugCmv6vc0gAu4oi1xyDTAg7oVb3avX9QrHQ8xR8mstNfwmQPOswJwURKaxA5ebHcAcNZx9CZ5Nl1Nu2q95vkIdKiD/Zh3OhbnCOCoy9oQh3TdtsSSC+ByND5p6zxSxb2irxOiizZ/C6DSXiUMf8ajhfd3T6S/I62kbhBoPpyXWQnQJmC0gG/mnIMn9FhafzyuKoDb/V+/O6zjxbnAXJQthjJ28PLMMXeNT5fS4GskMY4YK3v92ZsFpuebnqJlGxW9IO7VhlFzhWH2bqO3ZvhqDGSMyuGJYCikJylSVIaCuCu2erXxIJh/PJuRrHuMZGN6GhoaLULkKMaFw2RDKjBTEKcwYXsF4q8ATu9czWtr4/v8hiAAEQJRse31C4q4dx6OwjQZlUWlzHJrn1OeCNS4pDG5L+AmYPMfMSkP7wknbxaWaTQEKvbsAWtOrOYh3gA9mH6bkdV0lNONf7cAajVs1CoSlRBCI5MZK44NmpWMa8pGboK2AlzIA9kE7MpOwpQMLI8AzgpXdFn+kGo5G7dUQk8PhzxNs68WtVQ9oPeWcxrApSciXzlctbwIuPKIRxI6dNlXY0qFlT/IOR61BtL8PqWrmeWNnkpXBurdDdiDdw6/yj9PPXXO7Vqgcc1XO9C9Gl5Vvyy4ZQDwqEtTR1Gnztn49sMwPqtjOkZjRfHp0PvEmArcJd/1sgwb+gafTSeGx2t0s+WW+J2eutqYmkY8SgFwhCWcMlUv3VLDkAK41AYSf5aVqN/mG6Pvfe9vDx/+yIeHd73zXZkH96pXvWq49rprjZ7yJVflr35zGP8wgOt8KIYY0/Pg0Z+4mtw5l9a/Bb95HJBJXhpkhj8tqzhnC2//xjMM7z7zrYC4JcqyzPNdvMi72CHr7mx6iKXnBdKqTqU3H5oFGuUFMH3t1LzxeDcHaO96HaBno0DDsQ2vsgkwhbLmu/jKfRZd3DDr/Dm83/N0HhbpSC2f5nupArgzpwFzbdNfgJ4rVv08l6upYfpEz0ineAMXkUH6UBG00qnDa79vj8LN6mRo+drRAoXbeTgdM08TcGLVesRDV6IdleYYCl5FP6WzHzxzT70MHyGXDuDUi2MA3Ne97p58X3eZemmdezlHty0vJ42rEbfLrF+n8+yc69crBNwDw9ejjvQvD72YPDNOxZvSjjyLViXNHsY2j/sEb8+08YahXtgRstNf891s4/S+lQcubUjCFiGaFstjHtnPjTanVBn7YBDS7PvCZZ84nQkBMGpktyXYqNBS7Uw8fNS/LKozDRIUvHmak/nZkdSeZQWsjiMfViK55Vfq1vQ17ZkNX0JA8cgTokavG80pU/4YnYM4h/TecuWQj+Flb73rcbcp2iPBmrR6zfzBKQDX282r5oF77r/+byb6bg7rzEXZ4erHa510vMBwn+yl6YM9CIYCWua4JrkRZOmFU2QCuJqkPgFwLkIQxIVPxCvjazoW3GYToMGp+MxB9nn1UIlTwY1s3FxRnyQGDRjPBbxZeUmsaiCNWHSqtN6XQH3muxKQiq7CudfbPsbdsFHABt70sDl0k/cqvuWWMoLqwdpxjhxhA4AUpOnRCAa0ELYLWr7kgObuRXQIMN+D1XPkZH2GeUB1eDLLm+ku8gRI4yDgEORUb0efHDxLWvKunSqaLPPSeOO9D31cV+mfGZZoVBdtQeWD6XIJrUQInxIvkfLHnz1JAVHmryX/VOP89r35JirpduBWvEkGqYPqkRnauGdBh4ovkLPCEs8Vu9mw2LSgsVYN0gEAOArQ9JK4j5fAd4F7gVuGXvFiLgHuVvGQLHMNT92GRSAoLwWOeubC16J71LGUsjiZ21aOce6eheKsMrarAS1WE6489r2rLBvDDRF+GD0VXGNkj1KQQTiqVfGV++LcVGJNsibmULMeSpSB8HZ0mux4kgUB8hPemUZo5Lk3ly6zOS6fa/vghz6UT2v5yaMbb7ppeDuLGe68605SMUbJQfrMywbaHrFX0+jaYzhLo8qkUnptR9c3KYQDiBcdDk2m6BNSMS3roSARoAWSG7YusGgBD9z6c8+w+v1ptjYs79k+q1MZ/89wq99BpZJRP4lHmhJgmrLZuwAz657viZ+GhvA1XaKFM6p6jp45NSKdBjudGl7SkJ92QNW/TcLtM3Vh4Th6BYBbOXWaDX5PM6wqgGPrEb3AeIOXXNRgRwE9zFQH9MyS5iCtdHDSApI2tk+7BRlyMNcK2ILLH/6Fr761jMXoPJ/ejNQUeqziLmXjQX/aXh64dH75UL4dPiITH0Kjh79Tl/mtXtnofurTnxrcFHqJMp+GF3feedfw2jtey5Ytfw7g5FlxbnJ9XoFErsbohwJBK3oC+dXe8WxaXBVyKiDBUudjhEjDumUM5dcMk6HVPPXOzpML3uJ40DnhyBL1K8Oe3ZAlPH88kiFpkl6f45Z6TKKqtnpawM52sBwM8UoRHq1PEtb92D7y7npWNGkTrC/YnFzNxnajymFHy++Xpz0nmCN4B7mR5IltahwqNrf1O8Tld8oXerRtled057TbLpNQ16fP1JWwVJp8Jx+k4+Bh+bQvYgE7rhlO5nfx6ioOoT75n/4bxo15UwFvenP0uOEUEmxwzUekITbzTZCubMpnswi0be8WBthAOg8nCxj0nthL1YNCA1xGoRhlWAUqYzIGvk+caLEqqahKMD7ybDKu5/5oxsa07eWXIEoAxh5P6YXxCobM2rUJAQOePd5EzTnxENgjQdlyFbTRGCCROk2DQ12yggTgwSPL0RU3DYXlMjvL6Jmi8AcmatijuPDIYb5skQKP9lMm+Vh7xVl+q4HzCC2jeqRrW2Nq2RZd5WsaJKtXVECX3jLX8ILnIVc6/KdC8cB3y6S5RNxGZIUjVTgVernljsM0+GP8ZOQj04euvvrXslghfJ5G33jkMw3gaGUhXh6y2teKQBmUu5VL8Na3Vskmx4STjjqJQrqhgTyiS3rfALzzDGNlmJUh1SVAnHPlVjhXM3+OoS69KAA8AZzxZgjjZHV+hO/cWKp2UtCUE73y2pQtdZcnsC4BISVsSLvMIyMjkhyhkvemQBLtqMbafOyp7gBaBBkzeJ/nUSLUloMEopfqEWBF/ipPh0qhFRRLNnqHTJnhupzmxsGfGEp74TTXAABAAElEQVR/wHNDtjeRxwYdDPfs+wiTzz/6+7+fD907f+lHfuRH8imk6AlxMpSifpB3rbyCZ8rUPCy0R5TJC5klv7GQiWcQNaP4ClUG44+80xBqR8Ibk3LVNFMAti48N2w99/Swcf7ZYZ05t3sCN7z+swIw9EDPMsQ1AEf5SEdynC9T1BVQ1AOXXrC6REPiKtWRD9IasFZeOrcGylwfGojQJ51U0HRCIXaNRs1PbumBE8At4XVbZvhU4OZcOL1yiyf4piz3cw7x03EYN91ORZdABCv/UmjqLl5R06+aW7oNVe2QZ6lR8Mn7slHx8udNlTey8nUsgVdLmAe5NjX0xeSw7Bzhu7zzrEfjNfZJYXFom/xt3ZXP2ibtjXMOP/mpT2YI9TjlvobPZ33f933fcPvtt7OCnGFn69X3wNHYGfU/XNzO1/5y/N0DjpH7TXsRlIBNnIowhuCd9/131W4D9sDtSYwQoZBb1U9HYbQrvE991Zra1jkdCKDV6kgHcNofc+l2vIAVj9AL2/qy11wBVIaLrXdIU11BPwRx3ZPn77Q1hgul6D11eMuvrZCeecTGWD+ox57aCOm2DqtvHRfY3smBWerPlQCuc4VMzKexpGxaWSIJcFsU9Tc2gzzNv85qryp85d91PyzjT+qg9jflFLxpM+RVZWhcz8IXePZ16JifnkjC9fd3X61FDE/8h/8SIONQXYbjIEIb5Fy3VGiZ1AXEcwHdPCBtjpZoG8NoYwx3CsDh7Qj4yBCYXhBPCku87tlQoJ68YeXYBMDJH8WviFyt6dFtYykvDyWIQy+We4uNgmgVwhRyqoAqQqQyufpa5Ly9LmBz7N7euQJwHlkbNkUY+QKD5eKMASStACHiV+WwDAq2UHj1Ilo+UkC4ol2aUdimuA69OHcrm4PSWDvs6KlrW0CT8hPeBldDapdHZXZLEsvudhIBxVpnfscjlwpRSqXyRo1lk6zgMAV/ihs8Qz9XaTQNL+bhUZ7Ouvo+/DXN8J2UBRlWBvLMkCrPUyET2YotT0rpBW4aAVcEz5lYA8u6yDepXDWMCv/RBasHocsLR1g9T9KSYU9BDbq4L/C1Q4DeyUOHTAVxKy6CaCDObUmWWfQwy3s9drM0PLM2tgxLxxMH3R2opQGHLCRLuUifdx6tqhZHwoM8Dg/lY17wPPzhh6wZedpeWhaCUDa9jGy/gxGktlB39MDJF0Adcxndm2+ba/iJvF20MbfI9gx63JinlQ+0k/PuPvcBdeaPcZMOngveBHMlxXoGOwOkHvzI7w4PffSh4Vvf+laM2U/8xE/k4/aJmqAQLq8tCEc6YBQmPWML5dHeVT3yd3vOba970bdGiVNcqn6juoSJvjWe+Bktv3/qN5e3L/CpvgbgdvlY9t7G5XztxdWqtArUPwGcutN0F9k43BI+kS6qFaPvIgnrzhbDPII4Mucth3VT/YvOUa9IL501I5KmwSy1qcsvvXDOsUwngU7ALHrkRr7OiZvnfhbQtqxnzi1G8Mg5L3PGYX3eZwFXPOkCOGxmABylD4CDTvKxZnvWPwmUa/XPId86lKUy9a38a89zUaM8/FHPlbppTx95WwGTjpFiv3qg9q7k2VKkPqexgmeKvQM4G+CPffxjw/s/8IHhNN7Im26+ebjttttyLlO3/hzAdUnA3MbXkkxn9uR5r0fjm9ZejaKfCqrApvVEHa1a0FM3M2SFzqbee1V/kR+KHpubdsk5b9gf27J432jj+lYhgq9Ok/ZcG+41R+oH8WzbbJNse1JA8zOP5rggjXi6rGMJV+8Mq2Y7L26bzpm6ZdoCOOuvdsN/mR5ClJrmYD6U2spo6Smq00LcuL7yDmVJq+7qbzdT3Rb1d9UBodNMgLRX5s0Z/ebaj4CzsI76pc0IL8lX+8v9gfaMSAU+veHkvWEEb/0UW9hGmu9dV2sbka/82/8c5JiJiLFsMlwAR6GlU+GpHJy6I32+4M76gBF7+gI/EV/mXY0ADo8Hz7JCEKEFwFFqRWtyAXBIaR6kZg/UfzkouCIjtxwK0jOcT3x+E8ChWfcWk1k5EsZwxuZUcSmLDO5ImUzbK/aGWoNu5rlp4IOeMf4dwGW+AMop+LDMWRBB3KxsJXUBbMbXTVslR+kKpZdApacDoSgWypArxt05cPMO8cXTosdC8GYjL5CxolAQmC+A08vpveUPgPM5fM+KQ8NBB/8rTu79PTkThD8GsYKnoYc1HWwUbcXvJJSAlW7kZOI5zaMO46RCpMJXuVIpfQ0f7E1VxU/NTMUOgEMm8loPpz2jLc6UWxkR1fwia+QJqbmP2ZAE+AD38cqVXgjqbGScbxkQJ5CzgaWhXQEAuULOIS4b3oXTZ4Z5PCnOpXNxSAHnmo9Hykm3yoqmU6YUwzK3Q9qmj5F3PpSXeUkKIdpHxsDA5U7ghZEDrM0wb3GO+1kWBzF1PhvZ7m5dYtUw278AYDJfFJkvsZjFTz3NMidylsUZbqMdyQW8FVyTOVIaWXPtAG5CNW/Rtd976KPDQ3jgHn300Xyh4ad+6qeG++//ISNGhq5sVY8dpveIbH0XI5tHkUXuLJ8HeZdGVXgfNQ1D/G7bYZWRH9JFXfF9eEN9dPGNW9+wiGHnEh+uZyh1/fwztQ0O+8LNQ4fbF7kKlUpJeH6n9GX8+xCv5bSqZF6b9VfwRn21Y5C6TjrW3dgz3ptOzQHiXgAnPe1iqdJRkFr5wSnQp6c07FFX/ZTdjCug+a0nboUVq8dOnxqOM5w4x2+/4DDLfobx8hoWvmsLM5Q6BeCyfRCEy2nzLBWDc/yI/eOdfCQm9kXONb5xLZ2qv4aqk7RIxPSmj7w1A46kkvR7DB62d1XJesAO4Gh8lD+dpXQs4eHvPfR72RT6HN63226/bXjNa16Tc0l+uPn298AxsuyIssrvHC3Q+PvQ80lFai9aO6XN60fPR6Wof77RPhvIut8O2zEk39/41jqm99pPXukVy5dLaNNcIWplEWBlQZztnHVLr3/SJWXalX4mB+qvNrzsuHGtV+ZOvj4n/wwf+pz6ZMeovHXUM+25bSbU+lzAGOrNY6ZsS/LgT7znre1MuxE7wQsiqIcueLoSwPXYL3y1PbZdjz6Tt9fJWXFjBrQV3FT73WnX3mAHUlzK38IYq9Lw2tNoIxm239ocy07FM9ydP/0zFegV/nvFKtTHfuU/jRXWGl4M1w5pUhBmlZQC0ZwAmgRwi3pAWFI/AjiBlAAFYJIhLxqjMmR6EnxHSjFM3KMLJjkPgwrAUeDkKodKUVWXfmr8vPfIM/4IJGt+HS/9386eTPq8KhMZdQCnYpmxyry1jiKz1cZBAAeoQOHS+0dRo6womOXO3Jpc9aDUBO3Qw7NRAZJXyAxBhcRjkikWBKJInjYSeia9t6LWfB48CeZJ+TWg2a7FxsQwRHVisWWLl0RvlIzgdx3c+L8xoZRMpa1nBtOY057QIBane9ikQR75bfMRWcEm6PA2sjMT8+Pw/QTAVfgO4JxPGCVWkam86ZVxX/zTKDhUbW9FEMe9siBh00yDJzEQSkmjj/UemmlQfZZGGn4LZgVxej4EuXpi8wk3wO0SwM35Ou7ntcBGratM2j/Gh7fdsNXtSLJoxIaHMquvMm40kBaYsxr0KrL5htdc5YESI1R442956gv1QxH1WJbLPPYAbdusFha8UHg8cXjjHFbdvIQOXho2ONdZONRlHi8PIG7JLwGsuOWHEMZvoShBc5dmjWHxPrSEO0UXL/PeMJ9iC4hPsSfcxz72scEP3f/0T//08O53v7vygmc2wnq1QmtFLPlawpSLh03uIxOOAnDyjQgBcIg79qJRob7NKq8Ye4dQ8cKx4n13jZWoAjjmwW0A6DYvX8hn+/x0H8oTAGeHyQ54eu7wMgAueQne0DXQot89TcPU5s3URGj1z7pc9dstg9LAEBYi67Rc3qaA8BZ+Rh+sW+Sxy9Umbtt75chv578tAa5Pnj0znDhzNosbXEU+7wmwc2w829zYsTS9ADj4Qhr7Kkq3gZbBk6M3HMrTDnD4ZVwPeBH7BY2SW8ckrnRG5forrqYabMA1qRAxILGH6QnJ567YlK9s2ATAJV/eP/jhB/NZthtvvnm4+567B7+r62KYRez7Ih2o74VjZNkRhS0p8qIFGn/3sGPkftNevGIArtkjkreTqLfN+ey1d6Lz3gRQvMRuCsT0VndHTewu5HTw5tWjPGHUGeqtNrwAHFfbOutyOwVxNFq8RwsJNwF2/LY+Ji46pQ0g7YwWSU3T6xo6FQySbp5RBnS6n/OsoqTaSVHe5+4QG33mYfzpw9+m69HT8zp99DCGs92KB06bA61zTmMhesrf6JukZZqVkml04NavVl/zumoA7kvv+fUwoApcjFCWNYmW3zJHZnAVwC14Yvz1wGWFJEphY6UBzPCeBkzwAdDTMAYEdOOlOFu3Yw5kNkejT1PU+Oq17qXCUxEcAHCSwzP/ysQIJVdJUPh5yQuVok7L5aniWQZ7DS5E8HNaHcClHOm52HigdCqg4S03Qo33jfRsqDW22U9NKkJMQ/D+8DdElNJQMhVXoABtli19k9Brb5/nhJUdodHIpC3Yc7sWG3X5OgI4ngvg0jhYzFbWkJD7elA8aTQYjgNJ0ADaCPKc+4Th9yRsyaqeG4NQ/G+iopyVdnpRlgk6rZSVFnHhkXxViaPI8FBjUT2zqhzptfHcslp5K7JFZGhM/sgLcg5wg5dJh9+CNFm7Bbje0l1tZZPH8kJaOBOXZ/M0LNnqhuEvtyA5du31nNdkXpPbQbhVhMOU2bMwAFkZyJ2eBkWBMJtMTWMa3zCYIBAhmYYmKx8ETnktAEccCe0tJnTtYFS3GB7cYe7X7uZl5oEJ5tjDz6HEDUAcc0Q2uZfvynshX6cQJFw3rJ48S2YYEodS29V7Ck74kl34LynQMB6R1czw8COPDH/Ip5A+9KEPDY88+ujw4z/+48MP/MAPDMcZBlzBY2kjXNuTFO9TDvkawbTULM/0Qdr9fXSFd3WFV7wrjCTnKA/Jwt2sfq4pCQ4b4xUAsO4LXAVwLGJY43uo63jk2C6XL7/AY+peVqJS8Z3/lhXwphd9qwZA75unQ6jWXVd5EySNU5b1U5drQRY6KIAjHAoVPQ2Is1z819OUIkagUIvNysp66KYrx5dT6GFz75xMt7lZQndO4H07jmd3la1GljjnPPk0l0P2c6xmdbuRzL/EPmZoXjtoXRfEqWvRt5JY7BIEdABXfFPDeB/a1EMOouba9DTv86zo5zaH12ADr9P3FTnPEtBCt2cwNnll+KfpoWHM/wMf/MDwW7/1W8Orb3tNPqEleLvl1luzG8GCnsrvgaOzqV+ni9z53nk5/p4O5L38PnD4G9lNRRhDIMD6VxGsTVqd8b09Rdsin5Cub/TA6W1z651Nhi2dmqH+7zovNHWaFAVvtGmCEvMuXat6lbqVOkCdwDYHpFEP0wmnQ5V4tqPUtTzjHQ8JR7ppIytOAI92n3xi+6Er+aBj0wBOvXcKTfe8qWvdpklLHDRCiPSQyYP3HpPr5P7g85FLCe+fbqfGB9z0etevtjXTAG5hjk4+SaU8ltsycoSXiKOxKvSkneJ90rAcVnECXGUAJ5EIpZU/DRWElCmB8ijNBMDZUPq5rA6S0nu1IbZR5dR673cAp6qZUEodcZZQvxsAB0NQjZAlC5scMbxFb4QDQxV4KSGBDH0YwDWlNAE9RQKy7v7VpTz2TBBkvtBgRiqpFaWFT7rhEfF5n7rX+KXw+1yiEjJKSPk7yCijzTYL0KFrdxYP3HwbDtUjZwkFqhCeU3AXr5R85JE8IFKGVsPfHpRrI2Hkja/GozHMVAvA2fgnKbLqAI6X3pN++MnPlK7lW+krNwAkkXtlt9HJQQArcvd+6GWTn5kfEcUWyHFGh8hKYkxN/pBngdI8JF+Am40z8QLU+O17i5GepWnzTvrkUSseYQF2vOteT+fAuWJ1mRWYq2cBcOyyv8p2JMdZXbhigxtvHJUUPa5hfvIvwuxUZr6SNMrzzl8NpvVCSr0Wlyw8JzR5TVgMcJIikPPbNtYussIbjxMgRdC2A6BzM2Yn9O/yPl/WMA0i6ZmdW1odrr/pluH0ueuhzRW1fo2CVbjzTBqfodG0QzA25Epl+uBXiBiGr7EX3ONPPD68733vGz73+c9n/ttb3vKW4eZbbh7OnD1LdoAS0tLDWbKEfqIfSC8M9kl7Kpktu64rdT0I4FIfCZhqr3HE8Ave9vc4nRcDcN1gAYMA7hLfQ73MfLhF6Fkkzjx5OlfQxU1oa3id7Vf4HT1D19J7V08QVubzwGvVUe+CXyDxqw1+fisNDh01hWqjYl0WwHVjLavU26wySx1Ap7Rf3Lu4JgAOvfWTgc7tdd/BcbNpgPAiwG2fzsKsi2rY23ERL52Lavw0V76jyvBrfUtVANfrl7wqMaUBhIYRwKVOqWn862HkPuVT53NGuXwo9RUuMuGn19xz5dWU/fbB1PueuA/VcX4fBeB+532/M/yP3/iN4Y477sgCmFtuvQX9uYWi2JGnhf0eOOSyR7/Wr/o7zWufjL+nA3kvvw8c/kZ2UxHGEIcAXEWb2CGUV6WNzNIOxa4ChgBvmaIyBeD0TqfTLfUNiHUQpOUYO+ToQA7oTLtI+lkNqq31XvvNNYsWuE/bGJtnMUgbGmqEhbDUwVq9qk1s1JP+CwE4Q1VHvtqDbIukDdDUyafGv8nVbOt5vyZkC+e97ZRHt1OTuOo69BK2Xzv4smKq24vY3LAM22WYDuAqPf9WwXoaPUzaOGRqnldtDtxjv4wHLkQKWGAK/2ygtBPxwskEaebo+8H1VaiZuyOjNDwUfJzASwJuCzExOkROIlEbbjHOaO8sWWLWwo9iSeXkvWfmYoQi7vnt0zyHXkGCh8atULsG0ic2oAqoGF+9Du/JLMbbxoFg3Md4R+Gqx0CgmjjNe0pQZwd8UdKmoPQeFFJT+1KG8I7ywIsoIwstuhfNUnroMXCFjI2mXswa/nM1quVToaDeMsBTy+W1hMEz0hX0BdgZhvy9WJSwMDf8lo7c88eb+lGNtQC7oibd3vh6zYKBvDXNSiweCsLX3nJWQk+z8w+nweQzPArwQuFrmLSB4sigvHEGN5/oTOPRDD2sAg+VZweCVgiBmmkbx981XN8MF/HtQJi/5XWuxaZzGgnnb5ibhQzzbv/Afl5+tsx9vU6eOTMc47p47GS+dTlj48v2EfEYR4+rcQ0YT0G74Wya3IrtK/mqATVPBZcrBEFa5DHjprWAlk0A3NrFZ/OVk/VLzw4bgDk3Yd4HxAEXKL9lIg6H2/KAFIZrrruRYbprWVXLlyhY1DC/cjzXWUBcAGfFLPZHYSp+MlbHSe85PFtPP/PM8AEmoX/6M58eXvOa24bXvva1w7333TvccsutkKwO2ynAc2Rni9QaGS2x+qWsS9MSRMkfccg3PXDoMG8zARm5Reutp4I3r/ESUHbm/W086xCq+8E9zSf8nmGLG7a64RQWLHglPl1C8oMOyyTQov5UR8H6bDk5uZYNIPkAOCdP461tm3FnSyDiFogzrSarBtzK9vFenYL31QF1HhhDqIS10+UCI+u0epLVz86vZFheL+8+nQVm9Ae0ueGvXxTJfnF0IOxIuDDC7W2su5leoufKlgl9K7nDXXll+tDgMyVRV0rPuwA4rtHCXBUBAeU2F2USPOeVMwfPw39/GJRj8o4HLZ4VWj5ax0IHNiJ2lzIL/v/7b/yP7P32jne8A+/bLcNNN90Mrdgige73wNFYl5JO3/tgws9ixPi7fk7+lqAnvyMQZDwVYUy7AbipwNymFtSj6K9tGXXAdKlXet+yr1vzPDsVyN8+R7xlp2y/4pSonKxZqFJkrt6pEKlP1jFBG2HjoDEf8hgBnJ0x01JfpCiK6m9sPp2nAwCO14bRxqtb/jO8dKcTRt0yz67/dtbrtLxaEsoZXnHxrjEpdPLjqKvhKr1R+32UsP3a46nz3vcrhI0AzvqUDqLl55zQIRFFSI/r+0qjhaOs91ytLzF89Vf+YwkMoUVgMhQSFW7mn3Af9KwAeNaHu/QwuSrSrS3SagVsaJgw5oTzTFHR0vIukZAiVJj8e2EAp5A1TwiJWP6VNXVXjA2AI48urO4Zyo7RxhzBg8qoEk4AnKuhzUAlzFh9wF0ppPNuFL0q5P5eeuQSlvgqsQ3DNitYM1YuQzgiSBWKWAGTKiIAIwCOIS9T81DIuo5dyJDNZ+Gd3kxfq9Q2Fu6JJqP1WmbVpUBQ4w5/BTypbCYXeXAjDfyXTx5dqbiBXp5y9Yi3pRndkN3jG6fFb0EnfG8PnNTp0KRyI2hOS5v/Km8AHD003eI2ooJi+FWGgDKTonrjNzKrgrrJsGCQcoZE5JB0lFuTi2RHhvCE9Fz8YCPuYVn0AEiL4ZXJBl+lML/0pnwHiNtz9SmN6BLzlNxd3+Evz9WT7O8FqJtlawhXGs64yEGPAukWt5BkLJ9a4BFicmem4R+0ZaidMqtDZF7hkFvkhPx3d9EVPG5rDBdeZOuMS5yX+YyUHjhccfT0ZodlQXkSxMso/xDGCt7CleOns6BhadX7Uwz9AjqXWflo7xCYA0dVy8a/Is2/epgFN84zXGeRxINs5vsptoNQb86dOzv88A+/Ow2yQ9LyfpGyKxMK0Mo6SUv+Ku0ucwPUs0mYuqOOU3y3FZILkTNligkNcGP+W3iEDCn3vvJ6lpWoeODOP82Gvt8WwEELPNcT51dglHG+awqfHQLNNiB6YNPAWHAy8jQfTv6X7lGuaQCXuXDW3ZzGIz31iDNGF8LTGFFPs3gojYgrxN3slzKpz8ZNQdFf5LWAbuUTW86nBLyxr0Y+t5Xv93qPXZwhXMCb4A6gtwS4yzC+q1fRS98XNyE89Avgen2gDrSyOYxv3RfI+cirPLbweULAyKcInMiH3+F/BU2MUXZJvMkyeaozEwBn58n69v73v2/4jd/8zXx9wW/q3nzzzQC4m0Jn6UyS/TP9p7E1ZZy+98GEn8WC8Xf9nPxt/J56wC0ynoowpn0kgJuKaUVTZ9HJGukAqDXA1hcw7APcBGBUiKIRnVehCsCZFm0bbxB9CuGltxvpJGFHtaWG8ygwqHebdBuA6+8EOqlTDcBl5EXAR/6mqw6q173dN0nzcvcBAZKH751+VW2DU2psD6lzzCGePozn4fWFTtvgrp/TcXrcfi3QVbpPgilSPHB8Zi90QqNhejhyNfecPf/+fgwjrzle/7d/PtdX+s8Vixie+FUAHMwqN6LGrBkEuF8T+qqhrUamEQ9VAjhX/GVHbjVBrrczAI6CWhT5kv3fUhKNbQNwiNd5cJkTR5jGv4SSUf6GmsYu7zmi3Oqv74tRauFkCDWqSMrE5H1v0IvJ1cjag8/KNK+9MjQFV9kwozVUSM56WEAiZexRSifn1yRRABzlV9g5CCcAk3M2/CqjgCdK1MKYVB0AGUBbn0fogoX0SKBli0pZW4YQ0nQI5xBrQB6/UyYT4X7s1XDv79RE34UWywY9lq9l7HynrtTyLEe7SFrJqohMWSYEA5aq0dLixOuUbIp/8YwI4OCnoC0NLdcCb/BFmUGfjZANewFcro0fAXrKQnlxTUnImxj8I75pma7Gw/fEs+wupgkthNU7tymAo7GNUXB4lfLucu7gVXHum8NdK2wBcQwg5zYQArp8wNz5SzSuc3hMBH3xIsufEKKu9QpcNMaDqKJwpAHFcAUQyGu1lXdqvgZsjyFD56FsrJ0PcLvw7FPDhWeeYg4cw6gMoS4vztH2w1tlA82IDMNGqsx5m+Gzait4CpcBcqunzrHKlsnyLHCY57lDqX7CTq9X356ny18A5+khkP74Jz6OB+4zw5N861je/9iP/bXhTd///eRTXuR5AKHFjcEkjnW+6npPUTm0spJs6oSJe8D7yokaxw3YKr8D4JQ5v/wOqtumjB44ho0D4PzyC5635+DHRTb2dSKBp5tNLwOiAuDUa/kvgAO8OTyqfDWeDrHaKFgm6VN/bDzSgUAf4oFLHIF/dSgyF8700CfTrfqvrqlT5NnqiPXaJk6zIHirDbUpq/nyLlNFBN56L4/RAcAO7jP/jYrKiRzRzV1ptyOB922Z4dVVVkMfoyOxyjC+K6Qd4o83lTzjVXdhU+O0XMy8U4tv+Tg7cJPfNq3hLVcC1n0JIin4mCTSePZ7r5azH/2+N3DquXLX3gjeNvis2QMPfHD4n//zfwHg7h7e+a53BcAJ4jzk+/fC0diaok7f+6DzUF4f+F0/J3+R0cHD38h4TCDiqiBp4w6HNzjPONVZz0wXAEzV94K7x00vN/VNa47y5mtEAiHbsMTXRnmgM1NZkCphiEW62m9tt/XJk1fUF22vHXMBHHnkXdWb2APpcsV998BJA2HUkLGpae1+rALhtReS5NEBnDplG6UTxuHfwwCuQhvP/I4+J+lV29z1+6jrdBqdGLcQWXw+ACc/5JX/LINymDrDM357vOHv/sNcX+k/VwC4r/3arzciFFoRpV7JfJnZDbpMjkAh3gZe7T1Ow5hv4jUjQ63WEsbAIP4IKeBEZqckAg9FCDghB1ehRoubMHsohethGt720zzzSgLHowCcwKkrSymYzG1AQiZjiFXkTHLGg2aDQADOSt0kO3jLXC9yCkDQ+KO0AQdcVWLjasRHAEfYJrcAOD1n6aVrwOUJWcgyn6eRYIKzwE2woNKmxwt9W6Rdk/RhL+/8ZJQgbtFePgRm+w0rI3GM10/DytM6Sj5XADjyy9YkBmpBR6XmUbignEKrV5/UYVn01JRArdjeFk8DiAEMXqPMlCNXeWJ06JwDuGU+oLJXTvxTFp6CDOevlbFgpTMVPXKwoSR6wpGmPM+nWGC0clZGMWbkW3OeNpJvAAx5ugnuNpVxB57nM0lZmVq76Qvo3NNrleHUJTds5brAM/f/Aq2G91Vyl4m7Zx0yVw+gN4t4aKQz/EseEAFAmOgRY/AxeNvubwaAo7fAYgVWnF58bjgPgHvu6W+y6vISnrmLrASdG1Zp+FfhrfVIHjmJfm2DxQ/smxLwduLscOzMOeg9yypIQBwLHWbmlmnYBXAFNOAI5LZTAIdOW2+Vwx/+4R8On/vc54ZPfPKTw4WLF4ef/Mm/nsbYOYRlLAWO8JAyylc/exYve1I0zTFlylJ1Ig9LUaIL0R0e6j00tPKWNXakCsAJohh60bA7nMo8nQ0A3LYftQe8XcIb5zvDLiEvN5xeTP0iPQEbAC4rl9O4lP6pHdZBwW8AvvJRTwijp8Bh9QA69Ya800GlgSlPnA1a6asdyOiceqfOcbVedbskYPSLIWk04WvVM3SPOqeuLNIRmMerts1vt7rZJl2/7LBpnqYD0HN18Ymzp4eTrIg+5QpWdM8viMyw59wMXrxsbyP4I++ccLGaR64CQdJ5sQAukuhVuF191o9+3+u5V228Oih4u3zpUj5k/973vne46+67hre9/e0MvTMH7uYCcIb9Xjg6Cy3r9L2/Rw4cwV/fj4d15cDhb+rpmMBU2kFWh8Pz3jTQq+ghum6HNjqux5mz756g1UU7qR2lQep+Ok+prwUukltIqHymQUgHcNoE87OCB8DpYbMdbPbd+oO2Fg9Sl7D71sG0lQUYVZGuJt0DV/UnyVZsAljfemes7hlBwE7ssQhs+ug6N62z3k+fhjdc6jD302F913/3+/G3/OEQwC24aIyfHdT29OUTTFFySWeab3Vvm6Z92h/u+3v/OOm90n+uBHC/8u+TYchvzEhFJud4tjRoMERBlGcGw2dh+X2MlX1peDB88VwIJI4AcH2vKSOFuVwD4NTg0hFoMH0Z5DUXedjsKOE8JCJaU79LoJVmbF8Llka/KxWNbpiL4slcFdQhFndn7woqeDCqezAJDGjC+SVBNgg0BNn010qDgkqjDSSGLj1xaeIo4UqigKUmPGevLY0vSekytoHQm5WGU+PeQKcNxLZgxvxUEpLUkM5n7ozgCc8QYZ2LA/dj0EvRm/KnApSMQowKJivNuF8kUyZNHaPyGt7n/PHaoo0hA+Bo