Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
| source file:|{{{C:\Users\Paul\Desktop\360raphaelDemo.jpg}}}|
| attached on:|28 January 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[360raphaelRenderedImage|360raphaelRenderedImage]] - {{{type=image/jpeg, size=9866 bytes, encoded=13361 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|360raphaelRenderedImage]] or [img[tooltip|360raphaelRenderedImage][link]]}}}
[img[tooltip|360raphaelRenderedImage]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAFGAX8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3
miiivINAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKZJNHCuZHVR7mgB9F
Y934l0+1B+feR6dPzrBvPHapkRKq/qatQkwsdtSFlX7zAfU15bdeOLpycTH8OKyZ
vFNy5/1jfnWioSY+VnsbXVuvWeMf8CFR/wBo2Y/5eI/zrxV9fuW/iP51EdauT/Ea
r6ux8p7f/aVmf+XmP86et7at0njP/AhXho1q5/vH86euu3K/xn86Pq7DlPdFkRvu
up+hp1eJReJrlCPnatO28aXUZH71vzqXh5C5WetUVwNn48Y4Eu1vqK37PxZY3GA/
yE+hyKzdOSFZm/RUMF3b3KgxSq30PNTVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFRXFzDaxmSaRUUDPJ6
0AS1VvNRtrJC00qgj+HPPSuU1rxosO6O2IAHfPPeuCv9dnunOHbmtoUXLcajc73V
PG6R7kt8KOmT1/z1rjb/AMU3Nyx/eMc89a59nkkOWY03AFdMaUYlqBYlvp5jksag
JdjyxpMikya1StsaKAu0etGBSUUD5ULkUZFJRQOyFyKMik/CigLIXijaKSimHKhf
mHQ1LHdTRHhjUOTS7vWkS4GzZ+Ibm3YHewx711uleOXG1ZmDr6GvOuDQNynKms5U
oyIcD3Wx12yvlG2QK3o1adeCWmqz2zD5jgV2uieNHjAjlYMvo1c06DWxm4no1FU7
HU7bUIw0Mgyf4SeauVg1YQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRQSAMngVy3iHxRFZxPDbuC2CCwP14pxi5OyA09V12202Mjc
Gk9Aeleaa34nnvJWO88+n4Vk6jq0t3K3zE5NZuM8muynRUdWXGI+SaSZsuxNN4FI
T6UlbmyjYXNJQPanYA60FDaXBpc0halcQuBRxTC1JuqeZASZozUW+jfS50BLmjNR
b6N9HOgJeKTApm+l3U1JAO2+9Jj2oDUuaq4CUAkUuAaCCKdx3FyDQCyHKnFNoB9a
CXG5taXrs9pIp3sCO+a9K0PxVDeosc7AP2b/ABrxwgHpVi1vZLVwQeBWU6SkZSif
QCsGUMpBB6EUtcD4b8W4CwztuQ+p6V3cUqTRiSNtynoa4pQcXqZtWH0UUVIBRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFISACScAdzS1y3ifxEllC0EL/N
/EwP+fWnGLk7ICDxP4mW3je3t3x1DN69f0rzG+v5LuViWJBPekvr6S7mJLVVGAK7
6dNRRrGIuMU0nNHWgDNaGqVg+lLj1peBTSaTYDiaYWppamFqzlUSAeWppaoy1NLV
g6rewmyTdSFqjLGkzUXZPOSbvejdUdHPpSFzj91Lu96j59KPwoDnJN3vTg1Q5pcm
ndhzkwanB6g3U4NVKo0WpFgNTgarhqeGreNRMZNjNNxQDTs5rVMBvSncMKQjFJTD
clgne3kDKTx6V3nhfxQYXEUjZQ9R/kVwGcinRSvBIGBqJwUkZSifQcUqTRrJG2VP
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
D3Fclq/gqOYM9v8AN/snrXTCv0YHjuFb6+9RPbg9q6zUvCs9s5/dlT9KwZrK4gJB
UkVuuWWwrMyXtyOlRNCe4rTPXBBFNKKw7UOLC5lGKmmOtRoFNMNsKnUd0Zvlmk2G
tA21J9mNFwuihsPvR5Zq/wDZjSi1NF2GhQEdOEVXxbU8W4HajULooLF6CplgJ7Vd
Ear6UoxwACTTUWxXIEt8damCKtTx280x+VDWtY+HZ7hhlSc/5/pTsluFmzGRHkbC
LWzpnh+e7kUFWOT6fSu20fwM20NMvljHce3/ANeu2stKtLFQIowWH8RGTWU66WiH
Y5jQ/BiQqklyMDGdvGeldjFEkMYjjUKo7Cn0Vyyk5bgFFFFSAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARTW0Nwu2aJ
XGMcisG/8IWd0CYzsJ/vdK6OimpNbAeZah4DmXJSLcP9nmuZuvC1xET8jCvc6jkg
il/1kat9RW0a8kB8+y6Pcxfwn8qrtaXCdUNe+TaFp033oAPpWfL4PsJOhK/hWixC
6isjxAxSjqh/Km7X/uH8q9kfwLbt0kX8qgPgKMnh4/1qvbxCyPItr/3D+VKI5D0Q
/lXrY8Apx88YqaPwJAvWRfwFHt4hZHkK207HhDU8el3Mn8Jr2OLwZZJjc2foKvw+
HNOhx+63H3pPELoFkeO2/hq4lIyrH2xXQaf4GnlxmI4Pc8f5716jFZ20I/dwov4V
PWUq8mM5LT/BNvBhpyOxwv8An6V0drp1rZqBDCoI/iI5q1RWTk3uAUUUVIBRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9k=
---END_DATA---
%/
! making one of these documents for your own use
This document began as a //Starter Document// - created via ''new starter...''
You can use ''new starter...'' any time, to create a new starter document with copies of all the baseline tiddlers that are in this document. That's a great way to get started on a new project.
! upgrading your document
This document also includes a means of importing updates to the tiddlers tagged "baseline" - the "baseline updates" functionality will pull in any changes to its baseline tiddlers when run within a local file (a document with a file-colon-slash-slash rather than http-colon-slash-slash) - currently it only pulls baseline tiddlers from http://TiddlyTools.com.
/***
|Name|AnimationEffectsPlugin|
|Source|http://www.TiddlyTools.com/#AnimationEffectsPlugin|
|Documentation|http://www.TiddlyTools.com/#AnimationEffectsPluginInfo|
|Version|3.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|plugin|
|Requires||
|Overrides||
|Description|display content with timer-based animations to manipulate multiple CSS attributes|
|Status|!BETA - EXPERIMENTAL - UNDER DEVELOPMENT - USE WITH CAUTION|
This plugin defines the {{{<<animate>>}}} macro that can be used to peform simple animations of formatted tiddler content by saving/setting/reseting the values of CSS style attributes at specified times. The macro can also be used to smoothly animate CSS styles that use ''numeric values'', by automatically computing a series of incremental values, ranging from //start// to //stop//, for a specified //duration//, with optional "pause-and-reverse" //cycles// to create repeating animations or continuous loops.
!!!!!Documentation
>see [[AnimationEffectsPluginInfo]] for macro syntax
>see [[AnimationEffectsSample]] for a live animation example...
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[AnimationEffectsPluginInfo]]
2008.01.07 [3.1.1] when animation is disabled, set inner container to original DIV/SPAN
2007.12.16 [3.1.0] added support for "add/remove" classname functionality. Also, in handling for "set", only stored previous attribute value if not already saved and, on "reset", clear saved value. This blocks animations from inadvertently overwriting the saved value while simulaneously processing animation sequences that act on the same attribute.
2007.12.08 [3.0.0] Combined ZoomTextPlugin and AnimateTiddler inline script into single plugin
2007.08.03 [2.1.0] converted from ZoomText inline script
2007.07.16 [2.0.0] added TW2.2-compatible Morpher handling for smoother animation on slower systems
2007.02.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AnimationEffectsPlugin= {major: 3, minor: 1, revision: 1, date: new Date(2008,1,7)};
config.macros.animate = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var id=new Date().getTime()+Math.random().toString(); // globally unique ID (GUID)
if (params[0] && (params[0].toUpperCase()=="DIV"||params[0].toUpperCase()=="SPAN"))
var nodetype=params.shift().toUpperCase(); // optional param to force DIV/SPAN
var src=params.shift(); if (!src) src="="; // content is first parameter (if no params, animate container)
if (src.substr(0,1)=="=") { // content=DOM element... use "=here" or "=" (without ID) for current container
var target=place;
if (src.length>1 && src.substr(1).toUpperCase()!='HERE') target=document.getElementById(src.substr(1));
if (!target) return; // couldn't locate target element... do nothing.
var nodetype=nodetype||target.nodeName.toUpperCase();
} else { // use content from tiddler or "inline" param
if (src.substr(0,1)=="@") src=store.getTiddlerText(src.substr(1)); // "@TiddlerName"
var nodetype=nodetype||"span";
var target=createTiddlyElement(place,nodetype);
wikify(src,target);
}
if (params[0]) switch(params[0].toUpperCase()) {
case "SAVE":
var s=params[1]; if (!s) return; // must specify style attribute
if (s.substr(0,1)=="+") s=s.substr(1); // ignore leading "+" (if any)
var w=(params[2]!=undefined && config.options.chkAnimate)?parseInt(params[2]):0; // wait time before saving
if (!target.savedStyle) target.savedStyle={};
if (target.savedStyle[s]!==undefined) return; // value already saved... do nothing.
if (!w) { target.savedStyle[s]=target.style[s]; return; } // save style immediately... done.
target.id=target.id||id; // use existing ID if target has one, otherwise assign GUID
var fn='var e=document.getElementById("'+target.id+'"); \
if(e&&e.savedStyle["'+s+'"]==undefined) \
e.savedStyle["'+s+'"]=e.style["'+s+'"]';
setTimeout(fn,w); return; // timer is set... done.
case "SET":
var s=params[1]; if (!s) return; // must specify style attribute
if (s.substr(0,1)=="+") s=s.substr(1); // ignore leading "+" (if any)
var v=params[2]!=undefined?params[2]:""; // value to set
var w=(params[3]!=undefined && config.options.chkAnimate)?parseInt(params[3]):0; // wait time before setting
if (!w) { target.style[s]=v; return; } // set style immediately... done.
target.id=target.id||id; // use existing ID if target has one, otherwise assign GUID
var fn='var e=document.getElementById("'+target.id+'");if(e)e.style["'+s+'"]="'+v+'"';
setTimeout(fn,w); return; // timer is set... done.
case "RESET":
var s=params[1]; if (!s) return; // must specify style attribute
if (s.substr(0,1)=="+") s=s.substr(1); // ignore leading "+" (if any)
var w=(params[2]!=undefined && config.options.chkAnimate)?parseInt(params[2]):0; // wait time before reset
if (!w && target.savedStyle && (s in target.savedStyle))
{ target.style[s]=target.savedStyle[s]; target.savedStyle[s]=undefined; return; } // reset style immediately
target.id=target.id||id; // use existing ID if target has one, otherwise assign GUID
var fn='var e=document.getElementById("'+target.id+'"); \
if(e&&e.savedStyle&&("'+s+'" in e.savedStyle)) \
e.style["'+s+'"]=e.savedStyle["'+s+'"]; e.savedStyle["'+s+'"]=undefined';
setTimeout(fn,w); return; // timer is set... done.
case "ADD":
var add=true; // fall-through for further processing
case "REMOVE":
var c=params[1]; if (!c) return; // must specify a classname
if (c.substr(0,1)=="+") c=c.substr(1); // ignore leading "+" (if any)
var w=(params[2]!=undefined && config.options.chkAnimate)?parseInt(params[2]):0; // wait time before setting
if (!w) { (add?addClass:removeClass)(target,c); return; } // add class immediately... done.
target.id=target.id||id; // use existing ID if target has one, otherwise assign GUID
var fn='var e=document.getElementById("'+target.id+'");if(e)'+(add?'addClass':'removeClass')+'(e,"'+c+'")';
setTimeout(fn,w); return; // timer is set... done.
}
// remove old containers before RE-animating, unless combining effects (using "+style" param)
if (params[0] && params[0].substr(0,1)!="+") cleanup(target);
function cleanup(here) { // recursively finds all animation containers
if (here.childNodes) for (var n=0; n<here.childNodes.length; n++)
if (here.childNodes[n].className=="animationContainer") cleanup(here.childNodes[n]);
if (here.className=="animationContainer") { // move content up a level and remove container
var e=here.firstChild;
while (e) { var next=e.nextSibling; here.parentNode.insertBefore(e,here); e=next; }
removeNode(here);
}
}
// create animation outer "clipping" container and inner "formatting" container
var outer=createTiddlyElement(null,nodetype,null,"animationContainer");
outer.style.overflow="hidden";
var inner=createTiddlyElement(outer,nodetype,id,"animationContainer");
inner.style.position="relative"; inner.style.lineHeight="100%";
target.insertBefore(outer,target.firstChild);
// move content elements into the inner container
var e=target.firstChild.nextSibling;
while (e) { var next=e.nextSibling; inner.insertBefore(e,null); e=next; }
// params and defaults for morph
inner.OriginalType=target.nodeName.toUpperCase(); // SPAN or DIV
inner.What=params[0]?params[0]:'left';
if (inner.What.substr(0,1)=="+") inner.What=inner.What.substr(1); // trim off "+" prefix (if any)
inner.Format=params[1]!=undefined?params[1]:'%0%';
inner.Start=params[2]!=undefined?parseInt(params[2]):100;
inner.Stop=params[3]!=undefined?parseInt(params[3]):0;
inner.Wait=params[4]!=undefined?parseInt(params[4]):0;
inner.Duration=params[5]!=undefined?parseInt(params[5]):2000;
inner.Cycle=params[6]!=undefined?parseInt(params[6]):1
inner.Pause=params[7]!=undefined?parseInt(params[7]):0;
if (!config.options.chkAnimate) { // if not animating
if (inner.Cycle && (inner.Cycle % 2)) inner.Start=inner.Stop; // odd # of cycles: apply ending value
inner.style.display=inner.OriginalType!="DIV"?"inline":"block"; // restore original display style
var outer=inner.parentNode; if (outer && outer.parentNode) // remove outer clipping container
{ outer.parentNode.insertBefore(inner,outer); removeNode(outer); }
}
inner.style[inner.What]=inner.Format.format([inner.Start]); // set initial style value
if (inner.What=="fontSize" && inner.Start<=0) inner.style.display="none"; // hide text if initial size is 0
if (config.options.chkAnimate) setTimeout("config.macros.animate.morph('"+inner.id+"')",inner.Wait); // ANIMATE!
},
//}}}
//{{{
// animation 'tick' handler (timer callback)
morph: function(id) {
var inner=document.getElementById(id); if (!inner) return;
var p = [{style: inner.What, start: inner.Start, end: inner.Stop, template: inner.Format}];
var c = function(inner,p) { // reverse and re-animate until cycle count==0 (use -1 for continuous looping)
if (inner.Cycle==0 || inner.Cycle==1) {
// finished animation... discard outer container but keep inner container to display final style(s)
inner.style.display=inner.OriginalType!="DIV"?"inline":"block"; // restore original display style
if (p[0].style=="fontSize" && p[0].end<=0) inner.style.display="none"; // hide text if final size=0
var outer=inner.parentNode; if (outer && outer.parentNode) // remove outer clipping container
{ outer.parentNode.insertBefore(inner,outer); removeNode(outer); }
}
else { // reverse-and-repeat
inner.Cycle--; var t=inner.Start; inner.Start=inner.Stop; inner.Stop=t;
setTimeout("config.macros.animate.morph('"+inner.id+"')",inner.Pause);
}
};
inner.style.display=inner.nodeName.toUpperCase()!="DIV"?"inline":"block"; // show starting content
anim.startAnimating(new Morpher(inner,inner.Duration,p,c));
}
};
//}}}
//{{{
// for backward-compatibility with retired [[ZoomTextPlugin]]
config.macros.zoomText = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// convert old params to new params and invoke new handler
var Text=params[0]!=undefined?params[0]:"";
if (Text.substr(0,1)=="@") Text=store.getTiddlerText(Text.substr(1));
var Wait=params[1]!=undefined?parseInt(params[1]):0;
var Start=params[2]!=undefined?parseInt(params[2]):1;
var Stop=params[3]!=undefined?parseInt(params[3]):100;
var Duration=params[4]!=undefined?parseInt(params[4]):config.animDuration;
var Cycle=params[5]!=undefined?parseInt(params[5]):0
var Pause=params[6]!=undefined?parseInt(params[6]):0;
var newParams=[Text,"fontSize","%0%",Start,Stop,Wait,Duration,Cycle,Pause];
var newParamString=["[["+Text+"]]","fontSize","%0%",Start,Stop,Wait,Duration,Cycle,Pause].join(" ");
return config.macros.animate.handler(place,macroName,newParams,wikifier,newParamString,tiddler)
}
}
//}}}
/***
|Name|AnimationEffectsPlugin|
|Source|http://www.TiddlyTools.com/#AnimationEffectsPlugin|
|Documentation|http://www.TiddlyTools.com/#AnimationEffectsPluginInfo|
|Version|3.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for AnimationEffectsPlugin|
|Status|!BETA - EXPERIMENTAL - UNDER DEVELOPMENT - USE WITH CAUTION|
This plugin defines the {{{<<animate>>}}} macro that can be used to peform simple animations of formatted tiddler content by saving/setting/reseting the values of CSS style attributes at specified times. The macro can also be used to smoothly animate CSS styles that use ''numeric values'', by automatically computing a series of incremental values, ranging from //start// to //stop//, for a specified //duration//, with optional "pause-and-reverse" //cycles// to create repeating animations or continuous loops.
!!!!!Examples
>Please see [[AnimationEffectsSample]] for a live animation example...
!!!!!Usage
<<<
The macro syntax is:
{{{
<<animate type source style format start stop wait duration cycles pause>>
<<animate type source "set" style value wait>>
<<animate source "save" style wait>>
<<animate source "reset" style wait>>
<<animate source "add" classname wait>>
<<animate source "remove" classname wait>>
}}}
> //note: default values are shown in parentheses for //optional// parameters. To ensure the correct order and number of parameters in the macro, you should enter these default values as 'placeholders' when using non-default values for other parameters. Of course, if all the remaining values that follow a non-default parameter are default values, they do not need to be specified, and can be safely omitted.//
where:
* ''//type// (="span")''<br>is either ''div'' or ''span'', and forces the animation container to be a "DIV" or "SPAN" element (i.e., displayed on a separate line, or inline with other content), which can affect how the specified CSS style will be applied. When this param is omitted (which is the general use case), the animation container defaults to the same type as the original content. When using a parameter with "inline" content (see below), a span element is created by default.
* ''//source//''<br>specifies the source content to be animated, and can be one of:
**''"text to display"''<br>inline wiki-syntax content, entered directly as a //quoted// macro parameter. The {{{<<animate>>}}} macro automatically creates a container at the current location and renders the content into it before animating.
**''@~TiddlerName''<br>as above, but retrieves and renders wiki-syntax content from another tiddler.
**''=elementID''<br>indicates a specific DOM element, by assigned ID (e.g., "mainMenu", "displayArea", "sidebar", etc.). The macro will animate this content from it's original location.
**''='' (or ''=here'')<br>indicates the current containing DOM element (i.e, the one in which the {{{<<animate>>}}} macro is embedded. The animation will affect all content that //precedes the macro// within the current container.
* ''"set"'', ''"save"'', ''"reset"'', ''"add"'', ''"remove"''<br>are keywords to indicate how to process the rest of the macro parameters. If ''set'' is used, the remaining parameters are interpeted as //style//, //value//, and //wait//, respectively, and the macro assigns the value to the specified style at the indicated time. The ''save'' and ''reset'' keywords expect only //style// and //wait// parameters following the keyword, where ''save'' retains a copy of the current CSS style value so that you can later use ''reset'' to re-assign the original saved value back to the specified CSS style. The ''add'' and ''remove'' keywords expect and //classname// and //wait// value, and adds/removes the specified classname from the animated element. If no keyword (or ''morph'') is specified, the remaining macro parameters are used to calculate and apply multiple incremental CSS values for smooth animation processing (a.k.a., "morphing").
* ''//style// (="left")''<br>indicates the CSS attribute to be animated (e.g., "left", "marginTop", "width", "fontSize", etc.). Note: if you embed more than one {{{<<animate>>}}} macro in the same container (to simultaneously alter multiple CSS attributes), only the //''last''// animation effect will be applied. To combine several effects, you must precede the //style// parameter value with a "+" symbol for all uses of {{{<<animate>>}}} //except// for the first occurrence within that container, which must //NOT// have a "+" symbol).
* ''//format// (="%0%")''<br>provides a 'text template' for generating CSS attribute values during animation, by using "%0" as a substitution marker to be automatically replaced by the current animation value, combined with a CSS measurement type (e.g., px, em, %, in, cm). For example: "%0px" produces pixel-based values (e.g., "27px", "342.873px", etc.), while "%0%" generates percentage-based relative measurements, (e.g., "-100%", "42%", etc.), and "%0em" results in measurements that are relative to the current font size (em).
* ''//start// (=-100) and //stop// (=0)'' or ''//value// (="")''<br>define the initial and ending values for the CSS attribute being animated. Note that, except when using the alternative ''set'' keyword syntax, these values must be numeric, as they are used to //calculate// the incremental values for each 'tick' of the animation processing.
* ''//wait// (=0)''<br>indicates the number of milliseconds to wait before starting the animation sequence. All animation macros that are embedded in the same content begin simultaneously. The //wait// value allows you to use several effects in sequence, by defining the start of each effect so that it does not begin until the previous one has completed.
* ''//duration// (=2000)''<br>indicates the number of milliseconds during which to animate from the //start// value to the //stop// value.
* ''//cycles// (=1)'' and ''//pause// (=1000)''<br>indicates the number of "reverse-and-repeat" cycles to perform and the pause (in milliseconds) in between each part of the cycle. When cycles=1 (or zero, or is omitted entirely), animation progresses from //start// to //stop// just once. However, if cycles>1, then the animation can pause for a specified amount of time before swapping the //start// and //stop// values and continuing ''//in reverse//''. A value of cycles=2 performs the animation twice, completing a single loop from //start// to //stop// and then back to //start// again, while cycles=3 does 1.5 loops (ending with the //stop// value), and cycles=4 does 2 complete loops (ending with the //start// value), etc. To loop forever, specify a cycle value of "-1".
In addition to the {{{<<animate>>}}} macro, the plugin also defines the following macro for backward-compatibility with the now retired [[ZoomTextPlugin]]:
{{{
<<zoomText "text to display" wait start stop duration cycles pause>>
<<zoomText @TiddlerName wait start stop duration cycles pause>>
}}}
This permits rendering of existing tiddlers that already contain the {{{<<zoomText>>}}} macro without needing to update those tiddlers. However, use of this older syntax is deprecated in favor of the more robust and flexible {{{<<animate>>}}} syntax described above.
<<<
/***
|Name|AnimeJPlugin|
|Source|http://www.TiddlyTools.com/#AnimeJPlugin|
|Documentation|http://www.TiddlyTools.com/#AnimeJPlugin|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|InlineJavacriptPlugin|
|Overrides||
|Description|wrapper for AnimeJ library functions |
|Status|ALPHA/EXPERIMENTAL - SUBJECT TO RAPID CHANGE|
This plugin contains a //compacted// copy of the AnimeJ function library
!!!!!Documentation
<<<
TBD
<<<
!!!!!Usage
<<<
Use [[InlineJavascriptPlugin]] to invoke AnimeJ functions from within tiddler content.
See http://www.codeplex.com/animej for more documentation
<<<
!!!!!Examples (requires InlineJavascriptPlugin)
<<<
<script show>
//TBD
</script>
<<<
!!!!!Revisions
<<<
2009.02.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AnimeJPlugin ={major: 1, minor: 0, revision: 0, date: new Date(2009,2,17)};
//}}}
// // COMPACT LIBRARY
//{{{
/* http://www.codeplex.com/animej */
var __DependenciesManager;function BlueScreen(msg) {if (document.body) {alert('onloaded');var d = document.createElement('div'), k;var values = { 'position': 'absolute', 'top': 0, 'left': 0, 'width': '100%',
'height': '100%', 'background': 'Blue', 'color': 'White', 'fontFamily': 'Fixedsys, monospace' };for (k in values) d.style[k] = values[k];d.innerHTML = 'INTERNAL ERROR: '+msg;d.onclick = function () { document.body.removeChild(d); };document.body.appendChild(d);} else {document.write('<div style="z-index: 1000; position: absolute; left: 0; top: 0; margin: 0; padding: 0; width: 100%; height: 100%; background: Blue; color: White; font-family: Fixedsys, monospace" onclick="this.parentNode.removeChild(this);">INTERNAL ERROR: '+msg+'</div>');}
throw "INTERNAL ERROR: " + msg;}
function RegisterScript(name, version, description) {if (! __DependenciesManager) __DependenciesManager = {};__DependenciesManager[name + ", version=" + version] = description;}
function Require(scripts) {var i, msg = null;for (i = 0; i < scripts.length; i++) {var el = scripts[i], k, strong = typeof(el) != "string";if (strong && !el.Name) {msg = "Invalid require statement!";BlueScreen(msg);return;}
var toadd = strong ? el.Name + ' (version ' + el.Version + ')' : el;for (k in __DependenciesManager)if (!strong) {if (k.indexOf(el) == 0) {toadd = null;break;}} else {if (k.indexOf(el.Name) == 0) {var v = parseInt(k.substring(k.indexOf(", version=") + 10));if (el.Version && el.Version <= v) {toadd = null;break;}}}
if (toadd)if (msg) msg += ", " + toadd;else msg = toadd;}
if (msg) BlueScreen('Missing libraries are <br><br>' + msg);}
RegisterScript('AnimeJ', 1, 'AnimeJ animation library');function AnimeJHeap() {var obj = this;var pos = 0;var left = function(idx) {return (2 * (idx + 1) - 1);}
var right = function (idx) {return (2 * (idx + 1));}
var parent = function (idx) {return (Math.floor((idx + 1) / 2) - 1);}
var swap = function (a, b) {var tmp = obj[a];obj[a] = obj[b];obj[b] = tmp;}
var percolateUp = function (p) {var par = parent(p);while ((p > 0) && (obj[p].Due < obj[par].Due)) {swap(p, par);p = par;par = parent(p);}}
var percolateDown = function (p) {var l = left(p), r = right(p);if (l < pos) {if (r < pos) {if (obj[l].Due > obj[r].Due) {swap(p, r);percolateDown(r);} else {swap(p, l);percolateDown(l);}} else {swap(p, l);percolateDown(l);}} else if (p != pos - 1) {swap(p, pos - 1);percolateUp(p);}}
this.Count = function () { return pos; }
this.Insert = function (el) {this[pos] = el;percolateUp(pos++);}
this.Top = function () {if (pos)return this[0];return null;}
this.Remove = function () {var ret = null;if (!pos) return ret;ret = this[0];percolateDown(0);this[pos--] = null;return ret;}
this.RemoveTask = function (t) {var i, ret = -1;for (i = 0; i < pos; i++)if (this[i].Task == t) {ret = this[i].Due;percolateDown(i);this[pos--] = null;break;}
return ret;}
this.ToString = function () {var i, ret = "";for (i = 0; i < pos; i++)ret += " <i>" + i + ":</i> " + this[i].Due;return ret;}}
function AnimeJTask() {this.OnPause = function () {};this.OnResume = function () {};this.OnStop = function () {};this.DoAction = function (delay) {};}
var AnimeJTimerRunning = null;function AnimeJTimer() {this.Start = new Date();this.Heap = new AnimeJHeap();this.Time = function () {return new Date() - this.Start;}
this.SetAlertMillis = function(what, when) {var exp = when + this.Time();this.Heap.Insert({ 'Due': exp, 'Task': what });if (AnimeJTimerRunning != null && this.Heap.Top().Due == exp) {clearTimeout(AnimeJTimerRunning);AnimeJTimerRunning = null;}
if (AnimeJTimerRunning == null) {AnimeJTimerRunning = true;var tosleep = this.Heap.Top().Due - this.Time();tosleep = 0 > tosleep ? 1 : tosleep;AnimeJTimerRunning = setTimeout('AnimeJTimerTick()', tosleep);}}
this.RemoveTask = function (t) {var v = this.Heap.RemoveTask(t);if (v > -1) {v = v - this.Time();if (v < 0) v = 0;}
return v;}
this.SetAlertDate = function (what, when) {var t = when - this.Start;this.SetAlertMillis(what, t);}}
var AnimeJGlobalTimer = new AnimeJTimer();function AnimeJTimerTick() {var t = AnimeJGlobalTimer;var currt = t.Time() + 10;while (t.Heap.Count() > 0 && currt >= t.Heap.Top().Due) {var el = t.Heap.Remove();el.Task.DoAction(currt - el.Due);}
if (t.Heap.Count() > 0) {currt = t.Time();AnimeJTimerRunning = setTimeout('AnimeJTimerTick()', t.Heap.Top().Due - currt);} else {AnimeJTimerRunning = null;}}
function AnimeJConv() {}
AnimeJConv.Int = function (from, to, v) {return Math.floor(from + (to - from)*v);};AnimeJConv.Float = function (from, to, v) {return from + (to - from)*v;};AnimeJConv.Discrete = function (from, to, v) {return v < 0.5 ? from : to;};AnimeJConv.IntList = function (from, to, v) {var ret = new Array(), i;for (i = 0; i < from.length; i++)ret.push(Math.floor(from[i] + (to[i] - from[i])*v));return ret;};AnimeJConv.FloatList = function (from, to, v) {var ret = new Array(), i;for (i = 0; i < from.length; i++)ret.push(from[i] + (to[i] - from[i])*v);return ret;};function AnimeJLinearInterpolator(obj, prop, steps, conv, prefix, suffix) {var i, last = 0.0;if (steps.length < 2) throw "Invalid steps: length less than 2";if (steps[0].t != 0.0) throw "Invalid steps: timeline must start at 0.0!";if (steps[steps.length - 1].t != 1.0) throw "Invalid steps: timeline must end with 1.0!";for (i = 1; i < steps.length; i++) {if (steps[i].t > 1.0 || steps[i].t < 0.0 || steps[i].t <= last)throw "Invalid steps: invalid value "+(steps[i].t) +"!";last = steps[i].t;}
this.Compute = function (v) {var idx;for (idx = 1; idx < steps.length; idx++)if (steps[idx].t >= v) break;idx--;var val = conv(steps[idx].v, steps[idx + 1].v, (v - steps[idx].t)/(steps[idx + 1].t - steps[idx].t));if (typeof(obj) == 'function')obj(val);else obj[prop] = prefix + val + suffix;}}
function AnimeJInterpolatedTask(interp, ms, stepms) {this.Duration = ms;this.Start = - 1;this.OnPause = function() {if (this.Start != -1)this.Start = AnimeJGlobalTimer.Time() - this.Start;}
this.OnResume = function() {if (this.Start != -1)this.Start = AnimeJGlobalTimer.Time() - this.Start;}
this.OnStop = function() {this.Start = -1;}
this.DoAction = function (d) {if (this.Start == -1)this.Start = AnimeJGlobalTimer.Time();var t = AnimeJGlobalTimer.Time();var v = (t - this.Start) / this.Duration;v = v > 1 ? 1 : v;interp.Compute(v);var t1 = AnimeJGlobalTimer.Time();var next = stepms - d + t1 - t;if (v < 1)AnimeJGlobalTimer.SetAlertMillis(this, next);else this.Start = -1;}}
function AnimeJTimelineCallBackTask(t, prop) {this.OnPause = function () {};this.OnResume = function () {};this.OnStop = function () {};this.DoAction = function (d) {if (t[prop])(t[prop])(d);}}
function AnimeJFunctionCallbackTask(fun) {this.OnPause = function () {};this.OnResume = function () {};this.OnStop = function () {};this.DoAction = function (d) {fun(d);}}
function Timeline() {var Paused = 0;var OnEndCB = null;var Data = {};var Running = false;this.IsPaused = function () {return Paused != 0;}
this.IsRunning = function () {return Running;}
this.InternalOnEnd = function (d) {Runnning = false;if (this['OnEnd']) this['OnEnd'](d);}
this.Run = function () {Running = true;var max = 0;for (v in Data) {var el = Data[v];var startAt = parseInt(v);var i = 0;if (startAt > max) max = startAt;for (i = 0; i < el.length; i++) {if (el[i].Duration && (startAt + el[i].Duration) > max) max = startAt + el[i].Duration;AnimeJGlobalTimer.SetAlertMillis(el[i], startAt);}}
var tm = this;OnEndCB = new AnimeJTimelineCallBackTask(tm, 'InternalOnEnd');AnimeJGlobalTimer.SetAlertMillis(OnEndCB, max);}
this.SetAt = function (timems, task) {if (Data[timems])Data[timems].push(task);else Data[timems] = new Array(task);}
this.Stop = function () {Running = false;Paused = 0;var t = AnimeJGlobalTimer;var tm, i, v;if (OnEndCB != null) {tm = t.RemoveTask(OnEndCB);OnEndCB = null;}
for (v in Data) {var el = Data[v];for (i = 0; i < el.length; i++) {tm = t.RemoveTask(el[i]);el[i].OnStop();}}}
this.Pause = function () {if (Paused) return;Paused = 1;var t = AnimeJGlobalTimer;var tm, i, v;if (OnEndCB != null) {tm = t.RemoveTask(OnEndCB);if (tm > -1)OnEndCB.Paused = tm;else OnEndCB = null;}
for (v in Data) {var el = Data[v];for (i = 0; i < el.length; i++) {tm = t.RemoveTask(el[i]);if (tm == 0) tm = 1;el[i].OnPause();if (tm > -1)el[i].Paused = tm;}}}
this.Resume = function () {if (!Paused) throw "Timeline not paused!";Paused = 0;var t = AnimeJGlobalTimer;var tm, i, v;if (OnEndCB != null) {t.SetAlertMillis(OnEndCB, OnEndCB.Paused);OnEndCB.Paused = 0;}
for (v in Data) {var el = Data[v];for (i = 0; i < el.length; i++) {if (el[i].Paused) {t.SetAlertMillis(el[i], el[i].Paused);el[i].Paused = 0;}
el[i].OnResume();}}}}
var AnimeIsIE = navigator.appVersion.indexOf("MSIE") != -1;function AnimeJInterp() {}
AnimeJInterp.px = function (time, tstep, obj, prop, fromOrSteps, to) {if (typeof(fromOrSteps) == 'number')fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(obj, prop, fromOrSteps, AnimeJConv.Int, '', 'px'), time, tstep);};AnimeJInterp.alpha = function (time, tstep, style, fromOrSteps, to) {if (typeof(fromOrSteps) == 'number')fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];if (AnimeIsIE) {var i;for (i = 0; i < fromOrSteps.length; i++)fromOrSteps[i].v = Math.floor(fromOrSteps[i].v * 100);return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(style, 'filter', fromOrSteps, AnimeJConv.Int, 'alpha(opacity=', ')'), time, tstep);}
return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(style, 'opacity', fromOrSteps, AnimeJConv.Float, '', ''), time, tstep);};AnimeJInterp.fiv = function (time, tstep, fun, fromOrSteps, to) {if (to)fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(fun, null, fromOrSteps, AnimeJConv.Int, '', ''), time, tstep);};AnimeJInterp.ffv = function (time, tstep, fun, fromOrSteps, to) {if (to)fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(fun, null, fromOrSteps, AnimeJConv.Float, '', ''), time, tstep);};AnimeJInterp.fia = function (time, tstep, fun, fromOrSteps, to) {if (to)fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(fun, null, fromOrSteps, AnimeJConv.IntList, '', ''), time, tstep);};AnimeJInterp.ffa = function (time, tstep, fun, fromOrSteps, to) {if (to)fromOrSteps = [ { t: 0.0, v: fromOrSteps}, { t: 1.0, v: to } ];return new AnimeJInterpolatedTask(new AnimeJLinearInterpolator(fun, null, fromOrSteps, AnimeJConv.FloatList, '', ''), time, tstep);};
//}}}
<html><input type="text" width="120px"></input></html><script label="<<">
// var txt = btn.parentNode.getElementsByTagName('input')[0];
var txt=place.previousSibling.firstChild;
var t = new Timeline();
if (txt.style.display == 'none') {
txt.style.display = 'inline';
t.SetAt(0, AnimeJInterp.px(1000, 30, txt.style, 'width', 0, 120));
t.SetAt(0, AnimeJInterp.alpha(1000, 30, txt.style, 0.0, 1.0));
t.OnEnd = function () { place.innerHTML = '<<'; };
} else {
t.SetAt(0, AnimeJInterp.px(1000, 30, txt.style, 'width', 120, 0));
t.SetAt(0, AnimeJInterp.alpha(1000, 30, txt.style, 1.0, 0.0));
t.OnEnd = function (d) { place.innerHTML = '>>'; txt.style.display = 'none'; };
}
t.Run();
</script>
/%
|Name|AppendToTiddler|
|Source|http://www.TiddlyTools.com/#AppendToTiddler|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|append a single-line of input to the end of the current tiddler|
Usage: <<tiddler AppendToTiddler with: datefmt>>
where 'datefmt' is *optional*
%/<html><hide linebreaks><form style="white-space:nowrap" onsubmit="this.btn.onclick(); return false">
<input type="text" name="in" style="width:90%" value="">
<input type="button" name="btn" style="width:8%" value="ok" onclick="
if (!this.form.in.value.length) return false;
if (this.form.in.value==this.form.in.defaultValue) return false;
var here=story.findContainingTiddler(this); if (!here) return false;
var title=here.getAttribute('tiddler');
var tid=store.getTiddler(title);
var now=new Date();
var datefmt=''; if ('$1'!='$'+'1') datefmt='$1 ';
var txt=(tid?tid.text:'')+'\n'+now.formatString(datefmt)+this.form.in.value;
var who=tid?tid.modifier:config.options.txtUserName;
var when=tid?tid.modified:now;
var tags=tid?tid.tags:[];
var fields=tid?tid.fields:{};
store.saveTiddler(title,title,txt,who,when,tags,fields);
"></form></html>
text/plain
.txt .text .js .vbs .asp .cgi .pl
----
text/html
.htm .html .hta .htx .mht
----
text/comma-separated-values
.csv
----
text/javascript
.js
----
text/css
.css
----
text/xml
.xml .xsl .xslt
----
image/gif
.gif
----
image/jpeg
.jpg .jpe .jpeg
----
image/png
.png
----
image/bmp
.bmp
----
image/tiff
.tif .tiff
----
audio/basic
.au .snd
----
audio/wav
.wav
----
audio/x-pn-realaudio
.ra .rm .ram
----
audio/x-midi
.mid .midi
----
audio/mp3
.mp3
----
audio/m3u
.m3u
----
video/x-ms-asf
.asf
----
video/avi
.avi
----
video/mpeg
.mpg .mpeg
----
video/quicktime
.qt .mov .qtvr
----
application/pdf
.pdf
----
application/rtf
.rtf
----
application/postscript
.ai .eps .ps
----
application/wordperfect
.wpd
----
application/mswrite
.wri
----
application/msexcel
.xls .xls3 .xls4 .xls5 .xlw
----
application/msword
.doc
----
application/mspowerpoint
.ppt .pps
----
application/x-director
.swa
----
application/x-shockwave-flash
.swf
----
application/x-zip-compressed
.zip
----
application/x-gzip
.gz
----
application/x-rar-compressed
.rar
----
application/octet-stream
.com .exe .dll .ocx
----
application/java-archive
.jar
[[AttachFilePlugin]] reads binary data from locally-stored files (e.g., images, PDFs, mp3's, etc.) and converts it to base64-encoded text that is stored in tiddlers tagged with<<tag attachment>>. [[AttachFilePluginFormatters]] allows you to use those tiddlers in place of the external path/file references that are normally part of the image and external links wiki syntax.
[[FileDropPlugin]] and [[FileDropPluginConfig]] allow you to quickly create attachment tiddlers simply by dragging files directly from your system's desktop folder display and dropping it onto an open TiddlyWiki document. Text files are automatically created as simple tiddlers, while binary files are automatically encoded and attached.
/***
|Name|AttachFilePlugin|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|3.9.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
|Overrides||
|Description|Store binary files as base64-encoded tiddlers with fallback links for separate local and/or remote file storage|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
!!!!!Documentation
>see [[AttachFilePluginInfo]]
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Revisions
<<<
2008.07.21 [3.9.0] Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
|please see [[AttachFilePluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePlugin= {major: 3, minor: 9, revision: 0, date: new Date(2008,7,21)};
// shadow tiddler
config.shadowTiddlers.AttachFile="<<attach inline>>";
// add 'attach' backstage task (insert before built-in 'importTask')
if (config.tasks) { // for TW2.2b or above
config.tasks.attachTask = {
text: "attach",
tooltip: "Attach a binary file as a tiddler",
content: "<<attach inline>>"
}
config.backstageTasks.splice(config.backstageTasks.indexOf("importTask"),0,"attachTask");
}
config.macros.attach = {
// // lingo
//{{{
label: "attach file",
tooltip: "Attach a file to this document",
linkTooltip: "Attachment: ",
typeList: "AttachFileMIMETypes",
titlePrompt: " enter tiddler title...",
MIMEPrompt: "<option value=''>select MIME type...</option><option value='editlist'>[edit list...]</option>",
localPrompt: " enter local path/filename...",
URLPrompt: " enter remote URL...",
tiddlerErr: "Please enter a tiddler title",
sourceErr: "Please enter a source path/filename",
storageErr: "Please select a storage method: embedded, local or remote",
MIMEErr: "Unrecognized file format. Please select a MIME type",
localErr: "Please enter a local path/filename",
URLErr: "Please enter a remote URL",
fileErr: "Invalid path/file or file not found",
sourceReport: "| source file:|{{{%0}}}|\n",
nosourceReport: "| source file:|//none//|\n",
dateReport: "| attached on:|%0 by %1|\n",
notesReport: "| description:|%0|\n",
dataReport: "| embedded:|[[%0|%0]] - {{{type=%1, size=%2 bytes, encoded=%3 bytes}}}|\n",
nodataReport: "| embedded:|//none//|\n",
localReport: "| local file:|/%LOCAL_LINK%/[[%0|%1]]|\n",
nolocalReport: "| local file:|//none//|\n",
URLReport: "| remote link:|/%REMOTE_LINK%/[[%0|%0]]|\n",
noURLReport: "| remote link:|//none//|\n",
imageReport: "image\n<<<\nusage: {{{[img[tooltip|%0]] or [img[tooltip|%0][link]]}}}\n[img[tooltip|%0]]\n<<<\n",
dataBlock: "\n/% DO NOT EDIT BELOW THIS POINT\n---BEGIN_DATA---\n%0;base64,\n%1\n---END_DATA---\n%/",
//}}}
// // macro definition
//{{{
handler:
function(place,macroName,params) {
if (params && !params[0]) { createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }
var id=params.shift();
this.createAttachPanel(place,id+"_attachPanel",params);
document.getElementById(id+"_attachPanel").style.position="static";
document.getElementById(id+"_attachPanel").style.display="block";
},
//}}}
//{{{
createAttachPanel:
function(place,panel_id,params) {
if (!panel_id || !panel_id.length) var panel_id="_attachPanel";
// remove existing panel (if any)
var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);
// set styles for this panel
setStylesheet(this.css,"attachPanel");
// create new panel
var title=""; if (params && params[0]) title=params.shift();
var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types
panel=createTiddlyElement(place,"span",panel_id,"attachPanel",null);
var html=this.html.replace(/%id%/g,panel_id);
html=html.replace(/%title%/g,title);
html=html.replace(/%disabled%/g,title.length?"disabled":"");
html=html.replace(/%IEdisabled%/g,config.browser.isIE?"disabled":"");
html=html.replace(/%types%/g,types);
panel.innerHTML=html;
if (config.browser.isGecko) { // FF3 FIXUP
document.getElementById("attachSource").style.display="none";
document.getElementById("attachFixPanel").style.display="block";
}
return panel;
},
//}}}
//{{{
toggleAttachPanel:
function (e) {
if (!e) var e = window.event;
var parent=resolveTarget(e).parentNode;
var panel = document.getElementById("_attachPanel");
if (panel==undefined || panel.parentNode!=parent)
panel=config.macros.attach.createAttachPanel(parent,"_attachPanel");
var isOpen = panel.style.display=="block";
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
else
panel.style.display = isOpen ? "none" : "block" ;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
},
//}}}
//{{{
formatListOptions:
function(text) {
if (!text || !text.trim().length) return "";
// get MIME list content from text
var parts=text.split("\n----\n");
var out="";
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var label=lines.shift(); // 1st line=display text
var value=lines.shift(); // 2nd line=item value
out +='<option value="%1">%0</option>'.format([label,value]);
}
return out;
},
//}}}
// // interface definition
//{{{
css:
".attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em; text-align:left }\
.attachPanel form { display:inline;border:0;padding:0;margin:0; }\
.attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\
.attachPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
.attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\
.attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\
.attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\
.attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }\
.attachPanel .chk { width:auto;border:0; }\
.attachPanel .btn { width:auto; }\
.attachPanel .btn2 { width:49%; }\
",
//}}}
//{{{
html:
'<form>\
attach from source file\
<input type="file" id="attachSource" name="source" size="56"\
onChange="config.macros.attach.onChangeSource(this)">\
<div id="attachFixPanel" style="display:none"><!-- FF3 FIXUP -->\
<input type="text" id="attachFixSource" style="width:90%"\
title="Enter a path/file to attach"\
onChange="config.macros.attach.onChangeSource(this);">\
<input type="button" style="width:7%" value="..."\
title="Enter a path/file to attach"\
onClick="config.macros.attach.askForFilename(document.getElementById(\'attachFixSource\'));">\
</div><!--end FF3 FIXUP-->\
<div class="box">\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
embed data <input type=checkbox class=chk name="useData" %IEdisabled% \
onclick="if (!this.form.MIMEType.value.length)\
this.form.MIMEType.selectedIndex=this.checked?1:0; "> \
</td><td style="border:0">\
<select size=1 name="MIMEType" \
onchange="this.title=this.value; if (this.value==\'editlist\')\
{ this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }">\
<option value=""></option>\
%types%\
</select>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
local link <input type=checkbox class=chk name="useLocal"\
onclick="this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\'\';"> \
</td><td style="border:0">\
<input type=text name="local" size=15 autocomplete=off value=""\
onchange="this.form.useLocal.checked=this.value.length" \
onkeyup="this.form.useLocal.checked=this.value.length" \
onfocus="if (!this.value.length) this.value=config.macros.attach.localPrompt; this.select()">\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
remote link <input type=checkbox class=chk name="useURL"\
onclick="this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\'\';\"> \
</td><td style="border:0">\
<input type=text name="URL" size=15 autocomplete=off value=""\
onfocus="if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()"\
onchange="this.form.useURL.checked=this.value.length;"\
onkeyup="this.form.useURL.checked=this.value.length;">\
</td></tr></table>\
</div>\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
attach as \
</td><td style="border:0" colspan=2>\
<input type=text name="tiddlertitle" size=15 autocomplete=off value="%title%"\
onkeyup="if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }"\
onfocus="if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()" %disabled%>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
description \
</td><td style="border:0" colspan=2>\
<input type=text name="notes" size=15 autocomplete=off>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
add tags \
</td><td style="border:0">\
<input type=text name="tags" size=15 autocomplete=off value="" onfocus="this.select()">\
</td><td style="width:40%;text-align:right;border:0">\
<input type=button class=btn2 value="attach"\
onclick="config.macros.attach.onClickAttach(this)"><!--\
--><input type=button class=btn2 value="close"\
onclick="var panel=document.getElementById(\'%id%\'); if (panel) panel.parentNode.removeChild(panel);">\
</td></tr></table>\
</form>',
//}}}
// // control processing
//{{{
onChangeSource:
function(here) {
var form=here.form;
var list=form.MIMEType;
var theFilename = here.value;
var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();
// if theFilename is in current document folder, remove path prefix and use relative reference
var h=document.location.href; folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
if (theFilename.substr(0,folder.length)==folder) theFilename='./'+theFilename.substr(folder.length);
else theFilename='file:///'+theFilename; // otherwise, use absolute reference
theFilename=theFilename.replace(/\\/g,"/"); // fixup: change \ to /
form.useLocal.checked = true;
form.local.value = theFilename;
form.useData.checked = !form.useData.disabled;
list.selectedIndex=1;
for (var i=0; i<list.options.length; i++) // find matching MIME type
if (list.options[i].value.indexOf(theExtension)!=-1) { list.selectedIndex = i; break; }
if (!form.tiddlertitle.disabled)
form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename
},
//}}}
//{{{
onClickAttach:
function (here) {
clearMessage();
// get input values
var form=here.form;
var src=form.source; if (config.browser.isGecko) src=document.getElementById("attachFixSource");
var theDate=(new Date()).formatString(config.macros.timeline.dateFormat);
var theSource = src.value!=src.defaultValue?src.value:"";
var theTitle=form.tiddlertitle.value;
var theLocal = form.local.value!=form.local.defaultValue?form.local.value:"";
var theURL = form.URL.value!=form.URL.defaultValue?form.URL.value:"";
var theNotes = form.notes.value;
var theTags = "attachment excludeMissing "+form.tags.value;
var useData=form.useData.checked;
var useLocal=form.useLocal.checked;
var useURL=form.useURL.checked;
var theMIMEType = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";
// validate checkboxes and get filename
if (useData) {
if (theSource.length) { if (!theLocation) var theLocation=theSource; }
else { alert(this.sourceErr); src.focus(); return false; }
}
if (useLocal) {
if (theLocal.length) { if (!theLocation) var theLocation = theLocal; }
else { alert(this.localErr); form.local.focus(); return false; }
}
if (useURL) {
if (theURL.length) { if (!theLocation) var theLocation = theURL; }
else { alert(this.URLErr); form.URL.focus(); return false; }
}
if (!(useData||useLocal||useURL))
{ form.useData.focus(); alert(this.storageErr); return false; }
if (!theLocation)
{ src.focus(); alert(this.sourceErr); return false; }
if (!theTitle || !theTitle.trim().length || theTitle==this.titlePrompt)
{ form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }
// if not already selected, determine MIME type based on filename extension (if any)
if (useData && !theMIMEType.length && theLocation.lastIndexOf('.')!=-1) {
var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();
var theList=form.MIMEType;
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].value.indexOf(theExt)!=-1)
{ var theMIMEType=theList.options[i].text; theList.selectedIndex=i; break; }
}
// attach the file
return this.createAttachmentTiddler(theSource, theDate, theNotes, theTags, theTitle,
useData, useLocal, useURL, theLocal, theURL, theMIMEType);
},
getMIMEType:
function(src,def) {
var ext = src.substr(src.lastIndexOf('.')).toLowerCase();
var list=store.getTiddlerText(this.typeList);
if (!list || !list.trim().length) return def;
// get MIME list content from tiddler
var parts=list.split("\n----\n");
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var mime=lines.shift(); // 1st line=MIME type
var match=lines.shift(); // 2nd line=matching extensions
if (match.indexOf(ext)!=-1) return mime;
}
return def;
},
createAttachmentTiddler:
function (theSource, theDate, theNotes, theTags, theTitle,
useData, useLocal, useURL, theLocal, theURL, theMIMEType, noshow) {
// encode the data
if (useData) {
if (!theMIMEType.length) {
alert(this.MIMEErr);
form.MIMEType.selectedIndex=1; form.MIMEType.focus();
return false;
}
var theData = this.readFile(theSource); if (!theData) { return false; }
displayMessage('encoding '+theSource);
var theEncoded = this.encodeBase64(theData);
displayMessage('file size='+theData.length+' bytes, encoded size='+theEncoded.length+' bytes');
}
// generate tiddler and refresh
var theText = "";
theText +=theSource.length?this.sourceReport.format([theSource]):this.nosourceReport;
theText +=this.dateReport.format([theDate,config.options.txtUserName]);
theText +=theNotes.length?this.notesReport.format([theNotes]):"";
theText +=useData?this.dataReport.format([theTitle,theMIMEType,theData.length,theEncoded.length]):this.nodataReport;
theText +=useLocal?this.localReport.format([theLocal,theLocal.replace(/\\/g,"/")]):this.nolocalReport;
theText +=useURL?this.URLReport.format([theURL]):this.noURLReport;
theText +=(theMIMEType.substr(0,5)=="image")?this.imageReport.format([theTitle]):"";
theText +=useData?this.dataBlock.format([theMIMEType,theEncoded]):"";
store.saveTiddler(theTitle,theTitle,theText,config.options.txtUserName,new Date(),theTags);
var panel=document.getElementById("attachPanel"); if (panel) panel.style.display="none";
if (!noshow) { story.displayTiddler(null,theTitle); story.refreshTiddler(theTitle,null,true); }
displayMessage('attached "'+theTitle+'"');
return true;
},
//}}}
// // base64 conversion
//{{{
encodeBase64:
function (theData) {
if (!theData) return null;
// encode as base64
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var out="";
var chr1,chr2,chr3="";
var enc1,enc2,enc3,enc4="";
for (var count=0,i=0; i<theData.length; ) {
chr1=theData.charCodeAt(i++);
chr2=theData.charCodeAt(i++);
chr3=theData.charCodeAt(i++);
enc1=chr1 >> 2;
enc2=((chr1 & 3) << 4) | (chr2 >> 4);
enc3=((chr2 & 15) << 2) | (chr3 >> 6);
enc4=chr3 & 63;
if (isNaN(chr2)) enc3=enc4=64;
else if (isNaN(chr3)) enc4=64;
out+=keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);
chr1=chr2=chr3=enc1=enc2=enc3=enc4="";
count+=4; if (count>60) { out+='\n'; count=0; } // add line break every 60 chars for readability
}
return out;
},
decodeBase64: function(input) {
var out="";
var chr1,chr2,chr3;
var enc1,enc2,enc3,enc4;
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
input=input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1=keyStr.indexOf(input.charAt(i++));
enc2=keyStr.indexOf(input.charAt(i++));
enc3=keyStr.indexOf(input.charAt(i++));
enc4=keyStr.indexOf(input.charAt(i++));
chr1=(enc1 << 2) | (enc2 >> 4);
chr2=((enc2 & 15) << 4) | (enc3 >> 2);
chr3=((enc3 & 3) << 6) | enc4;
out=out+String.fromCharCode(chr1);
if (enc3!=64) out=out+String.fromCharCode(chr2);
if (enc4!=64) out=out+String.fromCharCode(chr3);
} while (i<input.length);
return out;
},
//}}}
// // I/O functions
//{{{
readFile: // read local BINARY file data
function(filePath) {
if(!window.Components) { return null; }
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert("access denied: "+filePath); return null; }
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(filePath); } catch(e) { alert("cannot read file - invalid path: "+filePath); return null; }
if (!file.exists()) { alert("cannot read file - not found: "+filePath); return null; }
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inputStream.init(file, 0x01, 00004, null);
var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
bInputStream.setInputStream(inputStream);
return(bInputStream.readBytes(inputStream.available()));
},
//}}}
//{{{
writeFile:
function(filepath,data) {
// TBD: decode base64 and write BINARY data to specified local path/filename
return(false);
},
//}}}
//{{{
askForFilename: // for FF3 fixup
function(target) {
var msg=config.messages.selectFile;
if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
// get local path for current document
var path=getLocalPath(document.location.href);
var p=path.lastIndexOf("/"); if (p==-1) p=path.lastIndexOf("\\"); // Unix or Windows
if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
var file=""
var result=window.mozAskForFilename(msg,path,file,true); // FF3 FIXUP ONLY
if (target && result.length) // set target field and trigger handling
{ target.value=result; target.onchange(); }
return result;
}
};
//}}}
//{{{
if (window.mozAskForFilename===undefined) { // also defined by CoreTweaks (for ticket #604)
window.mozAskForFilename=function(msg,path,file,mustExist) {
if(!window.Components) return false;
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel)
var result=picker.file.persistentDescriptor;
}
catch(ex) { displayMessage(ex.toString()); }
return result;
}
}
//}}}
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|3.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1.3|
|Type|plugin|
|Requires||
|Overrides|'image' and 'prettyLink' formatters, TiddlyWiki.prototype.getRecursiveTiddlerText|
|Description|run-time library for displaying attachment tiddlers|
This plugin provides "stand-alone" processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]]. Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server.
NOTE: This plugin does not include the "control panel" and supporting functions needed to //create// new attachment tiddlers. Those features are provided by [[AttachFilePlugin]], which can be installed while building your document, and then safely omitted to reduce the overall file size when you publish your finished document (assuming you don't intend to create any additional attachment tiddlers in that document)
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}
''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly. This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePluginFormatters= {major: 3, minor: 7, revision: 0, date: new Date(2007,10,28)};
//}}}
//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
var tiddler = store.getTiddler(title);
if (tiddler==undefined || tiddler.tags==undefined) return false;
return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}
//{{{
// test for local file existence
// Returns true/false without visible error display
// Uses Components for FF and ActiveX FSO object for MSIE
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(theFile) {
var found=false;
// DEBUG: alert('testing fileExists('+theFile+')...');
if(window.Components) {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { return false; } // security access denied
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(theFile); }
catch(e) { return false; } // invalid directory
found = file.exists();
}
else { // use ActiveX FSO object for MSIE
var fso = new ActiveXObject("Scripting.FileSystemObject");
found = fso.FileExists(theFile)
}
// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
return found;
}
//}}}
//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {
// extract embedded data, local and remote links (if any)
var startmarker="---BEGIN_DATA---\n";
var endmarker="\n---END_DATA---";
var pos=0; var endpos=0;
var text = store.getTiddlerText(title);
var embedded="";
var locallink="";
var remotelink="";
// look for embedded data, convert to data: URI
if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
if (embedded.length && !config.browser.isIE)
return embedded; // use embedded data if any... except for IE, which doesn't support data URI
// no embedded data... fallback to local/remote reference links...
// look for 'attachment link markers'
if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
// document is being served remotely... use remote URL (if any) (avoids security alert)
if (remotelink.length && document.location.protocol!="file:")
return remotelink;
// local link only... return link without checking file existence (avoids security alert)
if (locallink.length && !remotelink.length)
return locallink;
// local link, check for file exist... use local link if found
if (locallink.length) {
if (this.fileExists(getLocalPath(locallink))) return locallink;
// maybe local link is relative... add path from current document and try again
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
}
// no embedded data, no local (or not found), fallback to remote URL (if any)
if (remotelink.length)
return remotelink;
return ""; // attachment URL doesn't resolve
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
if (this.initialized) return;
// find the formatter for "image" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
{
var e = w.output;
if(lookaheadMatch[5])
{
var link = lookaheadMatch[5];
// ELS -------------
var external=config.formatterHelpers.isExternalLink(link);
if (external)
{
if (config.macros.attach.isAttachment(link))
{
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
}
else
e = createExternalLink(w.output,link);
}
else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
// ELS -------------
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(lookaheadMatch[1])
img.align = "left";
else if(lookaheadMatch[2])
img.align = "right";
if(lookaheadMatch[3])
img.title = lookaheadMatch[3];
img.src = lookaheadMatch[4];
// ELS -------------
if (config.macros.attach.isAttachment(lookaheadMatch[4]))
img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
// ELS -------------
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
//}}}
//{{{
// find the formatter for "prettyLink" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
if (i<config.formatters.length) {
config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var e;
var text = lookaheadMatch[1];
if(lookaheadMatch[3]) {
// Pretty bracketted link
var link = lookaheadMatch[3];
if (config.macros.attach.isAttachment(link)) {
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title=config.macros.attach.linkTooltip+link;
}
else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
? createExternalLink(w.output,link)
: createTiddlyLink(w.output,link,false,null,w.isStatic);
} else {
e = createTiddlyLink(w.output,text,false,null,w.isStatic);
}
createTiddlyText(e,text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
} // if "prettyLink" formatter found
this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
return config.macros.attach.isAttachment(title)?
config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
}
}
//}}}
| source file|{{{...\images\meow.gif}}}|
| attached on|15 May 2006 by ELSDesignStudios|
| embedded data|[[meow.gif|AttachFileSample]] - {{{type=image/gif, size=3399 bytes, encoded=4602 bytes}}}|
| ~LocalFile|/%LOCAL_LINK%/[[images/meow.gif|images/meow.gif]]|
| ~RemoteLink|/%REMOTE_LINK%/[[http://www.TiddlyTools.com/images/meow.gif|http://www.TiddlyTools.com/images/meow.gif]]|
image
<<<
usage: {{{[img[tooltip|AttachFileSample]] or [img[tooltip|AttachFileSample][link]]}}})
[img[tooltip|AttachFileSample]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhOABQAPcAAAAACAAAEAAICAgICAgLDBAQCAQQGRAIEBgICBAQEBAQGBAY
FBoOEhwUFCEYEBgYGA4cIBkgGyEcHCEhISkYGCkcHCEpHCklIRAgMRkmNSElKSEp
NikeKykpKSExQiE5QjEhJTEpITEpKSkpMSkxISk1KTExITExKSktNTEpMTEpOTEx
MSk5MSkxOSkxQik5PTkrKTkxMTE8KTFCMTExOTExQjE5PTFCPTk3MzlCMTkxQjk5
QkI0MzlGPUg9M01JNi88TTlEUkI8REJCSkZDRFBDQkY/UFA/TjNMUkNOS1JKSkpW
Rj1KWEpKWj9OXEVZZlhMRlVLVVpSUlReUFdSYFVhX1JSa1VfbmBbU11ia2dcV3Fj
XVpldWVkb2tnb3tnbGZ1ZHV6aWVwe3d5c2N4iXN3gntzgHeBiYd2dYWHeoh/jIKL
kJWEfZmUh5CNlJ+VkICPn46XpZiSo5WfoJycnKaemaGcqKWlpZWnraWtqa2qoq2l
rZavvKW4xK2lta2ws/8A/7WcjLWllLWlpbWlrb2tnMatnLWtpbWtrb2trbWttb2t
tbWtvbW1pca1pbW1ra21va21xrW1tbW1vbW1xrW9tb21rb21tb21vb21xr29rb29
tca9sca1vc69rda9ra29wa3GxrW9vbW9xq29zrHGyrPB0rXG1r29vb29xr29zr3G
vb3Gxr3Gzr3G1sa9vcbGtc7GtdbGtcbGvc7GvdbGvd7Gvca9xsa9zsbGxsbGzsbG
1s7DyNbGxtbGzs7G1rjQ2MbO0sbO3sbW1s7Owc7OzsbW3sbe3s7O1s7W0tbQx+HU
zNDQ29bW1tvb1ufa1sPW6dDW4dbW3trY4sni7dbk797e3tbx9N7n3ufe3t7e597n
597i7+fe597s9N73++fn3ufn5+fn7+fv5+fv7+/e5+/r4vfr4ufn9+fv9+fv/+/n
7+/v8/Pz7/fv9+/v/+f3++f//+/39+/3/+//9+////f37/f39/f3//f/9/f////3
7//39//3////9////yH5BAEAAIAALAAAAAA4AFAAQAj+AAEJHEiwoMGDCBMqXIiw
iA8tXbxIgXHhgY+FICSIiCFFihIeXRgm9OKlDJMqYs506UIDRIUKD7w8kLCiAw0q
0ao8WCFhwgQqDx7E+EJHm0gpUaI0ibKDBo0dXeakazEkxYUOGjRMSQOmQw874eR9
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
---END_DATA---
%/
| source file|{{{...images\meow2.jpg}}}|
| attached on|15 May 2006 by ELSDesignStudios|
| embedded data|//none//|
| local link|/%LOCAL_LINK%/[[images/meow2.jpg|images/meow2.jpg]]|
| remote link|/%REMOTE_LINK%/[[http://www.TiddlyTools.com/images/meow2.jpg|http://www.TiddlyTools.com/images/meow2.jpg]]|
image
<<<
usage: {{{[img[tooltip|AttachFileSample2]] or [img[tooltip|AttachFileSample2][link]]}}})
[img[tooltip|AttachFileSample2]]
<<<
This document began life as a "basics" document from [[TiddlyTools|http://www.TiddlyTools.com]]
<br>^^~TiddlyWiki v<<version>> plus BasicsPackage^^
^^@@font-size:80%;{{block{
''//a [[TiddlyTools|http://www.TiddlyTools.com]] ~QuickStart™ document. All rights retained.//''}}}@@^^
/%
|Description|enter FAQ list item text here|
%/
{{small{
__enter FAQ display title text here__
enter FAQ content here
}}}
<!--{{{-->
<!--
|Name|BookmarkViewTemplate|
|Source|http://www.TiddlyTools.com/#BookmarkViewTemplate|
|Version||
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|template|
|Requires|ToolbarCommands, WikifyPlugin, TaggedTemplateTweak|
|Overrides||
|Description|custom template used to display tiddlers tagged with "Bookmark"|
Usage:
Create a tiddler and enter URL, description and author using a 'slice table':
|''URL:''|Enter a URL|
|''Description:''|enter a description|
|''Author:''|enter author/moderator info|
Tag the tiddler with "bookmark" (or "Bookmark")
-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></span>
<div class='title' macro='view title'></div>
<span class='subtitle'>
<span style='white-space:nowrap' macro='view modified date [[DDD, MMM DDth YYYY]]'></span>
</span>
<div class='tagClear'></div>
<div class='viewer'>
<div class='floatleft' macro='wikify "{{big{[[%0|%1]]}}}<br>" here::Description here::URL'></div>
<div class='toolbar'>
<a class='button' href='javascript:;'
onclick='window.history.go(-1);' title='go back one page'>back</a>
<a class='button' href='javascript:;'
onclick='window.history.go(+1);' title='go foward one page'>forward</a>
<a class='button' href='javascript:;'
onclick='var f=this.parentNode.parentNode.getElementsByTagName("iframe")[0];
f.src=f.src'
title='reload current page'>reload</a>
<a class='button' href='javascript:;'
onclick='var f=this.parentNode.parentNode.getElementsByTagName("iframe")[0];
var w=prompt("Enter a new frame width (use px, em, cm, in, or %)","100%");
if (!w||!w.length) return; if (!w.replace(/[0-9]*/,"").length) w+="px";
f.style.width=w;'
title='set frame width'>width</a>
<a class='button' href='javascript:;'
onclick='var f=this.parentNode.parentNode.getElementsByTagName("iframe")[0];
var h=prompt("Enter a new frame height (use px, em, cm, or in)","500");
if (!h||!h.length) return; if (!h.replace(/[0-9]*/,"").length) h+="px";
f.style.height=h;'
title='set frame height'>height</a>
<a class='button' href='javascript:;'
onclick='var f=this.parentNode.parentNode.getElementsByTagName("iframe")[0];
var show=f.style.display=="none";
f.style.display=show?"block":"none";
this.innerHTML=show?"hide":"show";'
title="toggle display of this frame (but DON'T reload content)">hide</a>
</div><div class='tagClear'
macro='wikify [[<html><iframe src="%0" height="500" width="100%" style="background:#fff"></iframe></html>]] here::URL'>
</div>
<div macro='view text wikified'></div>
</div>
<span macro="tiddler SolidTiddlerBorder" style='display:none'></span>
<!--}}}-->
/%
|Name|BreadcrumbsCommand|
|Source|http://www.TiddlyTools.com/#BreadcrumbsCommand|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|BreadcrumbsPlugin|
|Overrides||
|Description|"crumbs" command displays current breadcrumbs list in a popup|
%/<html><hide linebreaks><a href="javascript:;" class="TiddlyLink" title="tiddlers viewed during this session"
onclick="var p=Popup.create(this); if (!p) return;
var d=createTiddlyElement(p,'div');
d.style.whiteSpace='normal'; d.style.width='auto'; d.style.padding='2px';
wikify('\<\<breadcrumbs [[\<html\>\<hr\>\</html\>]] [[<br>]]\>\>',d);
Popup.show(p,false); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation();
return(false);"
>crumbs</a></html>
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.0.0|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler,TiddlyWiki.prototype.deleteTiddler|
|Options|##Configuration|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
<<<
!!!!!Revisions
<<<
2008.05.01 [2.0.0] added 'limit open tiddlers' feature (with safety check for tiddler in edit mode)
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 0, revision: 0, date: new Date("May 1, 2008")};
var co=config.options; // abbreviation
// show/hide display option (default is to SHOW breadcrumbs)
if (co.chkShowBreadcrumbs===undefined) co.chkShowBreadcrumbs=true;
// REORDER breadcrumbs when visiting previously viewed tiddler (default)
if (co.chkReorderBreadcrumbs===undefined) co.chkReorderBreadcrumbs=true;
// create default breadcrumbs display as needed (default is to CREATE)
if (co.chkCreateDefaultBreadcrumbs===undefined) co.chkCreateDefaultBreadcrumbs=true;
// show breadcrumbs for 'startup' tiddlers (default is FALSE = only show crumbs for tiddlers opened after startup)
if (co.chkShowStartupBreadcrumbs===undefined) co.chkShowStartupBreadcrumbs=false;
// show crumbs in reverse order (most recent first)
if (co.chkBreadcrumbsReverse===undefined) co.chkBreadcrumbsReverse=false;
// limit number of crumbs displayed
if (co.chkBreadcrumbsLimit===undefined) co.chkBreadcrumbsLimit=false;
if (co.txtBreadcrumbsLimit===undefined) co.txtBreadcrumbsLimit=5;
// limit number of open tiddlers
if (co.chkBreadcrumbsLimitOpenTiddlers===undefined) co.chkBreadcrumbsLimitOpenTiddlers=false;
if (co.txtBreadcrumbsLimitOpenTiddlers===undefined) co.txtBreadcrumbsLimitOpenTiddlers=3;
// omit home link from breadcrumbs display
if (co.chkBreadcrumbsHideHomeLink===undefined) co.chkBreadcrumbsHideHomeLink=false;
config.macros.breadcrumbs = {
crumbs: [], // the list of current breadcrumbs
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
area.setAttribute("homeSep",params[0]?params[0]:this.homeSeparator); // custom home separator
area.setAttribute("crumbSep",params[1]?params[1]:this.crumbSeparator); // custom crumb separator
this.render(area);
},
add: function (title) {
var thisCrumb = title;
var ind = this.crumbs.indexOf(thisCrumb);
if(ind === -1)
this.crumbs.push(thisCrumb);
else if (config.options.chkReorderBreadcrumbs)
this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
else
this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
if (config.options.chkBreadcrumbsLimitOpenTiddlers)
this.limitOpenTiddlers();
this.refresh();
return false;
},
getAreas: function() {
var crumbAreas=[];
// find all DIVs with classname=="breadCrumbs"
// Note: use try/catch to avoid "Bad NPObject as private data" fatal error caused when
// some versions of embedded QuickTime player element is accessed by hasClass() function.
var all=document.getElementsByTagName("*");
for (var i=0; i<all.length; i++)
try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
// find single DIV w/fixed ID (backward compatibility)
var byID=document.getElementById("breadCrumbs")
if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
// no existing crumbs display areas... create one...
var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
defaultArea.style.display= "none";
var targetArea= document.getElementById("tiddlerDisplay");
targetArea.parentNode.insertBefore(defaultArea,targetArea);
crumbAreas.push(defaultArea);
}
return crumbAreas;
},
refresh: function() {
var crumbAreas=this.getAreas();
for (var i=0; i<crumbAreas.length; i++) {
crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
removeChildren(crumbAreas[i]);
this.render(crumbAreas[i]);
}
},
render: function(here) {
var out=""
var homeSep=here.getAttribute("homeSep"); if (!homeSep) homeSep=this.homeSeparator;
var crumbSep=here.getAttribute("crumbSep"); if (!crumbSep) crumbSep=this.crumbSeparator;
if (!config.options.chkBreadcrumbsHideHomeLink) {
createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
out+=homeSep;
}
for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
this.crumbs.splice(c,1);
var count=this.crumbs.length;
if (config.options.chkBreadcrumbsLimit && config.options.txtBreadcrumbsLimit<count)
count=config.options.txtBreadcrumbsLimit;
var list=[];
for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
if (config.options.chkBreadcrumbsReverse) list.reverse();
out+=list.join(crumbSep);
wikify(out,here);
},
home: function() {
story.closeAllTiddlers();
restart();
config.macros.breadcrumbs.crumbs = [];
var crumbAreas=config.macros.breadcrumbs.getAreas();
for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
return false;
},
limitOpenTiddlers: function() {
var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
for (c=this.crumbs.length-1; c>=0; c--) {
var tid=this.crumbs[c];
var elem=document.getElementById(story.idPrefix+tid);
if (elem) { // tiddler is displayed
if (limit <=0) { // display limit has been reached
if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (confirm(msg)) { story.saveTiddler(tid); story.closeTiddler(tid); }
}
else
story.closeTiddler(this.crumbs[c]);
}
limit--;
}
}
}
};
if (config.macros.breadcrumbs.homeSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.homeSeparator=" | ";
if (config.macros.breadcrumbs.crumbSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.crumbSeparator=" > ";
config.commands.previousTiddler = {
text: 'back',
tooltip: 'view the previous tiddler',
hideReadOnly: false,
dateFormat: 'DDD, MMM DDth YYYY hh:0mm:0ss',
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2];
story.displayTiddler(here,crumb);
}
else
config.macros.breadcrumbs.home();
return false;
}
};
config.macros.previousTiddler= {
label: 'back',
prompt: 'view the previous tiddler',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var label=params.shift(); if (!label) label=this.label;
var prompt=params.shift(); if (!prompt) prompt=this.prompt;
createTiddlyButton(place,label,prompt,function() {
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2];
story.displayTiddler(place,crumb);
}
else
config.macros.breadcrumbs.home();
});
}
}
// hijack story.displayTiddler() so crumbs can be refreshed when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
// if not displaying tiddler during document startup, then add it to the breadcrumbs
// note: 'startingUp' flag is a global, set/reset by the core init() function
if (!startingUp || config.options.chkShowStartupBreadcrumbs) config.macros.breadcrumbs.add(title);
}
// hijack store.removeTiddler() so crumbs can be refreshed when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function(title)
{
this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
config.macros.breadcrumbs.refresh();
}
//}}}
/***
|Name|BreadcrumbsPluginInfo|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.0.0|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler,TiddlyWiki.prototype.removeTiddler|
|Description|Documentation for BreadcrumbsPlugin|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Usage
<<<
syntax:
{{{
<<breadcrumbs homeSeparator crumbSeparator>>
}}}
By default, the breadcrumbs are displayed as a continuous, //horizontal// word-wrapped line of text, using default character sequences for ''homeSeparator'' (" | ") and ''crumbSeparator'' (" > "). The //optional// ''homeSeparator'' and ''crumbSeparator'' macro parameters allow you to specify alternative separators. For example, to display the breadcrumbs //vertically// (in a stack, rather than a row), set the separator values to use {{{[[<br>]]}}}... and, to display a horizontal line as the home separator, use {{{[[<html><hr></html>]]}}}.
<<<
!!!!!Examples:
<<<
{{{
<<breadcrumbs>>
}}}
<<breadcrumbs>>
{{{
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
}}}
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
<<<
!!!!!Customization
<<<
Using CSS and a few of the plugin configuration options (see below), you can make the breadcrumbs display resemble browser tabs by adding the following to your [[StyleSheet]]:
{{{
.breadCrumbs { border-bottom:1px solid; }
.breadCrumbs a {
border: 1px solid; padding: 0px 1em;
-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;
}
}}}
and this in [[ConfigTweaks]] (tagged with systemConfig, of course):
{{{
config.options.chkShowStartupBreadcrumbs=true;
config.options.chkBreadcrumbsLimitOpenTiddlers=true;
config.options.txtBreadcrumbsLimitOpenTiddlers=1;
config.macros.breadcrumbs.homeSeparator=" ";
config.macros.breadcrumbs.crumbSeparator=" ";
}}}
<<<
!!!!!Configuration
<<<
__''display placement:''__
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
{{{<<option chkCreateDefaultBreadcrumbs>>}}}
>By default, the plugin automatically creates the "breadCrumbs" display element at the top of the story column, just above the tiddlerDisplay area. To manually control the display and placement of the breadcrumbs display, you can define a DIV with class="breadCrumbs" in a custom [[PageTemplate]] or embed the {{{<<breadcrumbs>>}}} macro in specific tiddler content.
>
>For example, to add the breadcrumbs below the mainMenu, change this:
{{{
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
}}}
>to:
{{{
<div id='mainMenu'>
<div refresh='content' tiddler='MainMenu'></div>
<div id='breadCrumbs' class='breadCrumbs'></div>
</div>
}}}
>You can also block automatic creation of the breadcrumbs display by setting
{{{
config.options.chkCreateDefaultBreadcrumbs=false;
}}}
>in a [[CookieJar]]/[[ConfigTweaks]] plugin tiddler.
__''other settings:''__
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
{{{<<option chkShowBreadcrumbs>>}}}
>This checkbox toggles the visibility of the breadcrumbs display. However, the display is not updated until the next crumb is added (or a previous crumb is clicked on). For immediate effect, the [[ToggleBreadcrumbs]] script uses [[InlineJavascriptPlugin]] to synchronize the checkbox setting and the breadcrumbs display.
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
{{{<<option chkReorderBreadcrumbs>>}}}
>When visiting a previously viewed tiddler, the title of the most-recently displayed tiddler is simply moved to the end of the list and individual breadcrumbs are not removed from the list unless the underlying tiddler is deleted. When ''re-ordering'' is disabled, the breadcrumbs list is ''trimmed'' so that all crumbs following that tiddler are removed from the list.
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
{{{<<option chkBreadcrumbsHideHomeLink>>}}}
>Enabling this option suppresses the automatic display of the "Home" link (and home separator). To manually add the home link elsewhere in your document, use the following HTML:
{{{
<html><a href="javascript:;" onclick="config.macros.breadcrumbs.home()">home</a></html>
}}}
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
{{{<<option chkShowStartupBreadcrumbs>>}}}
>Breadcrumbs are usually only added for tiddlers that are opened after the document has been loaded, and not for tiddlers displayed during initial startup (e.g., [[DefaultTiddlers]]). Enabling this option displays breadcrumbs for all viewed tiddlers, regardless of when they are opened.
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order
{{{<<option chkBreadcrumbsReverse>>}}}
>As tiddlers are displayed, breadcrumbs are usually added to the //end// of the list. Enabling this option displays breadcrumbs in reverse order, so that the most recently visited tiddlers are listed first.
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
{{{<<option chkBreadcrumbsLimit>>}}} and {{{<<option txtBreadcrumbsLimit>>}}}
>By default, breadcrumbs are displayed for all tiddlers that have been visited (unless the list is being 'trimmed' by disabling the chkReorderBreadcrumbs option above). Enabling this option limits the display of the list to a maximum specified number of breadcrumbs.
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
{{{<<option chkBreadcrumbsLimitOpenTiddlers>>}}} and {{{<<option txtBreadcrumbsLimitOpenTiddlers>>}}}
>By default, tiddlers remain open (e.g., displayed in the story column) until you explicitly close them. When this option is enabled, only the most recently opened tiddlers will remain open: ''any tiddlers in excess of the specified limit are automatically closed.'' //Note: for 'data safety', if a tiddler is being edited, you will be asked for permission to "save-and-close" that tiddler or leave it open (even if that would exceed the specified limit).//
<<<
!!!!!Revisions
<<<
2008.05.01 [2.0.0] added 'limit open tiddlers' feature (with safety check for tiddler in edit mode)
2008.04.06 [1.9.1] corrected 'limit' logic so that //last// N crumbs are shown instead of //first// N crumbs. Also, added chkBreadcrumbsHideHomeLink
2008.04.04 [1.9.0] added chkBreadcrumbsReverse and chk/txtBreadcrumbsLimit
2008.03.29 [1.8.4] in displayTiddler(), get title from tiddler object (if needed). Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.24 [1.8.3] include shadow tiddlers in breadcrumbs list. Also changed settings so that "reordering" breadcrumbs is the default, instead of "trimming" the list
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.26 [1.8.2] documentation cleanup
2007.10.18 [1.8.1] in GetAreas(), use try/catch to avoid "Bad NPObject as private data" fatal error caused when embedded QuickTime player element is accessed by hasClass() function.
2007.10.02 [1.8.0] major documentation and code cleanup. Moved config.breadCrumbs.* to config.macros.breadcrumbs.* to consolidate objects. Also, fixed homeSeparator and crumbSeparator default handling.
2007.10.02 [1.7.0] added config.options.chkShowStartupBreadcrumbs option
2007.09.16 [1.6.1] in getAreas(), removed errant use of 'place' (was causing fatal error when creating default breadcrumbs display element). Also, added chkCreateDefaultBreadcrumbs configuration setting to enable/disable automatic creation of a default breadcrumbs display.
2007.09.16 [1.6.0] re-wrote refresh() to enable multiple display instances, by finding elements with "breadCrumbs" classname. Fallback to fixed ID (="breadCrumbs") is still used for backward-compatibility. move rendering code from refresh() to separate render() function, and added definition for {{{<<breadCrumbs>>}}} macro to support embedding breadcrumbs displays in tiddler content.
2007.09.15 [1.5.9.1] updated documentation
2007.09.15 [1.5.9] defined homeSeparator (" | ") and crumbSeparator (" > ") as object properties so that they can be redefined as desired for different layouts (e.g., using 'newline' for the crumbSeparator will arrange crumbs in a column rather than a row.
2007.06.21 [1.5.8.1] in home(), return false to prevent IE from attempting to navigate away...
2007.05.26 [1.5.8] added support for {{{<<option chkReorderBreadcrumbs>>}}} to toggle trim vs. re-order behavior when visiting previously viewed tiddlers
2007.05.25 [1.5.7] added support for {{{<<option chkShowBreadcrumbs>>}}} to toggle //display// of breadcrumbs
2007.05.24 [1.5.6] in refresh(), remove non-existing tiddler titles from crumb list. Also, hijack removeTiddler() so crumbs can be updated after tiddler is deleted.
2007.04.11 [1.5.5] added optional params to previousTiddler macro handler() to allow alternative label and tooltip text (instead of default "back")
2007.03.02 [1.5.4] in refresh(), for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.02.24 [1.5.3] changed from hijack of onClickTiddlerLink to hijack of displayTiddler() so that ALL displayed tiddlers are recorded in the crumbs, including programmatically displayed tiddlers opened by macros, scripts, etc., (such as [[GotoPlugin]], among many others) in addition to those opened by clicks on links.
2007.02.24 [1.5.2.0] eliminated global space clutter by moving function and data declarations so they are contained inside config.breadCrumbs object.
2007.02.06 [1.5.1] added "previousTiddler" macro (for use in sidebar)
2007.02.05 [1.5.0] added "previousTiddler" toolbar command (aka, "back")
2006.08.04 [1.4.0.1] change spaces to tabs
2006.08.04 [1.4.0] modified from 1.4.0 distro: in refresh(), set {{{display:none/block}}} instead of {{{visibility:hidden/visible}}}. In home(), check for valid crumbArea before setting style.
2006.08.02 [1.4.0] Fixed bug, the redefined onClickTiddlerLink_orig_breadCrumbs works incorrectly on IE
2006.07.20 [1.3.0] Runs compatibly with TW 2.1.0 (rev #403+)
2006.02.07 [1.2.0] change global array breadCrumbs to config.breadCrumbs by Eric's suggestion
2006.02.04 [1.1.0] JSLint checked
2006.02.01 [1.0.0] initial release
<<<
/***
|Name|CheckboxPlugin|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Add checkboxes to your tiddler content|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* by setting/removing tags on specified tiddlers,
* or, by setting custom field values on specified tiddlers,
* or, by saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler content (deprecated)
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Documentation
>see [[CheckboxPluginInfo]]
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
|please see [[CheckboxPluginInfo]] for additional revision details|
2005.12.07 [0.9.0] initial BETA release
<<<
!!!!!Code
***/
//{{{
version.extensions.CheckboxPlugin = {major: 2, minor: 4, revision:0 , date: new Date(2008,1,5)};
//}}}
//{{{
config.checkbox = { refresh: { tagged:true, tagging:true, container:true } };
config.formatters.push( {
name: "checkbox",
match: "\\[[xX_ ][\\]\\=\\(\\{]",
lookahead: "\\[([xX_ ])(=[^\\s\\(\\]{]+)?(\\([^\\)]*\\))?({[^}]*})?({[^}]*})?({[^}]*})?\\]",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// get params
var checked=(lookaheadMatch[1].toUpperCase()=="X");
var id=lookaheadMatch[2];
var target=lookaheadMatch[3];
if (target) target=target.substr(1,target.length-2).trim(); // trim off parentheses
var fn_init=lookaheadMatch[4];
var fn_clickBefore=lookaheadMatch[5];
var fn_clickAfter=lookaheadMatch[6];
var tid=story.findContainingTiddler(w.output); if (tid) tid=tid.getAttribute("tiddler");
var srctid=w.tiddler?w.tiddler.title:null;
config.macros.checkbox.create(w.output,tid,srctid,w.matchStart+1,checked,id,target,config.checkbox.refresh,fn_init,fn_clickBefore,fn_clickAfter);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} );
config.macros.checkbox = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if(!(tiddler instanceof Tiddler)) { // if no tiddler passed in try to find one
var here=story.findContainingTiddler(place);
if (here) tiddler=store.getTiddler(here.getAttribute("tiddler"))
}
var srcpos=0; // "inline X" not applicable to macro syntax
var target=params.shift(); if (!target) target="";
var defaultState=params[0]=="checked"; if (defaultState) params.shift();
var id=params.shift(); if (id && !id.length) id=null;
var fn_init=params.shift(); if (fn_init && !fn_init.length) fn_init=null;
var fn_clickBefore=params.shift();
if (fn_clickBefore && !fn_clickBefore.length) fn_clickBefore=null;
var fn_clickAfter=params.shift();
if (fn_clickAfter && !fn_clickAfter.length) fn_clickAfter=null;
var refresh={ tagged:true, tagging:true, container:false };
this.create(place,tiddler.title,tiddler.title,0,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter);
},
create: function(place,tid,srctid,srcpos,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter) {
// create checkbox element
var c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick=this.onClickCheckbox;
c.srctid=srctid; // remember source tiddler
c.srcpos=srcpos; // remember location of "X"
c.container=tid; // containing tiddler (may be null if not in a tiddler)
c.tiddler=tid; // default target tiddler
c.refresh = {};
c.refresh.container = refresh.container;
c.refresh.tagged = refresh.tagged;
c.refresh.tagging = refresh.tagging;
place.appendChild(c);
// set default state
c.checked=defaultState;
// track state in config.options.ID
if (id) {
c.id=id.substr(1); // trim off leading "="
if (config.options[c.id]!=undefined)
c.checked=config.options[c.id];
else
config.options[c.id]=c.checked;
}
// track state in (tiddlername|tagname) or (fieldname@tiddlername)
if (target) {
var pos=target.indexOf("@");
if (pos!=-1) {
c.field=pos?target.substr(0,pos):"checked"; // get fieldname (or use default "checked")
c.tiddler=target.substr(pos+1); // get specified tiddler name (if any)
if (!c.tiddler || !c.tiddler.length) c.tiddler=tid; // if tiddler not specified, default == container
if (store.getValue(c.tiddler,c.field)!=undefined)
c.checked=(store.getValue(c.tiddler,c.field)=="true"); // set checkbox from saved state
} else {
var pos=target.indexOf("|"); if (pos==-1) var pos=target.indexOf(":");
c.tag=target;
if (pos==0) c.tag=target.substr(1); // trim leading "|" or ":"
if (pos>0) { c.tiddler=target.substr(0,pos); c.tag=target.substr(pos+1); }
if (!c.tag.length) c.tag="checked";
var t=store.getTiddler(c.tiddler);
if (t && t.tags)
c.checked=t.isTagged(c.tag); // set checkbox from saved state
}
}
// trim off surrounding { and } delimiters from init/click handlers
if (fn_init) c.fn_init="(function(){"+fn_init.trim().substr(1,fn_init.length-2)+"})()";
if (fn_clickBefore) c.fn_clickBefore="(function(){"+fn_clickBefore.trim().substr(1,fn_clickBefore.length-2)+"})()";
if (fn_clickAfter) c.fn_clickAfter="(function(){"+fn_clickAfter.trim().substr(1,fn_clickAfter.length-2)+"})()";
c.init=true; c.onclick(); c.init=false; // compute initial state and save in tiddler/config/cookie
},
onClickCheckbox: function(event) {
window.place=this;
if (this.init && this.fn_init) // custom function hook to set initial state (run only once)
{ try { eval(this.fn_init); } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }
if (!this.init && this.fn_clickBefore) // custom function hook to override changes in checkbox state
{ try { eval(this.fn_clickBefore) } catch(e) { displayMessage("Checkbox onClickBefore error: "+e.toString()); } }
if (this.id)
// save state in config AND cookie (only when ID starts with 'chk')
{ config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }
if (this.srctid && this.srcpos>0 && (!this.id || this.id.substr(0,3)!="chk") && !this.tag && !this.field) {
// save state in tiddler content only if not using cookie, tag or field tracking
var t=store.getTiddler(this.srctid); // put X in original source tiddler (if any)
if (t && this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed
t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);
if (!story.isDirty(t.title)) story.refreshTiddler(t.title,null,true);
store.setDirty(true);
}
}
if (this.field) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
// set the field value in the target tiddler
store.setValue(this.tiddler,this.field,this.checked?"true":"false");
// DEBUG: displayMessage(this.field+"@"+this.tiddler+" is "+this.checked);
}
if (this.tag) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
var t=store.getTiddler(this.tiddler);
if (t) {
var tagged=(t.tags && t.tags.indexOf(this.tag)!=-1);
if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }
if (!this.checked && tagged) { t.tags.splice(t.tags.indexOf(this.tag),1); store.setDirty(true); }
}
// if tag state has been changed, update display of corresponding tiddlers (unless they are in edit mode...)
if (this.checked!=tagged) {
if (this.refresh.tagged) {
if (!story.isDirty(this.tiddler)) // the TAGGED tiddler in view mode
story.refreshTiddler(this.tiddler,null,true);
else // the TAGGED tiddler in edit mode (with tags field)
config.macros.checkbox.refreshEditorTagField(this.tiddler,this.tag,this.checked);
}
if (this.refresh.tagging)
if (!story.isDirty(this.tag)) story.refreshTiddler(this.tag,null,true); // the TAGGING tiddler
}
}
if (!this.init && this.fn_clickAfter) // custom function hook to react to changes in checkbox state
{ try { eval(this.fn_clickAfter) } catch(e) { displayMessage("Checkbox onClickAfter error: "+e.toString()); } }
// refresh containing tiddler (but not during initial rendering, or we get an infinite loop!) (and not when editing container)
if (!this.init && this.refresh.container && this.container!=this.tiddler)
if (!story.isDirty(this.container)) story.refreshTiddler(this.container,null,true); // the tiddler CONTAINING the checkbox
return true;
},
refreshEditorTagField: function(title,tag,set) {
var tagfield=story.getTiddlerField(title,"tags");
if (!tagfield||tagfield.getAttribute("edit")!="tags") return; // if no tags field in editor (i.e., custom template)
var tags=tagfield.value.readBracketedList();
if (tags.contains(tag)==set) return; // if no change needed
if (set) tags.push(tag); // add tag
else tags.splice(tags.indexOf(tag),1); // remove tag
for (var t=0;t<tags.length;t++) tags[t]=String.encodeTiddlyLink(tags[t]);
tagfield.value=tags.join(" "); // reassemble tag string (with brackets as needed)
return;
}
}
//}}}
/***
|Name|ClickifyPlugin|
|Source|http://www.TiddlyTools.com/#ClickifyPlugin|
|Documentation|http://www.TiddlyTools.com/#ClickifyPlugin|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|re-compute parameters when a 'command link' macro is clicked|
!!!!!Usage
<<<
Normally, when you use a //computed parameter// in a macro, it's value is determined when the macro is rendered. The {{{<<clickify>>}}} macro can be used to force the macro parameters of an 'on-click' command link (such as created by the {{{<<newTiddler>>}}} macro) to be automatically re-computed when the command link is clicked, rather than when it is initially displayed. This allows use of computed values that depend upon data that may change between the time the macro is rendered and when it's action is actually triggered by a click.
To apply this extended processing to any macro that creates a command link, simply insert the 'clickify' keyword in front of the usual macro name, like this:
{{{
<<clickify macroName param param param ...>>
}}}
<<<
!!!!!Example
<<<
When {{{<<newTiddler>>}}} is clicked, prompt for a title and set default text to current timestamp:
{{{
<<clickify newTiddler title:{{prompt('enter a title','NewTiddler')}} text:{{new Date()}}>>
}}}
><<clickify newTiddler title:{{prompt('enter a title','NewTiddler')}} text:{{new Date()}}>>
<<<
!!!!!Revisions
<<<
2009.02.08 [1.0.1] make sure command link has been rendered before trying to modify it
2009.01.25 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ClickifyPlugin={major: 1, minor: 0, revision: 1, date: new Date(2009,2,8)};
config.macros.clickify={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var cmd='<<'+paramString+'>>';
var e=createTiddlyElement(place,'span');
wikify(cmd.replace(/alert\(|prompt\(|confirm\(/g,'isNaN('),e);
var b=e.getElementsByTagName('a')[0]; if (!b) return;
b.setAttribute('cmd',cmd);
b.onclick=function(ev) {
var cmd=this.getAttribute('cmd');
var e=createTiddlyElement(this.parentNode,'span');
e.style.display='none';
wikify(cmd,e);
e.getElementsByTagName('a')[0].onclick();
this.parentNode.removeChild(e);
}
}
}
//}}}
/%
|Name|CloseOtherTiddlers|
|Source|http://www.TiddlyTools.com/#CloseOtherTiddlers|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|close all other tiddlers when a tiddler is viewed - equivalent to pressing "close others" toolbar command|
Usage: <<tiddler CloseOtherTiddlers>>
%/<script>
var here=story.findContainingTiddler(place); if (!here) return;
story.closeAllTiddlers(here.getAttribute("tiddler"));
</script>
/***
|Name|CollapseTiddlersPlugin|
|Source|http://gensoft.revhost.net/Collapse.html|
|Version|2008.10.05|
|Author|Bradley Meck (modified by ELS)|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|CollapsedTemplate|
|Overrides||
|Description|show/hide content of a tiddler while leaving tiddler title visible|
|ELS 10/5/2008: collapseAll() and expandAll(): added "return false" to button handlers to prevent IE page transition |
|ELS 3/6/2008: refactored code for size reduction, readability, and I18N/L10N-readiness. Also added 'folded' flag to tiddler elements (for use by other plugins that need to know if tiddler is folded (e.g., [[SinglePageModePlugin]]) |
|ELS 10/11/2007: moved [[FoldFirst]] inline script and converted to {{{<<foldFirst>>}}} macro. |
|ELS 9/12/2007: suspend/resume SinglePageMode (SPM/TPM/BPM) when folding/unfolding tiddlers |
|ELS 6/5/2007: add "return false" at the end of each command handler to prevent IE 'page transition' problem. |
|ELS 3/30/2007: add a shadow definition for CollapsedTemplate. Tweak ViewTemplate shadow so "fold/unfold" and "focus" toolbar items automatically appear when using default templates. Remove error check for "CollapsedTemplate" existence, since shadow version will now always work as a fallback. |
|ELS 2/24/2006: added fallback to "CollapsedTemplate" if "WebCollapsedTemplate" is not found |
|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |
***/
//{{{
config.shadowTiddlers.CollapsedTemplate=
"<!--{{{-->\
<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeTiddler closeOthers +editTiddler permalink references jump'></div>\
<div class='title' macro='view title'></div>\
<!--}}}-->";
// automatically tweak shadow ViewTemplate to add "collapseTiddler collapseOthers" commands
config.shadowTiddlers.ViewTemplate=config.shadowTiddlers.ViewTemplate.replace(/closeTiddler/,"collapseTiddler collapseOthers closeTiddler");
config.commands.collapseTiddler = {
text: "fold",
tooltip: "Collapse this tiddler",
collapsedTemplate: "CollapsedTemplate",
webCollapsedTemplate: "WebCollapsedTemplate",
handler: function(event,src,title) {
var e = story.findContainingTiddler(src); if (!e) return false;
// don't fold tiddlers that are being edited!
if(story.isDirty(e.getAttribute("tiddler"))) return false;
var t=config.commands.collapseTiddler.getCollapsedTemplate();
config.commands.collapseTiddler.saveTemplate(e);
config.commands.collapseTiddler.display(title,t);
e.setAttribute("folded","true");
return false;
},
getCollapsedTemplate: function() {
if (readOnly&&store.tiddlerExists(this.webCollapsedTemplate))
return this.webCollapsedTemplate;
else
return this.collapsedTemplate
},
saveTemplate: function(e) {
if (e.getAttribute("savedTemplate")==undefined)
e.setAttribute("savedTemplate",e.getAttribute("template"));
},
// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
display: function(title,t) {
var opt=config.options;
var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
story.displayTiddler(null,title,t);
opt.chkBottomOfPageMode=saveBPM;
opt.chkTopOfPageMode=saveTPM;
opt.chkSinglePageMode=saveSPM;
}
}
config.commands.expandTiddler = {
text: "unfold",
tooltip: "Expand this tiddler",
handler: function(event,src,title) {
var e = story.findContainingTiddler(src); if (!e) return false;
var t = e.getAttribute("savedTemplate");
config.commands.collapseTiddler.display(title,t);
e.setAttribute("folded","false");
return false;
}
}
config.macros.collapseAll = {
text: "collapse all",
tooltip: "Collapse all tiddlers",
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,this.text,this.tooltip,function(){
story.forEachTiddler(function(title,tiddler){
if(story.isDirty(title)) return;
var t=config.commands.collapseTiddler.getCollapsedTemplate();
config.commands.collapseTiddler.saveTemplate(tiddler);
config.commands.collapseTiddler.display(title,t);
tiddler.folded=true;
});
return false;
})
}
}
config.macros.expandAll = {
text: "expand all",
tooltip: "Expand all tiddlers",
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,this.text,this.tooltip,function(){
story.forEachTiddler(function(title,tiddler){
var t=config.commands.collapseTiddler.getCollapsedTemplate();
if(tiddler.getAttribute("template")!=t) return; // re-display only if collapsed
var t=tiddler.getAttribute("savedTemplate");
config.commands.collapseTiddler.display(title,t);
tiddler.folded=false;
});
return false;
})
}
}
config.commands.collapseOthers = {
text: "focus",
tooltip: "Expand this tiddler and collapse all others",
handler: function(event,src,title) {
var e = story.findContainingTiddler(src); if (!e) return false;
story.forEachTiddler(function(title,tiddler) {
if(story.isDirty(title)) return;
var t=config.commands.collapseTiddler.getCollapsedTemplate();
if (e==tiddler) t=e.getAttribute("savedTemplate");
config.commands.collapseTiddler.saveTemplate(tiddler);
config.commands.collapseTiddler.display(title,t);
tiddler.folded=(e!=tiddler);
})
return false;
}
}
// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
handler: function(place,macroName,params,wikifier,paramString,tiddler){
var e=story.findContainingTiddler(place);
if (e.getAttribute("foldedFirst")=="true") return; // already been folded once
var title=e.getAttribute("tiddler")
var t=config.commands.collapseTiddler.getCollapsedTemplate();
config.commands.collapseTiddler.saveTemplate(e);
config.commands.collapseTiddler.display(title,t);
e.setAttribute("folded","true");
e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
return false;
}
}
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::CollapsedToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier wikified'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<span macro="tiddler DottedTiddlerBorder" style='display:none'></span>
<!--}}}-->
{{SecondaryPale BGPrimaryMid{reverse video!}}}
{{outline BGPrimaryPale{in a box!}}}
/***
|Name|CopyTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#CopyTiddlerPlugin|
|Version|3.2.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.3|
|Type|plugin|
|Requires||
|Overrides||
|Description|Quickly create a copy of any existing tiddler|
!!!Usage
<<<
This plugin automatically updates the default (shadow) ToolbarCommands slice definitions to insert the ''copyTiddler'' command (which appears as ''copy'' in the tiddler toolbar).
When you select the ''copy'' command, a new tiddler is opened with a title of "{{{TiddlerName (n)}}}" containing copies of the text/tags/fields from the original //source tiddler//, where ''(n)'' is the next available number (starting with 1, of course). Note: If you copy while //editing// a tiddler, the current values that are displayed in the existing tiddler editor are used (including any unsaved changes you may have made to those values), and the new tiddler is immediately opened for editing.
Note: if you are already using customized toolbar definitions, you will need to manually add the ''copyTiddler'' toolbar command to your existing ToolbarCommands tiddler, e.g.:
{{{
|EditToolbar|... copyTiddler ... |
}}}
The plugin also provides a macro that allows you to embed a ''copy'' command directly in specific tiddler content:
{{{
<<copyTiddler TidderName label:"..." prompt:"...">>
}}}
where
* ''TiddlerName'' (optional)<br>specifies the //source// tiddler to be copied. If omitted, the current containing tiddler (if any) will be copied.
* ''label:"..."'' (optional)<br>specifies text to use for the embedded link (default="copy TiddlerName")
* ''prompt:"..."'' (optional)<br>specifies mouseover 'tooltip' help text for link
//Note: to use non-default label/prompt values with the current containing tiddler, use "" for the TiddlerName//
<<<
!!!Revisions
<<<
2009.03.02 [3.2.3] refactored code (again) to restore use of config.commands.copyTiddler.* custom settings
2009.02.13 [3.2.2] in click(), fix calls to displayTiddler() to use current tiddlerElem and use getTiddlerText() to permit copying of shadow tiddler content
2009.01.30 [3.2.1] fixed handling for copying field values when in edit mode
2009.01.23 [3.2.0] refactored code and added {{{<<copyTiddler TiddlerName>>}}} macro
2008.12.18 [3.1.4] corrected code for finding next (n) value when 'sparse' handling is in effect (thanks to RussThomas for identifying and diagnosing the problem)
2008.11.14 [3.1.3] added optional 'sparse' setting (avoids 'filling in' missing numbers that may have been previously deleted)
2008.11.14 [3.1.2] added optional 'zeroPad' setting
2008.11.14 [3.1.1] moved hard-coded '(n)' regex into 'suffixPattern' object property so it can be customized
2008.09.26 [3.1.0] changed new title generation to use '(n)' suffix instead of 'Copy of' prefix
2008.05.20 [3.0.3] in handler, when copying from VIEW mode, create duplicate array from existing tags array before saving new tiddler.
2007.12.19 [3.0.2] in handler, when copying from VIEW mode, duplicate custom fields before saving new tiddler. Thanks to bug report from Ken Girard.
2007.09.26 [3.0.1] in handler, use findContainingTiddler(src) to get tiddlerElem (and title). Allows 'copy' command to find correct tiddler when transcluded using {{{<<tiddler>>}}} macro or enhanced toolbar inclusion (see [[CoreTweaks]])
2007.06.28 [3.0.0] complete re-write to handle custom fields and alternative view/edit templates
2007.05.17 [2.1.2] use store.getTiddlerText() to retrieve tiddler content, so that SHADOW tiddlers can be copied correctly when in VIEW mode
2007.04.01 [2.1.1] in copyTiddler.handler(), fix check for editor fields by ensuring that found field actually has edit=='text' attribute
2007.02.05 [2.1.0] in copyTiddler.handler(), if editor fields (textfield and/or tagsfield) can't be found (i.e., tiddler is in VIEW mode, not EDIT mode), then get text/tags values from stored tiddler instead of active editor fields. Allows use of COPY toolbar directly from VIEW mode (based on a request from LaurentCharles)
2006.12.12 [2.0.0] completely rewritten so plugin just creates a new tiddler EDITOR with a copy of the current tiddler EDITOR contents, instead of creating the new tiddler in the STORE by copying the current tiddler values from the STORE.
2005.xx.xx [1.0.0] original version by Tim Morgan
<<<
!!!Code
***/
//{{{
version.extensions.CopyTiddlerPlugin= {major: 3, minor: 2, revision: 3, date: new Date(2009,3,2)};
// automatically tweak shadow EditTemplate to add 'copyTiddler' toolbar command (following 'cancelTiddler')
config.shadowTiddlers.ToolbarCommands=config.shadowTiddlers.ToolbarCommands.replace(/cancelTiddler/,'cancelTiddler copyTiddler');
config.commands.copyTiddler = {
text: 'copy',
hideReadOnly: true,
tooltip: 'Make a copy of this tiddler',
notitle: 'this tiddler',
prefix: '',
suffixText: ' (%0)',
suffixPattern: / \(([0-9]+)\)$/,
zeroPad: 0,
sparse: false,
handler: function(event,src,title)
{ return config.commands.copyTiddler.click(src,event); },
click: function(here,ev) {
var tiddlerElem=story.findContainingTiddler(here);
var template=tiddlerElem?tiddlerElem.getAttribute('template'):null;
var title=here.getAttribute('from');
if (!title || !title.length) {
if (!tiddlerElem) return false;
else title=tiddlerElem.getAttribute('tiddler');
}
var root=title.replace(this.suffixPattern,''); // title without suffix
// find last matching title
var last=title;
if (this.sparse) { // don't fill-in holes... really find LAST matching title
var tids=store.getTiddlers('title','excludeLists');
for (var t=0; t<tids.length; t++) if (tids[t].title.startsWith(root)) last=tids[t].title;
}
// get next number (increment from last matching title)
var n=1; var match=this.suffixPattern.exec(last); if (match) n=parseInt(match[1])+1;
var newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]);
// if not sparse mode, find the next hole to fill in...
while (store.tiddlerExists(newTitle)||document.getElementById(story.idPrefix+newTitle))
{ n++; newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]); }
if (!story.isDirty(title)) { // if tiddler is not being EDITED
// duplicate stored tiddler (if any)
var text=store.getTiddlerText(title,'');
var newtags=[]; var newfields={};
var tid=store.getTiddler(title); if (tid) {
for (var t=0; t<tid.tags.length; t++) newtags.push(tid.tags[t]);
store.forEachField(tid,function(t,f,v){newfields[f]=v;},true);
}
store.saveTiddler(newTitle,newTitle,text,
config.options.txtUserName,new Date(),newtags, newfields, true); // clear changecount
story.displayTiddler(tiddlerElem,newTitle,template);
} else {
story.displayTiddler(tiddlerElem,newTitle,template);
var fields=config.commands.copyTiddler.gatherFields(tiddlerElem); // get current editor fields
var newTiddlerElem=document.getElementById(story.idPrefix+newTitle);
for (var f=0; f<fields.length; f++) { // set fields in new editor
if (fields[f].name=='title') fields[f].value=newTitle; // rename title in new tiddler
var fieldElem=config.commands.copyTiddler.findField(newTiddlerElem,fields[f].name);
if (fieldElem) {
if (fieldElem.getAttribute('type')=='checkbox')
fieldElem.checked=fields[f].value;
else
fieldElem.value=fields[f].value;
}
}
}
story.focusTiddler(newTitle,'title');
return false;
},
findField: function(tiddlerElem,field) {
var inputs=tiddlerElem.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++) {
if (inputs[i].getAttribute('type')=='checkbox' && inputs[i].field == field) return inputs[i];
if (inputs[i].getAttribute('type')=='text' && inputs[i].getAttribute('edit') == field) return inputs[i];
}
var tas=tiddlerElem.getElementsByTagName('textarea');
for (var i=0; i<tas.length; i++) if (tas[i].getAttribute('edit') == field) return tas[i];
var sels=tiddlerElem.getElementsByTagName('select');
for (var i=0; i<sels.length; i++) if (sels[i].getAttribute('edit') == field) return sels[i];
return null;
},
gatherFields: function(tiddlerElem) { // get field names and values from current tiddler editor
var fields=[];
// get checkboxes and edit fields
var inputs=tiddlerElem.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++) {
if (inputs[i].getAttribute('type')=='checkbox')
if (inputs[i].field) fields.push({name:inputs[i].field,value:inputs[i].checked});
if (inputs[i].getAttribute('type')=='text')
if (inputs[i].getAttribute('edit')) fields.push({name:inputs[i].getAttribute('edit'),value:inputs[i].value});
}
// get textareas (multi-line edit fields)
var tas=tiddlerElem.getElementsByTagName('textarea');
for (var i=0; i<tas.length; i++)
if (tas[i].getAttribute('edit')) fields.push({name:tas[i].getAttribute('edit'),value:tas[i].value});
// get selection lists (droplist or listbox)
var sels=tiddlerElem.getElementsByTagName('select');
for (var i=0; i<sels.length; i++)
if (sels[i].getAttribute('edit')) fields.push({name:sels[i].getAttribute('edit'),value:sels[i].value});
return fields;
}
};
//}}}
// // MACRO DEFINITION
//{{{
config.macros.copyTiddler = {
label: 'copy',
prompt: 'Make a copy of %0',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var title=params.shift();
params=paramString.parseParams('anon',null,true,false,false);
var label =getParam(params,'label',this.label+(title?' '+title:''));
var prompt =getParam(params,'prompt',this.prompt).format([title||this.notitle]);
var b=createTiddlyButton(place,label,prompt,
function(ev){return config.commands.copyTiddler.click(this,ev)});
b.setAttribute('from',title||'');
},
};
//}}}
/***
|Name|CoreTweaks|
|Source|http://www.TiddlyTools.com/#CoreTweaks|
|Version|use with TW2.4.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2.0|
|Type|plugin|
|Requires||
|Overrides|various|
|Description|a small collection of overrides to TW core functions|
This tiddler contains changes TW core functions to provide minor changes in standard features or behavior. It is hoped that some of these tweaks may someday be added into the TW core, so that these adjustments will be available without needing these add-on definitions.
>''Note: the changes contained in this tiddler are generally applicable for version 2.4.3 of TiddlyWiki.''
>Please view [[CoreTweaksArchive]] for tweaks that may be used with earlier versions of TiddlyWiki.
***/
//{{{
// calculate TW version number - used to determine which tweaks should be applied
var ver=version.major+version.minor/10+version.revision/100;
//}}}
/***
----
***/
// // open tickets:
// // {{block{
/***
!!!890 add conditional test to """<<tiddler>>""" macro
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/890 - OPEN
This tweak extends the {{{<<tiddler>>}}} macro syntax so you can include a javascript-based //test expression// to determine if the tiddler transclusion should be performed:
{{{
<<tiddler TiddlerName if:{{...}} with: param param etc.>>
}}}
If the test is ''true'', then the tiddler is transcluded as usual. If the test is ''false'', then the transclusion is skipped and //no output is produced//.
***/
//{{{
config.macros.tiddler.if_handler = config.macros.tiddler.handler;
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
params = paramString.parseParams('name',null,true,false,true);
if (!getParam(params,'if',true)) return;
this.if_handler.apply(this,arguments);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!831 backslash-quoting for embedding newlines in 'line-mode' formats
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/831 - OPEN
This tweak pre-processes source content to convert 'double-backslash-newline' into {{{<br>}}} before wikify(), so that literal newlines can be embedded in line-mode wiki syntax (e.g., tables, bullets, etc.)
***/
//{{{
window.coreWikify = wikify;
window.wikify = function(source,output,highlightRegExp,tiddler)
{
if (source) arguments[0]=source.replace(/\\\\\n/mg,'<br>');
coreWikify.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!829 """<<tag>>""" macro - sortby parameter
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/829 - OPEN
This tweak adds an optional 'sortby' parameter to the """<<tag tagname label tip sortby>>""" macro, as well as the """<<allTags excludeTag sortby>>""" macro used to generate the sidebar contents 'tags' list. Specify the field on which the contents of each tag popup is to be sorted, with a '+' or '-' prefix to indicate ascending/descending order, respectively.
Example: """<<tag systemConfig "plugins" "list plugins by date, most recent first" "-modified">>"""
Try it: <<tag systemConfig "plugins" "list plugins by date, most recent first" "-modified">>
Similarly, to change the sort order used by the popups from all tags shown in the sidebar contents, edit the [[TagTags]] shadow tiddler and enter: """<<allTags excludeLists -modified>>"""
***/
//{{{
// hijack tag handler() to add 'sortby' attribute to tag button
config.macros.tag.CoreTweaksSortTags_handler=config.macros.tag.handler;
config.macros.tag.handler = function(place,macroName,params)
{
this.CoreTweaksSortTags_handler.apply(this,arguments);
var btn=place.lastChild;
if (params[3]) btn.setAttribute('sortby',params[3]);
}
// tweak <<allTags>> macro to add 'sortby' attribute to each tag button
var fn=config.macros.allTags.handler;
var lines=fn.toString().split('\n');
lines.splice(lines.length-2,0,['if(params[1]) btn.setAttribute("sortby",params[1]);']);
fn=lines.join('\n');
eval('config.macros.allTags.handler='+fn);
// tweak tag event handler to:
// * use tag filtering (only if '[' is present in tag value)
// * use optional 'sortby' attribute
// * save 'sortby' value in 'open all' command (for displaying tiddlers in sorted order)
var fn=onClickTag;
fn=fn.toString().replace(
/store.getTaggedTiddlers\(tag\);/g,
'(tag.indexOf("[")==-1?store.getTaggedTiddlers(tag):store.filterTiddlers(tag));'
+'var sortby=this.getAttribute("sortby");'
+'if(sortby&&sortby.length) store.sortTiddlers(tagged,sortby);'
);
fn=fn.toString().replace(
/openAll.setAttribute\("tag",\s*tag\);/g,
'openAll.setAttribute("tag",tag); openAll.setAttribute("sortby",sortby);'
);
eval(fn);
// tweak 'open all' event handler to use 'sortby' attribute
var fn=onClickTagOpenAll;
fn=fn.toString().replace(
/story.displayTiddlers\(this,\s*tiddlers\);/g,
'var sortby=this.getAttribute("sortby");'
+'if(sortby&&sortby.length) store.sortTiddlers(tiddlers,sortby);'
+'story.displayTiddlers(this,tiddlers);'
);
eval(fn);
//}}}
// // }}}}}}// // {{block{
/***
!!!824 ~WindowTitle - alternative to combined ~SiteTitle/~SiteSubtitle in window titlebar
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/824 - OPEN
This tweak allows definition of an optional [[WindowTitle]] tiddler that, when present, provides alternative text for display in the browser window's titlebar, instead of using the combined text content from [[SiteTitle]] and [[SiteSubtitle]] (which will still be displayed as usual in the TiddlyWiki document header area).
Note: this ticket replaces http://trac.tiddlywiki.org/ticket/401 (closed), which proposed using a custom [[PageTitle]] tiddler for this purpose. ''If you were using the previous '401 ~PageTitle' tweak, you will need to rename [[PageTitle]] to [[WindowTitle]] to continue to use your custom window title text''
***/
//{{{
config.shadowTiddlers.WindowTitle='<<tiddler SiteTitle>> - <<tiddler SiteSubtitle>>';
window.getPageTitle=function() { return wikifyPlain('WindowTitle'); }
store.addNotification('WindowTitle',refreshPageTitle); // so title stays in sync with tiddler changes
//}}}
// // }}}}}}// // {{block{
/***
!!!784 allow tiddler sections in TiddlyLinks to be used as anchor points for intra-tiddler scrolling.
>http://trac.tiddlywiki.org/ticket/784 - OPEN - Please see separate [[SectionLinksPlugin]]
!!!683 FireFox3 Import bug: 'browse' button replacement
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/683 - OPEN
The web standard 'type=file' input control that has been used as a local path/file picker for TiddlyWiki no longer works as expected in FireFox3, which has, for security reasons, limited javascript access to this control so that *no* local filesystem path information can be revealed, even when it is intentional and necessary, as it is with TiddlyWiki. This tweak provides alternative HTML source that patches the backstage import panel. It replaces the 'type=file' input control with a text+button combination of controls that invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
>Note: ''This tweak also requires http://trac.tiddlywiki.org/ticket/604 - cross-platform askForFilename()''
***/
//{{{
if (window.Components) {
var fixhtml='<input name="txtBrowse" style="width:30em"><input type="button" value="..."'
+' onClick="window.browseForFilename(this.previousSibling,true)">';
var cmi=config.macros.importTiddlers;
cmi.step1Html=cmi.step1Html.replace(/<input type='file' size=50 name='txtBrowse'>/,fixhtml);
}
merge(config.messages,{selectFile:'Please enter or select a file'}); // ready for I18N translation
window.browseForFilename=function(target,mustExist) { // note: both params are optional
var msg=config.messages.selectFile;
if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
// get local path for current document
var path=getLocalPath(document.location.href);
var p=path.lastIndexOf('/'); if (p==-1) p=path.lastIndexOf('\\'); // Unix or Windows
if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
var file=''
var result=window.askForFilename(msg,path,file,mustExist); // requires #604
if (target && result.length) // set target field and trigger handling
{ target.value=result; target.onchange(); }
return result;
}
//}}}
// // }}}}}}// // {{block{
/***
!!!604 cross-platform askForFilename()
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/604 - OPEN
invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
***/
//{{{
window.askForFilename=function(msg,path,file,mustExist) {
var r = window.mozAskForFilename(msg,path,file,mustExist);
if(r===null || r===false)
r = window.ieAskForFilename(msg,path,file,mustExist);
if(r===null || r===false)
r = window.javaAskForFilename(msg,path,file,mustExist);
if(r===null || r===false)
r = prompt(msg,path+file);
return r||'';
}
window.mozAskForFilename=function(msg,path,file,mustExist) {
if(!window.Components) return false;
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel)
var result=picker.file.persistentDescriptor;
}
catch(ex) { displayMessage(ex.toString()); }
return result;
}
window.ieAskForFilename=function(msg,path,file,mustExist) {
if(!config.browser.isIE) return false;
try {
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
return s.showOpen()?s.FileName:'';
}
catch(ex) { displayMessage(ex.toString()); }
return result;
}
window.javaAskForFilename=function(msg,path,file,mustExist) {
if(!document.applets['TiddlySaver']) return false;
// TBD: implement java-based askFile(...) function
try { return document.applets['TiddlySaver'].askFile(msg,path,file,mustExist); }
catch(ex) { displayMessage(ex.toString()); }
}
//}}}
// // }}}}}}// // {{block{
/***
!!!657 wrap tabs onto multiple lines
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/657 - OPEN
This tweak inserts an extra space element following each tab, allowing them to wrap onto multiple lines if needed.
***/
//{{{
config.macros.tabs.handler = function(place,macroName,params)
{
var cookie = params[0];
var numTabs = (params.length-1)/3;
var wrapper = createTiddlyElement(null,'div',null,'tabsetWrapper ' + cookie);
var tabset = createTiddlyElement(wrapper,'div',null,'tabset');
tabset.setAttribute('cookie',cookie);
var validTab = false;
for(var t=0; t<numTabs; t++) {
var label = params[t*3+1];
var prompt = params[t*3+2];
var content = params[t*3+3];
var tab = createTiddlyButton(tabset,label,prompt,this.onClickTab,'tab tabUnselected');
createTiddlyElement(tab,'span',null,null,' ',{style:'font-size:0pt;line-height:0px'}); // ELS
tab.setAttribute('tab',label);
tab.setAttribute('content',content);
tab.title = prompt;
if(config.options[cookie] == label)
validTab = true;
}
if(!validTab)
config.options[cookie] = params[1];
place.appendChild(wrapper);
this.switchTab(tabset,config.options[cookie]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!628 hide 'no such macro' errors
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/628 - OPEN
When invoking a macro that is not defined, this tweak prevents the display of the 'error in macro... no such macro' message. This is useful when rendering tiddler content or templates that reference macros that are defined by //optional// plugins that have not been installed in the current document.
<<option chkHideMissingMacros>> hide 'no such macro' error messages
***/
//{{{
if (config.options.chkHideMissingMacros===undefined)
config.options.chkHideMissingMacros=false;
window.coreTweaks_missingMacro_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
if (!config.macros[macro] || !config.macros[macro].handler)
if (config.options.chkHideMissingMacros) return;
window.coreTweaks_missingMacro_invokeMacro.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!608/609/610 toolbars - toggles, separators and transclusion
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/608 - OPEN (more/less toggle)
http://trac.tiddlywiki.org/ticket/609 - OPEN (separators)
http://trac.tiddlywiki.org/ticket/610 - OPEN (wikify tiddler/slice/section content)
This combination tweak extends the """<<toolbar>>""" macro to add use of '<' to insert a 'less' menu command (the opposite of '>' == 'more'), as well as use of '*' to insert linebreaks and "!" to insert a vertical line separator between toolbar items. In addition, this tweak add the ability to use references to tiddlernames, slices, or sections and render their content inline within the toolbar, allowing easy creation of new toolbar commands using TW content (such as macros, links, inline scripts, etc.)
To produce a one-line style, with "less" at the end, use
| ViewToolbar| foo bar baz > yabba dabba doo < |
resulting in:
{{{
foo bar baz more
and
foo bar baz yabba dabba doo less
}}}
or to use the CoreTweaks? two-line style:
| ViewToolbar| foo bar baz > < * yabba dabba doo |
which would produce:
{{{
foo bar baz more
and
foo bar baz less
yabba dabba doo
}}}
''see [[ToolbarCommands]] for examples of how these features can be used''
***/
//{{{
merge(config.macros.toolbar,{
moreLabel: 'more\u25BC',
morePrompt: 'Show additional commands',
lessLabel: '\u25C4less',
lessPrompt: 'Hide additional commands',
separator: '|'
});
config.macros.toolbar.onClickMore = function(ev) {
var e = this.nextSibling;
e.style.display = 'inline'; // show menu
this.style.display = 'none'; // hide button
return false;
};
config.macros.toolbar.onClickLess = function(ev) {
var e = this.parentNode;
var m = e.previousSibling;
e.style.display = 'none'; // hide menu
m.style.display = 'inline'; // show button
return false;
};
config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
for(var t=0; t<params.length; t++) {
var c = params[t];
switch(c) {
case '!': // ELS - SEPARATOR (added)
createTiddlyText(place,this.separator);
break;
case '*': // ELS - LINEBREAK (added)
createTiddlyElement(place,'BR');
break;
case '<': // ELS - LESS COMMAND (added)
var btn = createTiddlyButton(place,
this.lessLabel,this.lessPrompt,config.macros.toolbar.onClickLess,'moreCommand');
break;
case '>':
var btn = createTiddlyButton(place,
this.moreLabel,this.morePrompt,config.macros.toolbar.onClickMore,'moreCommand');
var e = createTiddlyElement(place,'span',null,'moreCommand');
e.style.display = 'none';
place = e;
break;
default:
var theClass = '';
switch(c.substr(0,1)) {
case '+':
theClass = 'defaultCommand';
c = c.substr(1);
break;
case '-':
theClass = 'cancelCommand';
c = c.substr(1);
break;
}
if(c in config.commands)
this.createCommand(place,c,tiddler,theClass);
else { // ELS - WIKIFY TIDDLER/SLICE/SECTION (added)
if (c.substr(0,1)=='~') c=c.substr(1); // ignore leading ~
var txt=store.getTiddlerText(c);
if (txt) {
// trim any leading/trailing newlines
txt=txt.replace(/^\n*/,'').replace(/\n*$/,'');
// trim PRE format wrapper if any
txt=txt.replace(/^\{\{\{\n/,'').replace(/\n\}\}\}$/,'');
// render content into toolbar
wikify(txt,createTiddlyElement(place,'span'),null,tiddler);
}
} // ELS - end WIKIFY CONTENT
break;
}
}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!529 IE fixup - case-sensitive element lookup of tiddler elements
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/529 - OPEN
This tweak hijacks the standard browser function, document.getElementById(), to work-around the case-INsensitivity error in Internet Explorer (all versions up to and including IE7) //''Note: This tweak is only applied when using IE, and only for lookups of rendered tiddler elements within the containing 'tiddlerDisplay' element.''//
***/
//{{{
if (config.browser.isIE) {
document.coreTweaks_coreGetElementById=document.getElementById;
document.getElementById=function(id) {
var e=document.coreTweaks_coreGetElementById(id);
if (!e || !e.parentNode || e.parentNode.id!='tiddlerDisplay') return e;
for (var i=0; i<e.parentNode.childNodes.length; i++)
if (id==e.parentNode.childNodes[i].id) return e.parentNode.childNodes[i];
return null;
};
}
//}}}
// // }}}}}}// // {{block{
/***
!!!471 'creator' field for new tiddlers
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/471 - OPEN
This tweak HIJACKS the core's saveTiddler() function to automatically add a 'creator' field to a tiddler when it is FIRST created. You can use """<<view creator>>""" (or """<<view creator wikified>>""" if you prefer) to show this value embedded directly within the tiddler content, or {{{<span macro="view creator"></span>}}} in the ViewTemplate and/or EditTemplate to display the creator value in each tiddler.
***/
//{{{
// hijack saveTiddler()
TiddlyWiki.prototype.CoreTweaks_creatorSaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
var existing=store.tiddlerExists(title);
var tiddler=this.CoreTweaks_creatorSaveTiddler.apply(this,arguments);
if (!existing) store.setValue(title,'creator',config.options.txtUserName);
return tiddler;
}
//}}}
// // }}}}}}
// // closed: won't fix //(leave as core tweaks)//
// // {{block{
/***
!!!637 TiddlyLink tooltip - custom formatting
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/637 - CLOSED: WON'T FIX
This tweak modifies the tooltip format that appears when you mouseover a link to a tiddler. It adds an option to control the date format, as well as displaying the size of the tiddler (in bytes)
Tiddler link tooltip format:
{{stretch{<<option txtTiddlerLinkTootip>>}}}
^^where: %0=title, %1=username, %2=modification date, %3=size in bytes, %4=description slice^^
Tiddler link tooltip date format:
{{stretch{<<option txtTiddlerLinkTooltipDate>>}}}
***/
//{{{
config.messages.tiddlerLinkTooltip='%0 - %1, %2 (%3 bytes) - %4';
config.messages.tiddlerLinkTooltipDate='DDD, MMM DDth YYYY 0hh12:0mm AM';
config.options.txtTiddlerLinkTootip=
config.options.txtTiddlerLinkTootip||config.messages.tiddlerLinkTooltip;
config.options.txtTiddlerLinkTooltipDate=
config.options.txtTiddlerLinkTooltipDate||config.messages.tiddlerLinkTooltipDate;
Tiddler.prototype.getSubtitle = function() {
var modifier = this.modifier;
if(!modifier) modifier = config.messages.subtitleUnknown;
var modified = this.modified;
if(modified) modified = modified.formatString(config.options.txtTiddlerLinkTooltipDate);
else modified = config.messages.subtitleUnknown;
var descr=store.getTiddlerSlice(this.title,'Description')||'';
return config.options.txtTiddlerLinkTootip.format([this.title,modifier,modified,this.text.length,descr]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!607 add HREF link on permaview command
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/607 - CLOSED: WON'T FIX
This tweak automatically sets the HREF for the 'permaview' sidebar command link so you can use the 'right click' context menu for faster, easier bookmarking. Note that this does ''not'' automatically set the permaview in the browser's current location URL... it just sets the HREF on the command link. You still have to click the link to apply the permaview.
***/
//{{{
config.macros.permaview.handler = function(place)
{
var btn=createTiddlyButton(place,this.label,this.prompt,this.onClick);
addEvent(btn,'mouseover',this.setHREF);
addEvent(btn,'focus',this.setHREF);
};
config.macros.permaview.setHREF = function(event){
var links = [];
story.forEachTiddler(function(title,element) {
links.push(String.encodeTiddlyLink(title));
});
var newURL=document.location.href;
var hashPos=newURL.indexOf('#');
if (hashPos!=-1) newURL=newURL.substr(0,hashPos);
this.href=newURL+'#'+encodeURIComponent(links.join(' '));
}
//}}}
// // }}}}}}// // {{block{
/***
!!!458 add permalink-like HREFs on internal TiddlyLinks
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/458 - CLOSED: WON'T FIX
This tweak assigns a permalink-like HREF to internal Tiddler links (which normally do not have any HREF defined). This permits the link's context menu (right-click) to include 'open link in another window/tab' command. Based on a request from Dustin Spicuzza.
***/
//{{{
window.coreTweaks_createTiddlyLink=window.createTiddlyLink;
window.createTiddlyLink=function(place,title,includeText,theClass,isStatic,linkedFromTiddler,noToggle)
{
// create the core button, then add the HREF (to internal links only)
var link=window.coreTweaks_createTiddlyLink.apply(this,arguments);
if (!isStatic)
link.href=document.location.href.split('#')[0]+'#'+encodeURIComponent(String.encodeTiddlyLink(title));
return link;
}
//}}}
// // }}}}}}
// // <<foldHeadings>>
/***
|Name|DOMViewerPlugin|
|Source|http://www.TiddlyTools.com/#DOMViewerPlugin|
|Version|1.8.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|display internal Document Object Model for wiki-formatted content|
Whenever TiddlyWiki renders a given tiddler, it creates a 'tree' of DOM (Document Object Model) elements that represent the information that is displayed by the browser. You can use the ''DOMViewer'' macro to examine the internal DOM elements that are produced by TiddlyWiki's formatter (the 'wikifier'), or elements directly produced by embedded macros that create custom formatted output. This can be particularly helpful when trying to fine tune the layout and appearance of your tiddler content.
!!!!! Usage/Example:
<<<
syntax: {{{<<DOMViewer rows:nn indent:xxxx inline path elementID|tiddlertitle>>}}}
DOMViewer creates a textarea control and reports the DOM tree for the current 'insertion point' where the DOMViewer macro is being placed. ''inline'' flag uses TiddlyWiki rendering instead of textarea control. ''path'' shows the relative location of each child element in the DOM tree, using subscript notation, ''[elementID or tiddlertitle]'' displays DOM elements starting from the node with the specified ID. If that ID is not found in the DOM tree, the macro attempts to open a tiddler with that title and then displays the DOM elements that were rendered for that tiddler.
<<DOMViewer tiddlerDOMViewerPlugin>>
<<<
!!!!!Revisions
<<<
2007.09.27 [1.8.0] split DOMViewer macro into separate plugin (see [[TidIDEPlugin]])
|please see [[TidIDEPluginInfo]] for additional revision details|
2006.04.15 [0.5.0] Initial ALPHA release. Converted from inline script.
<<<
!!!!!Code
***/
//{{{
version.extensions.DOMViewerPlugin= {major: 1, minor: 8, revision: 0, date: new Date(2006,9,27)};
config.macros.DOMViewer = {
handler: function(place,macroName,params) {
// set default params
var inline=false;
var theRows=15;
var theIndent="| ";
var showPath=false;
var theTarget=place;
// unpack options parameters
if (params[0]=='inline') { inline=true; theIndent=">"; params.shift(); }
if (params[0]&&(params[0].substr(0,7)=="indent:")) { theIndent=params[0].substr(7); params.shift(); }
if (params[0]&&(params[0].substr(0,5)=="rows:")) { theRows=params[0].substr(5); params.shift(); }
if (params[0]=='path') { showPath=true; params.shift(); }
if (params[0]) {
theTarget=document.getElementById(params[0]);
if (!theTarget)
if (store.getTiddler(params[0])!=undefined) {
theTarget=document.getElementById("tiddler"+params[0]);
if (!theTarget && confirm("DOMViewer asks:\n\nIs it OK to open tiddler '"+params[0]+"' now?")) {
story.displayTiddler(null,params[0],1,null,null,false);
theTarget=document.getElementById("tiddler"+params[0]);
}
}
params.shift();
}
// generate and display DOM tree
if (inline) {
var out=this.getNodeTree(theTarget,theIndent,showPath,inline);
wikify(out,place);
}
else {
var out=this.getNodeTree(theTarget,theIndent,showPath,inline);
var css=".DOMViewer{width:100%;font-size:8pt;color:inherit;background:transparent;border:0px;}";
setStylesheet(css,"DOMViewerStylesheet");
var theTextArea=createTiddlyElement(place,"textarea",null,"DOMViewer",out);
theTextArea.rows=theRows;
theTextArea.cols=60;
theTextArea.wrap="off";
theTextArea.theTarget=theTarget;
theTextArea.theIndent=theIndent;
theTextArea.showPath=showPath;
}
},
getNodeTree: function(theNode,theIndent,showPath,inline,thePrefix,thePath) {
if (!theNode) return "";
if (!thePrefix) thePrefix="";
if (!thePath) thePath="";
var mquote='"'+(inline?"{{{":"");
var endmquote=(inline?"}}}":"")+'"';
// generate output for this node
var out = thePrefix;
if (showPath && thePath.length)
out += (inline?"//":"")+thePath.substr(1)+":"+(inline?"//":"")+"\r\n"+thePrefix;
if (theNode.className=="DOMViewer")
return out+'[DOMViewer]\r\n'; // avoid self-referential recursion
out += (inline?"''":"")+theNode.nodeName.toUpperCase()+(inline?"''":"");
if (theNode.nodeName=="#text")
out += ' '+mquote+theNode.nodeValue.replace(/\n/g,'\\n')+endmquote;
if (theNode.className)
out += ' class='+mquote+theNode.className+endmquote;
if (theNode.type)
out += ' type='+mquote+theNode.type+endmquote;
if (theNode.id)
out += ' id='+mquote+theNode.id+endmquote;
if (theNode.name)
out += " "+theNode.name+(theNode.value?"="+mquote+theNode.value+endmquote:"");
if (theNode.href)
out += ' href='+mquote+theNode.href+endmquote;
if (theNode.src)
out += ' src='+mquote+theNode.src+endmquote;
if (theNode.attributes && theNode.getAttribute("tiddlyLink")!=undefined)
out += ' tiddler='+mquote+theNode.getAttribute("tiddlyLink")+endmquote;
out += "\r\n";
// recursively generate output for child nodes
thePath=thePath+"."+theNode.nodeName.toLowerCase();
thePrefix=theIndent+thePrefix;
for (var i=0;i<theNode.childNodes.length;i++) {
var thisChild=theNode.childNodes.item(i);
var theNum=(inline?"~~":"(")+(i+1)+(inline?"~~":")");
out += this.getNodeTree(thisChild,theIndent,showPath,inline,thePrefix,thePath+theNum);
}
return out;
}
}
//}}}
FunMouseMoveDemo
FunMouseMoveDemoMultiImageTrickery
FlockingDemo
QuadrantEffect
RaphaelEmbeddedImageDemo10
TiddlyWiki FireFox TiddlyTools TiddlyTech HowTo $1
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Tiddler.prototype.autoLinkWikiWords, 'wikiLink' formatter|
|Options|##Configuration|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links. To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles. You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace. This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.
Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)
<<<
!!!!!Configuration
<<<
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Revisions
<<<
2008.07.22 [1.6.0] hijack tiddler changed() method to filter disabled wiki words from internal links[] array (so they won't appear in the missing tiddlers list)
2007.06.09 [1.5.0] added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
2006.12.31 [1.4.0] in formatter, test for chkDisableNonExistingWikiLinks
2006.12.09 [1.3.0] in formatter, test for excluded wiki words specified in DisableWikiLinksList
2006.12.09 [1.2.2] fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).
2006.12.09 [1.2.1] revised logic for handling links in shadow content
2006.12.08 [1.2.0] added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
2006.05.24 [1.1.0] added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
2006.02.05 [1.0.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};
if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";
// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
config.formatters[i].coreHandler=config.formatters[i].handler;
config.formatters[i].handler=function(w) {
// supress any leading "~" (if present)
var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
var title=w.matchText.substr(skip);
var exists=store.tiddlerExists(title);
var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
// check for excluded Tiddler
if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// check for specific excluded wiki words
var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
if (t && t.length && t.indexOf(w.matchText)!=-1)
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// if not disabling links from shadows (default setting)
if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
return this.coreHandler(w);
// check for non-existing non-shadow tiddler
if (config.options.chkDisableNonExistingWikiLinks && !exists)
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// if not enabled, just do standard WikiWord link formatting
if (!config.options.chkDisableWikiLinks)
return this.coreHandler(w);
// just return text without linking
w.outputText(w.output,w.matchStart+skip,w.nextMatch)
}
}
Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
// if all automatic links are not disabled, just return results from core function
if (!config.options.chkDisableWikiLinks)
return this.coreAutoLinkWikiWords.apply(this,arguments);
return false;
}
Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
this.disableWikiLinks_changed.apply(this,arguments);
// remove excluded wiki words from links array
var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
if (t.length) for (var i=0; i<t.length; i++)
if (this.links.contains(t[i]))
this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
This package helps you to //''discover''// the connections and interrelationships between the tiddlers contained in a TiddlyWiki document. This is particularly useful where the contents of a document are not already known, such as when a document has been edited by several people, or has gradually changed over an extended period of time.
There is a lot of interesting data available from the census bureau in
the form of generalized ArcView Shapefiles
http://www.census.gov/geo/www/cob/shape_info.html
arcview is an open format from ESRI (esri.com) sort of like pdf in its use
There are interesting things that can be done e.g. organizing census
data within zip
http://www.census.gov/geo/www/cob/zt_metadata.html
and lots or other things one could do
There is free software to do it
It's a google project http://code.google.com/p/geodjango-basic-apps/
http://code.djangoproject.com/wiki/GeoDjango &
http://geodjango.org/
that's based on a free python project to do it
http://www.djangoproject.com/
a good article on it
http://www.geoconnexion.com/uploads/opensource_14_intv7i9.pdf
& slide show
http://geodjango.org/presentations/GeoDjango%20-%20A%20world-class%20Geographic%20Web%20Framework%20(DjangoCon%20-%20Sept.%206,%202008).pdf
I think there's a pony in this for putting together something very
useful and profitable (with contributions back to the community).
<script>
var tid=story.findContainingTiddler(place);
if (tid) tid.style.border="1px dotted "+store.getTiddlerSlice("ColorPalette","SecondaryDark");
</script>
/***
|Name|EditFieldPlugin|
|Source|http://www.TiddlyTools.com/#EditFieldPlugin|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|extend core edit macro for use in ViewTemplates or direct embedding in tiddler content|
This plugin extends the core {{{<<edit fieldname #OfLines>>}}} macro for use in a ViewTemplate or directly embedded in tiddler content.
!!!!!Usage
<<<
Normally, when you edit a tiddler, any changes you make are saved (or discarded) when you press the "done" (or "cancel") command in the tiddler editor's toolbar. However, when in a 'view mode' context, these command items are not available, and so the TiddlyWiki core commands cannot be used to trigger the 'save/discard' handling once you have decided that your input activities are complete.
This plugin extends the core's input field handling, so that when:
{{{
<<edit fieldname numberOfLines>>
}}}
is used in tiddler content, or:
{{{
<span macro='edit fieldname numberOfLines'></span>
}}}
is used in a ViewTemplate definition, you will be automatically prompted to save/discard your changes (if any) as soon as you press ENTER or move away ('onBlur' handling) from that input field (if the content has been changed). You can also abandon your changes to input field content by pressing ESCAPE (you will be asked to confirm before discarding changes).
You can change the browser-defined default width of an input field by surrounding the edit field by using custom CSS class wrappers, defined in the StyleSheet tiddler. For example:
{{{
.stretch input { width:99%; }
.stretch textarea { width:99%; }
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }
}}}
>Note: the 'fixed' width values in the above example are only approximate. The actual width rendered by your browser will vary based on the current font-family and font-size that is applied to the field.
<<<
!!!!!Examples
<<<
*"""<<edit foobar>>"""<br> <<edit foobar>>
*"""{{threechar{<<edit foobar>>}}}"""<br> {{threechar{<<edit foobar>>}}}
*"""<<edit tags>>"""<br> <<edit tags>>
*"""{{stretch{<<edit text 10>>}}}"""<br> {{stretch{<<edit text 10>>}}}
<<<
!!!!!Revisions
<<<
2007.08.22 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.EditFieldPlugin= {major: 1, minor: 0, revision: 0, date: new Date(2007,8,22)};
config.macros.edit.editFieldPlugin_savedHandler=config.macros.edit.handler;
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
// let core create edit field
config.macros.edit.editFieldPlugin_savedHandler.apply(this,arguments);
// get edit field or textarea
var fieldType=params[0]=="text"||params[1]?'textarea':'input';
var ins=place.getElementsByTagName(fieldType);
var e=ins[ins.length-1];
if (fieldType=="textarea" && params[1]) e.style.height=params[1]+"em"; // force height for textarea field
// if viewing tiddler, add autosave handlers
var here=story.findContainingTiddler(place);
if (here && here.getAttribute("template").indexOf("ViewTemplate")!=-1) {
story.setDirty(tiddler.title,false); // clear tiddler ("dirty") flag set by core when field was created
var field=e.getAttribute("edit");
var val=store.getValue(tiddler.title,field); if (!val) val="";
e.setAttribute("currval",val); // remember starting value
e.setAttribute("tiddler",tiddler.title); // remember target tiddler
e.onkeydown=function(ev) { // ENTER key=save (for single-line edit fields only)
var event=ev?ev:window.event;
this.setAttribute("keyCode",event.keyCode); // save last keyCode for blur() handler
if (event.keyCode==13 && this.nodeName.toUpperCase()!="TEXTAREA")
this.saveField(); // save input to tiddler field
}
e.onblur=function(ev) { // accept or reject input when focus moves away from field
var event=ev?ev:window.event;
var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
var field=this.getAttribute("edit");
if (this.value!=this.getAttribute("currval")) { // if value has changed
if (this.getAttribute("keyCode")=="27") { // if user pressed ESC
var msg="Abandon changes to %0@%1?".format([field,tid]);
if (confirm(msg)) this.value=this.getAttribute("currval"); // reset to starting value
this.id=new Date().getTime(); // set unique ID
setTimeout("document.getElementById('"+this.id+"').focus()",1); // restore focus (after blur completes)
} else { // other focus change events
var msg="Save changes to %0@%1?".format([field,tid]);
if (confirm(msg)) this.saveField(); // save input to tiddler field, then continue blur
else this.value=this.getAttribute("currval"); // reset to starting value, then continue blur
}
}
};
e.saveField=function() { // save input value to tiddler field (create, touch or rename tiddler as needed)
var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
var field=this.getAttribute("edit");
var title=(field=="title")?this.value:tid;
if (!title.length) { // prevent blank tiddler title from being used
this.value=this.getAttribute("currval"); // reset to starting value
this.id=new Date().getTime(); // set unique ID
setTimeout("displayMessage('Please enter a non-blank value')",1); // notify user
setTimeout("document.getElementById('"+this.id+"').focus()",2); // set focus to continue editing
return;
}
var t=store.getTiddler(tid);
store.suspendNotifications();
var anim=config.options.chkAnimate; config.options.chkAnimate=false; // suspend animation
var who=t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
store.saveTiddler(t?tid:title,title,t?t.text:"",who,when,t?t.tags:[],t?t.fields:null);
store.setValue(title,field,this.value); // save value in tiddler field
this.setAttribute("currval",this.value); // remember new starting value
if (tid!=title) // if title changed, display renamed tiddler in place of current one
{ story.displayTiddler(story.findContainingTiddler(this),title); story.closeTiddler(tid); }
if (field=="text") // if tiddler content changed, refresh tiddler display
{ story.refreshTiddler(title,null,true); }
config.options.chkAnimate=anim; // resume animation
store.resumeNotifications();
store.notify(title,true);
};
}
}
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<span macro='resizeEditor'></span>
<span macro='setUserName'></span>
<!--}}}-->
/%
|Name|EmbedTiddlers|
|Source|http://www.TiddlyTools.com/#EmbedTiddlers|
|Version|1.2.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|transclude a list of tiddlers in a specific order|
usage:
<<tiddler EmbedTiddlers with: "TiddlerName [[TiddlerName with spaces]] TiddlerName ...">>
or
<<tiddler EmbedTiddlers with: @TiddlerName>>
or
<<tiddler EmbedTiddlers with: =tagValue sortby>>
where
@TiddlerName
specifies a //separate// tiddler containing the space-separated,
bracketed list of tiddlers to transclude (e.g., DefaultTiddlers)
=tagValue
embeds all tiddlers tagged with the indicated value
sortby (optional)
specifies a tiddler field for sorting the results (default="title")
"+" or "-" prefix indicates the sort direction (ascending/descending),
e.g., "-modified" sorts by tiddler modification date, most recent first
Note: if MatchTagsPlugin is installed, you can use FULL BOOLEAN LOGIC EXPRESSIONS
in place of the "tagValue" (following the leading "="). However, because the boolean
expression will contain spaces, it MUST be enclosed in [[...]], like this:
<<tiddler EmbedTiddlers with: [[=settings AND NOT systemConfig]]>>
%/<script>
var list='$1';
var sortby='title'; if ('$2'!='$'+'2') sortby='$2';
var tids=[];
if (list.substr(0,1)=='=') {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tagged=store.sortTiddlers(fn.apply(store,[list.substr(1)]),sortby);
for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
} else {
if (list.substr(0,1)=='@') list=store.getTiddlerText(list.substr(1),'');
var tids=list.readBracketedList();
}
var out='';
for (var i=0; i<tids.length; i++) out+='<<tiddler [['+tids[i]+']]>>';
return out;
</script>
<<tiddler {{tiddler.title+'##render'}} with: {{tiddler.title+'##PathData'}} Path1 100% 500 black>>
<<tiddler {{tiddler.title+'##render'}} with: {{tiddler.title+'##PathData'}} Path2 100% 300 #abc>>/%
!PathData
red
M240,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
blue
M220,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
green
M200,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
!end
!render
<script>
// USAGE: <<tiddler ##render with: SourceTiddlerName raphaelObjectID width height backgroundColor>>
var lines=store.getTiddlerText('$1').split('\n');
var holder = createTiddlyElement(place,'div',null,'holder_$2');
var r = Raphael(holder, '$3', '$4');
var out=[]; for (var i=0; i<lines.length; i=i+2) {
var color=lines[i]; var path=lines[i+1];
var x=r.path({id: '$2_'+color, stroke: color, 'stroke-width': '5' }, path);
}
</script><html><style>
.holder_$2 { border:1px solid; background:$5; }
</style></html>
!end
%/
{{holder{<script>
var s=place.style; s.position='absolute'; s.top=s.left='0px'; s.width='100%';
var text = 'TiddlyTools';
var attr = {"font": '18pt "Verdana"', opacity: 0.5};
var R = Raphael(place,200,200);
var txt = [];
txt[0] = R.text(100, 100, text).attr(attr).attr("fill", "#0f0");
txt[1] = R.text(100, 100, text).attr(attr).attr("fill", "#f00");
txt[2] = R.text(100, 100, text).attr(attr).attr("fill", "#00f");
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
txt[0].rotate(diff); txt[1].rotate(diff*1.5); txt[2].rotate(diff*2);
this.lastX=x;
};
</script>}}}
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.8.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|select and extract tiddlers from your ~TiddlyWiki documents and save them to a separate file|
This plugin provides a control panel to select/export tiddlers to another TiddlyWiki document. You can also save just the selected tiddlers as a TiddlyWiki '~PureStore' file (much smaller files!), or create plain-text output for manual copy/paste into other applications or XML files that can be used to publish an ~RSS news feed.
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2009.02.26 [2.8.5] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 [0.0.0] development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 8, revision: 5, date: new Date(2009,2,26)};
// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';
// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
config.tasks.exportTask = {
text:'export',
tooltip:'Export selected tiddlers to another file',
content:'<<exportTiddlers inline>>'
}
config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}
config.macros.exportTiddlers = {
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'export tiddlers',
prompt: 'Copy selected tiddlers to an export document',
okmsg: '%0 tiddlers written to %1',
failmsg: 'An error occurred while creating %1',
mergeprompt: '%0\nalready contains tiddler definitions.\n'
+'\nPress OK to add new/revised tiddlers to current file contents.'
+'\nPress Cancel to completely replace file contents',
mergestatus: 'Merged %0 new/revised tiddlers with %1 previously saved tiddlers',
statusmsg: '%0 tiddler%1 - %2 selected for export',
newdefault: 'export.html',
datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss', // for 'filter date/time' edit fields
type_TW: 'tw', type_PS: 'ps', type_TX: 'tx', type_NF: 'nf', // file type tokens
type_map: { // map filetype param alternatives/abbreviations to token values
tiddlywiki:'tw', tw:'tw', wiki: 'tw',
purestore: 'ps', ps:'ps', store:'ps',
plaintext: 'tx', tx:'tx', text: 'tx',
newsfeed: 'nf', nf:'nf', xml: 'nf', rss:'nf'
},
handler: function(place,macroName,params) {
if (params[0]!='inline')
{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
var panel=this.createPanel(place);
panel.style.position='static';
panel.style.display='block';
},
createPanel: function(place) {
var panel=this.$('exportPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(this.css,'exportTiddlers');
panel=createTiddlyElement(place,'span','exportPanel',null,null)
panel.innerHTML=this.html;
this.initFilter();
this.refreshList(0);
var fn=this.$('exportFilename');
if (window.location.protocol=='file:' && !fn.value.length) {
// get new target path/filename
var newPath=getLocalPath(window.location.href);
var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\');
if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
fn.value=newPath+this.newdefault;
}
return panel;
},
togglePanel: function(e) { var e=e||window.event;
var cme=config.macros.exportTiddlers; // abbrev
var parent=resolveTarget(e).parentNode;
var panel=cme.$('exportPanel');
if (panel==undefined || panel.parentNode!=parent)
panel=cme.createPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,'none'));
else
panel.style.display=isOpen?'none':'block' ;
if (panel.style.display!='none') { // update list and set focus when panel is made visible
cme.refreshList(0);
cme.$('exportFilename').focus();
cme.$('exportFilename').select();
}
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
},
css: '\
#exportPanel {\
display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;\
}\
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#exportPanel table { \
width:100%; border:0px; padding:0px; margin:0px;\
font-size:8pt; line-height:110%; background:transparent;\
}\
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\
#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }\
#exportPanel textarea { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }\
#exportPanel .box { \
border:1px solid black; padding:3px; margin-bottom:5px; \
background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }\
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\
#exportPanel .rad { width:auto;border:0 }\
#exportPanel .chk { width:auto;border:0 }\
#exportPanel .btn { width:auto; }\
#exportPanel .btn1 { width:98%; }\
#exportPanel .btn2 { width:48%; }\
#exportPanel .btn3 { width:32%; }\
#exportPanel .btn4 { width:24%; }\
#exportPanel .btn5 { width:19%; }\
',
html: '\
<!-- target path/file -->\
<div>\
export to path/filename:<br>\
<input type="text" id="exportFilename" size=40 style="width:93%"><input \
type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%" \
onclick="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">\
</div>\
<!-- output format -->\
<div>\
output file format:\
<select id="exportFormat" size=1>\
<option value="TW">TiddlyWiki HTML document (includes core code)</option>\
<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>\
<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>\
<option value="NF">RSS NewsFeed XML file</option>\
</select>\
</div>\
<!-- notes -->\
<div>\
notes:<br>\
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea> \
</div>\
<!-- list of tiddlers -->\
<table><tr align="left"><td>\
select:\
<a href="JavaScript:;" id="exportSelectAll"\
onclick="config.macros.exportTiddlers.process(this)" title="select all tiddlers">\
all </a>\
<a href="JavaScript:;" id="exportSelectChanges"\
onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">\
changes </a> \
<a href="JavaScript:;" id="exportSelectOpened"\
onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">\
opened </a> \
<a href="JavaScript:;" id="exportSelectRelated"\
onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">\
related </a> \
<a href="JavaScript:;" id="exportToggleFilter"\
onclick="config.macros.exportTiddlers.process(this)" title="show/hide selection filter">\
filter </a> \
</td><td align="right">\
<a href="JavaScript:;" id="exportListSmaller"\
onclick="config.macros.exportTiddlers.process(this)" title="reduce list size">\
– </a>\
<a href="JavaScript:;" id="exportListLarger"\
onclick="config.macros.exportTiddlers.process(this)" title="increase list size">\
+ </a>\
</td></tr></table>\
<select id="exportList" multiple size="10" style="margin-bottom:5px;"\
onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">\
</select><br>\
</div><!--box-->\
<!-- selection filter -->\
<div id="exportFilterPanel" style="display:none">\
<table><tr align="left"><td>\
selection filter\
</td><td align="right">\
<a href="JavaScript:;" id="exportHideFilter"\
onclick="config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>\
</td></tr></table>\
<div class="box">\
<input type="checkbox" class="chk" id="exportFilterStart" value="1"\
onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
<select size=1 id="exportFilterStartBy" \
onchange="config.macros.exportTiddlers.showFilterFields(this);">\
<option value="0">today</option>\
<option value="1">yesterday</option>\
<option value="7">a week ago</option>\
<option value="30">a month ago</option>\
<option value="file">file date</option>\
<option value="other">other (mm/dd/yyyy hh:mm)</option>\
</select>\
</td><td width="50%">\
<input type="text" id="exportStartDate" onfocus="this.select()"\
onchange="config.macros.exportTiddlers.$(\'exportFilterStartBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\
onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
<select size=1 id="exportFilterEndBy" \
onchange="config.macros.exportTiddlers.showFilterFields(this);">\
<option value="0">today</option>\
<option value="1">yesterday</option>\
<option value="7">a week ago</option>\
<option value="30">a month ago</option>\
<option value="file">file date</option>\
<option value="other">other (mm/dd/yyyy hh:mm)</option>\
</select>\
</td><td width="50%">\
<input type="text" id="exportEndDate" onfocus="this.select()"\
onchange="config.macros.exportTiddlers.$(\'exportFilterEndBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id=exportFilterTags value="1"\
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>\
<input type="text" id="exportTags" onfocus="this.select()">\
<input type="checkbox" class="chk" id=exportFilterText value="1"\
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match titles/tiddler text<br>\
<input type="text" id="exportText" onfocus="this.select()">\
</div> <!--box-->\
</div> <!--panel-->\
<!-- action buttons -->\
<div style="text-align:center">\
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"\
id="exportFilter" value="apply filter">\
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"\
id="exportStart" value="export tiddlers">\
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"\
id="exportDelete" value="delete tiddlers">\
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"\
id="exportClose" value="close">\
</div><!--center-->\
',
process: function(which) { // process panel control interactions
var theList=this.$('exportList'); if (!theList) return;
var count = 0;
var total = store.getTiddlers('title').length;
switch (which.id) {
case 'exportFilter':
count=this.filterExportList();
var panel=this.$('exportFilterPanel');
if (count==-1) { panel.style.display='block'; break; }
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
break;
case 'exportStart':
this.go();
break;
case 'exportDelete':
this.deleteTiddlers();
break;
case 'exportHideFilter':
case 'exportToggleFilter':
var panel=this.$('exportFilterPanel')
panel.style.display=(panel.style.display=='block')?'none':'block';
break;
case 'exportSelectChanges':
var lastmod=new Date(document.lastModified);
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
theList.options[t].selected=(tiddler.modified>lastmod);
count += (tiddler.modified>lastmod)?1:0;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no unsaved changes');
break;
case 'exportSelectAll':
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
theList.options[t].selected=true;
count += 1;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,count);
break;
case 'exportSelectOpened':
for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
var tiddlerDisplay=this.$('tiddlerDisplay');
for (var t=0; t<tiddlerDisplay.childNodes.length;t++) {
var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
for (var i=0; i<theList.options.length; i++) {
if (theList.options[i].value!=tiddler) continue;
theList.options[i].selected=true; count++; break;
}
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no tiddlers currently opened');
break;
case 'exportSelectRelated':
// recursively build list of related tiddlers
function getRelatedTiddlers(tid,tids) {
var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
tids.push(t.title);
if (!t.linksUpdated) t.changed();
for (var i=0; i<t.links.length; i++)
if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
return tids;
}
// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
var tids=[];
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
// select related tiddlers (includes original selected tiddlers)
for (var i=0; i<theList.options.length; i++)
theList.options[i].selected=tids.contains(theList.options[i].value);
this.displayStatus(tids.length,total);
break;
case 'exportListSmaller': // decrease current listbox size
var min=5;
theList.size-=(theList.size>min)?1:0;
break;
case 'exportListLarger': // increase current listbox size
var max=(theList.options.length>25)?theList.options.length:25;
theList.size+=(theList.size<max)?1:0;
break;
case 'exportClose':
this.$('exportPanel').style.display='none';
break;
}
},
displayStatus: function(count,total) {
var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
clearMessage(); displayMessage(txt);
return txt;
},
refreshList: function(selectedIndex) {
var theList = this.$('exportList'); if (!theList) return;
// get the sort order
var sort;
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) sort='modified';
if (selectedIndex==1) sort='title';
if (selectedIndex==2) sort='modified';
if (selectedIndex==3) sort='modifier';
if (selectedIndex==4) sort='tags';
// unselect headings and count number of tiddlers actually selected
var count=0;
for (var t=5; t < theList.options.length; t++) {
if (!theList.options[t].selected) continue;
if (theList.options[t].value!='')
count++;
else { // if heading is selected, deselect it, and then select and count all in section
theList.options[t].selected=false;
for ( t++; t<theList.options.length && theList.options[t].value!=''; t++) {
theList.options[t].selected=true;
count++;
}
}
}
// disable 'export' and 'delete' buttons if no tiddlers selected
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
// show selection count
var tiddlers = store.getTiddlers('title');
if (theList.options.length) this.displayStatus(count,tiddlers.length);
// if a [command] item, reload list... otherwise, no further refresh needed
if (selectedIndex>4) return;
// clear current list contents
while (theList.length > 0) { theList.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
theList.options[i++]=
new Option(tiddlers.length+' tiddlers in document', '',false,false);
theList.options[i++]=
new Option(((sort=='title' )?'>':indent)+' [by title]', '',false,false);
theList.options[i++]=
new Option(((sort=='modified')?'>':indent)+' [by date]', '',false,false);
theList.options[i++]=
new Option(((sort=='modifier')?'>':indent)+' [by author]', '',false,false);
theList.options[i++]=
new Option(((sort=='tags' )?'>':indent)+' [by tags]', '',false,false);
// output the tiddler list
switch(sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modifier':
case 'modified':
var tiddlers = store.getTiddlers(sort);
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = '';
if (sort=='modified') theSection=tiddler.modified.toLocaleDateString();
if (sort=='modifier') theSection=tiddler.modifier;
if (theSection != lastSection) {
theList.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
theList.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
theList.selectedIndex=selectedIndex; // select current control item
this.$('exportStart').disabled=true;
this.$('exportDelete').disabled=true;
this.displayStatus(0,tiddlers.length);
},
askForFilename: function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var filetype=this.$('exportFormat').value.toLowerCase();
var defext='html';
if (filetype==this.type_TX) defext='txt';
if (filetype==this.type_NF) defext='xml';
var file=this.newdefault.replace(/html$/,defext);
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension=defext;
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|XML files|*.xml|';
s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
},
initFilter: function() {
this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
this.$('exportFilterEnd').checked=false; this.$('exportEndDate').value='';
this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
this.$('exportFilterText').checked=false; this.$('exportText').value='';
this.showFilterFields();
},
showFilterFields: function(which) {
var show=this.$('exportFilterStart').checked;
this.$('exportFilterStartBy').style.display=show?'block':'none';
this.$('exportStartDate').style.display=show?'block':'none';
var val=this.$('exportFilterStartBy').value;
this.$('exportStartDate').value
=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterStartBy') && (val=='other'))
this.$('exportStartDate').focus();
var show=this.$('exportFilterEnd').checked;
this.$('exportFilterEndBy').style.display=show?'block':'none';
this.$('exportEndDate').style.display=show?'block':'none';
var val=this.$('exportFilterEndBy').value;
this.$('exportEndDate').value
=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterEndBy') && (val=='other'))
this.$('exportEndDate').focus();
var show=this.$('exportFilterTags').checked;
this.$('exportTags').style.display=show?'block':'none';
var show=this.$('exportFilterText').checked;
this.$('exportText').style.display=show?'block':'none';
},
getFilterDate: function(val,id) {
var result=0;
switch (val) {
case 'file':
result=new Date(document.lastModified);
break;
case 'other':
result=new Date(this.$(id).value);
break;
default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
var oneday=86400000;
if (id=='exportStartDate')
result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
else
result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
break;
}
return result;
},
filterExportList: function() {
var theList = this.$('exportList'); if (!theList) return -1;
var filterStart=this.$('exportFilterStart').checked;
var val=this.$('exportFilterStartBy').value;
var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
var filterEnd=this.$('exportFilterEnd').checked;
var val=this.$('exportFilterEndBy').value;
var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
var filterTags=this.$('exportFilterTags').checked;
var tags=this.$('exportTags').value;
var filterText=this.$('exportFilterText').checked;
var text=this.$('exportText').value;
if (!(filterStart||filterEnd||filterTags||filterText)) {
alert('Please set the selection filter');
this.$('exportFilterPanel').style.display='block';
return -1;
}
if (filterStart&&filterEnd&&(startDate>endDate)) {
var msg='starting date/time:\n'
msg+=startDate.toLocaleString()+'\n';
msg+='is later than ending date/time:\n'
msg+=endDate.toLocaleString()
alert(msg);
return -1;
}
// if filter by tags, get list of matching tiddlers
// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
// otherwise use getTaggedTiddlers() for simple tag matching
if (filterTags) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var t=fn.apply(store,[tags]);
var tagged=[];
for (var i=0; i<t.length; i++) tagged.push(t[i].title);
}
// scan list and select tiddlers that match all applicable criteria
var total=0;
var count=0;
for (var i=0; i<theList.options.length; i++) {
// get item, skip non-tiddler list items (section headings)
var opt=theList.options[i]; if (opt.value=='') continue;
// get tiddler, skip missing tiddlers (this should NOT happen)
var tiddler=store.getTiddler(opt.value); if (!tiddler) continue;
var sel=true;
if ( (filterStart && tiddler.modified<startDate)
|| (filterEnd && tiddler.modified>endDate)
|| (filterTags && !tagged.contains(tiddler.title))
|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
sel=false;
opt.selected=sel;
count+=sel?1:0;
total++;
}
return count;
},
deleteTiddlers: function() {
var list=this.$('exportList'); if (!list) return;
var tids=[];
for (i=0;i<list.length;i++)
if (list.options[i].selected && list.options[i].value.length)
tids.push(list.options[i].value);
if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
msg+='Removing this tiddler may cause unexpected results. Are you sure?'
if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
store.removeTiddler(tid.title);
story.closeTiddler(tid.title);
}
store.resumeNotifications();
alert(tids.length+' tiddlers deleted');
this.refreshList(0); // reload listbox
store.notifyAll(); // update page display
},
go: function() {
if (window.location.protocol!='file:') // make sure we are local
{ displayMessage(config.messages.notFileUrlError); return; }
// get selected tidders, target filename, target type, and notes
var list=this.$('exportList'); if (!list) return;
var tids=[]; for (var i=0; i<list.options.length; i++) {
var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
var tid=store.getTiddler(opt.value); if (!tid) continue;
tids.push(tid);
}
if (!tids.length) return; // no tiddlers selected
var target=this.$('exportFilename').value.trim();
if (!target.length) {
displayMessage('A local target path/filename is required',target);
return;
}
var filetype=this.$('exportFormat').value.toLowerCase();
var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
var total={val:0};
var out=this.assembleFile(target,filetype,tids,notes,total);
var link='file:///'+target.replace(/\\/g,'/');
var samefile=link==decodeURIComponent(window.location.href);
var p=getLocalPath(document.location.href);
if (samefile) {
if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
}
var ok=saveFile(target,out);
displayMessage((ok?this.okmsg:this.failmsg).format([total.val,target]),link);
},
plainTextHeader:
'// Source'+':\n//\t%0\n'
+'// Title:\n//\t%1\n'
+'// Subtitle:\n//\t%2\n'
+'// Created:\n//\t%3 by %4\n'
+'// Application:\n//\tTiddlyWiki %5 / %6 %7\n',
plainTextTiddler:
'\n// ----- %0 (by %1 on %2) -----\n\n%3',
plainTextFooter:
'',
newsFeedHeader:
'<'+'?xml version="1.0"?'+'>\n'
+'<rss version="2.0">\n'
+'<channel>\n'
+'<title>%1</title>\n'
+'<link>%0</link>\n'
+'<description>%2</description>\n'
+'<language>en-us</language>\n'
+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
+'<pubDate>%3</pubDate>\n'
+'<lastBuildDate>%3</lastBuildDate>\n'
+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
newsFeedTiddler:
'\n%0\n',
newsFeedFooter:
'</channel></rss>',
pureStoreHeader:
'<html><body>'
+'<style type="text/css">'
+' #storeArea {display:block;margin:1em;}'
+' #storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
+' #pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
+'</style>'
+'<div id="pureStoreHeading">'
+' TiddlyWiki "PureStore" export file<br>'
+' Source'+': <b>%0</b><br>'
+' Title: <b>%1</b><br>'
+' Subtitle: <b>%2</b><br>'
+' Created: <b>%3</b> by <b>%4</b><br>'
+' TiddlyWiki %5 / %6 %7<br>'
+' Notes:<hr><pre>%8</pre>'
+'</div>'
+'<div id="storeArea">',
pureStoreTiddler:
'%0\n%1',
pureStoreFooter:
'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
assembleFile: function(target,filetype,tids,notes,total) {
var revised='';
var now = new Date().toLocaleString();
var src=convertUnicodeToUTF8(document.location.href);
var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
var twver = version.major+'.'+version.minor+'.'+version.revision;
var v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
switch (filetype) {
case this.type_TX: // plain text
var header=this.plainTextHeader.format(headerargs);
var footer=this.plainTextFooter;
break;
case this.type_NF: // news feed (XML)
headerargs[0]=store.getTiddlerText('SiteUrl','');
var header=this.newsFeedHeader.format(headerargs);
var footer=this.newsFeedFooter;
break;
case this.type_PS: // PureStore (no code)
var header=this.pureStoreHeader.format(headerargs);
var footer=this.pureStoreFooter;
break;
case this.type_TW: // full TiddlyWiki
default:
var currPath=getLocalPath(window.location.href);
var original=loadFile(currPath);
if (!original) { displayMessage(config.messages.cantSaveError); return; }
var posDiv = locateStoreArea(original);
if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
var footer = '\n'+original.substr(posDiv[1]);
break;
}
var out=this.getData(target,filetype,tids);
var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
// if full TW, insert page title and language attr, and reset all MARKUP blocks...
if (filetype==this.type_TW) {
var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
revised=updateLanguageAttribute(revised);
var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
revised=updateMarkupBlock(revised,'PRE-HEAD',
titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
revised=updateMarkupBlock(revised,'POST-HEAD',
titles.contains('MarkupPostHead')?'MarkupPostHead':null);
revised=updateMarkupBlock(revised,'PRE-BODY',
titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
revised=updateMarkupBlock(revised,'POST-SCRIPT',
titles.contains('MarkupPostBody')?'MarkupPostBody':null);
}
total.val=out.length;
return revised;
},
formatItem: function(s,f,t,u) {
if (f==this.type_TW)
var r=s.getSaver().externalizeTiddler(s,t);
if (f==this.type_PS)
var r=config.macros.exportTiddlers.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
if (f==this.type_NF)
var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
if (f==this.type_TX)
var r=this.plainTextTiddler.format([t.title,t.modifier,t.modified.toLocaleString(),t.text]);
return r||'';
},
getData: function(target,filetype,tids) {
// output selected tiddlers and gather list of titles (for use with merge)
var out=[]; var titles=[];
var url=store.getTiddlerText('SiteUrl','');
for (var i=0; i<tids.length; i++) {
out.push(this.formatItem(store,filetype,tids[i],url));
titles.push(tids[i].title);
}
// if TW or PureStore format, ask to merge with existing tiddlers (if any)
if (filetype==this.type_TW || filetype==this.type_PS) {
var text=loadFile(target);
if (text && text.length) {
var remoteStore=new TiddlyWiki();
if (remoteStore.importTiddlyWiki(convertUTF8ToUnicode(text))
&& confirm(this.mergeprompt.format([target]))) {
var existing=remoteStore.getTiddlers('title');
for (var i=0; i<existing.length; i++)
if (!titles.contains(existing[i].title))
out.push(this.formatItem(remoteStore,filetype,existing[i],url));
displayMessage(this.mergestatus.format([tids.length,out.length-tids.length]));
}
}
}
return out;
}
}
//}}}
/***
|Name|ExportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.8.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for ExportTiddlersPlugin|
ExportTiddlersPlugin provides an interactive control panel that allows you to select and extract tiddlers from your ~TiddlyWiki document, and write them into another file, using one of several different file formats:
* ~TiddlyWiki - a complete, stand-alone, standard TiddlyWiki HTML document
* ~PureStore - a small HTML archive file containing tiddler data only (no core code)
* ~PlainText - a simple TXT text file with tiddler source listings
* ~NewsFeed - an XML-format file that can be published for RSS syndication.
!!!!!Usage
<<<
{{{
<<exportTiddlers>> (sidebar menu item)
<<exportTiddlers inline>> (embedded control panel)
}}}
Inline control panel (live):
<<exportTiddlers inline>>
Optional "special tiddlers" used by this plugin:
* SiteUrl<br>URL for official server-published version of document being viewed (used in XML export). Default: //none//
<<<
!!!!!Revisions
<<<
2009.02.26 [2.8.5] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.29 [2.8.4] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.26 [2.8.3] in go(), if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 [2.8.2] in assembleFile(), make sure that markup block is updated if corresponding Markup* tiddler is exported.
2008.09.19 [2.8.1] in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.11 [2.8.0] extensive code cleanup: moved all global functions inside macro object. Re-wrote file generator and I/O to support TiddlyWiki, PlainText, PureStore, and NewsFeed file formats. Replaced inline 'match tags' code with use of getMatchingTiddlers() from [[MatchTagsPlugin]] (if installed), with fallback to core getTaggedTiddlers() otherwise.
2008.05.27 [2.7.0] added ability to 'merge' with existing export file. Also, revised 'matchTags' functionality to be more robust and more efficient
2008.05.12 [2.6.1] automatically add 'export' task to backstage (moved from BackstageTweaks)
2008.03.10 [2.6.0] added "delete tiddlers" button
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.10 [2.5.1] removed debugging alert messages from promptForExportFilename()
2007.10.31 [2.5.0] code reduction: removed incomplete/unused interface and supporting functions for exporting directly to http, https or ftp servers. Plugin now supports exporting to local file only. Transferring that file is now left to other mechanisms, such as email attachments, FTP uploads, portable media (USB,CD,DVD,...), etc. Also, updated "save as TiddlyWiki document" output to correctly generate TW2.2 compatible file format.
2007.10.30 [2.4.2] added automatic shadow tiddler definition for [[ExportTiddlers]]
2007.07.16 [2.4.1] in exportTWHeader(), reset HTML source 'markup' so installed markup is NOT copied to new file.
2007.06.30 [2.4.0] added "select related tiddlers" feature. Recursively scans the tiddler links[] info to find all tiddlers referenced by any of the currently selected tiddler, and then selects them all (including the original tiddlers). //Theoretically//, selecting all related tiddlers should ensure that the exported file contains all tiddlers needed to properly render all of the originally selected tiddlers.
2007.04.19 [2.3.0] in exportData(), pass SiteURL value as param to saveToRss(). Fixes 'undefined' appearing in tiddler link in XML output. Also, in refreshExportList(), added 'sort by tags'. Also, added 'group select'... selecting a heading (date,author,tag) auto-selects all tiddlers in that group.
2007.03.02 [2.2.6] in onClickExportButton(), when selecting open tiddlers for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.03.01 [2.2.5] removed hijack of store.saveChanges() (was catching save on http:, but there are other solutions that do a much better job of handling save to server.
2006.11.08 [2.2.4] added promptForExportFilename() and replaced type="file" control with edit field + browse button ("...").
2006.10.12 [2.2.3] in exportDIVFooter(), write POST-BODY-START/END markers for compatibility with TW2.1 core file format. Based on report from Jose Gonzalez.
2006.05.11 [2.2.2] in createExportPanel, removed call to addNotification() to no longer auto-refresh the list every time a tiddler is changed. Instead, call refreshExportList(0) only when the panel is first rendered and each time it is made visible. Prevents unneeded feedback messages from being displayed and increases overall document performance, since the listbox is no longer being updated each time a tiddler is saved.
2006.05.02 [2.2.1] Use displayMessage() to show number of selected tiddlers instead of updating listbox 'header' item after each selection. Prevents awkward 'scroll-to-top' behavior that made multi-select via ctrl-click nearly impossible. Reported by Paul Reiber.
2006.04.29 [2.2.0] New features: "Notes" are free-form text that is inserted in the header of a TWDIV export file. When exporting to a server, the "notify" checkbox indicates that server-side script processing should send an email message when the export file is stored on the server. Comma-separated addresses may be typed in, or pre-defined in the SiteNotify tiddler.
2006.03.29 [2.1.3] added calls to convertUnicodeToUTF8() for generated output, so it better handles international characters.
2006.02.12 [2.1.2] added var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)
2006.02.04 [2.1.1] added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables
2006.02.02 [2.1.0] Added support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.
2006.01.21 [2.0.1] Defer initial panel creation and only register a notification function when panel first is created
in saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.
2005.12.27 [2.0.0] Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
2005.12.24 [0.9.5] Minor adjustments to CSS to force correct link colors regardless of TW stylesheet selection
2005.12.16 [0.9.4] Dynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.
2005.11.15 [0.9.2] added non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers
2005.11.08 [0.9.1] moved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.
2005.10.28 [0.9.0] added 'select opened tiddlers' feature. Based on a suggestion by Geoff Slocock
2005.10.24 [0.8.3] Corrected hijack of 'save changes' when using http:
2005.10.18 [0.8.2] added AJAX functions
2005.10.18 [0.8.1] Corrected timezone handling when filtering for date ranges. Improved error checking/reporting for invalid filter values and filters that don't match any tiddlers. Exporting localfile-to-localfile is working for IE and FF. Exporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF. Cross-domain exporting (localfile/server-to-server) is under development. More style tweaks, minor text changes and some assorted layout cleanup.
2005.10.17 [0.8.0] First pre-release.
2005.10.16 [0.7.0] filter by tags
2005.10.15 [0.6.0] filter by title/text
2005.10.14 [0.5.0] export to local file (DIV or XML)
2005.10.14 [0.4.0] filter by start/end date
2005.10.13 [0.3.0] panel interaction
2005.10.11 [0.2.0] panel layout
2005.10.10 [0.1.0] code framework
2005.10.09 [0.0.0] development started
<<<
/***
|Name|FAQViewerPlugin|
|Source|http://www.TiddlyTools.com/#FAQViewerPlugin|
|Version|1.4.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|select and display FAQ tiddlers from a droplist, sorted by date|
!!!!!Usage
<<<
{{{<<faqViewer startwith:TiddlerName tagname classname sortby dateformat>>}}}
where:
*''startwith:TiddlerName'' (optional)<br>
*''tagname'' (optional)<br>specifies the set of tiddlers to include in the FAQ list (default='faq')
*''classname'' (optional)<br>specifies a CSS class to be applied surrounding the FAQ tiddler content
*''sortby'' (optional)<br>specifies the name of a tiddler field to sort by. Use "+" or "-" as a prefix on the fieldname to indicate ascending or descending order, respectively (default='-modified'). You can also use the special keyword, ''Description'', to sort alphabetically based on the value of a slice named "Description", that can be defined in each FAQ tiddler. Note: if a particular FAQ tiddler has no description slice, the title of the tiddler is used as a fallback.
*''dateformat'' (optional)<br>specifies the formatting for dates displayed in the list. Use " " (a single space) to suppress the date display.
examples:
{{{<<faqViewer>>}}}
{{smallform small{<<faqViewer>>}}}
{{{<<faqViewer package outline +title " ">>}}}
{{smallform small{<<faqViewer package outline +title " ">>}}}
<<<
!!!!!Revisions
<<<
2008.10.21 [1.4.2] removed animation (was interfering with "overflow:scroll" CSS)
2008.09.30 [1.4.1] corrected filter by tag handling broken in 1.4.0
2008.09.29 [1.4.0] added optional "startwith:TiddlerName" param
2008.09.24 [1.3.1] added animation when opening/closing faq content panel
2008.09.21 [1.3.0] sort by "description" slice values. also added "previous" and "next" buttons for sequential viewing of FAQ articles
2008.09.20 [1.2.0] optional 'sortby' and 'dateformat' params
2008.01.20 [1.1.0] support for alternative 'target' tag instead of "faq" (default)
2007.10.15 [1.0.0] converted to true plugin
2007.02.01 [0.0.0] inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.FAQViewerPlugin={major: 1, minor: 4, revision: 1, date: new Date(2008,9,30)};
config.shadowTiddlers.FAQViewer="{{smallform{<<faqViewer>>}}}";
config.macros.faqViewer= {
dateFormat:"YYYY.0MM.0DD 0hh:0mm - ",
startparam: "startwith:",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// create form
if (params[0]&¶ms[0].substr(0,this.startparam.length)==this.startparam)
{ var startwith=params[0].substr(this.startparam.length); params.shift(); }
var console=createTiddlyElement(place,"span");
console.innerHTML=this.html.replace(/%classname%/,params[1]||"");
this.go(console.getElementsByTagName("form")[0],startwith, params[0],params[2],params[3]);
},
go: function(f,startwith,targetType,sortby,dateformat) {
var targetType=targetType||"faq";
var sortby=sortby||"-modified";
var dateformat=dateformat||this.dateFormat;
var datefield=sortby.indexOf('created')!=-1?'created':'modified';
f.targetType.value=targetType;
f.sortBy.value=sortby;
f.dateFmt.value=dateformat;
var lists=f.getElementsByTagName("select"); if (!lists.length) return;
var FAQList=lists[0]; var taglist=lists[1];
while (FAQList.options[0]) FAQList.options[0]=null; // empty FAQList
if (f.search.value!=f.search.defaultValue) var find=f.search.value;
var tiddlers=store.getTaggedTiddlers(targetType,"modified").reverse();
if (tiddlers && sortby) {
if (sortby.indexOf('escription')==-1) // sort by tiddler field
tiddlers=store.sortTiddlers(tiddlers,sortby);
else
tiddlers.sort(function(a,b){ // sort by description slice (or title, if no slice)
var da=store.getTiddlerSlice(a.title,"Description")||a.title;
var db=store.getTiddlerSlice(b.title,"Description")||b.title;
return da==db?0:(da>db?+1:-1);
});
}
var matchcount=0; var tags=[]; var selectedIndex=0;
FAQList.options[0]=new Option("select an item...","",false,false);
for (var i=0; i<tiddlers.length; i++) {
for (var t=0; t<tiddlers[i].tags.length; t++)
tags.pushUnique(tiddlers[i].tags[t]); // collect other tags
if (find && find.length && tiddlers[i].text.indexOf(find)==-1) continue;
if (taglist.value && taglist.value.length && !tiddlers[i].tags.contains(taglist.value)) continue;
matchcount++;
var d=store.getTiddlerSlice(tiddlers[i].title,"Description")||tiddlers[i].title;
d=tiddlers[i][datefield].formatString(dateformat)+d;
FAQList.options[FAQList.options.length]=new Option(d,tiddlers[i].title,false,false);
if (tiddlers[i].title==startwith) selectedIndex=i+1;
}
FAQList.options[0].text="select an item... ["+tiddlers.length+" item"+(tiddlers.length!=1?"s":"");
if (find && find.length || taglist.value.length)
FAQList.options[0].text+=", "+matchcount+" match"+(matchcount!=1?"es":"");
FAQList.options[0].text+="]";
FAQList.selectedIndex=selectedIndex;
if (selectedIndex) config.macros.faqViewer.show(f,startwith);
if (!taglist.options.length) { // only load tag list the first time, since it doesn't change
while (taglist.options[0]) taglist.options[0]=null; // empty taglist
taglist.options[0]=new Option("filter by tag...","",false,false);
var tagcount=0;
for (var t=0; t<tags.length; t++) {
if (tags[t].toLowerCase()==targetType) continue;
if (tags[t].indexOf("exclude")!=-1) continue;
taglist.options[taglist.options.length]
=new Option(tags[t],tags[t],false,false);
tagcount++;
}
if (!tagcount) taglist.options[taglist.options.length]
=new Option("no category tags found","",false,false);
}
},
show: function(f,v) {
var fmt=this.faqlayout;
if (store.getTaggedTiddlers(v).length) fmt=this.packagelayout;
var target=f.getElementsByTagName("div")[0];
removeChildren(target);
wikify(fmt.format([v]),target);
target.style.display="block";
f.prev.parentNode.style.display="block";
f.next.focus();
f.done.disabled=!v.length;
},
faqlayout:
"{{toolbar floatright fine{//now viewing: //[[%0]] }}}<<tiddler [[%0]]>>",
packagelayout:
"{{toolbar floatright fine{//now viewing: //[[%0]] }}}\n"
+"{{floatright borderleft fine{<<tagging [[%0]]>>}}}<<tiddler [[%0]]>>{{clear block{}}}",
html:
"<form onsubmit='return false;' style='display:inline;margin:0;padding:0;white-space:nowrap;'><!-- \
--><input type='hidden' name='targetType' value='faq'><!-- \
--><input type='hidden' name='sortBy' value='-modified'><!-- \
--><input type='hidden' name='dateFmt' value='YYYY.0MM.0DD 0hh:0mm - '><!-- \
--><select name='list' size=1 style='width:50%' \
onchange='if (!this.value.length) this.form.done.onclick(); \
else config.macros.faqViewer.show(this.form,this.value);'><!-- \
--></select><!-- \
--><select name='taglist' size=1 style='width:12%' \
title='list only items that have a specific category tag' \
onchange='var f=this.form; f.done.onclick(); \
config.macros.faqViewer.go(f,\"\",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!-- \
--></select><!-- \
--><input type='text' name='search' value='enter search text...' style='width:20%' \
title='list only items that contain the search text (use blank to match all)' \
onfocus='this.select()' \
onkeyup=' if (event.keyCode==13) this.form.find.onclick(); \
if (!this.value.length) {this.value=this.defaultValue; this.select(); this.form.find.onclick();}'><!-- \
--><input type='button' name='find' value='find' style='width:6%' \
title='list only items that contain the search text ' \
onclick='var f=this.form; f.done.onclick(); \
config.macros.faqViewer.go(f,\"\",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!-- \
--><input type='button' name='reset' value='reset' style='width:6%' \
title='reset FAQViewer to default ' \
onclick='var f=this.form; f.done.onclick(); \
f.search.value=f.search.defaultValue; f.taglist.selectedIndex=0; \
config.macros.faqViewer.go(f,\"\",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!-- \
--><input type='button' name='done' value='done' disabled style='width:6%' \
title='hide current item display' \
onclick='var target=this.form.getElementsByTagName(\"div\")[0]; \
target.style.display=\"none\"; removeChildren(target); \
this.form.prev.parentNode.style.display=\"none\"; \
this.form.list.selectedIndex=0; this.disabled=true;'><!-- \
--><div class=\"%classname%\" style=\"display:none;white-space:normal;\"></div><!-- \
--><span style='text-align:right;display:none;overflow:auto;'><!-- \
--><input type='button' name='prev' value='◄ prev' style='float:left;font-size:80%;' \
title='view previous item' \
onclick='var f=this.form; var i=f.list.selectedIndex-1; \
f.list.selectedIndex=i<0?f.list.length-1:i; f.list.onchange();'><!-- \
--><input type='button' name='next' value='next ►' style='float:right;font-size:80%;' \
title='view next item' \
onclick='var f=this.form; var i=f.list.selectedIndex+1; \
f.list.selectedIndex=i>f.list.length-1?0:i; f.list.onchange();'><!-- \
--></span><!-- \
--></form>\
"
}
//}}}
<!--{{{-->
<!--
|Name|FaqViewTemplate|
|Source|http://www.TiddlyTools.com/#FaqViewTemplate|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|template|
|Requires|ToolbarCommands, FAQViewerPlugin|
|Overrides||
|Description|custom version of view template used to display tiddlers tagged with 'faq'|
-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></span>
<span class='title' macro='view title'></span>
<span class='subtitle'>
<span style='white-space:nowrap' macro='view modified date [[DDD, MMM DDth YYYY]]'></span>
</span>
<div class='viewer smallform' macro='faqViewer {{"startwith:"+tiddler.title}}' title=' '></div>
<div class='toolbar' style='line-height:100%;margin-top:.5em;'><a href="javascript:;"
onclick="window.scrollTo(0,ensureVisible(story.findContainingTiddler(this)));return false;"
onmouseover="this.title='scroll to top of '+story.findContainingTiddler(this).getAttribute('tiddler')">▲</a>
</div>
<!--}}}-->
/***
|FileDropPlugin|h
|author : BradleyMeck|
|version : 0.1.1|
|date : Nov 13 2006|
|usage : drag a file onto the TW to have it be made into a tiddler|
|browser(s) supported : Mozilla|
Note: this version has been 'tweaked' by Eric Shulman (http://www.TiddlyTools.com) to add suspend/resume notification handling to improve performance when multiple files are dropped at once.
!Trouble Shooting
*If the plugin does not seem to work, open up the page "about:config" (just type it in the address bar) and make sure @@color(blue):signed.applets.codebase_principal_support@@ is set to @@color(blue):true@@
!Revisions
*Multiple File Dropping API updated, to end all capturing events after yours return a value that makes if(myFunctionsReturnValue) evaluate to true
*Added support for multiple file drop handlers
**Use the config.macros.fileDrop.addEventListener(@@color(green):String Flavor@@, @@color(green):Function handler(nsiFile){}@@, @@color(green):Boolean addToFront@@) function
***Standard Flavor is "application/x-moz-file"
***addToFront gives your handler priority over all others at time of add
*Old plugin would disallow drops of text vetween applications because it didn't check if the transfer was a file.
!Example Handler
*Adds simple file import control, add this to a tiddler tagged {{{systemConfig}}} to make file dropping work
{{{
config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
if(
confirm("You have dropped the file \""+nsiFile.path+"\" onto the page, it will be imported as a tiddler. Is that ok?")
)
{
var newDate = new Date();
var title = prompt("what would you like to name the tiddler?");
store.saveTiddler(title,title,loadFile(nsiFile.path),config.options.txtUserName,newDate,[]);
}
return true;
})
}}}
!Example Handler without popups and opening the tiddler on load
*Adds simple file import control, add this to a tiddler tagged {{{systemConfig}}} to make file dropping work
{{{
config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
var newDate = new Date();
store.saveTiddler(nsiFile.path,nsiFile.path,loadFile(nsiFile.path),config.options.txtUserName,newDate,[]);
story.displayTiddler(null,nsiFile.path)
return true;
})
}}}
!Code
***/
//{{{
config.macros.fileDrop = {version : {major : 0, minor : 0, revision: 1}};
config.macros.fileDrop.customDropHandlers = [];
config.macros.fileDrop.dragDropHandler = function(evt) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
// Load in the native DragService manager from the browser.
var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
// Load in the currently-executing Drag/drop session.
var dragSession = dragService.getCurrentSession();
// Create an instance of an nsITransferable object using reflection.
var transferObject = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
// Bind the object explicitly to the nsITransferable interface. We need to do this to ensure that
// methods and properties are present and work as expected later on.
transferObject = transferObject.QueryInterface(Components.interfaces.nsITransferable);
// I've chosen to add only the x-moz-file MIME type. Any type can be added, and the data for that format
// will be retrieved from the Drag/drop service.
transferObject.addDataFlavor("application/x-moz-file");
// Get the number of items currently being dropped in this drag/drop operation.
var numItems = dragSession.numDropItems;
// ELS 2007.12.03: performance improvement when dropping multiple files
if (numItems>1) {
clearMessage();
displayMessage("Reading "+numItems+" files...");
store.suspendNotifications();
}
for (var i = 0; i < numItems; i++)
{
// Get the data for the given drag item from the drag session into our prepared
// Transfer object.
dragSession.getData(transferObject, i);
// We need to pass in Javascript 'Object's to any XPConnect method which
// requires OUT parameters. The out value will then be saved as a new
// property called Object.value.
var dataObj = {};
var dropSizeObj = {};
for(var ind = 0; ind < config.macros.fileDrop.customDropHandlers.length; ind++)
{
var item = config.macros.fileDrop.customDropHandlers[ind];
if(dragSession.isDataFlavorSupported(item.flavor))
{
transferObject.getTransferData(item.flavor, dataObj, dropSizeObj);
var droppedFile = dataObj.value.QueryInterface(Components.interfaces.nsIFile);
// Display all of the returned parameters with an Alert dialog.
var result = item.handler.call(item,droppedFile);
// Since the event is handled, prevent it from going to a higher-level event handler.
evt.stopPropagation();
evt.preventDefault();
if(result){break;}
}
}
}
// ELS 2007.12.03: performance improvement and feedback after dropping multiple files
if (numItems>1) {
store.resumeNotifications();
store.notifyAll();
displayMessage(numItems+" files have been processed");
}
}
if(!window.event)
{
// Register the event handler, and set the 'capture' flag to true so we get this event
// before it bubbles up through the browser.
window.addEventListener("dragdrop", config.macros.fileDrop.dragDropHandler , true);
}
config.macros.fileDrop.addEventListener = function(paramflavor,func,inFront)
{
var obj = {};
obj.flavor = paramflavor;
obj.handler = func;
if(!inFront)
{config.macros.fileDrop.customDropHandlers.push(obj);}
else{config.macros.fileDrop.customDropHandlers.shift(obj);}
}
//}}}
/***
|Name|FileDropPluginConfig|
|Source|http://www.TiddlyTools.com/#FileDropPluginConfig|
|Version|1.5.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|FileDropPlugin, AttachFilePlugin|
|Overrides||
|Options|##Configuration|
|Description|Adds drag-and-drop handlers for creating binary attachments or directory lists|
__TiddlyTools FileDrop+AttachFile extended handler:__
* use just filename instead of whole path as tiddler title
* check for existing tiddler and prompt for new name
* handle folder drops (drops each file or creates a file list in a tiddler)
* use AttachFilePlugin if MIME type is not text/plain
* autotag created tiddlers (e.g., "temporary", "dropped", etc.)
* option to suppress automatic display of newly created tiddlers
* suspend/resume notifications when handling multiple files (performance improvement)
!!!!!Configuration
<<<
<<option chkFileDropTrimFilename>> Omit file extensions from tiddler titles when creating new tiddlers
{{{usage: <<option chkFileDropTrimFilename>> }}}
<<option chkFileDropDisplay>> Automatically display newly created tiddlers
{{{usage: <<option chkFileDropDisplay>> }}}
Tag newly created tiddlers with: <<option txtFileDropTags>>
{{{usage: <<option txtFileDropTags>>}}}
__FileDrop+AttachFile configuration options:__
<<option chkFileDropAttachLocalLink>> Include reference to local path/filename
{{{usage: <<option chkFileDropAttachLocalLink>> }}}
<<option chkFileDropAttachEncodeData>> Include binary file data as encoded "base64" text
{{{usage: <<option chkFileDropAttachEncodeData>> }}}
...only if file is smaller than: <<option txtFileDropAttachDataLimit>> bytes
{{{usage: <<option txtFileDropAttachDataLimit>>}}}
See [[FileDropPlugin]] for more documentation on handler implementation specifics, including sample code for default drop handlers.
<<<
!!!!!Revisions
<<<
2008.08.11 [1.5.1] added chkFileDropAttachLocalLink option to allow suppression of local path/file link
2007.01.01 [0.9.9] initial release with extensions for AttachFilePlugin
<<<
!!!!!Code
***/
//{{{
if (config.options.chkFileDropAttachEncodeData==undefined)
config.options.chkFileDropAttachEncodeData=true;
if (config.options.chkFileDropAttachLocalLink==undefined)
config.options.chkFileDropAttachLocalLink=true;
if (config.options.txtFileDropAttachDataLimit==undefined)
config.options.txtFileDropAttachDataLimit=32768;
if (config.options.txtFileDropTags==undefined)
config.options.txtFileDropTags="";
if (config.options.chkFileDropDisplay==undefined)
config.options.chkFileDropDisplay=true;
if (config.options.chkFileDropTrimFilename==undefined)
config.options.chkFileDropTrimFilename=false;
config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
var header="Index of %0\n^^(as of %1)^^\n|!filename| !size | !modified |\n";
var item="|[[%0|%1]]| %2|%3|\n";
var footer="Total of %0 bytes in %1 files\n";
var now=new Date();
var files=[nsiFile];
if (nsiFile.isDirectory()) {
var folder=nsiFile.directoryEntries;
var files=[];
while (folder.hasMoreElements()) {
var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
if (f instanceof Components.interfaces.nsILocalFile && !f.isDirectory()) files.push(f);
}
var msg=nsiFile.path.replace(/\\/g,"/")+"\n\n";
msg+="contains "+files.length+" files... ";
msg+="select OK to attach all files or CANCEL to create a list...";
if (!confirm(msg)) { // create a list in a tiddler
var title=nsiFile.leafName; // tiddler name is last directory name in path
while (title && title.length && store.tiddlerExists(title)) {
if (confirm(config.messages.overwriteWarning.format([title]))) break; // use existing title
title=prompt("Please enter a different tiddler title for this file",nsiFile.path.replace(/\\/g,"/"));
}
if (!title || !title.length) return true; // aborted by user... we're done!
var text=header.format([nsiFile.path.replace(/\\/g,"/"),now.toLocaleString()]);
var total=0;
for (var i=0; i<files.length; i++) { var f=files[i];
var name=f.leafName;
if (config.options.chkFileDropTrimFilename)
{ var p=name.split("."); if (p.length>1) p.pop(); name=p.join("."); }
var path="file:///"+f.path.replace(/\\/g,"/");
var size=f.fileSize; total+=size;
var when=new Date(f.lastModifiedTime).formatString("YYYY.0MM.0DD 0hh:0mm:0ss");
text+=item.format([name,path,size,when]);
}
text+=footer.format([total,files.length]);
var newtags=config.options.txtFileDropTags?config.options.txtFileDropTags.readBracketedList():[];
store.saveTiddler(null,title,text,config.options.txtUserName,now,newtags);
if (config.options.chkFileDropDisplay) story.displayTiddler(null,title);
return true;
}
}
if (files.length>1) store.suspendNotifications();
for (i=0; i<files.length; i++) {
var file=files[i];
if (file.isDirectory()) continue; // skip over nested directories
var type="text/plain";
var title=file.leafName; // tiddler name is file name
if (config.options.chkFileDropTrimFilename)
{ var p=title.split("."); if (p.length>1) p.pop(); title=p.join("."); }
var path=file.path;
var size=file.fileSize;
while (title && title.length && store.tiddlerExists(title)) {
if (confirm(config.messages.overwriteWarning.format([title]))) break; // use existing title
title=prompt("Please enter a different tiddler title for this file",path.replace(/\\/g,"/"));
}
if (!title || !title.length) continue; // cancelled by user... skip this file
if (config.macros.attach) {
type=config.macros.attach.getMIMEType(file.leafName,"");
if (!type.length)
type=prompt("Unrecognized file type. Please enter a MIME type for this file","text/plain");
if (!type||!type.length) continue; // cancelled by user... skip this file
}
var newtags=config.options.txtFileDropTags?config.options.txtFileDropTags.readBracketedList():[];
if (type=="text/plain")
store.saveTiddler(null,title,loadFile(path),config.options.txtUserName,now,newtags);
else {
// only encode data if enabled and file is smaller than limit. Default is 32768 (32K) bytes.
var embed=config.options.chkFileDropAttachEncodeData
&& file.fileSize<config.options.txtFileDropAttachDataLimit;
newtags.push("attachment"); newtags.push("excludeMissing");
var localfile="";
if (config.options.chkFileDropAttachLocalLink) {
// if file is in current document folder,
// remove path prefix and use relative reference
var localfile=path;
var h=document.location.href;
folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
if (localfile.substr(0,folder.length)==folder)
localfile='./'+localfile.substr(folder.length);
}
config.macros.attach.createAttachmentTiddler(path,
now.formatString(config.macros.timeline.dateFormat),
"attached by FileDropPlugin", newtags,
title, embed, config.options.chkFileDropAttachLocalLink, false,
localfile, "", type,!config.options.chkFileDropDisplay);
}
if (config.options.chkFileDropDisplay) story.displayTiddler(null,title);
}
if (files.length>1) { store.resumeNotifications(); store.notifyAll(); }
if (window.FFDEBUG) console.log(new Date()-now);
return true;
})
//}}}
<html><div id='paperBox' style='width:100%; height:100%;'></div></html>
<script show>
rp2.init();
</script>
/%
|Name|FoldOtherTiddlers|
|Source|http://www.TiddlyTools.com/#FoldOtherTiddlers|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|fold all other tiddlers when a tiddler is viewed - equivalent to pressing "focus" toolbar command|
Usage: <<tiddler FoldOtherTiddlers>>
%/<script>
if (!config.commands.collapseTiddler) return;
var here=story.findContainingTiddler(place); if (!here) return;
config.commands.collapseOthers.handler(null,here,here.getAttribute('tiddler'));
</script>
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered as inline frames (~IFRAMEs) instead of opening new browser tabs/windows.
!!!!!Usage
<<<
Use standard TiddlyWiki external link syntax into your tiddler content. If {{{chkFramedLinks}}} is enabled or the tiddler is tagged with 'framedLinks' (see Configuration), then whenever you click the external link an IFRAME will be dynamically added to the content. Clicking on the link again removes the IFRAME. Hold down any modifier (shift, control, or alt) while clicking a link ''temporarily'' bypasses the IFRAME handling and use the standard link handling behavior.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
{{{<<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>>
{{{<<option chkFramedLinksTag>> <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
{{{<<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.1] fixed handling for external links embedded in //shadow// tiddlers
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,11,14)};
var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";
window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
var link=this.framedLinks_createExternalLink.apply(this,arguments);
link.onclick=function(ev) { var e=ev?ev:window.event;
var co=config.options; // abbreviation
var here=story.findContainingTiddler(this);
if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
var enabled=co.chkFramedLinks || co.chkFramedLinksTag && tid && tid.isTagged(co.txtFramedLinksTag);
if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
var p=this.parentNode;
var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
if (!showing) { // create an iframe
link.style.display="block"; // force IFRAME onto line following link
if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
p.insertBefore(wrapper,this.nextSibling);
function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
try { f.src=url; } // if the iframe can't handle the href
catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
window.scrollTo(0,ensureVisible(wrapper));
}
if (!co.chkAnimate) loadURL(wrapper);
else {
var morph=new Slider(wrapper,true);
morph.callback=loadURL;
morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
anim.startAnimating(morph);
}
} else { // remove iframe
link.style.display="inline"; // restore link style
if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
if (!co.chkAnimate) p.removeChild(f.parentNode);
else {
var morph=new Slider(f.parentNode,false,false,"all");
morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
anim.startAnimating(morph);
}
}
e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
}
return link;
}
//}}}
{{center{
{{picture{[img[i-blur]]}}}<script>
var img = place.lastChild.firstChild;
var h=img.offsetHeight;
var w=img.offsetWidth;
img.style.display = "none";
var off=Math.sqrt( h*h + w*w );
var r = Raphael(place, off, off); // speaking of what to render and where... let's make a canvas r to play with
var i = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: .5});
var j = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: .5});
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var deltax=x-this.lastX||x;
var y=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY()); // mouse X
var deltay=y-this.lastY||y;
i.rotate(deltay);//.scale(100-deltax, 100-deltax);
j.rotate(deltax);//.scale(100+deltax, 100+deltax);
this.lastX=x;
this.lastY=y;
};
</script>
}}}
{{center{
{{picture{[img[ice_ice_baby_by_p0stfrau]][img[i-blur]]}}}<script>
var img = place.lastChild.firstChild;
var other_img = place.lastChild.firstChild.nextSibling;
var h=img.offsetHeight;
var w=img.offsetWidth;
var o_h = other_img.offsetHeight;
var o_w = other_img.offsetWidth;
img.style.display = "none";
other_img.style.display = "none";
var i_off=Math.sqrt( h*h + w*w );
var o_off=Math.sqrt( o_h*o_h + o_w*o_w );
var off = Math.max(i_off,o_off);
var r = Raphael(place, off, off);
var i = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: .25});
var j = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: .25});
var o_i = r.image(other_img.src, (off-o_w)/2, (off-o_h)/2, o_w, o_h).attr({opacity: .25});
var o_j = r.image(other_img.src, (off-o_w)/2, (off-o_h)/2, o_w, o_h).attr({opacity: .25});
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var deltax=x-this.lastX||x;
var y=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY()); // mouse X
var deltay=y-this.lastY||y;
i.rotate(deltay);//.scale(100-deltax, 100-deltax);
j.rotate(deltax);//.scale(100+deltax, 100+deltax);
o_i.rotate(-deltax);o_j.rotate(-deltay);
this.lastX=x;
this.lastY=y;
};
</script>
}}}
{{center{
{{picture{[img[mirrors]][img[mirrors]][img[mirrors]]}}}<script>
var img = place.lastChild.firstChild;
var other_img = place.lastChild.firstChild.nextSibling;
var oo_img = place.lastChild.firstChild.nextSibling.nextSibling;
var h=img.offsetHeight;
var w=img.offsetWidth;
var o_h = other_img.offsetHeight;
var o_w = other_img.offsetWidth;
var oo_h = oo_img.offsetHeight;
var oo_w = oo_img.offsetWidth;
img.style.display = "none";
other_img.style.display = "none";
oo_img.style.display = "none";
var i_off=Math.sqrt( h*h + w*w );
var o_off=Math.sqrt( o_h*o_h + o_w*o_w );
var oo_off=Math.sqrt( oo_h*oo_h + oo_w*oo_w );
var off = Math.max(i_off,o_off);
off = Math.max(off, oo_off);
var r = Raphael(place, off, off);
var i = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: (1/6)});
var j = r.image(img.src, (off-w)/2, (off-h)/2, w, h).attr({opacity: (1/6)});
var o_i = r.image(other_img.src, (off-o_w)/2, (off-o_h)/2, o_w, o_h).attr({opacity: (1/6)});
var o_j = r.image(other_img.src, (off-o_w)/2, (off-o_h)/2, o_w, o_h).attr({opacity: (1/6)});
var oo_i = r.image(oo_img.src, (off-oo_w)/2, (off-oo_h)/2, oo_w, oo_h).attr({opacity: (1/6)});
var oo_j = r.image(oo_img.src, (off-oo_w)/2, (off-oo_h)/2, oo_w, oo_h).attr({opacity: (1/6)});
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var deltax=x-this.lastX||x;
var y=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY()); // mouse X
var deltay=y-this.lastY||y;
i.rotate(deltay);j.rotate(deltax);
o_i.rotate(-deltax);o_j.rotate(-deltay);
oo_i.rotate(-deltay);oo_j.rotate(deltax);
this.lastX=x;
this.lastY=y;
};
</script>
}}}
/%
|Name|GetTheFAQs|
|Source|http://www.TiddlyTools.com/#GetTheFAQs|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin, LoadTiddlersPlugin, FAQViewerPlugin|
|Overrides||
|Description|autoload FAQ articles from external document|
Usage:
<<tiddler GetTheFAQs>>
<<tiddler GetTheFAQs with: location tag tiddlername>>
where:
* 'location' is a URL, a relative path/file, or a TiddlerName that refers to a TiddlyWiki document containing the set of tiddlers to be automatically imported into the current document. If no location parameter is provided, the contents of a tiddler named [[SiteFAQ]] will be used. If [[SiteFAQ]] is not present, you will be prompted to enter a location (default='faq.html'). If a location refers to an existing tiddlername , the //contents// of that tiddler are used as the actual source location.
* 'tag' indicates the tag to match when retrieving tiddlers (default="faq").
* 'tiddlername' specifies the desired target tiddler title (default=none).
The script imports tiddlers from the indicated location only when there are no tiddlers in the current document that match the tag value, or the target tiddler (if specified) does not exist in the current document. Otherwise, a FAQViewer interface is automatically displayed (if [[FAQViewerPlugin]] is installed) for easy viewing of the set of tagged tiddlers that have just been imported.
%/<<tiddler HideTiddlerTags>><script>
// defaults and messages
var defaultsrc ='faq.html';
var defaulttag ='faq';
var loadcmd ='<<loadTiddlers [[tag:%0]] [[%1]] quiet nodirty noreport temporary>>';
var viewcmd ='<<tiddler FAQViewer>>';
var askmsg ="Enter the location of a TiddlyWiki document containing '%0' tiddlers";
var confirmmsg ="Press OK to import '%0' tiddlers from:";
var loadingmsg ="'%0' tiddlers are being imported... please wait...";
var notloadedmsg='{{block{'
+"//There are no '%0' tiddlers currently loaded.// "
+"''Please refresh this tiddler to import the '%0' archive...''\n"
+"//To view the archive directly, please visit:// ''[[%1|%1]]''"
+'}}}';
// get source, tag and target tiddler
var src='$1'; if (src=='$'+'1') src='';
var tag='$2'; if (tag=='$'+'2') tag=defaulttag;
var target='$3'; if (target=='$'+'3') target='';
// if target or tagged tiddlers already in document, just show the viewer
if (store.tiddlerExists(target)||store.getTaggedTiddlers(tag,'excludeLists').length)
return viewcmd;
// if src is an existing tiddlername, get tiddler content as src
src=store.getTiddlerText(src,src);
// if no src, use [[SiteFAQ]] or default value
if (!src.length) src=store.getTiddlerText('SiteFAQ',defaultsrc);
// ask for permission to import tiddlers or change src
var s=prompt(confirmmsg.format([tag]),src);
if (!s||!s.length) return notloadedmsg.format([tag,src]); // cancelled
// if s is an existing tiddlername, get tiddler content as src
src=store.getTiddlerText(s,s);
// show 'please wait' message when using remote async file access (XMLHttpRequest)
var async=document.location.protocol!='file:'||src.substr(0,4)=='http';
if (async) setTimeout('displayMessage("'+loadingmsg.format([tag])+'")',1);
// start the import!
return loadcmd.format([tag,src]);
</script>
{{{
-------------------OO---------
--------------------OO--------
-------------------O----------
------------------------------
--------------------------O---
--------------------------O-O-
--------------------------OO--
------------------------------
------OO----------------------
-----OO-----------------------
-------O----------------------
------------------------------
-------------------------O----
--------------------------OO--
-------------------------OO---
----OOO-----------------------
------O-----------------------
-----O------------------------
------------------------------
-----------O-O----------------
-----------OO-----------------
------------O-----------------
------------------------------
--------------------OOO-------
--------------------O---------
---------------------O--------
------------------------------
-----------O------------------
------------O-----------------
----------OOO-----------------
}}}
{{{
--------------------------------------
------------------------O-------------
----------------------O-O-------------
------------OO------OO------------OO--
-----------O---O----OO------------OO--
OO--------O-----O---OO----------------
OO--------O---O-OO----O-O-------------
----------O-----O-------O-------------
-----------O---O----------------------
------------OO------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
--------------------------------------
-------------------------------------#
-------------------------------------#
-----------------------------------###
}}}
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.7.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing. When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.
!!!!!Documentation
>see [[GotoPluginInfo]]
!!!!!Revisions
<<<
2008.12.15 [1.7.1] up arrow from input field now moves to end of droplist (search for input). Also, shift+enter cam now be used to quickly invoke search for text.
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 7, revision: 1, date: new Date(2008,12,15)};
// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");
config.macros.gotoTiddler= {
listMaxSize: 10,
listHeading: 'Found %0 matching title%1...',
searchItem: "Search for '%0'...",
handler:
function(place,macroName,params,wikifier,paramString,tiddler) {
var quiet =params.contains("quiet");
var search =params.contains("search");
params = paramString.parseParams("anon",null,true,false,false);
var instyle =getParam(params,"inputstyle","");
var liststyle =getParam(params,"liststyle","");
var filter =getParam(params,"filter","");
var html=this.html;
var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
html=html.replace(/%keyevent%/g,keyevent);
html=html.replace(/%search%/g,search);
html=html.replace(/%quiet%/g,quiet);
html=html.replace(/%instyle%/g,instyle);
html=html.replace(/%liststyle%/g,liststyle);
html=html.replace(/%filter%/g,filter);
if (config.browser.isIE) html=this.IEtableFixup.format([html]);
createTiddlyElement(place,"span").innerHTML=html;
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
title="Enter title text... DOWN=select from list, ENTER=open/create tiddler, SHIFT-ENTER=search for text"\
onclick="this.form.list.style.display=\'none\';"\
onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list);"\
onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%);">\
<select name=list style="%liststyle%;display:none;position:absolute"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=\'none\';"\
%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler);"\
onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this);">\
</select><input name="filter" type="hidden" value="%filter%">\
</form>',
IEtableFixup:
"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
%0</td></tr></table>",
getItems:
function(val,filter) {
if (!this.items.length || val.length<2) { // starting new search, refresh cached list of tiddlers/shadows/tags
this.items=new Array();
if (filter.length) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
} else
var tiddlers=store.getTiddlers("title","excludeLists");
for(var t=0; t<tiddlers.length; t++) this.items.push(tiddlers[t].title);
if (!filter.length) {
for (var t in config.shadowTiddlers) this.items.pushUnique(t);
var tags=store.getTags();
for(var t=0; t<tags.length; t++) this.items.pushUnique(tags[t][0]);
}
}
var found = [];
var match=val.toLowerCase();
for(var i=0; i<this.items.length; i++)
if (this.items[i].toLowerCase().indexOf(match)!=-1) found.push(this.items[i]);
return found;
},
items: [], // cached list of tiddlers/shadows/tags
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
keyProcessed:
function(ev) { // utility function: exits handler and prevents browser from processing the keystroke
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
},
inputEscKeyHandler:
function(event,here,list) {
var key=event.keyCode;
// escape... hide list (2nd esc=clears input)
if (key==27) {
if (list.style.display=="none")
here.value=here.defaultValue;
list.style.display="none";
return this.keyProcessed(event);
}
return true; // key bubbles up
},
inputKeyHandler:
function(event,here,quiet,search) {
var key=event.keyCode;
var list=here.form.list;
var filter=here.form.filter;
// non-printing chars bubble up, except for a few:
if (key<48) switch(key) {
// backspace=8, enter=13, space=32, up=38, down=40, delete=46
case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
}
// blank input... if down/enter... fall through (list all)... else, and hide list
if (!here.value.length && !(key==40 || key==13))
{ list.style.display="none"; return this.keyProcessed(event); }
// make sure list is shown (unless quiet option)
list.style.display=!quiet?"block":"none";
// non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
if (key==13) return this.processItem(event.shiftKey?'*':here.value,here,list);
// up or down key... shows and moves to list...
if (key==38 || key==40) { list.style.display="block"; list.focus(); }
// if list is showing, fill it with found results...
if (list.style.display!="none") {
var indent='\xa0\xa0\xa0';
var found = this.getItems(here.value,filter.value); // find matching items...
found.sort(); // alpha by title
while (list.length > 0) list.options[0]=null; // clear list
var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
list.options[0]=new Option(hdr,"",false,false);
for (var t=0; t<found.length; t++) list.options[list.length]=
new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
if (search)
list.options[list.length]=new Option(this.searchItem.format([here.value]),"*",false,false);
list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
list.selectedIndex=key==38?list.length-1:key==40?1:0;
}
return true; // key bubbles up
},
selectKeyHandler:
function(event,list,editfield) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display="none"; return this.keyProcessed(event); }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.processItem(list.value,editfield,list); return this.keyProcessed(event); }
return true; // key bubbles up
},
processItem:
function(title,here,list) {
if (!title.length) return;
list.style.display='none';
if (title=="*") { story.search(here.value); return false; } // do full-text search
here.value=title;
story.displayTiddler(null,title); // show selected tiddler
return false;
}
}
//}}}
/***
|Name|GotoPluginInfo|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.7.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for GotoPlugin|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing. When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.
!!!!!Usage/Examples
<<<
| //IMPORTANT NOTE:// ''As of version 1.4.0 (2007.04.25),<br>to avoid conflict with javascript reserved keywords<br>the {{{<<goto>>}}} macro has been renamed to {{{<<gotoTiddler>>}}}'' |
syntax: {{{<<gotoTiddler quiet search inputstyle:... liststyle:... filter:...>>}}}
All parameters are optional.
* ''quiet'' (//keyword//)<br>prevents //automatic// display of the list as each character is typed. To view the list when ''quiet'', use //down// or //enter//.
* ''search'' (//keyword//)<br>adds an extra 'command item' to the list that can be used to invoke a full-text search using the entered value. This can be especially useful when no matching tiddler titles have been found.
* ''inputstyle:'' and ''liststyle:''<br>are CSS declarations that modify the default input and listbox styles, respectively. Note: the CSS styles must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}) (e.g., {{{liststyle:"border:1px dotted blue;color:green;..."}}}.
* ''filter:''<br>is a single tag value (or a boolean tag expression if MatchTagsPlugin is installed), and is used to limit the search to only those tiddlers matching the indicated tag or tag expression (e.g., {{{<<gotoTiddler filter:"faq or help">>}}})
{{{<<gotoTiddler>>}}}
<<gotoTiddler>>
{{{<<gotoTiddler search>>}}}
<<gotoTiddler search>>
{{{<<gotoTiddler quiet>>}}}
<<gotoTiddler quiet>>
{{{<<gotoTiddler filter:"faq">>}}}
<<gotoTiddler filter:"faq">>
{{{<<gotoTiddler inputstyle:"width:20em" liststyle:"width:20em">>}}}
<<gotoTiddler inputstyle:"width:20em" liststyle:"width:20em">>
<<<
!!!!!Configuration
<<<
You can create a tiddler tagged with <<tag systemConfig>> to control the maximum height of the listbox of tiddlers/shadows/tags. //The default values are shown below://
//{{{
config.macros.gotoTiddler.listMaxSize=10;
//}}}
<<<
!!!!!Revisions
<<<
2008.12.15 [1.7.1] up arrow from input field now moves to end of droplist (search for input). Also, shift+enter cam now be used to quickly invoke search for text.
2008.10.16 [1.7.0] in macro handler(), changed to use //named// params instead of positional params, and added optional "filter:" param for tag filtering. Removed 'insert' handling (now provided by [[QuickEditPlugin]]).
2008.10.02 [1.6.1] for IE, wrap controls in a table. Corrects placement of listbox so it is below input field.
2008.10.02 [1.6.0] added 'search' param for optional "Search for:" item that invokes full text search (especially useful when no title matches are found)
2008.02.17 [1.5.0] ENTER key always displays tiddler based on current input regardless of whether input matches any existing tiddler
2007.10.31 [1.4.3] removed extra trailing comma on last property of config.macros.gotoTiddler object. This fixes an error under InternetExplorer that was introduced 6 days ago... sure, I should have found it sooner, but... WHY DON'T PEOPLE TELL ME WHEN THINGS ARE BROKEN!!!!
2007.10.25 [1.4.2] added onclick handler for input field, so that clicking in field hides the listbox.
2007.10.25 [1.4.1] re-wrote getItems() to cache list of tiddlers/shadows/tags and use case-folded simple text match instead of regular expression to find matching tiddlers. This *vastly* reduces processing overhead between keystrokes, especially for documents with many (>1000) tiddlers. Also, removed local definition of replaceSelection(), now supported directly by the TW2.2+ core, as well as via backward-compatible plugin
2007.04.25 [1.4.0] renamed macro from "goto" to "gotoTiddler". This was necessary to avoid a fatal syntax error in Opera (and other browsers) that require strict adherence to ECMAScript 1.5 standards which defines the identifier "goto" as "reserved for FUTURE USE"... *sigh*
2007.04.21 [1.3.2] in html definition, removed DIV around droplist (see 1.2.6 below). It created more layout problems then it solved. :-(
2007.04.01 [1.3.1] in processItem(), ensure that correct textarea field is found by checking for edit=="text" attribute
2007.03.30 [1.3.0] tweak SideBarOptions shadow to automatically add {{{<<goto>>}}} when using default sidebar content
2007.03.30 [1.2.6] in html definition, added DIV around droplist to fix IE problem where list appears next to input field instead of below it.
2007.03.28 [1.2.5] in processItem(), set focus to text area before setting selection (needed for IE to get correct selection 'range')
2007.03.28 [1.2.4] added prompt for 'pretty text' when inserting a link into tiddler content
2007.03.28 [1.2.3] added local copy of core replaceSelection() and modified for different replace logic
2007.03.27 [1.2.2] in processItem(), use story.getTiddlerField() to retrieve textarea control
2007.03.26 [1.2.1] in html, use either 'onkeydown' (IE) or 'onkeypress' (Moz) event to process <esc> key sooner, to prevent <esc> from 'bubbling up' to the tiddler (which will close the current editor).
2007.03.26 [1.2.0] added support for optional "insert" keyword param. When used in [[EditTemplate]], (e.g. {{{<span macro="goto insert"></span>}}}) it triggers alternative processing: instead of displaying the selected tiddler, that tiddler's title is inserted into a tiddler's textarea edit field surrounded by {{{[[...]]}}}.
2006.05.10 [1.1.2] when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox
2006.05.08 [1.1.1] added accesskey ("G") to input field html (also set when field gets focus). Also, inputKeyHandler() skips non-printing/non-editing keys.
2006.05.08 [1.1.0] added heading to listbox for better feedback (also avoids problems with 1-line droplist)
2006.05.07 [1.0.0] list matches against tiddlers/shadows/tags. input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler. optional "quiet" param controls when listbox appears.
2006.05.06 [0.5.0] added handling for enter (13), escape(27), and down(40) keys. Change 'ondblclick' to 'onclick' for list handler to view tiddlers (suggested by Florian Cauvin - prevents unintended trigger of tiddler editor). shadow titles inserted into list instead of appended to the end.
2006.05.05 [0.0.0] started
<<<
/***
|Name|HTMLFormattingPlugin|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|'HTML' formatter|
|Description|embed wiki syntax formatting inside of HTML content|
The ~HTMLFormatting plugin allows you to ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Documentation
>see [[HTMLFormattingPluginInfo]]
!!!!!Revisions
<<<
2009.01.05 [2.4.0] in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
| see [[HTMLFormattingPluginInfo]] for additional revision details |
2005.06.26 [1.0.0] Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.HTMLFormattingPlugin= {major: 2, minor: 4, revision: 0, date: new Date(2009,1,5)};
// find the formatter for HTML and replace the handler
initHTMLFormatter();
function initHTMLFormatter()
{
for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
if (!this.lookaheadRegExp) // fixup for TW2.0.x
this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var html=lookaheadMatch[1];
// if <nowiki> is present, just let browser handle it!
if (html.indexOf('<nowiki>')!=-1)
createTiddlyElement(w.output,"span").innerHTML=html;
else {
// if <hide linebreaks> is present, suppress wiki-style literal handling of newlines
if (html.indexOf('<hide linebreaks>')!=-1) html=html.replace(/\n/g,' ');
// remove all \r's added by IE textarea and mask newlines and macro brackets
html=html.replace(/\r/g,'').replace(/\n/g,'\\n').replace(/<</g,'%%(').replace(/>>/g,')%%');
// create span, let browser parse HTML
var e=createTiddlyElement(w.output,"span"); e.innerHTML=html;
// then re-render text nodes as wiki-formatted content
wikifyTextNodes(e,w);
}
w.nextMatch = this.lookaheadRegExp.lastIndex; // continue parsing
}
}
}
// wikify #text nodes that remain after HTML content is processed (pre-order recursion)
function wikifyTextNodes(theNode,w)
{
function unmask(s) { return s.replace(/\%%\(/g,'<<').replace(/\)\%%/g,'>>').replace(/\\n/g,'\n'); }
switch (theNode.nodeName.toLowerCase()) {
case 'style': case 'option': case 'select':
theNode.innerHTML=unmask(theNode.innerHTML);
break;
case 'textarea':
theNode.value=unmask(theNode.value);
break;
case '#text':
var txt=unmask(theNode.nodeValue);
var newNode=createTiddlyElement(null,"span");
theNode.parentNode.replaceChild(newNode,theNode);
wikify(txt,newNode,highlightHack,w.tiddler);
break;
default:
for (var i=0;i<theNode.childNodes.length;i++)
wikifyTextNodes(theNode.childNodes.item(i),w); // recursion
break;
}
}
//}}}
|Name|HTMLFormattingPluginInfo|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for HTMLFormattingPlugin|
The ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Usage
<<<
The shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.
When a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within {{{<html>}}} and {{{</html>}}} markers. When present, the TiddlyWiki core simply passes this content directly to the browser's internal "rendering engine" to process as ~HTML-formatted content. However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain. This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.
This plugin extends the TiddlyWiki core processing so that, after the HTML formatting has been processed, all the pieces of text occuring within the HTML block are then processed one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.
Note: To bypass this extended processing for a specific section of HTML content, embed ''{{{<nowiki>}}}'' //anywhere// inside the {{{<html>...</html>}}} delimiters, and wiki formatting will not be applied to that content.
<<<
!!!!!Line breaks
<<<
One major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.
Even though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.
If removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules, by placing ''{{{<hide linebreaks>}}}'' //anywhere// within the HTML content. This automatically converts all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.
Note: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.
<<<
!!!!!How it works
<<<
The TW core support for HTML does not let you put ANY wiki-style syntax (including TW macros) *inside* the {{{<html>...</html>}}} block. Everything between {{{<html>}}} and {{{</html>}}} is handed to the browser for processing and that is it.
However, not all wiki syntax can be safely passed through the browser's parser. Specifically, any TW macros inside the HTML will get 'eaten' by the browser since the macro brackets, {{{<<...>>}}} use the "<" and ">" that normally delimit the HTML/XML syntax recognized by the browser's parser.
Similarly, you can't use InlineJavascript within the HTML because the {{{<script>...</script>}}} syntax will also be consumed by the browser and there will be nothing left to process afterward. Note: unfortunately, even though the browser removes the {{{<script>...</script>}}} sequence, it doesn't actually execute the embedded javascript code that it removes, so any scripts contained inside of <html> blocks in TW are currently being ignored. :-(
As a work-around to allow TW *macros* (but not inline scripts) to exist inside of <html> formatted blocks of content, the plugin first converts the {{{<<}}} and {{{>>}}} into "%%(" and ")%%", making them "indigestible" so they can pass unchanged through the belly of the beast (the browser's HTML parser).
After the browser has done its job, the wiki syntax sequences (including the "undigested" macros) are contained in #text nodes in the browser-generated DOM elements. The plugin then recursively locates and processes each #text node, converts the %%( and )%% back into {{{<<}}} and {{{>>}}}, passes the result to wikify() for further rendering of the wiki-formatted syntax into a containing SPAN that replaces the previous #text node. At the end of this process, none of the encoded %%( and )%% sequences remain in the rendered tiddler output.
<<<
!!!!!Revisions
<<<
2009.01.05 [2.4.0] in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
2008.10.02 [2.3.0] added use of {{{<nowiki>}}} marker to bypass all wikification inside a specific HTML block
2008.09.19 [2.2.0] in wikifyTextNodes(), don't wikify the contents of STYLE nodes (thanks to MorrisGray for bug report)
2008.04.26 [*.*.*] plugin size reduction: more documentation moved to HTMLFormattingInfo
2008.01.08 [*.*.*] plugin size reduction: documentation moved to HTMLFormattingInfo
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.14 [2.1.5] in formatter, removed call to e.normalize(). Creates an INFINITE RECURSION error in Safari!!!!
2006.09.10 [2.1.4] update formatter for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.05.28 [2.1.3] in wikifyTextNodes(), decode the *value* of TEXTAREA nodes, but don't wikify() its children. (thanks to "ayj" for bug report)
2006.02.19 [2.1.2] in wikifyTextNodes(), put SPAN element into tiddler DOM (replacing text node), BEFORE wikifying the text content. This ensures that the 'place' passed to any macros is correctly defined when the macro is evaluated, so that calls to story.findContainingTiddler(place) will work as expected. (Thanks for bug report from GeoffSlocock)
2006.02.05 [2.1.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.01 [2.1.0] don't wikify #TEXT nodes inside SELECT and TEXTAREA elements
2005.11.06 [2.0.1] code cleanup
2005.10.31 [2.0.0] replaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code
2005.10.09 [1.0.2] combined documentation and code into a single tiddler
2005.08.05 [1.0.1] moved HTML and CSS definitions into plugin code instead of using separate tiddlers
2005.07.26 [1.0.1] Re-released as a plugin. Added <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling
2005.06.26 [1.0.0] Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
<script>
config.options.chkShowLeftSidebar=config.options.chkShowRightSidebar=false;
document.getElementById('mainMenu').style.display=document.getElementById('sidebar').style.display='none';
document.getElementById('displayArea').style.marginLeft=document.getElementById('displayArea').style.marginRight='1em';
config.refreshers.content(document.getElementById('storyMenu'));
</script>
/%
|Name|HideTiddlerBackground|
|Source|http://www.TiddlyTools.com/#HideTiddlerBackground|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's background and border (if any)|
Usage: <<tiddler HideTiddlerBackground>>
%/<script>
var t=story.findContainingTiddler(place);
if (!t || t.id=="HideTiddlerBackground") return;
var nodes=t.getElementsByTagName("*");
for (var i=0; i<nodes.length; i++) if (hasClass(nodes[i],"viewer")) {
var s=nodes[i].style;
s.backgroundImage="none";
s.backgroundColor="transparent"
s.borderColor="transparent";
s.borderWidth=0;
s.margin=0;
s.padding=0;
break;
}
</script>
/%
|Name|HideTiddlerSubtitle|
|Source|http://www.TiddlyTools.com/#HideTiddlerSubtitle|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's subtitle (dates/created by) display|
Usage: <<tiddler HideTiddlerSubtitle>>
%/<script>
var t=story.findContainingTiddler(place);
if (!t || t.id=="tiddlerHideTiddlerSubtitle") return;
var nodes=t.getElementsByTagName("*");
for (var i=0; i<nodes.length; i++)
if (hasClass(nodes[i],"subtitle"))
nodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerTags|
|Source|http://www.TiddlyTools.com/#HideTiddlerTags|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's tagged/tagging display elements|
Usage: <<tiddler HideTiddlerTags>>
%/<script>
var t=story.findContainingTiddler(place);
if (!t || t.id=="tiddlerHideTiddlerTags") return;
var nodes=t.getElementsByTagName("div");
for (var i=0; i<nodes.length; i++)
if (hasClass(nodes[i],"tagged"))
nodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerTitle|
|Source|http://www.TiddlyTools.com/#HideTiddlerTitle|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's title display elements (name, dates, and author)|
Usage: <<tiddler HideTiddlerTitle>>
%/<script>
var t=story.findContainingTiddler(place);
if (!t || t.id=="tiddlerHideTiddlerTitle") return;
var nodes=t.getElementsByTagName("*");
for (var i=0; i<nodes.length; i++)
if (hasClass(nodes[i],"title")||hasClass(nodes[i],"subtitle"))
nodes[i].style.display="none";
</script>
/%
|Name|HideTiddlerToolbar|
|Source|http://www.TiddlyTools.com/#HideTiddlerToolbar|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's toolbar display|
Usage: <<tiddler HideTiddlerToolbar>>
%/<script>
var t=story.findContainingTiddler(place);
if (!t || t.id=="tiddlerHideTiddlerToolbar") return;
var nodes=t.getElementsByTagName("*");
for (var i=0; i<nodes.length; i++)
if (hasClass(nodes[i],"toolbar"))
nodes[i].style.display="none";
</script>
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin,formatter|
|Requires||
|Overrides|'image' formatter|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var floatLeft=lookaheadMatch[1];
var floatRight=lookaheadMatch[2];
var width=lookaheadMatch[3];
var height=lookaheadMatch[4];
var tooltip=lookaheadMatch[5];
var src=lookaheadMatch[6];
var link=lookaheadMatch[7];
// Simple bracketted link
var e = w.output;
if(link) { // LINKED IMAGE
if (config.formatterHelpers.isExternalLink(link)) {
if (config.macros.attach && config.macros.attach.isAttachment(link)) {
// see [[AttachFilePluginFormatters]]
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
} else
e = createExternalLink(w.output,link);
} else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
if(width||height) {
var x=width.trim(); var y=height.trim();
var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
if (x.substr(0,2)=="{{")
{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
if (y.substr(0,2)=="{{")
{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
img.style.width=x.trim(); img.style.height=y.trim();
config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
}
if(tooltip) img.title = tooltip;
// GET IMAGE SOURCE
if (config.macros.attach && config.macros.attach.isAttachment(src))
src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
if (config.browser.isIE || config.browser.isSafari) {
img.onerror=(function(){
this.src=config.formatterHelpers.resolvePath(this.src,false);
return false;
});
} else
src=config.formatterHelpers.resolvePath(src,true);
}
img.src=src;
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
e.statusMsg='width=%0, height=%1';
e.style.cursor='move';
e.originalW=e.style.width;
e.originalH=e.style.height;
e.minW=Math.max(e.offsetWidth/20,10);
e.minH=Math.max(e.offsetHeight/20,10);
e.stretchW=stretchW;
e.stretchH=stretchH;
e.onmousedown=function(ev) { var ev=ev||window.event;
this.sizing=true;
this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
this.startW=this.offsetWidth;
this.startH=this.offsetHeight;
return false;
};
e.onmousemove=function(ev) { var ev=ev||window.event;
if (this.sizing) {
var s=this.style;
var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
}
return false;
};
e.onmouseup=function(ev) { var ev=ev||window.event;
if (ev.shiftKey) { this.style.width=this.style.height=''; }
if (ev.ctrlKey) { this.style.width=this.originalW; this.style.height=this.originalH; }
this.sizing=false;
clearMessage();
return false;
};
e.onmouseout=function(ev) { var ev=ev||window.event;
this.sizing=false;
clearMessage();
return false;
};
}
//}}}
The plugins in this package provide interactive functionality for importing/exporting tiddlers to/from other TiddlyWiki documents. Additional plugins provide enhanced local/remote file I/O features, including "save as", "save from web" and "upload" functionality.
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.4.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|config.macros.importTiddlers.handler|
|Description|interactive controls for import/export with filtering.|
This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel:
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Installation Notes
<<<
* As of 6/27/2007, 'patch' functions that provide backward-compatibility with TW2.1.x and earlier have been split into a separate [[ImportTiddlersPluginPatch]] tiddler to reduce installation overhead for //this// plugin. You only need to install the additional plugin tiddler when using ImportTiddlersPlugin in documents using TW2.1.x or earlier.
* As of 3/21/2007, the interactive {{{<<importTiddlers>>}}} and non-interactive {{{<<loadTiddlers>>}}} macro definitions and related code have been split into separate [[ImportTiddlersPlugin]] and [[LoadTiddlersPlugin]] to permit selective installation of either the interactive and/or non-interactive macro functions.
* Quick Installation Tip: If you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
<<<
!!!!!Revisions
<<<
2009.02.26 [4.4.1] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 4, revision: 1, date: new Date(2009,2,26)};
// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;
// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;
// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';
// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
function merge(dst,src,preserveExisting) {
for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
return dst;
}
}
if (config.browser.isGecko===undefined)
config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'import tiddlers',
prompt: 'Copy tiddlers from another document',
openMsg: 'Opening %0',
openErrMsg: 'Could not open %0 - error=%1',
readMsg: 'Read %0 bytes from %1',
foundMsg: 'Found %0 tiddlers in %1',
filterMsg: "Filtered %0 tiddlers matching '%1'",
summaryMsg: '%0 tiddler%1 in the list',
summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
plural: 's are',
single: ' is',
countMsg: '%0 tiddlers selected for import',
processedMsg: 'Processed %0 tiddlers',
importedMsg: 'Imported %0 of %1 tiddlers from %2',
loadText: 'please load a document...',
closeText: 'close',
doneText: 'done',
startText: 'import',
stopText: 'stop',
local: true, // default to import from local file
src: '', // path/filename or URL of document to import (retrieved from SiteUrl)
proxy: '', // URL for remote proxy script (retrieved from SiteProxy)
useProxy: false, // use specific proxy script in front of remote URL
inbound: null, // hash-indexed array of tiddlers from other document
newTags: '', // text of tags added to imported tiddlers
addTags: true, // add new tags to imported tiddlers
listsize: 10, // # of lines to show in imported tiddler list
importTags: true, // include tags from remote source document when importing a tiddler
keepTags: true, // retain existing tags when replacing a tiddler
sync: false, // add 'server' fields to imported tiddlers (for sync function)
lastFilter: '', // most recent filter (URL hash) applied
lastAction: null, // most recent collision button performed
index: 0, // current processing index in import list
sort: '' // sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
if (config.macros.importTiddlers.coreHandler)
config.macros.importTiddlers.coreHandler.apply(this,arguments);
else
createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
} else if (params[0]=='link') { // show link to floating panel
createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
} else if (params[0]=='inline') {// show panel as INLINE tiddler content
createImportPanel(place);
this.$('importPanel').style.position='static';
this.$('importPanel').style.display='block';
} else if (config.macros.loadTiddlers)
config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
var parent=resolveTarget(e).parentNode;
var panel=document.getElementById('importPanel');
if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
else
panel.style.display=isOpen?'none':'block';
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
var cmi=config.macros.importTiddlers; // abbrev
var panel=cmi.$('importPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(cmi.css,'importTiddlers');
panel=createTiddlyElement(place,'span','importPanel',null,null)
panel.innerHTML=cmi.html;
refreshImportList();
var siteURL=store.getTiddlerText('SiteUrl'); if (!siteURL) siteURL='';
cmi.$('importSourceURL').value=siteURL;
cmi.src=siteURL;
var siteProxy=store.getTiddlerText('SiteProxy'); if (!siteProxy) siteProxy='SiteProxy';
cmi.$('importSiteProxy').value=siteProxy;
cmi.proxy=siteProxy;
if (config.browser.isGecko) { // FF3 FIXUP
cmi.$('fileImportSource').style.display='none';
cmi.$('importLocalPanelFix').style.display='block';
}
return panel;
}
//}}}
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;\
}\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}\
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:23%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#backstagePanel #importPanel { left:10%; right:auto; }\
';
//}}}
//{{{
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
import from\
<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
onclick="onClickImportButton(this,event)" title="show file controls"> local file\
<input type="radio" class="rad" name="importFrom" id="importFromWeb" value="http"\
onclick="onClickImportButton(this,event)" title="show web controls"> web server\
</td><td align=right>\
<input type=checkbox class="chk" id="chkImportReport" checked\
onClick="config.options[\'chkImportReport\']=this.checked;"> create report\
</td></tr></table>\
\
<div class="box" id="importSourcePanel" style="margin:.5em">\
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file -->\
enter or browse for source path/filename<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->\
<input type="text" id="fileImportSourceFix" style="width:90%"\
title="Enter a path/file to import"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."\
title="Select a path/file to import"\
onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;\
document.getElementById(\'fileImportSourceFix\').value=r;\
config.macros.importTiddlers.src=r;\
document.getElementById(\'importLoad\').onclick()">\
</div><!--end FF3 FIXUP-->\
</div><!--end local-->\
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->\
<table><tr><td align=left>\
enter a URL or <a href="javascript:;" id="importSelectFeed"\
onclick="onClickImportButton(this,event)" title="select a pre-defined \'systemServer\' URL">\
select a server</a><br>\
</td><td align=right>\
<input type="checkbox" class="chk" id="importUsePassword"\
onClick="config.macros.importTiddlers.usePassword=this.checked;\
config.macros.importTiddlers.showPanel(\'importIDPWPanel\',this.checked,true);">password\
<input type="checkbox" class="chk" id="importUseProxy"\
onClick="config.macros.importTiddlers.useProxy=this.checked;\
config.macros.importTiddlers.showPanel(\'importSiteProxy\',this.checked,true);">proxy\
</td></tr></table>\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
onKeyUp="config.macros.importTiddlers.proxy=this.value"\
onChange="config.macros.importTiddlers.proxy=this.value;">\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;">\
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>\
username: <input type=text id="txtImportID" style="width:25%" \
onChange="config.options.txtRemoteUsername=this.value;">\
password: <input type=password id="txtImportPW" style="width:25%" \
onChange="config.options.txtRemotePassword=this.value;">\
</div><!--end idpw-->\
</div><!--end http-->\
</div><!--end source-->\
\
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">\
<table><tr><td align=left>\
select:\
<a href="javascript:;" id="importSelectAll"\
onclick="onClickImportButton(this);return false;" title="SELECT all tiddlers">\
all</a>\
<a href="javascript:;" id="importSelectNew"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers not already in destination document">\
added</a>\
<a href="javascript:;" id="importSelectChanges"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been updated in source document">\
changes</a>\
<a href="javascript:;" id="importSelectDifferences"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been added or are different from existing tiddlers">\
differences</a>\
</td><td align=right>\
<a href="javascript:;" id="importListSmaller"\
onclick="onClickImportButton(this);return false;" title="SHRINK list size">\
– </a>\
<a href="javascript:;" id="importListLarger"\
onclick="onClickImportButton(this);return false;" title="GROW list size">\
+ </a>\
<a href="javascript:;" id="importListMaximize"\
onclick="onClickImportButton(this);return false;" title="MAXIMIZE/RESTORE list size">\
= </a>\
</td></tr></table>\
<select id="importList" size=8 multiple\
onchange="setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)">\
<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
</select>\
<div style="text-align:center">\
<a href="javascript:;"\
title="click for help using filters..."\
onclick="alert(\'A filter consists of one or more space-separated combinations of:\\n\\ntiddler titles\\ntag:[[tagvalue]]\\ntag:[[tag expression]] (requires MatchTagsPlugin)\\nstory:[[TiddlerName]]\\nsearch:[[searchtext]]\\n\\nUse a blank filter for all tiddlers.\')"\
>filter</a>\
<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"\
title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."\
onfocus="this.select()" value=""\
onKeyUp="config.macros.importTiddlers.lastFilter=this.value"\
onChange="config.macros.importTiddlers.lastFilter=this.value;">\
<input type="button" id="importApplyFilter" style="width:20%" value="apply"\
title="filter list of tiddlers to include only those that match certain criteria"\
onclick="onClickImportButton(this)">\
</div>\
</div><!--end select-->\
\
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">\
apply tags: <input type=checkbox class="chk" id="chkImportTags" checked\
onClick="config.macros.importTiddlers.importTags=this.checked;">from source \
<input type=checkbox class="chk" id="chkKeepTags" checked\
onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing \
<input type=checkbox class="chk" id="chkAddTags" \
onClick="config.macros.importTiddlers.addTags=this.checked;\
config.macros.importTiddlers.showPanel(\'txtNewTags\',this.checked,true);\
if (this.checked) document.getElementById(\'txtNewTags\').focus();">add tags<br>\
<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15\ onfocus="this.select()" \
title="enter tags to be added to imported tiddlers" \
onKeyUp="config.macros.importTiddlers.newTags=this.value;\
document.getElementById(\'chkAddTags\').checked=this.value.length>0;" autocomplete=off>\
<nobr><input type=checkbox class="chk" id="chkSync" \
onClick="config.macros.importTiddlers.sync=this.checked;">\
link imported tiddlers to source document (for sync later)</nobr>\
</div><!--end options-->\
\
<div id="importButtonPanel" style="text-align:center">\
<input type=button id="importLoad" class="importButton btn3" value="open"\
title="load listbox with tiddlers from source document"\
onclick="onClickImportButton(this)">\
<input type=button id="importOptions" class="importButton btn3" value="options..."\
title="set options for tags, sync, etc."\
onclick="onClickImportButton(this)">\
<input type=button id="importStart" class="importButton btn3" value="import"\
title="start/stop import of selected source tiddlers into current document"\
onclick="onClickImportButton(this)">\
<input type=button id="importClose" class="importButton btn3" value="done"\
title="clear listbox or hide control panel"\
onclick="onClickImportButton(this)">\
</div>\
\
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">\
<table><tr><td style="width:65%" align="left">\
<table><tr><td align=left>\
tiddler already exists:\
</td><td align=right>\
<input type=checkbox class="chk" id="importApplyToAll" \
onclick="document.getElementById(\'importRename\').disabled=this.checked;"\
checked>apply to all\
</td></tr></table>\
<input type=text id="importNewTitle" size=15 autocomplete=off">\
</td><td style="width:34%" align="center">\
<input type=button id="importMerge"\
class="importButton" style="width:47%" value="merge"\
title="append the incoming tiddler to the existing tiddler"\
onclick="onClickImportButton(this)"><!--\
--><input type=button id="importSkip"\
class="importButton" style="width:47%" value="skip"\
title="do not import this tiddler"\
onclick="onClickImportButton(this)"><!--\
--><br><input type=button id="importRename"\
class="importButton" style="width:47%" value="rename"\
title="rename the incoming tiddler"\
onclick="onClickImportButton(this)"><!--\
--><input type=button id="importReplace"\
class="importButton" style="width:47%" value="replace"\
title="discard the existing tiddler"\
onclick="onClickImportButton(this)">\
</td></tr></table>\
</div><!--end collision-->\
';
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
var cmi=config.macros.importTiddlers; // abbreviation
var list=cmi.$('importList'); if (!list) return;
var thePanel=cmi.$('importPanel');
var theCollisionPanel=cmi.$('importCollisionPanel');
var theNewTitle=cmi.$('importNewTitle');
var count=0;
switch (which.id)
{
case 'importFromFile': // show local panel
case 'importFromWeb': // show HTTP panel
cmi.local=(which.id=='importFromFile');
cmi.showPanel('importLocalPanel',cmi.local);
cmi.showPanel('importHTTPPanel',!cmi.local);
break;
case 'importOptions': // show/hide options panel
cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
break;
case 'fileImportSource':
case 'importLoad': // load import source into hidden frame
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
if (cmi.src=='') break;
// Load document, read it's DOM and fill the list
cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
break;
case 'importSelectFeed': // select a pre-defined systemServer feed URL
var p=Popup.create(which); if (!p) return;
var tids=store.getTaggedTiddlers('systemServer');
if (!tids.length)
createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
for (var t=0; t<tids.length; t++) {
var u=store.getTiddlerSlice(tids[t].title,'URL');
var d=store.getTiddlerSlice(tids[t].title,'Description');
if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
if (!d||!d.length) d=u;
createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
function(){
var u=this.getAttribute('url');
document.getElementById('importSourceURL').value=u;
config.macros.importTiddlers.src=u;
document.getElementById('importLoad').onclick();
},
null,null,null,{url:u});
}
Popup.show(p,false);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
// create popup with feed list
// onselect, insert feed URL into input field.
break;
case 'importSelectAll': // select all tiddler list items (i.e., not headings)
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
if (list.options[t].value=='') continue;
list.options[t].selected=true;
count++;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectNew': // select tiddlers not in current document
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
list.options[t].selected=!store.tiddlerExists(list.options[t].value);
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importApplyFilter': // filter list to include only matching tiddlers
importReport(); // if an import was in progress, generate a report
clearMessage();
if (!cmi.all) // no tiddlers loaded = '0 selected'
{ displayMessage(cmi.countMsg.format([0])); return false; }
var hash=cmi.$('importLastFilter').value;
cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
refreshImportList(); // reset/resize the listbox
break;
case 'importStart': // initiate the import processing
importReport(); // if an import was in progress, generate a report
cmi.$('importApplyToAll').checked=false;
cmi.$('importStart').value=cmi.stopText;
if (cmi.index>0) cmi.index=-1; // stop processing
else cmi.index=importTiddlers(0); // or begin processing
importStopped();
break;
case 'importClose': // unload imported tiddlers or hide the import control panel
// if imported tiddlers not loaded, close the import control panel
if (!cmi.inbound) { thePanel.style.display='none'; break; }
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
break;
case 'importSkip': // don't import the tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status='skipped after asking'; // mark item as skipped
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index+1); // resume with NEXT item
importStopped();
break;
case 'importRename': // change name of imported tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status = 'renamed from '+theImported.title; // mark item as renamed
theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title
theItem.value = theNewTitle.value; // change the listbox item text
theItem.text = theNewTitle.value; // change the listbox item text
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importMerge': // join existing and imported tiddler content
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
var theText = theExisting.text+'\n----\n^^merged from: ';
theText +='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
var theDate = new Date();
var theTags = theExisting.getTags()+' '+theImported.getTags();
theImported.set(null,theText,null,theDate,theTags);
theImported.status = 'merged with '+theExisting.title; // mark item as merged
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with this item
importStopped();
break;
case 'importReplace': // substitute imported tiddler for existing tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
theImported.status = 'replaces '+theExisting.title; // mark item for replace
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importListSmaller': // decrease current listbox size, minimum=5
if (list.options.length==1) break;
list.size-=(list.size>5)?1:0;
cmi.listsize=list.size;
break;
case 'importListLarger': // increase current listbox size, maximum=number of items in list
if (list.options.length==1) break;
list.size+=(list.size<list.options.length)?1:0;
cmi.listsize=list.size;
break;
case 'importListMaximize': // toggle listbox size between current and maximum
if (list.options.length==1) break;
list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
break;
}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
if (typeof place=='string') var place=document.getElementById(place);
if (!place||!place.style) return;
if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
// if nothing to show, reset list content and size
if (!cmi.inbound) {
while (list.length > 0) { list.options[0] = null; }
list.options[0]=new Option(cmi.loadText,'',false,false);
list.size=cmi.listsize;
cmi.$('importLoad').disabled=false;
cmi.$('importLoad').style.display='inline';
cmi.$('importStart').disabled=true;
cmi.$('importOptions').disabled=true;
cmi.$('importOptions').style.display='none';
cmi.$('fileImportSource').disabled=false;
cmi.$('importFromFile').disabled=false;
cmi.$('importFromWeb').disabled=false;
cmi.$('importStart').value=cmi.startText;
cmi.$('importClose').value=cmi.doneText;
cmi.$('importSelectPanel').style.display='none';
cmi.$('importOptionsPanel').style.display='none';
return;
}
// there are inbound tiddlers loaded...
cmi.$('importLoad').disabled=true;
cmi.$('importLoad').style.display='none';
cmi.$('importOptions').style.display='inline';
cmi.$('importOptions').disabled=false;
cmi.$('fileImportSource').disabled=true;
cmi.$('importFromFile').disabled=true;
cmi.$('importFromWeb').disabled=true;
cmi.$('importClose').value=cmi.closeText;
if (cmi.$('importSelectPanel').style.display=='none')
cmi.showPanel('importSelectPanel',true);
// get the sort order
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) cmi.sort='title'; // heading
if (selectedIndex==1) cmi.sort='title';
if (selectedIndex==2) cmi.sort='modified';
if (selectedIndex==3) cmi.sort='tags';
if (selectedIndex>3) {
// display selected tiddler count
for (var t=0,count=0; t < list.options.length; t++) {
if (!list.options[t].selected) continue;
if (list.options[t].value!='')
count+=1;
else { // if heading is selected, deselect it, and then select and count all in section
list.options[t].selected=false;
for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
list.options[t].selected=true;
count++;
}
}
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
}
cmi.$('importStart').disabled=!count;
if (selectedIndex>3) return; // no refresh needed
// get the alphasorted list of tiddlers
var tiddlers=cmi.inbound;
tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
// clear current list contents
while (list.length > 0) { list.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
if (cmi.all.length==tiddlers.length)
var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
else
var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
list.options[i++]=new Option(summary,'',false,false);
list.options[i++]=new Option(((cmi.sort=='title' )?'>':indent)+' [by title]','',false,false);
list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
// output the tiddler list
switch(cmi.sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modified':
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = tiddler.modified.toLocaleDateString();
if (theSection != lastSection) {
list.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
list.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
list.selectedIndex=selectedIndex; // select current control item
if (list.size<cmi.listsize) list.size=cmi.listsize;
if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return -1;
var list=cmi.$('importList'); if (!list) return;
var t;
// if starting new import, reset import status flags
if (startIndex==0)
for (var t=0;t<cmi.inbound.length;t++)
cmi.inbound[t].status='';
for (var i=startIndex; i<list.options.length; i++) {
// if list item is not selected or is a heading (i.e., has no value), skip it
if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
continue;
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==t) break;
var inbound = cmi.inbound[j];
var theExisting = store.getTiddler(inbound.title);
// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
if (inbound.status=='added')
continue;
// don't import the 'ImportedTiddlers' history from the other document...
if (inbound.title=='ImportedTiddlers')
continue;
// if tiddler exists and import not marked for replace or merge, stop importing
if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
return i;
// assemble tags (remote + existing + added)
var newTags = '';
if (cmi.importTags)
newTags+=inbound.getTags() // import remote tags
if (cmi.keepTags && theExisting)
newTags+=' '+theExisting.getTags(); // keep existing tags
if (cmi.addTags && cmi.newTags.trim().length)
newTags+=' '+cmi.newTags; // add new tags
inbound.set(null,null,null,null,newTags.trim());
// set the status to 'added' (if not already set by the 'ask the user' UI)
inbound.status=(inbound.status=='')?'added':inbound.status;
// set sync fields
if (cmi.sync) {
if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
inbound.fields['server.type']='file';
inbound.fields['server.host']=(cmi.local?'file://':'')+cmi.src;
}
// do the import!
store.suspendNotifications();
store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
store.resumeNotifications();
}
return(-1); // signals that we really finished the entire list
}
function importStopped() {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
var theNewTitle=cmi.$('importNewTitle');
if (cmi.index==-1){
cmi.$('importStart').value=cmi.startText;
importReport(); // import finished... generate the report
} else {
// import collision...
// show the collision panel and set the title edit field
cmi.$('importStart').value=cmi.stopText;
cmi.showPanel('importCollisionPanel',true);
theNewTitle.value=list.options[cmi.index].value;
if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
onClickImportButton(cmi.lastAction);
}
}
//}}}
//{{{
function importReport() {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return;
// if import was not completed, the collision panel will still be open... close it now.
var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
// get the alphasorted list of tiddlers
var tiddlers = cmi.inbound;
// gather the statistics
var count=0; var total=0;
for (var t=0; t<tiddlers.length; t++) {
if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
if (tiddlers[t].status.substr(0,7)!='skipped') count++;
total++;
}
// generate a report
if (total) displayMessage(cmi.processedMsg.format([total]));
if (count && config.options.chkImportReport) {
// get/create the report tiddler
var theReport = store.getTiddler('ImportedTiddlers');
if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
// format the report content
var now = new Date();
var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
if (cmi.addTags && cmi.newTags.trim().length)
newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
newText += '<<<\n';
for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
newText += '<<<\n';
// update the ImportedTiddlers content and show the tiddler
theReport.text = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
theReport.modifier = config.options.txtUserName;
theReport.modified = new Date();
store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
story.displayTiddler(null,theReport.title,1,null,null,false);
story.refreshTiddler(theReport.title,1,true);
}
// reset status flags
for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
// mark document as dirty and let display update as needed
if (count) { store.setDirty(true); store.notifyAll(); }
// always show final message when tiddlers were actually loaded
if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var file='';
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeOpen);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
}
config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
if (src==undefined || !src.length) return null; // filename is required
var original=src; // URL as specified
var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
clearMessage();
displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
var txt=loadFile(src);
if (!txt) { // file didn't load, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\');
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
} else {
displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
if (callback) callback(true,original,convertUTF8ToUnicode(txt),src,null);
}
} else {
var name=config.options.txtRemoteUsername; var pass=config.options.txtRemotePassword;
var xhr=doHttp('GET',src,null,null,name,pass,callback,original,null)
if (!xhr) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,'(XMLHTTPRequest error)']));
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr) {
var cmi=config.macros.importTiddlers; // abbreviation
var src=src.replace(/%20/g,' ');
if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
cmi.all = cmi.readTiddlersFromHTML(txt);
var count=cmi.all?cmi.all.length:0;
var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
displayMessage(cmi.foundMsg.format([count,src]));
cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
cmi.$('importLastFilter').value=cmi.lastFilter;
window.refreshImportList(0);
}
config.macros.importTiddlers.filterByHash=function(src,tiddlers)
{
var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
var tids=[];
var params=hash.parseParams('anon',null,true,false,false);
for (var p=1; p<params.length; p++) {
switch (params[p].name) {
case 'anon':
case 'open':
tids.pushUnique(params[p].value);
break;
case 'tag':
if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
} else for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].isTagged(params[p].value))
tids.pushUnique(tiddlers[t].title);
break;
case 'story':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].title==params[p].value) {
tiddlers[t].changed();
for (var s=0; s<tiddlers[t].links.length; s++)
tids.pushUnique(tiddlers[t].links[s]);
break;
}
break;
case 'search':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].text.indexOf(params[p].value)!=-1)
tids.pushUnique(tiddlers[t].title);
break;
}
}
var matches=[];
for (var t=0; t<tiddlers.length; t++)
if (tids.contains(tiddlers[t].title))
matches.push(tiddlers[t]);
displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
config.macros.importTiddlers.lastFilter=hash;
return matches;
}
//}}}
/***
|Name|ImportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.4.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for ImportTiddlersPlugin|
This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Usage
<<<
{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}
invokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)
{{{<<importTiddlers link label tooltip>>}}}
The ''link'' keyword creates an "import tiddlers" link that when clicked to show/hide import control panel. ''label'' and ''tooltip'' are optional text parameters (enclosed in quotes or {{{[[...]]}}}, and allow you to override the default display text for the link and the mouseover help text, respectively.
{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content
<<importTiddlers inline>>
Enter a document URL or press "..." to select a TiddlyWiki file to import, and then press ''[open]''. //Note: When loading a remote document, there may be some delay before the list of tiddlers appears.// Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time.
Select one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can also click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in, based on a comparison of the two documents:
*''all'' selects ALL tiddlers from the import source document, even if they have not been changed.
*''new'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
*''changes'' selects only tiddlers that exist in both documents but that are newer in the source document
*''differences'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)
When you have chosen the tiddlers you want, press ''[import]'' to begin copying them to the current TiddlyWiki document. When importing a tiddler whose title matches one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''skip'', ''rename'', ''merge'' and ''replace''.
* ''skip'' bypasses importing the tiddler
* ''rename'' allows you to enter a new title in the input field to give the inbound tiddler a different name, so that both the old and new tiddlers will exist when the import is done.
* ''merge'' combines the content from both tiddlers into a single tiddler so you can then edit it to eliminate unwanted content.
* ''[replace]'' overwrites the existing tiddler with the imported one, discarding the previous tiddler content.
''Import Report History''
Whenever tiddlers are imported, a report is generated into a tiddler named [[ImportedTiddlers]], recording when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom, as well as a list of the tiddlers that were processed. When more tiddlers are imported at a later time, a new report is //added// to the existing [[ImportedTiddlers]], above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained. If this cumulative record is not desired, you can delete [[ImportedTiddlers]] at any time.
Note: You can prevent a report from being generated for any given import activity by clearing the "create a report" checkbox before pressing the ''import'' button
<<<
!!!!!Revisions
<<<
2009.02.26 [4.4.1] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.30 [4.4.0] added fallback definition of merge() for use with TW2.0.x and TW1.2.x
2008.08.12 [4.3.3] rewrite backstage and shadow tiddler definitions for easier customization
2008.08.05 [4.3.2] rewrote loadRemoteFile() to eliminate use of platform-specific fileExists() function
2008.06.29 [4.3.1] More layout/animation work for simpler sequential interaction. Code reduction/cleanup
2008.06.28 [4.3.0] HTML and CSS cleanup and tweaks to layout. Added animation to panels
2008.06.22 [4.2.0] For FireFox, use HTML with separate text+button control instead of type='file' control
2008.06.05 [4.1.0] in filterByHash(), added support for boolean tag expressions using getMatchingTiddlers() (defined by MatchTagsPlugin)
2008.05.12 [4.0.2] automatically tweak the backstage "import" task to add the ImportTiddlers control panel as an optional alternative to the standard import wizard. (Moved from BackstageTweaks).
2008.04.30 [4.0.1] trim #... suffix for loading files/URLs in IE
2008.04.30 [4.0.0] added source filtering (using URL paramifiers). Also, abbreviations for code-size reduction.
2008.04.13 [3.9.0] added 'apply to all' checkbox for collision processing
2008.03.26 [3.8.0] added support for selecting pre-defined systemServer URLs
2008.03.25 [3.7.0] added support for setting 'server' fields on imported tiddlers (for later synchronizing of changes)
2008.01.03 [3.6.0] in loadRemoteFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.10.30 [3.5.6] update [[ImportTiddlers]] shadow tiddler definition to include "inline" link, so the plugin control panel is displayed instead of the standard core interface.
2007.06.27 [3.5.5] added missing 'fields' params to saveTiddler() calls. Fixes problem where importing tiddlers would lose the custom fields. Also, moved functions for backward-compatibility with TW2.1.x to separate [[ImportTiddlersPluginPatch2.1.x]] tiddler, reducing the size of //this// plugin tiddler by a significant amount.
2007.06.25 [3.5.4] added calls to store.suspendNotifications() and store.resumeNotifications(). Eliminates redisplay processing overhead DURING import activities
2007.04.29 [3.5.3] if refreshImportList() when inbound tiddlers are loaded, change "close" button to "done", and disable certain controls to creates a modal condition, so that actions that reload tiddlers cannot be performed unless "done" is first pressed to end the mode..
2007.04.28 [3.5.2] in handler(), added param support for custom link label/prompt
2007.04.19 [3.5.1] in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content. Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
2007.03.22 [3.5.0] in refreshImportList(), add handling for 'select section' when a heading is selected. Makes it really easy to import by tag or date!
2007.03.21 [3.4.0] split loadTiddlers functionality into separate plugin (see [[LoadTiddlersPlugin]])
2007.03.20 [3.3.1] tweak to previous change to allow relative file references via http: (bypasses getLocalPath() so remote URL will be used)
2007.03.20 [3.3.0] added support for local, relative file references: in loadRemoteFile(), check for fileExists(). If not found, prepend relative path location and try again. Allows use of simple "foo.html" file references with importTiddlers and/or loadTiddlers macros
2007.02.24 [3.2.1] re-labeled control panel "open" button to "load" to avoid confusion with "open" button in system-provided Browse... dialog. (i.e., "browse, open, open" becomes "browse, open, load")
2007.02.09 [3.2.0] loadTiddlers: added support for "noReload" tag (prevents overwriting existing tiddler, even if inbound tiddler is newer)
2007.02.08 [3.1.3] loadTiddlers: added missing code and documentation for "newTags" handling (a feature change from long, long ago that somehow got lost!)
2006.11.14 [3.1.2] fix macro handler parameter declaration (double-pasted param list corrupts IE)
2006.11.13 [3.1.1] use apply() method to invoke hijacked core handler
2006.11.13 [3.1.0] hijack TW2.1 built-in importTiddlers.handler() so it can co-exist with the plugin interface 'panel'. Use macro without params (or use 'core' keyword) to display built-in core interface. Use new "link" param to embed "import tiddlers" link that shows floating panel when clicked. Renamed a few plugin utility functions so they don't collide with core internal functions. More code restructuring to come.
2006.10.12 [3.0.8] in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)
2006.09.10 [3.0.7] in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body"
2006.08.16 [3.0.6] Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with ZW and other adaptations that hijack low-level tiddler handling. Also, in CreateImportPanel(), no longer register notify to "refresh listbox after every tiddler change" (left over from old 'auto-filtered' list handling). Thanks to Bob McElrath for report/solution.
2006.07.29 [3.0.5] added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.
2006.04.18 [3.0.4] in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)
2006.04.12 [3.0.3] moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.
2006.04.12 [3.0.2] additional refactoring of 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.
2006.04.04 [3.0.1] in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section
2006.04.04 [3.0.0] Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.
2006.03.30 [2.9.1] when extracting store area from remote URL, look for "</body>" instead of "</body>\n</html>" so it will match even if the "\n" is absent from the source.
2006.03.30 [2.9.0] added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.
2006.03.28 [2.8.1] in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)
Also, when extracting store area from remote URL, explicitly look for "</body>\n</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.
2006.02.21 [2.8.0] added support for "tiddler:TiddlerName" filtering parameter in auto-import processing
2006.02.21 [2.7.1] Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)
2006.02.21 [2.7.0] Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)
2006.02.17 [2.6.0] Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.
2006.02.16 [2.5.4] added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.
2006.02.14 [2.5.3] FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
2006.02.10 [2.5.2] corrected unintended global variable in importReport().
2006.02.05 [2.5.1] moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
2006.01.18 [2.5.0] added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.
2006.01.15 [2.4.1] added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
2006.01.15 [2.4.0] Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.
2006.01.15 [2.3.2] Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)
2006.01.15 [2.3.1] Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.
2006.01.12 [2.3.0] Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.
2006.01.11 [2.2.0] Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck
2006.01.09 [2.1.1] When a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.
2006.01.08 [2.1.0] IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.
2006.01.06 [2.0.2] When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.
2006.01.04 [2.0.1] When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.
2005.12.27 [2.0.0] Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
2005.12.22 [1.3.1] tweak formatting in importReport() and add 'discard report' link to output
2005.12.03 [1.3.0] Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)
2005.11.29 [1.2.1] fixed formatting of 'detail info' in importReport()
2005.11.11 [1.2.0] added 'inline' param to embed controls in a tiddler
2005.11.09 [1.1.0] only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.
2005.10.25 [1.0.5] fixed typo in importReport() that prevented reports from being generated
2005.10.09 [1.0.4] combined documentation with plugin code instead of using separate tiddlers
2005.08.05 [1.0.3] moved CSS and HTML definitions into plugin code instead of using separate tiddlers
2005.07.27 [1.0.2] core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
2005.07.23 [1.0.1] added parameter checks and corrected addNotification() usage
2005.07.20 [1.0.0] Initial Release
<<<
On Friday, March 20, 2009 12:58:55 PM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/insideTW/|http://www.tiddlytools.com/insideTW/]]:
<<<
#[[ShowObject]] - added
<<<
----
On Tuesday, March 03, 2009 5:36:26 PM, PaulReiber loaded 14 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[CopyTiddlerPlugin]] - updated
#[[ExportTiddlersPlugin]] - updated
#[[ExportTiddlersPluginInfo]] - updated
#[[ImageSizePlugin]] - updated
#[[ImportTiddlersPlugin]] - updated
#[[ImportTiddlersPluginInfo]] - updated
#[[InlineJavascriptPlugin]] - updated
#[[InlineJavascriptPluginInfo]] - updated
#[[InstantBookmarklets]] - updated
#[[LoadRemotePlugin]] - updated
#[[OpenTaggedTiddlers]] - updated
#[[SplitTiddler]] - updated
#[[TagCloudPlugin]] - updated
#[[UnsavedChangesPlugin]] - updated
<<<
----
On Saturday, February 21, 2009 11:04:37 AM, PaulReiber loaded 1 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[CopyTiddlerPlugin]] - updated
<<<
----
On Friday, February 20, 2009 4:41:02 PM, PaulReiber imported 1 tiddler from
[[C:\Users\Paul\Desktop\OpenSourceExplorations\RaphaelDemos.html|C:\Users\Paul\Desktop\OpenSourceExplorations\RaphaelDemos.html]]:
<<<
#[[AnimeJtest]] - added
<<<
----
On Friday, February 20, 2009 12:28:06 PM, PaulReiber imported 5 tiddlers from
[[C:\Users\Paul\Desktop\animate.html|C:\Users\Paul\Desktop\animate.html]]:
<<<
#[[AnimationEffectsPlugin]] - added
#[[AnimationEffectsPluginInfo]] - added
#[[AnimeJPlugin]] - added
#[[InlineJavascriptPlugin]] - replaces InlineJavascriptPlugin - 6/11/2008 07:15:00 by ELSDesignStudios
#[[RaphaelPlugin]] - replaces RaphaelPlugin - 1/20/2009 13:18:00 by ELSDesignStudios
<<<
----
On Monday, February 09, 2009 3:18:11 PM, PaulReiber loaded 4 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[ClickifyPlugin]] - updated
#[[CopyTiddlerPlugin]] - updated
#[[CoreTweaks]] - updated
#[[TagCloudPlugin]] - updated
<<<
----
On Tuesday, January 27, 2009 6:20:37 PM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[MessageLogPlugin]] - added
<<<
----
On Tuesday, January 27, 2009 6:20:22 PM, PaulReiber imported 2 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[MissingTiddlersList]] - added
#[[MissingTiddlersPlugin]] - added
<<<
----
On Tuesday, January 27, 2009 6:18:31 PM, PaulReiber imported 2 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[ClickifyPlugin]] - added
#[[SectionLinksPlugin]] - added
<<<
----
On Tuesday, January 27, 2009 5:01:35 PM, PaulReiber loaded 1 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[CoreTweaks]] - updated
<<<
----
On Tuesday, January 27, 2009 3:59:44 PM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[RaphaelPlugin]] - added
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // there is script code
if (show) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place){"+fixup+"\n};_out(this);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run inline script code
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place){"+fixup+"\n};_out(w.output);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for InlineJavascriptPlugin|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.
<script show>
/* javascript code goes here... */
</script>Every time the tiddler content is rendered, the javascript code is automatically evaluated, allowing you to invoke 'side-effect' processing and/or produce dynamically-generated content that is then inserted into the tiddler content, immediately following the script (see below). By including the optional ''show'' keyword as the final parameter in a {{{<script>}}} marker, the plugin will also include the script source code in the output that it displays in the tiddler. This is helpful when creating examples for documentation purposes (such as used in this tiddler!)
__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
/* javascript code goes here... */
alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).
__''Loading scripts from external source files''__
<script src="URL" show>
/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers. This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu. For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines.
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu. However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//. In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.
''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax. To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script. If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered. You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.'' This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script. To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.'' This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!! To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).
Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script. As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,'' and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
document.write("The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).getAttribute("tiddler");
var size=store.getTiddlerText(title).length;
return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
document.write("<br>The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
if (!window.story) window.story=window;
var txt=place.firstChild.data;
var tid=story.findContainingTiddler(place).getAttribute('tiddler');
alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
2008.06.11 [1.9.3] added $(...) function as 'shorthand' for document.getElementById()
2008.03.03 [1.9.2] corrected fallback declaration of wikifyPlainText() (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' (fixes IE errors)
2008.02.21 [1.9.0] output from 'onclick' scripts (return value or document.write() calls) are now buffered and rendered into into a span following the script. Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed). Thanks to Xavier Verges for suggestion and preliminary code.
2008.02.14 [1.8.1] added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 [1.8.0] added support for key="X" syntax to specify custom access key definitions
2007.12.15 [1.7.0] autogenerate URI encoded HREF on links for onclick scripts. Drag links to browser toolbar to create bookmarklets. IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets. In addition, double-quotes will cause syntax errors. Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 [1.6.2] when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 [1.6.1] when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 [1.6.0] added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 [1.5.2] add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
2006.06.01 [1.5.1] when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 [1.5.0] added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 [1.4.0] added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
2005.12.13 [1.3.1] when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
2005.11.09 [1.3.0] for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
2005.11.08 [1.2.0] handle loading of javascript from an external URL via src="..." syntax
2005.11.08 [1.1.0] pass 'place' param into scripts to provide direct DOM access
2005.11.08 [1.0.0] initial release
<<<
This package provides a set of TW-compatible "form input fields" for accessing and modifying custom tiddler fields, tags, options, etc. These input fields make it easier to build application-specific View/Edit templates as well as end-user-oriented "control panels" and "fill in forms".
/%
|Name|InstantBookmarklets|
|Source|http://www.TiddlyTools.com/#InstantBookmarklets|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|instantly create bookmarklets by dragging onclick links to the browser toolbar|
See [[InlineJavascriptPluginInfo]] for bookmarklet authoring documentation
%/{{nowrap{
__[[InstantBookmarklets:|InstantBookmarklets]]__{{fine{
//drag these links to your browser toolbar!// <script label="(help...)">
alert("To create a bookmarklet, simply drag-and-drop any command link below directly onto your browser's toolbar or right-click and use 'bookmark this link' (or 'add to favorites') to add the bookmarklet to your browser's bookmarks menu. Once installed, you can use the bookmarklet with ANY TiddlyWiki document, even if the command script (and InlineJavascriptPlugin) has not been installed in that document!");
</script>}}}
//~TiddlyWiklets: {{fine{(TiddlyWiki "tear-off" utilities)}}}///%
========================== TOGGLE SITE TITLES %/
*<script label="▲ - Toggle site titles" title="show/hide SiteTitle and SiteSubtitle (header) content">
var c=document.getElementById('contentWrapper'); if (!c) return;
for (var i=0; i<c.childNodes.length; i++)
if (hasClass(c.childNodes[i],'header')) { var h=c.childNodes[i]; break; }
if (!h) return;
config.options.chkHideSiteTitles=h.style.display!='none';
h.style.display=config.options.chkHideSiteTitles?'none':'block';
saveOptionCookie('chkHideSiteTitles');
return false;
</script>/%
========================== TOGGLE LEFT SIDEBAR %/
*<<tiddler ToggleLeftSidebar with: "◄ - Toggle left sidebar">>/%
========================== TOGGLE RIGHT SIDEBAR %/
*<<tiddler ToggleRightSidebar with: "► - Toggle right sidebar">>/%
========================== TOGGLE ANIMATION EFFECTS %/
*<<tiddler ToggleAnimations with: "∞ - Toggle animation effects">>/%
========================== TOGGLE SINGLE PAGE MODE %/
*<<tiddler ToggleSinglePageMode with: "1 - Toggle single-page mode">>/%
========================== TOGGLE "FULLSCREEN" (SIDEBARS AND TITLES) %/
*<<tiddler ToggleFullScreen with: "◊ - Toggle fullscreen ON" "◊ - Toggle fullscreen OFF">>/%
========================== TOGGLE TIDDLER TITLES (and SUBTITLES) %/
*<<tiddler ToggleTiddlerTitles with: "T - Toggle tiddler titles">>/%
========================== TOGGLE TIDDLER TAGS %/
*<<tiddler ToggleTiddlerTags with: "# - Toggle tiddler tags">>/%
========================== RESTART WITHOUT RELOADING %/
*<script label="⌂ - Home" title="Restart initial page content WITHOUT RELOADING!">
story.closeAllTiddlers(); restart(); refreshPageTemplate();
return false;
</script>/%
========================== REFRESH WITHOUT RESTARTING %/
*<<tiddler RefreshPageDisplay with: "≈ - Refresh current display">>/%
========================== SHOW CURRENT VERSION, TIMESTAMP, and TIDDLER INFO %/
*<<tiddler ShowDocumentInfo>>/%
========================== RESET TIDDLYWIKI OPTION COOKIES (WITH CONFIRM) %/
*<<tiddler ResetOptionCookies>>/%
========================== CLEAR CHANGE COUNTERS %/
*<<tiddler ResetChangeCounters>>/%
========================== RESCUE STORE AREA (adapted from http://www.TiddlyWiki.com/#TiddlyBookmarklets) %/
*<<tiddler RescueStoreAreaCommand with: "∑ - Rescue current storeArea contents">>/%
========================== LOAD REMOTE PLUGINS... %/
//Load remote plugins: {{fine{(load on demand)}}}///%
========================== TiddlyTools (Eric Shulman)...%/
*[[TiddlyTools|http://www.TiddlyTools.com/]]{{block{/%
========================== LOAD IMPORT TIDDLERS PLUGIN
%/{{block{<<tiddler LoadRemotePlugin with:
[[ImportTiddlersPlugin]]
[[Load ImportTiddlersPlugin from svn.TiddlyWiki.org repository]]
[[http://svn.tiddlywiki.org/Trunk/contributors/EricShulman/plugins/ImportTiddlersPlugin.js]]
[[window.story.displayTiddler(null,"ImportTiddlers")]]
[[version.extensions.ImportTiddlersPlugin!=undefined]]
[[window.story.displayTiddler(null,"ImportTiddlers")]]
[[ImportTiddlersPluginConfig]]
>>}}}/%
========================== LOAD TIDDLER TWEAKER PLUGIN
%/{{block{<<tiddler LoadRemotePlugin with:
[[TiddlerTweakerPlugin]]
[[Load TiddlerTweakerPlugin from svn.TiddlyWiki.org repository]]
[[http://svn.tiddlywiki.org/Trunk/contributors/EricShulman/plugins/TiddlerTweakerPlugin.js]]
[[window.story.displayTiddler(null,'TiddlerTweaker')]]
[[version.extensions.TiddlerTweakerPlugin!=undefined]]
>>}}}/%
========================== LOAD REARRANGE TIDDLERS PLUGIN
%/{{block{<<tiddler LoadRemotePlugin with:
[[RearrangeTiddlersPlugin]]
[[Load RearrangeTiddlersPlugin from www.TiddlyTools.com]]
[[http://www.TiddlyTools.com/plugins/RearrangeTiddlersPlugin.js]]
[[window.story.forEachTiddler(function(t,e){window.story.refreshTiddler(t,null,true)}); window.refreshDisplay()]]
[[Story.prototype.rearrangeTiddlersHijack_refreshTiddler!=undefined]]
>>}}}/%
%/}}}/%
========================== Abego Software (Udo Borkowski)...%/
*[[Abego Software|http://tiddlywiki.abego-software.de/]]{{block{/%
========================== LOAD YOURSEARCH PLUGIN
%/{{block{<<tiddler LoadRemotePlugin with:
[[YourSearchPlugin]]
[[Load YourSearchPlugin from tiddlywiki.abego-software.de]]
[[http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.1.js]]
[[window.refreshPageTemplate()]]
[[version.extensions.YourSearchPlugin!=undefined]]
>>}}}/%
%/}}}/%
========================== Firefox Privileges (Xavier Vergés) %/
*[[FirefoxPrivileges.TiddlySpot.com|http://firefoxprivileges.tiddlyspot.com/]]{{block{/%
========================== LOAD AND DISPLAY FIREFOX PRIVILEGE MANAGER
%/{{block{<<tiddler LoadRemotePlugin with:
[[Firefox Privilege Manager]]
[[Load Firefox Privilege Manager from svn.TiddlyWiki.org repository]]
[[http://svn.tiddlywiki.org/Trunk/contributors/XavierVerges/plugins/FirefoxPrivilegesPlugin.js]]
[[config.macros.firefoxPrivileges.onload()]]
[[config.macros.firefoxPrivileges!=undefined]]
[[backstage.switchTab("firefoxPrivileges")]]
>>}}}/%
%/}}}/%
========================== Jash (Billy Reisinger) %/
*[[BillyReisinger.com:|http://www.billyreisinger.com/jash/]]{{block{/%
========================== LOAD AND DISPLAY JAVASCRIPT SHELL
%/{{block{<<tiddler LoadRemotePlugin with:
[[Jash (JAvascript SHell)]]
[[Load Jash (JAvascript SHell) from www.billyreisinger.com/jash]]
[[http://www.billyreisinger.com/jash/source/latest/Jash.js]]
[[window.jash.close()]]
[[window.jash!=undefined]]
>>}}}/%
%/}}}
}}}/% END NOWRAP %/
/*{{{*/
/**
* $Id: Jash.css,v 1.3 2007/11/16 03:06:33 billyreisinger Exp $
*
* Jash - JavaScript Shell
* Copyright: 2007, Billy Reisinger
* Documentation: http://www.billyreisinger.com/jash/
* License: GNU General Public License - http://www.gnu.org/licenses/gpl.html
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
#JashParent {
width: 581px;
height: 450px;
border: 1px solid gray;
-moz-border-radius: 10px; /* ELS */
-webkit-border-radius: 10px; /* ELS */
color: black;
z-index: 10000;
overflow: hidden;
background: #ccc;
opacity: 0.90;
filter: alpha(opacity=90);
position: absolute;
left: 25%;
color: black;
font-family: monospace;
margin: 0;
}
#JashParent div {
margin: 0;
}
#JashParent a, #JashParent a:visited, #JashParent a:active, #JashParent a:hover {
text-decoration: none;
color: black;
}
.transparentMode {
opacity: 0.20 !important;
filter: alpha(opacity=20) !important;
}
#JashDragBar {
BACKGROUND: gray;
CURSOR: move;
COLOR: white;
font-family: arial,helvetica,sans-serif; /* ELS - changed from monospace to arial,helvetica,sans-serif */
font-weight: bold;
text-indent: 4px;
font-size: 14pt; /* ELS - changed from 14px to 14pt */
HEIGHT: 25px;
TEXT-ALIGN: left;
overflow: hidden;
border: 1px outset white;
-moz-border-radius-topleft: 10px; /* ELS */
-moz-border-radius-topright: 10px; /* ELS */
-webkit-border-top-left-radius: 10px; /* ELS */
-webkit-border-top-right-radius: 10px; /* ELS */
}
.JashXButton {
border: 1px solid white;
-moz-border-radius: 5px; /* ELS */
-webkit-border-radius: 5px; /* ELS */
color: white !important;
position: absolute;
background: #bbb;
width: 20px;
text-align: center;
display: block;
right: 3px; _right: 1px;
top: 4px; _top: 1px;
font-family: arial,helvetica,sans-serif; /* ELS - changed to arial,helvetica,sans-serif */
font-size: 8pt; /* ELS - changed from 18px to 8pt */
cursor: pointer;
}
a.JashXButton:hover {
background: #ddd;
}
#JashTextareaWrap {
width: 100%;
_height: 420px;
}
html>body #JashTextareaWrap {
height: 100%;
}
#JashOutput {
border: 2px inset white;
FONT-SIZE: 10px;
font-family: "Lucida Console", monaco, monospace;
BACKGROUND: black;
width: 99%;
COLOR: lightgreen;
PADDING: 2px;
height: 60%;
height: expression(parseInt(this.parentNode.parentNode.offsetHeight * (3/5)) + 'px');
}
#JashInput {
padding: 2px;
WIDTH: 99%;
border: 2px inset white;
-moz-border-radius-bottomleft: 10px; /* ELS */
-moz-border-radius-bottomright: 10px; /* ELS */
-webkit-border-bottom-left-radius: 10px; /* ELS */
-webkit-border-bottom-right-radius: 10px; /* ELS */
HEIGHT: 25%;
font-family: monospace;
font-size: 11px;
height: expression(parseInt(this.parentNode.parentNode.offsetHeight * (3/13)) + 'px');
}
#JashParent .cssEntry {
background: lightgreen;
font-size: 11px;
font-family: monospace;
}
#JashBottomBar {
BACKGROUND: #ccc;
POSITION: relative;
HEIGHT: 20px;
overflow: hidden;
margin-top: 2px;
}
#JashBottomBar a {
HEIGHT: 14px;
font-size: 9px;
font-weight: normal;
font-family: arial;
float: left;
padding: 4px;
background: #eee;
cursor: pointer;
border: 1px outset white;
margin-right: 1px;
}
#JashBottomBar a:hover {
padding-top: 3px;
padding-bottom: 5px;
background-color: white;
}
#JashBottomBar a:active, #JashBottomBar a:focus {
padding-top: 5px;
padding-bottom: 3px;
background-color: #ddd;
}
#JashResizeButton {
BORDER: 1px solid gray;
-moz-border-radius-bottomright: 10px; /* ELS */
-webkit-border-bottom-right-radius: 10px; /* ELS */
BACKGROUND: #eee;
WIDTH: 17px;
height: 17px;
line-height: 0;
CURSOR: move;
position: absolute;
bottom: -1px;
right: -1px;
z-index: 2000;
}
/*}}}*/
//{{{
// Jash - JavaScript Shell
// Copyright: 2007, Billy Reisinger
// Documentation: http://www.billyreisinger.com/jash/
// License: GNU General Public License - http://www.gnu.org/licenses/gpl.html
// MODIFIED BY ELS (www.TiddlyTools.com) on 12/11/2007 for embedded use within TiddlyWiki documents
// * disabled setting of stylesheet from remote URL - use internal CSS definitions instead (see [[jash.css]] tiddler)
// * disabled automatic display on startup (but initialize jash panel so ESC key will work)
window.Jash=function(){this.jashRoot="http://www.billyreisinger.com/jash/source/latest/";this.domGetElFunctions={id:new Array("document.getElementById","$"),className:new Array("getElementsByClassName","$C")};var line="-------------------------------------------------";var _null="nooutput";this.revision="$Revision: 1.14 $".replace(/(\$|[A-Za-z]|\s|:)/g,'');this.version="$Name: REL_1_35_7 $".replace(/\$|Name:|\s|REL_/g,'').replace(/_/g,'.');this.versionDate="$Date: 2007/11/16 03:24:54 $";this.main=function(){this.browser=this.returnBrowserType();this.lineNumber=0;this.mainBlock;this.output=document.getElementById("JashOutput");this.input;this.outputHistory=new Array();this.cssEvalFlag=false;this.innerHtmlInspection=false;this.accessKeyText=this.getAccessKeyText();this.defaultText="Jash, v"+this.version+"\nEnter \"jash.help()\" for a list of commands.\n";this.cls=this.clear;this.tabIndexIndex=0;this.currentNode={};this.tips=["Did you know?\nThe DOM Inspector will automatically put\n an element with an ID in the input field for you.","Did you know?\nYou can tie this script into your own to jash scripts. Use 'jash.methodName' anywhere\n in your scripts, and pull\n up this window before executing to see\n the results.","Did you know?\nUse jash.stopWatch.start() and jash.stopWatch.stop() to\n time execution speeds! Handy for optimization.","Did you know?\nPress TAB to complete a function, method, or property name.\n If more than one match is found, a list of possible\n matches will appear.","Did you know?\nYou can use jash.show() to show a list of the names\nand types of an object's members.\nOn the other hand, jash.dump will show names and\n_values_ of an object's members.","Whoa ---- you can now tab-complete HTML element ids after typing document.getElementsById(' (or the '$' shorthand if using Prototype). This also works with class names (i.e. document.getElementsByClassName)"]
this.defaultText+=line+"\n"+this.tips[(parseInt((Math.random()*10)%this.tips.length))]+"\n"+line+"\n";
/*
ELS: disable loading of remote stylesheet! (use styles from [[jash.css]] tiddler intead)
if(this.returnBrowserType()!="sa"){this.stylesheet=document.body.appendChild(document.createElement('link'));}else{this.stylesheet=document.getElementsByTagName("head")[0].appendChild(document.createElement("link"));}
this.stylesheet.type='text/css';this.stylesheet.rel='stylesheet';this.stylesheet.href=this.jashRoot+'Jash.css';
*/
this.create();Jash.TabComplete.prototype=this;this.tabComplete=new Jash.TabComplete();Jash.Evaluator.prototype=this;this.evaluation=new Jash.Evaluator();this.history=new Jash.History();var _self=this;window.setTimeout(function(){_self.input.focus();},500);if(typeof event!="undefined")delete event;}
this.returnBrowserType=function(){if(window.navigator.userAgent.toLowerCase().indexOf("opera")!=-1){return"op";}
if(window.navigator.userAgent.toLowerCase().indexOf("msie")!=-1){return"ie";}
if(window.navigator.userAgent.toLowerCase().indexOf("firefox")!=-1){return"ff";}
if(window.navigator.userAgent.toLowerCase().indexOf("safari")!=-1){return"sa";}}
this.returnOsType=function(){var ua=window.navigator.userAgent.toLowerCase();if(ua.indexOf("macintosh")!=-1){return"mac";}else if(ua.indexOf("windows")!=-1){return"win";}else if(ua.indexOf("linux i686")!=-1){return"linux";}}
this.getAccessKeyText=function(){var txt;var agt=this.returnOsType();switch(this.browser){case"ie":txt="Alt";break;case"ff":if(agt=="mac"){txt="Ctrl";}else if(agt=="linux"){txt="Alt";}else{txt="Alt-Shift";}
break;case"op":txt="Shift-Esc";break;case"sa":if(agt=="mac"){txt="Ctrl";}else{txt="Alt";}
break;default:txt="Alt";break;}
return txt;}
this.print=function(text,clear,suppressLineNumbers,autoscroll){clear=(typeof clear!="undefined")?clear:false;autoscroll=(typeof autoscroll!="undefined")?autoscroll:true;if(this.output==null||document.getElementById("JashParent")==null){this.create();this.output=document.getElementById("JashOutput");this.mainBlock=document.getElementById("JashParent");}
if(clear){this.clear();}
if(text!=""){if(typeof suppressLineNumbers!="undefined"&&!suppressLineNumbers){this.output.value+=this.lineNumber+". ";}
this.output.value+=text+"\n";if(autoscroll){this.output.scrollTop=this.output.scrollHeight;}
this.lineNumber++;}
return _null;}
this.show=function(obj){this.print(line,false,true);var out="";this.lineNumber=0;for(var p in obj){if(typeof obj[p]=="function"){var t=obj[p].toString();t=t.replace(/[\x0A\x0D]/g,"").replace(/\s+/g,"").replace(/\{.+\}/g,"{ ... }");t=t.replace(p,"");t=p+": "+t;}else{t=p+": "+typeof obj[p];}
out+=++this.lineNumber+". "+t+"\n";}
this.print(out,false,true);this.print(line,false,true);this.output.scrollTop=this.output.scrollHeight;return _null;}
this.dump=function(obj){if(typeof obj=="string"){this.print(obj);}else{this.print(line,false,true);var out=new Array();if(typeof obj.push=="undefined"){for(var th in obj){out.push(++this.lineNumber+". "+th+" = "+obj[th]);}}else{for(var i=0;i<obj.length;i++){out.push(++this.lineNumber+". "+obj[i]);}}
this.print(out.join("\n"),false,true);this.print(line,false,true);this.output.scrollTop=this.output.scrollHeight;}
return _null;}
this.clear=function(){this.outputHistory.push(this.output.value);this.output.value="";this.input.focus();return _null;}
this.showOutputHistory=function(){this.outputHistory.push(this.output.value);this.dump(this.outputHistory);}
this.assignInputKeyEvent=function(keyCode){if(keyCode==13){this.evaluation.evaluate(this.input.value);this.input.value="";return false;}else if(keyCode==38){if(this.browser!="op"){this.input.value=this.history.getPreviousInput();}
return false;}else if(keyCode==40){if(this.browser!="op"){this.input.value=this.history.getNextInput();}
return false;}else if(keyCode==9){this.tabComplete.tabComplete();return false;}}
this.getXBrowserYOffset=function(){var y;if(self.pageYOffset){y=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){y=document.documentElement.scrollTop;}else if(document.body){y=document.body.scrollTop;}
return y;}
this.getMouseXY=function(e){var tempX=0
var tempY=0
if(window.event){if(document.documentElement&&document.documentElement.scrollTop){tempX=window.event.clientX+document.documentElement.scrollLeft;tempY=window.event.clientY+document.documentElement.scrollTop;}else{tempX=window.event.clientX+document.body.scrollLeft;tempY=window.event.clientY+document.body.scrollTop;}}else{tempX=e.pageX;tempY=e.pageY;}
return{x:tempX,y:tempY};}
this.getDimensions=function(el){var dims={}
if(document.all){dims.x=el.offsetWidth;dims.y=el.offsetHeight;}else{dims.x=parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("width"));dims.y=parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("height"));}
return dims;}
this.addEvent=function(obj,eventName,func){if(obj.addEventListener)
return obj.addEventListener(eventName,func,true);else if(obj.attachEvent){obj.attachEvent("on"+eventName,func);return true;}
return false;}
this.findElementPosition=function(obj){var curleft=0;var curtop=0;if(obj.offsetParent){curleft=obj.offsetLeft
curtop=obj.offsetTop
while(obj=obj.offsetParent){curleft+=obj.offsetLeft
curtop+=obj.offsetTop}}
return[curleft,curtop];}
this.create=function(){if(document.getElementsByTagName("frameset").length>0){alert("Jash currently does not support pages with frames.");return;}
var self=this;var debugParent=document.createElement("div");var windowScrollY=0;if(document.documentElement&&document.documentElement.scrollTop){windowScrollY=document.documentElement.scrollTop;}else if(document.body){windowScrollY=document.body.scrollTop}else{windowScrollY=window.scrollY;}
debugParent.style.top=windowScrollY+50+"px";debugParent.id="JashParent";
/*
ELS: 12/12/2007 - REMOVED ESC HANDLER SO OTHER PAGE ELEMENTS GET THEM!... SEE BELOW FOR ALTERNATIVE SHIFT-ESC HANDLER
this.addEvent(document,"keydown",function(e){e=(typeof window.event!="undefined")?window.event:e;if(e.keyCode=="27"){if(typeof e.shiftKey=="undefined"||!e.shiftKey && (this.mainBlock.style.display!="none")){self.close();}}});
*/
var textareaWrap=document.createElement("div");textareaWrap.id="JashTextareaWrap";var debugOutput=document.createElement("textarea");debugOutput.id="JashOutput";debugOutput.wrap="off";debugOutput.readOnly="true";debugOutput.value=this.defaultText;var inp=document.createElement("textarea");inp.id="JashInput";var last="";inp.onkeydown=function(e){e=(typeof window.event!="undefined")?window.event:e;return self.assignInputKeyEvent(e.keyCode);}
inp.onkeypress=function(e){e=(typeof window.event!="undefined")?window.event:e;var k=e.keyCode;if(!self.evaluation.cssEvalFlag){if(k==9||k==13||k==38||k==40){if(k!=40&&this.browser!="ie"){return false;}}}else if(k==9){return false;}}
var dragBut=document.createElement("div");dragBut.innerHTML="Jash";dragBut.id="JashDragBar";dragBut.onmousedown=function(e){e=(typeof window.event!="undefined")?window.event:e;var xplus=(typeof e.layerX=="undefined")?e.offsetX:e.layerX;var yplus=(typeof e.layerY=="undefined")?e.offsetY:e.layerY;document.onmousemove=function(e){var coords=self.getMouseXY(e);document.getElementById("JashParent").style.top=coords.y-yplus+"px";document.getElementById("JashParent").style.left=coords.x-xplus+"px";}
return false;}
document.onmouseup=function(){document.onmousemove=null;};dragBut.onclick=function(){return false;}
var xBut=document.createElement("a");xBut.className="JashXButton";xBut.innerHTML="X";xBut.href="#";xBut.onclick=function(){self.close();return false;}
var clearBut=document.createElement("a");clearBut.innerHTML="Clear ("+this.accessKeyText+"-C)";clearBut.accessKey="C";clearBut.className="JashButton";clearBut.onclick=function(){self.clear();return false;}
this.setCrossBrowserAccessKeyFunctionForAnchor(clearBut);var evalBut=document.createElement("a");evalBut.value="Evaluate ("+this.accessKeyText+"-Z)";evalBut.innerHTML="Evaluate ("+this.accessKeyText+"-Z)";evalBut.accessKey="Z";evalBut.className="JashButton";evalBut.title="Evaluate current input ("+this.accessKeyText+"-Z)";evalBut.onclick=function(){self.evaluation.evaluate(inp.value);if(!self.evaluation.cssEvalFlag){inp.value="";}
inp.focus();return false;}
this.setCrossBrowserAccessKeyFunctionForAnchor(evalBut);var helpBut=document.createElement("a");helpBut.innerHTML="Help";helpBut.className="JashButton";helpBut.title="Help: show list of commands (or type jash.help(); )";helpBut.onclick=function(){self.help();}
var domBut=document.createElement("a");domBut.innerHTML="Mouseover DOM ("+this.accessKeyText+"-X)";domBut.title="Mouseover DOM: toggle to turn on/off inspection of document nodes ("+this.accessKeyText+"-X)";domBut.className="JashButton";domBut.accessKey="X";domBut.tabIndex="4";this.domActive=false;domBut.onclick=function(){if(!self.domActive){document.body.onmouseover=function(e){if(typeof e=="undefined"){e=window.event;}
self.showNodes(e);}
self.setButtonVisualActiveState(domBut,"on");self.domActive=true;}else{document.body.onmouseover=function(){}
self.domActive=false;self.setButtonVisualActiveState(domBut,"off");}
return _null;}
this.setCrossBrowserAccessKeyFunctionForAnchor(domBut);var innerHtmlInspectBut=document.createElement("a");innerHtmlInspectBut.innerHTML="innerHTML Dump ("+this.accessKeyText+"-A)";innerHtmlInspectBut.title="innerHTML Inspect: toggle to turn on/off innerHTML inspection of document nodes ("+this.accessKeyText+"-A)";innerHtmlInspectBut.className="JashButton";innerHtmlInspectBut.accessKey="A";innerHtmlInspectBut.tabIndex="5";this.innerHtmlInspection=false;innerHtmlInspectBut.onclick=function(){self.innerHtmlInspection=!self.innerHtmlInspection;self.setButtonVisualActiveState(innerHtmlInspectBut,self.innerHtmlInspection?"on":"off");return _null;}
this.setCrossBrowserAccessKeyFunctionForAnchor(innerHtmlInspectBut);var cssBut=document.createElement("a");cssBut.innerHTML="CSS Input ("+this.accessKeyText+"-S)";cssBut.title="CSS Input: turn on CSS input to enter arbitrary CSS ("+this.accessKeyText+"-S)";cssBut.className="JashButton";cssBut.accessKey="S";cssBut.onclick=function(){if(!self.evaluation.cssEvalFlag){self.setButtonVisualActiveState(cssBut,"on");self.evaluation.cssEvalFlag=true;inp.className="cssEntry";if(document.getElementById("JashStyleInput")!=null){self.evaluation.styleInputTag.disabled=false;}
inp.value="";}else{self.setButtonVisualActiveState(cssBut,"off");inp.className="";self.evaluation.cssEvalFlag=false;if(document.getElementById("JashStyleInput")!=null){self.evaluation.styleInputTag.disabled=true;}
inp.value="";}
inp.focus();return _null;}
this.setCrossBrowserAccessKeyFunctionForAnchor(cssBut);var resizeBut=document.createElement("div");resizeBut.id="JashResizeButton";this.minDims={x:100,y:100};resizeBut.onmousedown=function(e){e=(typeof window.event!="undefined")?window.event:e;var originalDims=self.getDimensions(textareaWrap);var originMouseDims=self.getMouseXY(e);document.onmousemove=function(e){var newMouseDims=self.getMouseXY(e);var newWidth=originalDims.x+(newMouseDims.x-originMouseDims.x);if(newWidth<self.minDims.x){newWidth=self.minDims.x;}
textareaWrap.style.width=newWidth+"px";debugParent.style.width=newWidth+"px";var newHeight=originalDims.y+(newMouseDims.y-originMouseDims.y);if(newHeight<self.minDims.y){newHeight=self.minDims.y;}
textareaWrap.style.height=newHeight+"px";debugParent.style.height=newHeight+"px";}
document.onmouseup=function(){document.onmousemove="";}}
var bottomBar=document.createElement("div");bottomBar.id="JashBottomBar";debugParent.appendChild(dragBut);debugParent.appendChild(xBut);bottomBar.appendChild(evalBut);bottomBar.appendChild(cssBut);bottomBar.appendChild(domBut);bottomBar.appendChild(innerHtmlInspectBut);bottomBar.appendChild(clearBut);bottomBar.appendChild(helpBut);debugParent.appendChild(bottomBar);debugParent.appendChild(resizeBut);document.body.appendChild(debugParent);textareaWrap.appendChild(debugOutput);textareaWrap.appendChild(inp);debugParent.appendChild(textareaWrap);this.bottomBar=document.getElementById("JashBottomBar");this.dragBar=document.getElementById("JashDragBar")
this.output=document.getElementById("JashOutput");this.input=document.getElementById("JashInput");this.mainBlock=debugParent;this.addEvent(window,'scroll',function(){debugParent.style.top=50+self.getXBrowserYOffset()+'px';});}
this.setButtonVisualActiveState=function(button,state){if(state=="on"){button.style.backgroundColor="lightgreen";}else{button.style.backgroundColor="";}}
this.help=function(){var out=new Array();out.push(line);out.push("Jash v"+this.version+" "+this.versionDate.replace(/\$/g,''),true);out.push("http://www.billyreisinger.com/jash/documentation.html");out.push(line);out.push("METHODS");out.push(line);out.push("this.cls() - clear console and terminal");out.push("jash.print(str,clear) - output str to console ~~ str = string ~~ clear = true|false: clear console before output");out.push("this.close() - close this console");out.push("this.dump(obj) - output object and members to console");out.push("this.show(obj) - print out the names and types (only) of all members of obj");out.push("this.stopWatch.start() - start timer");out.push("this.stopWatch.stop() - end timer and return result in ms");out.push("this.kill(HTML Element) - remove an element from the page.");out.push("this.getDimensions(HTML Element) - get width, height dimensions of an html element. Returns an object [x,y]");out.push(line);out.push("KEYSTROKES");out.push(line);out.push("press up arrow in input field to retrieve last input");out.push("press ESC to show/hide console");out.push("press "+this.accessKeyText+"-Q to turn on/off Transparent mode, so you can see through the Jash.");out.push("press ENTER in input field to enter a command");out.push("press TAB to auto-complete input");out.push("press "+this.accessKeyText+"-Z to evaluate input");out.push("press "+this.accessKeyText+"-X to activate/deactivate DOM inspector");out.push("press "+this.accessKeyText+"-A to activate/deactivate innerHTML dump (only works w/ DOM inspector)");out.push("press "+this.accessKeyText+"-C to clear output and input");out.push("press "+this.accessKeyText+"-S to turn on/off CSS input mode. In CSS input mode, you can enter arbitrary CSS selectors and rules, as you would normally do in a CSS stylesheet.");this.print(out.join("\n"));return _null;}
this.close=function(){if(this.mainBlock.style.display=="none"){this.mainBlock.style.display="block";this.input.focus();}else{this.mainBlock.style.display="none";}}
this.setCrossBrowserAccessKeyFunctionForAnchor=function(el){var self=this;el.tabIndex=++this.tabIndexIndex;if(this.browser=="ie"){el.onfocus=function(){if(window.event.altKey){el.onclick();}
self.input.focus();}}}
this.stopWatch={t_start:0,t_end:0,t_total:0,start:function(){t_start=new Date().getTime();return t_start;},stop:function(){t_end=new Date().getTime();t_total=t_end-t_start;return(t_total);}}
this.showNodes=function(e){if(typeof e=="undefined")e=window.event;var el=typeof e.target=="undefined"?e.srcElement:e.target;this.currentNode=el;var childMost=this.identifyNode(el,false);var out="";var childmostTxt="childmost..... "+childMost.txt+"\n";while(el=el.parentNode){if(el.nodeName.toLowerCase()=="html"){out="parentmost.... <html>\n"+out;break;}
out=this.identifyNode(el).txt+"\n"+out;}
out="**** PRESS "+this.accessKeyText+"-X TO PAUSE / UNPAUSE ****\n"+out;out+=childmostTxt;this.print(out,true,true,false);if(this.innerHtmlInspection){this.print("INNER HTML");if(this.currentNode.innerHTML.indexOf("<")!=-1){this.print(Jash.Indenter.indent(this.currentNode.innerHTML),false,true,false);}else{this.print(this.currentNode.innerHTML,false,true,false);}}
if(!this.evaluation.cssEvalFlag){if(childMost.id!=""){if(typeof $!="undefined"){this.input.value='$("'+childMost.id+'")';}else{this.input.value='document.getElementById("'+childMost.id+'")';}}else{this.input.value="this.currentNode";}}}
this.identifyNode=function(el,showDots){showDots=typeof showDots=="boolean"?showDots:true;var out={txt:"",id:""};if(showDots)out.txt+=".............. ";out.txt+="<"+el.nodeName.toLowerCase();for(var i=0;i<el.attributes.length;i++){if((this.browser=="ie"&&el.attributes[i].specified===true)||this.browser!="ie"){out.txt+=" "+el.attributes[i].name;out.txt+="=\""+el.attributes[i].value+"\"";}}
out.txt+=">";return out;}
this.kill=function(){this.currentNode.parentNode.removeChild(this.currentNode);}}
Jash.Evaluator=function(){this.cssEvalFlag=false;var _null="nooutput";this.evaluate=function(input){if(input=="")return false;this.history.add(input);if(this.cssEvalFlag){this.evalCss(input);this.print(input);}else{var output=this.evalJs(input);if(typeof output!="undefined"){this.print(">> "+input);this.print(output);}}}
this.evalJs=function(input){try{var result;if(this.browser=="ie"){result=eval(input);}else{result=window.eval(input);}
if(result!=null&&result.toString()!=_null){return(result.toString());}else{return"null"}}catch(e){return(e.message);}}
this.evalCss=function(input){try{this.insertStyleRule(input);}catch(e){}
return input;}
this.insertStyleRule=function(rule){var lastStyleSheetIndex=document.styleSheets.length-1;if(document.getElementById("JashStyleInput")==null){this.styleInputTag=document.createElement("style");this.styleInputTag.id="JashStyleInput";this.styleInputTag.type="text/css";document.body.appendChild(this.styleInputTag);}
if(this.browser=="ff"||this.browser=="op"){this.styleInputTag.innerHTML+=rule+"\n";}else if(this.browser=="ie"||this.browser=="sa"){if(this.browser=="ie"){var i=0;}else if(this.browser="sa"){var i=document.styleSheets.length-1;}
var rulesArray=rule.split("}");for(var t=0;t<rulesArray.length;t++){var ruleSplit=rulesArray[t].split("{");var selectors=ruleSplit[0].split(",");for(var k=0;k<selectors.length;k++){document.styleSheets[i].addRule(selectors[k],ruleSplit[1]);}}}
return"";}
return this;}
Jash.History=function(){this.entries=new Array('');this.position=0;}
Jash.History.prototype={add:function(input){this.entries.push(input);this.position=this.entries.length-1;},getPreviousInput:function(){if(this.position<0){return'';}
var entry=typeof this.entries[this.position]!="undefined"?this.entries[this.position]:'';if(this.position>0){this.position--;}
return entry;},getNextInput:function(){if(this.position+1<this.entries.length){return this.entries[++this.position];}else{return'';}}}
Jash.Indenter={indentChar:"\t",nodesCommonlyUnclosed:new Array("link ","img ","meta ","!DOCTYPE ","input ","param","hr","br"),stringRepeat:function(stringToRepeat,times){var string=new Array();for(var i=0;i<times;i++){string.push(stringToRepeat);}
return string.join('');},closeUnclosedNode:function(str){for(var k=0;k<this.nodesCommonlyUnclosed.length;k++){var reg=new RegExp("^"+this.nodesCommonlyUnclosed[k].toLowerCase());if(str.toLowerCase().match(reg)){return str.replace(">","/>");}}
return str;},indentAndAdd:function(level,string,arr){var indents=this.stringRepeat(this.indentChar,level);arr.push(indents+string);return arr;},indent:function(source){var source=source;var arr=new Array();source=source.replace(/[\n\r\t]/g,'');source=source.replace(/>\s+/g,">");source=source.replace(/\s+</g,"<");var splitsrc=source.split("<");for(i=0;i<splitsrc.length;i++){splitsrc[i]=this.closeUnclosedNode(splitsrc[i]);}
source=splitsrc.join("<");var level=0;var sourceLength=source.length;var position=0;while(position<sourceLength){if(source.charAt(position)=='<'){var startedAt=position;var tagLevel=1;if(source.charAt(position+1)=='/'){tagLevel=-1;}
if(source.charAt(position+1)=='!'){tagLevel=0;}
while(source.charAt(position)!='>'){position++;}
if(source.charAt(position-1)=='/'){tagLevel=0;}
var tagLength=position+1-startedAt;if(tagLevel===-1){level--;}
arr=this.indentAndAdd(level,source.substr(startedAt,tagLength),arr);if(tagLevel===1){level++;}}
if((position+1)<sourceLength){if(source.charAt(position+1)!=='<'){startedAt=position+1;while(source.charAt(position)!=='<'&&position<sourceLength){position++;}
if(source.charAt(position)==='<'){tagLength=position-startedAt;arr=this.indentAndAdd(level,source.substr(startedAt,tagLength),arr);}}else{position++;}}else{break;}}
return arr.join("\n");}}
Jash.Profiler=function(func,onFinish){this.func=func;this.time=0;this.defaultOnFinish=function(){};this.results=new Array();this.onFinish=typeof onFinish!="function"?this.defaultOnFinish:onFinish;var self=this;this.reverseWhile=function(reps){this.stopWatch.start();while(reps>0){this.func();reps--;}
return this.stopWatch.stop();}
this.forLoop=function(reps){this.stopWatch.start();for(i=0;i<reps;i++){this.func();}
return this.stopWatch.stop();}
this.loop=function(kind,reps){if(!this.results[kind]){this.results[kind]=new Array();}
var repsMemberName="r_"+reps;if(!this.results[kind][repsMemberName]){this.results[kind][repsMemberName]=new Array();}
var time=this[kind](reps);this.results[kind][repsMemberName].push(time);}
this.runOnce=function(){if(!this.results.runOnce){this.results.runOnce=new Array();}
this.stopWatch.start();func();this.results.runOnce.push(this.stopWatch.stop());}
this.stopWatch={t_start:0,t_end:0,t_total:0,start:function(){t_start=new Date().getTime();return t_start;},stop:function(){t_end=new Date().getTime();t_total=t_end-t_start;self.time=t_total;return t_total;}}
this.average=function(arr){var sum=0;for(i=0;i<arr.length;i++){sum+=arr[i];}
return sum/arr.length}
this.multiPass=function(passes,type,reps){if(typeof type=="undefined"){type="runOnce";}else if(typeof this[type]=="undefined"){jash.print("Error: the loop type '"+type+"' does not exist");return false;}
var self=this;if(type=="runOnce"){if(passes<1){self.reportProfile(Math.round(this.average(this.results.runOnce)),type,reps);}else{window.setTimeout(function(){self.runOnce();self.multiPass(--passes,type);},50);}}else{if(passes<1){var repsMemberName="r_"+reps;self.reportProfile(Math.round(this.average(this.results[type][repsMemberName])),type,reps);}else{window.setTimeout(function(){self.loop(type,reps);self.multiPass(--passes,type,reps);},50);}}}
this.reportProfile=function(avgMs,type,reps){var line="-------PROFILER----------------------------------------------";var str=line+"\n"+this.func+"\n"+line+"\n";str+="Type of profile: "+type+"\n";if(typeof reps!="undefined"){str+="Loop iterations: "+reps+"\n";}
str+="Average execution time: "+avgMs+"ms"+"\n";if(type=="runOnce"){howManyTimes=this.results.runOnce.length;}else{repsMemberName="r_"+reps;howManyTimes=this.results[type][repsMemberName].length;}
str+="Average calculated from "+howManyTimes+" pass(es)\n";str+=line+"\n";jash.print(str);}}
Jash.TabComplete=function(){this.tabComplete=function(e){e=(typeof window.event!="undefined")?window.event:e;var inputText=this.input.value;var match=null;if(match=this.searchInputForDomGetElFunctions(inputText)){this.tabCompleteIdOrClassInJavascript(match.match[0],match.type);this.focusCaretAtEndOfInput();return false;}else if(this.evaluation.cssEvalFlag){this.tabCompleteIdOrClassInCss(inputText);this.focusCaretAtEndOfInput();return false;}else{this.tabCompleteJavascript(e,inputText);this.focusCaretAtEndOfInput();}}
this.focusCaretAtEndOfInput=function(){this.input.selectionEnd=this.input.selectionStart=this.input.value.length;}
this.tabCompleteJavascript=function(e,inputText){var words=inputText.split(/\s+/);var lastWord=words[(words.length-1)];var numOpeningParens=lastWord.split("(").length-1;var numClosingParens=lastWord.split(")").length-1;var scope;var sentinel=0;var diff=numOpeningParens-numClosingParens;if(diff>0){numClosingParens=lastWord.split("(")[numOpeningParens].split(")").length-1;var numRealDanglers=numOpeningParens-numClosingParens;scope=lastWord.split("(").slice(numRealDanglers).join("(");}else if(diff<0){this.print("error: too many closing parentheses");return false;}else{scope=lastWord;}
scope=scope.split(".");var fragment=scope.pop();scope=scope.join(".");if(scope=="")scope="window";var members=this.getMembers(scope);var results=this.findTextMatchesInArray(members,fragment);if(results==false){}else if(typeof results!="string"){this.dump(results);var bestMatch=this.findBestStringMatch(fragment,results);if(fragment!=''){fragReg=new RegExp(fragment+"$");this.input.value=this.input.value.replace(fragReg,bestMatch);}else{this.input.value+=bestMatch;}}else{var reggie=new RegExp(fragment+"$");this.input.value=this.input.value.replace(reggie,results);}
return false;}
this.doAllStringsInArrayHaveSameCharacterAtIndex=function(index,arr){var matched=0;if(!arr[0].charAt(index))return false;var character=arr[0].charAt(index);for(var i=1;i<arr.length;i++){if(!arr[i].charAt(index)||arr[i].charAt(index)!=character){return false;}}
return true;}
this.findBestStringMatch=function(str,arr){var fragLength=str.length;var matches=this.doAllStringsInArrayHaveSameCharacterAtIndex(fragLength,arr);while(matches){fragLength++;matches=this.doAllStringsInArrayHaveSameCharacterAtIndex(fragLength,arr);}
return arr[0].substr(0,fragLength);}
this.tabCompleteIdOrClassInJavascript=function(inputText,type){var query=inputText.split("(");query=query[query.length-1].replace(/\W/g,'');var matches=new Array();var els=document.getElementsByTagName("*");if(type=="id"){for(var i=0;i<els.length;i++){if(els[i].id&&els[i].id.indexOf(query)==0){matches.push(els[i].id);}}}else if(type=="class"){for(var i=0;i<els.length;i++){if(els[i].className&&els[i].className!=''){var classes=els[i].className.split(/\s/);for(var ii=0;ii<classes.length;ii++){if(classes[ii].indexOf(query)==0||query==''){if(matches.join("***").indexOf(classes[ii])==-1){matches.push(classes[ii]);}}}}}}
if(matches.length==1){this.input.value+=matches[0].split(query)[1];}else if(matches.length==0){this.print("no match");}else{this.dump(matches.sort());var bestMatch=this.findBestStringMatch(query,matches);if(query!=''){var replacement=inputText.split("(");replacement[replacement.length-1]=replacement[replacement.length-1].replace(query,bestMatch);this.input.value=this.input.value.replace(inputText,replacement.join("("));}else{this.input.value+=bestMatch;}}}
this.tabCompleteIdOrClassInCss=function(inputText){var selectors=inputText.replace(/(\.|#)/g,' $1').split(/\s+/);var lastSelector=selectors[selectors.length-1];var els=document.getElementsByTagName("*");var matches=new Array();if(lastSelector.match(/^\./)){for(var i=0;i<els.length;i++){if(els[i].className&&els[i].className!=''){var classes=els[i].className.split(/\s/);for(var ii=0;ii<classes.length;ii++){if(classes[ii].indexOf(lastSelector.substr(1))==0||lastSelector=="."){if(matches.join("***").indexOf(classes[ii])==-1){matches.push("."+classes[ii]);}}}}}}else if(lastSelector.match(/^#/)){for(var i=0;i<els.length;i++){if(els[i].id&&els[i].id.indexOf(lastSelector.substr(1))==0){matches.push("#"+els[i].id);}}}
if(matches.length==1){this.input.value+=matches[0].split(lastSelector)[1];}else if(matches.length==0){this.print("no match");}else{this.dump(matches.sort());var bestMatch=this.findBestStringMatch(lastSelector,matches);if(lastSelector!=''){this.input.value=this.input.value.replace(lastSelector,bestMatch);}else{this.input.value+=bestMatch;}}}
this.searchInputForDomGetElFunctions=function(inputText){for(var i=0;i<this.domGetElFunctions.id.length;i++){var selfct=new RegExp(this.domGetElFunctions.id[i].replace("\$","\\\$")+"\\\(['\"]\\w*$");if(inputText.match(selfct)){return{match:inputText.match(selfct),type:"id"};}}
for(var i=0;i<this.domGetElFunctions.className.length;i++){var selfct=new RegExp(this.domGetElFunctions.className[i].replace("\$","\\\$")+"\\\(['\"]\\w*$");if(inputText.match(selfct)){return{match:inputText.match(selfct),type:"class"};}}}
this.findTextMatchesInArray=function(arrayToTest,findMe){var resultsArray=new Array();var tester=new RegExp("^"+findMe);for(var i=0;i<arrayToTest.length;i++){if(tester.test(arrayToTest[i])){resultsArray.push(arrayToTest[i]);}}
if(resultsArray.length>1){resultsArray.sort();return resultsArray;}else if(resultsArray.length==1){return resultsArray[0];}else{return false;}}
this.getMembers=function(context){var members=new Array();for(memberName in eval(context)){members.push(memberName);}
return members;}
return this;}
// ELS 12/12/2007: init is deferred until first time panel is shown
window.toggleJash=function() // show/hide panel...
{ if("jash" in window)window.jash.close();else{window.jash=new Jash();window.jash.main();} }
window.isJashVisible=function() // so scripts can find out the current display state
{ return window.jash?window.jash.mainBlock.style.display!="none":false; }
addEvent(document,"keydown",function(ev){ // SHIFT-ESC shows/hides panel, ESC hides panel
var e=(typeof window.event!="undefined")?window.event:ev;
if(e.keyCode=="27"&&(e.shiftKey||window.isJashVisible())) window.toggleJash(); });
//}}}
<html><hide linebreaks><a href="javascript:;" class="tiddlyLinkExisting"
title='JASH: Javascript Shell - view/modify internal run time variables and functions!'
onclick="if (window.toggleJash) toggleJash(); return false;"
onmouseover="this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';">
$1
</a></html>
~JaSH is a Javascript Shell written by Billy Reisinger, and provides a cross-browser compatible interactive javascript development and debugging tool.
This package includes a whitespace-compressed version of the Jash source code ([[Jash.js]]), accompanied by the appropriate stylesheet definitions necessary to render the Jash interface ([[Jash.css]]). Additionally, [[JashCommand]] provides a simple ~HTML-based command link that toggles the display of the Jash interface with a single click.
/***
|Name|JustensPlayground|
|Source|early version of http://www.justenrobertson.com/rplay/rp2.js |
|Version|1.0.1|
|Author|Mashed into TiddlyWiki by Paul Reiber - Reiber Labs|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|InlineJavacriptPlugin, MooTools|
|Description|wrapper for Justen Robertsons flocking demo |
|Status|somewhat working - TiddlyWiki mashed together with MOOTOOLS behind the scenes to get it to fly|
This plugin implements an early version of Justens flocking demo in TiddlyWiki
!!!!!Documentation
<<<
Counts on MOOTOOLS being loaded in the MarkupPreHead
<<<
!!!!!Usage
<<<
Use [[InlineJavascriptPlugin]] to invoke/define the flocking functions from within tiddler content.
<<<
!!!!!Examples (requires InlineJavascriptPlugin)
<<<
<html><div id='paperBox' style='width:100%; height:100%;'></div></html>
<script show>
rp2.init();
</script>
<<<
!!!!!Revisions
<<<
2009.03.19 [1.0.0] initial release
2009.03.20 [1.0.1] found and eliminated initialization TypeError - addEventListener conflicting somehow
<<<
!!!!!Code
***/
//{{{
version.extensions.JustensPlayground ={major: 1, minor: 0, revision: 0, date: new Date(2009,3,19)};
//}}}
// // SNARFED LIBRARY FUNCTIONS
//{{{
/**
* rp2.js
* @version 0.1
* @author Justen Robertson
* @license Free (no restrictions, no rights reserved)
*
* This is bound to change a lot but feel free to pilfer what you want.
*/
/**
* function mkCurve
*
* Builds a curve string for use in a path. Useful for dynamically generating
* the string so we can pass it to an animation.
*/
function mkCurve(coords, type) {
var str = (type?type:"C");
coords.each(function(coord) {
if (typeof coord == 'string') str = str +" "+coord;
else str = str+" "+coord.x+","+coord.y;
});
return str;
}
/**
* function dec2hex
*
* Converts a decimal to hex value.
*/
function dec2hex(d) {return d.toString(16);}
/**
* function hex2dec
*
* Converts a hexadecimal to decimal value.
*/
function hex2dec(h) {return parseInt(h,16);}
/**
* function r2d
*
* Converts radian to degrees
*/
function r2d(deg) {
return deg*(360/(2*Math.PI));
}
/**
* function d2r
*
* Converts degrees to radians
*/
function d2r(rad) {
return rad*((2*Math.PI)/360);
}
function rndColor() {
var r = dec2hex(parseInt(255*Math.random()));
var g = dec2hex(parseInt(255*Math.random()));
var b = dec2hex(parseInt(255*Math.random()));
while (r.length<2) r = "0"+r; // pad it out to 2 places
while (g.length<2) g = "0"+g;
while (b.length<2) b = "0"+b;
return "#"+r+g+b;
}
/**
* class Coord
* @param p1 x coord, or hash of {x:x, y:y, z:z}
* @param p2 y coord
* @param p3 z coord
*
*/
function Coord(p1, p2, p3) {
this.x = (p1.x?p1.x:p1?p1:0);
this.y = (p1.y?p1.y:p2?p2:0);
this.z = (p1.z?p1.z:p3?p3:0);
/**
* @method str returns a string of "x,y" (z omitted)
* @param xadd an amount to add to x
* @param yadd an amount to add to y
*/
this.str = function(xadd, yadd) {return (this.x+(xadd?xadd:0))+","+(this.y+(yadd?yadd:0));};
/**
* @method rot rotates the coordinate around center and returns the result as a new Coord.
* @param angle angle of rotation in degrees
* @param cntr optional centerpoint, otherwise uses 0,0
* @return a new Coord at the new rotation point
*/
this.rot = function (angle, cntr) {
var xa = this.x;
var xb = cntr?cntr.x:0;
var ya = this.y;
var yb = cntr?cntr.y:0;
var b = xb-xa; // change in y from rotation center to coord
var a = yb-ya; // change in x from rotation center to coord
if (angle == 180) return new Coord(xa, ya+a*2); // no need to rotate, and it bugs anyway
var slope = b==0?90:a==0?0:r2d(a/b);
var leg = a==0?b:b==0?a:Math.sqrt(Math.pow(leg,2)+Math.pow(b,2)); // get the hypotenuse of xa,ya-xb,yb right triangle
var legAngle = 90 - (angle/2); // angle opposite legs
// law of sines states sinA/a = sinB/b = sinC/c so sin(legAngle)/leg = sin(angle)/base
var base = Math.sin(d2r(angle))*leg/Math.sin(d2r(legAngle)); // length of base
// Now we just calculate x & y translation and return it as a new coordinate
return new Coord(Math.cos(d2r(180-slope-legAngle))*base+xa, Math.sin(d2r(180-slope-legAngle))*base+ya);
}
/**
* @method diff returns a new Coord that is the difference between this and other
* @param other a coord to compare to
* @return Coord the difference between this and other
*/
this.diff = function (other) {
return new Coord(other.x-this.x, other.y-this.y, other.z-this.z);
}
/**
* @method add adds value of this to other and returns new Cood
* @param other a Coord to add to
* @return Coord the sum of this and other
*/
this.add = function(other) {
return new Coord(this.x+other.x, this.y+other.y, this.z+other.z);
}
/**
* @method times multiplies coordinates of this by coordinates of other
* @param other the set of coordinates to multiply by
* @return Coord the resultant coordinates
*/
this.times = function(other) {
return new Coord(this.x*other.x, this.y*other.y, this.z*other.z);
}
/**
* @method flip flips the coordinate around center
* @param center the center point to flip across
* @return Coord the flipped coordinates
*/
this.flip = function(center) {
var diff = this.diff(center);
var times = diff.times(new Coord(-1,-1,-1));
return center.add(diff);
}
}
// Revealing Module Pattern
// This pattern progressively enhances a page by hooking onto events transparently,
// and also by managing public and private access to methods and properties.
// All public methods and properties are returned as an object from the main
// function, which is executed at run time automatically; initialization should
// be bound to an appropriate load or domready event. The template is compatible
// with any javascript framework, or by itself - but a framework is a huge
// help in simplifying event binding.
var rp2 = function() {
var paper;
var field;
var view;
var circles = [];
var path;
var flocking = false;
var flockLast;
// Some simple spatial functions. x & y return the width & height of the
// box, and if param update is true, will update it to match the new window
// size. cx & cy return calculated center x & y of the view.
var x = function(update) {
if(update) {
var x = this.x();
this.paper.node.setProperty('width', x);
this.bg.attr('width', x-this.bg.attr('rx'));
}
return this.field.getSize().x-10;
}
var y = function(update){
if(update) {
$('paperBox').setStyle('height', $$('body')[0].getSize().y);
var y = this.y();
this.paper.node.setProperty('height', y);
this.bg.attr('height', y-this.bg.attr('ry'));
}
return this.field.getSize().y-10;
}
var cx = function(){return this.x()/2;}
var cy = function(){return this.y()/2;}
// center coordinates
var cc = function() {return new Coord(this.cx(), this.cy());}
var bindObservers = function() {
unbindObservers();
// following causes an odd error: TypeError: obj.addEventListener is not a function
// need to debug and understand but for now commenting it out helps a LOT
//window.addEvent('resize', function(){rp2.x(1); rp2.y(1);});
document.addEvent('mousemove', function(event) {rp2.flockTo(event)});
rp2.path.node.addEvent('click', function(event) {rp2.flip()});
}
// Unbind observers needs to exactly mirror bindObservers
var unbindObservers = function() {
window.removeEvents('resize');
}
var build = function() {
$('paperBox').setStyle('height', $$('body')[0].getSize().y);
rp2.field = $('paperBox');
rp2.paper = Raphael(rp2.field, rp2.x(), rp2.y());
// IE can't support this, so bury the error. We won't get the nice resize feature, but whatever
try{rp2.field.getChildren('svg')[0].setProperty('id', 'rpaper');} catch(e) {}
rp2.paper.node = $('rpaper');
rp2.bg = rp2.paper.rect(10, 10, rp2.x()-10, rp2.y()-10, 10);
rp2.bg.attr({fill: '#ffffff', strokeWidth: 0});
var cc = rp2.cc();
var pts = [new Coord(cc.x, cc.y-40)];
var num = 10;
for(i=1;i<num;i++) {
pts[i] = pts[0].rot(360/num*i, cc);
}
var rad = 5;
var pColor = rndColor();
rp2.path = rp2.paper.path({stroke: pColor}).moveTo(pts[0].x, pts[0].y);
rp2.circles = [];
i=0;
pts.each(function(pt) {
var color = rndColor();
rp2.circles.push(rp2.paper.circle(pt.x, pt.y, rad).attr({stroke: color, fill:color}));
rp2.path.lineTo(pt.x, pt.y);
i++;
});
rp2.path.andClose().attr({fill:pColor, id:'path'});
rp2.flockLast = cc;
//rp2.circles.push(this.path);
}
var flip = function() {
rp2.circles.each(function(cr){
var c = new Coord(cr.attr('cx'), cr.attr('cy'));
var f = c.flip(new Coord(rp2.cc().x, rp2.cc().y));
var color = rndColor();
cr.animate({cx:f.x, cy:f.y, stroke:color, fill:color}, 500);
});
rp2.path.animate({stroke:rndColor(), fill:rndColor()}, 500);
}
var flockTo = function(event) {
if(rp2.flocking) return false;
rp2.flocking = true;
var pts = [];
var pos = new Coord(event.client.x, event.client.y);
var cc = rp2.cc();
var moveDist = pos.diff(cc);
var move = Math.sqrt(Math.pow(moveDist.x,2)+Math.pow(moveDist.y,2)); // we use this to time everything
rp2.flockLast = pos;
rp2.circles.each(function(cr) {
var coord = new Coord(cr.attr('cx'), cr.attr('cy'));
var rad = cr.attr('r')*2.2;
var to = new Coord(pos.x>cc.x?pos.x-rad:pos.x+rad, pos.y>cc.y?pos.y-rad:pos.y+rad); // flocking rule: follow the leader
cr.animate({cx:to.x, cy:to.y}, move);
pts.each(function(pt) { // flocking rule: don't get too close
while (Math.abs(to.x-pt.x) < rad) {
Math.random()>.5?to.x += Math.random()*2:to.x-= Math.random()*2;
}
while (Math.abs(to.y-pt.y) < rad) {
Math.random()>.5?to.y+= Math.random()*2:to.y-= Math.random()*2;
}
});
pts.push(to);
setTimeout(cr.animate({cx:to.x, cy:to.y}, move), move*.2);
});
setTimeout(function(){rp2.flocking=false;}, move*.3);
return true;
}
var init = function() {
build();
bindObservers();
}
return {
paper:paper,
circles:circles,
path:path,
flocking:flocking,
// spatial functions
x:x, y:y, cx:cx, cy:cy, cc:cc,
init: init,
bindObservers: bindObservers,
unbindObservers: unbindObservers,
flip:flip,
flockTo:flockTo
}
}();
// Replace the following with an event binding appropriate to your framework
// or simply use:
// window.onload = ModuleName.init;
// For use without a framework.
//window.addEvent('load', rp2.init);
//}}}
/***
|Name|ListboxPlugin|
|Source|http://www.TiddlyTools.com/#ListboxPlugin|
|Documentation|http://www.TiddlyTools.com/#ListboxPluginInfo|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|set tiddler fields by selecting enumerated values from a listbox or droplist|
The {{{<<select>>}}} macro allows you to set tiddler field values by selecting pre-configured enumerated values from a listbox/droplist control.
!!!!!Documentation
>see [[ListboxPluginInfo]]
!!!!!Revisions
<<<
2008.07.22 [1.1.0] added "=cookiename" syntax for storing selected value in cookie instead of a tiddler field
|please see [[ListboxPluginInfo]] for additional revision details|
2007.05.12 [0.5.0] started
<<<
!!!!!Code
***/
//{{{
version.extensions.ListboxPlugin= {major: 1, minor: 1, revision: 0, date: new Date(2008,7,22)};
config.macros.select = {
tooltip: "select a value for %0@%1",
blankTooltip: "set %0@%1=[null] (delete field value)",
valueTooltip: "set %0@%1=%2",
otherLabel: "other",
otherTooltip: "set %0@%1=[???] (enter custom value)",
otherPrompt: "enter a value for '%0'",
editLabel: "edit list...",
editTooltip: "edit '%0' list definition (%1)",
changeMsg: "setting %0@%1=%2",
verbose: false,
hereKeyword: "here",
defaultTarget: "SiteFields",
handler:
function(place,macroName,params,wikifier,paramString,tiddler) {
// get containing tiddler (or use default "SiteFields" catch-all tiddler)
var here=story.findContainingTiddler(place);
var targetID=here?here.getAttribute("tiddler"):this.defaultTarget;
// get field name
var field=params.shift();
var pos=field.indexOf("@"); // if non-default target ("field@tiddler" syntax)
if(pos!=-1) { // split field into field and tiddlername.
if (field.substr(pos+1)!=this.hereKeyword) // "here" == use default target
targetID=field.substr(pos+1); // switch to different target tiddler
field=field.substr(0,pos);
}
// if no field name, do nothing
if(!field || !field.length) return;
// if field starts with "=", it is an option cookie instead of a tiddler field
if (field.substr(0,1)=="=") targetID="(system)";
var p=params.shift();
var rows="0"; if (p.substr(0,5)=="rows:") { rows=p.substr(5); p=params.shift(); } // optional list height in lines
var width="auto"; if (p.substr(0,6)=="width:") { width=p.substr(6); p=params.shift(); } // optional CSS width
var autosave=(p.toLowerCase()=="autosave"); if (autosave) p=params.shift(); // optional autosave
var allowBlank=(p.toLowerCase()=="allowblank"); if (allowBlank) p=params.shift(); // add optional empty item
var allowOther=(p.toLowerCase()=="allowother"); if (allowOther) p=params.shift(); // add optional "other: ____" item
if (tiddler && !story.isDirty(tiddler.title)) autosave=true; // if tiddler is in VIEW mode, force autosave
var list=[];
if (p.substr(0,1)=="+"||p.substr(0,1)=="*") { // get list from HR-separated tiddler (* means wikify source first)
var listsrc=p.substr(1);
var listtxt=store.getTiddlerText(listsrc);
var wikifyData=p.substr(0,1)=="*"; if (wikifyData) listtxt=this.getWikifiedData(listtxt);
var separator="\n";
if (listtxt && listtxt.indexOf("\n----\n")!=-1) separator="\n----\n";
if (listtxt && listtxt.length) var list=listtxt.split(separator);
var allowEdit=(params[0] && params[0].toLowerCase()=="allowedit"); // add optional "edit list..." item
if (allowEdit) p=params.shift();
}
else if (p.substr(0,1)=="=") { // get list from tagged tiddlers
var tids=store.getTaggedTiddlers(p.substr(1));
for (var t=0; t<tids.length; t++) list.push(tids[t].title);
}
else { // get list from macro params: "value value value ..." or "label=value label=value label=value ..."
while (p) {
var parts=p.split("=");
var label=parts[0]; var v=parts[1]?parts[1]:parts[0];
list.push(label+"="+v);
p=params.shift();
}
}
// register notification handler for ALL tiddler changes (to sync lists)
store.addNotification(null,this.refresh);
// render the control
this.render(createTiddlyElement(place,"span"), null, targetID, field, list, listsrc, wikifyData, rows, width, autosave, allowBlank, allowOther, allowEdit);
},
getWikifiedData: // wikify tiddler content, then extract text WITH newlines and HRs included
function(txt) {
var e=createTiddlyElement(document.body,"div"); wikify(txt,e);
var breaks=e.getElementsByTagName("br");
for (var b=0; b<breaks.length; b++) breaks[b].parentNode.insertBefore(document.createTextNode("\n"),breaks[b]);
var lines=e.getElementsByTagName("hr");
for (var l=0; l<lines.length; l++) lines[l].parentNode.insertBefore(document.createTextNode("----\n"),lines[l]);
var items=e.getElementsByTagName("li");
for (var i=0; i<items.length; i++) items[i].parentNode.insertBefore(document.createTextNode("\n"),items[i]);
var txt=getPlainText(e); removeNode(e); return txt;
},
refresh:
function (title) {
var lists=document.getElementsByTagName("select");
for (i=0; i<lists.length; i++) {
if (lists[i].getAttribute("listsrc")==title) {
var here=lists[i];
var place=here.parentNode;
var targetID=here.getAttribute("tiddler");
var field=here.getAttribute("edit");
var listsrc=here.getAttribute("listsrc");
var rows=here.getAttribute("rows");
var width=here.getAttribute("width");
var autosave=here.getAttribute("autosave")=="true";
var allowBlank=here.getAttribute("allowBlank")=="true";
var allowOther=here.getAttribute("allowOther")=="true";
var allowEdit=here.getAttribute("allowEdit")=="true";
var wikifyData=here.getAttribute("wikifyData")=="true";
// get the list
var listtxt=store.getTiddlerText(listsrc,""); if (wikifyData) listtxt=config.macros.select.getWikifiedData(listtxt);
var separator="\n"; if (listtxt && listtxt.indexOf("\n----\n")!=-1) separator="\n----\n";
var list=[]; if (listtxt && listtxt.length) var list=listtxt.split(separator);
// re-render control
config.macros.select.render(place, here, targetID, field, list, listsrc, wikifyData, rows, width, autosave, allowBlank, allowOther, allowEdit);
}
}
},
render:
function (place, here, targetID, field, list, listsrc, wikifyData, rows, width, autosave, allowBlank, allowOther, allowEdit) {
// use selected value from existing listbox (except for "edit list..." item)
if (here && here.selectedIndex!=-1 && here.options[here.selectedIndex].text!=config.macros.select.editLabel)
{ var val=here.value; if (val && !val.length) val=undefined; }
// if listbox doesn't yet exist, or 'edit list' item was selected, use existing value from field (if any)
if (!val) var val=(field.substr(0,1)=='=')?
config.options[field.substr(1)]:store.getValue(targetID,field);
var count=0; var options="";
// add default 'undefined' item
if (val==undefined || allowBlank) {
var title=this.blankTooltip.format([field,targetID]);
options+='<option value="" title="'+title+'"></option>';
count++;
}
// add enumerated items
var isOther=(val!=undefined);
for (opt=0; opt<list.length; opt++) {
var lines=list[opt].split("\n"); var parts=lines[0].split("=");
var label=parts[0];
var v=parts[1]?parts[1]:parts[0];
var title=lines[1]?lines[1]:this.valueTooltip.format([field,targetID,v]);
options+='<option value="'+v+'" '+(val==v?'selected':'')+' title="'+title+'">'+label+'</option>';
if (val==v) isOther=false; // found matching value in list
count++;
}
// add other... item
if (isOther||allowOther) {
var label="other"+(isOther?(": "+val):"...");
var v=isOther?val:"";
var title=this.otherTooltip.format([field,targetID]);
options+='<option value="'+v+'" '+(isOther?'selected':'')+' title="'+title+'">'+label+'</option>';
count++;
}
// add edit list... item
if (listsrc && (!store.getTiddlerText(listsrc) || allowEdit)) {
var title=this.editTooltip.format([field,listsrc]);
options+='<option value="'+listsrc+'" title="'+title+'">'+this.editLabel+'</option>';
count++;
}
// construct full HTML
var html='<select ';
html+=(val!=undefined?'value="'+val+'" ':'')+'" edit="'+field+'" ';
html+='onclick="return config.macros.select.onClick(this,event)" ';
html+='onchange="return config.macros.select.onChange(this,event)" ';
html+='ondblclick="return false" ';
html+='autosave="'+autosave+'" allowBlank="'+allowBlank+'" ';
html+='allowOther="'+allowOther+'" allowEdit="'+allowEdit+'" ';
html+='rows="'+rows+'" size="'+(rows!=0?rows:count)+'" ';
html+='tiddler="'+targetID+'" '+'" listsrc="'+listsrc+'" wikifyData="'+wikifyData+'" ';
html+='title="'+this.tooltip.format([field,targetID])+'" style="width:'+width+'">'+options+'</select>';
// pass to browser for rendering
place.innerHTML=html;
},
onClick:
function(here,event) {
var label=config.macros.select.otherLabel;
if (here.getAttribute("allowother")=="true" && here.options[here.selectedIndex].text.substr(0,label.length)==label)
here.onchange.apply(here,arguments);
},
onChange:
function(here,event) {
if (here.options[here.selectedIndex].text==config.macros.select.editLabel) {
story.displayTiddler(story.findContainingTiddler(here),here.value,DEFAULT_EDIT_TEMPLATE);
return false;
}
var label=config.macros.select.otherLabel;
if (here.getAttribute("allowother")=="true" && here.options[here.selectedIndex].text.substr(0,label.length)==label) {
var newval=prompt(config.macros.select.otherPrompt.format([here.getAttribute("edit")]),here.value);
if (!newval) {// user cancelled
var v=store.getValue(here.getAttribute("tiddler"),here.getAttribute("edit"));
{ here.value=v; if (v==undefined) here.selectedIndex=0; return false; }
};
here.options[here.selectedIndex].value=newval;
here.options[here.selectedIndex].text=config.macros.select.otherLabel+": "+newval;
here.value=newval;
}
if (here.getAttribute("autosave")=="true") config.macros.select.setFieldValue(here);
return false;
},
setFieldValue: function(here) {
var tid=here.getAttribute("tiddler"); if (!tid || !tid.length) return; // no target, do nothing
var field=here.getAttribute("edit");
if (field.substr(0,1)=='=') { // option cookie instead of tiddler field
config.macros.option.propagateOption(field.substr(1),"value",here.value,"input");
return;
}
// if tiddler doesn't exist, create it...
if (!store.tiddlerExists(tid)) store.saveTiddler(tid,tid,"",config.options.txtUserName,new Date(),[]);
// set the field value in the target tiddler
store.setValue(tid,field,here.value.length?here.value:null); // if value is blank, delete field
// touch target tiddler so that modified and modifier are updated
var t=store.getTiddler(tid);
store.saveTiddler(tid,tid,t.body,config.options.txtUserName,new Date(),t.tags,t.fields);
if (config.macros.select.verbose) // tell user what happened
{ clearMessage(); displayMessage(config.macros.select.changeMsg.format([field,tid,here.value])); }
}
}
//}}}
Red=#FF0000
----
Orange=#FF9900
----
Yellow=#FFFF00
----
Green=#00FF00
----
Blue=#0000FF
----
Indigo=#000099
----
Violet=#9900FF
----
Black=#000000
----
White=#FFFFFF
/%
|Name|LoadRemotePlugin|
|Source|http://www.TiddlyTools.com/#LoadRemotePlugin|
|Version|1.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|Load a plugin from a remote .js URL|
Usage:
<<tiddler LoadRemotePlugin with: "label" "tip" "URL" "onloadfunction" "preloadedtest" "onrunfunction" "configoverlay">>
where:
label/tip
- command link text and tooltip
URL
- location of .js (i.e., the remotely stored plugin file)
onloadfunction
- js code invoked after loading remote plugin (can be used to init values, display tiddlers, etc)
preloadedtest
- js expression to test to see if plugin has already been loaded
onrunfunction
- js code invoked when plugin was already loaded (instead of onloadfunction)
configoverlay
- name of tiddler containing js code with custom settings, tweaks, etc.
examples:
see [[InstantBookmarklets]]
%/<script label="$1" title="$2">
if ('$5'!='$'+'5' && ($5)) {
clearMessage();
if ('$6'!='$'+'6' && '$6'.length) {$6;} else {$4;}
displayMessage('$1 is already installed.');
return false;
}
var s=document.createElement('script');
s.src='$3';
s.onerror=function() {
clearMessage();
displayMessage('Could not load $1 from');
displayMessage(this.src,this.src);
};
s.onload=function() {
clearMessage();
{$4;}
if ('$7'!='$'+'7' && '$7'.length) {
try { eval(store.getTiddlerText('$7','')); }
catch(e) { displayMessage(e.description||e.toString()); }
}
displayMessage('$1 has been loaded from');
displayMessage(this.src,this.src);
};
s.onreadystatechange=function() /* for IE */
{ if(this.readyState=='complete') this.onload(); };
document.getElementsByTagName('head')[0].appendChild(s);
return false;
</script>
/***
|Name|LoadTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.6.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|macro for automated updates or one-click installations of tiddlers from remote sources|
!!!!!Documentation
>see [[LoadTiddlersPluginInfo]]
!!!!!Configuration
<<<
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2008.11.14 [3.6.4] in loadFile(), force use of XMLHttpRequest if not viewing a local document (supports use of relative file references when online)
|please see [[LoadTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.LoadTiddlersPlugin= {major: 3, minor: 6, revision: 4, date: new Date(2008,11,14)};
config.macros.loadTiddlers = {
label: '',
tip: "add/update tiddlers from '%0'",
lockedTag: 'noReload', // if existing tiddler has this tag value, don't overwrite it, even if inbound tiddler is newer
askMsg: 'Please enter a local path/filename or a remote URL',
openMsg: 'Opening %0',
openErrMsg: 'Could not open %0 - error=%1',
readMsg: 'Read %0 bytes from %1',
foundMsg: 'Found %0 tiddlers in %1',
nochangeMsg: "'%0' is up-to-date... skipped.",
lockedMsg: "'%0' is tagged '%1'... skipped.",
skippedMsg: 'skipped (cancelled by user)',
loadedMsg: 'Loaded %0 of %1 tiddlers from %2',
reportTitle: 'ImportedTiddlers',
warning: "Warning!! Processing '%0' as a systemConfig (plugin) tiddler may produce unexpected results! Are you sure you want to proceed?",
handler: function(place,macroName,params) {
var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;
var tip=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.tip;
var filter='updates';
if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'
|| params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))
filter=params.shift();
var src=params.shift(); if (!src || !src.length) return; // filename is required
var quiet=(params[0]=='quiet'); if (quiet) params.shift();
var ask=(params[0]=='confirm'); if (ask) params.shift();
var force=(params[0]=='force'); if (force) params.shift();
var init=(params[0]=='init'); if (init) params.shift();
var nodirty=(params[0]=='nodirty'); if (nodirty) params.shift();
var norefresh=(params[0]=='norefresh'); if (norefresh) params.shift();
var noreport=(params[0]=='noreport'); if (noreport) params.shift();
this.newTags=[]; if (params[0]) this.newTags=params; // any remaining params are used as 'autotags'
if (label.trim().length) {
// link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store
createTiddlyButton(place,label.format([src.replace(/%20/g,' ')]),tip.format([src.replace(/%20/g,' ')]), function() {
if (src=='ask') src=prompt(this.askMsg);
config.macros.loadTiddlers.loadFile(src,config.macros.loadTiddlers.doImport,{quiet:quiet,ask:ask,filter:filter,force:force,init:init,noreport:noreport});
})
}
else {
// load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store
if (src=='ask') src=prompt(this.askMsg);
config.macros.loadTiddlers.loadFile(src,config.macros.loadTiddlers.doImport,{quiet:quiet,ask:ask,filter:filter,force:force,init:init,nodirty:nodirty,norefresh:norefresh,noreport:noreport});
}
},
loadFile: function(src,callback,params) {
var quiet=params.quiet;
if (src==undefined || !src.length) return null; // filename is required
if (!quiet) clearMessage();
if (!quiet) displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
// if working locally and src is not a URL, read from local filesystem
if (document.location.protocol=='file:' && src.substr(0,5)!='http:' && src.substr(0,5)!='file:') {
var txt=loadFile(src);
if (!txt) { // file didn't load, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\');
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
if (!quiet) displayMessage(this.openErrMsg.format([src.replace(/%20/g,' '),'(unknown)']));
} else {
if (!quiet) displayMessage(this.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
if (callback) callback(true,params,convertUTF8ToUnicode(txt),src,null);
}
// otherwise, use XMLHttpRequest to fetch document
} else {
var name=config.options.txtRemoteUsername; var pass=config.options.txtRemotePassword;
var x=doHttp('GET',src,null,null,name,pass,callback,params,null);
}
},
readTiddlersFromHTML: function(html) {
// for TW2.2+
if (TiddlyWiki.prototype.importTiddlyWiki!=undefined) {
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers('title');
}
},
doImport: function(status,params,html,src,xhr) {
var quiet=params.quiet;
var ask=params.ask;
var filter=params.filter;
var force=params.force;
var init=params.init;
var nodirty=params.nodirty;
var norefresh=params.norefresh;
var noreport=params.noreport;
var tiddlers = config.macros.loadTiddlers.readTiddlersFromHTML(html);
var count=tiddlers?tiddlers.length:0;
var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
if (!quiet) displayMessage(config.macros.loadTiddlers.foundMsg.format([count,src.replace(/%20/g,' ')]));
var wasDirty=store.isDirty();
store.suspendNotifications();
var count=0;
if (tiddlers) for (var t=0;t<tiddlers.length;t++) {
var inbound = tiddlers[t];
var theExisting = store.getTiddler(inbound.title);
if (inbound.title==config.macros.loadTiddlers.reportTitle)
continue; // skip 'ImportedTiddlers' history from the other document...
if (theExisting && theExisting.tags.contains(config.macros.loadTiddlers.lockedTag)) {
if (!quiet) displayMessage(config.macros.loadTiddlers.lockedMsg.format([theExisting.title,config.macros.loadTiddlers.lockedTag]));
continue; // skip existing tiddler if tagged with 'noReload'
}
// apply the all/new/changes/updates filter (if any)
if (filter && filter!='all') {
if ((filter=='new') && theExisting) // skip existing tiddlers
continue;
if ((filter=='changes') && !theExisting) // skip new tiddlers
continue;
if ((filter.substr(0,4)=='tag:') && inbound.tags.indexOf(filter.substr(4))==-1) // must match specific tag value
continue;
if ((filter.substr(0,8)=='tiddler:') && inbound.title!=filter.substr(8)) // must match specific tiddler name
continue;
if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0)) {
var msg=config.macros.loadTiddlers.nochangeMsg;
if (!quiet&&msg.length) displayMessage(msg.format([inbound.title]));
continue;
}
}
// get confirmation if required
if (ask && !confirm((theExisting?'Update':'Add')+" tiddler '"+inbound.title+"'\nfrom "+src.replace(/%20/g,' ')+'\n\nOK to proceed?'))
{ tiddlers[t].status=config.macros.loadTiddlers.skippedMsg; continue; }
// DO IT!
var tags=new Array().concat(inbound.tags,config.macros.loadTiddlers.newTags);
store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, tags, inbound.fields, true, inbound.created);
store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value - needed for TW2.1.3 or earlier
tiddlers[t].status=theExisting?'updated':'added'
if (init && tags.contains('systemConfig') && !tags.contains('systemConfigDisable')) {
var ok=true;
if (ask||!quiet) ok=confirm(config.macros.loadTiddlers.warning.format([inbound.title]))
if (ok) { // run the plugin
try { window.eval(inbound); tiddlers[t].status+=' (plugin initialized)'; }
catch(ex) { displayMessage(config.messages.pluginError.format([exceptionText(ex)])); }
}
}
count++;
}
store.resumeNotifications();
if (count) {
// optionally: set/clear 'unsaved changes' flag, refresh page display, and generate a report
store.setDirty(wasDirty||!nodirty);
if (!norefresh) {
story.forEachTiddler(function(t,e){if(!story.isDirty(t))story.refreshTiddler(t,null,true)});
store.notifyAll();
}
if (!noreport) config.macros.loadTiddlers.report(src,tiddlers,count,quiet);
}
// always show final message when tiddlers were actually loaded
if (!quiet||count) displayMessage(config.macros.loadTiddlers.loadedMsg.format([count,tiddlers.length,src.replace(/%20/g,' ')]));
},
report: function(src,tiddlers,count,quiet) {
// format the new report content
var newText = 'On '+(new Date()).toLocaleString()+', ';
newText += config.options.txtUserName+' loaded '+count+' tiddlers ';
newText += 'from\n[['+src+'|'+src+']]:\n';
newText += '<<<\n';
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].status)
newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
newText += '<<<\n';
// get current report (if any)
var title=config.macros.loadTiddlers.reportTitle;
var currText='';
var theReport = store.getTiddler(title);
if (theReport) currText=((theReport.text!='')?'\n----\n':'')+theReport.text;
// update the ImportedTiddlers content and show the tiddler
store.saveTiddler(title, title, newText+currText, config.options.txtUserName, new Date(), theReport?theReport.tags:null, theReport?theReport.fields:null);
if (!quiet) { story.displayTiddler(null,title,1,null,null,false); story.refreshTiddler(title,1,true); }
}
}
//}}}
/***
|Name|LoadTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.6.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for LoadTiddlersPlugin|
!!!!!Usage
<<<
Syntax:
{{{<<loadTiddlers label:text prompt:text filter source quiet confirm force init noreport tag tag tag...>>}}}
Example:
{{{<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>}}}
<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>
Where:
''"""label:text"""'' and ''"""prompt:text"""''
>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and the loadTiddlers function is performed whenever the containing tiddler is rendered.
''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:
>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.
>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document
>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler
>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)
>''""""tiddler:TiddlerName""""'' retrieves only the specific tiddler named in the parameter.
>''""""tag:text""""'' retrieves only the tiddlers tagged with the indicated text.
>> Note: ''if an existing tiddler is tagged with 'noReload', then it will not be overwritten'', even if the inbound tiddler has been selected by the filtering process. This allows you to make local changes to imported tiddlers while ensuring that those changes won't be lost due to automatic tiddler updates retrieved from the import source document.
''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")
>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked
''"quiet"'' (optional)
>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.
''"confirm"'' (optional)
>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.
''"init"'' (optional)
>invoke tiddlers tagged with <<tag systemConfig>> as plugins as soon as they are imported, without requiring a save-and-reload action first. For safety, a browser message box (OK/Cancel) is displayed for each imported plugin, so that you can manually bypass any plugins that you do not want to invoke. Note, however, that those tiddlers are still //imported// into your document and therefore will still take effect the next time you save-and-reload the document.
''"force"'' (optional)
>import all matching tiddlers, even if unchanged
''"noreport"'' (optional)
>suppress generation of [[ImportedTiddlers]] report
''"tag tag tag..."'' (optional)
>any remaining parameters are used as tag values to be added to each imported tiddler (i.e., "tag-on-import")
<<<
!!!!!Configuration
<<<
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2008.11.14 [3.6.4] in loadFile(), force use of XMLHttpRequest if not viewing a local document (supports use of relative file references when online)
2008.10.27 [3.6.3] in doImport(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.08.05 [3.6.2] rewrote loadFile() to eliminate use of platform-specific fileExists() test
2008.08.03 [3.6.1] in handler(), changed variable 'prompt' to 'tip' to avoid conflict with prompt() function
2008.01.07 [3.6.0] added 'init' option to automatically invoke plugin tiddlers as soon as they are loaded (without needing save/reload)
2008.01.03 [3.5.0] in loadFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.27 [3.4.8] added missing 'fields' params to saveTiddler() call. Fixes problem where importing tiddlers would lose the custom fields.
2007.06.25 [3.4.7] add calls to store.suspendNotifications() and store.resumeNotifications() to eliminate redisplay overhead DURING import activities.
2007.05.27 [3.4.6] in handler(), loadRemoteFile() and doImport(), added 'noreport' flag to suppress generation of ImportedTiddlers
2007.05.27 [3.4.5] in handler(), initialize 'newTags' to [] (empty array) instead of null... fixes fatal error when loading tiddler without autotagging.
2007.04.22 [3.4.4] in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content. Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
2007.04.05 [3.4.3] in doImport(), changed this.readTiddlersFromHTML(html) to config.macros.loadTiddlers.readTiddlersFromHTML(html). Fixes error caused when ImportTiddlersPlugin has NOT been installed along side this plugin.
2007.03.26 [3.4.2] renamed import() to doImport() to fix IE load-time error ("identifier expected"). This may also cause a problem with FF1.5.0.x.... Apparently, "import" is a reserved word in some browsers...
2007.03.22 [3.4.1] code cleanup: moved all functions inside object def'n, re-wrote report function
2007.03.21 [3.4.0] split ImportTiddlersPlugin and LoadTiddlersPlugin functionality into separate plugins
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
----
RaphaelDemos
----
AboutThisDocument
RecentChanges
ImportTiddlers
TiddlerTweaker
SplitTiddler
MungeTiddler
----
<<tiddler JashCommand with: "open jash">>
<<tiddler ToggleTiddlerTags with: "toggle tags display">>
<<tiddler RefreshPageDisplay>>
<<tiddler RescueStoreAreaCommand with: "rescue store area">>
<<loadTiddlers "label:baseline updates" changes http://www.tiddlytools.com confirm baseline>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<script src='http://mootools.net/download/get/mootools-1.2.3-core-yc.js' type='text/javascript'></script>
<!--<script src='file:///C:/Users/Paul/Desktop/OpenSourceExplorations/mootools.js' type='text/javascript'></script>-->
<!--}}}-->
/***
|Name|MessageLogPlugin|
|Source|http://www.TiddlyTools.com/#MessageLogPlugin|
|Documentation|http://www.TiddlyTools.com/#MessageLogPlugin|
|Version|1.0.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.4|
|Type|plugin|
|Requires||
|Overrides||
|Description|automatically log TW messages to a [[MessageLog]] tiddler|
This plugin uses a tiddler to store the text/link for each message that is displayed during a TiddlyWiki session.
!!!!!Documentation
<<<
By default, messages displayed by TiddlyWiki are not retained once they are dismissed from the display. This plugin automatically appends each message to a //shadow// tiddler, [[MessageLog]], to provide a short-term, per-session record of messages without altering any 'real' tiddlers in your document.
You can view the [[MessageLog]] tiddler at any time to review the previous messages and, if you convert the shadow tiddler to a 'real' tiddler (by editing it), then any subsequent messages will be added to both that real tiddler and the automatic shadow log. This real tiddler will, of course, be saved with the rest of your TW document when you save the file, allowing you to keep a persistent, inter-session log rather than a short-term, per-session log.
<<<
!!!!!Configuration
<<<
<<option chkMessageLog>> enable automatic logging of messages in: {{editor{<<option txtMessageLogName>>}}}
Date format (for log entries): {{editor{<<option txtMessageLogDateFormat>>}}}
<<<
!!!!!Revisions
<<<
2008.12.24 [1.0.2] hijack getMessageDiv() to add 'view log' command to message box
2008.12.23 [1.0.1] defined ResetMessageLogCommand section and embedded command in default shadow message log. Also, prevent refresh of log display if tiddler is currently being edited.
2008.12.23 [1.0.0] initial release
<<<
!!!!!MessageLogControls
<<option chkMessageLog>> enable logging | <html><a href='javascript:;' title='Delete message log tiddler AND clear automatic shadow log' onclick='var log=config.options.txtMessageLogName; if (!confirm(this.title+"?")) return false; config.shadowTiddlers[log]="\<\<tiddler [[MessageLogPlugin##MessageLogControls]]\>\>\n"; store.removeTiddler(log); story.refreshTiddler(log,null,true);'>clear message log</a></html>
!!!!!Code
***/
//{{{
version.extensions.MessageLogPlugin= {major: 1, minor: 0, revision: 2, date: new Date(2008,12,24)};
// SETTINGS
if (config.options.chkMessageLog===undefined)
config.options.chkMessageLog=true;
if (config.options.txtMessageLogName===undefined)
config.options.txtMessageLogName='MessageLog';
if (config.options.txtMessageLogDateFormat===undefined)
config.options.txtMessageLogDateFormat='YYYY.0MM.0DD 0hh:0mm:0ss';
// SHADOW LOG
config.shadowTiddlers[config.options.txtMessageLogName]=
'<<tiddler [[MessageLogPlugin##MessageLogControls]]>>\n'
if (window.displayMessage_MessageLogHijack===undefined) { // only once
window.displayMessage_MessageLogHijack=window.displayMessage;
window.displayMessage=function(text,linkText) {
this.displayMessage_MessageLogHijack.apply(this,arguments);
if (!config.options.chkMessageLog) return;
var log=config.options.txtMessageLogName;
var fmt='>%0 '+(linkText?'[[%1|%2]]':'%1');
var now=new Date().formatString(config.options.txtMessageLogDateFormat);
var cmd='<<tiddler [[MessageLogPlugin##MessageLogControls]]>>\n';
var out=store.getTiddlerText(log,cmd)+fmt.format([now,text,linkText])+'\n';
config.shadowTiddlers[log]=out; // update shadow log
var tid=store.getTiddler(log); if (tid) { // update real tiddler log, if present
var who=config.options.chkForceMinorUpdate?tid.modifier:config.options.txtUserName;
var when=config.options.chkForceMinorUpdate?tid.modified:new Date();
store.saveTiddler(log,log,out,who,when,tid.tags,tid.fields);
}
if (!story.isDirty(log)) story.refreshTiddler(log,null,true); // only if log is not being edited
}
}
if (window.getMessageDiv_MessageLogHijack===undefined) { // only once
window.getMessageDiv_MessageLogHijack=window.getMessageDiv;
window.getMessageDiv=function() { // add 'view log' command to message box
var msgArea=document.getElementById("messageArea"); if(!msgArea) return null;
var addLogBtn=!msgArea.hasChildNodes();
var r=this.getMessageDiv_MessageLogHijack.apply(this,arguments);
if(addLogBtn) {
createTiddlyText(msgArea.firstChild,'|');
createTiddlyButton(msgArea.firstChild,'log','view '+config.options.txtMessageLogName,
function(ev) { story.displayTiddler(null,config.options.txtMessageLogName); });
}
return r;
}
}
//}}}
/%
|Name|MicroCalc|
|Source|http://www.TiddlyTools.com/#MicroCalc|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|html|
|Requires||
|Overrides||
|Description|a simple embeddable calculator using javascript eval() function|
Usage: <<tiddler MicroCalc>>
%/<<tiddler HideTiddlerTags>>/%
%/{{small smallform{/%
%/<html><div style="width:100%"><hide linebreaks>
<form action="javascript:;" style="display:inline;margin:0;padding:0;"><!--
--><input name="input" value="0" style="width:70%;text-align:right;"
title="INPUT: enter a JavaScript expression, function, or object/variable name"
onfocus="this.select()"
onkeyup="if (event.keyCode==13) {this.form.go.click(); return false;}"><!--
--><input name="go" type="button" value="=" style="width:10%"
title="CALCULATE: evaluate input and display results"
onclick="var i=this.form.input; var o=this.form.output; var val=i.value; var res='';
try{res=eval(val);i.value=res}catch(e){res=e.description||e.toString()};
o.value+=(o.value.length?'\n':'')+val+'\n='+res;
o.style.display='block'; o.scrollTop=o.scrollHeight;
i.select();i.focus();"><!--
--><input name="memstore" type="button" value="m" style="width:10%"
title="MEMORY STORE: save input to temporary memory"
onclick="var f=this.form; f.memory.value=f.input.value;
f.memory.parentNode.style.display='block'"><!--
--><input name="clear" type="button" value="c" style="width:10%"
title="CLEAR: erase history and reset input"
onclick="var i=this.form.input; var o=this.form.output;
o.value='';o.style.display='none';
i.value='0';i.select();i.focus();"><!--
--><div style="display:none"><!--
--><input name="memory" value="0" style="width:70%;text-align:right;"
title="MEMORY: temporarily store input during calculations"><!--
--><input name="meminsert" type="button" value="mi" style="width:10%"
title="MEMORY INSERT: append memory value to current input"
onclick="var i=this.form.input;
i.value+=this.form.memory.value; i.select();i.focus();"><!--
--><input name="memrecall" type="button" value="mr" style="width:10%"
title="MEMORY RECALL: replace current input with memory value "
onclick="var i=this.form.input;
i.value=this.form.memory.value; i.select();i.focus();"><!--
--><input name="memclear" type="button" value="mc" style="width:10%"
title="MEMORY CLEAR: clear temporary memory"
onclick="var f=this.form; f.memory.value='0';
f.memory.parentNode.style.display='none';
f.input.select();f.input.focus();"><!--
--></div><!--
--><textarea name="output" rows=5 style="width:99%;display:none;"
title="HISTORY: previous inputs and calculated results"></textarea><!--
--></form></div></html>/%
%/}}}
NewDocumentPlugin
__2008.04.22 IMPORTANT NOTICE:__
>The features previously provided by this plugin have been replaced by [[SaveAsPlugin]] and [[SnapshotPlugin]].
----
CommentScript
__2008.04.12 IMPORTANT NOTICE:__
>This inline script has been replaced by [[CommentPlugin]].
----
SelectStylesheetPlugin
__2008.01.22 IMPORTANT NOTICE:__
>As of TiddlyWiki version 2.3.0, this plugin has been replaced by [[SwitchThemePlugin]].
----
FAQ_.*
This TiddlyTools FAQ article has been archived in:
>{{medium{http://www.TiddlyTools.com/faq.html#$1}}}
<<tiddler GetTheFAQs with: [[http://www.TiddlyTools.com/faq.html]] [[faq]] [[$1]]>>
----
http://.*
$1
<html><iframe src="$1" style="width:100%;height:480px"></iframe></html>
/***
|Name|MissingTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#MissingTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#MissingTiddlersPlugin|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|define alternative content for missing tiddlers|
!!!Usage
<<<
This plugin re-defines the default content for missing tiddlers, so that the following macro is automatically invoked whenever a missing tiddler is viewed:
{{{
<<missingTiddler [[title]] [[list]] [[fallback]]>>
}}}
where:
*''title'' (required)<br>specifies the title of the missing tiddler.
*''list'' (optional, default="{{{[[MissingTiddlersList]]}}}")<br>specifies the tiddler containing a list of title patterns and associated alternative content (see below)
*''fallback'' (optional, default="{{{[[MissingTiddler]]}}}")<br>specifies the tiddler containing default fallback content for all //unmatched// missing titles.
The macro first reads from the [[MissingTiddlersList]], which contains a list of alternative content to use for specific missing tiddlers. List entries are separated by "{{{----}}}". Each list entry includes two or more lines of text: the first line is a //regular expression// pattern used to match the missing title, and the remaining lines are the content to display when the missing title matches the specified pattern. To insert the title of the missing tiddler into the resulting output, you can embed {{{$1}}} as a //substitution marker// within the content. If no matching pattern is found (or [[MissingTiddlersList]] does not exist), the plugin uses fallback content from a tiddler named [[MissingTiddler]], which has a default (shadow) definition that you can customize.
<<<
!!!Revisions
<<<
2009.01.20 [1.0.0] initial release
<<<
!!!Code
***/
//{{{
version.extensions.MissingTiddlersPlugin={major: 1, minor: 0, revision: 0, date: new Date(2009,1,20)};
config.shadowTiddlers.MissingTiddler ="The tiddler '$1' doesn't yet exist. Double-click to create it.";
config.views.wikified.defaultText ='<<missingTiddler [[%0]] [[MissingTiddlersList]] [[MissingTiddler]]>>';
config.macros.missingTiddler = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var title=params[0]||'';
var list=store.getTiddlerText(params[1]||'MissingTiddlerList','');
var out=store.getTiddlerText(params[2]||'MissingTiddler','');
var items=list.split('\n----\n');
for (var i=0; i<items.length; i++) {
var lines=items[i].split('\n');
if (title.match(new RegExp(lines.shift())))
{ out=lines.join('\n'); break; }
}
wikify(out.replace(/\$1/g,title),place);
}
}
//}}}
/%
|Name|MoveTiddlerToTop|
|Source|http://www.TiddlyTools.com/#MoveTiddlerToTop|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|reposition the current tiddler to top of the story column|
Usage: <<tiddler MoveTiddlerToTop>>
%/<script>
var here=story.findContainingTiddler(place); if (!here) return;
here.parentNode.insertBefore(here,here.parentNode.firstChild); // move to top of column
</script>
/%
|Name|MultiSelectSampleScript|
|Source|http://www.TiddlyTools.com/#MultiSelectSampleScript|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|demonstrates handling for multi-select listboxes|
%//%
This sample script demonstrates how to display and populate a multi-select listbox of tiddler titles, and then act on the selection programmatically (via onclick handler for "go" button). This is only an example. Adapt it for your own use. Good Luck!
%/<html><form action="javascript:;" style="display:inline"><!--
--><select multiple name=list size=6 style="width:100%"></select><br><!--
--><div style="text-align:center"><!--
--> list size:<input type=text size=1 value=6
onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--
--> <input type=button name=refresh value='refresh'
onclick="var list=this.form.list; while (list.options[0]) list.options[0]=null; var tids=store.getTiddlers('title','excludeLists'); for (i=0; i<tids.length; i++) list.options[list.length]=new Option(tids[i].title,tids[i].title,false,false);"><!--
--> <input type=button name=go value='go'
onclick="var list=this.form.list;
var tids=[]; for (i=0;i<list.length;i++)
if (list.options[i].selected)
tids.push(list.options[i].value);
for (t=0;t<tids.length;t++) {
var title=tids[t];
displayMessage(title); /* ACT ON TIDDLER */
}
"><!--
--></div><!--
--></form><hide linebreaks></html><script>
var form=place.lastChild.firstChild;
var tids=store.getTiddlers('title','excludeLists');
while (form.list.options[0]) form.list.options[0]=null;
for (i=0; i<tids.length; i++)
form.list.options[form.list.length]=new Option(tids[i].title,tids[i].title,false,false);
</script><<tiddler HideTiddlerTags>>
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release. Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
var defopen=lookaheadMatch[1];
var cookiename=lookaheadMatch[2];
var header=lookaheadMatch[3];
var panelwidth=lookaheadMatch[4];
var transient=lookaheadMatch[5];
var hover=lookaheadMatch[6];
var buttonClass=lookaheadMatch[7];
var label=lookaheadMatch[8];
var openlabel=lookaheadMatch[9];
var panelID=lookaheadMatch[10];
var blockquote=lookaheadMatch[11];
var deferred=lookaheadMatch[12];
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey, no alternate text/tip
var show="none"; var cookie=""; var key="";
var closedtext=">"; var closedtip="";
var openedtext="<"; var openedtip="";
// extra "+", default to open
if (defopen) show="block";
// cookie, use saved open/closed state
if (cookiename) {
cookie=cookiename.trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
show=config.options[cookie]?"block":"none";
}
// parse label/tooltip/accesskey: [label=X|tooltip]
if (label) {
var parts=label.trim().slice(1,-1).split("|");
closedtext=parts.shift();
if (closedtext.substr(closedtext.length-2,1)=="=")
{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
openedtext=closedtext;
if (parts.length) closedtip=openedtip=parts.join("|");
else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
}
// parse alternate label/tooltip: [label|tooltip]
if (openlabel) {
var parts=openlabel.trim().slice(1,-1).split("|");
openedtext=parts.shift();
if (parts.length) openedtip=parts.join("|");
else openedtip="hide "+openedtext;
}
var title=show=='block'?openedtext:closedtext;
var tooltip=show=='block'?openedtip:closedtip;
// create the button
if (header) { // use "Hn" header format instead of button/link
var lvl=(header.length>5)?5:header.length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
btn.innerHTML=title; // enables use of HTML entities in label
// set extra button attributes
btn.setAttribute("closedtext",closedtext);
btn.setAttribute("closedtip",closedtip);
btn.setAttribute("openedtext",openedtext);
btn.setAttribute("openedtip",openedtip);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=defopen!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
btn.setAttribute("hover",hover?"true":"false");
btn.onmouseover=function(ev) {
// optional 'open on hover' handling
if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
document.onclick.call(document,ev); // close transients
onClickNestedSlider(ev); // open this slider
}
// mouseover on button aligns floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
}
// create slider panel
var panelClass=panelwidth?"floatingPanel":"sliderPanel";
if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
panel.setAttribute("transient",transient=="*"?"true":"false");
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!deferred) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",blockquote?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
}
}
}
}
)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
if (!theTarget) return false;
var theSlider = theTarget.sliderPanel;
var isOpen = theSlider.style.display!="none";
// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);
// toggle label
theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
// toggle tooltip
theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align floater panel position with target button
if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ try{ ctrls[c].focus(); } catch(err){;} break; }
}
}
var cookie=theTarget.sliderCookie;
if (cookie && cookie.length) {
config.options[cookie]=!isOpen;
if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
else window.removeCookie(cookie); // remove cookie if slider is in default display state
}
// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
// prevent clicks *within* a slider button from being processed by browser
// but allow plain click to bubble up to page background (to close transients, if any)
if (e.shiftKey || theTarget!=resolveTarget(e))
{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
Popup.remove(); // close open popup (if any)
return false;
}
//}}}
//{{{
// click in document background closes transient panels
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
if (document.nestedSliders_savedOnClick)
var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
// if click was inside a popup... leave transient panels alone
var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
if (p) return retval;
// if click was inside transient panel (or something contained by a transient panel), leave it alone
var p=target; while (p) {
if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
p=p.parentNode;
}
if (p) return retval;
// otherwise, find and close all transient panels...
var all=document.all?document.all:document.getElementsByTagName("DIV");
for (var i=0; i<all.length; i++) {
// if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
// otherwise, if the panel is currently visible, close it by clicking it's button
if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
}
return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
// see [[MoveablePanelPlugin]] for use of 'undocked'
var rightEdge=document.body.offsetWidth-1;
var panelWidth=panel.offsetWidth;
var left=0;
var top=btn.offsetHeight;
if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
}
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
if (left<0) left=0;
}
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
Morpher.prototype.coreStop = Morpher.prototype.stop;
Morpher.prototype.stop = function() {
this.coreStop.apply(this,arguments);
var e=this.element;
if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
// adjust panel overflow and position after animation
e.style.overflow = "visible";
if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
}
};
}
//}}}
/***
|Name|NestedSlidersPluginInfo|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for NestedSlidersPlugin|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Usage
<<<
Use {{{+++}}} and {{{===}}} to delimit the slider content. You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.
Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*transient display (clicking elsewhere closes panel)
*open on hover (without needing to click)
*custom class/label/tooltip/accesskey
*alternate label/tooltip (displayed when panel is open)
*panelID (for later use with {{{<<DOM>>}}} macro. See [[DOMTweaksPlugin]])
*automatic blockquote style on panel
*deferred rendering of panel content
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*@{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
where:
* ''"""+++""" (or """++++""") and """==="""''<br>marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.
* ''"""(cookiename)"""''<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* ''"""! through !!!!!"""''<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* ''"""^width^ (or just ^)"""''<br>makes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)
* ''"""*"""''<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed. This is useful for creating 'pulldown menus' that automatically go away after they are used. //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* ''"""@"""''<br>denotes "open on hover": the slider/floating panel will be automatically opened as soon as the mouse moves over the slider label, without requiring a click.
* ''"""{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""''<br>uses label/tooltip/accesskey. """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. altlabel/alttooltip specify alternative label/tooltip for use when slider/floating panel is displayed. //Note: you can use HTML syntax within the label text to include HTML entities (e.g., {{{»}}} (») or {{{►}}} (►), or even embedded images (e.g., {{{<img src="images/eric3.gif">}}}).//
* ''"""#panelID:"""''<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content. This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* ''""">"""''<br>automatically adds blockquote formatting to slider content
* ''"""..."""''<br>defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//
//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
<<<
!!!!!Examples
<<<
simple in-line slider:
{{{
+++
content
===
}}}
+++
content
===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]
content
===
}}}
+++[label|tooltip]
content
===
----
content automatically blockquoted:
{{{
+++>
content
===
}}}
+++>
content
===
----
all options (except cookie) //(default open, heading, sized floater, transient, open on hover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
}}}
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
----
complex nesting example:
{{{
+++[get info...=I|click for information or press Alt-I]
put some general information here,
plus a floating panel with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could in turn contain a transient panel,
perhaps with a +++^25em^*[glossary definition]explaining technical terms===
===
===
}}}
+++[get info...=I|click for information or press Alt-I]
put some general information here,
plus a floating panel with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could in turn contain a transient panel,
perhaps with a +++^25em^*[glossary definition]explaining technical terms===
===
===
----
embedded image as slider button
{{{
+++[<img src=images/eric3.gif>|click me!]>
{{big{OUCH!}}}
===
}}}
+++[<img src=images/eric3.gif>|click me!]>
{{big{OUCH!}}}
===
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
2008.11.13 - 2.4.8 in document.onclick(), if transient panel is not a sliderPanel or floatingPanel, hide it via CSS
2008.10.05 - 2.4.7 in onClickNestedSlider(), added try/catch around focus() call to prevent IE error if input field being focused on is currently not visible.
2008.09.07 - 2.4.6 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 - 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons, use call() method when invoking document.onclick function (avoids error in IE)
2008.06.07 - 2.4.4 changed default for chkFloatingSlidersAnimate to FALSE to avoid clipping problem on some browsers (IE). Updated Morpher hijack (again) to adjust regular sliderPanel styles as well as floatingPanel styles.
2008.05.07 - 2.4.3 updated Morpher hijack to adjust floatingPanel styles after animation without affecting other animated elements (i.e. popups). Also, updated adjustSliderPos() to account for scrollwidth and use core findWindowWidth().
2008.04.02 - 2.4.2 in onClickNestedSlider, handle clicks on elements contained //within// slider buttons (e.g., when using HTML to display an image as a slider button).
2008.04.01 - 2.4.1 open on hover also triggers document.onclick to close other transient sliders
2008.04.01 - 2.4.0 re-introduced 'open on hover' feature using "@" symbol
2008.03.26 - 2.3.5 in document.onclick(), if click is in popup, don't dismiss transient panel (if any)
2008.01.08 - [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 - 2.3.4 added hijack for Animator.prototype.startAnimating(). Previously, the plugin code simply set the overflow to "visible" after animation. This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
2007.12.17 - 2.3.3 use hasClass() instead of direct comparison to test for "floatingPanel" class. Allows floating panels to have additional classes assigned to them (i.e., by AnimationEffectsPlugin).
2007.11.14 - 2.3.2 in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()". Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display). Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
2007.07.26 - 2.3.1 in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed. Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
2007.07.20 - 2.3.0 added syntax for setting panel ID (#panelID:). This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.
2007.07.19 - 2.2.0 added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)
2007.07.14 - 2.1.2 corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop
2007.07.12 - 2.1.0 replaced use of "*" for 'open/close on rollover' (which didn't work too well). "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document. This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed. Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.
2007.06.10 - 2.0.5 add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
2007.05.31 - 2.0.4 add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel. This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page. (thanks to Harsha for bug report)
2007.03.30 - 2.0.3 added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
2007.03.01 - 2.0.2 for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2007.03.01 - 2.0.1 in hijack for Slider.prototype.stop, use apply() to pass params to core function
2006.07.28 - 2.0.0 added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
2006.07.25 - 1.9.3 when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.
2006.06.29 - 1.9.2 in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
2006.06.22 - 1.9.1 added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
2006.05.11 - 1.9.0 added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
2006.05.09 - 1.8.0 in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
2006.04.24 - 1.7.8 in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
2006.02.16 - 1.7.7 corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
2006.02.15 - 1.7.6 in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
2006.02.04 - 1.7.5 add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2006.01.18 - 1.7.4 only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
2006.01.16 - 1.7.3 added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
2006.01.16 - 1.7.2 added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2006.01.14 - 1.7.1 added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
2006.01.14 - 1.7.0 added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
2006.01.03 - 1.6.2 When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
2005.12.15 - 1.6.1 added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
2005.11.25 - 1.6.0 added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
2005.11.21 - 1.5.1 revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
2005.11.20 - 1.5.0 added (cookiename) syntax for optional tracking and restoring of slider open/close state
2005.11.11 - 1.4.0 added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
2005.11.07 - 1.3.0 removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
2005.11.05 - 1.2.1 changed name to NestedSlidersPlugin
2005.11.04 - 1.2.0 added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
2005.11.03 - 1.1.1 fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used. code cleanup, added documentation
2005.11.03 - 1.1.0 changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}. changed name to EasySlidersPlugin
2005.11.03 - 1.0.0 initial public release
<<<
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{
String.prototype.getNextFreeName = function() {
var numberRegExp = / \(([0-9]+)\)$/;
var match = numberRegExp.exec(this);
if (match) {
var num = parseInt(match[1]) + 1;
return this.replace(numberRegExp," ("+num+")");
}
else {
return this + " (1)";
}
}
config.macros.newTiddler.checkForUnsaved = function(newName) {
var r = false;
story.forEachTiddler(function(title,element) {
if (title == newName)
r = true;
});
return r;
}
config.macros.newTiddler.getName = function(newName) {
while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
newName = newName.getNextFreeName();
return newName;
}
config.macros.newTiddler.onClickNewTiddler = function()
{
var title = this.getAttribute("newTitle");
if(this.getAttribute("isJournal") == "true") {
var now = new Date();
title = now.formatString(title.trim());
}
title = config.macros.newTiddler.getName(title); // <--- only changed bit
var params = this.getAttribute("params");
var tags = params ? params.split("|") : [];
var focus = this.getAttribute("newFocus");
var template = this.getAttribute("newTemplate");
var customFields = this.getAttribute("customFields");
story.displayTiddler(null,title,template,false,null,null);
var tiddlerElem = document.getElementById(story.idPrefix + title);
if(customFields)
story.addCustomFields(tiddlerElem,customFields);
var text = this.getAttribute("newText");
if(typeof text == "string")
story.getTiddlerField(title,"text").value = text.format([title]);
for(var t=0;t<tags.length;t++)
story.setTiddlerTag(title,tags[t],+1);
story.focusTiddler(title,focus);
return false;
};
//}}}
/%
|Name|NextTiddler|
|Source|http://www.TiddlyTools.com/#NextTiddler|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|insert a link that, when clicked, closes the current tiddler and opens another one in its place|
usage: <<tiddler NextTiddler with: NewTiddlerTitle linktext>>
%/<script label="$2">
var tiddler=story.findContainingTiddler(place);
story.displayTiddler(tiddler,"$1");
story.closeTiddler(tiddler.getAttribute("tiddler")); // close self
return false;
</script>
/%
|Name|OpenTaggedTiddlers|
|Source|http://www.TiddlyTools.com/#OpenTaggedTiddlers|
|Version|1.2.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.3|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|open multiple tagged tiddlers with a single click|
Usage: <<tiddler OpenTaggedTiddlers with: "label" "tagToMatch" "sortBy" "reverse" "close" limit>>
if MatchTagsPlugin is installed, "tagToMatch" can be a boolean tag expression
"sortBy"
is an optional tiddler FIELDNAME, and defaults to "title" (use "modified" or "created" for dates)
"reverse"
is an optional KEYWORD, and reverses the order of display of the matched tiddler (i.e., descending vs. ascending)
"close"
is an optional KEYWORD, that closes all open tiddlers before opening the tagged tiddlers
limit
is an optional NUMBER, that limits the number of tiddlers that are opened
Note: use "" as placeholders when omitting optional parameters
%/<script label="$1">
var list=[];
var match='$2';
var sortBy='$3'; if ((sortBy=='$'+'3')||(sortBy=='')) sortBy='title';
var filter='[tag[%0]][sort[%1]]'.format([match,sortBy]);
var tids=store.filterTiddlers(filter);
if ('$4'=='reverse') tids=tids.reverse();
if ('$5'=='close') story.closeAllTiddlers();
var limit=('$6'!='$'+'6')?parseInt('$6'):tids.length;
for (var t=0;t<tids.length && t<limit;t++) list.push(tids[t].title);
var here=story.findContainingTiddler(place);
story.displayTiddlers(here,list);
if (here && list.length) { // scroll to top of newly displayed tiddlers
var cmd='window.scrollTo(0,'+(here.offsetTop+here.offsetHeight)+')';
var delay=config.options.chkAnimate?config.animDuration+100:0;
setTimeout(cmd,delay);
}
return false;
</script>
/%
|Name|OpenTiddlers|
|Source|http://www.TiddlyTools.com/#OpenTiddlers|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|open multiple tiddlers with a single click|
Usage: <<tiddler OpenTiddlers with: "label with space" "tiddler tiddler [[tiddler with spaces]] tiddler..." template>>
(template is optional and defaults to ViewTemplate)
%/<script label="$1">
var tidlist="$2";
if ("$3"!="$"+"3") var template="$3";
story.displayTiddlers(story.findContainingTiddler(place),tidlist.readBracketedList(),template);
return false;
</script>
On Tuesday, January 27, 2009 3:35:44 PM, PaulReiber loaded 5 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[CopyTiddlerPlugin]] - updated
#[[CoreTweaks]] - skipped (cancelled by user)
#[[HTMLFormattingPlugin]] - updated
#[[HTMLFormattingPluginInfo]] - updated
#[[TaggedTemplateTweak]] - updated
#[[TaggedTemplateTweakInfo]] - updated
<<<
----
On Tuesday, January 27, 2009 2:02:16 PM, PaulReiber imported 6 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[CookieManagerPlugin]] - added
#[[CookieManagerPluginConfig]] - added
#[[CookieSaverPlugin]] - added
#[[CookieSaverPluginConfig]] - added
#[[MatchTagsPlugin]] - added
#[[MatchTagsPluginInfo]] - added
<<<
----
On Tuesday, January 27, 2009 12:06:52 PM, PaulReiber imported 103 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[AppendToTiddler]] - added
#[[AttachFileMIMETypes]] - added
#[[AttachFilePackage]] - added
#[[AttachFilePlugin]] - added
#[[AttachFilePluginFormatters]] - added
#[[AttachFileSample]] - added
#[[AttachFileSample2]] - added
#[[BlankFAQ]] - added
#[[BreadcrumbsCommand]] - replaces BreadcrumbsCommand - 9/16/2007 19:56:00 by ELSDesignStudios
#[[CheckboxPlugin]] - added
#[[CloseOtherTiddlers]] - added
#[[DOMViewerPlugin]] - added
#[[DiscoveryPackage]] - added
#[[EditFieldPlugin]] - added
#[[EmbedTiddlers]] - added
#[[ExportTiddlersPlugin]] - added
#[[ExportTiddlersPluginInfo]] - added
#[[FAQViewerPlugin]] - added
#[[FaqViewTemplate]] - added
#[[FileDropPlugin]] - added
#[[FileDropPluginConfig]] - added
#[[FoldOtherTiddlers]] - added
#[[FramedLinksPlugin]] - added
#[[GetTheFAQs]] - added
#[[GliderDance]] - added
#[[GliderGun]] - added
#[[HideTiddlerBackground]] - added
#[[HideTiddlerSubtitle]] - added
#[[HideTiddlerTags]] - added
#[[HideTiddlerTitle]] - added
#[[HideTiddlerToolbar]] - added
#[[ImportExportPackage]] - added
#[[ImportTiddlersPlugin]] - added
#[[ImportTiddlersPluginInfo]] - added
#[[InlineJavascriptPlugin]] - replaces InlineJavascriptPlugin - 6/11/2008 07:15:00 by ELSDesignStudios
#[[InputPackage]] - added
#[[InstantBookmarklets]] - added
#[[Jash.css]] - added
#[[Jash.js]] - added
#[[JashCommand]] - added
#[[JashPackage]] - added
#[[ListboxPlugin]] - added
#[[ListboxSample]] - added
#[[LoadRemotePlugin]] - added
#[[LoadTiddlersPlugin]] - added
#[[LoadTiddlersPluginInfo]] - added
#[[MicroCalc]] - added
#[[MoveTiddlerToTop]] - added
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 11/15/2008 22:23:00 by ELSDesignStudios
#[[NextTiddler]] - added
#[[OpenTaggedTiddlers]] - added
#[[OpenTiddlers]] - added
#[[RecentChangesPlugin]] - added
#[[RefreshPageDisplay]] - added
#[[RelatedTiddlersPlugin]] - added
#[[RescueStoreAreaCommand]] - added
#[[RunTiddlerPlugin]] - added
#[[SaveAsPlugin]] - replaces SaveAsPlugin - 9/29/2008 08:12:00 by ELSDesignStudios
#[[SaveAsPluginInfo]] - replaces SaveAsPluginInfo - 9/29/2008 08:11:00 by ELSDesignStudios
#[[SaveBreadcrumbs]] - added
#[[SaveFromWebConfig]] - added
#[[SaveFromWebPlugin]] - added
#[[SaveFromWebPluginInfo]] - added
#[[SearchOptionsPlugin]] - added
#[[SetTiddlerBackground]] - added
#[[SetUserNamePlugin]] - added
#[[ShowAllByTags]] - added
#[[ShowDocumentInfo]] - added
#[[ShowLocalDirectory]] - added
#[[ShowPopup]] - added
#[[ShowReferences]] - added
#[[ShowSlices]] - added
#[[ShowTabsForTags]] - added
#[[ShowTiddlerStatistics]] - added
#[[ShowUserName]] - added
#[[SliceGridPlugin]] - added
#[[SplitTiddler]] - added
#[[SystemInfoPlugin]] - added
#[[TagCloudPlugin]] - added
#[[TagGridPlugin]] - added
#[[TemporaryTiddlersPlugin]] - added
#[[TextAreaPlugin]] - replaces TextAreaPlugin - 1/8/2008 12:13:00 by ELSDesignStudios
#[[TiddlerTweakerPlugin]] - added
#[[TiddlyLifePlugin]] - added
#[[TimedTiddlerTour]] - added
#[[ToggleAnimations]] - added
#[[ToggleBreadcrumbs]] - replaces ToggleBreadcrumbs - 6/5/2007 12:53:00 by ELSDesignStudios
#[[ToggleClass]] - replaces ToggleClass - 9/23/2007 11:47:00 by ELSDesignStudios
#[[ToggleFullScreen]] - replaces ToggleFullScreen - 10/13/2008 18:23:00 by ELSDesignStudios
#[[ToggleLeftSidebar]] - replaces ToggleLeftSidebar - 4/1/2008 00:12:00 by ELSDesignStudios
#[[ToggleMinorUpdates]] - replaces ToggleMinorUpdates - 4/5/2007 23:42:00 by ELSDesignStudios
#[[ToggleReadOnly]] - replaces ToggleReadOnly - 1/23/2008 08:45:00 by ELSDesignStudios
#[[ToggleRightSidebar]] - replaces ToggleRightSidebar - 4/1/2008 00:28:00 by ELSDesignStudios
#[[ToggleScrollingSidebars]] - added
#[[ToggleSinglePageMode]] - added
#[[ToggleSiteMenu]] - added
#[[ToggleSiteTitles]] - replaces ToggleSiteTitles - 7/19/2006 17:30:00 by ELSDesignStudios
#[[ToggleTiddlerTags]] - replaces ToggleTiddlerTags - 4/30/2008 14:41:00 by ELSDesignStudios
#[[ToggleTiddlerTitles]] - added
#[[UploadPlugin]] - added
#[[UploadPluginDoc]] - added
#[[UploadPluginTweak]] - added
#[[WikifyPlugin]] - replaces WikifyPlugin - 11/16/2008 21:18:00 by ELSDesignStudios
<<<
----
On Thursday, January 15, 2009 3:31:14 PM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[MultiSelectSampleScript]] - added
<<<
----
On Tuesday, January 13, 2009 3:50:41 PM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[BookmarkViewTemplate]] - added
<<<
----
On Tuesday, January 13, 2009 11:49:04 AM, PaulReiber imported 9 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[ToggleBreadcrumbs]] - added
#[[ToggleClass]] - added
#[[ToggleFullScreen]] - added
#[[ToggleLeftSidebar]] - added
#[[ToggleMinorUpdates]] - added
#[[ToggleReadOnly]] - added
#[[ToggleRightSidebar]] - added
#[[ToggleSiteTitles]] - added
#[[ToggleTiddlerTags]] - added
<<<
----
On Tuesday, January 13, 2009 11:38:39 AM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[StyleSheetShortcuts]] - added
<<<
----
On Tuesday, January 13, 2009 11:32:20 AM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[UnsavedChangesPlugin]] - added
<<<
----
On Tuesday, January 13, 2009 11:28:05 AM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[EricsPageTemplate]] - renamed from PageTemplate
<<<
----
On Tuesday, January 13, 2009 11:26:09 AM, PaulReiber imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[StoryMenu]] - added
<<<
----
On Sunday, December 28, 2008 7:19:05 AM, ELSDesignStudios imported 30 tiddlers from
[[C:\Documents and Settings\Eric Shulman\My Documents\TiddlyTools\index.html|C:\Documents and Settings\Eric Shulman\My Documents\TiddlyTools\index.html]]:
<<<
#[[BreadcrumbsCommand]] - added
#[[BreadcrumbsPlugin]] - added
#[[BreadcrumbsPluginInfo]] - added
#[[CollapseTiddlersPlugin]] - added
#[[CollapsedTemplate]] - added
#[[CopyTiddlerPlugin]] - added
#[[CoreTweaks]] - added
#[[DisableWikiLinksList]] - added
#[[DisableWikiLinksPlugin]] - added
#[[GotoPlugin]] - added
#[[GotoPluginInfo]] - added
#[[HTMLFormattingPlugin]] - added
#[[HTMLFormattingPluginInfo]] - added
#[[ImageSizePlugin]] - added
#[[InlineJavascriptPlugin]] - added
#[[InlineJavascriptPluginInfo]] - added
#[[NestedSlidersPlugin]] - added
#[[NestedSlidersPluginInfo]] - added
#[[NewMeansNewPlugin]] - added
#[[RearrangeTiddlersPlugin]] - added
#[[SaveAsPlugin]] - added
#[[SaveAsPluginInfo]] - added
#[[SnapshotPlugin]] - added
#[[SnapshotPluginInfo]] - added
#[[TaggedTemplateTweak]] - added
#[[TaggedTemplateTweakInfo]] - added
#[[TextAreaPlugin]] - added
#[[TextAreaPluginInfo]] - added
#[[WikifyPlugin]] - added
#[[WikifyPluginInfo]] - added
<<<
<!--{{{-->
<div class='header' macro='gradient vert #8CF #666'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='storyMenu' class='storyMenu' refresh='content' force='false' tiddler='StoryMenu'></div>
<div id='tiddlerDisplay' style="clear:both"></div>
</div>
<!--}}}-->
/%
|''URL:''|http://www.linkedin.com/in/reiber|
|''Description:''|LinkedIN profile for Paul Reiber, Reiber Labs|
|''Author:''|PaulReiber|
%/
{{center clear{{{pictures{
[img[ice_ice_baby_by_p0stfrau]]
[img[iblur-iii]]
[img[ii-blur]]
[img[i-blur]]
}}}<script>
var di = [];
var ri = [];
var co = place.lastChild;
var images=co.getElementsByTagName("img");
for (var i=0; i<images.length; i++) di.push(images[i]);
var ni=di.length;
var maxw; var maxh = maxw = 0;
for ( var i=0; i<ni; i++){
maxh = Math.max(maxh, di[i].offsetHeight);
maxw = Math.max(maxw, di[i].offsetWidth);
}
var holder = createTiddlyElement(place,"span", "holderID");
var r = Raphael(holder, maxw, maxh);
for (var i=0; i<di.length; i++) {
var ih=di[i].offsetHeight;
var iw=di[i].offsetWidth;
ri.push(r.image(di[i].src,(maxw-iw)/2,(maxh-ih)/2,iw,ih).attr({opacity: (1/ni)}));
}
co.style.display="none";
holder.onmousemove=function (e) { var ev=e||window.event;
var x=(!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()))-findPosX(this);
var y=-((!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY()))-findPosY(this)-this.offsetHeight);
var q = (x-(maxw/2)>0?1:0) + (y-(maxh/2)>0?2:0);
for (var qi=0; qi<4; qi++) {
if (qi == q) {
ri[qi].attr({opacity: Math.min(1, (ri[qi].attr("opacity")+0.5))});
}else{
ri[qi].attr({opacity: Math.max(0.1,(ri[qi].attr("opacity")-0.1))});
}
}
clearMessage(); displayMessage(q);
}
</script>
}}}
<html><div id="raBlend01">[img[mirrors]]</div></html>
<script>
var w=500; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375;
var holder = document.getElementById("raBlend01"); //...it's right up there, above this script...
var img = holder.firstChild.firstChild; // bracket-img-bracket emits a span wrapping an image, so we dig in one deeper to find the content
img.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael(place, w*2, h*2); // speaking of what to render and where... let's make a canvas r to play with
var i = []; // an image array
for (var ii = 0; ii < 360; ii+=4){
i[ii] = r.image(img.src, w/2, h/2, w, h).attr({opacity: .4}).rotate(ii);
};
var t = new Timeline();
for (var ii = 0; ii < 360; ii+=4){
t.SetAt(0, AnimeJInterp.alpha(100000, 10, i[ii].attr({opacity: (360/ii) }), 0.0, .05));
}
t.Run();
</script>
<html><div id="holder301" class="center">[img[mirrors]]</div></html>
<script>
var w=500 /2; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375 /2;
var holder = document.getElementById("holder301"); //...it's right up there, above this script...
var img = holder.firstChild.firstChild;// bracket-img-bracket emits a span wrapping an image, so we dig in one deeper to find the content
img.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael(place, w*4, h*4); // speaking of what to render and where... let's make a canvas r to play with
var i = [];
//r.image(img.src, w/2, h/2, w*2, h*2).scale(1,-1).attr({opacity: .4});
for (var ii = 0; ii < 360; ii+=2){
i[ii] = r.image(img.src, w, h, w*2, h*2).attr({opacity: .4}).rotate(ii); //.scale(1, -1);
};
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
for (var ii = 0; ii < 360; ii+=2){
i[ii].rotate(diff*ii);
}
this.lastX=x;
};
</script>
! Greetings!
This document provides fun and rewarding ways to experiment with and refine javascript code, so it's pretty ideal for getting started with, and otherwise experimenting with, Raphael programming (or tinkering with just about any Javascript library out there, for that matter).
Although you'll find variations on a few key themes throughout the handful of Raphael demos here, don't assume each demo is just like the last; some do fun things with mouse motion, for example, and some have significantly higher and/or lower initial rendering (pre-rendering) overheads or mouse-over overheads.
This document was put together partly for the fun of learning and exploring Raphael, and some to demonstrate how slickly and easily TiddlyWiki can be used as a Raphael rapid development platform - it's practically a full-blown javascript IDE, in a single file.
Note that this document is really nothing special - it's simply a "mash up" of Raphael and TiddlyWiki, along with a select set of power tools from TiddlyTools and elsewhere, that all happen to work particularly well together.
Note also that I'm just getting started with Raphael myself, so please don't look to these demos for "how to use Raphael"; in fact, my hope is that over time, a handful of readers will build much better demos using these tools, and email me back the "tiddler source code" of those more impressive demos for inclusion in this document.
! leveraging embedded data
The image(s) being manipulated in these demos are for the most part (as of the writing of this explanation) embedded directly into this file, rather than being references to external image files (which is the case for around 99% of the webpages out there). This won't work with IE but it should work just fine with just about every other major browser out there.
Depending on your code, using base 64 encoded data like we do for example in the [[mirrors]] tiddler may or may not yield performance improvements. Raphael (and any other javascript accessing the image) isn't doing any external accesses to get the image, so the access should be significantly faster than for images from the http-colon-slash-slash or even the file-colon-slash-slash protocols.
<html><div id="holder" class="center">[img[mirrors]]</div></html>
<script>
var w=500 /2;
var h=375 /2;
var holder = document.getElementById("holder");
var img = holder.firstChild.firstChild;
img.style.display = "none";
var r = Raphael("holder", w*2, h*3);
var i1 = r.image(img.src, 0, 0, w, h);
var i2 = r.image(img.src, 0, h, w, h).scale(1, -1).attr({opacity: .5});
var gradient = { type: "linear", dots: [{color: "#000", opacity: .5}, {color: "#000"}], vector: [0, 0, 0, "100%"] };
var i3 = r.rect(0, h, w, h).attr({gradient: gradient});
holder.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
i1.rotate(diff); i2.rotate(diff*1.5); i3.rotate(diff*1.5);
this.lastX=x;
};
</script>
<html><div id="holder10" class="center">[img[mirrors]]</div></html>
<script>
var w=500 /2; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375 /2;
var holder = document.getElementById("holder10"); //...it's right up there, above this script...
var img = holder.firstChild.firstChild;// bracket-img-bracket emits a span wrapping an image, so we dig in one deeper to find the content
img.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael(place, w*4, h*4); // speaking of what to render and where... let's make a canvas r to play with
var i = [];
//r.image(img.src, w/2, h/2, w*2, h*2).scale(1,-1).attr({opacity: .4});
for (var ii = 0; ii < 360; ii+=10){
i[ii] = r.image(img.src, w, h, w*2, h*2).attr({opacity: .4}).rotate(ii); //.scale(1, -1);
};
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
for (var ii = 0; ii < 360; ii+=10){
i[ii].rotate(diff);
}
this.lastX=x;
};
</script>
<html><div id="holder101" class="center">[img[mirrors]]</div></html>
<script>
var w=500 /2; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375 /2;
var holder = document.getElementById("holder101"); //...it's right up there, above this script...
var img = holder.firstChild.firstChild;// bracket-img-bracket emits a span wrapping an image, so we dig in one deeper to find the content
img.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael(place, w*3, h*3); // speaking of what to render and where... let's make a canvas r to play with
var i = [];
r.image(img.src, w/2, h/2, w*2, h*2).scale(1,-1).attr({opacity: .4});
for (var ii = 0; ii < 360; ii+=36){
i[ii] = r.image(img.src, w, h, w, h).attr({opacity: .4}).rotate(ii); //.scale(1, -1);
};
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
for (var ii = 0; ii < 360; ii+=36){
i[ii].rotate(diff);
}
this.lastX=x;
};
</script>
<html><div id="holder360" class="center">[img[mirrors]]</div></html>
<script>
var w=500 /2; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375 /2;
var holder = document.getElementById("holder360"); //...it's right up there, above this script...
var img = holder.firstChild.firstChild;// bracket-img-bracket emits a span wrapping an image, so we dig in one deeper to find the content
img.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael("holder360", w*3, h*3); // speaking of what to render and where... let's make a canvas r to play with
var i = [];
r.image(img.src, w/2, h/2, w*2, h*2).attr({opacity: .5});
for (var ii = 0; ii < 360; ii++){
i[ii] = r.image(img.src, w, h, w, h).attr({opacity: .1}).rotate(ii).scale(1, -1);
};
</script>
<html><div id="holderPC" class="center">[img[ice_ice_baby_by_p0stfrau]][img[iblur-iii]][img[iiiblur-iii]][img[i-blur]]</div></html>
<script>
var w=500 /2; // w and h are each half of the size of the image being rotated; this will let us scale up to 200% w no derez-ing
var h=375 /2;
var holder = document.getElementById("holderPC"); //...it's right up there, above this script...
var img1 = holder.firstChild.firstChild;
var img2 = img1.nextSibling;
var img3 = img2.nextSibling;
var img4 = img3.nextSibling;
img1.style.display= img2.style.display= img3.style.display =img4.style.display = "none"; // then promptly make it go away, which is OK since we'll be rendering stuff into the holder anyway
var r = Raphael(place, w*3, h*3); // speaking of what to render and where... let's make a canvas r to play with
var i = [];
var i1= r.image(img1.src, w/2, h/2, w*2, h*2).scale(1,-1).attr({opacity: .25});
var i2= r.image(img2.src, w/2, h/2, w*2, h*2).scale(-1,-1).attr({opacity: .25});
var i3= r.image(img3.src, w/2, h/2, w*2, h*2).scale(-1,1).attr({opacity: .25});
var i4= r.image(img4.src, w/2, h/2, w*2, h*2).scale(1,1).attr({opacity: .25});
//for (var ii = 0; ii < 360; ii+=36){
// i[ii] = r.image(img.src, w, h, w, h).attr({opacity: .4}).rotate(ii); //.scale(1, -1);
//};
place.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
//for (var ii = 0; ii < 360; ii+=36){
// i[ii].rotate(diff);
//}
this.lastX=x;
};
</script>
/***
|Name|RaphaelPlugin|
|Source|http://www.TiddlyTools.com/#RaphaelPlugin|
|Documentation|http://www.TiddlyTools.com/#RaphaelPlugin|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|InlineJavacriptPlugin|
|Overrides||
|Description|wrapper for Raphaël library functions - SVG/VML drawing|
|Status|ALPHA/EXPERIMENTAL - SUBJECT TO RAPID CHANGE|
This plugin contains a //compressed// copy of the Raphaël v.0.6.3 SVG/VML Vector Graphics Library, which currently supports Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+.
!!!!!Documentation
<<<
Raphaël (http://raphaeljs.com) is a small javascript function library that enables you to create and manipulate vector graphic objects. Raphaël was [[created by Dmitry Baranovskiy|http://dmitry.baranovskiy.com/]] and has been [[distributed under a Creative Commons 3.0 BY-SA license|http://creativecommons.org/licenses/by-sa/3.0/]]. Dmitry writes:
>//Raphaël uses the SVG W3C Recommendation and VML (mostly equivalent Internet Explorer implementation) as a base for creating graphics. This means every graphical object you create is also a DOM object, so you can attach JavaScript event handlers or modify them later. Raphaël’s goal is to provide an adapter that will make drawing vector art (similar to Flash) compatible cross-browser and easy.//
<<<
!!!!!Usage
<<<
Use [[InlineJavascriptPlugin]] to invoke Raphaël functions from within tiddler content.
See http://raphaeljs.com/reference.html for Raphaël API syntax and parameters.
<<<
!!!!!Examples (requires InlineJavascriptPlugin)
<<<
<script show>
var text = 'rotate this text';
var attr = {"font": '18pt "Verdana"', opacity: 0.5};
var holder = createTiddlyElement(place,'div','','groupbox');
var R = Raphael(holder,200,200);
var txt = [];
txt[0] = R.text(100, 100, text).attr(attr).attr("fill", "#0f0");
txt[1] = R.text(100, 100, text).attr(attr).attr("fill", "#f00");
txt[2] = R.text(100, 100, text).attr(attr).attr("fill", "#00f");
holder.onmousemove=function (e) { var ev=e||window.event;
var x=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); // mouse X
var diff=x-this.lastX||x;
txt[0].rotate(diff); txt[1].rotate(diff*1.5); txt[2].rotate(diff*2);
this.lastX=x;
};
</script>
<script show>
// code copied from http://raphaeljs.com/spin-spin-spin.html
function spinner(holderid, R1, R2, count, stroke_width, colour) {
var sectorsCount = count || 12,
color = colour || "#fff",
width = stroke_width || 15,
r1 = Math.min(R1, R2) || 35,
r2 = Math.max(R1, R2) || 60,
cx = r2 + width,
cy = r2 + width,
r = Raphael(holderid, r2 * 2 + width * 2, r2 * 2 + width * 2),
sectors = [],
opacity = [],
beta = 2 * Math.PI / sectorsCount,
pathParams = {stroke: color, "stroke-width": width, "stroke-linecap": "round"};
Raphael.getColor.reset();
for (var i = 0; i < sectorsCount; i++) {
var alpha = beta * i - Math.PI / 2,
cos = Math.cos(alpha),
sin = Math.sin(alpha);
opacity[i] = 1 / sectorsCount * i;
sectors[i] = r.path(pathParams)
.moveTo(cx + r1 * cos, cy + r1 * sin)
.lineTo(cx + r2 * cos, cy + r2 * sin);
if (color == "rainbow") {
sectors[i].attr("stroke", Raphael.getColor());
}
}
var tick;
(function ticker() {
opacity.unshift(opacity.pop());
for (var i = 0; i < sectorsCount; i++) {
sectors[i].attr("opacity", opacity[i]);
}
r.safari();
tick = setTimeout(ticker, 1000 / sectorsCount);
})();
return function () {
clearTimeout(tick);
r.remove();
};
}
var id="RaphaelPluginSpinnerDemo";
var holder=createTiddlyElement(place,'div',id,'')
spinner(id, 20, 60, 20, 20, "#def");
</script>
<<<
!!!!!Revisions
<<<
2009.01.18 [1.0.1] updated to Raphaelv0.6.3
2009.01.05 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.RaphaelPlugin={major: 1, minor: 0, revision: 1, date: new Date(2009,1,18)};
//}}}
// // COMPRESSED LIBRARY - see http://raphaeljs.com for original, uncompressed source
//{{{
/*
* Raphael 0.6.3 - JavaScript Vector Library
*
* Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
*/
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('J 1r=(N(n){J r=N(){11 r.45.2y(r,P)};r.5g="0.6.3";r.1o=n;J q={1F:0,1E:0,1u:"#52","1u-1w":1,22:\'70 "51"\',"22-4b":\'"51"\',"22-3z":"16",2A:0,1b:0,1w:1,1f:"4c,0",r:0,2P:0,28:0,2d:0,2z:"1 1",1g:"#1P","1g-2K":"","1g-3v":"3e","1g-4e":"3e","1g-4f":0,"1g-1w":1,"1g-17":1,2x:"0 0",17:0,x:0,y:0},3X={1F:"1M",1E:"1M",1u:"3T","1u-1w":"1M","22-3z":"1M",1b:"1M",1w:"1M",1f:"1f",r:"1M",2P:"1M",28:"1M",2d:"1M",2z:"3I",1g:"3T","1g-1w":"1M","1g-17":"1M",2x:"3I",17:"1M",x:"1M",y:"1M"},C={};K(n=="3y"){J u=N(i,j,l){J g=1i.1B("1x:2f"),3b=g.1q;3b.2C="2M";3b.1X=0;3b.1A=0;3b.17=l.17+"1G";3b.1b=l.1b+"1G";J m=1i.1B("1x:2H"),3i=m.1q;3i.17=l.17+"1G";3i.1b=l.1b+"1G";m.1f="";K(i["4y"]){m.6c=i["4y"]}m.3l=9.3l;m.3r=9.3r;g.1j(m);l.1k.1j(g);J p=1N A(m,g,l);p.18=1V;p.1o="1f";p.1f=[];p.13={x:0,y:0,1S:0,1T:0,18:1V};p.2B="";p.3g=N(){9.18=1V;11 9};p.3O=N(){9.18=34;11 9};p.3f=N(x,y){J d=9.18?"m":"t";d+=15.1d(19(x,10))+" "+15.1d(19(y,10));9.1c.1f=9.2B+=d;9.13.x=(9.18?0:9.13.x)+19(x,10);9.13.y=(9.18?0:9.13.y)+19(y,10);9.13.18=9.18;9.O.1f+=(9.18?"M":"m")+[x,y];11 9};p.24=N(x,y){J d=9.18?"l":"r";d+=15.1d(19(x,10))+" "+15.1d(19(y,10));9[0].1f=9.2B+=d;9.13.x=(9.18?0:9.13.x)+19(x,10);9.13.y=(9.18?0:9.13.y)+19(y,10);9.13.18=9.18;9.O.1f+=(9.18?"L":"l")+[x,y];11 9};p.49=N(a,b,c,e,f,g){f=(9.18?0:9.13.x)+f;g=(9.18?0:9.13.y)+g;J h=9.13.x,3j=9.13.y,x=(h-f)/2,y=(3j-g)/2,k=(c==e?-1:1)*15.5y(15.44(a*a*b*b-a*a*y*y-b*b*x*x)/(a*a*y*y+b*b*x*x)),1F=k*a*y/b+(h+f)/2,1E=k*-b*x/a+(3j+g)/2,d=e?(9.18?"5w":"5v"):(9.18?"5u":"5t"),1X=15.1d(1F-a),1A=15.1d(1E-b);d+=[1X,1A,15.1d(1X+a*2),15.1d(1A+b*2),15.1d(h),15.1d(3j),15.1d(19(f,10)),15.1d(19(g,10))].1z(", ");9.1c.1f=9.2B+=d;9.13.x=(9.18?0:9.13.x)+19(f,10);9.13.y=(9.18?0:9.13.y)+19(g,10);9.13.18=9.18;9.O.1f+=(9.18?"A":"a")+[a,b,0,c,e,f,g];11 9};p.5j=N(a,b,c){K(!c){11 9.24(a,b)}1l{J x=15.1d(15.1d(19(a,10)*2g)/2g),y=15.1d(15.1d(19(b,10)*2g)/2g),w=15.1d(15.1d(19(c,10)*2g)/2g),d=9.18?"c":"v",1t=[15.1d(9.13.x)+w,15.1d(9.13.y),x-w,y,x,y],5k=[9.13.x+c,9.13.y,a-c,b,a,b];d+=1t.1z(" ")+" ";9.13.x=(9.18?0:9.13.x)+1t[4];9.13.y=(9.18?0:9.13.y)+1t[5];9.13.1S=1t[2];9.13.1T=1t[3];9.1c.1f=9.2B+=d;9.O.1f+=(9.18?"C":"c")+5k;11 9}};p.1J=N(){J d=9.18?"c":"v";K(P.14==6){9.13.1S=(9.18?0:9.13.x)+19(P[2],10);9.13.1T=(9.18?0:9.13.y)+19(P[3],10);9.13.x=(9.18?0:9.13.x)+19(P[4],10);9.13.y=(9.18?0:9.13.y)+19(P[5],10);d+=[15.1d(19(P[0],10)),15.1d(19(P[1],10)),15.1d(19(P[2],10)),15.1d(19(P[3],10)),15.1d(19(P[4],10)),15.1d(19(P[5],10))].1z(" ")+" ";9.13.18=9.18;9.O.1f+=(9.18?"C":"c")+3d.1v.2r.3c(P,0,P.14)}K(P.14==4){J a=9.13.x*2-9.13.1S;J b=9.13.y*2-9.13.1T;9.13.1S=(9.18?0:9.13.x)+19(P[0],10);9.13.1T=(9.18?0:9.13.y)+19(P[1],10);9.13.x=(9.18?0:9.13.x)+19(P[2],10);9.13.y=(9.18?0:9.13.y)+19(P[3],10);d+=[15.1d(a),15.1d(b),15.1d(19(P[0],10)),15.1d(19(P[1],10)),15.1d(19(P[2],10)),15.1d(19(P[3],10))].1z(" ")+" ";9.O.1f+=(9.18?"S":"s")+3d.1v.2r.3c(P,0,P.14)}9.1c.1f=9.2B+=d;11 9};p.3J=N(){J d="5G";K(P.14==4){9.13.3a=(9.18?0:9.13.x)+19(P[0],10);9.13.39=(9.18?0:9.13.y)+19(P[1],10);9.13.x=(9.18?0:9.13.x)+19(P[2],10);9.13.y=(9.18?0:9.13.y)+19(P[3],10);d+=[15.1d(9.13.3a),15.1d(9.13.39),15.1d(9.13.x),15.1d(9.13.y)].1z(" ")+" ";9.13.18=9.18;9.O.1f+=(9.18?"Q":"q")+3d.1v.2r.3c(P,0,P.14)}K(P.14==2){9.13.3a=9.13.x*2-9.13.3a;9.13.39=9.13.y*2-9.13.39;9.13.x=(9.18?0:9.13.x)+19(P[2],10);9.13.y=(9.18?0:9.13.y)+19(P[3],10);d+=[15.1d(9.13.3a),15.1d(9.13.39),15.1d(9.13.x),15.1d(9.13.y)].1z(" ")+" ";9.O.1f+=(9.18?"T":"t")+3d.1v.2r.3c(P,0,P.14)}9.1c.1f=9.2B+=d;9.1f.2k({1o:"5N",5O:[].5Q.3c(P,0),5T:9.18});11 9};p.4X=N(r,a){J R=.4V*r,2u=9.18,o=9;K(2u){9.3O();2u=N(){o.3g()}}1l{2u=N(){}}J b={l:N(){11{u:N(){o.1J(-R,0,-r,-(r-R),-r,-r)},d:N(){o.1J(-R,0,-r,r-R,-r,r)}}},r:N(){11{u:N(){o.1J(R,0,r,-(r-R),r,-r)},d:N(){o.1J(R,0,r,r-R,r,r)}}},u:N(){11{r:N(){o.1J(0,-R,-(R-r),-r,r,-r)},l:N(){o.1J(0,-R,R-r,-r,-r,-r)}}},d:N(){11{r:N(){o.1J(0,R,-(R-r),r,r,r)},l:N(){o.1J(0,R,R-r,r,-r,r)}}}};b[a.3G(0)]()[a.3G(1)]();2u();11 o};p.4h=N(){9.1c.1f=(9.2B+="x e");9.O.1f+="z";11 9};K(1s j=="2e"){p.3g();p.O.1f="";C.3B(p,j)}p.2G();v(p,i);K(i.2A){z(p,i.2A)}11 p};J v=N(o,a){J s=o[0].1q;o.O=o.O||{};1m(J b 1K a){o.O[b]=a[b]}K(a.1f&&o.1o=="1f"){o.2B="";o.1f=[];C.3B(o,a.1f)}K(a.2P!=5Z){o.1W.1q.2P=a.2P}K(a.2x){J c=a.2x.2n(/[, ]+/);o.2E(c[0],c[1])}K(a.2z){J c=a.2z.2n(/[, ]+/);o.2z(c[0],c[1])}K(o.1o=="2o"&&a.1w){o.1c.3P=" 4D:4C.4B.61(1w="+(a.1w*2g)+")";o.1c.1q.4p=(o.1c.3u||"")+(o.1c.3P||"")}a["22-4b"]&&(s.65=a["22-4b"]);a["22-3z"]&&(s.66=a["22-3z"]);a["22"]&&(s.22=a["22"]);a["22-4r"]&&(s.67=a["22-4r"]);K(1s a.1w!="1L"||1s a["1g-17"]!="1L"||1s a.1u!="1L"||1s a.1g!="1L"){o=o.2H||o.1c;J d=(o.3s("1u")&&o.3s("1u")[0])||1i.1B("1x:1u");K("1u-1w"1K a||"1w"1K a){d.1w=((a["1u-1w"]+1||2)-1)*((a.1w+1||2)-1)}K(a.1u){d.2s=1V}K(d.2s==1L||a.1u=="23"){d.2s=34}K(d.2s&&a.1u){J e=a.1u.4q(/^3h\\(([^\\)]+)\\)$/i);K(e){d.3S=e[1];d.1o="6i"}1l{d.2q=a.1u;d.3S="";d.1o="6k"}}o.1j(d);J f=(o.3s("1g")&&o.3s("1g")[0])||1i.1B("1x:1g");K((a.1g&&a.1g!="23")||a["1g-17"]||a["1g-1w"]||a["1g-2K"]){f.2s=1V}K(a.1g=="23"||1s f.2s=="1L"){f.2s=34}K(f.2s&&a.1g){f.2q=a.1g}f.1w=((a["1g-1w"]+1||2)-1)*((a.1w+1||2)-1);a["1g-4e"]&&(f.6l=a["1g-4e"]||"4I");f.4f=a["1g-4f"]||8;a["1g-3v"]&&(f.6z={3e:"6B",41:"41",1d:"1d"}[a["1g-3v"]]||"4I");a["1g-17"]&&(f.4r=(19(a["1g-17"],10)||1)*12/16);K(a["1g-2K"]){J g={"-":"6C",".":"6D","-.":"6E","-..":"6G",". ":"6H","- ":"6I","--":"6K","- .":"6S","--.":"6Y","--..":"6Z"};f.73=g[a["1g-2K"]]||""}o.1j(f)}};J z=N(o,a){o.O=o.O||{};o.O.2A=a;o=o.2H||o[0];J b=o.3s("1u");K(b.14){b=b[0]}1l{b=1i.1B("1x:1u")}K(a.1H.14){b.2s=1V;b.78="23";b.1o=(a.1o.2Q()=="79")?"2A":"7b";K(1s a.1H[0].2q!="1L"){b.2q=a.1H[0].2q||"#1P"}K(1s a.1H[a.1H.14-1].2q!="1L"){b.7e=a.1H[a.1H.14-1].2q||"#1P"}J c=[];1m(J i=0,1p=a.1H.14;i<1p;i++){K(a.1H[i].3k){c.2k(a.1H[i].3k+" "+a.1H[i].2q)}};J d=a.1H[0].1w||1;J e=a.1H[a.1H.14-1].1w||1;K(c){b.7h.7i=c.1z(",");e+=d;d=e-d;e-=d}b.1a("1w",d);b.1a("5H",e);K(a.2j){J f=15.1d(15.7g((19(a.2j[3],10)-19(a.2j[1],10))/(19(a.2j[2],10)-19(a.2j[0],10)))*57.29)||0;b.77=6y-f}K(a.1o.2Q()=="6j"){b.6e="2g%";b.6d="0.5 0.5"}}};J A=N(a,b,c){J d=0,6b=0,6a=0,69=1;9[0]=a;9.1c=a;9.X=0;9.Y=0;9.O={};9.1W=b;9.1Q=c;9.1n={2W:0,2Z:0,2i:0,2w:1,2J:1}};A.1v.3F=N(a,b){K(a==1L){11 9.1n.2i}K(b){9.1n.2i=a}1l{9.1n.2i+=a}9.1W.1q.2P=9.1n.2i;11 9};A.1v.2G=N(a){J b=9.1W.1q,2I=9[0].1q;1m(J i 1K a){9.O[i]=a[i]}J c=9.O,x,y,w,h;27(9.1o){1e"31":x=c.1F-c.r;y=c.1E-c.r;w=h=c.r*2;1h;1e"2U":x=c.1F-c.28;y=c.1E-c.2d;w=c.28*2;h=c.2d*2;1h;1e"2l":1e"2o":x=c.x;y=c.y;w=c.17||0;h=c.1b||0;1h;1e"2b":9.4s.v=["m",15.1d(c.x),", ",15.1d(c.y-2),"l",15.1d(c.x)+1,", ",15.1d(c.y-2)].1z("");11;1e"1f":K(!9.O.1f){x=0;y=0;w=9.1Q.17;h=9.1Q.1b}1l{J d=1r.3K(9.O.1f),x=d.x;y=d.y;w=d.17;h=d.1b}1h;2D:x=0;y=0;w=9.1Q.17;h=9.1Q.1b;1h}K(9.1o=="1f"){J e=15.1d(9.1Q.17/2-w/2-x),1A=15.1d(9.1Q.1b/2-h/2-y);b.1X=-e+"1G";b.1A=-1A+"1G";9.X=e;9.Y=1A;9.W=w;9.H=h;2I.1A=1A+"1G";2I.1X=e+"1G"}1l{J e=9.1Q.17/2-w/2,1A=9.1Q.1b/2-h/2;b.2C="2M";b.1X=x-e+"1G";b.1A=y-1A+"1G";9.X=x-e;9.Y=y-1A;9.W=w;9.H=h;b.17=9.1Q.17+"1G";b.1b=9.1Q.1b+"1G";2I.2C="2M";2I.1A=1A+"1G";2I.1X=e+"1G";2I.17=w+"1G";2I.1b=h+"1G"}};A.1v.4E=N(){9.1W.1q.3R="23";11 9};A.1v.4F=N(){9.1W.1q.3R="4G";11 9};A.1v.2E=N(x,y){K(x==1L&&y==1L){11{x:9.1n.2W,y:9.1n.2Z}}9.1n.2W+=+x;9.1n.2Z+=+y;K(9.1o=="1f"){J a=9.O.1f;a=1r.3o(a);a[0][1]+=+x;a[0][2]+=+y;9.1t({1f:a.1z(" ")})}9.2G({x:9.1n.2W,y:9.1n.2Z});11 9};A.1v.3n=N(){11{x:9.X,y:9.Y,17:9.W,1b:9.H}};A.1v.3m=N(){9[0].1I.2v(9[0]);9.1W.1I.2v(9.1W);9.2H&&9.2H.1I.2v(9.2H)};A.1v.1t=N(){K(P.14==1&&1s P[0]=="2e"){K(P[0]=="2x"){11 9.2E()}11 9.O[P[0]]}K(9.O&&P.14==1&&P[0]4H 3d){J a={};1m(J i=0,1p=P[0].14;i<1p;i++){a[P[0][i]]=9.O[P[0][i]]};11 a}K(9[0].60.2Q()=="2f"){J b=9[0].3p;9.O=9.O||{};K(P.14==2){9.O[P[0]]=P[1]}1l K(P.14==1||1s P[0]=="2R"){1m(J j 1K P[0]){9.O[j]=P[0][j]}}1m(J i=0,1p=b.14;i<1p;i++){9.1t.2y(1N 5Y(b[i],9[0],9.1Q),P)}}1l{J c;K(P.14==2){c={};c[P[0]]=P[1]}K(P.14==1&&1s P[0]=="2R"){c=P[0]}K(c){v(9,c);9.2G(c);K(c.2A){z(9,c.2A)}K(c.2b&&9.1o=="2b"){9[0].2e=c.2b}K(c.2N){9[0].2N=c.2N}}}11 9};A.1v.4L=N(){9.1W.1I.1j(9.1W);11 9};A.1v.4M=N(){K(9.1W.1I.2h!=9.1W){9.1W.1I.2Y(9.1W,9.1W.1I.2h)}11 9};J B=N(a,x,y,r){J g=1i.1B("1x:2f");J o=1i.1B("1x:4O");g.1j(o);a.1k.1j(g);J b=1N A(o,g,a);v(b,{1g:"#1P",1u:"23"});b.2G({x:x-r,y:y-r,17:r*2,1b:r*2});b.O.1F=x;b.O.1E=y;b.O.r=r;b.1o="31";11 b};J D=N(a,x,y,w,h,r){J g=1i.1B("1x:2f");J o=1i.1B(r?"1x:5W":"1x:2l");K(r){o.5U=r/(15.33(w,h))}g.1j(o);a.1k.1j(g);J b=1N A(o,g,a);v(b,{1g:"#1P"});b.2G({x:x,y:y,17:w,1b:h});b.O.x=x;b.O.y=y;b.O.w=w;b.O.h=h;b.O.r=r;b.1o="2l";11 b};J E=N(a,x,y,b,c){J g=1i.1B("1x:2f");J o=1i.1B("1x:4O");g.1j(o);a.1k.1j(g);J d=1N A(o,g,a);v(d,{1g:"#1P"});d.2G({x:x-b,y:y-c,17:b*2,1b:c*2});d.O.1F=x;d.O.1E=y;d.O.28=b;d.O.2d=c;d.1o="2U";11 d};J F=N(a,b,x,y,w,h){J g=1i.1B("1x:2f");J o=1i.1B("1x:2o");o.3S=b;g.1j(o);a.1k.1j(g);J c=1N A(o,g,a);c.1o="2o";c.2G({x:x,y:y,17:w,1b:h});c.O.x=x;c.O.y=y;c.O.w=w;c.O.h=h;11 c};J G=N(a,x,y,b){J g=1i.1B("1x:2f"),35=g.1q;J c=1i.1B("1x:2H"),3i=c.1q;J d=1i.1B("1x:1f"),5I=d.1q;d.v=["m",15.1d(x),", ",15.1d(y-2),"l",15.1d(x)+1,", ",15.1d(y-2)].1z("");d.7j=1V;3i.17=a.17;3i.1b=a.1b;35.2C="2M";35.1X=0;35.1A=0;35.17=a.17;35.1b=a.1b;J o=1i.1B("1x:4s");o.2e=b;o.2s=1V;o.3l=a.3l;o.3r=a.3r;c.1j(o);c.1j(d);g.1j(c);a.1k.1j(g);J e=1N A(o,g,a);e.2H=c;e.4s=d;e.1o="2b";e.O.x=x;e.O.y=y;e.O.w=1;e.O.h=1;v(e,{1g:"23",1u:"#1P"});11 e};J H=N(a){J b=1i.1B("1x:2f"),38=b.1q;38.2C="2M";38.1X=0;38.1A=0;38.17=a.17;38.1b=a.1b;K(a.1k){a.1k.1j(b)}J c=1N A(b,b,a);1m(J f 1K a){K(f.3G(0)!="1n"&&1s a[f]=="N"){c[f]=(N(f){11 N(){J e=a[f].2y(a,P);b.1j(e[0].1I);11 e}})(f)}}c.1o="2f";11 c};r.45=N(){J d,17,1b;K(1s P[0]=="2e"){d=1i.56(P[0]);17=P[1];1b=P[2]}K(1s P[0]=="2R"){d=P[0];17=P[1];1b=P[2]}K(1s P[0]=="1M"){d=1;x=P[0];y=P[1];17=P[2];1b=P[3]}K(!d){58 1N 5a("3y 5b 5d 5e.");}K(!1i.5f["1x"]){1i.5f.5E("1x","5A:5x-5r-64:1Q");1i.5m().5n("1x\\\\:*","5o:3h(#2D#3y)")}J c=1i.1B("5p"),r=C.1k=1i.1B("1x:2f"),26=c.1q,3w=r.1q;C.17=17;C.1b=1b;17=17||"5q";1b=1b||"5s";26.5z="2l(0 "+17+" "+1b+" 0)";26.1A="-5h";26.1X="-5h";26.2C="5B";3w.17=17;3w.1b=1b;r.3l=(17=="2g%"?17:19(17))+" "+(1b=="2g%"?1b:19(1b));r.3r="0 0";J b=1i.1B("1x:2l"),3A=b.1q;3A.1X=3A.1A=0;3A.17=3w.17;3A.1b=3w.1b;b.5C=b.5D="f";r.1j(b);c.1j(r);K(d==1){1i.3C.1j(c);26.2C="2M";26.1X=x+"1G";26.1A=y+"1G";26.17=17;26.1b=1b;d={1q:{17:17,1b:1b}}}1l{26.17=d.1q.17=17;26.1b=d.1q.1b=1b;K(d.2h){d.2Y(c,d.2h)}1l{d.1j(c)}}1m(J e 1K C){d[e]=C[e]}d.46=N(){J a=[];1m(J i=0,1p=r.3p.14;i<1p;i++){K(r.3p[i]!=b){a.2k(r.3p[i])}}1m(i=0,1p=a.14;i<1p;i++){r.2v(a[i])}};11 d};C.3m=N(){C.1k.1I.1I.2v(C.1k.1I)}}K(n=="2O"){J u=N(g,h,j){J k=1i.25(j.1Y,"1f");k.1a("1u","23");K(j.1k){j.1k.1j(k)}J p=1N A(k,j);p.18=1V;p.1o="1f";p.13={x:0,y:0,1S:0,1T:0};p.3g=N(){9.18=1V;11 9};p.3O=N(){9.18=34;11 9};p.3f=N(x,y){J d=9.18?"M":"m";d+=19(x,10).1O(3)+" "+19(y,10).1O(3)+" ";J a=9[0].2S("d")||"";(a=="4c,0")&&(a="");9[0].1a("d",a+d);9.13.x=(9.18?0:9.13.x)+19(x,10);9.13.y=(9.18?0:9.13.y)+19(y,10);9.O.1f=a+d;11 9};p.24=N(x,y){9.13.x=(9.18?0:9.13.x)+19(x,10);9.13.y=(9.18?0:9.13.y)+19(y,10);J d=9.18?"L":"l";d+=19(x,10).1O(3)+" "+19(y,10).1O(3)+" ";J a=9[0].2S("d")||"";9[0].1a("d",a+d);9.O.1f=a+d;11 9};p.49=N(a,b,c,e,x,y){J d=9.18?"A":"a";d+=[19(a,10).1O(3),19(b,10).1O(3),0,c,e,19(x,10).1O(3),19(y,10).1O(3)].1z(" ");J f=9[0].2S("d")||"";9[0].1a("d",f+d);9.13.x=19(x,10);9.13.y=19(y,10);9.O.1f=f+d;11 9};p.5j=N(a,b,c){K(!c){11 9.24(a,b)}1l{J p={};J x=19(a,10);J y=19(b,10);J w=19(c,10);J d=9.18?"C":"c";J e=[+9.13.x+w,+9.13.y,x-w,y,x,y];1m(J i=0,1p=e.14;i<1p;i++){d+=e[i].1O(3)+" "}9.13.x=(9.18?0:9.13.x)+e[4];9.13.y=(9.18?0:9.13.y)+e[5];9.13.1S=e[2];9.13.1T=e[3];J f=9[0].2S("d")||"";9[0].1a("d",f+d);9.O.1f=f+d;11 9}};p.1J=N(){J p={},3D=[0,1,2,3,"s",5,"c"];J d=3D[P.14];K(9.18){d=d.30()}1m(J i=0,1p=P.14;i<1p;i++){d+=19(P[i],10).1O(3)+" "}9.13.x=(9.18?0:9.13.x)+19(P[P.14-2],10);9.13.y=(9.18?0:9.13.y)+19(P[P.14-1],10);9.13.1S=19(P[P.14-4],10);9.13.1T=19(P[P.14-3],10);J a=9.1c.2S("d")||"";9.1c.1a("d",a+d);9.O.1f=a+d;11 9};p.3J=N(){J p={},3D=[0,1,"t",3,"q"];J d=3D[P.14];K(9.18){d=d.30()}1m(J i=0,1p=P.14;i<1p;i++){d+=19(P[i],10).1O(3)+" "}9.13.x=(9.18?0:9.13.x)+19(P[P.14-2],10);9.13.y=(9.18?0:9.13.y)+19(P[P.14-1],10);K(P.14!=2){9.13.3a=19(P[P.14-4],10);9.13.39=19(P[P.14-3],10)}J a=9.1c.2S("d")||"";9.1c.1a("d",a+d);9.O.1f=a+d;11 9};p.4X=N(r,a){J R=.4V*r,2u=9.18,o=9;K(2u){9.3O();2u=N(){o.3g()}}1l{2u=N(){}}J b={l:N(){11{u:N(){o.1J(-R,0,-r,-(r-R),-r,-r)},d:N(){o.1J(-R,0,-r,r-R,-r,r)}}},r:N(){11{u:N(){o.1J(R,0,r,-(r-R),r,-r)},d:N(){o.1J(R,0,r,r-R,r,r)}}},u:N(){11{r:N(){o.1J(0,-R,-(R-r),-r,r,-r)},l:N(){o.1J(0,-R,R-r,-r,-r,-r)}}},d:N(){11{r:N(){o.1J(0,R,-(R-r),r,r,r)},l:N(){o.1J(0,R,R-r,r,-r,r)}}}};b[a[0]]()[a[1]]();2u();11 o};p.4h=N(){J a=9[0].2S("d")||"";9[0].1a("d",a+"Z ");9.O.1f=a+"Z ";11 9};K(1s h=="2e"){p.O.1f=h;p.3g();C.3B(p,h)}K(g){v(p,g)}11 p};J z=N(o,a,b){J c=1i.25(b.1Y,a.1o+"5F");c.2N="59-2A-"+b.47++;K(a.2j&&a.2j.14){c.1a("5J",a.2j[0]);c.1a("3j",a.2j[1]);c.1a("5K",a.2j[2]);c.1a("5L",a.2j[3])}b.3t.1j(c);1m(J i=0,1p=a.1H.14;i<1p;i++){J d=1i.25(b.1Y,"3Q");d.1a("3k",a.1H[i].3k?a.1H[i].3k:(i==0)?"0%":"2g%");d.1a("3Q-2q",a.1H[i].2q||"#52");K(1s a.1H[i].1w!="1L"){d.1a("3Q-1w",a.1H[i].1w)}c.1j(d)};o.1a("1u","3h(#"+c.2N+")")};J I=N(o){K(o.3q){J a=o.1c.3n();o.3q.1a("5M","2E("+[a.x,a.y].1z(",")+")")}};J v=N(o,c){J d={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},4a=N(o,a){a=d[a.2L().2Q()];K(a){J b=o.O["1g-17"]||"1",3e={1d:b,41:b,3e:0}[o.O["1g-3v"]||c["1g-3v"]]||0,4d=[];1m(J i=0,1p=a.14;i<1p;i++){4d.2k(a[i]*b+((i%2)?1:-1)*3e)}a=4d.1z(",");o.1c.1a("1g-2K",a)}};1m(J e 1K c){J f=c[e];o.O[e]=f;27(e){1e"1f":K(o.1o=="1f"){o.1c.1a("d","4c,0");C.3B(o,f)}1e"28":1e"1F":1e"x":o.1c.1a(e,f);I(o);1h;1e"2d":1e"1E":1e"y":o.1c.1a(e,f);I(o);1h;1e"17":o.1c.1a(e,f);1h;1e"1b":o.1c.1a(e,f);1h;1e"2A":z(o.1c,f,o.2a);1h;1e"1g-17":o.1c.1q.5P=f;o.1c.1a(e,f);K(o.O["1g-2K"]){4a(o,o.O["1g-2K"])}1h;1e"1g-2K":4a(o,f);1h;1e"2b":K(o.1o=="2b"){o.1c.3p.14&&o.1c.2v(o.1c.2h);o.1c.1j(1i.4Z(f))}1h;1e"2P":o.3F(f,1V);1h;1e"2x":J g=f.2n(/[, ]+/);o.2E(g[0],g[1]);1h;1e"2z":J g=f.2n(/[, ]+/);o.2z(g[0],g[1]);1h;1e"1u":J h=f.4q(/^3h\\(([^\\)]+)\\)$/i);K(h){J j=1i.25(o.2a.1Y,"3q");J k=1i.25(o.2a.1Y,"2o");j.2N="59-3q-"+o.2a.47++;j.1a("x",0);j.1a("y",0);j.1a("5R","5S");k.1a("x",0);k.1a("y",0);k.4Y(o.2a.3U,"4S",h[1]);j.1j(k);J l=1i.1B("5V");l.1q.2C="2M";l.1q.1A="-4Q";l.1q.1X="-4Q";l.5X=N(){j.1a("17",9.4K);j.1a("1b",9.4J);k.1a("17",9.4K);k.1a("1b",9.4J);1i.3C.2v(9);C.3M()};1i.3C.1j(l);l.3S=h[1];o.2a.3t.1j(j);o.1c.1q.1u="3h(#"+j.2N+")";o.1c.1a("1u","3h(#"+j.2N+")");o.3q=j;I(o);1h}2D:J m=e.4k(/(\\-.)/g,N(w){11 w.1U(1).30()});o.1c.1q[m]=f;o.1c.1a(e,f);1h}}};J A=N(a,b){J X=0,Y=0;9[0]=a;9.1c=a;9.2a=b;9.O=9.O||{};9.2t=[];9.1n={2W:0,2Z:0,2i:{36:0,x:0,y:0},2w:1,2J:1}};A.1v.2E=N(x,y){K(x==1L&&y==1L){11{x:9.1n.2W,y:9.1n.2Z}}9.1n.2W+=+x;9.1n.2Z+=+y;27(9.1o){1e"31":1e"2U":9.1t({1F:9.O.1F+x,1E:9.O.1E+y});1h;1e"2l":1e"2o":1e"2b":9.1t({x:9.O.x+x,y:9.O.y+y});1h;1e"1f":J a=1r.3o(9.O.1f);a[0][1]+=+x;a[0][2]+=+y;9.1t({1f:a.1z(" ")});1h}11 9};A.1v.3F=N(a,b){K(a==1L){11 9.1n.2i.36}J c=9.3n();K(b){9.1n.2i.36=a}1l{9.1n.2i.36+=a}K(9.1n.2i.36){9.2t[0]=("3F("+9.1n.2i.36+" "+(c.x+c.17/2)+" "+(c.y+c.1b/2)+")")}1l{9.2t[0]=""}9.1c.1a("4m",9.2t.1z(" "));11 9};A.1v.4E=N(){9.1c.1q.3R="23";11 9};A.1v.4F=N(){9.1c.1q.3R="4G";11 9};A.1v.3m=N(){9.1c.1I.2v(9.1c)};A.1v.3n=N(){11 9.1c.3n()};A.1v.1t=N(){K(P.14==1&&1s P[0]=="2e"){K(P[0]=="2x"){11 9.2E()}11 9.O[P[0]]}K(P.14==1&&P[0]4H 3d){J a={};1m(J j 1K P[0]){a[P[0][j]]=9.O[P[0][j]]}11 a}K(P.14==2){J b={};b[P[0]]=P[1];v(9,b)}1l K(P.14==1&&1s P[0]=="2R"){v(9,P[0])}11 9};A.1v.4L=N(){9.1c.1I.1j(9.1c);11 9};A.1v.4M=N(){K(9.1c.1I.2h!=9.1c){9.1c.1I.2Y(9.1c,9.1c.1I.2h)}11 9};J B=N(a,x,y,r){J b=1i.25(a.1Y,"31");b.1a("1F",x);b.1a("1E",y);b.1a("r",r);b.1a("1u","23");b.1a("1g","#1P");K(a.1k){a.1k.1j(b)}J c=1N A(b,a);c.O=c.O||{};c.O.1F=x;c.O.1E=y;c.O.r=r;c.O.1g="#1P";c.1o="31";11 c};J D=N(a,x,y,w,h,r){J b=1i.25(a.1Y,"2l");b.1a("x",x);b.1a("y",y);b.1a("17",w);b.1a("1b",h);K(r){b.1a("28",r);b.1a("2d",r)}b.1a("1u","23");b.1a("1g","#1P");K(a.1k){a.1k.1j(b)}J c=1N A(b,a);c.O=c.O||{};c.O.x=x;c.O.y=y;c.O.17=w;c.O.1b=h;c.O.1g="#1P";K(r){c.O.28=c.O.2d=r}c.1o="2l";11 c};J E=N(a,x,y,b,c){J d=1i.25(a.1Y,"2U");d.1a("1F",x);d.1a("1E",y);d.1a("28",b);d.1a("2d",c);d.1a("1u","23");d.1a("1g","#1P");K(a.1k){a.1k.1j(d)}J e=1N A(d,a);e.O=e.O||{};e.O.1F=x;e.O.1E=y;e.O.28=b;e.O.2d=c;e.O.1g="#1P";e.1o="2U";11 e};J F=N(a,b,x,y,w,h){J c=1i.25(a.1Y,"2o");c.1a("x",x);c.1a("y",y);c.1a("17",w);c.1a("1b",h);c.1a("62","23");c.4Y(a.3U,"4S",b);K(a.1k){a.1k.1j(c)}J d=1N A(c,a);d.O=d.O||{};d.O.x=x;d.O.y=y;d.O.17=w;d.O.1b=h;d.1o="2o";11 d};J G=N(a,x,y,b){J c=1i.25(a.1Y,"2b");c.1a("x",x);c.1a("y",y);c.1a("2b-63","5l");c.1a("1u","#1P");K(b){c.1j(1i.4Z(b))}K(a.1k){a.1k.1j(c)}J d=1N A(c,a);d.O=d.O||{};d.O.x=x;d.O.y=y;d.O.1u="#1P";d.1o="2b";11 d};J H=N(a){J b=1i.25(a.1Y,"g");K(a.1k){a.1k.1j(b)}J i=1N A(b,a);1m(J f 1K a){K(f[0]!="1n"&&1s a[f]=="N"){i[f]=(N(f){11 N(){J e=a[f].2y(a,P);b.1j(e[0]);11 e}})(f)}}i.1o="2f";11 i};r.45=N(){K(1s P[0]=="2e"){J a=1i.56(P[0]);J b=P[1];J c=P[2]}K(1s P[0]=="2R"){J a=P[0];J b=P[1];J c=P[2]}K(1s P[0]=="1M"){J a=1,x=P[0],y=P[1],b=P[2],c=P[3]}K(!a){58 1N 5a("2O 5b 5d 5e.");}C.1k=1i.25(C.1Y,"2a");C.1k.1a("17",b||4x);C.17=b||4x;C.1k.1a("1b",c||4w);C.1b=c||4w;K(a==1){1i.3C.1j(C.1k);C.1k.1q.2C="2M";C.1k.1q.1X=x+"1G";C.1k.1q.1A=y+"1G"}1l{K(a.2h){a.2Y(C.1k,a.2h)}1l{a.1j(C.1k)}}a={1k:C.1k,46:N(){4u(9.1k.2h){9.1k.2v(9.1k.2h)}9.3t=1i.25(C.1Y,"3t");9.47=0;9.1k.1j(9.3t)}};1m(J d 1K C){K(d!="68"){a[d]=C[d]}}a.46();11 a};C.3m=N(){C.1k.1I.2v(C.1k)};C.1Y="4P://4t.4v.4z/6f/2a";C.3U="4P://4t.4v.4z/6g/3U"}K(n=="3y"||n=="2O"){C.31=N(x,y,r){11 B(9,x,y,r)};C.2l=N(x,y,w,h,r){11 D(9,x,y,w,h,r)};C.2U=N(x,y,a,b){11 E(9,x,y,a,b)};C.1f=N(a,b){11 u(a,b,9)};C.2o=N(a,x,y,w,h){11 F(9,a,x,y,w,h)};C.2b=N(x,y,a){11 G(9,x,y,a)};C.2f=N(){11 H(9)};C.6h=N(x,y,w,h,a,b,c){c=c||"#1P";J p=9.1f({1g:c,"1g-17":1}).3f(x,y).24(x+w,y).24(x+w,y+h).24(x,y+h).24(x,y),4o=h/b,4n=w/a;1m(J i=1;i<b;i++){p.3f(x,y+i*4o).24(x+w,y+i*4o)}1m(J i=1;i<a;i++){p.3f(x+i*4n,y).24(x+i*4n,y+h)}11 p};C.3M=N(){K(r.1o=="2O"){J a=C.2l(-C.17,-C.1b,C.17*3,C.1b*3).1t({1g:"23"});4A(N(){a.3m()},0)}};A.1v.3Q=N(){4l(9.3N)};A.1v.2z=N(x,y){K(x==1L&&y==1L){11{x:9.1n.2w,y:9.1n.2J}}y=y||x;J a,2V,1F,1E;K(x!=0&&!(x==1&&y==1)){J b=15.1d(x/15.44(x)),2c=15.1d(y/15.44(y)),s=9.1c.1q;a=9.1t("x");2V=9.1t("y");1F=9.1t("1F");1E=9.1t("1E");K(b!=1||2c!=1){K(9.2t){9.2t[2]="2z("+[b,2c]+")";9.1c.1a("4m",9.2t.1z(" "));a=(b<0)?-9.1t("x")-9.O.17*x*b/9.1n.2w:9.1t("x");2V=(2c<0)?-9.1t("y")-9.O.1b*y*2c/9.1n.2J:9.1t("y");1F=9.1t("1F")*b;1E=9.1t("1E")*2c}1l{9.1c.3u=" 4D:4C.4B.6m(6n="+b+", 6o=0, 6p=0, 6q="+2c+", 6r=0, 6s=0, 6t=\'6u 6v\', 6w=\'6x\')";s.4p=(9.1c.3u||"")+(9.1c.3P||"")}}1l{K(9.2t){9.2t[2]="";9.1c.1a("4m",9.2t.1z(" "))}1l{9.1c.3u="";s.4p=(9.1c.3u||"")+(9.1c.3P||"")}}27(9.1o){1e"2l":1e"2o":9.1t({17:9.O.17*x*b/9.1n.2w,1b:9.O.1b*y*2c/9.1n.2J,x:a,y:2V});1h;1e"31":1e"2U":9.1t({28:9.O.28*x*b/9.1n.2w,2d:9.O.2d*y*2c/9.1n.2J,r:9.O.r*x*2c/9.1n.2w,1F:1F,1E:1E});1h;1e"1f":J c=1r.3o(1r.32(9.1t("1f"))),4j=1V,2X=1r.3K(9.O.1f),a=-2X.17*(x-1)/2,2V=-2X.1b*(y-1)/2;1m(J i=0,1p=c.14;i<1p;i++){K(c[i][0].30()=="M"&&4j){4N}1l{4j=34}K(c[i][0].30()=="A"){c[i][c[i].14-2]*=x*b;c[i][c[i].14-1]*=y*2c}1l{1m(J j=1,1Z=c[i].14;j<1Z;j++){c[i][j]*=(j%2)?x*b/9.1n.2w:y*2c/9.1n.2J}}}J d=1r.3K(c),a=2X.x+2X.17/2-d.x-d.17/2,2V=2X.y+2X.1b/2-d.y-d.1b/2;c=1r.3o(c);c[0][1]+=a;c[0][2]+=2V;9.1t({1f:c.1z(" ")})}}9.1n.2w=x;9.1n.2J=y;11 9};A.1v.6A=N(c,d,e){4l(9.3N);J f={},2F={},1R={},t={x:0,y:0};1m(J g 1K c){K(g 1K 3X){f[g]=9.1t(g);K(1s f[g]=="1L"){f[g]=q[g]}2F[g]=c[g];27(3X[g]){1e"1M":1R[g]=(2F[g]-f[g])/d;1h;1e"3T":f[g]=1r.4i(f[g]);J h=1r.4i(2F[g]);1R[g]={r:(h.r-f[g].r)/d,g:(h.g-f[g].g)/d,b:(h.b-f[g].b)/d};1h;1e"1f":J k=1r.4R(f[g],2F[g]);f[g]=k[0];2F[g]=k[1];1R[g]=[];1m(J i=0,1p=f[g].14;i<1p;i++){1R[g][i]=[0];1m(J j=1,1Z=f[g][i].14;j<1Z;j++){1R[g][i][j]=(2F[g][i][j]-f[g][i][j])/d}}1h;1e"3I":J l=c[g].2n(/[, ]+/);K(g=="2x"){f[g]=[0,0];1R[g]=[l[0]/d,l[1]/d]}1l{f[g]=f[g].2n(/[, ]+/);1R[g]=[(l[0]-f[g][0])/d,(l[1]-f[g][0])/d]}2F[g]=l}}}J m=1N 4T(),3W=0,2T=9;(N(){J a=(1N 4T()).4U()-m.4U(),3H={},21;K(a<d){1m(J b 1K f){27(3X[b]){1e"1M":21=+f[b]+a*1R[b];1h;1e"3T":21="4g("+[15.1d(f[b].r+a*1R[b].r),15.1d(f[b].g+a*1R[b].g),15.1d(f[b].b+a*1R[b].b)].1z(",")+")";1h;1e"1f":21=[];1m(J i=0,1p=f[b].14;i<1p;i++){21[i]=[f[b][i][0]];1m(J j=1,1Z=f[b][i].14;j<1Z;j++){21[i][j]=f[b][i][j]+a*1R[b][i][j]}21[i]=21[i].1z(" ")}21=21.1z(" ");1h;1e"3I":K(b=="2x"){J x=1R[b][0]*(a-3W),y=1R[b][1]*(a-3W);t.x+=x;t.y+=y;21=[x,y].1z(" ")}1l{21=[+f[b][0]+a*1R[b][0],+f[b][1]+a*1R[b][1]].1z(" ")}1h}K(b=="22-3z"){3H[b]=21+"1G"}1l{3H[b]=21}}2T.1t(3H);2T.3N=4A(P.3Z,0);C.3M()}1l{K(t.x||t.y){2T.2E(-t.x,-t.y)}2T.1t(c);4l(2T.3N);C.3M();(1s e=="N")&&e.3c(2T)}3W=a})();11 9};A.1v.6F=N(a){K(a.1c.4W){a.1c.1I.2Y(9.1c,a.1c.4W)}1l{a.1c.1I.1j(9.1c)}};A.1v.2Y=N(a){a.1c.1I.2Y(9.1c,a.1c)};C.3B=N(p,g){J h={M:N(x,y){9.3f(x,y)},C:N(a,b,c,d,e,f){9.1J(a,b,c,d,e,f)},Q:N(a,b,c,d){9.3J(a,b,c,d)},T:N(x,y){9.3J(x,y)},S:N(a,b,c,d){p.1J(a,b,c,d)},L:N(x,y){p.24(x,y)},H:N(x){9.24(x,9.13.y)},V:N(y){9.24(9.13.x,y)},A:N(a,b,c,d,e,x,y){9.49(a,b,d,e,x,y)},Z:N(){9.4h()}};g=1r.3x(g);1m(J i=0,1p=g.14;i<1p;i++){J b=g[i].6J();h[b].2y(p,g[i])}};11 r}1l{11 N(){}}})((!50.6L)?"3y":"2O");1r.1Q=!(1r.2a=(1r.1o=="2O"));K(1r.1Q&&50.6M){1r.1o="6N 6O";1r.1Q=1r.2a=34}1r.2L=N(){11"6P 6Q "+(9.1Q?"6R\'t ":"")+"6T"+(9.2a?"s":"")+" 2O.\\6U 6V 6W "+6X("71%72%20")+9.5g};1r.3E=N(a,c,d){K(1s a=="2R"&&"h"1K a&&"s"1K a&&"b"1K a){d=a.b;c=a.s;a=a.h}J e,1D,1C;K(d==0){11{r:0,g:0,b:0,3V:"#1P"}}1l{J i=15.74(a*6),f=(a*6)-i,p=d*(1-c),q=d*(1-(c*f)),t=d*(1-(c*(1-f)));[N(){e=d;1D=t;1C=p},N(){e=q;1D=d;1C=p},N(){e=p;1D=d;1C=t},N(){e=p;1D=q;1C=d},N(){e=t;1D=p;1C=d},N(){e=d;1D=p;1C=q},N(){e=d;1D=t;1C=p}][i]()}J h={r:e,g:1D,b:1C};e*=37;1D*=37;1C*=37;J r=15.1d(e).2L(16);K(r.14==1){r="0"+r}J g=15.1d(1D).2L(16);K(g.14==1){g="0"+g}J b=15.1d(1C).2L(16);K(b.14==1){b="0"+b}h.3V="#"+r+g+b;11 h};1r.76=N(a,b,c){K(1s a=="2R"&&"r"1K a&&"g"1K a&&"b"1K a){c=a.b;b=a.g;a=a.r}K(1s a=="2e"&&a.3G(0)=="#"){K(a.14==4){c=1y(a.1U(3),16);b=1y(a.1U(2,3),16);a=1y(a.1U(1,2),16)}1l{c=1y(a.1U(5),16);b=1y(a.1U(3,5),16);a=1y(a.1U(1,3),16)}}K(a>1||b>1||c>1){a/=37;b/=37;c/=37}J d=15.3Y(a,b,c),33=15.33(a,b,c),2m,48,53=d;K(33==d){11{h:0,s:0,b:d}}1l{J e=(d-33);48=e/d;K(a==d){2m=(b-c)/e}1l K(b==d){2m=2+((c-a)/e)}1l{2m=4+((a-b)/e)}2m/=6;K(2m<0){2m+=1}K(2m>1){2m-=1}}11{h:2m,s:48,b:53}};1r.4i=N(a){J c,1D,1C,d=a.4q(/^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|4g\\(\\s*(\\d+,\\s*\\d+,\\s*\\d+)\\s*\\)|4g\\(\\s*(\\d+%,\\s*\\d+%,\\s*\\d+%)\\s*\\)|54\\(\\s*(\\d+,\\s*\\d+,\\s*\\d+)\\s*\\)|54\\(\\s*(\\d+%,\\s*\\d+%,\\s*\\d+%)\\s*\\))\\s*$/i);K(d){K(d[2]){1C=1y(d[2].1U(5),16);1D=1y(d[2].1U(3,5),16);c=1y(d[2].1U(1,3),16)}K(d[3]){1C=1y(d[3].1U(3)+d[3].1U(3),16);1D=1y(d[3].1U(2,3)+d[3].1U(2,3),16);c=1y(d[3].1U(1,2)+d[3].1U(1,2),16)}K(d[4]){d=d[4].2n(/\\s*,\\s*/);c=1y(d[0],10);1D=1y(d[1],10);1C=1y(d[2],10)}K(d[5]){d=d[5].2n(/\\s*,\\s*/);c=1y(d[0],10)*2.55;1D=1y(d[1],10)*2.55;1C=1y(d[2],10)*2.55}K(d[6]){d=d[6].2n(/\\s*,\\s*/);c=1y(d[0],10);1D=1y(d[1],10);1C=1y(d[2],10);11 9.3E(c,1D,1C)}K(d[7]){d=d[7].2n(/\\s*,\\s*/);c=1y(d[0],10)*2.55;1D=1y(d[1],10)*2.55;1C=1y(d[2],10)*2.55;11 9.3E(c,1D,1C)}J d={r:c,g:1D,b:1C};J r=15.1d(c).2L(16);(r.14==1)&&(r="0"+r);J g=15.1d(1D).2L(16);(g.14==1)&&(g="0"+g);J b=15.1d(1C).2L(16);(b.14==1)&&(b="0"+b);d.3V="#"+r+g+b;11 d}};1r.5c=N(a){J b=P.3Z.2p=P.3Z.2p||{h:0,s:1,b:a||.75};J c=9.3E(b.h,b.s,b.b);b.h+=.7a;K(b.h>1){b.h=0;b.s-=.2;K(b.s<=0){P.3Z.2p={h:0,s:1,b:b.b}}}11 c.3V};1r.5c.7c=N(){9.2p=1L};1r.32=N(e){J f={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0};J g=[];e.4k(/([7d])\\s*((-?\\d*\\.?\\d*\\s*,?\\s*)+)/5i,N(a,b,c){J d=[],3L=b.2Q();c.4k(/(-?\\d*\\.?\\d*)\\s*,?\\s*/5i,N(a,b){b&&d.2k(+b)});4u(d.14>=f[3L]){g.2k([b].7f(d.2r(0,f[3L])));K(!f[3L]){1h}}});11 g};1r.3K=N(a){J b=a;K(1s a=="2e"){b=9.32(a)}b=9.3x(b);J x=[],y=[],14=0;1m(J i=0,1p=b.14;i<1p;i++){27(b[i][0]){1e"Z":1h;1e"A":x.2k(b[i][b[i].14-2]);y.2k(b[i][b[i].14-1]);1h;2D:1m(J j=1,1Z=b[i].14;j<1Z;j++){K(j%2){x.2k(b[i][j])}1l{y.2k(b[i][j])}}}}J c=15.33.2y(15,x),43=15.33.2y(15,y);11{x:c,y:43,17:15.3Y.2y(15,x)-c,1b:15.3Y.2y(15,y)-43,X:x,Y:y}};1r.3o=N(a){J b=[];K(1s a=="2e"){a=9.32(a)}J x=0,y=0,2p=0;K(a[0][0]=="M"){x=a[0][1];y=a[0][2];2p++;b.2k(a[0])}1m(J i=2p,1p=a.14;i<1p;i++){b[i]=[];K(a[i][0]!=a[i][0].2Q()){b[i][0]=a[i][0].2Q();27(b[i][0]){1e"a":b[i][1]=a[i][1];b[i][2]=a[i][2];b[i][3]=0;b[i][4]=a[i][4];b[i][5]=a[i][5];b[i][6]=+(a[i][6]-x).1O(3);b[i][7]=+(a[i][7]-y).1O(3);1h;1e"v":b[i][1]=+(a[i][1]-y).1O(3);1h;2D:1m(J j=1,1Z=a[i].14;j<1Z;j++){b[i][j]=+(a[i][j]-((j%2)?x:y)).1O(3)}}}1l{b[i]=a[i]}27(b[i][0]){1e"z":1h;1e"h":x+=b[i][b[i].14-1];1h;1e"v":y+=b[i][b[i].14-1];1h;2D:x+=b[i][b[i].14-2];y+=b[i][b[i].14-1]}}11 b};1r.3x=N(a){J b=[];K(1s a=="2e"){a=9.32(a)}J x=0,y=0,2p=0;K(a[0][0]=="M"){x=+a[0][1];y=+a[0][2];2p++;b[0]=a[0]}1m(J i=2p,1p=a.14;i<1p;i++){b[i]=[];K(a[i][0]!=a[i][0].30()){b[i][0]=a[i][0].30();27(b[i][0]){1e"A":b[i][1]=a[i][1];b[i][2]=a[i][2];b[i][3]=0;b[i][4]=a[i][4];b[i][5]=a[i][5];b[i][6]=+(a[i][6]+x).1O(3);b[i][7]=+(a[i][7]+y).1O(3);1h;1e"V":b[i][1]=+a[i][1]+y;1h;2D:1m(J j=1,1Z=a[i].14;j<1Z;j++){b[i][j]=+a[i][j]+((j%2)?x:y)}}}1l{b[i]=a[i]}27(b[i][0]){1e"Z":1h;1e"H":x=b[i][1];1h;1e"V":y=b[i][1];1h;2D:x=b[i][b[i].14-2];y=b[i][b[i].14-1]}}11 b};1r.4R=N(e,f){J g=[9.3x(9.32(e)),9.3x(9.32(f))],O=[{x:0,y:0,1S:0,1T:0,X:0,Y:0},{x:0,y:0,1S:0,1T:0,X:0,Y:0}],42=N(a,d){K(!a){11["U"]}27(a[0]){1e"M":d.X=a[1];d.Y=a[2];1h;1e"S":J b=d.x+(d.x-(d.1S||d.x));J c=d.y+(d.y-(d.1T||d.y));a=["C",b,c,a[1],a[2],a[3],a[4]];1h;1e"T":J b=d.x+(d.x-(d.1S||d.x));J c=d.y+(d.y-(d.1T||d.y));a=["Q",b,c,a[1],a[2]];1h;1e"H":a=["L",a[1],d.y];1h;1e"V":a=["L",d.x,a[1]];1h;1e"Z":a=["L",d.X,d.Y];1h}11 a},40=N(a,b,i){K(g[a][i][0]=="M"&&g[b][i][0]!="M"){g[b].2r(i,0,["M",O[b].x,O[b].y]);O[a].1S=g[a][i][g[a][i].14-4]||0;O[a].1T=g[a][i][g[a][i].14-3]||0;O[a].x=g[a][i][g[a][i].14-2];O[a].y=g[a][i][g[a][i].14-1];11 1V}1l K(g[a][i][0]=="L"&&g[b][i][0]=="C"){g[a][i]=["C",O[a].x,O[a].y,g[a][i][1],g[a][i][2],g[a][i][1],g[a][i][2]]}1l K(g[a][i][0]=="L"&&g[b][i][0]=="Q"){g[a][i]=["Q",g[a][i][1],g[a][i][2],g[a][i][1],g[a][i][2]]}1l K(g[a][i][0]=="Q"&&g[b][i][0]=="C"){J x=g[b][i][g[b][i].14-2];J y=g[b][i][g[b][i].14-1];g[b].2r(i+1,0,["Q",x,y,x,y]);g[a].2r(i,0,["C",O[a].x,O[a].y,O[a].x,O[a].y,O[a].x,O[a].y]);i++;O[b].1S=g[b][i][g[b][i].14-4]||0;O[b].1T=g[b][i][g[b][i].14-3]||0;O[b].x=g[b][i][g[b][i].14-2];O[b].y=g[b][i][g[b][i].14-1];11 1V}1l K(g[a][i][0]=="A"&&g[b][i][0]=="C"){J x=g[b][i][g[b][i].14-2];J y=g[b][i][g[b][i].14-1];g[b].2r(i+1,0,["A",0,0,g[a][i][3],g[a][i][4],g[a][i][5],x,y]);g[a].2r(i,0,["C",O[a].x,O[a].y,O[a].x,O[a].y,O[a].x,O[a].y]);i++;O[b].1S=g[b][i][g[b][i].14-4]||0;O[b].1T=g[b][i][g[b][i].14-3]||0;O[b].x=g[b][i][g[b][i].14-2];O[b].y=g[b][i][g[b][i].14-1];11 1V}1l K(g[a][i][0]=="U"){g[a][i][0]=g[b][i][0];1m(J j=1,1Z=g[b][i].14;j<1Z;j++){g[a][i][j]=(j%2)?O[a].x:O[a].y}}11 34};1m(J i=0;i<15.3Y(g[0].14,g[1].14);i++){g[0][i]=42(g[0][i],O[0]);g[1][i]=42(g[1][i],O[1]);K(g[0][i][0]!=g[1][i][0]&&(40(0,1,i)||40(1,0,i))){4N}O[0].1S=g[0][i][g[0][i].14-4]||0;O[0].1T=g[0][i][g[0][i].14-3]||0;O[0].x=g[0][i][g[0][i].14-2];O[0].y=g[0][i][g[0][i].14-1];O[1].1S=g[1][i][g[1][i].14-4]||0;O[1].1T=g[1][i][g[1][i].14-3]||0;O[1].x=g[1][i][g[1][i].14-2];O[1].y=g[1][i][g[1][i].14-1]}11 g};',62,454,'|||||||||this||||||||||||||||||||||||||||||||||||var|if|||function|attrs|arguments||||||||||||return||last|length|Math||width|isAbsolute|parseFloat|setAttribute|height|node|round|case|path|stroke|break|document|appendChild|canvas|else|for|_|type|ii|style|Raphael|typeof|attr|fill|prototype|opacity|rvml|parseInt|join|top|createElement|blue|green|cy|cx|px|dots|parentNode|curveTo|in|undefined|number|new|toFixed|000|vml|diff|bx|by|substring|true|Group|left|svgns|jj||now|font|none|lineTo|createElementNS|cs|switch|rx||svg|text|diry|ry|string|group|100|firstChild|rt|vector|push|rect|hue|split|image|start|color|splice|on|transformations|rollback|removeChild|sx|translation|apply|scale|gradient|Path|position|default|translate|to|setBox|shape|os|sy|dasharray|toString|absolute|id|SVG|rotation|toLowerCase|object|getAttribute|that|ellipse|dy|tx|dim|insertBefore|ty|toUpperCase|circle|parsePathString|min|false|gs|deg|255|els|qy|qx|gl|call|Array|butt|moveTo|absolutely|url|ol|y1|offset|coordsize|remove|getBBox|pathToRelative|childNodes|pattern|coordorigin|getElementsByTagName|defs|filterMatrix|linecap|rs|pathToAbsolute|VML|size|bs|pathfinder|body|command|hsb2rgb|rotate|charAt|set|csv|qcurveTo|pathDimensions|name|safari|animation_in_progress|relatively|filterOpacity|stop|display|src|colour|xlink|hex|prev|availableAnimAttrs|max|callee|edgeCases|square|processPath|miny|abs|_create|clear|gradients|saturation|arcTo|addDashes|family|M0|dashes|linejoin|miterlimit|rgb|andClose|getRGB|skip|replace|clearTimeout|transform|columnWidth|rowHeight|filter|match|weight|textpath|www|while|w3|200|320|class|org|setTimeout|Microsoft|DXImageTransform|progid|hide|show|block|instanceof|miter|offsetHeight|offsetWidth|toFront|toBack|continue|oval|http|9999em|pathEqualiser|href|Date|getTime|5522|nextSibling|addRoundedCorner|setAttributeNS|createTextNode|window|Arial|fff|brightness|hsb||getElementById||throw|raphael|Error|container|getColor|not|found|namespaces|version|2px|ig|cplineTo|svgattr|middle|createStyleSheet|addRule|behavior|div|320px|microsoft|200px|ar|at|wr|wa|schemas|sqrt|clip|urn|relative|filled|stroked|add|Gradient|qb|opacity2|ps|x1|x2|y2|patternTransform|qcurve|arg|strokeWidth|slice|patternUnits|userSpaceOnUse|pos|arcsize|img|roundrect|onload|item|null|tagName|Alpha|preserveAspectRatio|anchor|com|fontFamily|fontSize|fontWeight|create|Scale|RotY|RotX|className|focusposition|focus|2000|1999|drawGrid|tile|radial|solid|joinstyle|Matrix|M11|M12|M21|M22|Dx|Dy|sizingmethod|auto|expand|filtertype|bilinear|270|endcap|animate|flat|shortdash|shortdot|shortdashdot|insertAfter|shortdashdotdot|dot|dash|shift|longdash|SVGAngle|CanvasRenderingContext2D|Canvas|only|Your|browser|doesn|dashdot|support|nYou|are|running|unescape|longdashdot|longdashdotdot|16px|Rapha|EBl|dashstyle|floor||rgb2hsb|angle|method|linear|075|gradientTitle|reset|achlmqstvz|color2|concat|atan|colors|value|textpathok'.split('|'),0,{}))
//}}}
/***
|Name|RearrangeTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#RearrangeTiddlersPlugin|
|Version|2.0.0|
|Author|Eric Shulman|
|OriginalAuthor|Joe Raii|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.refreshTiddler|
|Description|drag tiddlers by title to re-order story column display|
adapted from: http://www.cs.utexas.edu/~joeraii/dragn/#Draggable
changes by ELS:
* hijack refreshTiddler() instead of overridding createTiddler()
* find title element by className instead of elementID
* set cursor style via code instead of stylesheet
* set tooltip help text
* set tiddler "position:relative" when starting drag event, restore saved value when drag ends
* update 2006.08.07: use getElementsByTagName("*") to find title element, even when it is 'buried' deep in tiddler DOM elements (due to custom template usage)
* update 2007.03.01: use apply() to invoke hijacked core function
* update 2008.01.13: only hijack core function once. (allows for dynamic loading of plugin via bookmarklet)
* update 2008.10.19: added onclick popup menu with 'move to top' and 'move to bottom' commands
***/
//{{{
if (Story.prototype.rearrangeTiddlersHijack_refreshTiddler===undefined) {
Story.prototype.rearrangeTiddlersHijack_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template)
{
this.rearrangeTiddlersHijack_refreshTiddler.apply(this,arguments);
var theTiddler = document.getElementById(this.idPrefix + title); if (!theTiddler) return;
var theHandle;
var children=theTiddler.getElementsByTagName("*");
for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }
if (!theHandle) return theTiddler;
Drag.init(theHandle, theTiddler, 0, 0, null, null);
theHandle.style.cursor="move";
theHandle.title="drag title to re-arrange tiddlers, click for more options..."
theTiddler.onDrag = function(x,y,myElem) {
if (this.style.position!="relative")
{ this.savedstyle=this.style.position; this.style.position="relative"; }
y = myElem.offsetTop;
var next = myElem.nextSibling;
var prev = myElem.previousSibling;
if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) {
myElem.parentNode.removeChild(myElem);
next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);
myElem.style["top"] = -next.offsetHeight/2+"px";
}
if (prev && y < prev.offsetTop + prev.offsetHeight/2) {
myElem.parentNode.removeChild(myElem);
prev.parentNode.insertBefore(myElem, prev);
myElem.style["top"] = prev.offsetHeight/2+"px";
}
};
theTiddler.onDragEnd = function(x,y,myElem) {
myElem.style["top"] = "0px";
if (this.savedstyle!=undefined)
this.style.position=this.savedstyle;
};
theHandle.onclick=function(ev) {
ev=ev||window.event;
var p=Popup.create(this); if (!p) return;
var b=createTiddlyButton(createTiddlyElement(p,"li"),
"\u25B2 move to top of column ","move this tiddler to the top of the story column",
function() {
var t=story.getTiddler(this.getAttribute("tid"));
t.parentNode.insertBefore(t,t.parentNode.firstChild); // move to top of column
window.scrollTo(0,ensureVisible(t));
return false;
});
b.setAttribute("tid",title);
var b=createTiddlyButton(createTiddlyElement(p,"li"),
"\u25BC move to bottom of column ","move this tiddler to the bottom of the story column",
function() {
var t=story.getTiddler(this.getAttribute("tid"));
t.parentNode.insertBefore(t,null); // move to bottom of column
window.scrollTo(0,ensureVisible(t));
return false;
});
b.setAttribute("tid",title);
Popup.show(p,false);
ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return(false);
};
return theTiddler;
}
}
/**************************************************
* dom-drag.js
* 09.25.2001
* www.youngpup.net
**************************************************
* 10.28.2001 - fixed minor bug where events
* sometimes fired off the handle, not the root.
**************************************************/
var Drag = {
obj:null,
init:
function(o, oRoot, minX, maxX, minY, maxY) {
o.onmousedown = Drag.start;
o.root = oRoot && oRoot != null ? oRoot : o ;
if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";
if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";
o.minX = typeof minX != 'undefined' ? minX : null;
o.minY = typeof minY != 'undefined' ? minY : null;
o.maxX = typeof maxX != 'undefined' ? maxX : null;
o.maxY = typeof maxY != 'undefined' ? maxY : null;
o.root.onDragStart = new Function();
o.root.onDragEnd = new Function();
o.root.onDrag = new Function();
},
start:
function(e) {
var o = Drag.obj = this;
e = Drag.fixE(e);
var y = parseInt(o.root.style.top);
var x = parseInt(o.root.style.left);
o.root.onDragStart(x, y, Drag.obj.root);
o.lastMouseX = e.clientX;
o.lastMouseY = e.clientY;
if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;
if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;
if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;
if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;
document.onmousemove = Drag.drag;
document.onmouseup = Drag.end;
Drag.obj.root.style["z-index"] = "10";
return false;
},
drag:
function(e) {
e = Drag.fixE(e);
var o = Drag.obj;
var ey = e.clientY;
var ex = e.clientX;
var y = parseInt(o.root.style.top);
var x = parseInt(o.root.style.left);
var nx, ny;
if (o.minX != null) ex = Math.max(ex, o.minMouseX);
if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);
if (o.minY != null) ey = Math.max(ey, o.minMouseY);
if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);
nx = x + (ex - o.lastMouseX);
ny = y + (ey - o.lastMouseY);
Drag.obj.root.style["left"] = nx + "px";
Drag.obj.root.style["top"] = ny + "px";
Drag.obj.lastMouseX = ex;
Drag.obj.lastMouseY = ey;
Drag.obj.root.onDrag(nx, ny, Drag.obj.root);
return false;
},
end:
function() {
document.onmousemove = null;
document.onmouseup = null;
Drag.obj.root.style["z-index"] = "0";
Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);
Drag.obj = null;
},
fixE:
function(e) {
if (typeof e == 'undefined') e = window.event;
if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
return e;
}
};
//}}}
/***
|Name|RecentChangesPlugin|
|Source|http://www.TiddlyTools.com/#RecentChangesPlugin|
|Version|2.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|display droplist of recently changed tiddlers with goto, edit, and preview buttons|
!!!!!Usage
<<<
The {{{<<recentChanges>>}}} macro displays a droplist of all tiddlers that have been changed within the last N days (default=10 days).
<<<
!!!!!Examples
<<<
{{smallform{
{{{<<recentChanges>>}}}
><<recentChanges>>
or
{{{<<recentChanges #ofdays summary>>}}}
>where:
>* #ofdays specifies the time limit for list changed tiddlers. Use 0 (zero) to list all tiddlers in the document
>* "summary" is a keyword that outputs only the summary text (without the droplist or buttons)
>{{{<<recentChanges 14 summary>>}}}
><<recentChanges 14 summary>>
or
{{{<<recentChanges #ofdays previewheight previewclass>>}}}
>where:
>* #ofdays specifies the time limit for list changed tiddlers. Use 0 (zero) to list all tiddlers in the document
>* previewheight is a CSS height measurement and sets the FIXED height of the tiddler preview area (default is 15em)
>* previewclass is any CSS classname, and can be used to apply custom styles to the preview area (default is to use the standard 'viewer' class)
>{{{<<recentChanges 14 10em groupbox>>}}}
><<recentChanges 14 10em groupbox>>
}}}
<<<
!!!!!Revisions
<<<
2008.07.01 [2.1.0] added optional "summary" keyword for simply text output
2008.05.01 [2.0.1] fixup for titles with double-quotes
2007.07.26 [2.0.0] re-written as plugin
2006.10.02 [1.0.0] initial release (as inline script ShowRecentChanges)
<<<
!!!!!Code
***/
//{{{
version.extensions.RecentChangesPlugin= {major: 2, minor: 1, revision: 0, date: new Date(2008,7,1)};
config.shadowTiddlers.RecentChanges="<<recentChanges>>";
config.macros.recentChanges = {
layout: '<form><!--\
--><select size=1 name="list" style="width:69.5%" \
onchange=" \
this.form.goto.disabled=this.form.edit.disabled=this.form.preview.disabled=!this.value.length; \
var target=this.parentNode.parentNode.nextSibling; removeChildren(target); \
if (!this.value.length) \
{ target.style.display=\'none\'; this.form.preview.value=\'preview\'; } \
else if (target.style.display==\'block\') { \
wikify(\'<\'+\'<tiddler [[\'+this.value+\']]>\'+\'>\',target); \
target.style.display=\'block\'; \
this.form.preview.value=\'done\'; \
} \
"><!--\
-->%options%<!--\
--></select><!--\
--><input type="button" name="goto" value="goto" disabled title="view selected tiddler" style="width:10%" \
onclick="var target=this.parentNode.parentNode.nextSibling; removeChildren(target); \
target.style.display=\'none\'; this.form.preview.value=\'preview\'; \
story.displayTiddler(story.findContainingTiddler(this),this.form.list.value); \
"><!--\
--><input type="button" name="edit" value="edit" disabled title="edit selected tiddler" style="width:10%" \
onclick="var target=this.parentNode.parentNode.nextSibling; removeChildren(target); \
target.style.display=\'none\'; this.form.preview.value=\'preview\'; \
story.displayTiddler(story.findContainingTiddler(this),this.form.list.value,DEFAULT_EDIT_TEMPLATE); \
"><!--\
--><input type="button" name="preview" value="preview" disabled title="show/hide tiddler preview" style="width:10%" \
onclick="var target=this.parentNode.parentNode.nextSibling; \
if (this.value==\'preview\') { \
removeChildren(target); \
wikify(\'<\'+\'<tiddler [[\'+this.form.list.value+\']]>\'+\'>\',target); \
target.style.display=this.form.list.value.length?\'block\':\'none\'; this.value=\'done\'; \
} else { \
removeChildren(target); \
target.style.display=\'none\'; this.value=\'preview\'; \
} \
"><!--\
--></form>',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var days=10; if (!isNaN(params[0])) days=parseInt(params[0]); // time limit in days (use 0 for all tiddlers)
var summary=params[1]&¶ms[1].toLowerCase()=="summary"; if (summary) params.shift();
var height='15em'; if (params[1]) height=params[1]; // preview area fixed height
var previewclass='viewer'; if (params[2]) previewclass=params[2]; // preview area CSS class
var tiddlers=store.getTiddlers('modified','excludeLists').reverse();
var count=tiddlers.length;
if (days) {
var timelimit=(new Date()).getTime()-86400000*days;
for (var count=0; count<tiddlers.length && tiddlers[count].modified>timelimit; count++);
}
var s=count+' tiddlers have changed since ';
s+=new Date(timelimit).formatString("DDD, MMM DDth YYYY 0hh:0mm");
s+=' ('+days+' days ago)';
if (summary)
{ wikify(s,place); return; }
var opts='<option value="">'+s+'</option>';
for (var i=0; i<count; i++) { var t=tiddlers[i];
opts+='<option value="'+t.title.replace(/"/g,""")+'">';
opts+=t.modified.formatString('YYYY.0MM.0DD 0hh:0mm')+' - '+t.title;
opts+='</option>';
}
createTiddlyElement(place,"div").innerHTML=this.layout.replace(/%options%/,opts);
var preview=createTiddlyElement(place,"div",null,previewclass);
preview.style.display='none';
preview.style.whiteSpace='normal';
preview.style.overflow='auto';
preview.style.height=height;
}
}
//}}}
/%
|Name|RefreshPageDisplay|
|Source|http://www.TiddlyTools.com/#RefreshPageDisplay|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|Refresh all tiddlers and page elements without restarting|
%/<script label="$1" title="Redisplay current page content WITHOUT RESTARTING!">
story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});
refreshDisplay();
return false;
</script><script>
if ("$1"=="$"+"1") place.lastChild.innerHTML="refresh page display";
</script>
/%
|''URL:''|http://reiber.org/nxt|
|''Description:''|ReiberLabs RobotWiki - http://reiber.org/nxt|
|''Author:''|PaulReiber|
%/
/***
|Name|RelatedTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#RelatedTiddlersPlugin|
|Version|1.1.7|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|InlineJavascriptPlugin, NestedSlidersPlugin, StyleSheetShortcuts|
|Overrides||
|Options|##Configuration|
|Description|starting from a selected tiddler, display a list and/or tree of linked or transcluded tiddlers|
Given a starting tiddler (default is the current tiddler), this plugin recursively follows the internal links[] data that is associated with each tiddler and constructs a list of all tiddlers that are related to the starting tiddler by being referenced in a TiddlyLink (e.g., {{{[[TiddlerName]]}}}) or used as macro parameter (e.g., {{{<<tiddler TiddlerName>>}}}) within the tiddler content.
Using the terminology of Graph Theory, the plugin's recursive algorithm finds what is called a 'minimal spanning tree' from any specific starting 'root node'. The results can be displayed as a simple flat list of related tiddler titles, or as an indented tree diagram that shows the specific connections between the related tiddlers, and can be helpful for identifying clusters of interdependent tiddlers or simply generating an on-the-fly site map for quick discovery and navigation through complex or unfamiliar document content.
!!!!!Usage
<<<
//{{{
<<relatedTiddlers TiddlerName hideform "exclude list">>
//}}}
where:
*TiddlerName (optional)<br>sets the initial "root" to the specified tiddler (and hides the 'select a tiddler' form controls). You can use keyword 'here' to specify the current tiddler.
*'hideform' (optional) or 'showform' (default)<br>keyword value to suppress display of 'select tiddler' droplist and buttons.
*"exclude list" (optional)<br>space-separated list of tiddlers whose links should not be followed. use quotes or double-square brackets to ensure list is processed as a single parameter
The plugin also defines two functions that can be called externally (from other plugins or scripts) to generate and retrieve either a list of links or a formatted "tree view":
>{{{var list=config.macros.relatedTiddlers.getList(start,exclude,callback);}}}
>{{{var tree=config.macros.relatedTiddlers.getTree(start,exclude,callback);}}}
These functions accept parameters to specify the starting tiddler, and a list of tiddlers to exclude, as well as an optional callback function that takes any specified tiddler as input and returns a custom-defined array of links related to that tiddler:
>{{{var list=callback(tiddler);}}}
Use of the callback function enables you to generate an alternative list/tree, based on application-specific data (such tiddler references contained in tags or custom fields), rather than using the default "links" list.
<<<
!!!!!Configuration
<<<
<<option chkRelatedTiddlersShowList>> show list display
<<option chkRelatedTiddlersShowTree>> show tree display
<<option chkRelatedTiddlersZoom>> enable autosizing of tree display //(aka, "zoom" or "shrink-and-grow")//
don't follow links contained in these tiddlers: <<option txtRelatedTiddlersExclude>>
<<<
!!!!!Examples
<<<
{{smallform{<<relatedTiddlers>>}}}
Using getList()/getTree() public API from other scripts/plugins:
><script show>
var start="About";
var exclude=config.options.txtRelatedTiddlersExclude.readBracketedList();
var callback=null;
var list=config.macros.relatedTiddlers.getList(start,exclude,callback);
var tree=config.macros.relatedTiddlers.getTree(start,exclude,callback);
return "There are "+list.length+" tiddlers related to [["+start+"]]...\n"+tree;
</script>
<<<
!!!!!Revisions
<<<
2007.11.11 [1.1.7] in findRelatedTiddlers(), refactored into separate getlinks(),<br>and added param for optional callback function that can be used to return an alternative set of links.<br>Also added API functions, getTree() and getList() for use by other scripts
2007.07.13 [1.1.6] performance optimizations, more code cleanup
2007.07.10 [1.1.5] extensive code cleanup
2007.07.08 [1.1.0] converted from inline script
2007.06.29 [1.0.0] started (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.RelatedTiddlersPlugin={major: 1, minor: 1, revision: 7, date: new Date(2007,11,11)};
// initialize 'autozoom' and 'exclude' tree options (defaults are not to zoom, and to follow all links)
if (config.options.chkRelatedTiddlersZoom===undefined)
config.options.chkRelatedTiddlersZoom=false;
if (config.options.txtRelatedTiddlersExclude===undefined)
config.options.txtRelatedTiddlersExclude='GettingStarted DefaultTiddlers';
if (config.options.chkRelatedTiddlersShowList===undefined)
config.options.chkRelatedTiddlersShowList=true;
if (config.options.chkRelatedTiddlersShowTree===undefined)
config.options.chkRelatedTiddlersShowTree=false;
config.macros.relatedTiddlers={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// create form with unique DOM element ID (using current timestamp)... permits multiple form instances
var now=new Date().getTime();
var span=createTiddlyElement(place,"span");
span.innerHTML=this.form.format(["relatedTiddlers_form"+now]);
var form=span.getElementsByTagName("form")[0]; // find form that we just created
var target=createTiddlyElement(span,"div"); // create target block in which generated output will be placed
// initialize droplist contents (all tiddlers except hidden ones)
var tids=store.getTiddlers('title','excludeLists');
for (i=0; i<tids.length; i++) form.list.options[form.list.options.length]=new Option(tids[i].title,tids[i].title,false,false);
// initialize exclude field (space-separated list)
if (config.options.txtRelatedTiddlersExclude) form.exclude.value=config.options.txtRelatedTiddlersExclude;
// set starting tiddler, form display, and/or exclude list from macro params (if present) and then show the results!
var root="";
var hide=false;
var exclude=config.options.txtRelatedTiddlersExclude;
if (params[0]) root=params[0]; // TiddlerName
if (params[1]) hide=(params[1].toLowerCase()=="hideform"); // keyword: "hideform" or "showform" (default)
if (params[2]) exclude=params[2]; // list of tiddlers whose links should not be followed
if (root=="here") { var tid=story.findContainingTiddler(place); if (tid) root=tid.getAttribute("tiddler"); }
if (store.tiddlerExists(root)) {
// NOTE: don't hide form when running IE, where putting initial focus on hidden form creates an error
if (!config.browser.isIE) form.style.display=hide?"none":"block"; // show/hide the controls
form.list.value=root; // set the root
form.exclude.value=exclude; // set 'exclude' field
form.get.click(); // DISPLAY INITIAL RESULTS (if tiddler is selected)
}
},
form:
"<form id='%0' action='javascript:;' style='display:inline;margin:0;padding:0;' onsubmit='return false'><!-- \
--><span class='fine' style='float:left;vertical-align:bottom;width:39.5%;'><i>find all tiddlers related to:</i></span><!-- \
--><span class='fine' style='float:left;vertical-align:bottom;'><i>exclude links contained in:</i></span><!-- \
--><div style='clear:both'><!-- \
--><select name=list size=1 style='width:39.5%' onchange='this.form.get.click()'><!-- \
--><option value=''>select a tiddler...</option><!-- \
--></select><!-- \
--><input type='text' option='txtRelatedTiddlersExclude' name='exclude' value='' style='width:40%' \
title='enter the names of tiddlers whose links should NOT be followed' \
onkeyup='if (event.keyCode==13) { this.blur(); this.form.get.click(); }' \
onchange='config.options[this.getAttribute(\"option\")]=this.value;saveOptionCookie(this.getAttribute(\"option\"));'><!-- \
--><input type=button name=get value='get related' style='width:10%' \
onclick='config.macros.relatedTiddlers.show(this.form,this.form.nextSibling);'><!-- \
--><input type=button name=done value='done' disabled style='width:10%' \
onclick='this.form.list.selectedIndex=0; this.form.get.click();'><!-- \
--></div><!-- \
--></form>",
styles:
".relatedTiddlers blockquote \
{ border-left:1px dotted #999; margin:0 25px; padding-left:.5em; font-size:%0%; line-height:115%; } \
.relatedTiddlers .borderleft \
{ margin:0; padding:0; margin-left:1em; border-left:1px dotted #999; padding-left:.5em; } \
.relatedTiddlers .fourcolumns \
{ display:block; -moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%} \
.relatedTiddlers a \
{ font-weight:normal; } \
.relatedTiddlers .bold, .relatedTiddlers .bold a \
{ font-weight:bold; } \
.relatedTiddlers .floatright \
{ float:right; } \
.relatedTiddlers .clear \
{ clear:both; } ",
toggleform:
"{{floatright{<html><a href='javascript:;' class='button' title='show/hide tiddler selection droplist and buttons' \
onclick='var here=story.findContainingTiddler(this); var tid=here?here.getAttribute(\"tiddler\"):\"\"; \
var f=document.getElementById(\"%0\"); var hide=(f.style.display!=\"none\"); \
f.style.display=hide?\"none\":\"inline\"; this.innerHTML=hide?\"show form\":\"hide form\"; return false;'>%1</a></html>}}}",
treecheck:
"{{floatright{@@display:none;<<option chkRelatedTiddlersShowTree>>@@<html><a href='javascript:;' class='button' onclick='this.parentNode.previousSibling.firstChild.click(); return false;'>tree view</a></html>}}}",
tree:
"{{clear{\n----\n}}} \
{{floatright small{<<option chkRelatedTiddlersZoom>>autosize tree display}}} \
{{fine{\n''tiddlers linked from or included by'' [[%0]]\n}}}%1",
listcheck:
"{{floatright{@@display:none;<<option chkRelatedTiddlersShowList>>@@<html><a href='javascript:;' class='button' onclick='this.parentNode.previousSibling.firstChild.click(); return false;'>list view</a></html>}}}",
list:
"{{clear{\n----\n}}} \
{{fine{\n''tiddlers containing links to'' [[%0]]\n}}} \
{{small fourcolumns borderleft{\n%1}}} \
{{fine{\n''tiddlers linked from or included by'' [[%0]]\n}}} \
{{borderleft{\n \
{{fine{\n''bold''=//direct links//, plain=//indirect links//, ''...''=//links not followed//}}} \
{{small fourcolumns{\n%2}}} \
}}}",
skipped:
"<html><span title='links from %0 have NOT been followed'>...</span></html>",
mouseover: function(ev) {
this.saveSize=this.style.fontSize;
this.style.fontSize='100%';
this.style.borderLeftStyle='solid';
},
mouseout: function(ev) {
this.style.fontSize=this.saveSize;
this.style.borderLeftStyle='dotted';
},
findRelatedTiddlers: function(tid,tids,treeout,level,exclude,callback) {
// recursively build list of related tids (links and includes FROM the root tiddler) and generate treeview output
var t=store.getTiddler(tid);
if (!t || tids.contains(tid)) return tids; // tiddler already in results (or missing tiddler)... just return current results
tids.push(t.title); // add tiddler to results
var skip=exclude && exclude.contains(tid);
treeout.text+=level+"[["+tid+"]]"+(skip?this.skipped.format([tid]):"")+"\n";
if (skip) return tids; // branch is pruned... don't follow links
var links=callback?callback(t):this.getLinks(t);
for (var i=0; i<links.length; i++) tids=this.findRelatedTiddlers(links[i],tids,treeout,level+">",exclude);
return tids;
},
getLinks: function(tiddler) {
if (!tiddler.linksUpdated) tiddler.changed();
return tiddler.links;
},
getTree: function(start,exclude,callback) {
// get related tiddlers and generate blockquote-indented tree output
var list=[]; var tree={text:""}; var level="";
list=this.findRelatedTiddlers(start,list,tree,level,exclude,callback);
return tree.text;
},
getList: function(start,exclude,callback) {
// get related tiddlers and generate blockquote-indented tree output
var list=[]; var tree={text:""}; var level="";
list=this.findRelatedTiddlers(start,list,tree,level,exclude,callback);
return list;
},
show: function(form,target) {
removeChildren(target); form.done.disabled=true; // clear any existing output and disable 'done' button
var start=form.list.value; if (!start.length) return; // get selected starting tiddler. If blank value (heading), do nothing
// get related tiddlers and generate blockquote-indented tree output
var rels=[]; var treeview={text:""}; var level="";
var exclude=config.options.txtRelatedTiddlersExclude.readBracketedList();
var rels=this.findRelatedTiddlers(start,rels,treeview,level,exclude);
rels.shift(); // remove self from list
rels.sort(); // sort titles alphabetically
// generate list output
var tid=store.getTiddler(start);
var relsview=""; for (t=0; t<rels.length; t++) {
relsview+=tid.links.contains(rels[t])?("{{bold{[["+rels[t]+"]]}}}"):("[["+rels[t]+"]]");
if (exclude && exclude.contains(rels[t])) relsview+=this.skipped.format([rels[t]]);
relsview+="\n";
}
// get references TO the root tiddler, add to related tiddlers and generate refsview output
var refs=[]; var referers=store.getReferringTiddlers(start);
for(var r=0; r<referers.length; r++)
if(referers[r].title!=start && !referers[r].tags.contains("excludeLists")) refs.push(referers[r].title);
var refcount=refs.length; var relcount=rels.length; // remember individual counts
for (var r=0; r<refs.length; r++) rels.pushUnique(refs[r]); // combine lists without duplicates
var total=rels.length; // get combined total
var refsview="[["+refs.sort().join("]]\n[[")+"]]\n";
// set custom blockquote styles for treeview
setStylesheet(this.styles.format([config.options.chkRelatedTiddlersZoom?80:100]),'relatedTiddlers_styles');
// assemble and render output
var summary=(total?(total+" tiddler"+(total==1?" is":"s are")):"There are no tiddlers")+" related to: [["+start+"]]";
var list=this.list.format([start,refsview.length?refsview:"//none//",relsview.length?relsview:"//none//"]);
var tree=this.tree.format([start,treeview.text]);
var toggle=this.toggleform.format([form.id,(form.style.display=='none'?'show form':'hide form')]);
var sep="{{floatright{ | }}}";
var showList=total && config.options.chkRelatedTiddlersShowList;
var showTree=relcount && config.options.chkRelatedTiddlersShowTree;
var out="{{relatedTiddlers{"+toggle+(relcount?sep+this.treecheck:"")+(total?sep+this.listcheck:"")+summary+(showList?list:"")+(showTree?tree:"")+"}}}";
wikify(out,target);
form.done.disabled=false; // enable 'done' button
// add mouseover/mouseout handling to blockquotes (for autosizing)
var blocks=target.getElementsByTagName("blockquote");
for (var b=0; b<blocks.length; b++)
{ blocks[b].onmouseover=this.mouseover; blocks[b].onmouseout=this.mouseout; }
// add side-effect to checkboxes so that display is refreshed when a checkbox state is changed
var checks=target.getElementsByTagName("input");
for (var c=0; c<checks.length; c++) {
if (checks[c].type.toLowerCase()!="checkbox") continue;
checks[c].coreClick=checks[c].onclick; // save standard click handler
checks[c].formID=form.id; // link checkbox with correponding form
checks[c].onclick=function() { this.coreClick.apply(this,arguments); document.getElementById(this.formID).get.click(); }
}
}
}
//}}}
/%
|Name|RescueStoreAreaCommand|
|Source|http://www.TiddlyTools.com/#RescueStoreAreaCommand|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script bookmarklet|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|rescue tiddler changes from online document when net goes down during editing|
%/<script label="$1" title="rescue tiddlers from current document storeArea">
if(typeof version==undefined||version.title!='TiddlyWiki')
{alert(document.location.href+'\n\nis not a TiddlyWiki document');return false;}
if (!confirm('Preparing to rescue storeArea contents... press OK to proceed')) return false;
var sa=store.allTiddlersAsHtml().htmlEncode();
var win=window.open();
win.document.open();
win.document['write']('<html><body><pre>'+sa+'</pre></body></html>');
win.document.close();
alert('copy/paste the displayed storeArea content into a local text file');
win.focus();
</script><script>
if ("$1"=="$"+"1") place.lastChild.innerHTML="Rescue current storeArea contents";
</script>
/***
|Name|RunTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#RunTiddlerPlugin|
|Version|1.2.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|command to invoke tiddler content as if tagged with systemConfig (i.e., a plugin)|
!!!!!Usage/Example
<<<
Toolbar command:
>{{{<<toolbar runTiddler>>}}} (in tiddler content)
>{{{<span class='toolbar' macro='toolbar runTiddler'></span>}}} (in ViewTemplate definition)
><<toolbar runTiddler>>
>when clicked, invokes the current tiddler as javascript code
Macro function:
>{{{<<runTiddler TiddlerName>>}}} or {{{<<runTiddler TiddlerName label tip>>}}}
>if only a TiddlerName is provided, the specified tiddler is automatically invoked as javascript code as soon as the macro is rendered. If //optional// ''label'' and ''tip'' parameters are present, a command link is created that, when clicked, invokes the specified tiddler as javascript code.
<<<
!!!!!Revisions
<<<
2008.09.01 [1.2.1] fixed return value from command handler to prevent IE from attempt to leave the page
2008.08.26 [1.2.0] added optional label and tooltip params to macro (creates 'onclick' button to invoke specified tiddler)
2008.08.26 [1.1.0] added {{{<<runTiddler TiddlerName>>}}} macro to invoke specified tiddler
2007.09.27 [1.0.0] toolbar command based on run button functionality from TidIDEPlugin
<<<
!!!!!Code
***/
//{{{
version.extensions.RunTiddlerPlugin= {major: 1, minor: 2, revision: 1, date: new Date(2008,9,1)};
//}}}
//{{{
config.commands.runTiddler = {
text: 'run',
tooltip: 'evaluate tiddler content as systemConfig (plugin) javascript code',
warning: "Warning!! Processing '%0' as a systemConfig (plugin) tiddler may produce unexpected results! Are you sure you want to proceed?",
completed: "%0: Processing completed",
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
return this.invoke(here.getAttribute("tiddler"),true,false);
},
invoke: function(tid,ask,quiet) {
if (ask && !confirm(this.warning.format([tid]))) return false;
var text=store.getTiddlerText(tid); if (!text) return false;
try { window.eval(text); if (!quiet) displayMessage(config.commands.runTiddler.completed.format([tid])); }
catch(ex) { displayMessage(config.messages.pluginError.format([exceptionText(ex)])); }
return false;
}
};
//}}}
//{{{
config.macros.runTiddler = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tid=params[0];
var label=params[1];
var tip=params[2]||config.commands.runTiddler.tooltip;
if (!label) config.commands.runTiddler.invoke(tid,false,true);
else createTiddlyButton(place,label,tip,function(){
return config.commands.runTiddler.invoke(this.getAttribute("tid"),true,false);
},"button").setAttribute("tid",tid);
}
}
//}}}
/***
|Name|SaveAsPlugin|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Save current document to a different path/filename|
This plugin automatically adds a 'save as' command to the TiddlyWiki 'backstage' menu that allows you to quickly create an exact copy of the current TiddlyWiki document. The plugin also defines a macro that you can use to place a "save as..." command link into your sidebar/mainmenu/any tiddler (or wherever you like).
>//Note: This plugin now supersedes [[NewDocumentPlugin]], which has been retired and is no longer being distributed. In addition, the HTML+CSS "snapshot" functionality previous provided by that plugin has been moved to a separate plugin. Please see [[SnapshotPlugin]] for additional information.//
!!!!!Documentation
<<<
see [[SaveAsPluginInfo]]
<<<
!!!!!Revisions
<<<
2008.09.29 [2.4.3] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
| Please see [[SaveAsPluginInfo]] for additional revision details |
2006.02.03 [1.0.0] Created.
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveAsPlugin= {major: 2, minor: 4, revision: 2, date: new Date(2008,9,28)};
config.macros.saveAs = {
label: "save as...",
labelparam: "label:",
prompt: "Save current document to a different path/file",
promptparam: "prompt:",
filePrompt: "Please select or enter a target path/filename",
targetparam: "target:",
defaultFilename: "new.html",
filenameparam: "filename:",
currfilekeyword: "here",
typeparam: "type:",
type_TW: "tw", type_PS: "ps", type_TX: "tx", type_NF: "nf", // file type tokens
type_map: { // map filetype param alternatives/abbreviations to token values
tiddlywiki:"tw", tw:"tw", wiki: "tw",
purestore: "ps", ps:"ps", store:"ps",
plaintext: "tx", tx:"tx", text: "tx",
newsfeed: "nf", nf:"nf", xml: "nf", rss:"nf"
},
replaceparam: "replace",
mergeparam: "merge",
quietparam: "quiet",
openparam: "open",
askParam: "ask",
askMsg: "Enter a tag filter (use * for all tiddlers, 'none' for blank document)",
emptyParam: "none",
confirmmsg: "Found %0 tiddlers matching\n\n'%1'\n\nPress OK to proceed",
mergeprompt: "%0\nalready contains tiddler definitions.\n"
+"\nPress OK to add new/revised tiddlers to current file contents."
+"\nPress Cancel to completely replace file contents",
mergestatus: "Merged %0 new/revised tiddlers and %1 existing tiddlers",
okmsg: "%0 tiddlers written to %1",
failmsg: "An error occurred while creating %1",
filter: "",
handler: function(place,macroName,params) {
if (params[0] && params[0].substr(0,this.labelparam.length)==this.labelparam)
var label=params.shift().substr(this.labelparam.length);
if (params[0] && params[0].substr(0,this.promptparam.length)==this.promptparam)
var prompt=params.shift().substr(this.promptparam.length);
if (params[0] && params[0].substr(0,this.targetparam.length)==this.targetparam)
var target=params.shift().substr(this.targetparam.length);
if (params[0] && params[0].substr(0,this.filenameparam.length)==this.filenameparam)
var filename=params.shift().substr(this.filenameparam.length);
if (params[0] && params[0].substr(0,this.typeparam.length)==this.typeparam)
var filetype=this.type_map[params.shift().substr(this.typeparam.length).toLowerCase()];
var q=(params[0] && params[0]==this.quietparam); if (q) params.shift();
var o=(params[0] && params[0]==this.replaceparam); if (o) params.shift();
var m=(params[0] && params[0]==this.mergeparam); if (m) params.shift();
var a=(params[0] && params[0]==this.openparam); if (a) params.shift();
var btn=createTiddlyButton(place,label||this.label,prompt||this.prompt,
function(){config.macros.saveAs.go(
this.getAttribute('target'),
this.getAttribute('filename'),
this.getAttribute('filetype'),
this.getAttribute('filter'),
this.getAttribute('quiet')=="true",
this.getAttribute('overwrite')=="true",
this.getAttribute('merge')=="true",
this.getAttribute('autoopen')=="true"); return false;}
);
if (target) btn.setAttribute("target",target);
if (filename) btn.setAttribute("filename",filename);
btn.setAttribute("filetype",filetype||this.type_TW);
btn.setAttribute("filter",params.join(" "));
btn.setAttribute("quiet",q?"true":"false");
btn.setAttribute("overwrite",o?"true":"false");
btn.setAttribute("merge",m?"true":"false");
btn.setAttribute("autoopen",a?"true":"false");
},
go: function(target,filename,filetype,filter,quiet,overwrite,merge,autoopen) {
var cm=config.messages; // abbreviation
var cms=config.macros.saveAs; // abbreviation
if (window.location.protocol!="file:") // make sure we are local
{ displayMessage(cm.notFileUrlError); return; }
// get tidders, confirm filtered results
var tids=cms.selectTiddlers(filter);
if (tids===false) return; // cancelled by user
if (cms.filter!=cms.emptyParam && cms.filter.length && !quiet)
if (!confirm(cms.confirmmsg.format([tids.length,cms.filter]))) return;
// get target path/filename
if (!filetype) filetype=this.type_TW;
target=target||cms.getTarget(filename,filetype==this.type_TX?'txt':'html');
if (!target) return; // cancelled by user
var link="file:///"+target.replace(/\\/g,'/');
var samefile=link==decodeURIComponent(window.location.href);
var p=getLocalPath(document.location.href);
if (samefile) {
if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
}
var notes="";
var total={val:0};
var out=this.assembleFile(target,filetype,tids,notes,quiet,overwrite,merge,total);
var ok=saveFile(target,out);
if (ok && autoopen) {
if (!samefile) window.open(link).focus();
else { store.setDirty(false); window.location.reload(); }
}
if (!quiet || !(ok && autoopen))
displayMessage((ok?this.okmsg:this.failmsg).format([total.val,target]),link);
},
selectTiddlers: function(filter) {
var cms=config.macros.saveAs; // abbreviation
cms.filter=filter||"";
if (filter==cms.emptyParam) return [];
if (!filter||!filter.length) return store.getTiddlers("title");
// get filtered tiddlers
if (filter==config.macros.saveAs.askParam) {
filter=prompt(config.macros.saveAs.askMsg,"");
if (!filter) return false; // cancelled by user
cms.filter=filter=="*"?"":filter;
if (filter=="*") return store.getTiddlers("title");
}
return store.filterTiddlers("[tag["+filter+"]]");
},
getTarget: function(defName,defExt) {
var cms=config.macros.saveAs; // abbreviation
// get new target path/filename
var newPath=getLocalPath(window.location.href);
var slashpos=newPath.lastIndexOf("/"); if (slashpos==-1) slashpos=newPath.lastIndexOf("\\");
if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
if (!defName||!defName.length) { // use current filename as default
var p=getLocalPath(window.location.href);
var s=p.lastIndexOf("/"); if (s==-1) s=p.lastIndexOf("\\");
if (s!=-1) defName=p.substr(s+1);
}
var defFilename=(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
var target=cms.askForFilename(cms.filePrompt,newPath,defFilename,defExt);
if (!target) return; // cancelled by user
// if specified file does not include a path, assemble fully qualified path and filename
var slashpos=target.lastIndexOf("/"); if (slashpos==-1) slashpos=target.lastIndexOf("\\");
if (slashpos==-1) target=target+(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
return target;
},
askForFilename: function(msg,path,file,defExt) {
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension=defExt||'html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XP/Vista only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=(defExt=='txt')?2:3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
}
return result;
},
plainTextHeader:
'// Source'+':\n//\t%0\n'
+'// Title:\n//\t%1\n'
+'// Subtitle:\n//\t%2\n'
+'// Created:\n//\t%3 by %4\n'
+'// Application:\n//\tTiddlyWiki %5 / %6 %7\n',
plainTextTiddler:
'\n// ----- %0 (by %1 on %2) -----\n\n%3',
plainTextFooter:
'',
newsFeedHeader:
'<'+'?xml version="1.0"?'+'>\n'
+'<rss version="2.0">\n'
+'<channel>\n'
+'<title>%1</title>\n'
+'<link>%0</link>\n'
+'<description>%2</description>\n'
+'<language>en-us</language>\n'
+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
+'<pubDate>%3</pubDate>\n'
+'<lastBuildDate>%3</lastBuildDate>\n'
+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
newsFeedTiddler:
'\n%0\n',
newsFeedFooter:
'</channel></rss>',
pureStoreHeader:
'<html><body>'
+'<style type="text/css">'
+' #storeArea {display:block;margin:1em;}'
+' #storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
+' #pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
+'</style>'
+'<div id="pureStoreHeading">'
+' TiddlyWiki "PureStore" export file<br>'
+' Source'+': <b>%0</b><br>'
+' Title: <b>%1</b><br>'
+' Subtitle: <b>%2</b><br>'
+' Created: <b>%3</b> by <b>%4</b><br>'
+' TiddlyWiki %5 / %6 %7<br>'
+' Notes:<hr><pre>%8</pre>'
+'</div>'
+'<div id="storeArea">',
pureStoreTiddler:
'%0\n%1',
pureStoreFooter:
'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
assembleFile: function(target,filetype,tids,notes,quiet,overwrite,merge,total) {
var revised="";
var now = new Date().toLocaleString();
var src=convertUnicodeToUTF8(document.location.href);
var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());
var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());
var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
var twver = version.major+"."+version.minor+"."+version.revision;
var v=version.extensions.SaveAsPlugin; var pver = v.major+"."+v.minor+"."+v.revision;
var headerargs=[src,title,subtitle,now,user,twver,"SaveAsPlugin",pver,notes];
switch (filetype) {
case this.type_TX: // plain text
var header=this.plainTextHeader.format(headerargs);
var footer=this.plainTextFooter;
break;
case this.type_NF: // news feed (XML)
headerargs[0]=store.getTiddlerText("SiteUrl","");
var header=this.newsFeedHeader.format(headerargs);
var footer=this.newsFeedFooter;
break;
case this.type_PS: // PureStore (no code)
var header=this.pureStoreHeader.format(headerargs);
var footer=this.pureStoreFooter;
break;
case this.type_TW: // full TiddlyWiki
default:
var currPath=getLocalPath(window.location.href);
var original=loadFile(currPath);
if (!original) { alert(config.messages.cantSaveError); return; }
var posDiv = locateStoreArea(original);
if (!posDiv) { alert(config.messages.invalidFileError.format([currPath])); return; }
var header = original.substr(0,posDiv[0]+startSaveArea.length)+"\n";
var footer = "\n"+original.substr(posDiv[1]);
break;
}
var out=this.getData(target,filetype,tids,quiet,overwrite,merge);
var revised = header+convertUnicodeToUTF8(out.join("\n"))+footer;
// if full TW, insert page title and language attr, and reset MARKUP blocks as needed...
if (filetype==this.type_TW) {
var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
revised=revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised=updateLanguageAttribute(revised);
var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
revised=updateMarkupBlock(revised,"PRE-HEAD",
titles.contains("MarkupPreHead")? "MarkupPreHead" :null);
revised=updateMarkupBlock(revised,"POST-HEAD",
titles.contains("MarkupPostHead")?"MarkupPostHead":null);
revised=updateMarkupBlock(revised,"PRE-BODY",
titles.contains("MarkupPreBody")? "MarkupPreBody" :null);
revised=updateMarkupBlock(revised,"POST-SCRIPT",
titles.contains("MarkupPostBody")?"MarkupPostBody":null);
}
total.val=out.length;
return revised;
},
formatItem: function(s,f,t,u) {
if (f==this.type_TW) var r=s.getSaver().externalizeTiddler(s,t);
if (f==this.type_PS) var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
if (f==this.type_NF) var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
if (f==this.type_TX) var r=this.plainTextTiddler.format([t.title,t.modifier,t.modified.toLocaleString(),t.text]);
return r||"";
},
getData: function(target,filetype,tids,quiet,overwrite,merge) {
// output selected tiddlers and gather list of titles (for use with merge)
var out=[]; var titles=[];
var url=store.getTiddlerText("SiteUrl","");
for (var i=0; i<tids.length; i++) {
out.push(this.formatItem(store,filetype,tids[i],url));
titles.push(tids[i].title);
}
// if TW or PureStore format, ask to merge with existing tiddlers (if any)
if (filetype==this.type_TW || filetype==this.type_PS) {
if (overwrite) return out; // skip merge... forced overwrite
var text=loadFile(target);
if (text && text.length) {
var remoteStore=new TiddlyWiki();
if (remoteStore.importTiddlyWiki(convertUTF8ToUnicode(text))
&& (merge||confirm(this.mergeprompt.format([target])))) {
var existing=remoteStore.getTiddlers("title");
for (var i=0; i<existing.length; i++)
if (!titles.contains(existing[i].title))
out.push(this.formatItem(remoteStore,filetype,existing[i],url));
if (!quiet) displayMessage(this.mergestatus.format([tids.length,out.length-tids.length]));
}
}
}
return out;
}
};
//}}}
//{{{
// automatically add saveAs to backstage
config.tasks.saveAs = {
text: "saveAs",
tooltip: config.macros.saveAs.prompt,
action: function(){ clearMessage(); config.macros.saveAs.go(); }
}
config.backstageTasks.splice(config.backstageTasks.indexOf("save")+1,0,"saveAs");
//}}}
|Name|SaveAsPluginInfo|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for SaveAsPlugin|
This plugin automatically adds a 'save as' command to the TiddlyWiki 'backstage' menu that allows you to quickly create an exact copy of the current TiddlyWiki document. The plugin also defines a macro that you can use to place a "save as..." command link into your sidebar/mainmenu/any tiddler (or wherever you like).
>//Note: This plugin now supersedes [[NewDocumentPlugin]], which has been retired and is no longer being distributed. In addition, the HTML+CSS "snapshot" functionality previous provided by that plugin has been moved to a separate plugin. Please see [[SnapshotPlugin]] for additional information.//
!!!!!Usage
<<<
When the command link is clicked, a standard system-specific dialog box will be displayed so you can select/enter the desired target path and filename. The default is to create a file called "new.html" in the same directory as the current document.
Syntax:
{{{
<<saveAs "label:..." "prompt:..." "filename:..." "type:..." quiet open tagfilter>>
}}}
where:
*''label:...'' //(optional)//<br>defines alternative link text (replaces default "save as..." display)
*''prompt:...'' //(optional)//<br>defines alternative tooltip text for 'mouseover' prompting (replaces default hard-coded tooltip text)
*''filename:...'' //(optional)//<br>specifies the //default// filename to be shown when asking for an output path/file
*''type:...'' //(optional)//<br>specifies a keyword indicating one of four file output formats:
**''type:~TiddlyWiki'' (or ''wiki'' or ''tw'')<br>a TiddlyWiki HTML document
**''type:~PureStore'' (or ''store'' or ''ps'')<br>a TiddlyWiki "PureStore" HTML export file (just tiddlers, no core code)
**''type:~PlainText'' (or ''text'' or ''tx'')<br>a plain text file listing of tiddler //source// content
**''type:~NewsFeed'' (or ''xml'' or ''rss'' or ''nf'')<br>an RSS ~NewsFeed XML file
*''quiet'' //(optional)//<br>normally, when using tag filtering (see below), the number of matching tiddlers is reported and you are asked to confirm before saving those tiddlers to a new file. Use the ''quiet'' keyword to suppress this confirmation step.
*''open'' //(optional)//<br>Use the ''open'' keyword to auto-open the newly created document file in a separate browser tab/window.
*''tagfilter'' or ''ask'' or ''none''//(optional)//<br>You can use the tag filter parameter to select a subset of tiddlers to be written into the new document file. If you specify a single tag value, then only tiddlers that are tagged with that value are included in the resulting file. To use a combination of tag values, you can install [[MatchTagsPlugin]], which provides full 'boolean' logic with AND, OR, and NOT operators, as well as nested parentheses, to create complex expressions for filtering and selecting the desired set of tiddlers. If you specify the keyword, ''ask'' in place of the tagfilter, you will be prompted to enter a tag or tag expression whenever you click on the 'save as...' command link. Alternatively, you can specify the keyword, ''none'' in place of the tagfilter to omit all tiddlers and create a new //empty// document.
*By default, when no tag filter parameter is provided, all tiddlers in the document are written to the new file.
<<<
!!!!!Examples
<<<
save all tiddlers:
>{{{<<saveAs>>}}}<br>try it: <<saveAs>>
save only tiddlers matching a single tag:
>{{{<<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" "ImportExportPackage>>
save to a ~PureStore format:
>{{{<<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>
save to a ~PlainText format:
>{{{<<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>
save tiddlers matching a complex combination of tags (requires [[MatchTagsPlugin]]):
>{{{<<saveAs (alpha or settings) and not systemConfig>>}}}
>try it: <<saveAs (alpha or settings) and not systemConfig>>
prompt for tag or tag expression each time:
>{{{<<saveAs "label:custom save as..." ask>>}}}
>try it: <<saveAs "label:custom save as..." ask>>
<<<
!!!!!Revisions
<<<
2008.09.29 [2.4.3] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.28 [2.4.2] in go(), fixed typo that prevented backstage SaveAs from working.
2008.09.24 [2.4.1] if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 [2.4.0] when 'open' param is used and file is saved to current location, reload() page instead of opening a new tab/window. Added 'filename' param to specify default filename. Added 'replace' and 'merge' keyword params to control file handling without asking user. Improved use of 'quiet' flag to eliminate more unwanted messages.
2008.09.19 [2.3.2] fixed backstage SaveAs command (was defaulting to empty document). in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.16 [2.3.1] fixed IE 'navigate away' error by returning false from button onclick handler
2008.09.11 [2.3.0] added support for alternative file formats: ~PlainText (TX), ~PureStore (PS), or ~NewsFeed (XML) in addition to existing ~TiddlyWiki (TW) document format
2008.09.06 [2.2.1] corrected handling of autoopen attribute so it only applies when "open" param is specified
2008.08.01 [2.2.0] added "open" param to auto-open newly saved document
2008.07.20 [2.1.3] added "quiet" param to bypass confirmation when using tag filter
2008.04.22 [2.1.2] corrected use of getTarget() to check for "user cancelled"
2008.04.22 [2.1.1] documentation fixes
2008.04.22 [2.1.0] added support for tag filtering to completely replace [[NewDocumentPlugin]] (now retired)
2008.04.12 [2.0.1] automatically add "saveAs" to backstage commands
2008.04.12 [2.0.0] initial release based on [[NewDocumentPlugin]]
__Previous revisions from [[NewDocumentPlugin]]__
2008.04.20 [1.8.0] added support for 'noCSS' and 'viewer' params for alternative snapshot output
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.04 [*.*.*] update for ~TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.03.30 [1.7.0] added support for "print" param as alternative for "snap". When "print" is used, the filename is ignored and ouput is directed to another browser tab/window, where the print dialog is then automatically triggered.
2007.03.30 [1.6.1] added support for "here" keyword for current tiddler elementID and "prompt:text" param for specifying tooltip text
2007.02.12 [1.6.0] in onClickNewDocument(), reset HTML source 'markup'
2006.10.23 [1.5.1] in onClickNewDocument(), get saved parameter value for snapID instead of using default "contentWrapper" (oops!)
2006.10.18 [1.5.0] new optional param for 'snap'... specify alternative DOM element ID (default is still "contentWrapper"). Based on a suggestion from Xavier Verges.
2006.08.03 [1.4.3] in promptForFilename(), for IE (~WinXP only), added handling for ~UserAccounts.~CommonDialog
2006.07.29 [1.4.2] in onClickNewDocument(), okmsg display is now linked to newly created file
2006.07.24 [1.4.1] in promptForFilename(), check for nsIFilePicker.returnCancel to allow nsIFilePicker.returnOK **OR** nsIFilePicker.returnReplace to be processed.
2006.05.23 [1.4.0] due to very poor performance, support for tag *expressions* has been removed, in favor of a simpler "containsAny()" scan for tags.
2006.04.09 [1.3.6] in onClickNewDocument, added call to convertUnicodeToUTF8() to better handle international characters.
2006.03.15 [1.3.5] added nsIFilePicker() handler for selecting filename in moz-based browsers. IE and other non-moz browsers still use simple prompt() dialog
2006.03.15 [1.3.0] added "label:text" param for custom link text. added special "all" filter parameter for "save as..." handling (writes all tiddlers to output file)
2006.03.09 [1.2.0] added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document.
2006.02.24 [1.1.2] Fix incompatiblity with TW 2.0.5 by removing custom definition of getLocalPath() (which is now part of TW core)
2006.02.03 [1.1.1] concatentate 'extra' params so that tag expressions don't have to be quoted. moved all text to 'formatted' string definitions for easier translation.
2006.02.03 [1.1.0] added support for tag EXPRESSIONS. plus improved documentation and code cleanup
2006.02.03 [1.0.0] Created.
<<<
/%
|Name|SaveBreadcrumbs|
|Source|http://www.TiddlyTools.com/#SaveBreadcrumbs|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin, BreadcrumbsPlugin|
|Overrides||
|Description|write the current list of breadcrumbs to a 'story' tiddler|
%/{{button{<script label="save breadcrumbs to tiddler">
if (!config.macros.breadcrumbs) return; // not installed
if (!config.macros.breadcrumbs.crumbs.length) return; // no crumbs
var msg='Enter the name of a tiddler in which to save the current breadcrumbs';
var tid=prompt(msg,'DefaultTiddlers'); if (!tid||!tid.length) return; // cancelled by user
var t=store.getTiddler(tid);
if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
var who=config.options.txtUserName;
var when=new Date();
var text='[['+config.macros.breadcrumbs.crumbs.join(']]\n[[')+']]';
var tags=t?t.tags:[]; tags.pushUnique('story');
var fields=t?t.fields:{};
store.saveTiddler(tid,tid,text,who,when,tags,fields);
story.displayTiddler(null,tid);
story.refreshTiddler(tid,null,true);
displayMessage(tid+' has been '+(t?'updated':'created'));
</script>}}}
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.search, TiddlyWiki.prototype.search, config.macros.search.onKeyPress|
|Options|##Configuration|
|Description|extend core search function with additional user-configurable options|
Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
<<option chkSearchHighlight>> Highlight matching text in displayed tiddlers
<<option chkSearchList>> Show list of matches
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by modification date (most recent first)
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
<<option chkSearchOpenTiddlers>> Search only in tiddlers that are currently displayed
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with: <<option txtSearchExcludeTags>>
<<<
!!!!!Revisions
<<<
2009.01.16 [3.0.5] added chkSearchOpenTiddlers option to limit searches to displayed tiddlers only
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 5, date: new Date(2009,1,16)};
var co=config.options; // abbrev
if (co.chkSearchTitles===undefined) co.chkSearchTitles=true;
if (co.chkSearchText===undefined) co.chkSearchText=true;
if (co.chkSearchTags===undefined) co.chkSearchTags=true;
if (co.chkSearchFields===undefined) co.chkSearchFields=true;
if (co.chkSearchTitlesFirst===undefined) co.chkSearchTitlesFirst=true;
if (co.chkSearchList===undefined) co.chkSearchList=true;
if (co.chkSearchHighlight===undefined) co.chkSearchHighlight=true;
if (co.chkSearchListTiddler===undefined) co.chkSearchListTiddler=false;
if (co.chkSearchByDate===undefined) co.chkSearchByDate=false;
if (co.chkIncrementalSearch===undefined) co.chkIncrementalSearch=true;
if (co.chkSearchShadows===undefined) co.chkSearchShadows=true;
if (co.txtIncrementalSearchDelay===undefined) co.txtIncrementalSearchDelay=500;
if (co.txtIncrementalSearchMin===undefined) co.txtIncrementalSearchMin=3;
if (co.chkSearchOpenTiddlers===undefined) co.chkSearchOpenTiddlers=false;
if (co.chkSearchExcludeTags===undefined) co.chkSearchExcludeTags=true;
if (co.txtSearchExcludeTags===undefined) co.txtSearchExcludeTags="excludeSearch";
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
config.macros.search.label+="\xa0"; // a little bit of space just because it looks better
//}}}
// // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
//{{{
config.formatters.push( {
name: "searchLink",
match: "\\[search\\[",
lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
prompt: "search for: '%0'",
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var label=lookaheadMatch[1];
var text=lookaheadMatch[2]||label;
var prompt=this.prompt.format([text]);
var btn=createTiddlyButton(w.output,label,prompt,
function(){story.search(this.getAttribute("searchText"))},"searchLink");
btn.setAttribute("searchText",text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
});
//}}}
// // incremental search uses option settings instead of hard-coded delay and minimum input values
//{{{
var fn=config.macros.search.onKeyPress;
fn=fn.toString().replace(/500/g, "config.options.txtIncrementalSearchDelay||500");
fn=fn.toString().replace(/> 2/g, ">=(config.options.txtIncrementalSearchMin||3)");
eval("config.macros.search.onKeyPress="+fn);
//}}}
// // REPLACE story.search() for option to "show search results in a list"
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
var co=config.options; // abbrev
var re=new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
if (config.options.chkSearchHighlight) highlightHack=re;
var matches = store.search(re,co.chkSearchByDate?"modified":"title","");
if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (co.chkSearchListTiddler) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (co.chkSearchList||co.chkSearchListTiddler)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
// // REPLACE store.search() for enhanced searching/sorting options
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var co=config.options; // abbrev
var tids = this.reverseLookup("tags",excludeTag,false,sortField);
var opened=[]; story.forEachTiddler(function(tid,elem){opened.push(tid);});
// eliminate tiddlers tagged with excluded tags
if (co.chkSearchExcludeTags&&co.txtSearchExcludeTags.length) {
var ex=co.txtSearchExcludeTags.readBracketedList();
var temp=[]; for(var t=tids.length-1; t>=0; t--)
if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
tids=temp;
}
// scan for matching titles first...
var results = [];
if (co.chkSearchTitles) {
for(var t=0; t<tids.length; t++) {
if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue;
if(tids[t].title.search(searchRegExp)!=-1) results.push(tids[t]);
}
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers) {
if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue;
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
}
// then scan for matching text, tags, or field data
for(var t=0; t<tids.length; t++) {
if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue;
if (co.chkSearchText && tids[t].text.search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchTags && tids[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchFields && store.forEachField!=undefined)
store.forEachField(tids[t],
function(tid,field,val) {
if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
},
true); // extended fields only
}
// then check for matching text in shadows
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers) {
if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue;
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// if not 'titles first', or sorting by modification date,
// re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function(a,b){
if(a[sortField]==b[sortField])return(0);else return(a[sortField]<b[sortField])?-1:+1;
}
if (!co.chkSearchTitlesFirst || co.chkSearchByDate) results.sort(bySortField);
return results;
}
//}}}
// // HIJACK core {{{<<search>>}}} macro to add "report" and "simple inline" output
//{{{
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
// if "report", use SearchOptionsPlugin report generator for inline output
if (params[1]&¶ms[1].substr(0,6)=="report") {
var keyword=params[0];
var options=params[1].split("=")[1]; // split "report=option+option+..."
var heading=params[2]?params[2].unescapeLineBreaks():"";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
} else if (params[1]) {
var keyword=params[0];
var heading=params[1]?params[1].unescapeLineBreaks():"";
var seperator=params[2]?params[2].unescapeLineBreaks():", ";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) {
var out=[];
for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
wikify(heading+out.join(seperator),place);
}
} else
config.macros.search.SOP_handler.apply(this,arguments);
};
//}}}
// // SearchResults panel handling
//{{{
setStylesheet(".searchResults { padding:1em 1em 0 1em; }","searchResults"); // matches std tiddler padding
config.macros.search.createPanel=function(text,matches,body) {
function getByClass(e,c) { var d=e.getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],c)) return d[i]; }
var panel=createTiddlyElement(null,"div","searchPanel","searchPanel");
this.renderPanel(panel,text,matches,body);
var oldpanel=document.getElementById("searchPanel");
if (!oldpanel) { // insert new panel just above tiddlers
var da=document.getElementById("displayArea");
da.insertBefore(panel,da.firstChild);
} else { // if panel exists
var oldwrap=getByClass(oldpanel,"searchResults");
var newwrap=getByClass(panel,"searchResults");
// if no prior content, just insert new content
if (!oldwrap) oldpanel.insertBefore(newwrap,null);
else { // swap search results content but leave containing panel intact
oldwrap.style.display='block'; // unfold wrapper if needed
var i=oldwrap.getElementsByTagName("input")[0]; // get input field
if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
oldpanel.replaceChild(newwrap,oldwrap);
panel=oldpanel; // use existing panel
}
}
this.showPanel(true,pos);
return panel;
}
config.macros.search.renderPanel=function(panel,text,matches,body) {
var wrap=createTiddlyElement(panel,"div",null,"searchResults");
wrap.onmouseover = function(e){ addClass(this,"selected"); }
wrap.onmouseout = function(e){ removeClass(this,"selected"); }
// create toolbar: "open all", "fold/unfold", "close"
var tb=createTiddlyElement(wrap,"div",null,"toolbar");
var b=createTiddlyButton(tb, "open all", "open all matching tiddlers", function() {
story.displayTiddlers(null,this.getAttribute("list").readBracketedList()); return false; },"button");
var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
b.setAttribute("list",list);
var b=createTiddlyButton(tb, "fold", "toggle display of search results", function() {
config.macros.search.foldPanel(this); return false; },"button");
var b=createTiddlyButton(tb, "close", "dismiss search results", function() {
config.macros.search.showPanel(false); return false; },"button");
createTiddlyText(createTiddlyElement(wrap,"div",null,"title"),"Search for: "+text); // title
wikify(body,createTiddlyElement(wrap,"div",null,"viewer")); // report
return panel;
}
config.macros.search.showPanel=function(show,pos) {
var panel=document.getElementById("searchPanel");
var i=panel.getElementsByTagName("input")[0];
i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
if (show && panel.style.display=="block") { // if shown, grab focus, restore cursor
if (i&&this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
return;
}
if(!config.options.chkAnimate) {
panel.style.display=show?"block":"none";
if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
} else {
var s=new Slider(panel,show,false,show?"none":"children");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
return panel;
}
config.macros.search.foldPanel=function(button) {
var d=document.getElementById("searchPanel").getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],"viewer")) var v=d[i]; if (!v) return;
var show=v.style.display=="none";
if(!config.options.chkAnimate)
v.style.display=show?"block":"none";
else {
var s=new Slider(v,show,false,"none");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
button.innerHTML=show?"fold":"unfold";
return false;
}
config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
if (keep===undefined) return this.keepReportInFocus;
this.keepReportInFocus=keep;
return keep
}
config.macros.search.getCursorPos=function(i) {
var s=0; var e=0; if (!i) return { start:s, end:e };
try {
if (i.setSelectionRange) // FF
{ s=i.selectionStart; e=i.selectionEnd; }
if (document.selection && document.selection.createRange) { // IE
var r=document.selection.createRange().duplicate();
var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
}
}catch(e){};
return { start:s, end:e };
}
config.macros.search.setCursorPos=function(i,pos) {
if (!i||!pos) return; var s=pos.start; var e=pos.end;
if (i.setSelectionRange) //FF
i.setSelectionRange(s,e);
if (i.createTextRange) // IE
{ var r=i.createTextRange(); r.collapse(true); r.moveStart("character",s); r.select(); }
}
//}}}
// // SearchResults report generation
// note: these functions are defined globally, so they can be more easily redefined to customize report formats//
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var cms=config.macros.search; // abbrev
var body=window.formatSearchResults(text,matches);
if (!config.options.chkSearchListTiddler) // show #searchResults panel
window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
else { // write [[SearchResults]] tiddler
var title=cms.reportTitle;
var who=config.options.txtUserName;
var when=new Date();
var tags="excludeLists excludeSearch temporary";
var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
tid.set(title,body,who,when,tags);
store.addTiddler(tid);
story.closeTiddler(title);
story.displayTiddler(null,title);
}
}
if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
var body='';
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
if (!opt) var opt="all";
var parts=opt.split("+");
for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
if (p=="again"||p=="all") body+=window.formatSearchResults_again(text,matches);
if (p=="summary"||p=="all") body+=window.formatSearchResults_summary(text,matches);
if (p=="list"||p=="all") body+=window.formatSearchResults_list(text,matches);
if (p=="buttons"||p=="all") body+=window.formatSearchResults_buttons(text,matches);
}
return body;
}
if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
var title=config.macros.search.reportTitle
var body='';
// search again
body+='{{span{<<search "'+text.replace(/"/g,'"')+'">> /%\n';
body+='%/<html><input type="button" value="search again"';
body+=' onclick="var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
body+=' config.macros.search.doSearch(t); return false;">';
body+=' <a href="javascript:;" onclick="';
body+=' var e=this.parentNode.nextSibling;';
body+=' var show=e.style.display!=\'block\';';
body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
body+=' return false;">options...</a>';
body+='</html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
body+=' %/<<option chkSearchTitles>>titles /%\n';
body+=' %/<<option chkSearchText>>text /%\n';
body+=' %/<<option chkSearchTags>>tags /%\n';
body+=' %/<<option chkSearchFields>>fields /%\n';
body+=' %/<<option chkSearchShadows>>shadows\n';
body+=' <<option chkCaseSensitiveSearch>>case-sensitive /%\n';
body+=' %/<<option chkRegExpSearch>>text patterns /%\n';
body+=' %/<<option chkSearchByDate>>sorted by date\n';
body+=' <<option chkSearchHighlight>> highlight matching text in displayed tiddlers\n';
body+=' <<option chkIncrementalSearch>>incremental key-by-key search: /%\n';
body+=' %/{{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, /%\n';
body+=' %/{{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay\n';
body+=' <<option chkSearchOpenTiddlers>> search only in tiddlers that are currently displayed\n';
body+=' <<option chkSearchExcludeTags>>exclude tiddlers tagged with:\n';
body+=' {{editor{<<option txtSearchExcludeTags>>}}}/%\n';
body+='%/@@}}}\n\n';
return body;
}
if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
// summary: nn tiddlers found matching '...', options used
var body='';
var co=config.options; // abbrev
var title=config.macros.search.reportTitle
var q = co.chkRegExpSearch ? "/" : "'";
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
var opts=[];
if (co.chkSearchTitles) opts.push("titles");
if (co.chkSearchText) opts.push("text");
if (co.chkSearchTags) opts.push("tags");
if (co.chkSearchFields) opts.push("fields");
if (co.chkSearchShadows) opts.push("shadows");
if (co.chkSearchOpenTiddlers) body+="^^//search limited to displayed tiddlers only//^^\n";
body+="~~ searched in "+opts.join(" + ")+"~~\n";
body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"^^ using ":"")
+(co.chkCaseSensitiveSearch?"case-sensitive ":"")
+(co.chkRegExpSearch?"pattern ":"")
+(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"matching^^\n":"");
return body;
}
if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
// bullet list of links to matching tiddlers
var body='';
var pattern=co.chkRegExpSearch?text:text.escapeRegExp();
var sensitive=co.chkCaseSensitiveSearch?"mg":"img";
var link='{{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="'
+'if(config.options.chkSearchHighlight)'
+' highlightHack=new RegExp(\x27'+pattern+'\x27,\x27'+sensitive+'\x27);'
+'story.displayTiddler(null,\x27%0\x27);'
+'highlightHack = null; return false;'
+'" title="%2">%1</a></html>}}}';
for(var t=0;t<matches.length;t++) {
body+="* ";
if (config.options.chkSearchByDate)
body+=matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" ";
var title=matches[t].title;
var fixup=title.replace(/'/g,"\\x27").replace(/"/g,"\\x22");
var tid=store.getTiddler(title);
var tip=tid?tid.getSubtitle():''; tip=tip.replace(/"/g,""");
body+=link.format([fixup,title,tip])+'\n';
}
return body;
}
if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
// embed buttons only if writing SearchResults to tiddler
if (!config.options.chkSearchListTiddler) return "";
// "open all" button
var title=config.macros.search.reportTitle;
var body="";
body+="@@diplay:block;<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"story.displayTiddlers(null,[";
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
// "discard SearchResults" button
body+="<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
body+="@@\n";
return body;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
store.notify(config.macros.search.reportTitle,true);
}
//}}}
/***
{{sectionTOC clear small floatright groupbox{Table of Contents:}}}
|Name|SectionLinksPlugin|
|Source|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Documentation|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|allow tiddler sections in TiddlyLinks to be used as anchor points|
This tweak extends the TiddlyLink and displayTiddler() processing so that section references in links can be used to auto-scroll to the indicated heading within a tiddler (i.e., the same 'anchor' behavior as {{{<a name="foo">}}} and {{{<a href="#foo">...</a>}}} when using HTML syntax).
!!!Usage
<<<
The TiddlyWiki core handling allows you to use the tiddler section syntax within the {{{<<tiddler>>}}} macro to //transclude// a subsection of one tiddler into another (e.g., {{{<<tiddler SomeTiddler##SomeSection>>}}}). However, if this syntax is used in a TiddlyLink (e.g., {{{[[SomeTiddler##SomeSection]]}}}), the core treates the entire reference as a link to a (non-existent) tiddler that includes the section reference in the tiddler title itself.
!!!!extended link syntax
This plugin modifies the core logic so that any {{{##SectionName}}} included in a tiddler link will be automatically removed //before// displaying the tiddler. Then, //after// the tiddler is rendered, the section reference is used to scroll (if needed) directly to that part of the tiddler so that the section heading appears at (or near) the top of the browser's display area.
!!!!"""<<sectionTOC>>""" macro
The plugin also adds a macro that generates a "Table of Contents"-style numbered-bullet list with links to all sections within the current tiddler. Simply place the following macro at the //end of the tiddler content// (or at least following all section headings):
{{{
<<sectionTOC>> or <<sectionTOC className>>
}}}
The macro must be placed at the end of the tiddler in order to locate the rendered section headings that precede it. By default, the macro's output is written directly in place of the embedded macro itself; however, as this would be displayed //following// the sections, it is normally not very useful by itself. To address this, you can embed a 'target element' at the desired output location within the tiddler content by using a //CSS class-wrapper// with any unique classname (default="sectionTOC"), like this:
{{{
{{sectionTOC{}}}
}}}
Then, when the {{{<<sectionTOC>>}}} macro is rendered, it will automatically find and write it's output into the indicated target element. In addition to the required //sectionTOC// classname, you can add any other CSS classes you want to the target element to apply extra styles. Also, the generated numbered list output will be inserted //following// any other wiki-formatted content you might include within the target element. For example, the following declaration has been embedded at the top of this plugin to create the "Table of Contents" display you see in the upper right corner of the rendered tiddler.
{{{
{{sectionTOC clear small floatright groupbox{Table of Contents:}}}
}}}
<<<
!!!Revisions
<<<
2009.01.18 [1.1.0] added {{{<<sectionTOC>>}}} macro to generate numbered-bullet links to sections of current tiddler
2009.01.06 [1.0.0] converted to stand-alone plugin
2008.10.14 [0.0.0] initial release (as [[CoreTweaks]] #784 - http://trac.tiddlywiki.org/ticket/784)
<<<
!!!Code
***/
//{{{
version.extensions.SectionLinksPlugin= {major: 1, minor: 1, revision: 0, date: new Date(2009,1,18)};
//}}}
/***
!!!!core hijacks
***/
//{{{
Story.prototype.scrollToSection = function(title,section) {
if (!title||!section) return; var t=this.getTiddler(title); if (!t) return null;
var elems=t.getElementsByTagName('*');
for (var i=0; i<elems.length; i++) { var e=elems[i];
if (!['H1','H2','H3','H4','H5'].contains(e.nodeName)) continue;
if (getPlainText(e).indexOf(section)!=-1) {
// if section heading is collapsed, click to expand it - see [[FoldHeadingsPlugin]]
if (hasClass(e,'foldable') && e.nextSibling.style.display=='none') e.onclick();
// scroll *after* tiddler animation
var delay=config.options.chkAnimate?config.animDuration+100:0;
setTimeout('window.scrollTo('+findPosX(e)+','+findPosY(e)+')',delay);
return e;
}
}
}
window.createTiddlyLink_sectionanchor=window.createTiddlyLink;
window.createTiddlyLink=function(place,title) {
var t=story.findContainingTiddler(place); var tid=t?t.getAttribute('tiddler'):'';
var parts=title.split(config.textPrimitives.sectionSeparator);
if (!parts[0].length) parts[0]=tid; // default to current tiddler for '##section' links
if (parts[1]) arguments[1]=parts[0]; // trim section from tiddler title
var btn=createTiddlyLink_sectionanchor.apply(this,arguments);
if (parts[1]) btn.setAttribute('section',parts[1]); // save section
return btn;
}
window.onClickTiddlerLink_sectionanchor=window.onClickTiddlerLink;
window.onClickTiddlerLink=function(ev) {
var e=ev||window.event; var target=resolveTarget(e); var title=null;
while (target!=null && title==null) {
title=target.getAttribute('tiddlyLink');
section=target.getAttribute('section');
target=target.parentNode;
}
var t=story.findContainingTiddler(target); var tid=t?t.getAttribute('tiddler'):'';
if (title!=tid||!section) onClickTiddlerLink_sectionanchor.apply(this,arguments); // avoid excess scrolling
story.scrollToSection(title,section);
return false;
}
Story.prototype.displayTiddler_sectionanchor=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var parts=title.split(config.textPrimitives.sectionSeparator);
if (parts[0].length && parts[1]) arguments[1]=parts[0]; // trim section from tiddler title
this.displayTiddler_sectionanchor.apply(this,arguments);
story.scrollToSection(parts[0],parts[1]);
}
config.formatterHelpers.isExternalLink_sectionanchor=config.formatterHelpers.isExternalLink;
config.formatterHelpers.isExternalLink=function(link) {
if (link.indexOf(config.textPrimitives.sectionSeparator)!=-1) return false;
return config.formatterHelpers.isExternalLink_sectionanchor.apply(this,arguments);
}
//}}}
/***
!!!!macro definition
***/
//{{{
config.macros.sectionTOC = {
targetClass: 'sectionTOC',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var out=[];
var targetClass=params[0]||this.targetClass;
var t=story.findContainingTiddler(place); if (!t) return;
var elems=t.getElementsByTagName("*");
var level=5; // topmost heading level
for (var i=0; i<elems.length; i++) {
var link="[["+getPlainText(elems[i])+"|##"+getPlainText(elems[i])+"]]";
switch(elems[i].nodeName) {
case "H1": out.push("#"+link); level=1; break;
case "H2": out.push("##"+link); level=level<2?level:2; break;
case "H3": out.push("###"+link); level=level<3?level:3; break;
case "H4": out.push("####"+link); level=level<4?level:4; break;
case "H5": out.push("#####"+link); level=level<5?level:5; break;
default: if (hasClass(elems[i],targetClass)) var target=elems[i];
}
}
// trim excess bullet levels
if (level>1) for (var i=0; i<out.length; i++) out[i]=out[i].substr(level-1);
// render numbered list
wikify(out.join("\n"),target||place);
}
}
//}}}
/***
!!!Invoke macro
{{{
<<sectionTOC>>
}}}
***/
// //<<sectionTOC>>
/%
|Name|SetTiddlerBackground|
|Source|http://www.TiddlyTools.com/#SetTiddlerBackground|
|Version|1.1.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|set tiddler background and font color CSS attributes|
usage:
<<tiddler SetTiddlerBackground with: bgstyle fgstyle matchtag class>>
where:
'bgstyle' and 'fgstyle' (optional, but specify at least one)
are CSS background style attributes (most often color values, e.g., #rgb or #rrggbb)
'matchtag' (optional)
is a tag value that allows selective control of tiddler background/foreground colors
'class' (optional)
is the class of the tiddler element to which the fgstyle/bgstyle will be applied (default is "viewer").
Use "title" to set the background of the tiddler's 'title' area instead of its 'viewer' area.
The bgstyle and fgstyle assignments are only performed if the tiddler has the matching tag (or if no matchtag value is specfied). In addition, to set just the background or the foreground color (but not both), you can use a dash ("-") as a placeholder value for whichever value you do NOT want to set. For example:
<<tiddler SetTiddlerBackground with: #F00 - urgent>>
sets the background color (but NOT the foreground color) to RED for only those tiddlers tagged with "urgent". Also, note that in that instead of using #RGB color definitions, you can also use CSS color keywords (i.e., "red", "yellow", "green") or *any* other valid CSS value that can be applied to the 'background' style attribute. For example, to use a background image for any tiddler tagged with "wallpaper", you can write:
<<tiddler SetTiddlerBackground with: url(images/bg.jpg) - wallpaper>>
You can use this script several times in a row to define a set of tag-to-color mappings, stored in a *single* convenient tiddler... first, create a tiddler (e.g. [[BackgroundColors]]) containing something like this:
<<tiddler SetTiddlerBackground with: red - urgent>>
<<tiddler SetTiddlerBackground with: yellow - active>>
<<tiddler SetTiddlerBackground with: green - done>>
To apply tag-based color mapping to any specific tiddler, just embed:
<<tiddler BackgroundColors>>
directly in that tiddler's content and set the appropriate tag to select the desired background color.
To apply tag-based color mapping to ALL tiddlers in your document without having to embed the <<tiddler BackgroundColors>> macro into each 'colorized' tiddler, add:
<span macro="tiddler BackgroundColors" style="display:none"></span>
in your [[ViewTemplate]]. Then, anytime you want to add another tag-to-color mapping, all you have to do is just edit the [[BackgroundColors]] tiddler and then start tagging the desired tiddlers accordingly.
%/<script>
if ("$1"!="$"+"1" && "$1"!="-") var bg="$1";
if ("$2"!="$"+"2" && "$2"!="-") var fg="$2";
if ("$3"!="$"+"3" && "$3"!="-") var tag="$3";
if ("$4"!="$"+"4" && "$4"!="-") var c="$4"; else var c="viewer";
var here=story.findContainingTiddler(place); if (!here) return;
var tiddler=store.getTiddler(here.getAttribute("tiddler"));
if (tag && (!tiddler||!tiddler.isTagged(tag))) return;
if (c=="tiddler") target=here;
else {
var children=here.getElementsByTagName("*");
for (var i=0; i<children.length; i++)
if (hasClass(children[i],c)) { var target=children[i]; break; }
}
if (!target) return;
if (bg) target.style.background=bg;
if (fg) target.style.color=fg;
</script>
/***
|Name|SetUserNamePlugin|
|Source|http://www.TiddlyTools.com/#SetUserNamePlugin|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|prompt for TiddlyWiki username|
!!!!!Usage
<<<
{{{
<<setUserName force>>
}}}
This macro prompts for a new username if the default username ("YourName") is currently set. Use optional 'force' keyword to trigger a prompt even if username has already been set.
If you are using the default (shadow) EditTemplate definition, it will be updated to invoke this macro, via the following template syntax:
{{{
<span macro='setUserName'></span>
}}}
so that whenever a user attempts to edit/create a tiddler AND have not yet entered a username, they will be automatically prompted to enter a new username. If you are using a customized EditTemplate, you will need to edit it yourself to add the above.
<<<
!!!!!Revisions
<<<
2006.12.01 [1.0.0] initial release - converted from SetUserName inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.SetUserNamePlugin= {major: 1, minor: 0, revision: 0, date: new Date(2006,12,1)};
config.macros.setUserName = {
msg: "Please set your username",
handler: function(place,macroName,params) {
// only prompt when needed or forced
var force=params[0]&¶ms[0].toLowerCase()=="force";
if (!force && (readOnly || config.options.txtUserName!="YourName")) return;
var opt="txtUserName";
var who=prompt(this.msg,config.options[opt]);
if (!who||!who.trim().length) return; // cancelled by user
config.options[opt]=who;
saveOptionCookie(opt);
config.macros.option.propagateOption(opt,"value",config.options[opt],"input");
}
}
// add trigger to default shadow EditTemplate (custom templates: add this by hand)
config.shadowTiddlers.EditTemplate+="<span macro='setUserName'></span>";
//}}}
/%
|Name|ShowAllByTags|
|Source|http://www.TiddlyTools.com/#ShowAllByTags|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|for each tag, show a numbered list of all tiddlers with that tag|
Usage:
<<tiddler ShowAllByTags with: "tag tag tag">>
where
"tag tag tag" (optional)
quoted, space-separated, bracketed list of tags to **exclude** from the display
!Revisions
2008.08.04 [1.1.0] added optional parameter to exclude specified tags
!end Revisions
%/<script>
var ex=[];
if ("$1"!="$"+"1") ex="$1".readBracketedList();
var tags = store.getTags();
if(tags.length == 0) return "no tags in document";
var out="";
for(var t=0; t<tags.length; t++) {
if (ex.contains(tags[t][0])) continue;
out+="*[["+tags[t][0]+"]] ("+tags[t][1]+")"+"\n";
var tids=store.getTaggedTiddlers(tags[t][0]);
for (i=0; i<tids.length; i++) out+="##[["+tids[i].title+"]]\n";
}
return out;
</script>
/%
|Name|BlankScript|
|Source|http://www.TiddlyTools.com/#ShowDocumentInfo|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show current TiddlyWiki version, document timestamp and tiddler info|
%/<script label="[i] - Show TiddlyWiki document info..." title="Show TiddlyWiki version, filedate and tiddler summary">
if (window.version) {
var ver=version.major+'.'+version.minor+'.'+version.revision;
var tids=window.store.getTiddlers('modified').reverse();
var plugins=window.store.getTaggedTiddlers('systemConfig','modified').reverse();
var msg='TiddlyWiki version: '+ver
+'\nDocument modified: '+document.lastModified
+'\nLast tiddler changed: '+tids[0].title
+'\n\nThere are a total of '+tids.length+' tiddlers,'
+' including '+plugins.length+' plugins:\n\n';
msg+=plugins.map(function(t){
return t.modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss')+' | '+t.title; }).join('\n');
alert(msg);
}
return false;
</script>
/%
|Name|ShowLocalDirectory|
|Source|http://www.TiddlyTools.com/#ShowLocalDirectory|
|Version|1.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|display local filesystem directory listings|
usage: <<tiddler ShowLocalDirectory>> or <<tiddler ShowLocalDirectory with: localpath format>>
where:
"localpath" uses system-specific file naming conventions (or keyword "here" for the
current document directory). Note: for Windows filesystem, use doubled backslashes and
enclose the entire path in square brackets (e.g., [[C:\\temp\\foo]])
and
"format" determines the type of output produced:
"plain"
show fully-qualified path/filenames AS-IS, without any additional formatting.
"list"
show fully-qualified path/filenames using formatted "PrettyLinks", so that the
local system-specific filename can be *displayed* while linking to a valid
system-independent "file:" URL for browser navigation.
"directory" (default)
show header followed by a formatted table, containing PrettyLinks for
filenames, filesizes (in bytes), and modification dates, plus a summary
footer reporting the total file and byte counts.
%/<script>
window.getCurrentFolder=function() {
var h=document.location.href;
return getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
}
window.getParentFolder=function(cwd) {
var lastchar=cwd.substr(cwd.length-1,1);
if (lastchar=="/" || lastchar=="\\") cwd=cwd.substr(0,cwd.length-1);
var pos=cwd.lastIndexOf("/"); if (pos==-1) pos=cwd.lastIndexOf("\\");
return pos!=-1?cwd.substr(0,pos+1):null;
}
window.askForFolder=function(cwd) {
if (config.browser.isIE) {
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.InitialDir=cwd.replace(/\//g,"\\");
s.FileName=''; s.Filter='All files|*.*|'; s.FilterIndex=1;
var path=s.showOpen()?s.FileName.substr(0,s.FileName.lastIndexOf("\\")+1):null;
}
catch(e) { var path=prompt("Enter a directory path:",cwd.replace(/\//g,"\\")); }
} else { // FireFox
if(!window.Components) return;
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert(e.description?e.description:e.toString()); return; }
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, "Select a folder", nsIFilePicker.modeGetFolder);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
try { thispath.initWithPath(cwd.replace(/\\/g,"/")); }
catch(e) { thispath.initWithPath(getLocalPath(decodeURIComponent(document.location.href.substr(0,document.location.href.lastIndexOf("/")+1)))); }
picker.displayDirectory=thispath;
picker.appendFilters(nsIFilePicker.filterAll); picker.defaultString=''; picker.defaultExtension='';
var path=picker.show()!=nsIFilePicker.returnCancel?picker.file.persistentDescriptor:null;
}
return path;
}
window.getFileList=function(cwd) { // returns array of file info (path,name,size,isFolder,url,modified)
var files=[];
if (config.browser.isIE) {
cwd=cwd.replace(/\//g,"\\");
var fso = new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FolderExists(cwd)) return [];
var dir=fso.GetFolder(cwd);
for(var f=new Enumerator(dir.SubFolders); !f.atEnd(); f.moveNext())
files.push({ path:f.item().path, name:f.item().name, size:f.item().size,
url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path),
modified:new Date(f.item().DateLastModified).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext())
files.push({ path:f.item().path, name:f.item().name, size:f.item().size,
url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path),
modified:new Date(f.item().DateLastModified).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
} else { // FF
if(!window.Components) return;
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert(e.description?e.description:e.toString()); return null; }
var file=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(cwd); } catch(e) { return []; }
if (!file.exists() || !file.isDirectory()) { return []; }
var folder=file.directoryEntries;
while (folder.hasMoreElements()) {
var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
if (f instanceof Components.interfaces.nsILocalFile)
files.push({path:f.path, name:f.leafName, size:f.fileSize,
isFolder:f.isDirectory(), url:"file:///"+f.path.replace(/\\/g,"/"),
modified:new Date(f.lastModifiedTime).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
}
}
return files;
}
window.renderDirectoryList=function(target,cwd,fmt) {
var files=getFileList(cwd);
if (!files||!files.length) { // maybe relative directory... fixup and try again...
var fixup=getCurrentFolder()+cwd;
var files=getFileList(fixup);
if (!files||!files.length) {
var out="{{errorButton{error reading "+cwd+"}}}";
removeChildren(target); wikify(out,target);
target.style.display="block";
return false;
} else cwd=fixup;
}
if (!cwd||!cwd.length) cwd=config.options.txtLocalDirectory;
if (!cwd||!cwd.length) cwd=getCurrentFolder();
config.options.txtLocalDirectory=cwd;
var header=""; var item=""; var folderitem=""; var folderscript=""; var footer="";
switch (fmt) {
case "plain": item=folderitem="<nowiki>%0</nowiki>\n"; break;
case "list": item=folderitem="[[%1|file:///%0]]\n"; break;
default:
var header="Index of {{{%0}}}\n^^(as of %1)^^\n|filename | size |modified|h\n";
var item="|[[%1|%2]] | %3 |%4|\n";
var folderscript='<'+'script label="%1" title="open %1...">';
folderscript+=' var t=place.parentNode.parentNode.parentNode.parentNode.parentNode;';
folderscript+=' window.renderDirectoryList(t,"%0","");';
folderscript+=' return false;';
folderscript+=' </'+'script>';
var folderitem='|'+folderscript+' | |%4|\n';
var footer="|>|>|>| !Total of %0 bytes in %1 files |f\n|borderless sortable|k\n";
var showDirectory=true;
break;
}
var out=header.format([cwd,new Date().toLocaleString()]);
if (showDirectory) {
var p=getParentFolder(cwd);
if (p) files.unshift({path:p, name:"(parent folder)", size:0, isFolder:true, url:"file:///"+p.replace(/\\/g,"/"),
modified:new Date().formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
}
var total=0;
for (var i=0; i<files.length; i++) {
var line=(files[i].isFolder?folderitem:item).format([files[i].path,files[i].name,files[i].url,files[i].size,files[i].modified]);
if (showDirectory) line=line.replace(/\\/g,"\\\\"); // fixup for PC-style file paths embedded in 'folderscript'
if (!files[i].isFolder) total+=files[i].size;
out+=line;
}
out+=footer.format([total,files.length]);
removeChildren(target); wikify(out,target); target.style.display="block";
// make table sortable (code adapted from [[TableSortingPlugin]]
var c = config.tableSorting; if (!c) return; // no sortable tables
var table = target.getElementsByTagName("table")[0];
var x=null, rev, thead=table.getElementsByTagName('thead')[0], headers=thead.rows[thead.rows.length-1].cells;
for (var j=0; j<headers.length; j++){
var h = headers[j];
if (hasClass(h,"nosort")) continue;
h.setAttribute("index",j);
h.onclick = function(){c.sortTable(this); return false;};
h.ondblclick = stopEvent;
if(h.getElementsByTagName("span").length == 0) createTiddlyElement(h,"span",null,"hidden",c.uarrow);
if(!x && hasClass(h,"autosort")) { x = j; rev = hasClass(h,"reverse"); }
}
if(x) c.sortTable(headers[x],rev);
}
</script>{{hidden small{
<script label="select a folder...">
var path=askForFolder(getCurrentFolder());
if (path) window.renderDirectoryList(place.parentNode.nextSibling,path,"");
return false;
</script> | <script label="use document location...">
window.renderDirectoryList(place.parentNode.nextSibling,getCurrentFolder(),"");
return false;
</script> | <script label="refresh list...">
window.renderDirectoryList(place.parentNode.nextSibling,config.options.txtLocalDirectory,"");
return false;
</script>
----
}}}@@display:none;/% content automatically replaced %/@@<script>
var cwd=getCurrentFolder(); // default to current folder
if ("$1"=="$"+"1") place.lastChild.previousSibling.style.display="block"; // show 'select a folder' command
else if ("$1".toLowerCase()=="here") cwd=getCurrentFolder(); // "here" = use document directory
else cwd="$1"; // use path param as specified
window.renderDirectoryList(place.lastChild,cwd,"$2");
</script>
/%
|Name|ShowObject|
|Source|http://www.TiddlyTools.com/#ShowObject|
|Version|1.3.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements<br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type||
|Requires||
|Overrides||
|Description|display TiddlyWiki runtime objects|
Usage:
<<tiddler ShowObject with: "function, object or DOM element">>
Examples:
<<tiddler ShowObject with: "main">>
<<tiddler ShowObject with: "config.messages">>
<<tiddler ShowObject with: "mainMenu">>
%/<<tiddler ShowObject##format with: $1 {{
if (document.getElementById('$1')) /* DOM ELEMENT */
var out=function(t){
var t2=''; var indent=''; var level=0;
for (var i=0;i<t.length;i++) { var c=t.substr(i,1);
if (c=='<') {
if (t.substr(i+1,1)=='/') indent=indent.substr(0,indent.length-2);
t2+='\n'+indent;
if (t.substr(i+1,1)!='/'
&& t.substr(i+1,3)!='br>'
&& t.substr(i+1,2)!='p>'
&& t.substr(i+1,3)!='hr>') indent+=' ';
}
t2+=c;
if (c=='\n') t2+=indent;
if (c=='>' && t.substr(i+1,1)!='<') t2+='\n'+indent;
}
return t2;
}(document.getElementById('$1').innerHTML);
else if (typeof($1)=='function') /* FUNCTION */
var out=function(t){
return t;
}(($1).toSource?($1).toSource(true):($1).toString());
else if (typeof($1)!='undefined') { /* OBJECT */
var out=function(obj,indent) {
var indent=indent||'';
switch(typeof obj){
case 'function':
return 'function(...) {...}';
/* return obj.toSource?obj.toSource(true):obj.toString(); */
break;
case 'string':
return '"'+obj+'"';
break;
case 'object':
var out=[];
for(var p in obj)
out.push(indent+' '+p+': '+arguments.callee(obj[p],indent+' '));
return '{\n'+out.join(',\n')+'\n'+indent+'}';
break;
default:
return obj.toString();
break;
}
}($1);
} else var out=' ???'; /* UNKNOWN */
out;
}}>>/%
!format
{{{
$1 =$2
}}}
!end
%/
/%
|Name|ShowPopup|
|Source|http://www.TiddlyTools.com/#ShowPopup|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|transcluded html|
|Requires||
|Overrides||
|Description|display tiddler content in a TW popup|
usage: <<tiddler ShowPopup with: TiddlerName label tooltip buttonClass width popupClass>>
%/<html><a href="javascript:;" class="$4" title="$3" onclick="var p=Popup.create(this); if (!p) return; var t=store.getTiddlerText('$1'); if (!t) return; p.className+=' $6'; var d=createTiddlyElement(p,'div'); d.style.whiteSpace='normal'; d.style.width='$5'; d.style.padding='2px'; wikify(t,d); Popup.show(p,false); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return(false);">$2</a></html>
/%
|Name|ShowReferences|
|Source|http://www.TiddlyTools.com/#ShowReferences|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|format and display references (aka, backlinks) for the current tiddler|
Usage:
<<tiddler ShowReferences with: "format">> (in tiddler content)
<span macro='tiddler ShowReferences with: "format"'></span> (in ViewTemplate)
Where "format" specifies the output for each reference link, and should use a %0 marker to indicate where the actual tiddler link text should appear. Here are some examples...
"[[%0]]\n" (one per line)
"[[%0]] " (space-separated)
"* [[%0]]\n" (bullet items)
"# [[%0]]\n" (numbered items)
%/<script>
var fmt="[[%0]]\n"; if ("$1"!="$"+"1") fmt="$1"; // use default or custom format
var here=story.findContainingTiddler(place); if (!here) return;
var title=here.getAttribute("tiddler");
var references = store.getReferringTiddlers(title);
var out='';
for(var r=0; r<references.length; r++)
if(references[r].title != title && !references[r].tags.contains("excludeLists"))
out+=fmt.format([references[r].title]);
return out;
</script>
/%
|Name|ShowSlices|
|Source|http://www.TiddlyTools.com/#ShowSlices|
|Version|0.5.0|
|Author|Eric Shulman - ELS Design Studios|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1.3|
|Type|script|
|Requires|InlineJavascriptPlugin, NestedSlidersPlugin|
|Overrides||
|Description|view values for all tiddler slices|
%/<<tiddler HideTiddlerTags>>{{smallform small{<html><hide linebreaks><form><!--
--><select name="tidlist" size=1 style="width:40%"
onchange="var target=this.form.parentNode.nextSibling.nextSibling; removeChildren(target); wikify(this.value,target);">
<option value="">select a tiddler...</option>
</select><input type="text" name="re" style="width:50%" title="tiddler slice pattern (store.slicesRE)"><!--
--><input type="button" name="set" value="set" style="width:9%" title="set slice pattern and re-scan for slices"
onclick="store.slicesRE=new RegExp(this.form.re.value,'gm');
var tid=story.findContainingTiddler(this).getAttribute('tiddler');
story.refreshTiddler(tid,null,true);"></form></html><script>
// initialize form field
var form=place.lastChild.getElementsByTagName("form")[0];
var re=store.slicesRE.toString();
re=re.substring(1,re.length-3); // strip delimiters/flags from re
form.re.value=re;
// define slice filter (only report indicated slices)
var filter={ Name:1, Source:1, Version:1, Author:1, License:1,
CoreVersion:1, Type:1, Requires:1, Overrides:1, Description:1 };
var filter=null; // show all defined slices - remove this line to use pre-defined filter
var allslices=[]; // will be filled with names of all slices from all tiddlers
var slicefmt='\'\'"""%0"""\'\'\n %1\n'; // indented format
var slicefmt='| %0|%1|\n'; // table format - remove this line to use indented format
var slicefmt='\'\'%0=\'\'%1\n'; // var=val format - remove this line to use indented format
var tiddlers=store.getTiddlers("title");
for (var i=0; i<tiddlers.length; i++) {
var tid=tiddlers[i];
var slices=store.calcAllSlices(tid.title);
var sliceout=[]; var slicecount=0;
for (var s in filter?filter:slices) {
sliceout.push(slicefmt.format([s,slices[s]?slices[s]:'-']));
if (slices[s] || !filter) slicecount++;
if (slices[s]) allslices.pushUnique("{{{"+s+"}}}");
}
if (slicecount) form.tidlist.options[form.tidlist.length]=new Option(tid.title+"("+slicecount+")","<<<\n"+sliceout.join('')+"<<<\n",false,false);
}
var out="{{small wrap{There are %0 slice names used in this document. +++[view list...][hide list...]>{{small{\n%1\n}}}===\n"
return out.format([allslices.length,"#"+allslices.join('\n#')]);
</script>@@display:block;/%replace with dynamic content%/@@}}}
/%
|Name|ShowTabsForTags|
|Source|http://www.TiddlyTools.com/#ShowTabsForTags|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|automatically generate a tabbed display for tiddlers with a specified set of tags|
Usage:
<<tiddler ShowTabsForTags with: "tag tag ...">>
where:
"tag tag ..." is a space-separated list of tag values, ALL of which
must be present on the tiddlers that are to be displayed.
%/{{left wrap{<script>
var tags="$1".readBracketedList(); // get tags list from param
if ("$1"=="$"+"1") { // if no tags were specified, then ASK for tags...
var response=prompt("enter tag(s) to match:","faq");
if (!response) return "no tags specified"; // cancelled by user
var tags=response.readBracketedList();
}
// get tiddlers with a least one matching tag, in date order (newest first)
// and, for each tiddler that matches ALL tags, add macro params to output...
var out="";
var tids=store.getTaggedTiddlers(tags[0],'modified').reverse();
for (var t=0; t<tids.length; t++)
if (tids[t].tags.containsAll(tags)) out+='[[%0 ]] "view %0" [[%0]]'.format([tids[t].title]);
// if any tiddlers matched, output the <<tabs>> macro...
if (out.length) return "<<tabs tabTabsForTags "+out+">>";
// otherwise, output a message with popups for each specified tag...
return "There are no tiddlers tagged with <<tag "+tags.join(">> and <<tag ")+">>";
</script>}}}
/%
|Name|ShowTiddlerStatistics|
|Source|http://www.TiddlyTools.com/#ShowTiddlerStatistics|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|display document summary / tiddler stats (newest, oldest, largest, smallest, etc.)|
%/<script>
var tiddlers=store.getTiddlers("modified","excludeLists");
var last=tiddlers[tiddlers.length-1];
var total=0;
for (var i=0; i<tiddlers.length; i++) {
total+=tiddlers[i].text.length;
if (!oldest || tiddlers[i].created<oldest)
{ var oldest=tiddlers[i].created; var oldtid=tiddlers[i]; }
if (!newest || tiddlers[i].created>newest)
{ var newest=tiddlers[i].created; var newtid=tiddlers[i]; }
if (!smallest || tiddlers[i].text.length<smallest)
{ var smallest=tiddlers[i].text.length; var smalltid=tiddlers[i]; }
if (!largest || tiddlers[i].text.length>largest)
{ var largest=tiddlers[i].text.length; var largetid=tiddlers[i]; }
}
var out="{{nowrap{";
out+="There are [["+tiddlers.length+" tiddlers|SideBarTabsListbox]], including";
out+="''<<tag systemConfig [["+store.getTaggedTiddlers("systemConfig").length+" plugins]]>>''and";
out+="''<<tag script [["+store.getTaggedTiddlers("script").length+" scripts]]>>''";
out+="{{fine{("+total+" bytes)}}}\n";
out+="|borderless|k\n";
out+="| last change: |[["+last.title+"]]";
out+=" {{fine{(updated "+last.modified.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}|\n";
out+="| newest: |[["+newtid.title+"]]";
out+=" {{fine{(created "+newtid.created.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}|\n";
out+="| oldest: |[["+oldtid.title+"]]";
out+=" {{fine{(created "+oldtid.created.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}|\n";
out+="| smallest: |[["+smalltid.title+"]]";
out+=" {{fine{("+smalltid.text.length+" bytes)}}}|\n";
out+="| largest: |[["+largetid.title+"]]";
out+=" {{fine{("+largetid.text.length+" bytes)}}}|\n";
out+="}}}";
return(out);
</script>
/%
|Name|ShowUserName|
|Source|http://www.TiddlyTools.com/#ShowUserName|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|Displays current username, Click for prompt box to change name|
%//%
usage: <<tiddler ShowUserName>>
%/<script label="username">
var opt="txtUserName";
var who=prompt("Please set your username",config.options[opt]);
if (!who||!who.trim().length) return false;
config.options[opt]=who;
saveOptionCookie(opt);
var tid=story.findContainingTiddler(place);
if (tid) story.refreshTiddler(tid.getAttribute("tiddler"),null,true); // sync containing tiddler
config.macros.option.propagateOption(opt,"value",config.options[opt],"input");
return false;
</script><script>
place.lastChild.title="click to change your username";
place.lastChild.innerHTML=config.options.txtUserName;
</script>
{{button{goto}}}<<gotoTiddler search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveAs "label:new starter..." "prompt:create new starter document" open baseline>><<saveChanges>><<saveAs>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
+++(contents){{button{[contents »]}}}...<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>===
<br>''//^^Open Source Exploration and Innovation ^^//''
{{small{ReiberLabs}}} AnimationDemonstrations
http://www.tiddlytools.com/
/***
|Name|SliceGridPlugin|
|Source|http://www.TiddlyTools.com/#SliceGridPlugin|
|Documentation|http://www.TiddlyTools.com/#SliceGridPluginInfo|
|Version|1.0.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1.3|
|Type|plugin|
|Requires||
|Overrides||
|Description|Generate a "slice grid" table to get an instant 'birds-eye' overview of your entire document|
Rows are tiddlers, columns are slice names. If a tiddler has a value defined for a given slice, that grid cell is colored. Move the mouse over a grid cell to view the value for that tiddler slice. To keep the grid display from getting very wide, the slice names used as column headings are not initially displayed. ''Click directly above the column to show/hide that heading'', or toggle all column headings at once by clicking the {{{>>>}}} symbol in the upper-left corner of the grid display.
!!!!!Documentation
>see [[SliceGridPluginInfo]]
!!!!!Revisions
<<<
2008.08.15 [1.0.3] add brackets around row headings when wikifying so that non-wikiword tiddler titles are linked
2008.08.13 [1.0.2] wikify row headings (in addition to slice value cells) whenever 'wikify' param is used
|please see [[SliceGridPluginInfo]] for additional revision details|
2007.01.30 [0.0.1] started
<<<
!!!!!Code
***/
//{{{
version.extensions.SliceGridPlugin= {major: 1, minor: 0, revision: 3, date: new Date(2008,8,15)};
config.macros.sliceGrid= {
sizeSliceName: "TiddlerSize", // shadow slice used for retrieving and showing tiddler size as a grid column
noSlicesMsg: "\n|~SliceGrid: there are no slices to display|\n",
handler:
function(place,macroName,params) {
this.slicesRE=/(?:^\|\s*[\'\/]*~?(\w+)\:?[\'\/]*\s*\|\s*(.*?)\s*\|$)/gm;
this.wikify=false; // wiki-syntax in slices
this.edit=false; // 'click-to-edit' feature
this.verbose=false; // debugging/performance feedback messages
this.alltiddlers=false; // rows for all tiddlers (even if no slices)
this.inline=false; // slice value in cell (instead of mouseover)
this.headers=false; // column headers
this.cliplength=0; // limit inline display text length (0=no limit)
this.slices=[]; // slices to show (columns)
var tablewidth="auto"; // default CSS for table width
var p=params.shift();
while (p) {
if (p.substr(0,6).toUpperCase()=="WIDTH:")
tablewidth=p.substr(6);
else if (p.substr(0,5).toUpperCase()=="TAGS:") {
if (p.substr(5,1)=="@") { // get tags from tiddler
var tid=store.getTiddler(p.substr(6));
if (p.substr(6)=="here") {
var here=story.findContainingTiddler(place);
if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
}
if (tid) var tags=tid.tags;
}
else if (p.substr(5,1)=="+") { // get tags from tiddler contents
var tid=store.getTiddler(p.substr(6));
if (p.substr(6)=="here") {
var here=story.findContainingTiddler(place);
if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
}
if (tid)
{ var tags=tid.text.readBracketedList(); }
}
else var tags=p.substr(5).readBracketedList();
}
else if (p.substr(0,7).toUpperCase()=="SLICES:") {
if (p.substr(7,1)=="@") { // get slices from tiddler
var tid=p.substr(8);
var tiddler=store.getTiddler(tid);
if (tid=="here") {
var here=story.findContainingTiddler(place);
if (here) var tiddler=store.getTiddler(here.getAttribute("tiddler"));
}
if (tiddler) {
var slices=tiddler.getSlices(tiddler.title); for (var s in slices) this.slices.push(s);
}
}
else if (p.substr(7,1)=="+") { // get slices from tiddler contents
var tid=p.substr(8);
var tiddler=store.getTiddler(tid);
if (tid=="here") {
var here=story.findContainingTiddler(place);
if (here) var tiddler=store.getTiddler(here.getAttribute("tiddler"));
}
if (tiddler)
{ this.slices=tiddler.text.readBracketedList(); }
}
else this.slices=p.substr(7).readBracketedList();
}
else switch (p.toUpperCase()) {
case "EDIT":
this.edit=true && !readOnly; break; // no editing allowed if readOnly mode
case "WIKIFY":
this.wikify=true; break;
case "VERBOSE":
this.verbose=true; break;
case "ALL":
this.alltiddlers=true; break;
case "INLINE":
this.inline=true; this.headers=true; break; // default to show headers with inline grid
default:
if (!isNaN(p)) { this.cliplength=p; break; }
else displayMessage("unrecognized parameter: "+p);
}
p=params.shift();
}
// get rows and columns
var rows=[]; var cols=[]; var total=0;
var tiddlers=store.getTiddlers("title","excludeLists"); // get all tiddlers (except hidden ones)
if (tags && tags.length) for (t=0;t<tiddlers.length;t++) // filter out tiddlers with no matching tags
if (!tiddlers[t].tags.containsAny(tags)) { tiddlers.splice(t,1); t--; } // remove non-matching tiddler
for (i=0; i<tiddlers.length; i++) {
var slices=this.getSlices(tiddlers[i].title);
var count=0; for (var s in slices) { cols.pushUnique(s); count++; total++;}
if (count || this.alltiddlers) rows.push(tiddlers[i].title); // only show rows for tiddlers with slices
}
if (!cols.length) { wikify(this.noSlicesMsg,place); return; }
if (this.verbose) displayMessage("Found %0 slices using %1 slice names in %2 tiddlers".format([total, cols.length,rows.length]));
// get optional list of slices to show
if (this.slices.length) var cols=this.slices;
// generate HTML table
var out="";
out+="<html><table cellpadding='0' cellspacing='0' style='border:0;border-collapse:collapse;width:"+tablewidth+"'>";
// column headings
out+="<tr style='border:0;'><td style='text-align:right;border:0'>";
out+="<a href='javascript:;' style='font-size:80%;'";
out+=" title='show all column headings'";
out+=" onclick='return config.macros.sliceGrid.toggleAllColumns(this,event,"+(this.headers?"true":"false")+")'>";
out+=this.headers?"<<<":">>>";
out+="</a>";
out+="</td>";
for (var i=0;i<cols.length;i++) {
out+="<td style='text-align:center;cursor:pointer;border:0;padding-left:2px;padding-right:2px;' ";
out+=" title='show/hide column heading' ";
out+=" onclick='return config.macros.sliceGrid.toggleColumn(this,event)'>";
out+="<span style='display:"+(this.headers?"block":"none")+"'>"+cols[i]+"</span>";
out+="</td>";
}
out+="</tr>";
for (var i=0;i<rows.length;i++) {
var tiddlersrc=rows[i].replace(/"/g,""");
out +="<tr style='border:0'>";
// row heading
out +="<td style='text-align:right;border:0;padding-right:2px;white-space:nowrap;"+(this.inline?'width:1%':'')+";'>";
out +="<a href='javascript:;' tid=\""+tiddlersrc+"\" class='slicegrid_heading' ";
out +=" onclick='story.displayTiddler(this,this.getAttribute(\"tid\"));return false'>"+tiddlersrc+"</a>";
out +="</td>";
var slices=this.getSlices(rows[i]);
for (var j=0;j<cols.length;j++) {
var val=slices[cols[j]]; if (!val) val="";
var bgcolor=val.length?"#999":"transparent";
var content=" ";
if (val.length && this.inline) {
content=val.htmlEncode();
if (this.cliplength) content=val.substr(0,this.cliplength)+(val.length>this.cliplength?"...":"");
bgcolor="transparent";
}
out+="<td style='background-color:"+bgcolor+";border:1px solid;"+(!this.inline?'width:1em;':'');
if (this.inline && cols[j]==this.sizeSliceName) out+="text-align:right !important;"; // right align tiddler size pseudo-slice
out+="'";
if (this.edit && !(cols[j]==this.sizeSliceName)) { // add edit-in-place, except for tiddler size pseudo-slice
var onclick="return config.macros.sliceGrid.editSlice(this,event,this.getAttribute(\"tid\"),\""+cols[j]+"\","+(this.inline?"true":"false")+")";
out+=" tid=\""+tiddlersrc+"\" onclick='"+onclick+"'";
}
out+=" title=\""+tiddlersrc+"::"+cols[j]+(!this.inline?("="+val):"")+"\"";
out+="><span class='slicegrid_content'>"+content+"</span></td>";
}
out+="</tr>";
}
out+="</table>";
out+="</html>";
var span=createTiddlyElement(place,"span")
span.innerHTML=out;
if (this.wikify) {
// find all TD's in table and replace span content with wikified elements
var tds=span.getElementsByTagName("td");
for (var t=0; t<tds.length; t++) {
var content=tds[t].firstChild;
if (hasClass(content,"slicegrid_heading")||hasClass(content,"slicegrid_content")) {
var txt=getPlainText(content);
if (hasClass(content,"slicegrid_heading")) txt="[["+txt+"]]";
removeChildren(content);
wikify(txt,content);
}
}
}
},
toggleAllColumns:
function(here,event,defOpen) {
if (here.expanded==undefined) here.expanded=defOpen;
var ex=here.expanded=!here.expanded;
here.innerHTML=ex?"<<<":">>>";
here.title=ex?'hide all column headings':'show all column headings';
var cells=here.parentNode.parentNode.getElementsByTagName("td");
for (i=1; i<cells.length; i++) cells[i].firstChild.style.display=ex?"inline":"none";
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
},
toggleColumn:
function(here,event) {
here.firstChild.style.display=(here.firstChild.style.display=="none")?"inline":"none";
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
},
editSlice:
function(here,event,tid,slice,inline) {
// replace prompt box with edit field that is displayed until onBlur
if (here.editing) return false; // already editing... don't re-init
var onkeyup='if (event.keyCode==13)'; // SAVE and END
onkeyup+=' { config.macros.sliceGrid.setSlice(this.getAttribute(\"tid\"),"'+slice+'",this.value); this.blur(); }';
onkeyup+='else if (event.keyCode==27)'; // END without saving
onkeyup+=' { this.blur(); }';
var onblur="var tid=this.getAttribute(\"tid\"); var slice=\""+slice+"\"; var currval=config.macros.sliceGrid.getSlice(tid,slice); ";
onblur+="if (this.value!=currval && confirm(tid+\"::\"+slice+\" has changed... save value?\"))";
onblur+=" { config.macros.sliceGrid.setSlice(tid,slice,this.value); currval=this.value; }";
onblur+="var target=this.parentNode;";
onblur+="target.editing=false;";
onblur+="target.style.backgroundColor=target.getAttribute(\"savedColor\");";
onblur+="target.style.padding=target.getAttribute(\"savedPadding\");";
onblur+="target.style.width=target.getAttribute(\"savedWidth\");";
onblur+="if (config.macros.sliceGrid.wikify) { removeChildren(target); wikify(currval,target); }";
onblur+="else target.innerHTML="+(inline?'currval':'\" \"')+";";
var style="font-size:1em;font-family:inherit;width:95%;margin:0px;padding:1px 0px 1px 3px;border:0;";
var title=tid+"::"+slice+" (ENTER=submit, ESC=cancel)";
here.setAttribute("savedWidth",here.style.width); if (!inline) here.style.width="99%";
here.setAttribute("savedPadding",here.style.padding); here.style.padding="0px";
here.setAttribute("savedColor",here.style.backgroundColor); here.style.backgroundColor="#fff";
here.innerHTML="<input type='text' tid=\""+tid.replace(/"/g,""")+"\" onkeyup='"+onkeyup+"' onblur='"+onblur+"' style='"+style+"' title='"+title+"'>";
here.firstChild.value=config.macros.sliceGrid.getSlice(tid,slice); // avoids conflicts with nested quoting in HTML
here.firstChild.focus();
here.firstChild.select();
here.editing=true;
event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return(false);
},
getSlice:
function(tid,slice) {
var slices=config.macros.sliceGrid.getSlices(tid);
return slices[slice]?slices[slice]:"";
},
getSlices:
function(tid) {
var slices = {};
var text = store.getTiddlerText(tid,"");
slices[this.sizeSliceName]=text.length.toString(); // 'shadow slice' for displaying tiddler size
this.slicesRE.lastIndex = 0;
do {
var m = this.slicesRE.exec(text);
if (m) { if (m[1]) slices[m[1]] = m[2]; else slices[m[3]] = m[4]; }
} while(m);
return slices;
},
setSlice:
function(tid,slice,val) {
var oldval=this.getSlice(tid,slice);
if (val==oldval) return false; // value is unchanged... do nothing
// find slice within tiddler text
var tiddler=store.getTiddler(tid);
this.slicesRE.lastIndex = 0;
var lastIndex=0;
do {
var m=this.slicesRE.exec(tiddler.text);
if (m && (m[1]==slice||m[3]==slice)) break;
if (m) lastIndex=this.slicesRE.lastIndex;
} while(m);
if (m) { // if matching slice was found
if (oldval.length) { // replace old value with new value
var pos=RegExp.lastMatch.indexOf(oldval);
var newSlice=RegExp.lastMatch.substr(0,pos)+val+RegExp.lastMatch.substr(pos+oldval.length);
} else // insert new value into empty slice
var newSlice=RegExp.lastMatch.substr(0,RegExp.lastMatch.length-1)+val+"|";
var newText=RegExp.leftContext+newSlice+RegExp.rightContext;
} else { // create new slice following last slice (or at start of tiddler if no slices)
var newSlice="|"+slice+"|"+val+"|\n";
var newText=newSlice+tiddler.text
if (lastIndex) var newText=tiddler.text.substr(0,lastIndex+1)+newSlice+tiddler.text.substr(lastIndex+1);
}
// write tiddler contents
var user=config.options.txtUserName; var mod=new Date();
if (config.options.chkForceMinorUpdate)
{ var user=tiddler.modifier; var mod=tiddler.modified; }
store.saveTiddler(tid,tid,newText,user,mod,tiddler.tags,tiddler.fields);
displayMessage(tid+"::"+slice+" has been "+(m?"updated":"created"));
return(false);
}
};
//}}}
/***
|Name|SnapshotPlugin|
|Source|http://www.TiddlyTools.com/#SnapshotPlugin|
|Documentation|http://www.TiddlyTools.com/#SnapshotPluginInfo|
|Version|1.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|save or print HTML+CSS image of rendered document content|
|Status|ALPHA - DO NOT DISTRIBUTE|
This plugin provides a macro as well as tiddler toolbar commands to create a file or browser window containing the //rendered// CSS-and-HTML that is currently being displayed for selected elements of the current document.
!!!!!Documentation
>see [[SnapshotPluginInfo]]
!!!!!Configuration
<<<
<<option chkSnapshotHTMLOnly>> output HTML only (omit CSS)
<<<
!!!!!Revisions
<<<
2008.05.16 [1.1.1] added try..catch around addEvent/removeEvent calls to avoid error in Opera
2008.04.28 [1.1.0] removed 'viewerHTML' from 'ask' droplist and replaced with toggle for "output HTML only". Removed 'noCSS' parameter and replaced with config.options.chkSnapshotHTMLOnly global option. Added "select a tiddler..." to 'ask' droplist
2008.04.24 [1.0.1] in saveSnap(), convert output from Unicode to UTF before passing to saveFile(). Fixes "unknown name" error in IE's file.Write() function. Added viewerHTML to 'ask' droplist.
2008.04.21 [1.0.0] initial release - derived from [[NewDocumentPlugin]] with many improvements, including: "ask for ID" using droplist of available DOM elements, use "<base href=...>" for correctly resolving image references, wrap 'viewer only' output in class="tiddler viewer" for proper application of inherited CSS styles, snapshotSave and snapshotPrint tiddler toolbar command definitions, and more...
<<<
!!!!!Code
***/
//{{{
version.extensions.SnapshotPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,5,16)};
if (config.options.chkSnapshotHTMLOnly===undefined) config.options.chkSnapshotHTMLOnly=false;
config.macros.snapshot = {
snapLabel: "save a snapshot",
printLabel: "print a snapshot",
snapPrompt: "save an HTML image of rendered content",
printPrompt: "print an HTML image of rendered content",
hereID: "here",
viewerID: "viewer",
storyID: "story",
allID: "all",
askID: "ask",
askTiddlerID: "askTiddler",
askDOMID: "askDOM",
askMsg: "select an element...",
hereItem: "tiddler: '%0'",
viewerItem: "tiddler: '%0' (content only)",
storyItem: "story column",
allItem: "entire document",
tiddlerItem: "select a tiddler...",
IDItem: "select a DOM element by ID...",
HTMLItem: "[%0] output HTML only (omit CSS)",
fileMsg: "select or enter a target path/filename",
defaultFilename: "snapshot.html",
okmsg: "snapshot written to %0",
failmsg: "An error occurred while creating %0",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var printing=params[0]&¶ms[0]=="print"; if (printing) params.shift();
params = paramString.parseParams("anon",null,true,false,false);
var id=getParam(params,"id","here");
var label=getParam(params,"label",printing?this.printLabel:this.snapLabel);
var prompt=getParam(params,"prompt",printing?this.printPrompt:this.snapPrompt);
var btn=createTiddlyButton(place,label,prompt, function(ev){
this.setAttribute("snapID",this.getAttribute("startID"));
config.macros.snapshot.go(this,ev)
});
btn.setAttribute("startID",id);
btn.setAttribute("snapID",id);
btn.setAttribute("printing",printing?"true":"false");
btn.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
},
go: function(here,ev) {
var cms=config.macros.snapshot; // abbreviation
var id=here.getAttribute("snapID");
var printing=here.getAttribute("printing")=="true";
var HTMLOnly=here.getAttribute("HTMLOnly")=="true";
if (id==cms.askID||id==cms.askTiddlerID||id==cms.askDOMID) {
cms.askForID(here,ev);
} else {
// get element
if (id==cms.storyID) id="tiddlerDisplay";
if (id==cms.allID) id="contentWrapper";
var snapElem=document.getElementById(id);
if (id==cms.hereID || id==cms.viewerID)
var snapElem=story.findContainingTiddler(here);
if (snapElem && hasClass(snapElem,"tiddler") && (id==cms.viewerID || HTMLOnly)) {
// find viewer class element within tiddler element
var nodes=snapElem.getElementsByTagName("*");
for (var i=0; i<nodes.length; i++)
if (hasClass(nodes[i],"viewer")) { snapElem=nodes[i]; break; }
}
if (!snapElem) // not in a tiddler or no viewer element or unknown ID
{ e.cancelBubble=true; if(e.stopPropagation)e.stopPropagation(); return(false); }
// write or print snapshot
var out=cms.getsnap(snapElem,id,printing,HTMLOnly);
if (printing) cms.printsnap(out); else cms.savesnap(out);
}
return false;
},
askForID: function(here,ev) {
var ev = ev ? ev : window.event;
var cms=config.macros.snapshot; // abbreviation
var id=here.getAttribute("snapID");
var indent='\xa0\xa0\xa0\xa0';
var p=Popup.create(here); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=here;
if (id==cms.askID) {
s.options[s.length]=new Option(cms.askMsg,cms.askID);
var tid=story.findContainingTiddler(here);
if(tid) {
var title=tid.getAttribute("tiddler");
if (here.getAttribute("HTMLOnly")!="true")
s.options[s.length]=new Option(indent+cms.hereItem.format([title]),cms.hereID);
s.options[s.length]=new Option(indent+cms.viewerItem.format([title]),cms.viewerID);
}
s.options[s.length]=new Option(indent+cms.tiddlerItem,cms.askTiddlerID);
s.options[s.length]=new Option(indent+cms.IDItem,cms.askDOMID);
s.options[s.length]=new Option(indent+cms.storyItem,"tiddlerDisplay");
s.options[s.length]=new Option(indent+cms.allItem,"contentWrapper");
}
if (id==cms.askDOMID) {
s.options[s.length]=new Option(cms.IDItem,cms.askDOMID);
var elems=document.getElementsByTagName("*");
var ids=[];
for (var i=0;i<elems.length;i++)
if (elems[i].id.length && elems[i].className!="animationContainer")
ids.push(elems[i].id);
ids.sort();
for (var i=0;i<ids.length;i++) s.options[s.length]=new Option(indent+ids[i],ids[i]);
}
if (id==cms.askTiddlerID) {
s.options[s.length]=new Option(cms.tiddlerItem,cms.askTiddlerID);
var elems=document.getElementsByTagName("div");
var ids=[];
for (var i=0;i<elems.length;i++) { var id=elems[i].id;
if (id.length && id.substr(0,story.idPrefix.length)==story.idPrefix && id!="tiddlerDisplay")
ids.push(id);
}
ids.sort();
for (var i=0;i<ids.length;i++) s.options[s.length]=new Option(indent+ids[i].substr(story.idPrefix.length),ids[i]);
}
s.options[s.length]=new Option(cms.HTMLItem.format([here.getAttribute("HTMLOnly")=="true"?"\u221a":"_"]),cms.HTMLItem);
s.onchange=function(ev){
var ev = ev ? ev : window.event;
var cms=config.macros.snapshot; // abbreviation
var here=this.button;
if (this.value==cms.HTMLItem) {
config.options.chkSnapshotHTMLOnly=!config.options.chkSnapshotHTMLOnly;
here.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
config.macros.option.propagateOption("chkSnapshotHTMLOnly","checked",
config.options.chkSnapshotHTMLOnly,"input");
} else
here.setAttribute("snapID",this.value);
config.macros.snapshot.go(here,ev);
return false;
};
Popup.show(p,false);
ev.cancelBubble=true;
if(ev.stopPropagation)ev.stopPropagation();
return false;
},
getpath: function() {
// get current path
var path=getLocalPath(window.location.href);
var slashpos=path.lastIndexOf("/");
if (slashpos==-1) slashpos=path.lastIndexOf("\\");
if (slashpos!=-1) path=path.substr(0,slashpos+1); // trim filename
return path;
},
getsnap: function(snapElem,id,printing,HTMLOnly) {
var cms=config.macros.snapshot; // abbreviation
var out="";
out+="<html><head>\n";
if (printing)
out+='<base href="file:///'+cms.getpath().replace(/\\/g,'/')+'"></base>\n';
if (!HTMLOnly) {
var styles=document.getElementsByTagName("style");
for(var i=0; i < styles.length; i++) {
out+="<style>\n";
out+="/* stylesheet="+styles[i].getAttribute("id")+" */\n";
out+=styles[i].innerHTML+"\n\n";
out+="</style>\n";
}
}
out+="</head><body>\n\n<div"+(id==cms.viewerID?" class='tiddler viewer'>":">");
out+=snapElem.innerHTML;
out+="</div>\n\n</body>\n";
out+="</html>";
return out;
},
printsnap: function(out) {
var win=window.open("","_blank","");
win.document.open();
win.document.writeln(out);
win.document.close();
win.focus(); // bring to front
win.print(); // trigger print dialog
},
savesnap: function(out) {
var cms=config.macros.snapshot; // abbreviation
// make sure we are local
if (window.location.protocol!="file:")
{ alert(config.messages.notFileUrlError); return; }
var target=cms.askForFilename(cms.fileMsg,cms.getpath(),cms.defaultFilename);
if (!target) return; // cancelled by user
// if specified file does not include a path, assemble fully qualified path and filename
var slashpos=target.lastIndexOf("/");
if (slashpos==-1) slashpos=target.lastIndexOf("\\");
if (slashpos==-1) target=target+cms.defaultFilename;
var link="file:///"+target.replace(/\\/g,'/'); // link for message text
var ok=saveFile(target,convertUnicodeToUTF8(out));
var msg=ok?cms.okmsg.format([target]):cms.failmsg.format([target]);
clearMessage(); displayMessage(msg,link);
},
askForFilename: function(msg,path,file) {
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XP/Vista only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
}
return result;
}
};
//}}}
// // TOOLBAR DEFINITIONS
//{{{
config.commands.snapshotSave = {
text: "snap",
tooltip: config.macros.snapshot.snapPrompt,
handler: function(ev,src,title) {
src.setAttribute("snapID","ask");
src.setAttribute("printing","false");
src.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
config.macros.snapshot.go(src,ev);
return false;
}
};
config.commands.snapshotPrint = {
text: "print",
tooltip: config.macros.snapshot.printPrompt,
handler: function(ev,src,title) {
src.setAttribute("snapID","ask");
src.setAttribute("printing","true");
src.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
config.macros.snapshot.go(src,ev);
return false;
}
};
//}}}
// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
// if click is in a sticky popup, ignore it so popup will remain visible
var e = ev ? ev : window.event; var target = resolveTarget(e);
var p=target; while (p) {
if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
else p=p.parentNode;
}
if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
Popup.onDocumentClick(ev);
return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/***
|Name|SnapshotPluginInfo|
|Source|http://www.TiddlyTools.com/#SnapshotPlugin|
|Documentation|http://www.TiddlyTools.com/#SnapshotPluginInfo|
|Version|1.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for SnapshotPlugin|
This plugin provides a macro as well as tiddler toolbar commands that creates a file or opens a new browser window containing the //rendered// HTML and CSS style definitions that are being displayed for selected elements of the current document.
!!!!!Usage:
<<<
As a macro embedded in tiddler content:
{{{
<<snapshot print label:text prompt:text id:elementID|here|viewer|story|all|ask>
}}}
where:
*''print'' //(optional)//<br>when present, causes the snapshot output to be directed to a new browser tab/window instead of saving it to a file. In addition, the print dialog for that tab/window is automatically invoked.
*''label'' //(optional)//<br>is the text to be displayed for the command link generated by the macro
*''prompt'' //(optional)//<br>is the 'tool tip' message displayed when you mouseover the command link
*''id:...'' //(optional)//<br>specifies the document element to be captured, and can be one of:
**''elementID''<br>is a specific DOM element ID, such as "displayArea", "mainMenu", "contentWrapper", etc.
**''here''<br>the containing tiddler in which the macro (or toolbar command) occurs, including the tiddler title and subtitle (date/time/author) information.
**''viewer''<br>same as ''here'', but omits the tiddler title, subtitle and toolbar elements (i.e., it includes //only// the content of the tiddler)
**''story''<br>selects all currently displayed tiddlers (i.e., the 'story column')
**''all''<br>selects the entire document contents, including page header, main menu and sidebar displays
**''ask''<br>when the snapshot command link is clicked, a droplist is displayed so you can choose from several pre-defined elements: "current tiddler", "story column", or "entire document", or "DOM element ID..." When DOM element ID is chosen, the droplist is refreshed to show the individual ID's for all currently rendered DOM elements (at least, the ones that have ID's). For any given DOM element ID, only the portions of the document that are contained //within// the specified DOM element will be transcribed to the resulting snapshot or print output.
//''NOTE: when no parameters are specified, the macro creates a snapshot file using the containing tiddler as the default element.'' (e.g., equivalent to {{{<<snapshot id:here>>}}}//
The snapshot/print functions can also be embedded as tiddler toolbar commands in [[ViewTemplate]]:
{{{
<span class='toolbar' macro='toolbar snapshotSave'></span>
<span class='toolbar' macro='toolbar snapshotPrint'></span>
}}}
* when invoked via toolbar commands, the "id:ask" option is automatically applied, and a droplist of elements to choose from is displayed.
Please note that, although the snapshot/print that is created using the HTML+CSS of the displayed content, ''there is NO javascript code'' written into the snapshot. As a result, the snapshot only ''reproduces the //appearance// of the displayed content, allowing you to //view// or //print// the result'', but does not permit you to interact with it in other ways.
For example, even simple processing (such as mouseover highlighting) will not function from the snapshot. You can't click a TiddlyLink to open other tiddlers, because A) there is no code that handles the click and B) there is no underlying 'storeArea' (and core code) to retrieve and render anything! You also can't use ANY command links, since these also require javascript code (and the core) to operate.
<<<
!!!!!Examples:
<<<
{{{<<snapshot>>}}}: <<snapshot>>
{{{<<snapshot id:mainMenu>>}}}: <<snapshot id:mainMenu>>
{{{<<snapshot print id:story>>}}}: <<snapshot print id:story>>
{{{<<snapshot print id:ask>>}}}: <<snapshot print id:ask>>
{{{<<snapshot print noCSS id:viewer>>}}}: <<snapshot print noCSS id:viewer>>
<<<
!!!!!Configuration
<<<
<<option chkSnapshotHTMLOnly>> output HTML only (omit CSS)
<<<
!!!!!Revisions
<<<
2008.05.16 [1.1.1] added try..catch around addEvent/removeEvent calls to avoid error in Opera
2008.04.28 [1.1.0] removed 'viewerHTML' from 'ask' droplist and replaced with toggle for "output HTML only". Removed 'noCSS' parameter and replaced with config.options.chkSnapshotHTMLOnly global option. Added "select a tiddler..." to 'ask' droplist
2008.04.24 [1.0.1] in saveSnap(), convert output from Unicode to UTF before passing to saveFile(). Fixes "unknown name" error in IE's file.Write() function.
2008.04.21 [1.0.0] initial release - derived from [[NewDocumentPlugin]] with many improvements, including: "ask for ID" using droplist of available DOM elements, use "<base href=...>" for correctly resolving image references, wrap 'viewer only' output in class="tiddler viewer" for proper application of inherited CSS styles, snapshotSave and snapshotPrint tiddler toolbar command definitions, and more...
<<<
<script>
var tid=story.findContainingTiddler(place);
if (tid) tid.style.border="1px solid "+store.getTiddlerSlice("ColorPalette","SecondaryMid");
</script>
/%
|Name|SplitTiddler|
|Source|http://www.TiddlyTools.com/#SplitTiddler|
|Version|1.5.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|use text pattern to split tiddler contents into separate tiddlers|
%/{{small smallform{<html><hide linebreaks><form>
<table class='borderless' style='border:0;margin:0;'><tr style='border:0'>
<td style='width:33%;border:0;'>
source tiddler:<br>
<input name='src' value='enter tiddler title' onfocus='this.select()' style='width:98%'
title='title of tiddler containing source material'>
</td><td style='width:33%;border:0;'>
item separator:<br>
<input name='sep' value='\n----\n' onfocus='this.select()' style='width:98%'
title='character sequence used to separate source items'>
</td><td style='width:33%;border:0;'>
add tags:<br>
<input name='tags' value='' style='width:98%'
title='space-separated tags for target tiddlers'>
</td></tr><tr style='border:0'>
<td colspan='3' style='border:0'>
<table style='width:100%;border:0;margin:0;'><tr style='border:0'>
<td style='border:0'>
target title format:<br>
<input type='text' name='titleformat' value='%0 - %1' style='width:99%';
title='format for new tiddler titles'>
</td><td style='border:0;'>
output format:<br>
<input name='format' value='%4' style='width:99%'
title='format for target tiddler content'>
</td></tr></table>
<div style='text-align:center;font-size:80%;font-style:italic;padding-bottom:.3em'>
%0=source title, %1=first line of item, %2=first word of item, %3=item number, %4=item content
</div>
</td>
</tr><tr style='border:0'>
<td colspan='2' style='text-align:left;border:0;'>
<input type='checkbox' name='warn' checked>confirm overwrites
<input type='checkbox' name='show'>show tiddlers when done
</td><td style='text-align:right;border:0;'>
<input type='button' value='split tiddler' style='width:100%;' onclick="
var f=this.form;
if (f.src.value==f.src.defaultValue)
{ displayMessage('Please enter a tiddler title'); f.src.focus(); return false; }
var start=new Date().getTime();
var src=store.getTiddlerText(f.src.value);
if (!src) { displayMessage('\u0027'+f.src.value+'\u0027 not found'); return false; }
var tags=f.tags.value;
var pieces=src.split(f.sep.value.unescapeLineBreaks());
var parts=[]; for (var i=0; i<pieces.length; i++) if (pieces[i].length) parts.push(pieces[i]);
var msg='Found '+parts.length+' items in \u0027'+f.src.value+'\u0027. Press OK to proceed';
if (!confirm(msg)) return false;
if (parts.length) store.suspendNotifications();
var tids=[];
var warn=f.warn.checked;
var fmt=f.format.value.unescapeLineBreaks();
var pad=parts.length.toString().length;
var srctitle=f.src.value;
for (var p=0; p<parts.length; p++) {
var txt=parts[p];
var lines=txt.split('\n');
var firstline=lines[0];
var firstword=firstline.split(' ')[0];
var itemnum=String.zeroPad(p+1,pad);
if (f.titleformat.value.indexOf('%2')!=-1) /* if firstword is in title */
{ var words=lines[0].split(' '); words.shift(); lines[0]=words.join(' '); var discard=!words.length; }
if (f.titleformat.value.indexOf('%1')!=-1 || discard) /* if firstline is in title */
lines.shift();
var content=lines.join('\n');
var tid=f.titleformat.value.format([srctitle,firstline,firstword,itemnum,content]);
tid=tid.replace(/[\[\]\|]/g,'_');
if (warn && store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid]))) continue;
txt=fmt.format([srctitle,firstline,firstword,itemnum,content]);
store.saveTiddler(tid,tid,txt,config.options.txtUserName,new Date(),tags,{});
tids.push(tid);
}
var elapsed=(new Date().getTime()-start)/1000;
if (parts.length) store.resumeNotifications();
if (tids.length) {
store.notifyAll();
if (f.show.checked) story.displayTiddlers(story.findContainingTiddler(this),tids);
displayMessage('created '+tids.length+' target tiddlers in '+elapsed+' seconds');
}
">
</td></tr></table>
</form></html>}}}
<script>
if(!(addClass instanceof Function) || !(removeClass instanceof Function)) return;
place.onmouseover = function(e){ addClass(this,"selected"); }
place.onmouseout = function(e){ removeClass(this,"selected"); }
</script>/%
%/{{center{
{{mouseover{{{floatleft{<<tiddler ToggleLeftSidebar>>}}}{{floatright{<<tiddler ToggleRightSidebar>>}}}}}}{{smallform fine{<<unsavedChanges panel>>}}}
}}}
/*{{{*/
[[Jash.css]]
[[StyleSheetShortcuts]]
.searchResults .button {margin:0em 0.20em; padding:0em 0.20em;}
.button { border:0 }
.searchButton { color:[[ColorPalette::PrimaryDark]] }
.breadCrumbs .tiddlyLink,
.breadCrumbs .tiddlyLinkExisting,
.breadCrumbs .button,
.breadCrumbs a { color:[[ColorPalette::PrimaryPale]]; }
#mainMenu .tiddlyLink,
#mainMenu .tiddlyLinkExisting,
#mainMenu .button,
#mainMenu a { color:[[ColorPalette::SecondaryMid]]; }
#sidebar { background-color: [[ColorPalette::TertiaryDark]]; }
#sidebarOptions { margin: 0em 0em 0em 0em; border:0 }
.headerShadow { padding-top:.5em }
body { background: [[ColorPalette::TertiaryDark]]; color: [[ColorPalette::PrimaryDark]];}
#displayArea { margin:1em 15.5em 1em 12.5em; }
#tiddlerDisplay {border: 1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::PrimaryPale]]; color:[[ColorPalette::Foreground]]; -webkit-border-radius:.5em; -moz-border-radius:.5em; padding: .3em }
.tiddler {border: 2px solid [[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; margin: 1em .5em 1em .5em; -webkit-border-radius:.5em; -moz-border-radius:.5em; padding: .3em }
.toolbar { float:right; white-space:nowrap; }
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]]; -webkit-border-radius:.5em; -moz-border-radius:.5em;}
#sidebarTabs .button {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions .button {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarTabs .tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::SecondaryPale]];
border-left:1px solid [[ColorPalette::SecondaryLight]];
border-top:1px solid [[ColorPalette::SecondaryLight]];
border-right:1px solid [[ColorPalette::SecondaryLight]];
}
#sidebarTabs .tabUnselected {color:[[ColorPalette::SecondaryPale]]; background:[[ColorPalette::SecondaryMid]];}
#sidebarTabs .tabContents {color:[[ColorPalette::SecondaryDark]]; background:[[ColorPalette::SecondaryPale]]; border:1px solid [[ColorPalette::SecondaryLight]];}
#sidebarTabs .tabContents .button {border:0;}
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|CSS|
|Requires||
|Overrides||
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|
These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.justify
{ display:block;text-align:justify; }
.indent
{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
{ float:left; }
.floatright
{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
{ vertical-align:bottom; }
.clear
{ clear:both; }
.wrap
{ white-space:normal; }
.nowrap
{ white-space:nowrap; }
.hidden
{ display:none; }
.show
{ display:inline !important; }
.span
{ display:span; }
.block
{ display:block; }
.relative
{ position:relative; }
.absolute
{ position:absolute; }
/* font sizes */
.big
{ font-size:14pt;line-height:120% }
.medium
{ font-size:12pt;line-height:120% }
.normal
{ font-size:9pt;line-height:120% }
.small
{ font-size:8pt;line-height:120% }
.fine
{ font-size:7pt;line-height:120% }
.tiny
{ font-size:6pt;line-height:120% }
.larger
{ font-size:120%; }
.smaller
{ font-size:80%; }
/* font styles */
.bold
{ font-weight:bold; }
.italic
{ font-style:italic; }
.underline
{ text-decoration:underline; }
/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }
/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
column-count:4; column-gap:1em; column-width:25%; /* Opera */
}
/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */
/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
{ width:100%; }
/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }
/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }
/* grouped content */
.outline
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox code
{ color:#333 !important; }
.borderleft
{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }
/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }
/* compact form */
.smallform
{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
{ font-size:8pt; }
/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }
/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }
/* text colors */
.white { color:#fff !important }
.gray { color:#999 !important }
.black { color:#000 !important }
.red { color:#f66 !important }
.green { color:#0c0 !important }
.blue { color:#99f !important }
/* rollover highlighting */
.mouseover
{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
{color:[[ColorPalette::PrimaryDark]] !important;}
/* rollover zoom text */
.zoomover
{ font-size:80% !important; }
.selected .zoomover
{ font-size:100% !important; }
/* [[ColorPalette]] text colors */
.Background { color:[[ColorPalette::Background]]; }
.Foreground { color:[[ColorPalette::Foreground]]; }
.PrimaryPale { color:[[ColorPalette::PrimaryPale]]; }
.PrimaryLight { color:[[ColorPalette::PrimaryLight]]; }
.PrimaryMid { color:[[ColorPalette::PrimaryMid]]; }
.PrimaryDark { color:[[ColorPalette::PrimaryDark]]; }
.SecondaryPale { color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight { color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid { color:[[ColorPalette::SecondaryMid]]; }
.SecondaryDark { color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale { color:[[ColorPalette::TertiaryPale]]; }
.TertiaryLight { color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid { color:[[ColorPalette::TertiaryMid]]; }
.TertiaryDark { color:[[ColorPalette::TertiaryDark]]; }
.Error { color:[[ColorPalette::Error]]; }
/* [[ColorPalette]] background colors */
.BGBackground { background-color:[[ColorPalette::Background]]; }
.BGForeground { background-color:[[ColorPalette::Foreground]]; }
.BGPrimaryPale { background-color:[[ColorPalette::PrimaryPale]]; }
.BGPrimaryLight { background-color:[[ColorPalette::PrimaryLight]]; }
.BGPrimaryMid { background-color:[[ColorPalette::PrimaryMid]]; }
.BGPrimaryDark { background-color:[[ColorPalette::PrimaryDark]]; }
.BGSecondaryPale { background-color:[[ColorPalette::SecondaryPale]]; }
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]]; }
.BGSecondaryMid { background-color:[[ColorPalette::SecondaryMid]]; }
.BGSecondaryDark { background-color:[[ColorPalette::SecondaryDark]]; }
.BGTertiaryPale { background-color:[[ColorPalette::TertiaryPale]]; }
.BGTertiaryLight { background-color:[[ColorPalette::TertiaryLight]]; }
.BGTertiaryMid { background-color:[[ColorPalette::TertiaryMid]]; }
.BGTertiaryDark { background-color:[[ColorPalette::TertiaryDark]]; }
.BGError { background-color:[[ColorPalette::Error]]; }
/*}}}*/
/***
|Name|SystemInfoPlugin|
|Source|http://www.TiddlyTools.com/#SystemInfoPlugin|
|Version|1.7.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|view system internal data and settings|
~TidIDE (//prounounced "Tie Dyed"//) - ''Tid''dlyWiki ''I''ntegrated ''D''evelopment ''E''nvironment - tools for ~TiddlyWiki authors and editors.
You can use the {{{<<systemInfo>>}}} control panel to view a variety of system internal data and functions, and view/modify ''all'' of ~TiddlyWiki's internal config.option.* settings. NOTE: Non-default config.options are stored in cookies and are retrieved whenever the TW document is loaded into a browser; however, ''core TW functions and custom-defined plugins can explicitly ignore or reset any locally-stored cookie values and use their own, internally-defined values'' instead. As a result, changes to these may be completely ignored, or may only have an effect during the current TW document "session" (i.e., until the TW document is reloaded), even though a persistent cookie value has been saved.
!!!!!Usage/Example
<<<
{{{<<systemInfo>>}}}
{{smallform{<<systemInfo>>}}}
<<<
!!!!!Revisions
<<<
''2007.10.31 [1.7.1]'' code reduction: when filling globals droplist, instead of using a large, static "global exclusion list", simply skip global *functions*, while still listing all other global properties, including key TW internal objects such as "config".
''2007.09.09 [1.7.0]'' split from TidIDEPlugin
|please see [[TidIDEPluginInfo]] for additional revision details|
''2006.04.15 [0.5.0]'' Initial ALPHA release. Converted from inline script.
<<<
!!!!!Code
***/
//{{{
version.extensions.SystemInfoPlugin= {major: 1, minor: 7, revision: 1, date: new Date(2006,10,31)};
config.shadowTiddlers.SystemInfo="<<systemInfo>>";
config.macros.systemInfo = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var span=createTiddlyElement(place,"span")
span.innerHTML=this.html;
this.getsys(span.getElementsByTagName("form")[0]); // initialize form
},
getsys: function(f) {
f.sysview.value="";
// OPTIONS
while (f.sys_opts.options.length > 1) { f.sys_opts.options[1]=null; } // clear list
f.config_view.value=""; // clear edit field
var cookies = { };
if (document.cookie != "") {
var p = document.cookie.split("; ");
for (var i=0; i < p.length; i++) {
var pos=p[i].indexOf("=");
if (pos==-1)
cookies[p[i]]="";
else
cookies[p[i].substr(0,pos)]=unescape(p[i].slice(pos+1));
}
}
var c=1;
var opt=new Array(); for (var i in config.options) opt.push(i); opt.sort();
for(var i=0; i<opt.length; i++) {
if ((opt[i].substr(0,3)=="txt")||(opt[i].substr(0,3)=="chk")) {
var txt = (opt[i].substr(0,3)=="chk"?("["+(config.options[opt[i]]?"x":"_")+"] "):"")+opt[i]+(cookies[opt[i]]?" (cookie)":"");
var val = config.options[opt[i]];
f.sys_opts.options[c++]=new Option(txt,val,false,false);
}
}
// STYLESHEETS
while (f.sys_styles.options.length > 1) { f.sys_styles.options[1]=null; } // clear list
var c=1;
var styles=document.getElementsByTagName("style");
for(var i=0; i < styles.length; i++) {
var id=styles[i].getAttribute("id"); if (!id) id="(default)";
var txt=id;
var val="/* stylesheet:"+txt+" */\n"+styles[i].innerHTML;
f.sys_styles.options[c++]=new Option(txt,val,false,false);
}
// SHADOWS
while (f.sys_shadows.options.length > 1) { f.sys_shadows.options[1]=null; } // clear list
var c=1;
for(var s in config.shadowTiddlers) f.sys_shadows.options[c++]=new Option(s,config.shadowTiddlers[s],false,false);
// NOTIFICATIONS
while (f.sys_notify.options.length > 1) { f.sys_notify.options[1]=null; } // clear list
var c=1;
for (var i=0; i<store.namedNotifications.length; i++) {
var n = store.namedNotifications[i];
var fn = n.notify.toString();
fn = fn.substring(fn.indexOf("function ")+9,fn.indexOf("{")-1);
var txt=(n.name?n.name:"any change")+"="+fn;
var val="/* notify: "+txt+" */\n"+n.notify.toString();
f.sys_notify.options[c++]=new Option(txt,val,false,false);
}
// MACROS
while (f.sys_macros.options.length > 1) { f.sys_macros.options[1]=null; } // clear list
var c=1;
var macros=new Array(); for (var m in config.macros) macros.push(m); macros.sort();
for(var i=0; i < macros.length; i++)
f.sys_macros.options[c++]=new Option(macros[i],this.showObject(config.macros[macros[i]]),false,false);
// COMMANDS
while (f.sys_commands.options.length > 1) { f.sys_commands.options[1]=null; } // clear list
var c=1;
for(var cmd in config.commands)
f.sys_commands.options[c++]=new Option(cmd,this.showObject(config.commands[cmd]),false,false);
// FORMATTERS
while (f.sys_formatters.options.length > 1) { f.sys_formatters.options[1]=null; } // clear list
var c=1;
for(var i=0; i < config.formatters.length; i++)
f.sys_formatters.options[c++]=new Option(config.formatters[i].name,this.showObject(config.formatters[i]),false,false);
// PARAMIFIERS
while (f.sys_params.options.length > 1) { f.sys_params.options[1]=null; } // clear list
var c=1;
for(var param in config.paramifiers)
f.sys_params.options[c++]=new Option(param,this.showObject(config.paramifiers[param]),false,false);
// GLOBALS
//global variables and functions (excluding most DOM and ~TiddyWiki core definitions)://
while (f.sys_globals.options.length > 1) { f.sys_globals.options[1]=null; } // clear list
if (config.browser.isIE) return; // BYPASS - 8/16/2006 // DON'T LIST GLOBALS IN IE... throws object error - WFFL
try {
var c=1;
for (var v in window) if ((typeof window[v])!='function') {
var t=window[v];
if ((typeof window[v])=='object') {
var t='';
for (var p in window[v]) {
t+=((typeof window[v][p])!='function')?('['+typeof window[v][p]+'] '+p):p;
t+=((typeof window[v][p])!='function')?('='+window[v][p]):'';
t+='\n';
}
}
f.sys_globals.options[c++]=new Option(((typeof window[v])!='function')?('['+typeof window[v]+'] '+v):v,t,false,false);
}
}
catch(e) { ; }
},
setsys: function(f) {
if (f.sys_opts.selectedIndex==0) return; // heading - do nothing
var name=f.sys_opts.options[f.sys_opts.selectedIndex].text.replace(/\[[Xx_]\] /,'').replace(/ \(cookie\)/,'')
var value=f.config_view.value;
config.options[name]=value;
saveOptionCookie(name);
f.sys_opts.options[f.sys_opts.selectedIndex].value=value;
return;
},
showObject: function(o) { // generate formatted output for displaying object references
var t="";
for (var p in o) {
if (typeof o[p]=="function") {
t+="- - - - - - - - - - "+p+" - - - - - - - - - -\n";
t+=o[p].toString();
t+="\n- - - - - - - - - - END: "+p+" - - - - - - - - - -\n";
}
else
t+='['+typeof o[p]+'] '+p+": "+o[p]+"\n";
}
return t;
},
html: "\
<form style='display:inline;margin:0;padding:0;'> \
<!-- configurable options --> \
<table style='width:100%;border:0;padding:0;margin:0'><tr style='border:0;padding:0;margin:0'> \
<td style='width:30%;border:0;padding:0;margin:0'> \
<select size=1 name='sys_opts' style='width:100%;' \
onchange='this.form.config_view.value=this.value'> \
<option value=\"\">config.options.*</option> \
</select> \
</td><td style='width:50%;border:0;padding:0;margin:0;'> \
<input type=text name='config_view' size=60 style='width:99%;' value=''> \
</td><td style='width:20%;white-space:nowrap;border:0;padding:0;margin:0;'> \
<input type=button style='width:50%;' value='set option' title='save this TiddlyWiki option value' \
onclick='config.macros.systemInfo.setsys(this.form);config.macros.systemInfo.getsys(this.form);'><!-- \
--><input type=button style='width:50%;' value='refresh' title='retrieve current options and system values' \
onclick='this.form.sysview.style.display=\"none\"; config.macros.systemInfo.getsys(this.form);'> \
</td></tr><tr style='border:0;padding:0;margin:0'><td colspan=3 \
style='white-space:nowrap;width:100%;border:0;padding:0;margin:0'> \
<!-- system objects --> \
<select size=1 name='sys_styles' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">stylesheets...</option> \
</select><select size=1 name='sys_shadows' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">shadows...</option> \
</select><select size=1 name='sys_notify' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">notifications...</option> \
</select><select size=1 name='sys_globals' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">globals...</option> \
</select><br><select size=1 name='sys_macros' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">macros...</option> \
</select><select size=1 name='sys_commands' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">commands...</option> \
</select><select size=1 name='sys_formatters' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">formatters...</option> \
</select><select size=1 name='sys_params' style='width:25%;' \
onchange='this.form.sysview.style.display=\"block\"; this.form.sysview.value=this.value'> \
<option value=\"\">paramifiers...</option> \
</select> \
<!-- system value display area --> \
<span style='white-space:normal;'><textarea id='sysview' name=sysview cols=60 rows=12 \
onfocus='this.select()' style='width:99.5%;height:16em;display:none'></textarea></span> \
</td></tr></table> \
</form>"
}
//}}}
/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|present a 'cloud' of tags (or links) using proportional font display|
!Usage
<<<
{{{
<<cloud type action:... limit:... tag tag tag ...>>
<<cloud type action:... limit:... +TiddlerName>>
<<cloud type action:... limit:... =tagvalue>>
}}}
where:
* //type// is a keyword, one of:
** ''tags'' (default) - displays a cloud of tags, based on frequency of use
** ''links'' - displays a cloud of tiddlers, based on number of links //from// each tiddler
** ''references'' - displays a cloud of tiddlers, based on number of links //to// each tiddler
* ''action:popup'' (default) - clicking a cloud item shows a popup with links to related tiddlers<br>//or//<br> ''action:goto'' - clicking a cloud item immediately opens the tiddler corresponding to that item
* ''limit:N'' (optional) - restricts the cloud display to only show the N most popular tags/links
* ''tag tag tag...'' (or ''title title title'' if ''links''/''references'' is used)<br>shows all tags/links in the document //except// for those listed as macro parameters
* ''+TiddlerName''<br>shows tags/links read from a space-separated, bracketed list stored in a separate tiddler.
* ''=tagvalue'' (//only if type=''tags''//)<br>shows only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
//note: for backward-compatibility, you can also use the macro {{{<<tagCloud ...>>}}} in place of {{{<<cloud ...>>}}}//
<<<
!Examples
<<<
//all tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud systemConfig excludeMissing script>>}}}
//top 10 tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud limit:10 systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud limit:10 systemConfig excludeMissing script>>}}}
//tags listed in// [[FavoriteTags]]
{{{<<cloud +FavoriteTags>>}}}
{{groupbox{<<cloud +FavoriteTags>>}}}
//links to tiddlers tagged with 'package'//
{{{<<cloud action:goto =package>>}}}
{{groupbox{<<cloud action:goto =package>>}}}
//top 20 most referenced tiddlers//
{{{<<cloud references limit:20>>}}}
{{groupbox{<<cloud references limit:20>>}}}
//top 20 tiddlers that contain the most links//
{{{<<cloud links limit:20>>}}}
{{groupbox{<<cloud links limit:20>>}}}
<<<
!Revisions
<<<
2009.02.26 [1.6.0] added {{{action:...}}} parameter to apply popup vs. goto action when clicking cloud items
2009.02.05 [1.5.0] added ability to show links or back-links (references) instead of tags and renamed macro to {{{<<cloud>>}}} to reflect more generalized usage.
2008.12.16 [1.4.2] corrected group calculation to prevent 'group=0' error
2008.12.16 [1.4.1] revised tag filtering so excluded tags don't affect calculations
2008.12.15 [1.4.0] added {{{limit:...}}} parameter to restrict the number of tags displayed to the top N most popular
2008.11.15 [1.3.0] added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler
2008.09.05 [1.2.0] added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] added 'segments' property to macro object. Extensive code cleanup
<<<
!Code
***/
//{{{
version.extensions.TagCloudPlugin= {major: 1, minor: 6 , revision: 0, date: new Date(2009,2,26)};
//Originally created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
//Currently maintained and enhanced by Eric Shulman
//}}}
//{{{
config.macros.cloud = {
tagstip: "%1 tiddlers tagged with '%0'",
refslabel: " (%0 references)",
refstip: "%1 tiddlers have links to '%0'",
linkslabel: " (%0 links)",
linkstip: "'%0' has links to %1 other tiddlers",
groups: 9,
init: function() {
config.macros.tagCloud=config.macros.cloud; // for backward-compatibility
config.shadowTiddlers.TagCloud='<<cloud>>';
config.shadowTiddlers.StyleSheetTagCloud=
'/*{{{*/\n'
+'.tagCloud span {line-height: 3.5em; margin:3px;}\n'
+'.tagCloud1{font-size: 80%;}\n'
+'.tagCloud2{font-size: 100%;}\n'
+'.tagCloud3{font-size: 120%;}\n'
+'.tagCloud4{font-size: 140%;}\n'
+'.tagCloud5{font-size: 160%;}\n'
+'.tagCloud6{font-size: 180%;}\n'
+'.tagCloud7{font-size: 200%;}\n'
+'.tagCloud8{font-size: 220%;}\n'
+'.tagCloud9{font-size: 240%;}\n'
+'/*}}}*/\n';
setStylesheet(store.getTiddlerText('StyleSheetTagCloud'),'tagCloudsStyles');
},
getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows
if (!tiddler.linksUpdated) tiddler.changed();
var list=[]; for (var i=0; i<tiddler.links.length; i++) {
var title=tiddler.links[i];
if (store.isShadowTiddler(title)||store.tiddlerExists(title))
list.push(title);
}
return list;
},
handler: function(place,macroName,params) {
// unpack params
var inc=[]; var ex=[]; var limit=0; var action='popup';
var links=(params[0]&¶ms[0].toLowerCase()=='links'); if (links) params.shift();
var refs=(params[0]&¶ms[0].toLowerCase()=='references'); if (refs) params.shift();
if (params[0]&¶ms[0].substr(0,7).toLowerCase()=='action:')
action=params.shift().substr(7).toLowerCase();
if (params[0]&¶ms[0].substr(0,6).toLowerCase()=='limit:')
limit=parseInt(params.shift().substr(6));
if (params.length) {
if (params[0].substr(0,1)=='+') { // get tag list from tiddler
var inc=store.getTiddlerText(params[0].substr(1),'').readBracketedList();
} else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags
var tagged=store.getTaggedTiddlers(params[0].substr(1));
for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
} else ex=params; // exclude params
}
// get all items, include/exclude specific items
var items=[];
var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();
for (var t=0; t<list.length; t++) {
var title=(links||refs)?list[t].title:list[t][0];
if (links) var count=this.getLinks(list[t]).length;
else if (refs) var count=store.getReferringTiddlers(title).length;
else var count=list[t][1];
if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))
items.push({ title:title, count:count });
}
if(!items.length) return;
// sort by decending count, limit results (optional)
items=items.sort(function(a,b){return(a.count==b.count)?0:(a.count>b.count?-1:1);});
while (limit && items.length>limit) items.pop();
// find min/max and group size
var most=items[0].count;
var least=items[items.length-1].count;
var groupSize=(most-least+1)/this.groups;
// sort by title and draw the cloud of items
items=items.sort(function(a,b){return(a.title==b.title)?0:(a.title>b.title?1:-1);});
var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);
for (var t=0; t<items.length; t++) {
cloudWrapper.appendChild(document.createTextNode(' '));
var group=Math.ceil((items[t].count-least)/groupSize)||1;
var className='tagCloudtag tagCloud'+group;
var tip=refs?this.refstip:links?this.linkstip:this.tagstip;
tip=tip.format([items[t].title,items[t].count]);
if (action=='goto') { // TAG/LINK/REFERENCES GOTO
var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);
btn.title=tip;
btn.style.fontWeight='normal';
} else if (!links&&!refs) { // TAG POPUP
var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);
btn.setAttribute('tag',items[t].title);
} else { // LINK/REFERENCES POPUP
var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,
function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;
var popup = Popup.create(this);
var title = this.getAttribute('tiddler');
var count = this.getAttribute('count');
var refs = this.getAttribute('refs')=='T';
var links = this.getAttribute('links')=='T';
var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);
createTiddlyLink(popup,title,true);
createTiddlyText(popup,label);
createTiddlyElement(popup,'hr');
if (refs) {
popup.setAttribute('tiddler',title);
config.commands.references.handlePopup(popup,title);
}
if (links) {
var tiddler = store.fetchTiddler(title);
var links=config.macros.cloud.getLinks(tiddler);
for(var i=0;i<links.length;i++)
createTiddlyLink(createTiddlyElement(popup,'li'),
links[i],true);
}
Popup.show();
e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();
return false;
}, className);
btn.setAttribute('tiddler',items[t].title);
btn.setAttribute('count',items[t].count);
btn.setAttribute('refs',refs?'T':'F');
btn.setAttribute('links',links?'T':'F');
btn.title=tip;
}
}
}
};
//}}}
/***
|Name|TagGridPlugin|
|Source|http://www.TiddlyTools.com/#TagGridPlugin|
|Documentation|http://www.TiddlyTools.com/#TagGridPluginInfo|
|Version|1.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Generate a cross-referenced grid of tiddlers, based on tag values|
!!!!!Documentation
>see [[TagGridPluginInfo]]
!!!!!Revisions
<<<
2008.04.21 [1.7.0] added support for "filter:..." param to exclude tiddlers from grid
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.07.24 [1.6.5] corrected handling for @TiddlerName with excluded tags, so that excluded tags are not actually removed from the @TiddlerName source tiddler.
|please see [[TagGridPluginInfo]] for additional revision details|
2006.10.05 [1.0.0] initial release (converted from prototype inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.TagGridPlugin= {major: 1, minor: 7, revision: 0, date: new Date(2008,4,21)};
config.macros.tagGrid= {
verbose:false, // display debugging/performance feedback messages
warn:true, // display workload warning message before rendering
threshold:300000, // workload warning threshold (workload=# of comparisons to perform)
handler:
function(place,macroName,params) {
// get columns
var columntags=params.shift(); var cols=[];
if ((!columntags)||(columntags=="all")) // no param (or "all") - use all tags
{ var all=store.getTags(); for (i=0;i<all.length;i++) cols.push(all[i][0]); }
else if (columntags.substr(0,1)=="+") // get tag list from tiddler content
{ var t=store.getTiddlerText(columntags.substr(1)); if (t&&t.length) cols=t.readBracketedList(); }
else if (columntags.substr(0,1)=="@") // get tag list from tiddler tags
{ var t=store.getTiddler(columntags.substr(1)); if (t&&t.tags) for (i=0;i<t.tags.length;i++) cols.push(t.tags[i]); }
else if (columntags.substr(0,1)=="=") // get names of "tagtiddlers" tagged with meta-tag
{ var t=store.getTaggedTiddlers(columntags.substr(1)); for (i=0;i<t.length;i++) cols.push(t[i].title); }
else cols=columntags.readBracketedList();
if (!cols.length) { wikify("~TagGrid: no columns to display\n",place); return; }
// exclude specific column tags
if (params[0]&¶ms[0].substr(0,8)=="exclude:") {
var ex=params.shift().substr(8).readBracketedList();
for (x=0; x<ex.length; x++) {
var i=cols.indexOf(ex[x]);
if (i!=-1) cols.splice(i,1); // remove excluded tags
}
}
// get rows
var rowtags=params.shift(); var rows=[];
if ((!rowtags)||(rowtags=="all")) // no param (or "all") - use all tags
{ var all=store.getTags(); for (i=0;i<all.length;i++) rows.push(all[i][0]); }
else if (rowtags.substr(0,1)=="+") // get tag list from tiddler content
{ var t=store.getTiddlerText(rowtags.substr(1)); if (t&&t.length) rows=t.readBracketedList(); }
else if (rowtags.substr(0,1)=="@") // get tag list from tiddler tags
{ var t=store.getTiddler(rowtags.substr(1)); if (t&&t.tags) for (i=0;i<t.tags.length;i++) rows.push(t.tags[i]); }
else if (rowtags.substr(0,1)=="=") // get names of "tagtiddlers" tagged with meta-tag
{ var t=store.getTaggedTiddlers(rowtags.substr(1)); for (i=0;i<t.length;i++) rows.push(t[i].title); }
else rows=rowtags.readBracketedList();
if (!rows.length) { wikify("~TagGrid: no rows to display\n",place); return; }
// exclude specific row tags
if (params[0]&¶ms[0].substr(0,8)=="exclude:") {
var ex=params.shift().substr(8).readBracketedList();
for (x=0; x<ex.length; x++) {
var i=rows.indexOf(ex[x]);
if (i!=-1) rows.splice(i,1); // remove excluded tags
}
}
// get optional tiddler filter
if (params[0]&¶ms[0].substr(0,7).toUpperCase()=="FILTER:")
var filter=params.shift().substr(7);
// get optional flag keywords and/or color gradient endpoints
var defOpen=false;
var colorAll=false;
var sortRows=false;
var sortColumns=false;
var showInline=false;
var p=params.shift();
while (p) {
switch (p.toUpperCase()) {
case "OPEN":
defOpen=true; break;
case "COLORALL":
colorAll=true; break;
case "SORTROWS":
sortRows=true; break;
case "SORTCOLUMNS":
sortColumns=true; break;
case "INLINE":
showInline=true; break;
default:
if (startcolor==undefined) var startcolor=p;
else if (endcolor==undefined) var endcolor=p;
else alert("unexpected parameter: '"+p+"'");
break;
}
p=params.shift();
}
// get the tiddlers
if (filter&&filter.length)
var tiddlers=store.filterTiddlers(filter);
else
var tiddlers=store.getTiddlers("modified","excludeLists");
// show "workload warning"... get permission to proceed...
if (this.warn) {
var workload=rows.length*cols.length*tiddlers.length;
var warning="Cross-indexing %0 tiddlers in %1 row%3 by %2 column%4...\n(up to %5 comparisons MAY be needed)\n\n";
warning+="This may take a while. It is OK to proceed?";
warning=warning.format([tiddlers.length,rows.length,cols.length,rows.length!=1?"s":"",cols.length!=1?"s":"",workload]);
if (workload>this.threshold&&!confirm(warning)) { wikify("~TagGrid: display cancelled by user\n",place); return; }
}
// sort row and column tags in decending order, by frequency of use
if (sortRows||sortColumns) {
var tags=store.getTags(); var tagcount={}; for (i=0; i<tags.length; i++) tagcount[tags[i][0]]=tags[i][1];
if (sortRows) rows.sort(function(a,b){return (!tagcount[a]||tagcount[a]<tagcount[b])?+1:(tagcount[a]==tagcount[b]?0:-1);});
if (sortColumns) cols.sort(function(a,b){return (!tagcount[a]||tagcount[a]<tagcount[b])?+1:(tagcount[a]==tagcount[b]?0:-1);});
}
// cross-index tiddlers by tags, building lists of tiddler titles into grid[i][j] (sparse array)
var time1=new Date();
var grid=new Array();
var max=0; // track maximum cross-index value
for (var t=0;t<tiddlers.length;t++) { // for each tiddler
for (var i=0;i<tiddlers[t].tags.length;i++) { // for each tag in tiddler
var row=rows.indexOf(tiddlers[t].tags[i]); if (row==-1) continue; // this tag not in rows
if (!grid[row]) grid[row]=new Array(); // create row as needed
for (var j=0;j<tiddlers[t].tags.length;j++) { // for each tag in tiddler
var col=cols.indexOf(tiddlers[t].tags[j]); if (col==-1) continue; // this tag not in columns
if (!grid[row][col]) grid[row][col]=new Array(); // create cell
grid[row][col].push("[["+tiddlers[t].title+"]]"); // add tiddler title to cell
if (max<grid[row][col].length) max=grid[row][col].length; // check for new maximum
}
}
}
// compute gradient color map
if (startcolor && endcolor) {
var digits="0123456789ABCDEF";
function hexToDec(s) // 2-digit conversion
{ return digits.indexOf(s.substr(0,1).toUpperCase())*16+digits.indexOf(s.substr(1,1).toUpperCase()); }
function decToHex(d) // 2-digit conversion
{ return digits.substr(Math.floor(d/16),1)+digits.substr(d%16,1); }
var steps=max;
var startR=hexToDec(startcolor.substr(0,2));
var startG=hexToDec(startcolor.substr(2,2));
var startB=hexToDec(startcolor.substr(4,2));
var endR=hexToDec(endcolor.substr(0,2));
var endG=hexToDec(endcolor.substr(2,2));
var endB=hexToDec(endcolor.substr(4,2));
var rangeR=endR-startR;
var rangeG=endG-startG;
var rangeB=endB-startB;
var stepR=rangeR/steps; if (stepR>0) stepR=Math.floor(stepR); else stepR=Math.ceil(stepR);
var stepG=rangeG/steps; if (stepG>0) stepG=Math.floor(stepG); else stepG=Math.ceil(stepG);
var stepB=rangeB/steps; if (stepB>0) stepB=Math.floor(stepB); else stepB=Math.ceil(stepB);
var colors=[];
colors[0]=startcolor;
for (var i=1; i<steps; i++)
colors[i]=decToHex(startR+stepR*i)+decToHex(startG+stepG*i)+decToHex(startB+stepB*i);
colors[steps-1]=endcolor; // fixup for roundoff error
}
// generate HTML table containing popups (and optional inline links)
var time2=new Date();
var out="<html><table cellpadding='0' cellspacing='0' style='border:0;border-collapse:collapse'>";
// column headings
out+="<tr style='border:0;'><td style='text-align:right;border:0'>";
out+="<a href='' style='font-size:80%;'";
out+=" title='show all column headings'";
out+=" onclick='return config.macros.tagGrid.toggleAllColumns(this,event,"+defOpen+")'>"+(defOpen?"<<<":">>>")+"</a>";
out+="</td>";
for (var i=0;i<cols.length;i++) {
out+="<td style='text-align:center;cursor:pointer;border:0;padding-left:2px;padding-right:2px' ";
out+=" title='show/hide column heading' ";
out+=" onclick='return config.macros.tagGrid.toggleColumn(this,event)'>";
out+="<a href='' title='open tag tiddler'";
if (!defOpen) out+=" style='display:none' ";
out+=" onclick='story.displayTiddler(this,\""+cols[i]+"\");return false'>"+cols[i]+"</a>";
out+="</td>";
}
out+="</tr>";
for (var i=0;i<rows.length;i++) {
// row heading
var rowlink="<a href='' onclick='story.displayTiddler(this,\""+rows[i]+"\");return false'>"+rows[i]+"</a>";
out +="<tr style='border:0'>";
out +="<td style='text-align:right;border:0;padding-right:2px'>"+rowlink+"</td>";
for (var j=0;j<cols.length;j++) {
var content="";
var bgcolor="transparent"; // default empty cell background
if (colors && colorAll) bgcolor="#"+colors[0]; // empty cell background uses startcolor
var bordercolor=""; // default border color (inherits current CSS value)
if (colors) bordercolor="#"+colors[Math.floor(colors.length/2-1)]; // border uses mid-tone color
var linkstyle=""; // use default unless background color is very light or very dark
var cross=(grid[i]&&grid[i][j])?grid[i][j]:null;
var hdr=rows[i]+(rows[i]!=cols[j]?(" + "+cols[j]):"");
if (cross) {
// cross-tagged list of tiddlers (in a popup)
var label="<b>"+cross.length+"</b>";
var tip=hdr;
var list=cross.sort().join(' ').replace(/'/g,"\\'").replace(/"/g,'"');
var handler="return config.macros.tagGrid.popup(this,event,\'"+rows[i]+"\',\'"+cols[j]+"\',\'"+list+"\')";
if (colors) {
var c=colors[cross.length-1];
bgcolor="#"+c;
linkstyle="style='color:#000000 !important'";
// invert link color if background is very light
if (c.substr(0,2)<"60" || c.substr(2,2)<"60" || c.substr(4,2)<"60")
linkstyle="style='color:#FFFFFF !important'";
}
} else {
var label=" - ";
var tip="create a new tiddler tagged with: "+hdr;
var list="";
var handler="var title=config.macros.newTiddler.title;";
handler+="story.displayTiddler(this,title,DEFAULT_EDIT_TEMPLATE);";
handler+="story.setTiddlerTag(title,\'"+rows[i]+"\',+1);";
handler+="story.setTiddlerTag(title,\'"+cols[j]+"\',+1);";
handler+="story.focusTiddler(title,\'text\');return(false);";
}
if (!showInline || !cross)
content+='<a href="javascript:;" '+linkstyle+' onclick="'+handler+'" title="'+tip+'">'+label+'</a>';
if (showInline && cross) {
content+="<div "+linkstyle+"><span style='white-space:nowrap'>";
content+=hdr+" ("+label+")";
content+="</span></div><hr>";
// list tiddler links inline in table cell
for (t=0; t<cross.length; t++) {
var title=cross[t].replace(/\[\[/g,'').replace(/\]\]/g,'');
var handler="story.displayTiddler(null,'"+title+"');return false;"
var tid=store.getTiddler(title);
var author=tid.modifier;
var date=tid.modified.toLocaleString();
var tip=config.messages.tiddlerLinkTooltip.format([title,author,date]);
if (t>0) content+="<br>";
content+='<a href="javascript:;" '+linkstyle+' onclick="'+handler+'" title="'+tip+'">'+title+'</a>';
}
content+="<hr>";
handler="var tids=\'"+list+"\'.readBracketedList();story.displayTiddlers(this,tids); return(false);"
tip="display all tiddlers tagged with: "+hdr;
content+='<a href="javascript:;" '+linkstyle+' onclick="'+handler+'" title="'+tip+'">open all...</a><br>';
handler="var title=config.macros.newTiddler.title;";
handler+="story.displayTiddler(this,title,DEFAULT_EDIT_TEMPLATE);";
handler+="story.setTiddlerTag(title,\'"+rows[i]+"\',+1);";
handler+="story.setTiddlerTag(title,\'"+cols[j]+"\',+1);";
handler+="story.focusTiddler(title,'text'); return(false);"
tip="create a new tiddler tagged with: "+hdr;
content+='<a href="javascript:;" '+linkstyle+' onclick="'+handler+'" title="'+tip+'">new tiddler...</a>';
}
out+="<td style='background-color:"+bgcolor+";border:1px solid "+bordercolor+" !important;text-align:center'>"+content+"</td>";
}
out+="</tr>";
}
out+="</table>";
out+="</html>";
createTiddlyElement(place,"span").innerHTML=out;
var time3=new Date();
if (this.verbose) displayMessage("TagGrid: scan="+(time2-time1)+", generate table="+(time3-time2));
},
popup:
function(here,event,row,col,list) {
var tids=list.replace(/"/g,'"').readBracketedList();
var hdr=row+(row!=col?(" AND "+col):"");
if (tids.length) {
var p=Popup.create(here); if (!p) return;
createTiddlyText(p,hdr);
createTiddlyElement(p,'hr');
for(var t=0; t<tids.length; t++) createTiddlyLink(createTiddlyElement(p,'li'),tids[t],true);
createTiddlyElement(p,'hr');
createTiddlyButton(createTiddlyElement(p,'li'),
"open all...", "display all tiddlers tagged with: "+hdr,
function(){story.displayTiddlers(null,tids); return(false);});
var a=createTiddlyButton(createTiddlyElement(p,'li'),
"new tiddler...", "create a new tiddler tagged with: "+hdr,
function(){
var title=config.macros.newTiddler.title;
story.displayTiddler(this,title,DEFAULT_EDIT_TEMPLATE);
story.setTiddlerTag(title,this.getAttribute("rowtag"),+1);
story.setTiddlerTag(title,this.getAttribute("coltag"),+1);
story.focusTiddler(title,"text");
return(false);
});
a.setAttribute("rowtag",row);
a.setAttribute("coltag",col);
Popup.show(p,false);
}
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
},
toggleAllColumns:
function(here,event,defOpen) {
if (here.expanded==undefined) here.expanded=defOpen;
var ex=here.expanded=!here.expanded;
here.innerHTML=ex?"<<<":">>>";
here.title=ex?'hide all column headings':'show all column headings';
var cells=here.parentNode.parentNode.getElementsByTagName("td");
for (i=1; i<cells.length; i++) cells[i].firstChild.style.display=ex?"inline":"none";
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
},
toggleColumn:
function(here,event) {
here.firstChild.style.display=(here.firstChild.style.display=="none")?"inline":"none";
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
}
};
//}}}
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.5.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.01.06 [1.5.1] reversed logic so that title-as-prefix takes precedence over tag-matched prefix
2008.12.18 [1.5.0] added handling for using tiddler //title// as prefix (e.g., {{{SomeTiddlerViewTemplate}}})
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 5, revision: 1, date: new Date(2009,1,6)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get default template from core
var coreTemplate=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
// if the tiddler doesn't exist yet, return core result
var tiddler=store.getTiddler(title); if (!tiddler) return coreTemplate;
// split core template into theme prefix and template name
var theme="";
var template=coreTemplate;
var parts=template.split(config.textPrimitives.sectionSeparator);
if (parts[1]) { theme=parts[0]; template=parts[1]; }
else theme=config.options.txtTheme||""; // fallback if theme is not specified
theme+=config.textPrimitives.sectionSeparator;
// look for template whose prefix matches the *title* of this tiddler
if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
if (store.getTiddlerText(theme+title+template)) { return theme+title+template; } // theme##TitleTemplate
if (store.getTiddlerText(title+template)) { return title+template; } // TitleTemplate
}
// look for template whose prefix matches a *tag* on this tiddler (if any)
for (i=0; i<tiddler.tags.length; i++) {
var t=tiddler.tags[i]+template; // add tag prefix to template
var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
if (store.getTiddlerText(theme+t)) { return theme+t; } // theme##tagTemplate
if (store.getTiddlerText(theme+c)) { return theme+c; } // theme##TagTemplate
if (store.getTiddlerText(t)) { return t; } // tagTemplate
if (store.getTiddlerText(c)) { return c; } // TagTemplate
}
// no matching tag OR title prefix... return core result
return coreTemplate;
}
//}}}
/***
|Name|TaggedTemplateTweakInfo|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.5.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for TaggedTemplateTweak|
The core function, "story.chooseTemplateForTiddler(title,template)" is essentially a "pass-thru" that returns the same template it was given, and is provided by the core so that plugins can customize the template selection logic to select alternative templates, based on whatever programmatic criteria is appropriate. This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Usage
<<<
Each alternative template is associated with a specific tiddler tag value by using that tag value as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]]. For example, any tiddlers that are tagged with ''<<tag media>>'' will look for alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]].
To use templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin will also attempt to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
To use templates contained as //sections// within a systemTheme definition, the plugin also tries prepending the currently selected theme (specified by {{{config.options.txtTheme}}}) plus the 'section separator' (##) to the template name (e.g. ''[[SomeTheme##MediaViewTemplate]]'').
In addition to tag matching, the plugin also tries using the tiddler's //title// as a prefix (i.e., ''TiddlerNameViewTemplate'' and ''TiddlerNameEditTemplate''). This allows you to associate a custom template with a specific tiddler, without needing to add any special tag designation to that tiddler. Note that, similar to the manner in which //specificity// rules are applied to CSS, a template matching a specific ID (tiddler title) will always take precedence over a template matching a particular class name (tag value). Thus, [[SomeTitleViewTemplate]] overrides [[someTagViewTemplate]], which overrides the default [[ViewTemplate]].
Finally, if no alternative template is found at all, then the tiddler defaults to using the appropriate standard [[ViewTemplate]] or [[EditTemplate]] definition as determined by the standard TiddlyWiki core handling.
''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate"). Then, simply create a tiddler and tag it with your chosen keyword... that's it! As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates. If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Revisions
<<<
2009.01.06 [1.5.1] reversed logic so that title-as-prefix takes precedence over tag-matched prefix
2008.12.18 [1.5.0] added handling for using tiddler //title// as prefix (e.g., {{{SomeTiddlerViewTemplate}}})
2008.08.29 [1.4.1] corrected handling for tiddlers with no matching tagged template when non-default theme is in effect (e.g., use "MyTheme##ViewTemplate").
2008.05.15 [1.4.0] support use of *shadow* tagged templates (e.g., [[DiscussionViewTemplate]] created by [[DiscussionPlugin]])
2008.05.10 [1.3.0] corrected handling for determining core template when using theme with sections
2008.05.01 [1.2.5] added support for tagged templates stored as sections in a theme
2008.04.01 [1.2.0] added support for using systemTheme section-based template definitions (requested by Phil Hawksworth)
2008.01.22 [*.*.*] plugin size reduction - documentation moved to [[TaggedTemplateTweakInfo]]
2007.06.23 [1.1.0] re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
2007.06.11 [1.0.0] initial release
<<<
/***
|Name|TemporaryTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#TemporaryTiddlersPlugin|
|Version|1.1.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|SaverBase.prototype.externalize()|
|Options|##Configuration|
|Description|blocks tiddlers tagged with "temporary" from being saved into the TW file|
!!!!!Usage
<<<
When the TW document is saved (either to local disk or remote URL), any tiddlers tagged with "temporary" will be skipped over, so that they are not written to the file. To keep a temporary tiddler, simply edit it and remove the tag before saving the file. This feature can be combined with various plugins that can automatically create new tiddlers, such as [[SearchOptionsPlugin]] ([[SearchResults]]) and [[ImportTiddlersPlugin]] ([[ImportedTiddlers]]) so that these transient results are not retained when you save you document.
You can also use this tag with the {{{<<loadTiddlers>>}}} macro and the //auto-tagging// features provided by [[ImportTiddlersPlugin]], so that each time you open your document, you can automatically retrieve an up-to-date set of common tiddlers that are stored in another document (either local or via remote URL), without those tiddlers being retained when you save your document.
<<<
!!!!!Configuration
<<<
When saving the document:
<<option chkTemporaryQuiet>> Suppress reporting of individual temporary tiddlers that have not been saved
<<option chkTemporaryKeep>> Keep temporary tiddlers (i.e., ignore the 'temporary' tag)
Enter a tag value to use when marking tiddlers as temporary: <<option txtTemporaryTag>>
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.2] added "nnn temporary tiddlers not saved" summary message
2008.04.08 [1.1.1] don't automatically add configuration options to AdvancedOptions tiddler
2008.03.01 [1.1.0] added support for recognizing 'temporary' flag stored as a tiddler *field* (as an optional alternative to using a tag)
2007.02.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TemporaryTiddlersPlugin= {major: 1, minor: 1, revision: 2, date: new Date(2008,11,14)};
// configuration defaults
if (config.options.chkTemporaryKeep ==undefined) config.options.chkTemporaryKeep =false;
if (config.options.chkTemporaryQuiet==undefined) config.options.chkTemporaryQuiet=true;
if (config.options.txtTemporaryTag==undefined) config.options.txtTemporaryTag="temporary";
// lingo
config.messages.TemporaryWarning = "'%0' ...temporary tiddler";
config.messages.TemporarySummary = "%0 temporary tiddlers will not be saved";
// core override
SaverBase.prototype.externalize = function(store)
{
var results=[]; var totaltemps=0;
var tiddlers=store.getTiddlers("title");
for (var t=0; t<tiddlers.length; t++) {
if (config.options.chkTemporaryKeep||!(tiddlers[t].fields['temporary']||tiddlers[t].isTagged(config.options.txtTemporaryTag)))
results.push(this.externalizeTiddler(store, tiddlers[t]));
else {
if (!config.options.chkTemporaryQuiet) // notify user that tiddler won't be saved
displayMessage(config.messages.TemporaryWarning.format([tiddlers[t].title]));
totaltemps++;
}
}
if (totaltemps) displayMessage(config.messages.TemporarySummary.format([totaltemps]));
return results.join("\n");
}
//}}}
/***
|Name|TextAreaPlugin|
|Source|http://www.TiddlyTools.com/#TextAreaPlugin|
|Documentation|http://www.TiddlyTools.com/#TextAreaPluginInfo|
|Version|2.1.9|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.focusTiddler|
|Options|##Configuration|
|Description|Adds Find/Again keyboard search, autosize, and 'stretch bar' resize for textarea controls|
* ''Control-F'' and ''control-G'' will ''"Find text"'' and ''"find text aGain"'', respectively, allowing you to copy, find, paste, findagain, paste, etc to perform "search-and-replace" actions.
* ''autosizeEditor'' - toggles the tiddler editor textarea height between fixed-height and "automatically fit the contents".
* ''resizeEditor'' - adds 'grab handle' below textarea to stretch field height
!!!!!Documentation
>see [[TextAreaPluginInfo]]
!!!!!Configuration
<<<
<<option chkTextAreaExtensions>> use control-f (find), control-g (find again) inside text area
<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
<<option chkResizeEditor>> modify shadow EditTemplate to add resizeable text area (and autosize command)
<<<
!!!!!Revisions
<<<
2008.01.08 [2.1.9] fixed default setting of uninitialized option values so that "false" is not treated as "undefined"
|please see [[TextAreaPluginInfo]] for additional revision details|
2006.01.22 [1.0.0] Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
<<<
!!!!!Code
***/
//{{{
version.extensions.TextAreaPlugin= {major: 2, minor: 1, revision: 9, date: new Date(2008,1,8)};
if (config.options.chkTextAreaExtensions===undefined) config.options.chkTextAreaExtensions=true;
if (config.options.chkDisableAutoSelect===undefined) config.options.chkDisableAutoSelect=true;
if (config.options.chkResizeEditor===undefined) config.options.chkResizeEditor=true;
// automatically tweak shadow EditTemplate to add "autosizeEditor" toolbar command
if (config.options.chkResizeEditor)
config.shadowTiddlers.EditTemplate=config.shadowTiddlers.EditTemplate.replace(/deleteTiddler/,"deleteTiddler autosizeEditor");
// automatically tweak shadow EditTemplate to add "resizeEditor" macro
if (config.options.chkResizeEditor)
config.shadowTiddlers.EditTemplate+="<span macro='resizeEditor'></span>";
// Put focus in a specified tiddler field
Story.prototype.TextAreaExtensions_focusTiddler=Story.prototype.focusTiddler;
Story.prototype.focusTiddler = function(title,field)
{
this.TextAreaExtensions_focusTiddler.apply(this,arguments); // first call core
var e = this.getTiddlerField(title,field);
if (e && config.options.chkDisableAutoSelect) {
if (e.setSelectionRange) // FF
e.setSelectionRange(0,0);
else if (e.createTextRange) // IE
{ var r=e.createTextRange(); r.collapse(true); r.select(); }
}
if (e && config.options.chkTextAreaExtensions) addKeyDownHandlers(e);
}
//}}}
//{{{
function addKeyDownHandlers(e)
{
// exit if not textarea or element doesn't allow selections
if (e.tagName.toLowerCase()!="textarea"||!e.setSelectionRange||e.initialized) return;
// utility function: exits keydown handler and prevents browser from processing the keystroke
var processed=function(ev) {
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
}
// capture keydown in edit field
e.saved_onkeydown=e.onkeydown; // save current keydown handler (if any)
e.onkeydown=function(ev) { if (!ev) var ev=window.event;
var key=ev.keyCode;
if (!key) {
var char=event.which?event.which:event.charCode;
if (char==102) key=70;
if (char==103) key=71;
}
// process CTRL-F (find matching text) or CTRL-G (find next match)
if (ev.ctrlKey && (key==70||key==71)) {
// prompt for text to find
var defFind=e.findText?e.findText:e.value.substring(e.selectionStart,e.selectionEnd);
if (key==70||!e.findText||!e.findText.length) // ctrl-f or no saved search text
{ var f=prompt("find:", defFind); e.focus(); if (f) e.findText=f; }
if (!e.findText||!e.findText.length) return processed(ev); // if no search text, exit
// do case-insensitive match with 'wraparound'... if not found, alert and exit
var newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase(),e.selectionStart+1);
if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase());
if (newstart==-1) { alert("'"+e.findText+"' not found"); e.focus(); return processed(ev); }
// set new selection, scroll it into view, and report line position in status bar
e.setSelectionRange(newstart,newstart+e.findText.length);
var linecount=e.value.split('\n').length;
var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
window.status="line: "+thisline+"/"+linecount;
return processed(ev);
}
if (e.saved_onkeydown) // call previous keydown handler (if any)
e.saved_onkeydown(ev);
}
e.initialized=true;
}
//}}}
// // 'autosize' toolbar command
//{{{
config.commands.autosizeEditor = {
text: 'autosize',
tooltip: 'automatically adjust the editor height to fit the contents',
text_alt: '\u221Aautosize',
hideReadOnly: false,
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var ta=here.getElementsByTagName('textarea'); if (!ta) return;
for (i=0;i<ta.length;i++) {
// only autosize textareas actually used to edit tiddler fields
if (ta[i].getAttribute("edit")==undefined) continue;
ta[i].button=src;
if (!ta[i].maxed)
config.commands.autosizeEditor.on(ta[i]);
else
config.commands.autosizeEditor.off(ta[i],true);
}
return false;
},
on: function(e) {
if (e.maxed) return; // already autosizing!
if (e.savedheight==undefined)
e.savedheight=e.style.height;
if (e.savedkeyup==undefined) {
e.savedkeyup=e.onkeyup;
e.onkeyup=function(ev) {
if (!ev) var ev=window.event; var e=resolveTarget(ev);
e.style.height=e.scrollHeight+'px';
if (e.savedkeyup) e.savedkeyup();
}
}
// IE reports error: "not implemented" for onkeypress
if (!config.browser.isIE && e.savedkeypress==undefined) {
e.savedkeypress=e.onkeypress;
e.onkeypress=function(ev) {
if (!ev) var ev=window.event; var e=resolveTarget(ev);
if (ev.keyCode==33) { // PGUP
if (window.scrollByPages) window.scrollByPages(-1);
return false;
}
if (ev.keyCode==34) { // PGDN
if (window.scrollByPages) window.scrollByPages(1);
return false;
}
if (e.savedkeypress) e.savedkeypress();
}
}
e.style.height=e.scrollHeight+'px';
e.button.innerHTML=config.commands.autosizeEditor.text_alt;
e.maxed=true;
},
off: function(e,resetHeight) {
if (resetHeight) e.style.height=e.savedheight;
e.onkeyup=e.savedkeyup;
// IE reports error: "not implemented" for onkeypress
if (!config.browser.isIE) e.onkeypress=e.savedkeypress;
e.button.innerHTML=config.commands.autosizeEditor.text;
e.maxed=false;
}
};
//}}}
// // grab-and-stretch handle
//{{{
config.macros.resizeEditor = { // add stretch bar to editor textarea
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var ta=here.getElementsByTagName('textarea');
if (ta) for (i=0;i<ta.length;i++) {
// only resize tiddler editor textareas
if (ta[i].getAttribute("edit")==undefined) continue;
new window.TextAreaResizer(ta[i]);
}
}
}
config.macros.resizeTiddler = { // add stretch bar to tiddler viewer element
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var elems=here.getElementsByTagName('div');
if (elems) for (i=0;i<elems.length;i++) if (hasClass(elems[i],'viewer')) break;
if (i<elems.length) new window.TextAreaResizer(elems[i]);
}
}
config.macros.resizeFrame = { // add stretch bar to iframes
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var fr=here.getElementsByTagName('iframe');
if (fr) for (i=0;i<fr.length;i++) new window.TextAreaResizer(fr[i]);
}
}
// TextAreaResizer script by Jason Johnston (jj@lojjic.net)
// Created August 2003. Use freely, but give me credit.
// adds a handle below textareas that the user can drag with the mouse to resize the textarea.
// MODIFIED by ELS for cross-browser (IE) compatibility, including:
// fixups and adjustments to CSS styles,
// use 'old style' assignment of mouse event handlers instead of using addEventListener(),
// use window.event if event param is null,
// use offsetHeight instead of getComputedStyle()
// use explicit window.* global scope declaration for functions called from event handlers
window.TextAreaResizer = function(elt) {
this.element = elt;
this.create();
}
window.TextAreaResizer.prototype = {
create : function() {
var elt = this.element;
var thisRef = this;
var h = this.handle = document.createElement("div");
h.style.height = "3px"; // was 4px... looked too fat!
h.style.overflow = "hidden"; // ELS: force IE to trim height to < 1em
h.style.width="auto";
h.style.backgroundColor = "#999"; // ELS: standard mid-tone (dark) gray
h.style.cursor = "s-resize";
h.title = "Drag to resize text box";
h.onmousedown=function(evt){thisRef.dragStart(evt)};
elt.parentNode.insertBefore(h, elt.nextSibling);
},
dragStart : function(evt) {
if (!evt) var evt=window.event;
this.dragStop(evt); // ELS: stop any current drag processing first
var thisRef = this;
this.dragStartY = evt.clientY;
this.dragStartH = this.element.offsetHeight;
document.savedmousemove=document.onmousemove;
document.onmousemove=this.dragMoveHdlr=function(evt){thisRef.dragMove(evt)};
document.savedmouseup=document.onmouseup;
document.onmouseup=this.dragStopHdlr=function(evt){thisRef.dragStop(evt)};
},
dragMove : function(evt) {
if (!evt) var evt=window.event;
// ELS: make sure height is at least 10px
var h=this.dragStartH+evt.clientY-this.dragStartY;
if (h<10) h=10; this.element.style.height=h+"px";
// ELS: match handle to textarea width (which may have changed due to document scrollbars)
this.handle.style.width=(this.element.offsetWidth-4)+"px"; // 4-pixel fudge factor for textarea border edge
// ELS: when manually resizing, disable autoresizing (without restoring saved height)
if (this.element.maxed!=undefined && this.element.maxed)
config.commands.autosizeEditor.off(this.element,false);
},
dragStop : function(evt) {
if (!evt) var evt=window.event;
document.onmousemove=(document.savedmousemove!=undefined)?document.savedmousemove:null;
document.onmousemove=(document.savedmouseup!=undefined)?document.savedmouseup:null;
},
destroy : function() {
var elt = this.element;
elt.parentNode.removeChild(this.handle);
elt.style.height = "";
}
};
//}}}
/***
|Name|TextAreaPluginInfo|
|Source|http://www.TiddlyTools.com/#TextAreaPlugin|
|Documentation|http://www.TiddlyTools.com/#TextAreaPluginInfo|
|Version|2.1.9|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for TextAreaPlugin|
Adds Find/Again keyboard search, autosize, and 'stretch bar' resize for textarea controls
!!!!!Usage
<<<
* ''Control-F'' and ''control-G'' will ''"Find text"'' and ''"find text aGain"'', respectively, allowing you to copy, find, paste, findagain, paste, etc to perform "search-and-replace" actions.
* ''autosizeEditor'' - toggles the tiddler editor textarea height between fixed-height and "automatically fit the contents".
* ''resizeEditor'' - adds 'grab handle' below textarea to stretch field height
<<<
!!!!!Configuration
<<<
<<option chkTextAreaExtensions>> use control-f (find), control-g (find again) inside text area
<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
<<option chkResizeEditor>> modify shadow EditTemplate to add resizeable text area (and autosize command)
> Note: if you are using the default (shadow) EditTemplate, the plugin automatically updates the template to include the ''autosizeEditor'' toolbar command and ''resizeEditor'' macro. If you have created a custom EditTemplate tiddler, you will need to manually add the ''autosizeEditor'' toolbar command and ''resizeEditor'' macro to your existing template:
{{{
<!-- add 'autosizeEditor' command to end of existing editor toolbar definition -->
<div class='toolbar' macro='toolbar ... autosizeEditor'>
}}}
and
{{{
<!-- add span with 'resizeEditor' macro anywhere in the edit template -->
<span macro='resizeEditor'></span>
}}}
<<<
!!!!!Revisions
<<<
2008.01.08 [2.1.9] fixed default setting of uninitialized option values so that "false" is not treated as "undefined"
2008.01.07 [2.1.8] added 'initialized' flag so keyDownHandlers() will only be added once to each control (prevents recursion errors)
2007.12.21 [2.1.7] in dragMove(), subtract 4-pixel 'fudge factor' when adjusting drag bar width to match textarea width. Apparently textarea 'offsetWidth' includes the 2-pixel surrounding edge, but CSS 100% calculation does NOT, resulting is an increase in the textarea width when displayed in a variable-width moveable panel.
2007.11.19 [2.1.6] fix fatal IE errors by NOT setting 'onkeypress' handler (which IE reports as "not implemented"). Also, only add autosize grab bar to textareas that are actually used to edit tiddler fields (i.e., they have an "edit=fieldname" attribute). This prevents undesirable autosizing of textareas used for HTML/DOM display by [[PreviewPlugin]].
2007.11.18 [2.1.5] in config.commands.autosizeEditor, changed alt command text to use character-based "psuedo-checkbox" instead of embedded html fragment
2007.09.04 [2.1.4] in window.TextAreaResizer.prototype.create(), set initial grab handle width to auto instead of matching textarea.offsetWidth (which can be initially==0)
2007.04.29 [2.1.3] in addKeyDownHandlers(), used 'findText' instead of 'find', hopefully to avoid strict ECMAScript1.5 error on certain browsers.
2007.03.01 [2.1.2] use apply() to invoke hijacked core function
2006.11.16 [2.1.0] restored chkDisableAutoSelect (place cursor at start of textarea instead of pre-selecting content)
2006.11.16 [2.0.0] removed chkDisableEscapeKey (obsolete... use custom EditTemplate to change toolbar definition). Rewrote focusTiddler as a HIJACK instead of just overwriting core function (permits other plugins to also hijack function). Removed TAB character processing (now built-in as of TW2.1). Merged code from ResizeEditorPlugin:
> 2006.11.16 [1.3.x] merged with TextAreaPlugin
> 2006.11.02 [1.3.1] in DragMove() and DragStop(), check for undefined properties so IE doesn't report "Not Implemented" error when property is referenced without having been previously initialized.
> 2006.11.01 [1.3.0] added 'resizeEditor' MACRO for 'grab handle' stretch resizing (based on code from Jon Scully and Jason Johnston (jj@lojjic.net).
> 2006.11.01 [1.2.6] removed increaseEditor, decreaseEditor, and resizeEditor toolbar COMMAND definitions (resize by setting 'rows' property of textarea field conflicts with resize via style.height CSS attribute as set by autosize/drag).
> 2006.11.01 [1.2.5] fixed 'savedkeypress' handling (was writing to savedkeyup by mistake)
> 2006.10.28 [1.2.4] added '+' to 'saveTiddler' toolbar command (enables ctrl-enter keyhandling)
> 2006.10.18 [1.2.3] added decreaseEditor and increaseEditor commands
> 2006.10.18 [1.2.2] onkeypress handling to redirect PGUP/PGDN to window.scrollByPages() (works in FF, but not yet in IE)
> 2006.10.18 [1.2.1] fixed references to default string constants (oops!)
> 2006.10.18 [1.2.0] renamed 'resizeEditor' to 'autosizeEditor' and added new 'resizeEditor' toolbar command to prompt for # of rows to display
> 2006.10.02 [1.1.1] show checkbox in button label (when automatic resizing is enabled)
> 2006.10.01 [1.1.0] added 'onkeyup' automatic fit-to-contents handling
> 2006.09.30 [1.0.0] initial release
2006.08.01 [1.1.2] improved processed() utility function to handle IE5 and IE6, as well as calling preventDefault() for moz browsers. Thanks to Bradley Meck for research and code examples.
2006.07.09 [1.1.1] removed chkDisableAutoSelect
2006.02.14 [1.1.0] added option for chkDisableEscapeKey (default is standard action)
2006.01.22 [1.0.1] only add extra key processing for TEXTAREA elements (not other edit fields).
added option to enable/disable textarea keydown extensions (default is "standard keys" only)
2006.01.22 [1.0.0] Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
<<<
/***
|Name|TiddlerTweakerPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerTweakerPlugin|
|Version|2.3.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|select multiple tiddlers and modify author, created, modified and/or tag values|
~TiddlerTweaker is a tool for TiddlyWiki authors. It allows you to select multiple tiddlers from a listbox, either by direct interaction or automatically matching specific criteria. You can then modify the creator, author, created, modified and/or tag values of those tiddlers using a compact set of form fields. The values you enter into the fields simultantously overwrite the existing values in all tiddlers you have selected.
!!!!!Usage
<<<
{{{<<tiddlerTweaker>>}}}
{{smallform{<<tiddlerTweaker>>}}}
By default, any tags you enter into the TiddlerTweaker will //replace// the existing tags in all the tiddlers you have selected. However, you can also use TiddlerTweaker to quickly filter specified tags from the selected tiddlers, while leaving any other tags assigned to those tiddlers unchanged:
>Any tag preceded by a "+" (plus) or "-" (minus), will be added or removed from the existing tags //instead of replacing the entire tag definition// of each tiddler (e.g., enter "-excludeLists" to remove that tag from all selected tiddlers. When using this syntax, care should be taken to ensure that //every// tag is preceded by "+" or "-", to avoid inadvertently overwriting any other existing tags on the selected tiddlers. (note: the "+" or "-" prefix on each tag value is NOT part of the tag value, and is only used by TiddlerTweaker to control how that tag value is processed)
Important Notes:
* Inasmuch as TiddlerTweaker is a 'power user' tool that can perform 'batch' functions (operating on many tiddlers at once), you should always have a recent backup of your document (or "save changes" just *before* tweaking the tiddlers), just in case you "shoot yourself in the foot".
* By design, TiddlerTweaker does NOT update the 'modified' date of tiddlers simply by making changes to the tiddler's values. A tiddler's dates are ONLY updated when the corresponding 'created' and/or 'modified' checkboxes are selected and you enter new values for those dates. As a general rule, after using TiddlerTweaker, always ''//remember to save your document//'' when you are done, even though the tiddler timeline tab may not show any recently modified tiddlers.
* Because you may be changing the values on many tiddlers simultaneously, selecting and updating all tiddlers in a document operation may take a while and your browser might warn about an "unresponsive script"... you should give it a whole bunch of time to 'continue'... it should complete the processing... eventually.
<<<
!!!!!Revisions
<<<
2009.01.22 [2.3.0] added support for text pattern find/replace
2008.10.27 [2.2.3] in setTiddlers(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.09.07 [2.2.2] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.12 [2.2.1] replace built-in backstage "tweak" task with tiddler tweaker control panel (moved from BackstageTweaks)
2008.01.13 [2.2.0] added "auto-selection" links: all, changed, tags, title, text
2007.12.26 [2.1.0] added support for managing 'creator' custom field (see [[CoreTweaks]])
2007.11.01 [2.0.3] added config.options.txtTweakerSortBy for cookie-based persistence of list display order preference setting.
2007.09.28 [2.0.2] in settiddlers() and deltiddlers(), added suspend/resume notification handling (improves performance when operating on multiple tiddlers)
2007.08.03 [2.0.1] added shadow definition for [[TiddlerTweaker]] tiddler for use as parameter references with {{{<<tiddler>>, <<slider>> or <<tabs>>}}} macros.
2007.08.03 [2.0.0] converted from inline script
2006.01.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerTweakerPlugin= {major: 2, minor: 3, revision: 0, date: new Date(2009,1,22)};
// shadow tiddler
config.shadowTiddlers.TiddlerTweaker="<<tiddlerTweaker>>";
/// backstage task
if (config.tasks) { // for TW2.2b3 or above
config.tasks.tweak.tooltip="review/modify tiddler internals: dates, authors, tags, etc.";
config.tasks.tweak.content="{{smallform small groupbox{<<tiddlerTweaker>>}}}";
}
if (config.options.txtTweakerSortBy==undefined) config.options.txtTweakerSortBy="modified";
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.macros.tiddlerTweaker = {
html: '<form style="display:inline"><!--\
--><table style="padding:0;margin:0;border:0;width:100%"><tr valign="top" style="padding:0;margin:0;border:0"><!--\
--><td style="text-align:center;white-space:nowrap;width:99%;padding:0;margin:0;border:0"><!--\
--><font size=-2><div style="text-align:left;"><span style="float:right"><!--\
--> <a href="javascript:;" \
title="select all tiddlers"\
onclick="\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++)\
if (f.list.options[t].value.length) f.list.options[t].selected=true;\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">all</a><!--\
--> <a href="javascript:;" \
title="select tiddlers that are new/changed since the last file save"\
onclick="\
var lastmod=new Date(document.lastModified);\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
var tid=store.getTiddler(f.list.options[t].value);\
f.list.options[t].selected=tid&&tid.modified>lastmod;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">changed</a><!--\
--> <a href="javascript:;" \
title="select tiddlers with at least one matching tag"\
onclick="\
var t=prompt(\'Enter space-separated tags (match ONE)\');\
if (!t||!t.length) return false;\
var tags=t.readBracketedList();\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
f.list.options[t].selected=false;\
var tid=store.getTiddler(f.list.options[t].value);\
if (tid&&tid.tags.containsAny(tags)) f.list.options[t].selected=true;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">tags</a><!--\
--> <a href="javascript:;" \
title="select tiddlers whose titles include matching text"\
onclick="\
var txt=prompt(\'Enter a title (or portion of a title) to match\');\
if (!txt||!txt.length) return false;\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
f.list.options[t].selected=f.list.options[t].value.indexOf(txt)!=-1;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">titles</a><!--\
--> <a href="javascript:;" \
title="select tiddlers containing matching text"\
onclick="\
var txt=prompt(\'Enter tiddler text (content) to match\');\
if (!txt||!txt.length) return false;\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
var tt=store.getTiddlerText(f.list.options[t].value,\'\');\
f.list.options[t].selected=(tt.indexOf(txt)!=-1);\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">text</a> <!--\
--></span><span>select tiddlers</span><!--\
--></div><!--\
--></font><select multiple name=list size="11" style="width:99.99%" \
title="use click, shift-click and/or ctrl-click to select multiple tiddler titles" \
onclick="config.macros.tiddlerTweaker.selecttiddlers(this)" \
onchange="config.macros.tiddlerTweaker.setfields(this)"><!--\
--></select><br><!--\
-->show<input type=text size=1 value="11" \
onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--\
-->by<!--\
--><select name=sortby size=1 \
onchange="config.macros.tiddlerTweaker.init(this.form,this.value)"><!--\
--><option value="title">title</option><!--\
--><option value="size">size</option><!--\
--><option value="modified">modified</option><!--\
--><option value="created">created</option><!--\
--></select><!--\
--><input type="button" value="refresh" \
onclick="config.macros.tiddlerTweaker.init(this.form,this.form.sortby.value)"<!--\
--> <input type="button" name="stats" disabled value="totals..." \
onclick="config.macros.tiddlerTweaker.stats(this)"><!--\
--></td><td style="white-space:nowrap;padding:0;margin:0;border:0;width:1%"><!--\
--><div style="text-align:left"><font size=-2> modify values</font></div><!--\
--><table border=0 style="width:100%;padding:0;margin:0;border:0;"><tr style="padding:0;border:0;"><!--\
--><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=settitle unchecked \
title="allow changes to tiddler title (rename tiddler)" \
onclick="this.form.title.disabled=!this.checked">title<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=title size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setcreator unchecked \
title="allow changes to tiddler creator" \
onclick="this.form.creator.disabled=!this.checked">created by<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=creator size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setwho unchecked \
title="allow changes to tiddler author" \
onclick="this.form.who.disabled=!this.checked">modified by<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=who size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setcdate unchecked \
title="allow changes to created date" \
onclick="var f=this.form; f.cm.disabled=f.cd.disabled=f.cy.disabled=f.ch.disabled=f.cn.disabled=!this.checked"><!--\
-->created on<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=cm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=cd size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=cy size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
--> at <input type=text name=ch size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> : <input type=text name=cn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setmdate unchecked \
title="allow changes to modified date" \
onclick="var f=this.form; f.mm.disabled=f.md.disabled=f.my.disabled=f.mh.disabled=f.mn.disabled=!this.checked"><!--\
-->modified on<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=mm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=md size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=my size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
--> at <input type=text name=mh size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> : <input type=text name=mn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=replacetext unchecked\
title="find/replace matching text" \
onclick="this.form.pattern.disabled=this.form.replacement.disabled=!this.checked">replace text<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=pattern size=15 value="" style="width:40%" disabled \
title="enter TEXT PATTERN (regular expression)"> with <!--\
--><input type=text name=replacement size=15 value="" style="width:40%" disabled \
title="enter REPLACEMENT TEXT"><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=settags checked \
title="allow changes to tiddler tags" \
onclick="this.form.tags.disabled=!this.checked">tags<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=tags size=35 value="" style="width:98%" \
title="enter new tags or use \'+tag\' and \'-tag\' to add/remove tags from existing tags"><!--\
--></td></tr></table><!--\
--><div style="text-align:center"><!--\
--><nobr><input type=button name=display disabled style="width:32%" value="display tiddlers" \
onclick="config.macros.tiddlerTweaker.displaytiddlers(this)"><!--\
--> <input type=button name=del disabled style="width:32%" value="delete tiddlers" \
onclick="config.macros.tiddlerTweaker.deltiddlers(this)"><!--\
--> <input type=button name=set disabled style="width:32%" value="update tiddlers" \
onclick="config.macros.tiddlerTweaker.settiddlers(this)"></nobr><!--\
--></div><!--\
--></td></tr></table><!--\
--></form><span style="display:none"><!--content replaced by tiddler "stats"--></span>\
',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var span=createTiddlyElement(place,"span");
span.innerHTML=this.html;
this.init(span.firstChild,config.options.txtTweakerSortBy);
},
init: function(f,sortby) { // initialize form controls
if (!f) return; // form might not be rendered yet...
while (f.list.options[0]) f.list.options[0]=null; // empty current list content
var tids=store.getTiddlers(sortby);
if (sortby=="size") // descending order (largest tiddlers listed first)
tids.sort(function(a,b) {return a.text.length > b.text.length ? -1 : (a.text.length == b.text.length ? 0 : +1);});
for (i=0; i<tids.length; i++) {
var label=tids[i].title; var value=tids[i].title;
if (sortby=="modified" || sortby=="created") {
label=tids[tids.length-i-1][sortby].formatString("YY.0MM.0DD 0hh:0mm ")+tids[tids.length-i-1].title;
value=tids[tids.length-i-1].title;
}
if (sortby=="size") label="["+tids[i].text.length+"] "+label;
f.list.options[f.list.length]=new Option(label,value,false,false);
}
f.title.value=f.who.value=f.creator.value=f.tags.value="";
f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
f.stats.disabled=f.set.disabled=f.del.disabled=f.display.disabled=true;
f.settitle.disabled=false;
config.options.txtTweakerSortBy=sortby; // remember current setting
f.sortby.value=sortby; // sync droplist selection with current setting
if (sortby!="modified") // non-default preference... save cookie
saveOptionCookie("txtTweakerSortBy");
else removeCookie("txtTweakerSortBy"); // default preference... clear cookie
},
selecttiddlers: function(here) { // enable/disable tweaker fields based on number of items selected
// count how many tiddlers are selected
var f=here.form; var list=f.list;
var c=0; for (i=0;i<list.length;i++) if (list.options[i].selected) c++;
if (c>1) f.title.disabled=true;
if (c>1) f.settitle.checked=false;
f.set.disabled=(c==0);
f.del.disabled=(c==0);
f.display.disabled=(c==0);
f.settitle.disabled=(c>1);
f.stats.disabled=(c==0);
var msg=(c==0)?'select tiddlers':(c+' tiddler'+(c!=1?'s':'')+' selected');
here.previousSibling.firstChild.firstChild.nextSibling.innerHTML=msg;
if (c) clearMessage(); else displayMessage("no tiddlers selected");
},
setfields: function(here) { // set tweaker edit fields from first selected tiddler
var f=here.form;
if (!here.value.length) {
f.title.value=f.who.value=f.creator.value=f.tags.value="";
f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
return;
}
var tid=store.getTiddler(here.value); if (!tid) return;
f.title.value=tid.title;
f.who.value=tid.modifier;
f.creator.value=tid.fields['creator']||''; // custom field - might not exist
f.tags.value=tid.tags.join(' ');
var c=tid.created; var m=tid.modified;
f.cm.value=c.getMonth()+1;
f.cd.value=c.getDate();
f.cy.value=c.getFullYear();
f.ch.value=c.getHours();
f.cn.value=c.getMinutes();
f.mm.value=m.getMonth()+1;
f.md.value=m.getDate();
f.my.value=m.getFullYear();
f.mh.value=m.getHours();
f.mn.value=m.getMinutes();
},
settiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
var cdate=new Date(f.cy.value,f.cm.value-1,f.cd.value,f.ch.value,f.cn.value);
var mdate=new Date(f.my.value,f.mm.value-1,f.md.value,f.mh.value,f.mn.value);
if (tids.length>1 && !confirm("Are you sure you want to update these tiddlers:\n\n"+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
var title=!f.settitle.checked?tid.title:f.title.value;
var who=!f.setwho.checked?tid.modifier:f.who.value;
var text=tid.text;
if (f.replacetext.checked) text=text.replace(new RegExp(f.pattern.value,'mg'),f.replacement.value);
var tags=tid.tags;
if (f.settags.checked) {
var intags=f.tags.value.readBracketedList();
var addtags=[]; var deltags=[]; var reptags=[];
for (i=0;i<intags.length;i++) {
if (intags[i].substr(0,1)=='+')
addtags.push(intags[i].substr(1));
else if (intags[i].substr(0,1)=='-')
deltags.push(intags[i].substr(1));
else
reptags.push(intags[i]);
}
if (reptags.length)
tags=reptags;
if (addtags.length)
tags=new Array().concat(tags,addtags);
if (deltags.length)
for (i=0;i<deltags.length;i++)
{ var pos=tags.indexOf(deltags[i]); if (pos!=-1) tags.splice(pos,1); }
}
if (!f.setcdate.checked) cdate=tid.created;
if (!f.setmdate.checked) mdate=tid.modified;
store.saveTiddler(tid.title,title,text,who,mdate,tags,tid.fields);
if (f.setcreator.checked) store.setValue(tid.title,'creator',f.creator.value); // set creator
if (f.setcdate.checked) tid.assign(null,null,null,null,null,cdate); // set create date
}
store.resumeNotifications();
this.init(f,f.sortby.value);
},
displaytiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0; i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
story.displayTiddlers(story.findContainingTiddler(f),tids)
},
deltiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
if (!confirm("Are you sure you want to delete these tiddlers:\n\n"+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
if (tid.tags.contains("systemConfig"))
if (!confirm("'"+tid.title+"' is tagged with 'systemConfig'.\n\nRemoving this tiddler may cause unexpected results. Are you sure?"))
continue;
store.removeTiddler(tid.title);
story.closeTiddler(tid.title);
}
store.resumeNotifications();
this.init(f,f.sortby.value);
},
stats: function(here) {
var f=here.form; var list=f.list; var tids=[]; var out=''; var tot=0;
var target=f.nextSibling;
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
out+='[['+tid.title+']] '+tid.text.length+'\n'; tot+=tid.text.length;
}
var avg=tot/tids.length;
out=tot+' bytes in '+tids.length+' selected tiddlers ('+avg+' bytes/tiddler)\n<<<\n'+out+'<<<\n';
removeChildren(target);
target.innerHTML="<hr><font size=-2><a href='javascript:;' style='float:right' "
+"onclick='this.parentNode.parentNode.style.display=\"none\"'>close</a></font>";
wikify(out,target);
target.style.display="block";
}
};
//}}}
/***
|Name|TiddlyLifePlugin|
|Source|http://www.TiddlyTools.com/#TiddlyLifePlugin|
|Documentation|http://www.TiddlyTools.com/#TiddlyLifePlugin|
|Version|1.6.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Cellular Automata: Conway's "Game of Life"|
!!!!!Documentation
<<<
[[TiddlyLife]] is a TiddlyWiki-enabled javascript version of Conway's "Game of Life" cellular automata simulator. It provides a "life matrix" on which to place cells, run the simulation, and observe the results. The speed of the simulation is related to the total size of the matrix (i.e., rows X cols): the larger the matrix, the longer it takes to compute each 'generation' of cells.
You can set the number of rows and columns in the matrix, as well as the size of each cell and the color of the cells, grid, and background. You can use the mouse to click/drag over the grid to add/delete cells (hold shift to add "walls"). The current life matrix can be saved as text in a tiddler and then reloaded later from a popup list of tiddlers tagged with<<tag tiddlyLife>>
Please see Wikipedia for an overview of [[Conway's "Game of Life"|http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life]].
<<<
!!!!!Syntax
<<<
{{{
<<life cellcolor:... gridcolor:... backgroundcolor:... wallcolor:...
cellsize:... gridwidth:... delay:... limit:... stability:...
autostart nomenu nostats noedit width:... height:... tid:...>>
}}}
where all parameters are optional (default values are shown in parentheses):
*''cellcolor:'' (//green//), ''gridcolor:'' (//#111//), ''backgroundcolor:'' (//black//) and ''wallcolor:'' (//gray//)<br>are CSS color names or RGB values (e.g.: "black", "blue", "#fff", "#9af", etc.)
*''cellsize:'' (//1em//), and ''gridwidth:'' (//1px//)<br>are CSS dimensions, including units (e.g., px,em,cm,in)
*''delay:'' (//0//)<br>delay time (in msec) between simulation ticks (a larger number results in a slower simulation, but also leaves more CPU cycles available for other processes)
*''limit:'' (//10000//)<br>automatically stop stimulation after the indicated number of generations (use 0 for no limit)
*''stability:'' (//500//)<br>automatically stop simulation if population count remains stable for the indicated number of generations (use 0 for no limit)
*''autostart'' (//keyword//)<br>when present, causes the simulation to begin running as soon as the macro is rendered
*''nomenu'' (//keyword//)<br>when present, suppresses display of command menu (use with ''autostart'')
*''nostats'' (//keyword//)<br>when present, suppresses display of the current matrix statistics (generation #, population count/min/avg/max, birthrate/deathrate, average age)
*''noedit'' (//keyword//)<br>when present, prevent hand editing of cells in the matrix. Instead, clicking on the matrix starts/stops the simulation (useful with ''nomenu'' and ''autostart'')
*''width:'' (//30//) and ''height:'' (//30//)<br>are dimensions for an empty life matrix
*''tid:'' (//no default//)<br>specifies a tiddler containing a saved life matrix definition. note: when using a saved matrix, the width/height are determined by the stored definition and any width/height macro parameters that are present will be ignored.
<<<
!!!!!Examples
<<<
"Multi-cellular organisms" can be constructed by arranging blocks in specific patterns that exhibit emergent behaviors such as movement, symmetry, oscillation and generative abilities. Two well-known organisms that are [[discussed in the Wikipedia article|http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life]] are ''//gliders//'' and ''//Gosper's glider gun//'':
[[GliderDance]]: many small moving organisms just missing each other!
{{{<<life cellsize:.8em tid:GliderDance>>}}}
<<life cellsize:.8em tid:GliderDance>>
[[GliderGun]]: generates a stream of gliders that hits a wall
{{{<<life cellsize:.6em tid:GliderGun>>}}}
<<life cellsize:.6em tid:GliderGun>>
... and here's an ''empty life matrix'' for you to play with:
{{{<<life>>}}}
<<life>>
<<<
!!!!!Revisions
<<<
2008.10.11 [1.6.5] added 'step' command. Also, for performance, removed birth/death stats and don't display average age (but //do// calculate it)
2008.10.10 [1.6.0] added birthrate, deathrate, and average age to statistics
2008.10.09 [1.5.0] use //named// params. changed matrix values: 0==empty, >0==alive, <0==wall, where value=generation # in which cell was created
2008.10.08 [1.4.0] added 'stability' and 'limit' options (replaces 'autostop' checkbox)
2008.10.08 [1.3.0] added optional 'autostart', 'nomenu' and 'nostats' macro params
2008.10.07 [1.2.1] fixed update handling so multiple timers will no longer be created
2008.10.06 [1.2.0] added support for walls (unchanging dead cells) using dead="-", alive="O", wall="#"
2008.10.06 [1.1.1] redraw optimization: 300% speed improvement by setting CSS only when cell state *changes*
2008.10.05 [1.1.0] drag to draw (set/clear) multiple cells, new option controls (rows,cols,cellsize,delay,autostop), popup list for opening saved matrix
2008.10.04 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlyLifePlugin= {major: 1, minor: 6, revision: 5, date: new Date(2008,10,11)};
config.shadowTiddlers.TiddlyLife="<<life>>";
config.macros.life={
//}}}
// // DEFAULTS
//{{{
cellcolor: "green",
cellsize: "1em",
gridcolor: "#111",
gridwidth: "1px",
bgcolor: "black",
wallcolor: "gray",
width: 30,
height: 30,
stability: 300,
limit: 5000,
delay: 0,
//}}}
// // TRANSLATE
//{{{
lifeTag: "tiddlyLife",
titlePrompt: "Enter a new tiddler title",
openErr: "Could not open '%0'",
limitMsg: "stopped: completed %0 generations",
stableMsg: "stopped: no growth for %0 generations",
cellEditTip: "CLICK=set/clear, SHIFT-CLICK=set wall",
noEditTip: "CLICK=start/stop simulation",
startLabel: "start",
stopLabel: "<b>STOP</b>",
stats: "gen: <b>%0</b> pop: <b>%1</b> min: <b>%2</b> avg: <b>%3</b> max: <b>%4</b> %5",
cmds: "<a href='#' title='start/stop simulation'\
onclick='return config.macros.life.toggle(\"%0\")'>%1</a> \
| <a href='#' title='advance simulation by one generation'\
onclick='return config.macros.life.step(\"%0\")'>step</a> \
| <a href='#' title='reload the starting life matrix'\
onclick='return config.macros.life.reset(\"%0\")'>reset</a> \
| <a href='#' title='clear the life matrix'\
onclick='return config.macros.life.clear(\"%0\")'>clear</a> \
| <a href='#' title='load a life matrix from a tiddler'\
onclick='return config.macros.life.open(this,event,\"%0\")'>open</a> \
| <a href='#' title='save the current life matrix to a tiddler'\
onclick='return config.macros.life.save(\"%0\")'>save</a> \
| <a href='#' title='change simulation option settings'\
onclick='var s=this.nextSibling.style; var show=s.display==\"none\"; \
s.display=show?\"block\":\"none\"; \
return false;'>options</a><span style='display:none'>%2</span>",
opts: "delay:<input type='text' title='delay between generations (msec)' \
value='%1' style='width:4em;font-size:90%;text-align:center;'>\
limit:<input type='text' title='automatically stop after N generations (0=no limit)' \
value='%2' style='width:4em;font-size:90%;text-align:center;'>\
stability:<input type='text' title='stop if population count is stable for N generations (0=no limit)'\
value='%3' style='width:4em;font-size:90%;text-align:center;'><br>\
rows:<input type='text' title='matrix height' \
value='%4' style='width:3em;font-size:90%;text-align:center;'>\
cols:<input type='text' title='matrix width' \
value='%5' style='width:3em;font-size:90%;text-align:center;'>\
cells:<input type='text' title='cellsize' \
value='%6' style='width:3em;font-size:90%;text-align:center;'>\
<input type='button' value='OK' style='font-size:90%;' \
title='change the life matrix dimensions' \
onclick='var ins=this.parentNode.getElementsByTagName(\"input\"); \
var t=ins[0].value; var l=ins[1].value; var a=ins[2].value; \
var h=ins[3].value; var w=ins[4].value; var s=ins[5].value; \
return config.macros.life.setoptions(\"%0\",w,h,s,t,a,l)'>",
msgfmt: "<br><span title='use \"options\" command to change autostop settings' \
onclick='this.style.display=\"none\"' \
style='display:block;position:absolute;padding:0 .5em;cursor:pointer; \
margin:.5em;color:%1;background-color:%2;border:1px solid %1'>%3</span>",
//}}}
// // GENERAL UTILITIES
//{{{
empty: function(w,h) { // generate an empty matrix
var m=[]; for (var r=0; r<h; r++) { m[r]=[]; for (var c=0; c<w; c++) m[r][c]=0; } return m;
},
paste: function(row,col,m1,m2) { // copy one matrix into another
for (var r=row; r<m1.length && r<m2.length; r++)
for (var c=col; c<m1[r].length && c<m2[r].length; c++)
m2[r][c]=m1[r][c];
},
zeroPad: function(v,m) { // formatting for population stats
var t=("0000"+v.toString());
return t.substr(t.length-Math.max(m.toString().length,v.toString().length));
},
getValue: function(s) { // cell value from stored matrix symbol
return s=='O'?1:s=='#'?-1:0;
},
getSymbol: function(v) { // stored matrix symbol from cell value
return v>0?'O':v<0?'#':'-';
},
getColor: function(v,d) { // color from cell value
return v>0?d.cellcolor:v<0?d.wallcolor:'';
},
getAge: function(v,d) { // age of a cell or wall
return v?(d.gen||1)-Math.abs(v):0;
},
isAlive: function(v) { // 0 if dead, 1 if alive
return v>0;
},
isWall: function(v) { // 1 if cell is a wall
return v<0;
},
isAncient: function(v,d) { // true if cell age is more than ten times the average age
return d.avgage>0 && this.getAge(v,d)>10*d.avgage;
},
//}}}
// // MACRO HANDLER
//{{{
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var autostart =params.contains("autostart");
var nomenu =params.contains("nomenu");
var nostats =params.contains("nostats");
var noedit =params.contains("noedit");
params = paramString.parseParams("anon",null,true,false,false);
var cellcolor =getParam(params,"cellcolor",this.cellcolor);
var wallcolor =getParam(params,"wallcolor",this.wallcolor);
var cellsize =getParam(params,"cellsize",this.cellsize);
var gridcolor =getParam(params,"gridcolor",this.gridcolor);
var gridwidth =getParam(params,"gridwidth",this.gridwidth);
var bgcolor =getParam(params,"bgcolor",this.bgcolor);
var tid =getParam(params,"tid",this.tid);
var w =getParam(params,"rows",this.width);
var h =getParam(params,"cols",this.height);
var delay =getParam(params,"delay",this.delay);
var stability =getParam(params,"stability",this.stability);
var limit =getParam(params,"limit",this.limit);
var m=this.load(tid); if (!m) var m=this.empty(w,h);
var id="tiddlyLife_"+new Date().getTime()+Math.random();
var e=createTiddlyElement(place,"span",id,"tiddlyLife");
e.data={w:w, h:h, tid:tid, matrix:m, gen:0, stopped:!autostart,
gencount:0, stable:0, total:0, birthrate:0, deathrate:0, age:0,
cellcolor:cellcolor, wallcolor:wallcolor, gridcolor:gridcolor, bgcolor:bgcolor,
cellsize:cellsize, gridwidth:gridwidth, delay:delay, stability:stability, limit:limit,
nostats:nostats, nomenu:nomenu, noedit:noedit };
this.draw(id); if (autostart) this.go(id);
},
//}}}
// // COMMAND HANDLERS
//{{{
toggle: function(id) { // toggle simulation
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
if (d.stopped) this.go(id); else this.stop(id);
return false;
},
go: function(id) { // start simulation and set command text
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var b=e.getElementsByTagName("a")[0]; if (b) b.innerHTML=this.stopLabel;
d.stopped=false; d.stable=0; d.gencount=0; clearTimeout(d.timer); this.refresh(id);
return false;
},
stop: function(id) { // stop simulation and set command text
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var b=e.getElementsByTagName("a")[0]; if (b) b.innerHTML=this.startLabel;
d.stopped=true; clearTimeout(d.timer);
return false;
},
reset: function(id) { // reload initial matrix
var e=document.getElementById(id); if (!e) return; var d=e.data;
var m=this.load(d.tid); if (!m) var m=this.empty(d.w,d.h);
this.stop(id); d.matrix=m; d.gen=0; this.draw(id);
return false;
},
clear: function(id) { // load empty matrix
var e=document.getElementById(id); if (!e) return; var d=e.data;
var tid=d.tid; d.tid=""; this.reset(id); d.tid=tid;
return false;
},
setoptions: function(id,w,h,s,t,a,l) { // options: width,height,cellsize,delaytime,autostop,limit
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
clearTimeout(d.timer); // stop simulation while changing matrix content
d.w=w; d.h=h; d.stability=a; d.limit=l; d.cellsize=s; d.delay=t;
var m2=this.empty(w,h); this.paste(0,0,m,m2); d.matrix=m2; this.draw(id);
d.min=Math.min(d.min,d.count); d.max=Math.max(d.max,d.count);
if (!d.stopped) d.timer=setTimeout('config.macros.life.refresh("'+id+'")',d.delay);
return false;
},
//}}}
// // I/O HANDLERS
//{{{
load: function(tid) { // read tiddler into matrix
var t=store.getTiddlerText(tid); if (!t) return;
var lines=t.split("\n"); var m=[];
if (lines[0]=="{{{") lines.shift();
if (lines[lines.length-1]=="}}}") lines.pop();
for (var r=0; r<lines.length; r++) { m[r]=[];
for (var c=0; c<lines[r].length; c++) m[r].push(this.getValue(lines[r].substr(c,1)));
}
return m;
},
save: function(id) { // write matrix to tiddler
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var tid=d.tid; var msg=config.messages.overwriteWarning.format([tid]);
while (!tid||!tid.length ||(store.tiddlerExists(tid)&&!confirm(msg)))
{ tid=prompt(this.titlePrompt,tid); if (!tid||!tid.length) return false; }
d.tid=tid;
var out=[];
out.push('{{{');
for (var r=0; r<m.length; r++) { var row='';
for (var c=0; c<m[r].length; c++) row+=this.getSymbol(m[r][c]);
out.push(row);
}
out.push('}}}');
var t=store.getTiddler(tid);
var txt=out.join('\n');
var who=t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
var tags=t?t.tags:[]; tags.pushUnique(this.lifeTag);
var fields=t?t.fields:{};
store.saveTiddler(tid,tid,txt,who,when,tags,fields);
story.displayTiddler(null,tid); story.refreshTiddler(tid,null,true);
return false;
},
open: function(here,event,id) { // select from a list of saved matrix tiddlers
var p=Popup.create(here); if (!p) return false;
p.style.padding="2px .5em";
var tids=store.getTaggedTiddlers(this.lifeTag);
for (var t=0; t<tids.length; t++) {
var b=createTiddlyButton(createTiddlyElement(p,"li"),tids[t].title,tids[t].title,
function() {
var cml=config.macros.life;
var id=this.getAttribute("id");
var e=document.getElementById(id); if (!e) return false; var d=e.data;
var tid=this.getAttribute("tid");
var m=cml.load(tid);
if (!m) { displayMessage(this.openErr.format([tid])); return false; }
cml.stop(id); d.tid=tid; d.matrix=m; d.gen=0; cml.draw(id);
return false;
});
b.setAttribute("id",id);
b.setAttribute("tid",tids[t].title);
}
Popup.show(p,false);
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();
return false;
},
//}}}
// // EDIT HANDLERS
//{{{
mousedown: function(here,ev,id,r,c) { // start manual edit
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
d.savedstop=d.stopped; this.stop(id); d.draw=!this.isAlive(m[r][c])?(d.gen||1):0;
return this.setcell(here,id,r,c,ev&&ev.shiftKey?-(d.gen||1):d.draw);
},
mouseover: function(here,ev,id,r,c) { // drag edit
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
if (d.draw!==undefined) this.setcell(here,id,r,c,ev&&ev.shiftKey?-(d.gen||1):d.draw);
return false;
},
mouseup: function(here,ev,id,r,c) { // end manual edit
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
if (d.savedstop!==undefined) d.stopped=d.savedstop; if (!d.stopped) this.go(id);
d.draw=undefined; d.savedstop=undefined;
return false;
},
setcell: function(here,id,r,c,v) { // set cell content and revise stats display
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
if (m[r][c]==v) return;
if (this.isAlive(m[r][c]) && !this.isAlive(v)) { d.count--; d.min=Math.min(d.min,d.count); }
if (!this.isAlive(m[r][c]) && this.isAlive(v)) { d.count++; d.max=Math.max(d.max,d.count); }
m[r][c]=v; here.style.background=this.getColor(v,d);
this.showstats(id,'');
return false;
},
//}}}
// // RENDER
//{{{
draw: function(id) { // render entire tiddlyLife container (menu, stats, and table)
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var out=[]; var count=0; var maxwidth=0;
var style="border:%0 solid %1;background:%2;height:%3 !important;width:%3; !important";
var onmousedown=d.noedit?"":"return config.macros.life.mousedown(this,event,'%4',%5,%6);";
var onmouseover=d.noedit?"":"return config.macros.life.mouseover(this,event,'%4',%5,%6);";
var onmouseup =d.noedit?"":"return config.macros.life.mouseup(this,event,'%4',%5,%6);";
var onclick =d.noedit?"return config.macros.life.toggle('%4');":"";
var tip="[%7,%8] "+(d.noedit?this.noEditTip:this.cellEditTip);
var cell='<td style="margin:0;padding:0;'+style +'" title="'+tip+'" onclick="'+onclick
+'" onmousedown="'+onmousedown+'" onmouseover="'+onmouseover+'" onmouseup="'+onmouseup+'"></td>';
out.push('<table style="table-layout:fixed;border-collapse:collapse;'
+'margin:0;padding:0;border:0;background-color:'+d.bgcolor+'">');
for (var r=0; r<m.length; r++) {
if (m[r].length>maxwidth) maxwidth=m[r].length;
out.push('<tr style="margin:0;padding:0;border:0;">');
for (var c=0; c<m[r].length; c++) {
out.push(cell.format([d.gridwidth,d.gridcolor,this.getColor(m[r][c],d),
d.cellsize,id,r,c,r+1,c+1]));
count+=this.isAlive(m[r][c]);
}
out.push('</tr>');
}
out.push('</table>');
d.count=count;
if (!d.gen) { d.gencount=d.stable=d.total=d.oldest=d.maxage=d.avgage=0; d.min=d.max=d.avg=count; }
var hdr=[];
if (!d.nomenu) hdr.push(this.cmds.format([id,d.stopped?this.startLabel:this.stopLabel,
this.opts.format([id,d.delay,d.limit,d.stability,m.length,maxwidth,d.cellsize])]));
if (!d.nostats) hdr.push('<div style="font-size:90%">'
+this.stats.format([d.gen,d.count,d.min,d.avg,d.max])+'</div>');
e.innerHTML=hdr.join('')+out.join('');
return false;
},
//}}}
// // RUN SIMULATION
//{{{
refresh: function(id) { // timer-based refresh cycle
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
this.step(id); if (!d.stopped) d.timer=setTimeout('config.macros.life.refresh("'+id+'")',d.delay);
return false;
},
step: function(id) { // calc new matrix, gather stats and display changes
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
// calculate next generation
var m2=[]; var count=agecount=agetotal=oldest=0; d.gen++; d.gencount++;
var table=e.getElementsByTagName("table")[0]; if (!table) return;
var rows=table.getElementsByTagName("tr");
for (var r=0; r<m.length; r++) {
m2[r]=[];
var cells=rows[r].getElementsByTagName("td");
for (var c=0; c<m[r].length; c++) {
var v=this.tick(d.gen,m,r,c); // apply Conway's 23/3 rule
m2[r].push(v);
var color=this.getColor(v,d);
if (cells[c].style.backgroundColor!=color)
cells[c].style.backgroundColor=color;
if (this.isAlive(v)) {
var a=this.getAge(v,d);
if (!this.isAncient(v,d)) { agecount++; agetotal+=a; }
oldest=Math.max(oldest,a);
count++;
}
}
}
d.matrix=m2; // update matrix
this.calcstats(id,count,agecount,agetotal,oldest); // calculate statistics
var msg=this.autostop(id); // autostop if conditions apply
this.showstats(id,msg); // show statistics and message (if any)
return false;
},
tick: function(gen,m,r,c) { // apply Conway's 23/3 rule
if (this.isWall(m[r][c])) return m[r][c]; // walls don't change
var prevrow=r>0?r-1:(m.length-1);
var nextrow=r<m.length-1?r+1:0;
var prevcol=c>0?c-1:(m[r].length-1);
var nextcol=c<m[r].length-1?c+1:0;
var near=this.isAlive(m[prevrow][prevcol]) + this.isAlive(m[prevrow][c]) + this.isAlive(m[prevrow][nextcol])
+this.isAlive(m[r][prevcol]) + this.isAlive(m[r][nextcol])
+this.isAlive(m[nextrow][prevcol]) + this.isAlive(m[nextrow][c]) + this.isAlive(m[nextrow][nextcol]);
if (!this.isAlive(m[r][c])&&near==3) return gen; // birth
if (this.isAlive(m[r][c])&&near==2||near==3) return m[r][c]; // stay alive
return 0; // death
},
autostop: function(id) { // autostop if run limit reached or no changes for N generations
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var msg='';
var limited=d.limit>0 && d.gencount>=d.limit;
var stabilized=d.stability>0 && d.stable>=d.stability;
if (limited || stabilized) {
this.stop(id);
msg=stabilized?this.stableMsg.format([d.stability]):this.limitMsg.format([d.limit]);
msg=this.msgfmt.format([id,d.cellcolor,d.bgcolor,msg]);
}
return msg;
},
calcstats: function(id,count,agecount,agetotal,oldest) {
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
d.stable+=(count==d.count)?1:-d.stable; // add one or reset to zero
d.count=count; d.total+=count;
d.min=Math.min(d.min,count); d.max=Math.max(d.max,count); d.avg=Math.floor(d.total/d.gen);
d.avgage=agecount?agetotal/agecount:0; d.oldest=oldest; d.maxage=Math.max(d.maxage,oldest);
return false;
},
showstats: function(id,msg) {
var e=document.getElementById(id); if (!e) return; var d=e.data; var m=d.matrix;
var stats=e.getElementsByTagName("div")[0];
if (stats) stats.innerHTML=this.stats.format([d.gen,this.zeroPad(d.count,d.max),d.min,d.avg,d.max,msg]);
return false;
}
}
//}}}
/%
|Name|TimedTiddlerTour|
|Source|http://www.TiddlyTools.com/#TimedTiddlerTour|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|automatic countdown timer triggers close of current tiddler and opens another one in its place|
usage: <<tiddler TimedTiddlerTour with: NextTiddlerTitle delay close fold>>
where:
NextTiddlerTitle
the title of any existing tiddler
delay (optional, default=15 seconds)
the number of seconds to countdown before switching to the next tiddler
'close' OR 'fold' (optional)
if used, the current tiddler is closed/folded when the next tiddler is opened
%/{{span{}}}<script>
var tid="$1";
var delay="$2"*1000; if ("$"+"2"=="$2") delay=15000; // default delay is 15 seconds
var mode="$3".toLowerCase();
var target=place.lastChild;
var now=(new Date()).getTime();
target.id=now+Math.random(); // unique ID
target.stopTime=delay+now;
target.innerHTML=delay/1000;
target.tick = function(tid,mode) {
var now=(new Date()).getTime();
var remaining=Math.floor((this.stopTime-now)/1000);
if (remaining>0) {
this.innerHTML="0:"+String.zeroPad(remaining,2);
setTimeout("var e=document.getElementById('"+this.id+"');if(e)e.tick('"+tid+"','"+mode+"')",500);
return;
}
this.innerHTML="";
var here=story.findContainingTiddler(this);
if (store.getTiddlerText(tid)) story.displayTiddler(here,tid);
if (mode=="close") story.closeTiddler(here.getAttribute("tiddler"));
if (mode=="fold") config.commands.collapseTiddler.handler(null,here,here.getAttribute("tiddler"));
}
setTimeout("var e=document.getElementById('"+target.id+"');if(e)e.tick('"+tid+"','"+mode+"')",500);
</script>
/%
|Name|ToggleAnimations|
|Source|http://www.TiddlyTools.com/#ToggleAnimations|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable animation effects|
Usage: <<tiddler ToggleAnimations with: "label">>
%/<script label="$1" title="enable/disable animation effects">
var opt="chkAnimate";
config.options[opt]=!config.options[opt];
saveOptionCookie(opt);
displayMessage('Animation effects are: '+(config.options[opt]?'ON':'OFF'));
config.macros.option.propagateOption(opt,"checked",config.options[opt],"input");
</script><script>
if ('$1'=='$'+'1') place.lastChild.innerHTML="Toggle animations";
</script>
/%
|Name|ToggleBreadcrumbs|
|Source|http://www.TiddlyTools.com/#ToggleBreadcrumbs|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|BreadcrumbsPlugin, InlineJavascriptPlugin|
|Overrides||
|Description|dynamically enable/disable BreadcrumbsPlugin display|
%/<script>
if (config.options.chkShowBreadcrumbs==undefined) config.options.chkShowBreadcrumbs=true;
</script><<option chkShowBreadcrumbs>><script>
var chk=place.lastChild;
chk.coreOnChange=chk.onchange;
chk.onchange=function() {
if (this.coreOnChange) this.coreOnChange.apply(this,arguments);
this.checked=config.options.chkShowBreadcrumbs;
if (config.macros.breadcrumbs) config.macros.breadcrumbs.refresh();
};
</script> show breadcrumbs
/%
|Name|ToggleClass|
|Source|http://www.TiddlyTools.com/#ToggleClass|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires||
|Overrides||
|Description|toggle extra class on text contained in specified wrapper class|
Usage:
<<tiddler ToggleClass with: "label" targetClass toggleClass>>
where:
"label" specifies the command/link text. Use quotes to surround text containing spaces (default is "toggle hints")
'targetClass' specifies the class of element that will be altered (default is "hint")
'toggleClass' specifies the additional class to be added or removed from all target elements (default is "highlight").
Target elements are designated by containing them in class wrappers, for example:
<<tiddler ToggleClass>> {{hint{this text will be toggled}}}... but this text won't...
%/<script label="toggle hints">
if (!(addClass instanceof Function) || !(removeClass instanceof Function)) return;
var here=story.findContainingTiddler(place); if (!here) return false;
var elems=here.getElementsByTagName("*");
var targetClass="hint"; if ("$"+"2"!="$2") targetClass="$2";
var toggleClass="highlight"; if ("$"+"3"!="$3") toggleClass="$3";
for (var e=0; e<elems.length; e++)
if (hasClass(elems[e],targetClass))
if (hasClass(elems[e],toggleClass))
removeClass(elems[e],toggleClass);
else
addClass(elems[e],toggleClass);
return false;
</script><script>
if ("$"+"1"!="$1") place.lastChild.innerHTML="$1";
</script>
/%
|Name|ToggleFullScreen|
|Source|http://www.TiddlyTools.com/#ToggleFullScreen|
|Version|1.1.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide main menu, sidebar and page header|
Usage:
<<tiddler ToggleFullScreen with: label altlabel>>
- displays 'onclick' command link that toggles full screen display mode
or
<<tiddler ToggleFullScreen##ON>>
- immediately sets full screen mode
or
<<tiddler ToggleFullScreen##OFF>>
- immediately resets full screen mode
!ON
<script> if (!config.options.chkFullScreen) window.toggleFullScreen(); </script>
!end ON
!OFF
<script> if (config.options.chkFullScreen) window.toggleFullScreen(); </script>
!end OFF
%/<script>
window.toggleFullScreen=function(here) {
config.options.chkFullScreen=!config.options.chkFullScreen;
var showmm=!config.options.chkFullScreen && config.options.chkShowLeftSidebar!==false;
var showsb=!config.options.chkFullScreen && config.options.chkShowRightSidebar!==false;
var showcrumbs=!config.options.chkFullScreen && config.options.chkShowBreadcrumbs!==false
&& config.macros.breadcrumbs && config.macros.breadcrumbs.crumbs.length;
var cw=document.getElementById('contentWrapper');
var da=document.getElementById('displayArea');
var mm=document.getElementById('mainMenu');
var sb=document.getElementById('sidebar');
var sm=document.getElementById('storyMenu');
var bc=document.getElementById('breadCrumbs');
if (cw){
for (var i=0; i<cw.childNodes.length; i++)
if (hasClass(cw.childNodes[i],'header')) { var h=cw.childNodes[i]; break; }
if (h) h.style.display=!config.options.chkFullScreen?'block':'none';
}
if (mm) {
mm.style.display=showmm?'block':'none';
da.style.marginLeft=showmm?(config.options.txtDisplayAreaLeftMargin||''):'1em';
}
if (sb) {
sb.style.display=showsb?'block':'none';
da.style.marginRight=showsb?(config.options.txtDisplayAreaRightMargin||''):'1em';
}
if (sm)
sm.style.display=!config.options.chkFullScreen ?'block':'none';
if (bc)
bc.style.display=showcrumbs?'block':'none';
var label=('$'+'1'=='$1')?'fullscreen':'$1';
var altlabel='$2'; if ('$'+'2'=='$2') altlabel=label;
if (typeof(here)!='undefined' && here!=window.place)
here.innerHTML=!config.options.chkFullScreen?label:altlabel;
var b=document.getElementById('restoreFromFullscreenButton');
if (b) removeNode(b);
else {
var b=createTiddlyElement(null,'span','restoreFromFullscreenButton','selected');
b.innerHTML='◊';
b.title='RESTORE: redisplay page header, menu and sidebar';
b.onclick=window.toggleFullScreen;
var s=b.style;
s.position='fixed'; s.top='.3em'; s.right='.3em'; s.zIndex='10001';
s.border='2px outset ButtonFace';
s.padding='0px 3px';
s.cursor='pointer';
s.fontSize='8pt';
s.backgroundColor='ButtonFace';
if (config.browser.isGecko) {
s.color='ButtonText !important';
s.MozAppearance='button';
}
document.body.insertBefore(b,null);
}
return false;
};
</script>/%
%/<script label="$1" title="FULLSCREEN: toggle display of mainmenu, sidebar, and page header">
window.toggleFullScreen(place);
return false;
</script><script>
place.lastChild.innerHTML=('$'+'1'=='$1')?'fullscreen':'$1';
</script>
/%
|Name|ToggleLeftSidebar|
|Source|http://www.TiddlyTools.com/#ToggleLeftSidebar|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide left sidebar (MainMenu)|
Usage: <<tiddler ToggleLeftSidebar with: "label">>
Config settings:
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (â–º)
config.options.txtToggleLeftSideBarLabelHide (â—„)
%/<script label="$1" title="show/hide MainMenu content">
var co=config.options;
if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
co.chkShowLeftSidebar=!co.chkShowLeftSidebar;
var mm=document.getElementById('mainMenu'); if (!mm) return;
mm.style.display=co.chkShowLeftSidebar?'block':'none';
document.getElementById('displayArea').style.marginLeft=co.chkShowLeftSidebar?'':'1em';
saveOptionCookie('chkShowLeftSidebar');
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
if (typeof(place)!='undefined' && '$1'=='$'+'1') {
place.innerHTML=co.chkShowLeftSidebar?labelHide:labelShow;
place.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
}
var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
var co=config.options;
if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
var mm=document.getElementById('mainMenu'); if (!mm) return;
mm.style.display=co.chkShowLeftSidebar?'block':'none';
document.getElementById('displayArea').style.marginLeft=co.chkShowLeftSidebar?'':'1em';
if ('$1'=='$'+'1') {
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
place.lastChild.innerHTML=co.chkShowLeftSidebar?labelHide:labelShow;
place.lastChild.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
}
</script>
/%
|Name|ToggleMinorUpdates|
|Source|http://www.TiddlyTools.com/#ToggleMinorUpdates|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable 'minor updates' option to prevent changes to the modification date/author when a tiddler is edited|
%/<<option chkForceMinorUpdate>><script>
var chk=place.lastChild;
chk.style.margin=chk.style.padding="0";
chk.title="keep current date/time/author when making tiddler changes";
</script><script label="minor changes">
config.options.chkForceMinorUpdate=!config.options.chkForceMinorUpdate;
place.previousSibling.click();
return false;
</script><script>
var s=place.lastChild.style; s.display="inline"; s.fontWeight="normal";
</script>
/%
|Name|ToggleReadOnly|
|Source|http://www.TiddlyTools.com/#ToggleReadOnly|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable global read-only state without reloading your document|
%/<<option chkHttpReadOnly>><script>
var chk=place.lastChild;
chk.style.margin=chk.style.padding="0";
chk.title="enable/disable TiddlyWiki editing functions";
chk.checked=readOnly;
chk.coreOnChange=chk.onchange;
chk.onchange=function() {
if (this.coreOnChange) this.coreOnChange();
this.checked=config.options.chkHttpReadOnly;
readOnly=config.options.chkHttpReadOnly;
story.switchTheme(config.options.txtTheme);
};
</script><script label="read-only" title="enable/disable TiddlyWiki editing functions">
place.previousSibling.click(); return false;
</script><script>
var s=place.lastChild.style; s.display="inline"; s.fontWeight="normal";
</script>
/%
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (MainMenu)|
Usage: <<tiddler ToggleRightSidebar with: "label">>
Config settings:
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (â—„)
config.options.txtToggleRightSideBarLabelHide (â–º)
%/<script label="$1" title="show/hide right sidebar content">
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
co.chkShowRightSidebar=!co.chkShowRightSidebar;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
saveOptionCookie('chkShowRightSidebar');
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (typeof(place)!='undefined' && '$1'=='$'+'1') {
place.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
if ('$1'=='$'+'1') {
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
place.lastChild.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
</script>
/%
|Name|ToggleScrollingSidebars|
|Source|http://www.TiddlyTools.com/#ToggleScrollingSidebars|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable 'fixed' positioning of left and right sidebars|
%/<script>
if (config.options.chkScrollSidebars==undefined)
config.options.chkScrollSidebars=true;
if (!config.options.txtOuterTabHeight||!config.options.txtOuterTabHeight.length)
config.options.txtOuterTabHeight="25em";
if (!config.options.txtInnerTabHeight||!config.options.txtInnerTabHeight.length)
config.options.txtInnerTabHeight="21em";
window.ToggleScrollingSidebars_setscroll = function() {
var scroll=config.options.chkScrollSidebars?'':'fixed';
document.getElementById('mainMenu').style.position=scroll;
document.getElementById('sidebar').style.position=scroll;
var outer=config.options.txtOuterTabHeight;
if (config.options.chkScrollSidebars) outer="auto";
var inner=config.options.txtInnerTabHeight;
if (config.options.chkScrollSidebars) inner="auto";
var css='#sidebarTabs .tabContents { height:'+outer+'; overflow:'+(outer!='auto'?'auto':'visible')+'; width:92.5%; }';
css+='#sidebarTabs .tabContents .tabContents { height:'+inner+' !important; }';
setStylesheet(css,'shortSidebarTabs');
}
window.ToggleScrollingSidebars_setscroll();
</script><<option chkScrollSidebars>><script>
place.lastChild.checked=config.options.chkScrollSidebars;
place.lastChild.onchange=function() {
config.options.chkScrollSidebars=this.checked;
saveOptionCookie("chkScrollSidebars");
window.ToggleScrollingSidebars_setscroll();
};
</script> sidebars scroll with page
/%
|Name|ToggleSinglePageMode|
|Source|http://www.TiddlyTools.com/#ToggleSinglePageMode|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable 'one tiddler at a time' display mode|
Usage: <<tiddler ToggleSinglePageMode with: "label">>
%/<script label="$1" title="enable/disable 'one tiddler at a time' display mode">
var opt="chkSinglePageMode";
config.options[opt]=!config.options[opt];
saveOptionCookie(opt);
displayMessage('Single-page mode is: '+(config.options[opt]?'ON':'OFF'));
config.macros.option.propagateOption(opt,"checked",config.options[opt],"input");
</script><script>
if ('$1'=='$'+'1') place.lastChild.innerHTML="Toggle 'one tiddler at a time' display";
</script>
/%
|Name|ToggleSiteMenu|
|Source|http://www.TiddlyTools.com/#ToggleSiteMenu|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide low-profile horizontal SiteMenu using checkbox or double-click on background|
Usage: <<tiddler ToggleSiteMenu>>
%/<<option chkHideSiteMenu>><script>
// show/hide site menu based on saved cookie (initial default=show menu)
if (config.options.chkHideSiteMenu==undefined) config.options.chkHideSiteMenu=false;
var show=!config.options.chkHideSiteMenu;
var m=document.getElementById('siteMenu'); if (!m) return;
m.style.display=show?"block":"none";
// set checkbox state and add onclick side-effect handler
var chk=place.lastChild;
chk.checked=!show; // checked=show menu
chk.old_onclick=chk.onclick;
chk.onclick=function(event) {
if (this.old_onclick) this.old_onclick.apply(this,arguments);
window.toggleSiteMenu();
};
// add double-click trigger to page background
// HIDE THIS FOR NOW: document.body.title="DOUBLE-CLICK on page background to "+(show?"HIDE":"SHOW")+" MENUBAR";
document.ondblclick=function(event){
if (!event) event=window.event; // IE fixup
var target=resolveTarget(event);
// ignore double-clicks that bubble through from input fields and listboxes
if (target.nodeName.toUpperCase()=="TEXTAREA") return true;
if (target.nodeName.toUpperCase()=="SELECT") return true;
if (target.nodeName.toUpperCase()=="INPUT"&&target.type.toUpperCase()=="TEXT") return true;
window.toggleSiteMenu();
// consume the event
if (event) { event.cancelBubble=true; if (event.stopPropagation) event.stopPropagation(); }
return false;
};
// onclick side-effect: show/hide site menu and sync checkboxes for this option
window.toggleSiteMenu=function() {
var opt="chkHideSiteMenu";
var m=document.getElementById('siteMenu'); if (!m) return true;
var show=m.style.display=="none";
m.style.display=show?"block":"none";
config.options[opt]=!show;
saveOptionCookie(opt);
document.body.title="DOUBLE-CLICK on page background to "+(show?"HIDE":"SHOW")+" MENUBAR";
config.macros.option.propagateOption(opt,"checked", config.options[opt],"input");
};
</script> show site menubar
/%
|Name|ToggleSiteTitles|
|Source|http://www.TiddlyTools.com/#ToggleSiteTitles|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide document 'header' area (containing SiteTitle and SiteSubtitle content)|
%/<script>
var c=document.getElementById('contentWrapper'); if (!c) return;
if (config.options.chkHideSiteTitles==undefined) config.options.chkHideSiteTitles=false;
for (var i=0; i<c.childNodes.length; i++)
if (hasClass(c.childNodes[i],"header")) { var h=c.childNodes[i]; break; }
if (!h) return;
h.style.display=config.options.chkHideSiteTitles?"none":"block";
</script><<option chkHideSiteTitles>><script>
place.lastChild.checked=!config.options.chkHideSiteTitles;
place.lastChild.onchange=function() {
var c=document.getElementById('contentWrapper'); if (!c) return;
for (var i=0; i<c.childNodes.length; i++)
if (hasClass(c.childNodes[i],"header")) { var h=c.childNodes[i]; break; }
if (!h) return;
config.options.chkHideSiteTitles=!this.checked;
h.style.display=config.options.chkHideSiteTitles?"none":"block";
saveOptionCookie("chkHideSiteTitles");
};
</script> show site titles
/%
|Name|ToggleTiddlerTags|
|Source|http://www.TiddlyTools.com/#ToggleTiddlerTags|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide tiddler tags display in all tiddlers|
Usage:
in tiddler content:
<<tiddler ToggleTiddlerTags>>
in ViewTemplate or EditTemplate:
<span class='toolbar' macro='tiddler ToggleTiddlerTags'></span>
OR, if TiddlyTools' CoreTweaks for ticket #610 is installed:
<span class='toolbar' macro='toolbar ... ToggleTiddlerTags...'></span>
%/<script label="tags" title="show/hide tiddler tags">
config.options.chkHideTiddlerTags=!config.options.chkHideTiddlerTags;
var show=config.options.chkHideTiddlerTags?'none':'block';
setStylesheet('.tiddler .tagged { display:'+show+'; }','toggleTiddlerTags')
</script><script>
if ("$1"!="$"+"1") place.lastChild.innerHTML="$1";
place.lastChild.style.fontWeight="normal";
</script>
/%
|Name|ToggleTiddlerTitles|
|Source|http://www.TiddlyTools.com/#ToggleTiddlerTitle|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide all tiddler titles (name, dates, and author)|
Usage:
in tiddler content:
<<tiddler ToggleTiddlerTitles>>
in ViewTemplate or EditTemplate:
<span class='toolbar' macro='tiddler ToggleTiddlerTitles'></span>
OR, if TiddlyTools' CoreTweaks for ticket #610 is installed:
<span class='toolbar' macro='toolbar ... ToggleTiddlerTitles ...'></span>
%/<script label="titles" title="show/hide tiddler titles">
config.options.chkHideTiddlerTitles=!config.options.chkHideTiddlerTitles;
var show=config.options.chkHideTiddlerTitles?'none':'inline';
setStylesheet('.tiddler .title, .tiddler .subtitle { display:'+show+'; }','toggleTiddlerTitles')
</script><script>
if ("$1"!="$"+"1") place.lastChild.innerHTML="$1";
place.lastChild.style.fontWeight="normal";
</script>
|~ViewToolbar|collapseOthers collapseTiddler closeTiddler closeOthers +editTiddler runTiddler copyTiddler > < * fields syncing permalink references jump|
|~CollapsedToolbar|collapseOthers expandTiddler closeTiddler closeOthers +editTiddler runTiddler > < * fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler copyTiddler deleteTiddler|
/***
|Name|UnsavedChangesPlugin|
|Source|http://www.TiddlyTools.com/#UnsavedChangesPlugin|
|Version|3.3.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|TiddlyWiki.prototype.setDirty,store.saveTiddler,store.removeTiddler|
|Description|show droplist of tiddlers that have changed since the last time the document was saved|
Display a list of tiddlers that have been changed since the last time the document was saved. The list includes all new/modified tiddlers as well as those changed with "minor edits" enabled and any tiddlers that you import during the session, regardless of their modification date.
!!!!!Usage
<<<
{{{
<<unsavedChanges panel>> or <<unsavedChanges>>
}}}
{{indent{
the ''panel'' keyword displays a 'control panel' interface containing a droplist of unsaved tiddlers and a 'goto' button, along with a command link to 'save changes'. Depending upon what other plugins are installed, several additional elements will also be displayed: When [[NestedSlidersPlugin]] is installed, the entire control panel is contained within a ''SLIDER''. When [[LoadTiddlersPlugin]] is installed, a ''REVERT'' button is added. When [[SaveAsPlugin]] is installed, a ''SAVE AS'' link is added. When [[UploadPlugin]] is installed, an ''UPLOAD'' (or ''save to web'') link is added. When [[TrashPlugin]] is installed and there are tiddlers tagged with<<tag Trash>>, an ''EMPTY TRASH'' link is added.
}}}
{{{
<<unsavedChanges list separator>>
}}}
{{indent{
the ''list'' keyword displays a simple space-separated list of unsaved tiddlers without any other command links. You can specify an optional ''separator'' value that can be used in place of the default space character. For example, you can specify {{{"<br>"}}} as the separator in order to display each link, one per line.
}}}
{{{
<<unsavedChanges command label tip>>
}}}
{{indent{
the ''command'' keyword displays a single 'command link' that, when clicked, displays a ~TiddlyWiki popup containing the list of unsaved tiddlers, the 'save changes' command and, depending upon what other plugins are installed, additional commands for 'save as', 'upload', and 'empty trash' (similar to the panel display described above).
You can specify optional ''label'' and ''tip'' parameters in the macro to customize the command link text and tooltip. The default label for the command link is: "There %1 %0 unsaved tiddler%2...", where:
* %0 is automatically replaced with the number of unsaved changes
* %1 is either "is" (if changes=1) or "are" (if changes>1)
* %2 is either blank (if changes=1) or "s" (if changes>1)
resulting in the text: //"There is 1 unsaved tiddler...", "There are 2 unsaved tiddlers...", etc.//
}}}
<<<
!!!!!Examples
<<<
^^//note: the following examples will not display any output unless you have already created/modified tiddlers in the current document.//^^
{{{<<unsavedChanges>>}}}
<<unsavedChanges>>
----
{{{<<unsavedChanges command>>}}}
<<unsavedChanges command>>
----
{{{<<unsavedChanges list>>}}}
<<unsavedChanges list>>
----
{{{<<unsavedChanges list "<br>">>}}}
<<unsavedChanges list "<br>">>
<<<
!!!!!Revisions
<<<
2009.03.02 [3.3.3] fix handling for titles that contain HTML special chars (lt,gt,quot,amp)
2008.09.02 [3.3.2] cleanup popup list output generation and added timestamps/sizes to popup display
2008.08.23 [3.3.1] added optional custom 'label' and 'tip' params to 'command' mode and defined default values for mode, label, tip, and separator as object properties for I18N/L10N-readiness.
2008.08.21 [3.3.0] complete re-write of rendering and refresh processing to support multiple instances and automatic self-refresh (no longer depends upon core refresh notifications)
2008.08.21 [3.2.0] added 'command' option for link+popup as alternative to 'control panel' interface
2008.04.22 [3.1.2] use SaveAsPlugin instead of obsolete NewDocumentPlugin to add "save as" link
2007.12.22 [3.1.1] hijack removeTiddler() instead of low-level deleteTiddler() to correct tracking and refresh handling issues. in saveTiddler(), check for 'tiddler rename' (title!=newtitle) and adjust list accordingly.
2007.12.21 [3.1.0] added support for {{{<<unsavedChanges list separator>>}}} usage to unsaved tiddlers as a simple list of links, embedded in tiddler content (e.g., [[MainMenu]])
2007.12.20 [3.0.0] rewrite to track ALL changed tiddlers, including imports and minor edits, regardless of saved modification dates. Also, rewrote display logic to directly refresh macro output instead of triggering a page refresh. The entire process is MUCH more efficient now.
2007.08.02 [2.0.0] converted from inline script
2007.01.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.UnsavedChangesPlugin= {major: 3, minor: 3, revision: 3, date: new Date(2009,3,2)};
config.macros.unsavedChanges = {
changed: [], // list of currently unsaved tiddler titles
defMode: "panel",
defSep: " ",
defLabel: "There %1 %0 unsaved tiddler%2...",
defTip: "view a list of unsaved tiddler changes",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var wrapper=createTiddlyElement(place,"span",null,"unsavedChanges");
wrapper.setAttribute("mode",params[0]||this.defMode);
wrapper.setAttribute("sep",params[1]||this.defSep); // for 'list' mode
wrapper.setAttribute("label",params[1]||this.defLabel); // for 'command' mode
wrapper.setAttribute("tip",params[2]||this.defTip); // for 'command' mode
this.render(wrapper);
},
render: function(wrapper) {
removeChildren(wrapper); // make sure its empty
if (!this.changed.length) return; // no changes = no output
switch (wrapper.getAttribute("mode")) {
case "command": this.command(wrapper); break;
case "list": this.list(wrapper); break;
case "panel": default: this.panel(wrapper); break;
}
},
refresh: function() {
var wrappers=document.getElementsByTagName("span");
for (var w=0; w<wrappers.length; w++)
if (hasClass(wrappers[w],"unsavedChanges"))
this.render(wrappers[w]);
},
list: function(place) { // show simple list of unsaved tiddlers
wikify("[["+this.changed.join("]]"+place.getAttribute("sep")+"[[")+"]]",place);
},
command: function(place) { // show command link with popup list
var c=this.changed.length;
var txt=place.getAttribute("label").format([c,c==1?'is':'are',c==1?'':'s']);
var tip=place.getAttribute("tip");
var action=function(ev) { if (!ev) var ev=window.event;
var p=Popup.create(this); if (!p) return false;
var d=createTiddlyElement(p,"div");
d.style.whiteSpace="normal"; d.style.width="auto"; d.style.padding="2px";
// gather pretty links for changed tiddlers
var list=[]; var item=" [[%1 - %0 (%2 bytes)|%0]] ";
for (var i=config.macros.unsavedChanges.changed.length-1; i>=0; i--) {
var tid=store.getTiddler(config.macros.unsavedChanges.changed[i]);
if (!tid) continue;
var when=tid.modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss');
list.push(item.format([tid.title,when,tid.text.length]));
}
wikify("@@white-space:nowrap;"+list.join("<br>")+"@@",d);
if (!readOnly) {
var t="\n----\n";
t+="@@white-space:nowrap;display:block;text-align:center; ";
t+="<<saveChanges>>";
t+=config.macros.saveAs?" | <<saveAs>>":"";
t+=config.macros.upload?" | <<upload>>":"";
t+=(config.macros.emptyTrash&&store.getTaggedTiddlers("Trash").length)?" | <<emptyTrash>>":"";
t+=" @@";
wikify(t,d);
}
Popup.show(p,false);
ev.cancelBubble=true; if(ev.stopPropagation)ev.stopPropagation();
return(false);
}
createTiddlyButton(place,txt,tip,action,"button");
},
panel: function(place) { // show composite droplist+buttons+commands
// gather changed tiddlers (in reverse order by date - most recent first)
var tids=[]; for (var i=this.changed.length-1; i>=0; i--)
{ var t=store.getTiddler(this.changed[i]); if (t) tids.push(t); }
tids.sort(function(a,b){return a.modified<b.modified?-1:(a.modified==b.modified?0:1);});
// generate droplist items
var list=[]; var item='<option value="%0">%1 - %0 (%2 bytes)</option>';
for (var i=tids.length-1; i>=0; i--) {
var when=tids[i].modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss');
list.push(item.format([tids[i].title.htmlEncode(),when,tids[i].text.length]));
}
// display droplist, buttons, and command links
var out=''; var c=this.changed.length;
var NSP=config.formatters.findByField("name","nestedSliders");
var summary=this.defLabel.format([c,c==1?'is':'are',c==1?'':'s'])
out+=NSP?'+++(unsaved)['+summary+'|'+this.defTip+']...':(summary+"\n");
out+='<html><form style="display:inline"><!--\
--><select size="1" name="list" \
title="select a tiddler to view" \
onchange="var v=this.value; if (v.length) story.displayTiddler(null,v);"><!--\
-->'+list.join('')+'<!--\
--></select><!--\
--><input type="button" value="goto" onclick="this.form.list.onchange();">';
if (config.macros.loadTiddlers) {
out+='<input type="button" value="revert" \
title="import the last saved version of this tiddler" \
onclick="var v=this.form.list.value; if (!v.length) return; \
var t=\'<\'+\'<loadTiddlers [[tiddler:\'+v+\']] \'; \
t+=document.location.href; \
t+=\' confirm force noreport>\'+\'>\'; \
var e=document.getElementById(\'executeRevert\'); \
if (e) e.parentNode.removeChild(e); \
e=document.createElement(\'span\'); \
e.id=\'executeRevert\'; \
wikify(t,e);">';
}
out+='</form></html>';
if (!readOnly) {
out+='\n{{small nowrap{';
out+="<<saveChanges>>";
out+=config.macros.saveAs?" | <<saveAs>>":"";
out+=config.macros.upload?" | <<upload>>":"";
out+=(config.macros.emptyTrash&&store.getTaggedTiddlers("Trash").length)?" | <<emptyTrash>>":"";
out+='}}}';
}
out+=NSP?'===':'';
wikify(out,place);
}
};
// hijack store.saveTiddler() to track changes to tiddlers
if (store.showUnsaved_saveTiddler==undefined) {
store.showUnsaved_saveTiddler=store.saveTiddler;
store.saveTiddler=function(title,newtitle) {
if (title!=newtitle) {
var i=config.macros.unsavedChanges.changed.indexOf(title);
if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove old from list
}
var i=config.macros.unsavedChanges.changed.indexOf(newtitle);
if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove new title from list
config.macros.unsavedChanges.changed.push(newtitle); // add new title to END of list
var t=this.showUnsaved_saveTiddler.apply(this,arguments);
if (!this.notificationLevel) config.macros.unsavedChanges.refresh();
return t;
}
}
// hijack store.removeTiddler() to track changes to tiddlers
if (store.showUnsaved_removeTiddler==undefined) {
store.showUnsaved_removeTiddler=store.removeTiddler;
store.removeTiddler=function(title) {
var i=config.macros.unsavedChanges.changed.indexOf(title);
if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove from list
this.showUnsaved_removeTiddler.apply(this,arguments);
if (!this.notificationLevel) config.macros.unsavedChanges.refresh();
}
}
// hijack store.setDirty() function to reset change list after file save
// note: do NOT hijack the prototype function. This hijack should only be applied to
// the main 'store' instance only (i.e., don't refresh when loading temporary store
// as part of ImportTiddlers processing)
if (store.showUnsaved_setDirty==undefined) {
store.showUnsaved_setDirty=store.setDirty;
store.setDirty = function(flag) {
var refresh=this.isDirty() && !flag; // 'dirty' to 'clean', force a refresh...
this.showUnsaved_setDirty.apply(this,arguments); // but change the flag first.
if (refresh) {
config.macros.unsavedChanges.changed=[]; // clear changed list
config.macros.unsavedChanges.refresh();
}
}
}
//}}}
/***
<<tiddler UploadPluginDoc>>
!Code
***/
//{{{
// // ***** ELS 2008.09.08
// // ***** DISABLED OVERRIDE OF saveOptionCookie()
// // ***** TO PREVENT CONFLICT WITH CookieJarPlugin
version.extensions.UploadPlugin = {
major: 3, minor: 3, revision: 1,
date: new Date(2006,3,30),
type: 'macro',
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'
};
//}}}
////+++!![config.lib.file]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.file) config.lib.file= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.file.dirname = function (filePath) {
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
config.lib.file.basename = function (filePath) {
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
window.basename = function() {return "@@deprecated@@";};
//}}}
////===
////+++!![config.lib.log]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.log) config.lib.log= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.Log = function(tiddlerTitle, logHeader) {
if (version.major < 2)
this.tiddler = store.tiddlers[tiddlerTitle];
else
this.tiddler = store.getTiddler(tiddlerTitle);
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = tiddlerTitle;
this.tiddler.text = "| !date | !user | !location |" + logHeader;
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[tiddlerTitle] = this.tiddler;
else
store.addTiddler(this.tiddler);
}
return this;
};
config.lib.Log.prototype.newLine = function (line) {
var now = new Date();
var newText = "| ";
newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";
newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";
newText += config.options.txtUserName + " | ";
var location = document.location.toString();
var filename = config.lib.file.basename(location);
if (!filename) filename = '/';
newText += "[["+filename+"|"+location + "]] |";
this.tiddler.text = this.tiddler.text + "\n" + newText;
this.addToLine(line);
};
config.lib.Log.prototype.addToLine = function (text) {
this.tiddler.text = this.tiddler.text + text;
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[this.tiddler.tittle] = this.tiddler;
else {
store.addTiddler(this.tiddler);
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
}
if (version.major < 2)
store.notifyAll();
};
//}}}
////===
////+++!![config.lib.options]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.options) config.lib.options = {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.options.init = function (name, defaultValue) {
if (!config.options[name]) {
config.options[name] = defaultValue;
saveOptionCookie(name);
}
};
//}}}
////===
////+++!![PasswordTweak]
//{{{
version.extensions.PasswordTweak = {
major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),
type: 'tweak',
source: 'http://tiddlywiki.bidix.info/#PasswordTweak'
};
//}}}
/***
!!config.macros.option
***/
//{{{
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordType = "password"; // password | text
config.macros.option.onChangeOption = function(e)
{
var opt = this.getAttribute("option");
var elementType,valueField;
if(opt) {
switch(opt.substr(0,3)) {
case "txt":
elementType = "input";
valueField = "value";
break;
case "pas":
elementType = "input";
valueField = "value";
break;
case "chk":
elementType = "input";
valueField = "checked";
break;
}
config.options[opt] = this[valueField];
saveOptionCookie(opt);
var nodes = document.getElementsByTagName(elementType);
for(var t=0; t<nodes.length; t++) {
var optNode = nodes[t].getAttribute("option");
if (opt == optNode)
nodes[t][valueField] = this[valueField];
}
}
return(true);
};
config.macros.option.handler = function(place,macroName,params)
{
var opt = params[0];
var size = 15;
if (params[1])
size = params[1];
if(config.options[opt] === undefined) {
return;}
var c;
switch(opt.substr(0,3)) {
case "txt":
c = document.createElement("input");
c.onkeyup = this.onChangeOption;
c.setAttribute ("option",opt);
c.size = size;
c.value = config.options[opt];
place.appendChild(c);
break;
case "pas":
// input password
c = document.createElement ("input");
c.setAttribute("type",config.macros.option.passwordType);
c.onkeyup = this.onChangeOption;
c.setAttribute("option",opt);
c.size = size;
c.value = config.options[opt];
place.appendChild(c);
// checkbox link with this password "save this password on this computer"
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option","chk"+opt);
place.appendChild(c);
c.checked = config.options["chk"+opt];
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
break;
case "chk":
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option",opt);
place.appendChild(c);
c.checked = config.options[opt];
break;
}
};
//}}}
/***
!! Option cookie stuff
***/
//{{{
window.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;
window.loadOptionsCookie = function()
{
var cookies = document.cookie.split(";");
for(var c=0; c<cookies.length; c++) {
var p = cookies[c].indexOf("=");
if(p != -1) {
var name = cookies[c].substr(0,p).trim();
var value = cookies[c].substr(p+1).trim();
switch(name.substr(0,3)) {
case "txt":
config.options[name] = unescape(value);
break;
case "pas":
config.options[name] = unescape(value);
break;
case "chk":
config.options[name] = value == "true";
break;
}
}
}
};
/****** ELS 2008.09.08 ******* DISABLED HIJACK TO PREVENT CONFLICTS WITH CookieManagerPlugin
window.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;
window.saveOptionCookie = function(name)
{
var c = name + "=";
switch(name.substr(0,3)) {
case "txt":
c += escape(config.options[name].toString());
break;
case "chk":
c += config.options[name] ? "true" : "false";
// is there an option link with this chk ?
if (config.options[name.substr(3)]) {
saveOptionCookie(name.substr(3));
}
break;
case "pas":
if (config.options["chk"+name]) {
c += escape(config.options[name].toString());
} else {
c += "";
}
break;
}
c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
document.cookie = c;
};
*****************************************/
//}}}
/***
!! Initializations
***/
//{{{
// define config.options.pasPassword
if (!config.options.pasPassword) {
config.options.pasPassword = 'defaultPassword';
window.saveOptionCookie('pasPassword');
}
// since loadCookies is first called befor password definition
// we need to reload cookies
window.loadOptionsCookie();
//}}}
////===
////+++!![config.macros.upload]
//{{{
config.macros.upload = {
accessKey: "U",
formName: "UploadPlugin",
contentType: "text/html;charset=UTF-8",
defaultStoreScript: "store.php"
};
// only this two configs need to be translated
config.macros.upload.messages = {
aboutToUpload: "About to upload TiddlyWiki to %0",
errorDownloading: "Error downloading",
errorUploadingContent: "Error uploading content",
fileNotFound: "file to upload not found",
fileNotUploaded: "File %0 NOT uploaded",
mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
urlParamMissing: "url param missing",
rssFileNotUploaded: "RssFile %0 NOT uploaded",
rssFileUploaded: "Rss File uploaded to %0"
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.handler = function(place,macroName,params){
// parameters initialization
var storeUrl = params[0];
var toFilename = params[1];
var backupDir = params[2];
var uploadDir = params[3];
var username = params[4];
var password; // for security reason no password as macro parameter
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (storeUrl) {
prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);
}
else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt,
function () {
config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;},
null, null, this.accessKey);
};
config.macros.upload.UploadLog = function() {
return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );
};
config.macros.upload.UploadLog.prototype = config.lib.Log.prototype;
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";
line += uploadDir + " | " + toFilename + " | " + backupDir + " |";
this.newLine(line);
};
config.macros.upload.UploadLog.prototype.endUpload = function() {
this.addToLine(" Ok |");
};
config.macros.upload.basename = config.lib.file.basename;
config.macros.upload.dirname = config.lib.file.dirname;
config.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)
{
// parameters initialization
storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);
if (toFilename === '') {
toFilename = config.lib.file.basename(document.location.toString());
}
backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
username = (username ? username : config.options.txtUploadUserName);
password = config.options.pasUploadPassword; // for security reason no password as macro parameter
clearMessage();
// only for forcing the message to display
if (version.major < 2)
store.notifyAll();
if (!storeUrl) {
alert(config.macros.upload.messages.urlParamMissing);
return;
}
var log = new this.UploadLog();
log.startUpload(storeUrl, toFilename, uploadDir, backupDir);
if (document.location.toString().substr(0,5) == "file:") {
saveChanges();
}
displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));
this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);
if(config.options.chkGenerateAnRssFeed) {
//var rssContent = convertUnicodeToUTF8(generateRss());
var rssContent = generateRss();
var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";
this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password,
function (responseText) {
if (responseText.substring(0,1) != '0') {
displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));
}
else {
if (uploadDir) {
rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);
} else {
rssPath = config.macros.upload.basename(rssPath);
}
displayMessage(config.macros.upload.messages.rssFileUploaded.format(
[config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
});
}
return;
};
config.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var original;
if (document.location.toString().substr(0,4) == "http") {
original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);
return;
}
else {
// standard way : Local file
original = loadFile(getLocalPath(document.location.toString()));
if(window.Components) {
// it's a mozilla browser
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
original = converter.ConvertToUnicode(original);
}
catch(e) {
}
}
}
//DEBUG alert(original);
this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir,
username, password);
};
config.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
var endSaveArea = '</d' + 'iv>';
// Locate the storeArea div's
var posOpeningDiv = original.indexOf(startSaveArea);
var posClosingDiv = original.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1))
{
alert(config.messages.invalidFileError.format([document.location.toString()]));
return;
}
var revised = original.substr(0,posOpeningDiv + startSaveArea.length) +
store.allTiddlersAsHtml() + "\n\t\t" +
original.substr(posClosingDiv);
var newSiteTitle;
if(version.major < 2){
newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();
} else {
newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();
}
revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");
var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir,
username, password, function (responseText) {
if (responseText.substring(0,1) != '0') {
alert(responseText);
displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));
}
else {
if (uploadDir !== '') {
toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);
} else {
toFilename = config.macros.upload.basename(toFilename);
}
displayMessage(config.macros.upload.messages.mainFileUploaded.format(
[config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);
var log = new config.macros.upload.UploadLog();
log.endUpload();
store.setDirty(true); store.setDirty(false); // ELS - toggle to ensure notification event after upload
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
}
);
};
config.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir,
username, password, callbackFn) {
var boundary = "---------------------------"+"AaB03x";
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
if (window.netscape){
try {
if (document.location.toString().substr(0,4) != "http") {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}
}
catch (e) { }
}
//DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");
// compose headers data
var sheader = "\r\n";
sheader += "--" + boundary + "\r\nContent-disposition: form-data;name=\"";
sheader += config.macros.upload.formName +"\"\r\n\r\n";
sheader += "backupDir="+backupDir
+";user=" + username
+";password=" + password
+";uploaddir=" + uploadDir
+ ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data;name=\"userfile\";filename=\""+toFilename+"\"\r\n";
sheader += "Content-Type: " + config.macros.upload.contentType + "\r\n";
sheader += "Content-Length: " + content.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
var data;
data = sheader + content + strailer;
//request.open("POST", storeUrl, true, username, password);
request.open("POST", storeUrl, true);
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200)
callbackFn(request.responseText);
else
alert(config.macros.upload.messages.errorUploadingContent);
}
};
request.setRequestHeader("Content-Length",data.length);
request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
request.send(data);
};
config.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir,
username, password) {
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
try {
if (uploadUrl.substr(0,4) == "http") {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
} catch (e) { }
//request.open("GET", document.location.toString(), true, username, password);
request.open("GET", document.location.toString(), true);
request.onreadystatechange = function () {
if (request.readyState == 4) {
if(request.status == 200) {
config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl,
uploadToFilename, uploadDir, uploadBackupDir, username, password);
}
else
alert(config.macros.upload.messages.errorDownloading.format(
[document.location.toString()]));
}
};
request.send(null);
};
//}}}
////===
////+++!![Initializations]
//{{{
config.lib.options.init('txtUploadStoreUrl','store.php');
config.lib.options.init('txtUploadFilename','');
config.lib.options.init('txtUploadDir','');
config.lib.options.init('txtUploadBackupDir','');
config.lib.options.init('txtUploadUserName',config.options.txtUserName);
config.lib.options.init('pasUploadPassword','');
config.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\n";
//}}}
////===
////+++!![Core Hijacking]
//{{{
config.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;
//}}}
////===
/***
|''Name:''|UploadPlugin|
|''Type:''|Plugin|
|''Version:''|3.3.1 (30/03/2006)|
|''Source:''|[[TiddlyWiki.BidiX.info/#UploadPlugin|http://tiddlywiki.BidiX.info/#UploadPlugin]]|
|''Documentation:''|[[TiddlyWiki.BidiX.info/#UploadPluginDoc|http://tiddlywiki.BidiX.info/#UploadPluginDoc]]|
|''Author:''|BidiX[at]BidiX.info |
|''Required:''| TW 2.0.6 or better, PHP 4.4 (perhaps less but not working on 4.1.2) |
!Description
UploadPlugin, with [[store.php]], provides @@upload@@ and @@save to web@@ functions. See HowToUpload ([[HowToUpload|http://TiddlyWiki.bidix.info/#HowToUpload]]).
UploadPlugin uses Username and Password from UploadOptions stored in cookies to authenticate itself to [[store.php]].
French translation available as a separate tiddler UploadPluginMsgFR
!!UploadPlugin
*If the TiddlyWiki is viewed from @@local disk@@ :
**{{{<<saveChanges>>}}}
***display as ''save to disk''
***work as usual
**{{{<<upload>>}}}
***display as ''upload''
***after saving to disk, upload in the storeUrl directory.
*If the TiddlyWiki is viewed from @@website@@ and is @@readOnly@@ (in core TiddlyWiki since 2.0.6) :
**{{{<<saveChanges>>}}}
***print nothing
***has been disabled
**{{{<<upload>>}}}
***display as '''save to web''
***save in the uploadDir directory.
*If GenerateAnRssFeed in AdvancedOptions is set :
**generate the content of the RSSFeed
**upload the RssFile in uploadDir directory
**Caution : use the SiteUrl tiddler to specify the right url of the TiddlyWiki in the generated RssFile
*DisplayMessage
*Log upload action in UploadLog
hint : if UploadLog is the first tiddler in the Timeline Tab, no tiddler has been updated since last upload.
!![[store.php]]
*UserVariables to set :
//{{{
$AUTHENTICATE_USER = true; // true | false
$USERS = array(
'UserName1'=>'Password1',
'UserName2'=>'Password2',
'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false; // true | false
//}}}
*method GET
**display an information page
*method POST
**if $~AUTHENTICATE_USER is ''true''
***presence and value of user and password are checked with $USER and $PASSWORD
**if toFilename already exists and backDir parameter specified
***rename toFilename to backupDir/toFilename.AAAAMMDD.HHSS.html
**copy temporaryUploadedFile to toFilename
** return status
!Usage :
{{{
<<upload>>
uses UploadOptions saved in cookies :
txtUploadUserName: username
pasUploadPassword : password
txtUploadStoreUrl : store script
txtUploadDir : relative path for upload directory
txtUploadFilename : upload filename
txtUploadBackupDir : relative path for backup directory
<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
optional positional parameters can be passed to overwrite UploadOptions in this order.
}}}
Install the {{{<<upload ... >>}}} macro in SideBarOptions just below {{{<<saveChanges>>}}} macro.
!User manual
See HowToUpload
!Installation :
*Install the UploadPlugin as usual
*Upload the [[store.php]] file on your php aware webserver in your TiddlyWiki directory
*Protect your server against malicious upload. Two approaches :
**set $~AUTHENTICATE_USER to true in the [[store.php]] script
***configure $USER and $PASSWORD in the [[store.php]] script on your webserver
***set UploadOptions in conformity with [[store.php]]
**Use server protection :
***for Apache web server ([[for detail see Apache documentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) :
****configure and upload the [[.htaccess]] [[.passwd]]
***for other web servers see the appropriate documentation
*Configure an upload button, for example in the SideBarOptions
!Suppported Browser
*Firefox : tested Ok
*Internet Explorer : tested Ok
*Safari : reported ok on OS X
*Others : Not tested, please report status.
!Revisions
*V 3.3.1 (30/03/2006)
**bug in backup folder when uploading rssfile fixed
*V 3.3.0 (12/03/2006)
**Code refactoring
**suppress saveChanges hijacking
*V3.2.2 (25/02/2006)
**Use PasswordTweak 1.0.1
**uploaddir is a relative path
**backupdir is a relative path
+++[previous revisions]
*V3.2.1 (13/02/2006)
**name and password added to open.request (Thanks to TedPavlic)
*V3.2.0 (14/02/2006)
**Use PassworDTweak (http://tiddlyWiki.bidix.info/#PasswordTweak) for password
*V3.1.0 (12/02/2006)
**UploadOptions in Cookies
**Username and password from UploadOptions pass to store.php script for authentification check
*V3.0.3 (03/02/2006)
**Firefox 1.5.0.1 crashes due to global var fixed
*V3.0.2 (25-Jan-2006)
**HTTPS compatible
*V3.0.1 (18-Jan-2006)
**UTF8toUnicode conversion problem in Firefox
*V3.0.0 (15-Jan-2006)
**Asynchronous upload
**Synchronous upload before unload of the page
**All strings extracted in macro config
**Compatibility checked with TW 2.0.2 & TW 1.2.39 for both FF 1.5 and IE 6
*V2.0.2 (8-Jan-2006)
**conversion of SiteTitle and SiteSubtitle in web page Title
*V2.0.1 (8-Jan-2006)
**Compatibilty with TiddlyWiki 2.0.1
*V2.0.0 (3-Jan-2006)
**Save to web
**Compatibilty with TiddlyWiki 1.2.39 and TiddlyWiki 2.0.0 Beta 6
*v1.1.0 (27-Dec-2005)
**Upload RSS File
*v1.0.3 (26-Dec-2005)
**UploadLog tiddler
*v1.0.2 (24-Dec-2005)
**Optional parameter toFilename
**Optional parameter backupDir
*v1.0.1 (23-Dec-2005)
**reformatting code
* v1.0.0 (17-Dec-2005)
** first public working version
===
// null logger : no more UploadLog and no upload logging
// BidiX - 2006/11/8
//{{{
config.macros.upload.UploadLog = function() {return this;};
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {};
config.macros.upload.UploadLog.prototype.endUpload = function() {};
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier wikified'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<span macro="tiddler SolidTiddlerBorder" style='display:none'></span>
<!--}}}-->
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.1.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|substitute fields, slices, or computed values into a wiki-syntax format string and render results dynamically|
The {{{<<wikify>>}}} macro allows you to easily retrieve values from custom tiddler fields, tiddler slices, computed values (using javascript) or just plain old literals, and assemble them into small bits of generated wiki-syntax text content that can be rendered directly into a tiddler, or used in the ViewTemplate or EditTemplate to add dynamically-generated content to each tiddler.
The {{{<<wikiCalc>>}}} macro performs the same processing as {{{<<wikify>>}}} and, in addition, passes the assembled text content through javascript's {{{eval()}}} function before rendering the results. This allows you to, for example, construct and compute mathematical expressions that use input values extracted from tiddler fields or slices.
!!!!!Documentation
> see [[WikifyPluginInfo]]
!!!!!Revisions
<<<
2008.11.16 [1.1.2] in getFieldReference(), if not a field/slice reference (or field/slice is not found), return string input unchanged instead of returning a blank string.
|please see [[WikifyPluginInfo]] for additional revision details|
2007.06.22 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.WikifyPlugin= {major: 1, minor: 1, revision: 2, date: new Date(2008,11,16)};
config.macros.wikify={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var fmt=params.shift();
var values=[];
var out="";
if (!fmt.match(/\%[0-9]/g) && params.length) // format has no markers, just join all params with spaces
out=fmt+" "+params.join(" ");
else { // format param has markers, get values and perform substitution
while (p=params.shift()) values.push(this.getFieldReference(place,p));
out=fmt.format(values);
}
if (macroName=="wikiCalc") out=eval(out).toString();
wikify(out,place);
},
getFieldReference: function(place,p) { // "slicename::tiddlername" or "fieldname@tiddlername" or "fieldname"
if (typeof p != "string") return p; // literal non-string value... just return it...
var parts=p.split(config.textPrimitives.sliceSeparator);
if (parts.length==2) {// maybe a slice reference?
var tid=parts[0]; var slice=parts[1];
if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
tid=story.findContainingTiddler(place);
if (tid) tid=tid.getAttribute("tiddler")
else tid="SiteSlices"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
}
var val=store.getTiddlerSlice(tid,slice); // get tiddler slice value
}
if (val==undefined) {// not a slice, or slice not found, maybe a field reference?
var parts=p.split("@");
var field=parts[0];
if (!field || !field.length) field="checked"; // missing fieldname, fallback: checked@tiddlername
var tid=parts[1];
if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
tid=story.findContainingTiddler(place);
if (tid) tid=tid.getAttribute("tiddler")
else tid="SiteFields"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
}
var val=store.getValue(tid,field);
}
// not a slice or field, or slice/field not found... return value unchanged
return val===undefined?p:val;
}
}
//}}}
//{{{
// define alternative macroName for triggering pre-rendering call to eval()
config.macros.wikiCalc=config.macros.wikify;
//}}}
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.1.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for WikifyPlugin|
The {{{<<wikify>>}}} macro allows you to easily retrieve values from custom tiddler fields, tiddler slices, computed values (using javascript) or just plain old literals, and assemble them into small bits of generated wiki-syntax text content that can be rendered directly into a tiddler, or used in the ViewTemplate or EditTemplate to add dynamically-generated content to each tiddler.
The {{{<<wikiCalc>>}}} macro performs the same processing as {{{<<wikify>>}}} and, in addition, passes the assembled text content through javascript's {{{eval()}}} function before rendering the results. This allows you to, for example, construct and compute mathematical expressions that use input values extracted from tiddler fields or slices.
!!!!!Usage
<<<
The syntax for use in tiddlers:
{{{
<<wikify format value value value value ...>>
<<wikiCalc format value value value value ...>>
}}}
The syntax for use in templates:
{{{
<span macro='wikify format value value value value ...'></span>
<span macro='wikiCalc format value value value value ...'></span>
}}}
where:
* ''format'' specifies the format of the wiki-syntax content (or javascript expression, if using {{{<<wikiCalc>>}}}) that will be rendered
* ''value'' parameters (space-separated), specified using any of:
** ''"tiddlername::slicename"'' - a tiddler slice reference
** ''"fieldname@tiddlername"'' - a tiddler custom field reference
** ''"""{{config.options.txtUserName}}"""'' - evaluated javascript parameter
** ''"none of the above"'' - literal text
When the ''format'' parameter contains //substitution markers// (using "%0" through "%9" character sequences), each value parameter is retrieved and embedded into the formatted content, replacing its corresponding marker. If the ''format'' parameter does //not// contain any substitution markers, then all parameters are simply joined together for output. Once the values have been formatted (and, if {{{<<wikiCalc>>}}} is used, evaluated as a javascript expression), the resulting content is then passed to the core wikify() parser to render and display it.
Notes:
* If a parameter is not recognized as fitting any of the above syntax, or if the slice/field referred to cannot be located, the reference will be inserted as literal text into the output
* When working with custom tiddler fields or tiddler slices, you can enter a special psuedo-tiddler name, ''@here'' (e.g., "fieldname@here") or ''here::'' (e.g., "here::slicename") to access custom fields and slices associated with the //current// tiddler. This //relative// reference syntax can be particularly helpful when placed directly into a ViewTemplate and/or EditTemplate definition, where it can be applied automatically to each tiddler that is displayed. Note: if you omit the ''@here'' portion of a field reference (e.g., just using "fieldname"), it is assumed to be a reference to a field in the current tiddler (i.e., it is treated as if you specified ''fieldname@here'').
<<<
!!!!!Examples
<<<
{{{
<<wikify [[This tiddler is: %0 using %1 bytes (last author: %2)]] title {{tiddler.text.length}} modifier>>
<<wikify [[The source URL for this plugin is: %0]] 'here::Source'>>
<<wikify [[The tiddler has been changed %0 times]] changecount@here>>
<<wikify [[The Primary Mid color is: @@background:%0;%0@@]] 'ColorPalette::PrimaryMid'>>
<<wikify [[This current user is: %0]] {{config.options.txtUserName}}>>
}}}
<<wikify [[This tiddler is: %0 using %1 bytes (last author: %2)]] title {{tiddler.text.length}} modifier>>
<<wikify [[The source URL for this plugin is: %0]] 'here::Source'>>
<<wikify [[The tiddler has been changed %0 times]] changecount@here>>
<<wikify [[The Primary Mid color is: @@background:%0;%0@@]] 'ColorPalette::PrimaryMid'>>
<<wikify [[This current user is: %0]] {{config.options.txtUserName}}>>
<<<
!!!!!Revisions
<<<
2008.11.16 [1.1.2] in getFieldReference(), if not a field/slice reference (or field/slice is not found), return string input unchanged instead of returning a blank string.
2008.03.08 [1.1.1] size reduction: documentation moved to [[WikifyPluginInfo]]
2008.03.07 [1.1.0] added {{{<<wikicalc>>}}} variant for evaluating assembled output as javascript before rendering the result
2007.11.11 [1.0.1] in handler(), fixed problem where a trailing space was created when no substitution markers were present in the format param.
2007.06.22 [1.0.0] initial release
<<<
<script>
BlueScreen("yowsa");
</script>
http://www.w3.org/TR/SVG/animate.html
| source file:|{{{C:\Users\Paul\Pictures\i-blur.jpg}}}|
| attached on:|22 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[i-blur|i-blur]] - {{{type=image/jpeg, size=21294 bytes, encoded=28835 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|i-blur]] or [img[tooltip|i-blur][link]]}}}
[img[tooltip|i-blur]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAITAgIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz
2iiishhRRRQAUUUUAFFFFABRRRQAUUUUAFFFLjNACUUpUikoAKKKKAFBxTt3tmmU
oJHSgCQKznpip0EUfLHcfQVX3k8ZqSOIv3wKBFgXC4yBij55RlV49TUkMUceMgMf
epjMmNucn0FIZXitS3XH1qwLXb0bApVmC8DilWcg/KMn1oGSJb4+Y9PU0u5Iz+7y
x/SoWaWX2/GkSN+Mn5aAJvMMjYeTA9BUwYY2A7FHU4piRgZ8tD9TViPTpZeSdoPU
k0tgIgkAOcs3tTvIMi5wFHpmrq2EMakBj7kc0q228YgiLD1J60DsJBaxBBuII9am
D20Q5fPsKRNPkbHnSBF9BTzbWdp8+wuw6ZpAQPeSMu2GDC/SqMk8sjFcDPtWkqXF
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
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Pictures\i-blur-nxt.jpg}}}|
| attached on:|22 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[i-blur-nxt|i-blur-nxt]] - {{{type=image/jpeg, size=40830 bytes, encoded=55290 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|i-blur-nxt]] or [img[tooltip|i-blur-nxt][link]]}}}
[img[tooltip|i-blur-nxt]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAJsA90DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3
miiivINAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKx9f16LR7U4Ia4YfI
n9TQlcRB4k8RJo9v5UJD3jj5R2Qep/wrzSWV5pWlkcu7nLMTkk065uZbu4eedy8j
nJJqKuiMeVCCiiirAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAClVSxwOtCq
WOBVtIwi8de5oAI4gi+p9akAJOAKVFL9KsIgVcCgBFiCL700jIqXORTCKYELLkYq
jMmDxWiwxVWZTn60AUGXIqq64NXWXaTVabrmmBD2zT1POKYpwSDTtwyKAJelSo3F
NjUMOaXG00gJaKF5opAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFaenao0BWOZjs
H3X7rWZRSauB6ppGsrdKsM7DzCPlfs//ANetmvILDUXtGCtlos9O6/SvQtE1xLuN
IppAWP3JP73sfesZwsM3aKKKzGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRWfquqxaZblmIMhGVU9vc+1CVwI9a1mHSbVnYgykfKv9a8v
vr6bULpp5mJZj69Kk1PUpdSumkkYkZyM9/eqVdEI2JCiiirAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKAClALHApKlTAoAmjUIOPzqVRk+1QhhUyNmmBOgC8DpT8
1EG4pVbvQA/oaO9ITmgHNAxr1A4wM1YYcZqIjcfagCjMpB3VVlX5c1qyRgrWfIvJ
FAigw+fPakHBqw6CoSMUwJo2wanADcGqkZqyhoAmT5eDSsvcU5QHWjBBwaQEVFSO
mPmHSo6QBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVm0vZLR8ryh+8p71WopAema
D4gjvYkilky3RXPU+x9/5/z6GvF7e4ktpN8bYPcdjXoXh3xJHexrBO+HHALHn6H/
ABrGcLaodzpqKKKzGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVU
1C/jsINzcyH7iev/ANagBmpalHp8GTgykfKv9T7V5nq+qyahcNlyy5yT/eP+FT63
q8l3O6B8kn529fYe1YtbwjYkKKKK0AKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACmswQZNJJII1yfwFU3lZzkmgCz5uTS/aAOAfxrNknJ4Xp601ZCKpIRrLNk9as
JN71jrKanSWnYDXWWpPMrLSUjvVlJcikM0FfigHmqqyYqUNkZpAWAcim4waajU5v
WgYjjNU5071d6ioZlBQ0AZkq4NVnXFXZEOKrSjApkkI4qwh+Wqx61NG3Y0DLsLcV
PgMPeqkZq2hoAaAehqJ028jpVojIphGcgilYCrRTnXacdqbSAKKKKACiiigAoooo
AKKKKACiiigAooooAKfHI8MgeNirDoRTKKQHoHhvxSlwq2l4wWQcKxP+eK62vEwx
VgykgjkEdq7fwz4rB2WOoOAekcp6fQ/5/wDrZTh1Q7na0UUVkMKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKrX19FYwGSTljwqDqxoAS/v4rCDe/LHhE7sa891zWJZZ
WXfmVvvEfwj0FTa1rEhdnZg079B2QVzJJYkkkk8kmtoQtqISiiitRBRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAU13CDn8qVjgVXY5bJosBHJliWJquxzx2qd+RU
LDHNWhEeB6UoUEUnejdg1cZITQ9QDU6LgZqor4Oc1ZR/lrRWZLuTLUqnFQIwqXtS
cUFywrVMslVQ2KeprJxsWmXVbBqXdmqaSdjUytUDJgcCkIzQDnmloGU5V25FU3XI
NaMwzk1UZcqaBFF+gPpTozyKVxxio1yrUwLiH5qtRnmqSmrMZoAtjpTSM0I3FAPP
NAEbgEYNQEEHBq044qFhmkwIqKCMUUgCiiigAooooAKKKKACiiigAooooAKKKKAC
iiigDsfDPiwwbLHUXzF0jmP8Hs3t79q7wEEAg5BrxKuo8NeKn04pZ3rF7Tor9TF/
iPaspw6odz0WimxyJLGskbBkYZDKcginViMKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiioLu6i
s4DLKcAdB3J9BQAl5eRWUBlkPsqjqxrhtY1ZyWnlIaRuETsP/rVNquqNIWuZzwOE
QfyFcjPO9zMZJDkn9B6VtCAhskjSyM7sWZjkk02iitBBRRRTAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKWjFACUUuKKQCU
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
xu+9n6GmPMXJLY/Cq5Jz71QE8wUgYyCPWqsmePepBIXPJBxSbVyxcEr2xQCIsgt8
27A9O1IQccg5PQ1LLC0YQcfOM5zUttaNdBwDyg4XPNAyk2c/Sm8mtH+zZTBuCnce
o9qrvayRuwCngelK4XI4mUghvwoO3PHOelI8bRkZFLuU4IHsaaEWLc4cAdT1zVtI
12bd+GB5Q9DWepwcgZ96vowlCO/MY6t3H1q0yJIsLGJG81cR7epqx9kiWNvtMpUS
H5ZAOAfeli2FQodRG3Q9qllitllSCd9jEAq+co31pkDw1mfLjuQFmQfLJEeD7015
oVlcEgMo++P4qrN9nN0TxGy/KOcqf/rU+O7tGVv3WHPDx9vqKaZLQk8KNnnbI43J
xwahQJ5GflUA4cdwatNIqyJCGYqo3KcZK1XmjDKzEjL9Md6YIhdjbsCiqR0YZ4Ip
DeQyAPJEcD5SP7w9frVadHWX5TuXH51GsrBRkcEdcdDU8xajct+fHtZEbJzxuH3h
/jUqYk3EuA/t3Hr9azDOCMFepycfzpVum24b19OvvRcbgaUqbi5GC2BwD+oqIxBT
kzBlYYB9/eq/nqzEk4JPUHvTybcrvy24H5lzTuTy2JUhfBbzM8Yx61GFlTAc8EfK
ad5fz5jm+VueakaGTrksmOcHpSYEplmQLlQ3Yd81mysVuCVO0diKuqJQrIGGV5Hr
VOfJkJGOeSKzZcdx8JbftDYbr7Gte3WZiuCobqVPRqxoVVhkMce3UVq2ksibi7Ao
vIPpSHIlnjmw7ovA6g9UP+FZuxg+0kI3Xb/hW6FZk3rICD37j6+1ZN9bsrE5APYf
4GkJMZFJti2O/wB4/eHr71C42sd7EH1HeoT5gk6gN/EvrRvEoyGK+opodj1miiiu
Q3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAZND
HPE0cqhkbqDXJaxohgRsgyWzHhu6/X/GuwpGVXUqwBUjBBHBpp2EeSTwSWUuG5Q/
db1qeC4wetdbrOgqkTvEpeA8sndPf6VxdzbyWUmD80Z+639K3jJMRuW1z05rXgnB
A5rkYLjGOa1rW66c07DOoikyBzVlWzWLb3BPetGKTI60AXUeplNVVbIqVX9aALAN
OBqINTwaYh9FNzTqACiiigBaKSigBaKKKAEZQ6lT0NZNzbmJiccVr0yWMSptP4H0
oGmYJ45FJk1PcwtGx46dRVamUmPzmlzUYNBamPmHGkoBoJFBSkNPNJtNOopD5hmz
JphTtU1GKAuQGKmmI9as4pCKLiIApFSKcU/bTcYpCJFNSq1QKcVICKRLJw1PB4qA
GnBqYibNJuqPdRuoEPLUbqiLU0vQBNuppeot5xTGfjrSKQ95ageSms4FQPKPWkWk
K8nXJqrLcKuRnmklnUd6zZ58ksaZaHXN05UkdKqBnkPzGml2lPPSpkXjpQVYkjTH
0qwvTFRLTicc00hNkhbHFRs+BzTS+RxUDsR9KpGTYrvVd24waczA1XlfApgiKVut
Mgs5LqQBQdpNWraxe5cEqcHoP6/StuOBLeMKmM9z61LZViG2tY7WLagGe5p7Cn96
Q8VmZyInpqxlznsKk27m9qf5O5chwg7ZqkZtiPKEj2hTn2rNnBIJj3fjVphsba4Z
vpwKq3EeRle/bdVElIyHdgjP0pGOVzmh42A4B+tEYLnB/OmMaoO4HHXvWvaxIyYc
KUAy+apiIwkSjDJ0xWhFvjVeAC5AUnp9DU3Eypd2hiUyt8yMcRkVZhsGggQpIBI/
Kn+lb62kU6pAUVfLGZI/TPcVDLY+WXDOPJbAVj0B7UE3M9vPXDBF/A9G9KqTb1Ct
tKkHcP6itYWkhXa7KSOJOfyNZ8rSJI+5T1w2Oc+hFAXMu8kEkYAHGcrx09qpIwBw
a1Z5AQ6FAOOeP1FZhARypGaaKQ5XP8HHvVmKN8kF9rt27GqyPg4AzVmCIOuHkHHO
0nFUhMuwgCRER1QgfMknQ/Q1owi2BkmgILoCHgfkN9KxEaFQXB3dijdfwq5DNBHa
5lQvC7YJHBQ+op3IaL5msDZ744kKOfmhJ5U+oqq/2JDGMnYTww+9Gff1FSvNaxyx
qUBVV+SdOM+xqQzWdx821UkHKuBwfrVdCNiN5YzI0yHayDnHIYetRtc27GMs2Oc8
fwmopLuIK3lx7H6NF1VvpVYSxmUB15X7u7t7GncfLcfelHV3jZRJuG70PuKpPIy5
Ug888etSTzRqmY/uMcFT1U1RE7LxnNQ2aRjoXBL0DJggZBxTBIuQNvA5HHSrVldB
rdkeMMM8Ejp7Vaja3kbJiAJPT+lK4aoyWKY+7jPOKNygZAxkVp3FqNrsi/dPSqDM
j7SV4PBFAJjFYHChyB2q/G0kcG8PkZwwzWd5YRgWBw3Q1PEDtlAYZAHHtTTFJE5n
cEMgO4dfcVA8xc52HB7+1M3SZCgc5+U5pyM7E7iAQefahj2FWJlZWVse/arcMkkJ
+8BlsA46expqWjEMC2D3XP6invaSx7fmBGOvqKhoLplxXbzNyMF2dVHb/wCtUdxI
DtwAD1IPQ1Q3kkSCUg5xn/Gp5plnjOBtlXjr1FKwWK91y3oR0NU/NMZweT7VLLK4
QKxyB+Yqm5BOelMpI9qooorkNQooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigArn9Y0FJo3kt4wQfvxDv7iugopp2EeR3VrJZSdz
GTw39D71JBPgjmvQNY0SK/jd41XzSPmU9H/wPvXnl9YzadOQwbZnHI5Hsa3jK4jY
trojHNa9vdZ71yEFz71qW9yOMtTsO51sU2e9WFbNYNvcdMNWnDcAjmgZpI/apQap
q+eRU6PnrQIsA0uajBpwNMQ/NLTaM0AOopM0UALRRRQAtFJRQBFcQCZOOHHQ1iXE
TRsSBjHUeldBVa6tvNXev3x+tA0zB30oOaJ4imWXp3HpUIbFMonzgUA1Fv5p4YEU
CJMijrUW6nbqAJMUYpoal3c0DuLijFG7il3DFILgBRtpQaMjNA7jdtJgink4pD0p
CG7iKXfSU00CJd9JvqL6Gk3460xE2+mM9Rb8VE8tIaJ3kqBpfeoXlx3qtJP3zQWk
TvNVWe5C9Kqy3eQQKoSXBzgcmgtFia565PPYVWyZDz0pqqWbLc1YRMUxodGnFTLw
KavSniiwNi96GPFNJ4zUZkz061SRm3cGfBqNn4pHIPNVy5Y7VGT0xTElcHYjoas2
lk80g3Lljzg9B7mprKxaRxxl+pPZa2kiS3jwo+pPU1LZtGPcjiiS3jKryT1b1qNu
TipHOenemhcD3rNsmTGYqNuTipXOBVV5dnI60IxY52MfcYprTHGQx49qgE4diCfw
pJXRQAGJ9QDVozZK14jDEgH0A5qi90FYjZtHripHIfLRg8d6pTSFzg9RTEkSSlhD
vVgQ3pUdsfm/rUWGHGTj0qa1+VieoHOKBmrHtZwuQyAfMpH6irUEghm89MSQY+ZC
M8fSqNo6FC247SeuOV+taBnh3CMKDHjlgMFT60WIZrJOsoaRHQ4GEc8HHpR5Q8or
tyuPmUH9RWEk7Qlk+Uqx+X3q7YTNLIY0b5gMpk9fUUrCZJLFcxE4Cs2PX7y1QuVk
Qg7SSoyp/pV66MxiBj6pzGf5rWXLe7RwMCTk/wCy1CYIzrmbbjBweoz29qpM+5ix
HWp72XzJDkcg81UpmiQ8PtORU6EEBpG3Z4wOoqscU+MFmAGc07gy8BErJG+Hjbo3
cVq2luLhli3RkKeMkYb2NZsKq5ZwoMqj7pHDVdgj3Rqdm1c/Njn8RVIzZZMNiHdV
3Ic4aCTsfUGkhkto1Me0FTwQe1OZfJPmMY7uLHDA5ZfYikkn0+aEsIwvqAefqKpI
hkUhs/8AUv8AKP4Jf7vsfaqDTrh1lCs68Bv74q49nZsoCSM3GRz2qhK0cf7kgNC3
Kt/dNJ6DiNf7OoDIoOBnB7is+YASHb93qK0l+zvjeoyDtbH8xTrnToSrvHISB0Ht
UtGilYzIJ2hcEdO49a2IrhSysuNpGG/oay2s3UZHOTgUtsSkpRuvvUlOzNlbhA+4
D5sYIJpsot5BuCAHqP6iqeBuDJz3IPcVMrRYDFcg84B7UIzaJXt4Wh2JyCMgnqD6
VRWJtwaPGcY21pJ5TngAH/PNMktk2kxvtbuD61SEmZjCUduPrQ4kLMxxnGCQetDI
6vh2xS8cbWz7Uyi/bpwm4kjsQatgZgfnIJwBnpWfEGRWdWyOhXNOaR42Q5ypHLf4
+9Jk2G3FqY8urArjn3qpv2KATuU9D6Vc807GyThuQaoSqq/dPHpUsuIjMTwTu9K0
rTSoxDm5Xc55xkjbRpliFC3Ew+b+BT2966Oy0i4vojKpVEzgF88/SolI0SOuooor
nKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigArO1TSYdShIYAS4wGI6+xrRooTsB5Pqmlz6VcFXUhM9+1Qwz9K9T1DT4N
RtzFMo6cNjkV5trWiXGj3BypMJ+6w6VvCd9ySxb3JFa9tdg4ycVycNwRjmtO3usd
asdzroJwQOaupID0rmLa5HGDitWC5PGakZso+eDUoNUEkDAVYV/U0xFkGlBqIMac
GoAkpaZmlzTAfmjNNzS0AOopKKBC0UUUAUry13AyoOf4h61hTxGM7l+7/KuqrPu7
RRl1HynqPSmh3Of3U4PxS3MBhJZfu/yqDfTHcsK1LuquGp2+gZPnFBkqDfSb+aBF
kScUhlqsZKbv5pDLolwOtHm85qn5lAf3oAvGTNAk4qoJKcJKVhFjdRuqDzaPM96B
Epf1pjOMVGZBUbOKAHNKB0NVpJB60yRhVeRsd6CkOkmwOvFU5Jdx4NRzOS2AaiJK
r1oNEgkfFRqvOTTcFjmpFFBViVQBUqsKgqQU7CbJM0pJ6im9BmkL88VVjNsXdmoZ
GxyKHbuOtMRXmfC9up7CgEhqszvsUZJrQsrEs+1OWP3n7Cn2tlvbZEOP4nNbCIkE
QRBgDv61LZtGIIiW8exB9T60xjk80SNmhVzyRzWbYSkMA5yaG6VKBjtULnjmkYtl
aVuMVRncgHFWZTkk1Qmb5vWqRDIeGHXBzRvZMjAIo++emPemnK571RIBip3KRn0q
F235O0A+1PJySCKhYdc0ABY4xUkYIAcnaPWouuMZzVhYT5W7JKZ+YDtTQmWYZhFO
rcYJ+dexrQkuoAWe3IKyfLtIrGQqJCN2VHA4rQhhgkZERx5i/MoPQ+1Va5DJWRdo
x1UZXJ/So7eUxSLLGSpY8/7JqW4aKSQsiFA33hn7rCs6XKkuhO1+MehqQ3NWa9lw
+GGN24Y7GsW7nEr+YowrdR6GiW4+UAcHoarFjjGeO4pjjGw1nLHJOTSUUZpFhU9u
pZxhtp7GokAJqzFE5yFxnGMGmkJs0YoliiEj5LFv9YvOPrVv7OwuVAkEOVysi/db
61QggljURpMFZuqNxWpHhw0UoVJT0XPyt/hVrYxkMFkFjaR3EcrHawz8rfSozLHZ
ypbXMSvCejYwy++amaxjkAijuWwD88LHlaintY7Z/PkY3Nr93ryh9KdrC0Y6QWMk
jkHaV+9t6H/aFZ11bW8ZDBiyj7yg/qKt/ZrWOQxbiY5Ruhk7j2NNnt7eUMwYq/Qg
fzoeoJ2ZQCxI2BglfmU/3h6GrsYhltiyZQnJGD+YrPeFASob2HsadA6RuvPDHBHo
fWpNCUglflbKkZGaheBi4kUjcOo96nuY9gBjOQDzUasWG4EHd1HeotqO4+Jy7jeu
CeM9gallVYWK7Rjt7HuKq/vDkdj19/enSszD5gTxjP8AWkFiUTRq/wDd4pLiVQu5
WJIPIzVGQhmyevegBSOp+tXoLlHsyFiWJPpmpYY4ZGxu2k9qgCqH7mpAiqwYk7R+
lAyWa3MRwr896iEpUnLZB6irDmOZcvJhgOCOlZ0vyuQTu96GC1Hu4B3Ixx6Vf02z
Fx+/mX92Puqe5/wqtp9kbqTewIiXr/te1dlpGkm7YO422y8ccbvYe1ZylYtIdpOl
G8cTTAi3B/Fz6fSupVQqhVACgYAHahVVFCqAqgYAHalrnbuUFFFFIYUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BUN1aQ3tu0E6B0bse1TUUAeYeIPDs2jTebGC9ox+V/7vsayopiDXsMsUc8TRSorx
sMMrDIIrzrxJ4Xk0tmurQM9mTyOpj+vt71tCd9GKxTguenNalvdHjmuXjlKmr0F1
05rRoR2Fvc9Oa0Ipc965O3vcY5rWtr1SBzUlG8shHWples2K4BHBzVlJaYFwMKeD
VZZM1KDQIlBpQajBp2aAJM0UzNOBpgOzRmm5paAHUhwRg9KTNLmkIy722EXIGUP6
e1Ys0Xl5I+729q61lV1KsMg9RWJd2xgk2kZRuhPeqTAxsHrSckZFSXMZjJI5U9/S
oA+0cUwuO3EdabvpzlWUEdaiIGaB3H76TfULNtOKbvoC5MXpd9Vy2aN2BSC5Y8yl
833qoWNLvoAt+b70eb71U30m80CLZkGOtRPNVdpPeoXkzQNE7S1UmmJ4BpjSdqhP
JzSLiOzxk1GcsaUZb6VMqYFOxpexGEpwU1IBTulCQnIjA9qdggCnHgZppPFUQ3cW
o3OKGfAqSC3M3zvwn86BJEcMTXB54UdWrSt7TzP3cY2oOrU+C2MxCqNsa9T6VpqF
ijCJwBUNm8Y9RqqkEYRBgD9aZuzQ2SaVEJOSKhscmIqEkEipdtSqnFDLUmTZEw4q
pMcCrb9Koz8tgU0QynLiqTAl8joKvTEBSOtNhtQV3ScZ6CrSIbM9iG4xzTCjbsZN
abQbTlFB+tMdeSWVQMfePNMm5lsrDO6oiCatzfe2rhge9Vf4yBmgBFHzirkCTYJT
njp61UHzPxV6JHEaMrEDdz7GqQmMjtmCq3HzHjPY1e2RCN516qMSKOoPqKY9u1w+
8qwRfvkdPrTorQRjyncrI3I54cVRFyneAxhWV2Yvzu/vCq4lypT+E859DWnd2cUb
ACU+Uw+QH+E+lZZAjjZGxnNJopMhYnJyc03NSK+yTdjI9DTGwScUihp60CigDJpD
Hx/eq8kUkkKkn5d2OBytRxQIwBjILY5U+tTwriMsZgMdRnBFWkZyZMImRyTKJEAw
T/dogiuInEibZQTwetRpCVBzJskfoSeGq/b2DraPJGSzKPmiz+tDdtREymzvI/Md
zBcJxkHvTJIIVjaOS4ZXlPLZyrfWl+z2zW6LySDkg9fpUF3HDPH8jsu05K+o9RTU
rkWJW0+13IFnbb2GfumqSwrBcGKVsjPX3qCBzBNy+5D1x296mlhDjcJgR0Oe1MLW
3ILiFBISrEc5qBFQsWcksD8wq1dWrbFkQggLz61UEPzZ35Ht6VLNIvQ0kjimg2o5
EinnPQ+hqoFYOcEDJx9DRHFsXIlxk7Wz6dqVlfDHjrhv6GpaBDBuEoXtnipWGwE5
yuaroN7ZJIAPJ9DVh/mjEe4bupoSuN7lKYoXJBqWCPcMsOO9QRx4nCuatHCNwfwo
Gywgj2hcdaZPH8p29Twc0/erJll6+lQyOqjHp0NBNiuUCd+nrT7a1+23GOQg++fS
kija5m8pByevoB611ui6N54CICluh+d+7H/GplKxokSaPpH2kqAuy2j4OO/sK61E
WNFRFCqowAO1EcaQxrHGoVFGABTq5m7lBRRRSGFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSMoZ
SrAFSMEHoaWigDgPE3hQ2m++09C1v1kiHWP3Ht/L6dOTVypr2uvNfGWnW1hqaNbJ
sEy72UdAc9vStoTvoxMyIbnHFaUF3gjmsEHFWIXYEc1oI622vcDrWpDdAgc1x8Ej
cc1q20jAdaRVzp0kBqdZPWsmCRsDmryMSBSAuhqcGqspIqUE0wJwaUGoQTUgNAh+
aXNMzThQA7NLTaKYDqZNEk8ZRxwe/pThS0COfuLcxO0cgyP5isi4gaBs8lD0Ndfe
xrJbOWHKjINY7KrgKwBU9RTQmYO8g0m/POammQJK6DoGI5qAqKoBsjZNR5pxFAFA
XGE0ZpzAUoUZFFgI80ZNSbRTkQZP0osFyLBpuDUzKM0igZP1osK5XZT3qEoSfarR
Yl+aY4/kaLDTKzJtBpipzk1MpJJJ5pGAFItMQABaVjhc1GScUmT0oHclDjFNLYqE
nik3GmMlMnamtIKiJOKnskV2ZmGSuMUAkTW9tnEko+Xsvr9a0reBrluu2MdT/QVW
T95KiEnDMAcVsgBFCqAFHQCobNYxFOyNQqDCj0ph3GnqoIzU0aA8kVm2OUrDIoCx
BNWBHg4xUigZp3Y0tzJu5CBimPUrVE/rQIryHA5qusW8lm4FSzHinbR5a1aJbKEs
KGQbRk56VZby/lDx/rgVE64kJBI+lVZ7iXIUNgVSMmPudgH3sL6A1TfdnGWYenSp
4I1d8sMmnXKhJ1VeAeuKoRU2A/dYKfQms6aNo5Scgn2rUnURruHJ9+azrk5wfXmk
NEUeQwGMmr1tLKGc7MgDDL61WtcFuRmrbyMLRJRgPvxkd6aEyxbQTzQmH5lL8xns
R6VI+mySlU84jyxwT/CaGnkS1ba23YwK47VJDI8zSyux3MoB9606Gdym1tJ5Ahd8
fN8+e3vULWDF2iLDzFOee4qSSRjcAE5wuOfSqzTPxzyARn2oBNg1qqIPMI2E8sBy
p9KintBHna4PcY7inNKx3AnIcc1DkleWPBwKlotXEEI2xkk8nBqwLMh2K4cAZHPU
VPEgeIkjleAarKzLExDEFW4NCQczYigAbo2wc8g9RTSjyyHLDd/Oo3/1mR3q1ZRr
LKA3IHNJuwy5DatIPJuA3yDIYVuW1skXkySzERgYSZen0NV7ZRLYSFuqnjFIw228
aD7szYcHpUc1xWJrrTdsMskUmJn7Z4b3BrDupArKJAyuOA47/Wr6yNHepZ/eh9G5
IrK1MbZ5EySA3GauKVietiJ4+Mq+cjGKSISPJtBwQMHnqKYpIiVgec0J/rQe4Bpo
o0zZymImOUPgZA7kVnCKQMVJwecD+lWIZnyp3HvVedyzhieTgmm+5MbhtfDAEcjB
/wAaUxSgsCQOOfcetRF2DDHY1OztyM8AcUigEGMoH5b9RTjBtJVn+ZRwfUVFMSjL
gngUsbs3JOSBigCAIxmJPrVh0O0Go8nP40+Rj0zxjNQWN80qCCMr/KmfPPKqRqS7
HA96ZJwAa29Cto2WMkHdI+0nuBntSbsgSNTQtEMo2DiMcyyep9BXaRRRwRLFEoVF
GABSQwx28SxRKFRRgCpK55SuWFFFFSMKKKKAP//Z
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Pictures\iblur-iii.jpg}}}|
| attached on:|23 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[iblur-iii|iblur-iii]] - {{{type=image/jpeg, size=24359 bytes, encoded=32987 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|iblur-iii]] or [img[tooltip|iblur-iii][link]]}}}
[img[tooltip|iblur-iii]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAMLAd8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2
G6vILNSZXAPpmucvteknykQwn6f/AF6yZZpJnLSuWJ5yaj7V5yiUOkleU5dix96Z
RRVAL0pKUnjFN70wHDilyVOVNIOlBHegCZJQeG4NSVUp6My8dvSlYCxRSBg1LSGF
FFFABRRRQAUUUtAgxRiijvQAoo7Uo4zR2zQA2loxTiOlAAOlPVeKRRk0/GBQA0jI
/Gl9BSgcYpwFADiuWFSBeBTguR+FAHIB7UhioMH6VOqhqYF5LVJHwSKAEQYODSlP
m9qkIwwp6pxSAYExxQQQQDUwFDp8uaQFZkz2pmMjBFWsHFMZOPemBUwUOD0NIRVh
1Dr71XORx6UwImTP1qPODg1ZPrUckeeRQIgYVGRUvX60xhTA1LOfzocMfnTg+49a
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
0lfM5JYevpSgkvk9aeflbjjNTco//9k=
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Desktop\ice_ice_baby_by_p0stfrau.jpg}}}|
| attached on:|22 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[ice_ice_baby_by_p0stfrau|ice_ice_baby_by_p0stfrau]] - {{{type=image/jpeg, size=470089 bytes, encoded=636581 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|ice_ice_baby_by_p0stfrau]] or [img[tooltip|ice_ice_baby_by_p0stfrau][link]]}}}
[img[tooltip|ice_ice_baby_by_p0stfrau]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAXgBeAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/wAARCAPnAu0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD/
AD/6KKKACipUiaQfICxzjABJ7dMdev8AKnrDhir5GAuBg7iScHaMYJB4wTjGT7hJ
pvlur+en59NdyXOKur6rddd7FeirKwFuCCpPTPTjHBztOWyAMdWHYdFMBUIx3lWU
7gBja2WCDJJBDEdeO59KeyTeiezeze9r7X+e4vaQ2vr2+V/T011e26vVoq79kIDM
cqo3dRkjGRyPvEg4z8ox37Go/IYtzgAjdnoBnkFs4GM/KcdDjj1lSjJ2Tv8Aq3tb
v+flqhKrB/aX/B007euuhWopxGMj0z3BGeO49Bjjnn8qbVGgUUUf/X/Tmha6LdgF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRR/SnZ2vbT/gX/ACAKKXBwD2OcdO2M8de4/Okoaa38n8mrr707gFFFFIAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKcq5yew646/l3+mQfSm1LEQrZZSy9CM4BwQcE4I5x3B5wcGj5peom2k2tWi/
BCCUCE8/MW5UKpYbiWBJC7AWLYGRxjAzWklkV3gyKzZUbergsgwzb/u7CzIWOD94
/dp1sIyu2NU2PLkcK5wRuQKFYEeXlRjnBPUFq1oIi58pV2yRgyKBGAXKc+a6uH6e
ZjCYDpwSd5rnnU9nzSiql+STjJwu3dqK5Nlpezb6dL6ni18RJSerjbe6TdrpqT00
2aavonzN9syeyQQ7mOxw6xYVVBdg2WAH8Rfhd+QflIzjApsdoGBklA/eOiqG3lpD
uLszjIZSBJHz8sZQgxk8kaSRuZGMkTbSVRHaTco3yRbgFRWmGXZ3GRGQCOXwKayR
sXwqjvjIRflQqC3lxyFMFAUAzJ8pxuohUcaMqNWDVWXL7N1OZWjNqTk9bpq65WrO
+z5dDFVZcvJz/E0+e6bim4uytqu7WrXS17qjJBIxeMnc0ZaTYFcoVZCxU4xLLtHl
hM/IHDDOMkQ3ERWNsAdA5cjdtDDll3Y4VmPUnkqec/LrGVElmJ2KykZPmvKpkfGN
pfysGMjy2QPsEvmchevPXt4GBhhRVyQWI2swYMykfIpVMHBXaejduAVGFZTjazdN
wlpayb5W/eV+Zxdnbe0t9DXDqtOpGNrcji5J2S1UXJ6N+qVm9bPWxkycMV/uk54G
cnqCRnJGMHJPOeajpTkknkk8knr6k96OMD1ycn24x+Rz+Yrrlu20tdrPRPTtdPT8
7ntrRJffbRef4iVJtATcdwOPT5fmyAM8g9PbnIPIoUYIZhwMMQeMrkdCQQcnjofo
3Sh5WfrwOOBnHHTrn3P4n1ran7OEJSm05vSEUrvo+e90o2a5f5visrrQd7q23V/d
p91+3TUjpWBUlWBVlJVgeCGBIIIPQjoR7Uq4yN3Tv37enf8AT6jrSEliWJJJ6knJ
/WsWlyqV1dya5V0UUtX5O6Uf8Mh9f6/r1+QEYA9+f6D+v4fWkooqQCiiigAooooA
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
XtzUt0m25DQ4CXAEilgnHzElSeMMGUncdu8jJ70y8KufOVCPNkZskqwHPA44LEEl
1P3eMgZ5tWhWeIFsF7fcY4uFLghd+GLbQBGhOCnBzjI+7z686oNu0uWrpF80XJRk
07JuTcbL3Pd287enJqKhXUWvcdOcXZ9uS+692avzO1k22+WxlM2GBx6kbuCdwwDk
c4/iXDYGeDioyMEjIOD1HIP0q5cQyENP5WxchWwUwrFjj5VxhW5ClRsJBAxjFUyS
xJPJPX/P9O1ck7680WnJ8y0to1rp5uz8rW3udUGpJNNOytKzTs1Z20uurfndMSii
isywqWMjIGWB3D3HseMNnkjj1z2xUVKvXqR6EdqAeqNqFgygjK5PP8ABwyhQduW8
wDcxOzYFPOTg3xKQN6ASgSKkkhaRNwKSIrYcog4ckkg+WoI6E4zIpSGD/KzRKxB4
5+Vv3jDKkeUxYkk5Xap4BpqM6FW5RQhChJNi+Y4Xe3yscr5bFONmWwW6EGKVOPuz
50vfSnH3ny3UXFtaXUndNb+627aHlzpc0pX0X8t3aSe6vo07crTukndyTcSeabaq
qJoH82MLvUyqdoKl8krufO3azN+7cqfKQDGcqSUMpVQQC2cf16jrnuucY+bAxTnf
I3kA53KoJzt9CAOd3O75uG4PJGarVrLlu7U4wu09N7Wjy/gl0vrZtnbRpRgu7vdv
RK6drWVl7tktlqm+rCiiipNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACinbTt3HABOBkjJIwTgdcAEc4x75ptFrb6bP79V961QBRRS4xj/P8A9enZ9ttX
5J2s363ASiiikAo6jvzSUUU7aX6Xtv8A19/oAUuOnvSU45wuemDj8Tn+tOK0m9dI
rpfXmjv20vr3suoDaKKKkAoop6Yz3z2xjtyepGDgcHPHvVRjzNK9vN/110Xqwbtq
NGQTxkjI9fbP/wCukqR8FmbcTkkg46nPTOffr6D3qOqkkkur2bVrJX7Lrr1f4vRJ
3S+Xl08xRjIyMj0zjP40/aqthvu88g8jhsdMjOcHv7nrTACTgAk+gqdSB8r/AMIZ
8j7xO0BRyM4Tltp77ulVSjGXuvRuS5ZPZWto313u+isu4pO213o7pPXpqul/66Ex
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
Ypyta9+VtrbpaVrq9tF97epzcq51dJ6xlfva9t+zstF1bf8AKRTTLIkKKoHlqd7Y
+Z3OMknuBjC59/Wq1KTkknHJJ4AA5OeFAAA9AAAPQUlX+HkbxioxUVtq977tt6+r
CiiigoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKXPGMY9Tzk+meccdsAdec8UlPTS2/XTT5f599u4BRRRSAKKKKACiinohc
nHAVSxJ6AAZ/+tgZPtQG2rGUUUoGTjOPemk5NJWu2lq0tW7Lf+l1ASiiilbp1AKK
KKACiiigBfTuB2pKKKe7V32V3rotFv0S/ABeMHk5yMDHBHOTnPBBxgYOcnkY5Mk4
ySccD2HoKCc/yHsKAQM8Zpq17c1o66tPotLpXeuy7X6agJRRRUgFObGTjoefz5pt
ObBPBz09f61a+CWq+KLt12krry11+XkLr8n+g2l/DH9c85/I/lSUuc/kB+VT0v02
/W34dP1GJTiAFBzkntg8fj0/Dtmm0U77310svLb8UtPUAqSPGT2Pr2A4BP8APPI7
e9R08DjJOM+2TwM5x/dz3GelaUXJThJRTs73ktOi66XWluv5pPVW7/10/rvoBXBB
UHGeM4Pfjp/n3poGSAO9OIK98HkYHPI/lwevXnjvTR15/MjP6d/xpyUXKGjXNJtx
Tja75VZNfDdp6tWT6WH00/zJoo97YX+HJJ3Y3AA8A89eM4BOCfxldFCA8M/QnBUD
O7+6eew6AA8EYpqnbCxYA/P8oBHBIIzt46D+7jr6ihEQoflfhgC/IwC3HAz6898+
laqnze64qMrKVrpcseZOz7Npbqze+7usZN8zbbSjKKtFa9LpyutNe2vna5djij+z
jfIwcOAqqAxYAFj8o5wuRyx69jziVZV8mKFYyHiDMXfJCgnaRj/YAXA3joOS1Qbs
oh3HEeeduMluOw6DJPO35MjnOalXAK7YhKJCn3ldjuLDoVwWd8HaMnCN6jI150pU
k4SbUYxT1aTvDkVTV+8mlZL8LWOSab+Jtvncl9lJ6xa2je6d+WV9dOtjSt5JJFkV
Y1CSPFGzR8mJvOGJAqEM/QAhc4U5PPJ3bKwFtG7SKFuGXfhgwaNCEyVUYJfacFsH
+M5weWaVpRaCSRlaKR3QowDOkSht/mPlG3u4DpGjAFMEbIz81JdWRuNQZITJJArC
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
zkk235a2PI9SsbS61u8fULhTGJkaPyAVZt0a+bHC4Vk3weWELb2ZjsMQbJ2+N+Pt
Pl1TV7BURbfRrBpB5ZAe7ubmRGbKK0E0StGyQAxu0ikIGcYA3/YvxC8D23hvRJzD
F51/L5EkNw7O87zlWZx5fmhYslTE2MnkZJyc/NXiLR72Kz0yaQSBL8XTQ5hmTymd
dy4aHy9qu2VYGTehjzvVfLMvZharq8slZ03ZRdtb6Oya3ak24pWv07l1KLceVX5b
OKpt25eWMZJq7vL3Wnzb7u1j5R8e6RPpNzGYvPMMkwkWe5C+bN9oEdzJtlEZVvJN
wixTPEF8wsuAysKdrGgvbaRoupWzK6yw+ZMY9pIl8+WMFrgyAtcOhRvK24hYsM4T
J9J+Lm6C3GlNaRGVU0++F8++OKEyrcpJHKSu/YxjTy2KZlwSQCgrP8G6e/iPwlNY
MiTNp1zHOktwJVhVp9quiNbmBWiRIfmHnMAWEhyCAPRUowjC8oNTcXKTXwNN3UVq
73ttppqtzzJR5ZQ91O94Nu0W1OKd10fvdL3lb1PIL+4W7juJhJi4ia3EaP525FSE
LwH4f90QgJ6bT/s44zVBNMkTgGNUjIIUFVYEf3shPnQZHY8jOSBXb+I7O80PVryy
m2cyqdsKkIvV8wljBLg+ahEe/lWGeOaw7u3M1vtdQA5YqHI37SDs3KCApGCT+pGS
K2kqNW9RTUoWUfei/wCZSbV+qvdpXS020OVNQnG3LK0lGLSv7su1/eTTTvfu9ErW
89dlWFslGbPTPAG5WVNuefvcgnsQQD1zSMfQ9DjGfXiugvraJImZAXdxyzOCSSzc
qqgAgYUHIAjwCfvKawXXBHoenOenH9KzqxunOMlKCd42bbUZWV7dPeTulpqn1aXr
YacZQ5ldcz2flGLv6b22vv5jKKKK5jpCiiigBc8549fb/P8AL2pKKKd3a3S9/mAU
UUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopRjP
PAprdbbrd2XzfRefQB7bRgJuyB8zE9ScHjHGB27nqfQR0pJJz7AcegAA/pSVU5cz
ulyxvdRXwxvZO33b7u13qC2/r/gfkvRBRRRUAFFFFABUke0ZdiPl5VSA25uwKnjb
wdxz6DHNR/0opr/L87/L/ITV1a9v61+/YUkkknqev+RR/n1pKUgjr3Gad3JuUryd
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
J508JPmySW4CySbHI8zMX3Qeb8B+GZNH0+71uTc+r6wUtNKCssjSQOFaa5RnbBN3
safZGQixIrPtIwPQ/wCyrq5ey0uBJroaaltdX0p80xiSSR9yllQQgYJQINyts7GJ
w3nSq8yqtTtFrli73k43jaOydlv20ffX1IUlBRpxjdq0r63uoptPe9lu+72bR3cL
xSWvhzw/YKywQrjUUHlO+pyEo93JCU48ssyoXfMR8sAqAmR2Piy5/wCEU0S2jjms
7bVb54re1sIPLM1pC6xwyT4lkMC+Qgab5pNsj7ckCWMVJolppmg6fd+KPFMtxET+
50bTLKH7I0ttG5QZiQSyJHPKn7oeUwGJJg7CXzG8s1/UW8VeJYZkf7PZyMsbXili
ikSLLNDBJcK74hXzLaW4dz9pk3XHB2g8Ch7Rwa5lCEVy30V24pJ3s2tk3aystbXO
q8oXbkm1CzbesZbRi0mtXfRa6WV7uxgi1/tHWZZbuOTVLAbpp5XiTzWihI8u28wq
0SC4lkie5ZAC48tooiWGOj8Tak2sWH2R5F03SLFWmW0s1dQryhTHB5jNDLLdzje8
zvJJ8mYe/lHs4dL8O/2SxguVMdw0VrptpZFpNU1e6IIJhEKgyQyTxlLi/wAgqCfn
Ocr5X4t+xLO9tc3B+zaYjefBbO7o+qDHl2ayxyqGFpGsv2mWQybCGaFsha69JSjJ
uVPkjGMLNOPuKLlFLZOWuu6vp1tzzdlB3fvSja8VZSVrtWv8Wy87bWZUZBNaQW2l
2xk1O/j8lbaJUb+zwZlVPs0zMXnubpCpl3HKxs3lF5Jzj2Kx+HNro81j4WvpY01O
SGLXPGGqLN5sWj6c0KXbWTyQzNF8mDAxiWQzOZWZHjiyNn4a/D+bQ00rW9YsS/ir
xHeRweGtCuUQTW0RZI1ujbSRghYCytGzQkKFk8x18x9tf4iatJqGot4I8GNLqWsa
nNF/a97YRLJNfXB2QzwF1yRYWbJ9ngdhECqtcMWMyLWNKdbFqdFVX7GLuua17XSb
bWlre6ndczbehTXsWlfmcr2il793yJWd0uWC3TW63XTFitk+LHjCC2sra5t/DWmW
8Nvb2vlo888NnHKBEgMoSS5ujHv8nzYkhdjjyIPLWL3zSfCksE93LYWdva6bomnS
pqF2imWx01JWKPYwXCedJPqLiRYBLGrHZKSZ2jImr1f4Wfs9X/gzR4LW8BfxNqts
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
ABXcSOp0LGylkYWsMT3uramsSQxYlMMCtvZkkXJdjIiq4EgzGMJxgmtvTobTwnNP
qOptBfX1qv2Oytt1tKkc/wAvm3IXy2DkFJYI/wB5NAPMLZlXgig6U1OEk37t6bSn
aW3LdWtq/V9VZIydX2qi5NqKdna9pNNXjFadXy8zavq+mmRq9q1mtrHLbLbS3yQy
w2yyK1wUxH+/uwSZIpJZB5uSQCMMAEYGqkWnRI8skiiS4GRucsEjCIoaVomLztJt
ZPLJIEmSVGSSmys0+o3p1a8iSJiXdbQbiqF252mNSHWOJIlMZ8uXjBHHNfy555Hn
lja2tF3yv+8VS6RoSWYt9/e+PlI/dcknAzXbzShyVGouDmk0ov4nyp+5ZWu5bO1k
36HBOo05wppxSvz6uVldN2vpZ2Wl7a/fFIbchIrXzNhjkcFwyPON/MoZkIjDIBvB
Yj+INjaKqQW4kid5lMlzceULVHZk80LuDPH5Z2geV5Yj8xP3oaRgy7fmuW15DcXM
V7ciIx26JFbQ/vY48xo6QyzNE4L7pF83B+UyxbcSeZNGfRP+EUvNP0u11m9ydZ1q
RjYWEfmCS0ikVnSeUYOye42qYohlo4zHmHDLHVVMROTg4Rjd80WknGKclHlsk7aL
d30b06nRQpQV6lnzOK5oy/mt5q7tvLWy7PpxWhaDdarPcK8HmR2sEpdSkccFtbqT
5szNN5So8rYRN2BumjzkkV9AeC9P0WJG057cXl9c27JdSRykxrCWVINPhmRWl+15
WOSbZujJWVUmBTFcJFBe+GLW4s55LMXpkgu57WKOC5M9xMsflQTSPM0KpaJMZZYW
ACztLOSDGrD6W+GXgA6FoDa94i3w3OpyLLY2Kgtc3EaxxyPcMnlYt4YHM/ms4LSx
MDDnJavNnWheN/dc1yxTafOovW3o0k+fXp5HTSp8j525rmV2k772Sir/ABarX5N+
XcaDoV08Q1jU7eMR6OhktI4yuF2xiO3trceV5ckhjgkO0bYouQSeAe78P2yjRLMa
g72cd/qEGo6tq7IhkgtDMXnmgQqiuER/JgEk22UyYEMokUqljrVtrOs2thcTRweG
tLlS8uNPswUErwQmG0ivGt3ieVNkhnlk8qHBaSOCLmOWsb4neO9O8QbdK05ljs1m
gzZIWii3wzIytdyo8XmhEjZza/vfL4bzJGhO7h9lO0owjaDtOT1fLflVtVa1k3tZ
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
QEfvhIawWEnWqKnUkuSPvVlZqD5WpUkk0k5NuN76K701uTVdqXPZ/FHXZJqEdbX2
cl20avofIOt6VFbfG7TrOa3xFLcOtuDIH+WCfbiUHcuyFVk82OTyf3hX3NfYFr4c
N8+oaj5aESRR20USBwrLAghXynHOxnaSQEAM5cZyBz4t4vsrWP4z6I8p23klwywb
lI8qWR4lZkUsTLGBGdxERMRde1fav/CPrp+hxB5JXlit0SL90YWExTY++1fHGY1K
sJfMkJ48rmumdCU1CrKk4U6EKlrtc7bVO6TV9FF3Ue6dkcnO/axfM5Ks6U5Jp2XK
uVpN72a6ac3ZnkUenz6MY3hBSzhgRJ0eRTGGAG0vboJQJByCBkRDBBJry7xFDJee
Jr82oiS1l0dhGD5ao1z5yrGWl8wlQXfzIkxu2YGAABH9dLo9rJo8HmlZDLAzSRyk
sW2xsgEkeJAZN0m4pgZTBPHNfLviCCDSfHVnZzRTi11TaICQVjSOAmVyXQFNjbkA
bzseZwPN4irhqUZQUVOrzwrKdSn7tpx54+7CcdGrt8kb3ta1trXFRlGU6dNOrTSq
SV27xjOnzNK1rqKba6826Pm74qeEpNPsdMuJIligWTbvby0jWBoNhMhc5ijYsG8t
JAMyP+7Oc18ca7odve+FdesIkJ/tB5SBHF9nkkhlLjzMyQxxjagkI42rOm4dAIv1
H/aM0m0vvh/qMitaPBaxfa7lnfYl1sdHwqeXIPLLoUCucHcc/usg/Emo6HDqXhOC
azt4opJbS3YzQrthIQybpgjfvpGn+XJEeBh8AAcduGhKhTqU9XFKMacoKWtNcjjv
s1ONpLbXdGftOedO7/jO07r3Vyyg0nrq25Kz0v8AifmV8YvB0mgaNod/aqi7beCe
KaAiUjZ9p85p7kgQAhIYjGXi6lwNvEg8L/ap0CLWfhf4Q1mHi5tEkN9cO7PDHH5a
+XLISu0xhjJIWWKGLGzG4cV9/fE/R7W++HmorqEkTG0huHs5ZpvsrNLbX4Jt4DHE
j7JIlkjMflkNK3kCUCUMPnX4neHLHXfgVCk0MrmPw3d6nOscM1xHE0Uavczz+XFu
WWKMDzfMA/1eT059KnJwUHNOSeIjKE4JNuTV5e7fSKu+mi8rM8ecKarU92oValNa
t8yk6dNbNaapu++q23+LPhJr90NMtxfReVYyiO2glkkBkLRlUExXlPL8oO8eVDLg
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
tLR8lk/X7XVW8zaVSm17OhBTSgrzcrtyvG7jto39p7LQ5eOLX7vzLLTorpBepPNd
K7MbiaIsUgM86yRbVCuyxlhuk3hohjAPqnhD4R3l6lzc6rZ363MM0QtbNN0cUSho
47m51O/AmitIo94by0MTeYIsK26Uj6a/Zw+AGs+LrtNc1Ay2tuBO02pXjQwx20RZ
IjJC1wZ2a/nSSQRbIZvs7BCfLl8qIfdGv6FpnhrRLXwpoOg2aS6tPHb6XYu0tzqH
iK4mYo15qTvFHdw2GIBcF3nhW5kEhhNrBs3ctbH1XF0oSioqPLKMbe4otXTlfVu9
7dOZXNcLhIU/eqcrlNKcWmndPlc+ZvSKikknp6JM+LbrwJ4X8L6HbaB4c+1+IvF+
s+XHDcWNnMtjZidS8yW6NLtIjQKN24b2Vm+7LkccnwwXxrLNoegTLp3hDw1JZP8A
ELxbqBikTVdWub5vL03TbWKV5biW3RWdFilmlZIZLifAkhij6bxnfXl54in+Hfg3
U7S51u0Mz+NPFmlSTJa+HUEiRTaLp945a2e6mCpaTXNu0wieRYFDFXYcN4u8S23g
vRT8O9D1XUo7WKOOXWdSnldba3laKeJvspCH7ZdyO0EMlwfJ/fbbfLeYzDmp0WoK
KUozn7KU0pSnLRJSlKW2renRX9BV6u03qpONo7Nv3UmlHaOmj+153ZsfG/xD4e0K
TQ/CHgh5LqHSrSC00hJjFEFZVgU31xbxxxQ29v8A6yS0jiEbwRTie480y+c1r4G/
CfWPHl5HFFDE+lmJ77V9Zux9gttiAm6MVzcOXhjLDyvtEnnzTxRgeQSoiPAfC74V
6j468UabdyyX15ptzcrHJNP9piur1I/LV2dS6XEVjboXeaVjm63QLZ5JMkX6s6f4
C0210ez+Ffg3w/NrfiK4tGn1ELFLaQWkW1N0upLulkttOtI5EnLT3MlwF25jjlkk
FayrxoRWGo++48rlzO8lFOKcnd6u6Wl/L7SvhRpVKkourD3k7wlG+u716bcvNfR6
ps6bRPizouhaJpngL4c6a2sXFhYbry7062eS1t57fy4mub258rbJ9k3k2sQEUUha
LAG6uWtPh7HrerzeM9bhvrfW9eihbTre8j+2+I9bvZZthmmg27rWzcETNJGRaG1R
IYgHmr2nwL4F1DwFpln4H03S4bdrq7h1HULpfMOteKJw1tPp8V4sskH2PQbcu8iQ
ocXcEBLI4klevvD4e/BXQvAcN38V/iHGmr+N78PJplpd5li0uGcEwR2enKkiW5h8
pYo7eAQyLFDH80IIlrli5Rkp01TalGNRqScZOLShNt7RSjrouy63PUhTnD3azmop
pOLUbuPuyXLBaJdm5fDuk2z470Xwpo3wpsLnxD4h0iDWfHHiCWS7WbVExItvHHus
NDt4Ek+yaNYx3jwSz/ZYo55Y1k6eaAPbf2bfhP4k8UX0/jLxoZzpf2+STS9DeGOL
/hItVdmaG6WEmV7fStMjuR5VoJZo5Jo5vOlj8vE3SaP4M1P4sfEK61abTJ5dL0+6
3ta+Wvk/MWFvJPPE4IEjq3lwBZIsATwREYNfpj4X8AQeFtHtbtvIt9aSykgUQxIL
bR7LasbIiJHsjMcheWR/LxNJk5JXA5PbT5UvZqbbk24uKjyppR1erV2tFvZvZ2O2
pCC5deS0YuMHfl6XstLO7Xnq3e+3hfjjTrTw9HpFtPcsNQnnjK2tqp3rdI8TwQDZ
JKvngv8A6mLPlR7wsY2jzPefhx4Hg8L+HZLpvJWe9u5L3UZ7h1ijMzRq86yN5ccg
eKOKJAWlHCkS8fvTx2n+DtR8QeMD4l1yW2GgeF7Ge/tBdb/MnvJo5Ipb6eRp4IzM
0RYIZOLaKFDCBkGvQ7Pw5q3xGsrewmubnTfBEhie8+y2t7bapr7h1dtPt5HaO7it
twWO8WFG+0W8kkMvlxFwMalBKcuWL/eR5kkt6l4Qd5dIpyaem2qemsKbvSu+Tmt7
Rx5rJN80Vpe71T06tXta5xuu3OoePb4eXPJpXgHS2C6nrC7ZZteni2g6dp8MY3rb
x4zNOpzLKAIcCLFLa+EINW1C31W+0q2FvbRiPw3psimWaDbLKv8AaV180r/2jKP3
cO4edGCn73/WE+73nhKw0yK0060tI5riEx2WmadCHLLAkO11iKeZ++RFV5ZP3cMM
X/LY/vDXoeieBk0qIyXCK2o3CZmuQBiEKDJAkHmrkR/IIygyPLGD0yZeDlHknLln
P3eZSinF8rjLlS15U2k1s31NniElyr3UrQi4/E1bWTk3q903fRLQ8ytPB9nYafI9
zbBrm5T5oY0IS1t2TdFbQJv8x38xC8r8iSRgDnkDwbxHpLWviHT4lLsYpmzBEGys
JO/yShkzvCo8u7nMfUeVmvtXVbdpLcN8zFYScrtDtnGSsm+TGODsEn7yPjbzXzD4
4hSw8QWWoTRNBHJdPHGWdBlkQKEiQpjzAmJJf3Y56YxmlVoSqQVNtQacJXp2TavG
XLZ937rW/lpcIOUU5Kb1UrLVuMbJN3tfre99jxb4keFzeeGbaO3WSFptQWeYeWFU
wRzSCSIFxsQ+X8hj+7xgvGOKf8MNCttLsNTtmiUxec00bjak8yxuN245MRZ33PvP
MobP8R8zrPizd3dpommRQTIksksLSx7DJvCqhkTqWjLwK37w8GU8CIZUZ3h9biO3
Crsja404zORJ/pDpHG2AHUS8vj5cSAeUm0c9Mo0OR2tK1S0G23aUnCm9EtLLltLW
97tdCvaN3TW7UuZ6tSUk2lfbe1tLXS0Z8uaxbWkfxz0SW7keY20l5dWqLcvt8phb
viS28zy2k4TypE4hkUednzR5v2PrVw8VjFLO8pYpHu3PsjeF3EoUgEeY8cYZP3g6
YH0+GbmO7uPi6ZwfM+wpOi3cO9jbef5O9N+3Em8JmcRjylQDAYHNfTeu6rdyadb5
LSO8auQ3zfd+VIV3+aEJ8vEWz92ueBnmuatLkoVpSXLFWlBwfOqjUeSSSd4qUrJ2
bs9bbm8sPKnXox51KMYQtHrHmkpuD66OV7J9fU9Rj1OIW0JMAJFumUxFtA5CAh/k
wMPJjOAUI5zmvBNUij1fxzZF4BHDbrcuDJIFJDLlCsXmKwkWRy8XljIETk/uchen
tPElwJJTDteGH9zKCsZO8hN2Gk2qxQBI0xiHiPdHH5Rrxq68QTSfEZUuyy2kFrKs
csUcTyeZc+XtVmaPDnYjpM2ZAD5cwOMZ85zVaNOqlK9WtSg5tXkvZuV1s7JuMkrW
Vrepfs/Ye05Ytz9naTsuRRbg27+rXR/oaHxEig1OE+GdQ8poLpZJBPcHdvSMoY4z
CP3YRpUZFxEuAxJG6MZ+M/iUv/CJ6Xc6WLGS6WewnFk6OjJarGsiPb72SJOSHIzL
5vyRknIr6Z8X6zHqn9ral5kbpHvsINrL50YhllGYJYxhTJI7wygyebg4GB5dfG3x
m14674YtrZJ4bS/t4ZfJlu5HeG4CrIWkJQqoljhwxSRY8lOeAwG+HrSvTjBuc4xk
qT55S56acoJyg9OZqacdXd72OSpR9m5OUXaSb6JQqe7NS5tNJNK19Voull89/Evw
tHcfCCw1ba0l7cW0shiK+Y9u0khuxGoY71kT5P3ci8+WfNbtXyvFq0UXwz1Xw5dP
LDE+j6jO0t5M0E0e23kuI0hjIaNLaRkDyYnEzBiREcEn7Cn8QQ6x8KrmC4W3M+nf
a7aZ4mkUsgAKy7IwhjkiYAxpiTO5cxAHj4X+MWlzeF/Ctjq0K3l7DeaNPPcWxjmV
AkgXEiLIqQLHJbyGVRFB5sYVfm5avVwUJuqqU+afNWg7vRRhaybWrir32aey01PP
xNKTjT5eSjOnKbtb33KM4SVlHeycdX0tZnwZ8L9TtbeS80dfMiMt06pIHk+zLbIi
xmAxk5fDYeVVBI5zwQR7L4t0eS30S2urVDJ51qxuEcqqOqAnKvJJuHHlLDGGAOT0
ypPzFpt3La6/ai2MkBeaSSe3JSCJVlDkPEGfBeHEaNt/eYZNkRVhJX1PYXz3Xhy+
s18o28kVxJa3U7AeVJ5TOQrSZjbiNpMgR/vCOIvMFfR04KMYxhOV5Lmakknp7ui0
ej97qn5Nq/hVf49Z3lJV5Ko02n70lZvurN6dEl31Pkh5DJb6lESqSv8APnGxFbzH
3Ov7s/IR0k83yj+Br428YadNY38vnwgS3TSyNgo4ZJncqwdflMR3JIvmEE7uncfX
mvxXFpfpG6lknjeWRYFVg8TsY5XYJ8gRFjmOzzQY93mgeVnb80/E42gCzxyDJ2xy
oskRW2CRBVj3RY+YrGrEYbkSdQwFWqnLyxUruKd3FaPVL79W1q72trdGbU4t09Lc
zlF7vRXs7vfTTp2e7PmW4TZPMmANsjLgdODjjpx6VDVi7x9okIxtLEqQMZGTg4PO
T78+vNV63Tuk++u1t/Lp6HfF3jF94p/egooooKCiiigAooooAKKKKACilxwDxgkj
qM8YJyucgcjBIAPIBJVsJQAUUUUAFFFFABRRRQAUUUUAFFFLg4LYOAQCccAnJAJ6
AkKxA74OOhoASiiigAooooAKKKKACiiigAooooAKKKKACiiigApccA+uf0pKKatr
ddNPJ3WvnpdfMCykLCISllG4lAMguqgBi7L1RW3DY2PnAkA6E1GASzbCNozjIABU
EDO05Gec45wc4pqBnZY1ONzActtXJwBnJA/HrWn5b2zxnBCqmQrpHINw2k5U+aob
f8/cYO3OCaJyV00nZRs7td9+mr/DVXeiIbcbu61enSyslbe712t1dzZhtmtLVXaN
fMuTCIo+PNmDI6vJITgC3JfzCud6GFckCoby5XbKsuJJI0Vd0a4WHcV2Qu2/kAKV
ORk9M4GKoLd3Ety7JKwkdBAJWVVkhjMaoyKEJ2/Luj3FgCo5xuIFtbAXJeRZZPKG
AhYMd8gVcykNgJ5uGI+c4JXPGCW4KyqJXjBrtrOXJzJrW61bV9Fb1OeXxXk7Nr3u
XblbjZarRvvpzSvuk0UbaA3rhZXZIzsLzFSwRd25mACjcdmUAP322D2rpYdWisbF
beJIjbozgRMiM124ztuLjjICyPjscABQMYGRbx7Lec3B8u3gIWUq2XnYNlYkxkIO
5YEZwv7xQ3O5ovhnUPGF666bbC2soFDtczFVggXMIIMz7PNk3lsKcSCNQOAigXCp
TmnOs2uR8sY3S0drNpPbW9npZrbqtZpxScYxlsrbJxd3pba2i1W7s0S/aZriKKxs
SjSXG17y4KfvTF8+E2E7I0TkeWMgxouMlhnO3adaczRyNHIdqDztynyU+VXEZJRn
dEOFxmFvIwuSa3/E+l6R4fENpot1LqV4ypBd30chESXRXMkNuBgyxRruKsituPPG
QW41EkuZIrGDaZA7OzKzLbwBGkZ5pOeZAHZc9RGMDcWGHFRSjVinZuTimnK11G0l
zJq7Sta6tuvIbjoo2fNe7v2evRpR2S3v21Q4STXUwZEUTAh4IPlihgTzNw8zc68L
t6HJ6txgKW3MkwlG2Xzp5GDvKqxqUZ48CNMdV+dg7+YBJ/zz+X5ty9+yRx/YrBzd
bo/Mu73aoa4mUbmO/wCYhcnP7yU4jfzR1FdDpmlwWemQ3TW097qF/dtHau0arZRW
8aMJHy37yQqyiL92PLi27DyVq3KMlyS5lVTeqbukuWTk1HR/Fb0StYyes7xhezab
0aabjeztsnq0rX3d0ZOg+H7y6lSImSG3RZZLueZZIo7OFWCvMcE4URbnixiWXfgC
TfXttn4htPCukNpXh62e0tp4nMuuXkapfzu5cyPAUiVmPmAbBIxbdlt5jWuT+zaB
4Z06TVdZ1cXmq3G77HodmUZY5FCSp9vDRyQ+UkqRDawkZl8zJABJ4O81a61S7a5v
mWRJEJtLZWkDFDuiiiEaFleKIZQGJfnGFhOMYmMpTTjdyVoybaupQi4xSSvdNrfu
7pvcr+HzXSnJ2u9VZ3TS0Vmlra2mj7kskyajqJ8yWUwLI7TyAvLc3kiMrAMwKSR5
UZJHDDc3ODUL3Iile102xxPOWDSsGY2lsRCu+P8AgLkH78fWQIQEbrjNBezXrhRL
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
0+fRk+bTvDGh2NqqatJb3kKCKa3sbUfaMTwi3El3LJam2tQ4mxCc1FTGThTkqEbp
T/eTfVKUfdg+sVK8rvtpdG7y9rkqV205LmjDS3K7WUrXs4rlajbS+llY7/4M/Cvw
b8MfDP2DQNHh1/4g6lZKLjVJI0ltfDjXBlNrBB5mxHvYUl83y/s8jRy/v5kjhlMY
+l/C3hbw18LrRLzU7a2l8Y6y7apfC53lxHcM0kuoeILqTO2xt32tY6TB/pF9dbCI
j5kUUep8OvBdz4N0m7vJpLHWvGs1m/2W0hjafTfCyeY6wpPc+WPt+oPI6ySzSg8s
CVihq74T0PVdf1y+s9Og/t3xI0wuLrVb63WWzivJW3i4nhjjUXyacWYwQRSxxCQI
PMMMbxPzRcuduTpttQ0T99uUotycnb5R0RrZU/Z2Upc10+W/KoprRWvypLW/V7O2
254O8E6Zb/E2TxRqdiNQ1jxDpkd9ommauRLdRW9vAoGs6jaspTT7ZY4pJILKULFb
WjNuI8qXf6Hq+iv4ua8dbuTyRdPaQatKkkTX115/kXEWlRAwv9nVw6tcpHiVYI4I
S0HliuLtvAes614j0OWe4uk8MXN/cJ4g8S3U89rrnjq/ghl3WdpdEJLZeELQm4hZ
rQx2DR/6FZmaBBMftvwR4b02+1bTAtuLi00pPPtkMUiW6ySq0dvPMJFiEltbRea9
jvjEhjBupcY3HpUHTjZuU5fA7rbmcOVX12T1el7ddzZUpXVZvnXJG19o2kk1Nd3a
1per7LoPhn8M7DwNoOmWNtYGS7kVnjDrGrbpB5095qAPzvcEBPlcmbylEUQPmSCX
S8Zahpem2sls06LZw3CT6hdRJGLnURC8LyJyA3kRqyxkSfuhc5g6xzVp+P8A4gaV
4a/4kmlXUep+Jb0kXsdnJbzz2wuYTGolWJ5XiurqRlhtoH8nyd8k2SY4zWH4A+E+
ueMtbk1zxlLFLodmrsuhJEGWW6DZtRf78RyvZQPxCYvJMrvPKZJhgNqnG8GnJzWs
IK7SstW02k27bauzaVgjGVVudRuNNWXO72a092F1rbbVq25xfg/RtX8e3lvNHHNB
4evJreSSzuWeOxljt90aQSmNo4544SpTyyPL8xyABg5+qJSnh6Oz0bSbD7frtxD5
Nnb2yqVtoUJSVmwJI9Ot1yssk7p0GB50uRWhZ2M95eNpvhy3jjgjj+zxXUixG1sE
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
gDMoAQuyRAmUEldu0BvAYbvT7SASRys0vKtIsYMgMqsSgDbdhUIF80Ekn5uCeO3t
fFnii/iW1jvLyz0+BIo4FnkkWNQJG2lFDReWXSU7ZWeXaVjWLaMIIquVVulFSjDm
TbilFSu4XXMm9Hontru72TVJcrcnFyknu3dXaipOysldXvofekXjHwr4R0JrITxW
OlW0Cn7PZxyIbloXVdiWivGSpJSOaaRpX81j82OsOh/E7WvH008WnRx2VrpECyJC
kENzJ9nkt2lhnuN7pZ2u1Eby3Zyom2lJXLBa+ONDuNK02dLrxLf3OtO4d2td6raK
N6P5uY54/MJkVg0bp/rDESRkV9GeF/EtreaY1ppmnz2GkrGcNKlnaWUoVtzNOYXF
3dlGHmrCwflcB1+VVxcIRUElKLXM07XULyjbVtfErtt83Q6frEqlSKjLndkpRXux
jFJKL00fu9L9ddtfZdDXxl4hvL1tKSW5RYBLearI22ysNxVGludWumFrD5jZmFvb
bzEolMM7ZarVtHodmfsunSR+I9eZFjutVuZPs2jaRKFnDmFZYGe+kWQqZJ2umR95
+zjPK5mm+GtW1ezH9q+Iby20Nt7x6fHK0dqhiQxuHjjeytPJjg+8ZRcEEIcjMtes
eE/h5o+sW86eFfDOr+JWi8tLjU7wXEWkWJZUWSKG1t4Y1vJUR4S0lxdzWaH/AJZH
91LNhKtTg5SsnNSjT5ZNQUlPki3HmdpOKe0bu+iVzajCrNpcsVy2UbXk/hS1ldJa
3emmi6m3oWr+G7Dw2bLUNVu9c1hLeWWHSNC0ya7hkktUmWSS5uI3jgi2BtiztJOy
xugIzb8e/wDw2+DvxY+KOnQ3mn6Po3grwrcXFs9tqniabzb+aN/s0k17CkiW88ki
2ynyrWGIRJCiLKJQPOLvDXw+PhLSree1t/D1hexyW8mzUrmOLUdSutpkjtPI0+Uy
pYuGuWaKWcRTSfZFmln8qGGvs74aeC/jx420aGKxsNG8FaYY4ZR4u1fTTY2YskQm
SRrvUpr+7uQAsczxWWiWdrMQsYlPlceZjMRUUlLmhTou6qT5W56RpuKSUdXaSSau
r31Pcw+FjGMXUp+1alpGUoxpRlzR0mlJaOzb5pJ3krq2+l4I+D+l+GbSFo0vfEuu
QhdPj8RX9w9rotqokMt4LaSby7OeePzWjEOmW372ZcG4MJyPbtJ1P4ceDtBaTXvE
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
EznmMcZwPnL4jeI0tdAa2EjCSaCSKe1h81pg2WV4k28R/uwv72Ro4oYy5JIj5Jza
hKSSSWyV73XS27+V+2x105uU6do6qo7+0vZX5W3p5d7+p8CftM/EKy02e5XRb+G7
19ruO1mmWeW4FsxR3hS8urciCyjkuJDGlussNxchJBEcfva/Orx94u0fwz4Zln10
anrut6lMb7UotMjWO51S7YyzRC/m2SiGGISiK1t+SURjDDcTV9UfHK7TULHSxaWj
W1tJrsS2tjZwwwzX00MzyS3FwZEjlFrCYZI5LxxHJI5j8mWQ+bJN8WeLtKmu59Si
uZ5Lg6Et5e6tp1lsFnGgheWb7RqFuJVn8+VkNyXEZw/k+ZJM/wBmPnxhiKlSbqcs
IXpzck7zfNOKfNe1lZ201ja6Xb28Xi401TUXyyd03FJppJaq+1tVs1ZX6Jn5heKb
/wARePPEV/fa0sen6LZXSyRNeSStHZQOc/ZdMtZZ9iXkpK28TvF+8kZ2hg/dTTxe
V/EfWL3Q7KWxt1S3upEZf7S1Jh/o9tF56TrZ6bIcPaWMITypHiMsl08fkCbNfc/j
jwXP4b0w+I59KjsZ7iz+02NtdWsi2z3l3uX+1RZRPE7zxOXgsLGTy7eJkSYrkYr4
A8SeB9V8d+LJhdpfX2rXF39pluLvi2eHA8iKWziiEkhW4LkRRy+XKsP7keSRKPQw
9TmnJq0aCU3UatG3uKKum1r9pd76W3Pn8ROVKNubnq1OarBxvLRySSctbWunZaab
q54JoPhrxD4jL21lczSf2g5uGtkLC71OGKUubi6ZpCogSQq7vOxCsjfa5EiHKW/h
FX1ZNB06aG8u3a4ivksSlza2lsiut2qXBMsc80CBJDcZMUckZNu3kxmSvsW1+Gus
W9tZeD9JkubrVtdaYa0mj2wDWllCPJe0vNXjyHYFJPsul6bNbWUUQ230rTGGIfdn
7NH7CNpMraz4ksJLf7eqxSWVvNK8S2iHyzDcNIYhcS3FsITKYSLWO7Zh5d1MIpaz
WZQg3N1HfSmoJKLqTk0+aKd5Ne97utnqrOx5cqc5U4Qs/fd51N38Kuo/r1vpufnh
8MP2avGXxGGl3OmaVFpXhGwnijW+u5yluwUAXGoXlxPHvv5AZZZY47fbYQxgLK0s
8hjP64fBD9kiPVE0vS57mWTwtDLaahf3ZEkEmqy2vmQtHa2xy93FJGsa3V7c7rWK
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
u+03wbpa2kbeUIWggkhgTyisdv8AMPLYxJ+7EiEnycYk/wCuh6+ZicdilajBO1Sr
FObbbcXBXctrKLSjvq7PVhKdCMoTS53pCCaSinFxd7LSztd62Xk2fmz8PP2TXsLq
W61OWKOG5uIbvUiY5vtmrTRLGYleYtFFYWVr89vbaSmfJZWMsmWK19qaNo8PhzT7
W3eFI7WBHjjtJPJFujbiYS5jiyiDJWPYcrvHJAK16ndWNvpgEUIt1WOBmV2I3PO+
8bnXj5/nYfJ/rAcg54Pk+vyMl6k91K2I2nljAyyplWYSvFJJGWLsOuQ2c9+K451a
lN3hzVZWp05NLSLStzQlslFvpfy6XdOjGpL97NRhFXgopKzum1bXlcndaPb8N63v
bZt89wCsXmM/mMqjYihUTYDzgAECQf3ieBgVQk11UnmSV5beFGdw42iO4ZZNgIYe
ZJ6ybOPvEHPGPHdX+I1vpv2iIzQMYZGDPOsIKoyLuhyX3Rx7GYDf5cqlc4znPg/i
343WcMzxXDtaBlZPMMyhUYoDh0jcMdxjQtkRYB7FTjtowlUpQSnKd4pVIyf7xym7
xcb7+/faPW91oZ1KsINciek3dWTTWis9NH1Wu7Xme9+KPiLaJe3kkjtJ9jtHEDmU
RRiaXESyvHJIP3g+WOLt8+P3f72ud/4T82+hpAJ1VxExNxb7ZGO8EL5R5Mhd9nCf
8tmkCtHivzR8YfHqyury+t4743VtdX6pdRpJIi+TZyyNbkIjfejUSMBIZjFKz8ZG
a4jX/wBpjTbeJoftoie3ifCtOmGjVWaEQxJiRWBO1k+yAZjPAJwfXwuX15UeVRcF
eMZRm+dtc8YvVq7k0rNyaTvpokc8sXTkopzhFqV2+VuNm4+7ru43fTrfsz9I7j4o
PDJpyyX1zkSSiRjceYm+WQRPcIP3rkPaDfL5h8stL5wIOazvEfxaY2tzHJfMHkgK
NIjRRurFXV1Zt6su4bAVKhot6YB8vI/InWv2jLGX+zi+ogGFXdYY2bMCncXkygw8
jSbOY5CExHyoyK4nxP8AtJWbCMnV0VnEKYEwYRxuSXLJOFfnBACEHzFGBFiIj1ll
M3CnGNGaXM5TblLmcnyxSe6cVf00jp28+pmPvJOq1ytcqT6KakrO+q1ur7a9z9cd
T+Muk6V4UguJrl3bRU3lTOIWkaMxja6yeUfPlknQF0mMg2x5889aHgr46+IdQjV9
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
gupw+AP3gAIy2ANxrSi8YtG8bCzUBQqOVYBzGAwOzCqqSZbh8HpyMnI1a5lPlvGV
lFOTvz2cfeaV0m9b6p2vuxN6JKLVuz9FbW62Sb3XTpp6HY28zotxbeett5qrNcX2
oAIscm0b4IYIi0kh+ZoQ0RaFVbyISQ0q9to+sePbLUJZPC+iTXySxpCb+7WfybeK
LLtGHuBCqpuckpEwK4YhHXPm+a6H8TNK0q4juJtCN4weNmW7mMsKMq+WzpGG2H5W
dgjRFdwGMZ49n0j4/eGLrYuoWD6cyqyo0MSmFQZJGJeLdEAW8zIMTvtywI2/Kc1G
cIL3Yyab35Z3b5bSel1Ztrmd3bVPtHu6cyk+XW9mr3a0bWnyurdVoOutL+L3iSKF
9SjigQ7k+zi8ito4GUIjM1us8UZBJZdz5MhjlB2nhtiL4SeLL6BY7rxFHcagwZoo
hE+oNEkLM8RLKIhy+MxBkXGAJecH0TTfiV4e1uDdY67boNqRFZUSKaT94YxhJGZp
QRJ5YWMxyDYChOAD6VoV5pZWIxxh5VJkWUFt5DlBK/7vBAUMO3nGUg5555alOr/E
g2uWSaUoqW6TlGzfuy101aavdW1Kh7Cc48to8yXxaO9oXcU9tF81pqjx+z/Z2u3X
7Xd6veS7IcNHDaWtsseEDEB5JGCqQCRHky/Kf9YRg34PgBDdQXKwRazqFxGQ/wBr
SQyRuxfYIpJZAYQrbSfJKqzRYyy55+rNE/s93R7gyCAJE0gnlmkjLupQSGOTMfmb
OhPJ3ZHYV6x4ahglgMNg14ss4t0EslwsVnHgu7FYhEJd/wA2JTD/AKwtGTk+aK4v
rVenKblGraLcnUezWkbw2acdNFvy2trp2QpKb6JcjalypXaS91u105O6Wis7XPz4
X4S2emWf9n6l4fktZbm5WQSmN91zIxRowhgZZCibYo/lWQHbhrhjuiPovhz4f6nF
bRJa6dY3FjbeSHtZLkW9xJATJPK5NzE2ct95pBcpEHSaaOXmI/oVp/wf0zxPEs2o
XU0twWSO2u3lmzE7eTHmCHyfKSJtjJHlYvnXzieOO70H9m+xktJpJLq5a8RT+8g/
dsrocReaU8nzvNchMAecS4HzYJPO81i4x5eZqnLkbta9Syu1K7tq9eibatfVVhKc
ZVU5QVlpJO6Wq6S66NaPr0sfH3gT4d+JDc2k2k3iwTKDut4UVJlaMAzYZ8F2Vy/z
bx5kcWBGvmAH76+F/wAOhrWi29xqfiDXX1C3knhms7jURDAphbf5cCWm2WMhldTI
oEsp8394jFgZvBvwSvNJ122WcQm1mUtDMEuVuw7WzQy7/wB2EcF2JDk8zB/NkG4R
N9ueBvBFlp3kTLbLZtsRXWK3aPzmlkd8zeXGfMmmRmyZI/LMzSdMjPHVx8E3Hnbl
VtyptWUeVXXKr8sLrtrpdau/0GDwdOdSMeVRjaak5Sb5m1FJxS2W6TT3tc6fwN4H
8A2+lWslv4elvdRt47ZftVxb3V8qTQgxQP8A8TCKWSW4kePzkeXmLk5Ibj7s+HcE
39mwTxaFZpNbxYjF3LApSUiEwOfIt3eODGTKYB5kRxEua8D8OaXcPKkNpL5co8pR
A8PmwiQAkbwg/wBZuOJxHGQf3hHzYx9ZeDY9Q08Qo8SrhlWV12OHdXaPMSDynRz5
XmSj0kjOT/qh41etzVYulUjUjUinKUOXnhOHInf3dOa/Ly6KzXz7JRjSSvKc5q0d
ZXi4Rkkk9n7u+99z0zSPDmv6peW19ezWcqCQILSG3ZLOOMp5sjZ3x75h/wAsp5Mc
qmYRmKvdNO8ISSFVuL64cSFSqJItvHGvmH5RHD5SZb1HXfkFetZPh5oBGs6xASsV
djwjynaqmTaTzGmccR4weDngei2t+FR1EJeYjA2oXV/maRn44JVCo+Tg7eM4FS6c
HN0pyacpxkouXKn7qTeulna7StsN16rhaUVGKX/LuKTveKV7J20V77vbsdbo/h6C
2jt4o4YmZcxDOwyfKd0ZUHzt23dkE8xSb/4Sa9BttMdZ7eS3wjK4UAq5cogZWWRR
lJCMYMnlHGPJ8wglq4rQ7maeRYWt5cgpIXLjKxs5LcISeJCecZxwDtANetaduuJm
WOP93GEMc0eCpkOM5wIwgjyfLfyyMlxu+WvQp2io6qzcIw5VZp07J6Ly5o9jzKjl
CV7fEtdL30Wye21/evrsu7ptHjmJkKogdXWNw2VbDh9n5Ac8khuTwcdppWmLFb+V
5jLHGkeAzHcXQ5VSyfO8eCqGPgSBcc5IqKK0JVMM+xX3lYgNqn5cmQ8eYeUUjOTk
8Yy1dbaWyRRxMFZzu+fOQVAK4+YezDHORv7YNehRp3k6iUoqXxa7r3bJX1S0te3o
7HJLEOKVNyclzJqyV46q7fyWnk9ipFpkON0asBnLIHwrqH5OB5ZAQsSMY9TyDWsl
upXeJDuGxc7d+1+DJtboBj7vQE/uSM5NaNsBIq/IyxM2AcIeOjhXOWJcA/6v+9Ie
AeLSWiosyHOA2MZz84UZBUfLyijdzkg5+nSo04e7FK2j5rbXSad79ba2Xfq7CVRu
6fRWSe2600+enb5owbqM/ZLyZIyziJVizI2QrsQ7eTH8nKPjGIxnPXOR1OgWhbTo
GaItI6oRudy4XkqqD94+CDvw/Mm4dM8XDa20tlMAnzSIUkXGwswRnBIzj5wxwDuJ
OD6GtjS4FWCJYUfepCRsAxG4ODyd/wDCrkZGcZ7EVcIOUrNJq2nVaytd9LpXt28+
mFSqnHRbTWqv0S0T310W2t185LezjVMFNhGY3cowCvtYgBhjkAsSCQck5PU1YmjX
7Oc5O4YyMnA24Y8cpnrg8nqODxrW1rl92Tv3ho1d2jBRhnOfK/etnHQ4I68ZzBe2
bxEv0RmCoUIG75e6gBOAD/wIE9s10xThF2TX2fXVNvmvutttTkb5raq9738tLaX0
u3ay6ddbHJWUTvbzrtClJGjwuCMqd+PqckcjvjtiuMVH1W6m0lWHkW909xe+WPKB
UMrxROQwCmZ9zSEHiOM9TJiuzlnktba6mVmZlkKorMuWkbaiqQgBZ2LJt2Fxk9T0
rL0Wxkt5rpbkxyXV3IbqZgvzl3CnaG6iKL/Vov7v7vUhTXMlrFKXR8y62aV3dry+
dr+RvFNKc9HyuKV++iu15X30s7X1Kt1ZLBG0kSkJCrhkzkDZu2rtLkdThkxn5zkk
81yiyEq6+UiyjeW8wMT+84AwqbEDYB4k+TIyOAR6LeW/Pl/OqlR855XYoI+YH74O
7kHB789K5HUGjjKrGFHy7gSEVGGwFSzIOOARh+RkdTWc5cjUm2ow5W1tHVxVrPrf
VPe+y2LhJzv7t7q71STcbXdnvt6addl4b420GbULW4lh3K8Dl1cFWIUCSQ7BxxI2
1OcLnn/nnXi2oeHPtNxp9wbiOI3D+RIYQ3LtEh8t5N+/G9fMJBPCHBPf6t1OKN7d
kJxvXy9ynO1Rgb9v+xyQBjDL1rxnVrVbaaWDa5SOaK8gBjIMaDYHID4PyEtnYdvz
E9NteXiasIVbrlfNyv3r8vMnGSTV+XV6d7o7fatU4xtorpWeymlHe3Rq+3VHMQ+D
dLs0jmS0hkvJVBN40Sl/3q75QvU7XZF+TB5XOSSMYmq28G9YmCyK0bOWwDGrSM6u
B/yzyrgk5IOOR83X0i+3Ov7mTh4FH7tXd2T94CV2ZEmOPY9iSBjzvVYEikCO5SOM
7XiUOcfM4HzBtkBk+bf5gIzs9K5Z1asJp2bUpXcubRX5VCPZu0vi76eZjTje8nJ7
uy0300s9tXpe/wArpnneswwLG8ZAZ0ZvL+YFd/yqoBxjyzvYfIn9z94Bk145cTtA
uo28jwo6chGTv6jyzsOdrgjn96QTjjPp/ia+EUUkgZA2+RCQAoZt6vGzPGWSMfum
En+sGRnJwDXyh4w8Vw6bfzPK8D/aPtGxVk2/6sLtjVsRmRC/8YbJ2DpnIifNKXPB
w92VmprRqXLLXreL3S6+hvyxVpTbUVFN+qajvqk29e3mQ+MvEEEcUoV1jeFF/wBY
WWMSfe2kPjBcMpkXzd3IPcZ+MPHnxQt7O2Y3FxGGRSYmcnzV3742j3ltkg81HiiO
RxIOQCKxfjV8abbTIr55dSigsisk00ZKMnmR7I4iiRkAtL5rCIn74BPAzLX4LftQ
/trLpE93peh3c+o6qZpRsj3QIoKYRrsvIfLikypMUZEm4+ZGSa7sJk9bEzU1Sm6X
Le0W2nOTg3fVNLaUdntoc1fMo4e6fW/Jb+Z2Wtr9Lau3rpp98/Fr9qHQ9BN1baje
2sBiuGkleSdIlaKMKsZlV5otvYCXpjgkY4/K34u/t32U9zcWmgtNqk6vlWjnWS1h
mRnVGFwEcmJ5Nx2RGcHZgmM5lr82/GvxO8X+Obu51DX9Wu50kld1ij8xLWMSMNsA
C/PctHkGJ55pJBsGZBnNYmi+HdR1ILOmn6heQzzm1SWKPbFHcKizmGWWLzNrmLd8
gzJgviLBr9S4X8PsyzmrCnlmArYmWHpxqVJwpL91FOnTU6k3pyurOEU3K7lJb6ny
WZ8QUsPBzxFeFKnCTly3UZSScbat3bS1t133R7Rr37THxK8QzzCC6WzL+eFe1icT
KZjhyrxui/LtOR5YyQeMAGuCfxN49112kuNevnjMTSBmuzDEJGJJ2rDJscALs7yE
u5Q8Yrbt/h9d2M1vFeS2MV1cWFxqltb3E0e8x2cl1DKsjq8YeRfIlcpAZQ8bx5P3
gvssGjfDnQrc/wBqeKrDSBFpceoJFP8AZAkQG25mBkVpGkdoPMhggCSyCUrkgyBR
/SHDH0YeMs1yivnOMjlmVZfha7oV6mOzHA4T95FxUVz1q0btSfvKPNa979X+cZl4
mYHDzjTw9HF451ZP2UcNQrVpvllGLuoQbak/dT2916uzS+fraPXpbhYTqGoTz+Wh
MUDTySeUxi2AsskjmLM2zce5XjtXSL4G1smENeTpJdb/AJ55rhFRQW2jYYgZH3pk
OB/chMZPFeh/BTxp4E8deOvFtl/pTW1uNPTRZxNDZTvp9qpjuJSs7JarM4TbbxDo
XhB+40ifWcOleC7m7A0jT7W4uLWCTzo9Qv7aJhNG3lhbd7nVGivZImJmYRw7X3Yi
hBBZ/wBa8N/og4HjjAfXsL4l8HpTxdXD0qEsfCcpKhWqYbETSg1zSjUozqU7NKpF
Lkb0Pj+JPGHHcP4/+zK/D2PWJhh8PXlzRSgvb0KVaEZu94tc3JLT3ZKSaufnxqXg
vxFpaEJdStGoVmdbhycM+WaSJt3yqAkm5xH5hY88E1JBbeL7eNJ7W5eWFYg3mFyj
lfPCxBOpbgo4HkvJ8wmyCDj688Qw6Bquu69pcFnavY6aml/8JFr9oLae20qxumgn
t0iS3u44vtd1bzRKkP2iCUP5jhY5IWaukubX4VaNbajNeyR2eoyXiwaDpkaCS51R
btI0K2mmmX7XFGpEUsVy5NrHDOHdz8wH1Nb6DNecsbWwnHGQ4rA5bXnhquO+s0oU
6ipVVSnKlTbjKpyRU3dtQk7Qg5T5+XzH43V6UMIp8OY6rXrRpzlTw9N1JqM1SlGc
uX3oXjU53f3o04qrNKEk38i6f8QfE+nTOLprhBZFY2YSSMgYguY0TeMFQjcJzw/P
QHtrH9pLRdFlW31jWbS3lgQmeKOXbOAB5kBkjUSSsjwsJAmAWQxE4GSPZ774Maf4
l0mHXhaWaNq9/wCVYWMHkM8FsohkT7TLsiiuXkhlmXzFKxSbnkSNDFGJfnD4t/sm
6Rs1PUtHnuLPUolmXzi5fTZpoTAYt0rvIJiYXPmfZwgg8potjEAx/kfGv0RPE/h7
CTzDB5Ks2wUMP9ahUoScZqlyYirOFWCg5U6sYUE3GUFFe0jzyjZs+lyPxn4QzHGU
8JWxVbB1pt0puUeeFKsqlOLpzaeijzPmlHnScXZvd/Z/w0/an0bVo2j0nxRZXc5g
QPa/a7ea4hDKsW1rW7keTy93mMSil8r1GK+8fhb+0KstlHFJfCWVIzHMwjVJXQtE
qR7VeLKL5fCebyefO5Of5Z5/DnjP4W6vZajqNvcWAjlxDe2kkTlomX5zGkoOxnhm
LRrcwxnkMBtGa+pvhX+0xe2NwdN1Pzns5tSkW01JI1V7VLiaJYzexwDKCOaaG3ju
BIeZY9+/JYfyNmnDOOwLeFzfLcXgcVUpqbweLozoVpUptOFZU6kI81Co4yUKkbxb
jL3tz9lw+Mw9alTr4TEwxWGqarE0ZxqUpq+qU4NpSV1eLs9H20/qQtvjXpWoWkMb
yxxMJ4pbdlcLKiMxYFYvPErQRkOSgBEJTBGQcbknxYsbnW/EEFpvQXdjJaRXyPIP
PDSl0Zf3nEjIu2NJIpWAjUkDhq/E7w98ZGubSKMX5cxSIwZ3LylvnLypiST5RG0q
dP8AnmR3r6j+HXj621a+ju7pbe7Vba4dMs6MZTD+7VDbiWQPBkLukHlsVyTuJx8P
jMu+r3WHTtFNNL3mmrLlu3rZtvrdpXW1vWo1rqCc7KMfN3s4NJ+Xu69FZ3P0T8L6
za6XpMlvPczILx5poBLLGzXVyJZfkmMckgRVjxJlhgGP/Vrg5+Z/je8sVm2uW0Xm
yw6nGk5WXZDFG6SRCEN0dcRJIXkGDKuBkucdHpPiFJNF0/U4ZWdVR1bzNkXKNLbr
Luj+cTJEFU8jzCXwMSkV558SLhNW0LULSCeOJbpI5Xe4eMH5o5ZVjjAwfORWlIk8
0xBTFg4Ga8bBYbknCDknWjUfNBpJwtOLWzfuuPNFd9E9GdbrxpwUqrXNKXwO75VL
kTas7bWmv8XfQ828V6tHqXhK1XcsrwwQghY5T86LIkUUjycO8giZyf8AVFMgn/ll
X5ieOMW2r6nFswoWbEW1VACxqzKy+XsjQO7DnJz+G77VuNWmTRxp5DvLau1tPcSc
8sFQbFkPmGHygG3mKKP5T/rSBj4k+LZh0+4mujcLld8jTMHkMjbQ5CpnlnYF8yE+
WehY5r6bBwlGc1K1nG/NHq9rP1vf7m+iPIqynzSjJbLlW7ulbd3bb26aLzPzk8e2
hiubpiMf6QwCqCQCu7kncSPvAcZGWGeuK8xr17xwoY3RYgOJGLE/NmTG48jOGJbI
7A7snDDHkNd8Ycicbt2fW+raV3r3300NcO7wet9U/PWMe2m99r+oUUUVR0BRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFB559fQY/QcD6CiigAooooAKKKK
ACiiigAooooAei7t3UBVznDHuABwD198D3ro9P0KK7w8kkwiERdiiBTu3kKRuB/d
MAfm5IZHHoazrCB5FkIRiuVLsoBARGVsYxtyWGf721XIBrvLe6torRcN8kIRFjAA
cFHDMnyf6yQbRgcd9pAomuVJpqWjlKOqaV0lfvdXatrfQycnd22Ttuulr7rpaX3L
QxbzQ9Miji8tp1OBvd1fczPlsD5wsbR/IiCSL5zIN2eCOa8u2gnkEqttCkLG33kJ
Ix5g4KnYDw3IdhxgVs6nfeW3lr5rs8ruDKI2HltKWj+VV8t5CpJkJjHJQBExXNXE
rTSs5JPJAJOSRkkknuWYlie5JqpQjyqSm7ys+VJ6JxTesldbq1m1r5EQ9pKV+b93
KOjTTs9LpaW11s9etrW1la6YBkiCop+UOq7HKby2CQeSc8ltxxgZwBiszM5LOzMx
6liSeuep9yTSohc4HWhkKEA9+/X6/XH61aw9b2KrKnL2PNye00UOa60b0S1avey1
Nlyp2ur2+dkMpcH/AD/n2NSAopPG/wBG6EHtx7dfem7ztK4HPfvWnsqMY/vK8ea1
T3aadS0oOKjFySUH7S7cZQlOKUdXdpDu+2mmt7fh5BHG0jBEGWYgAe56CtVNEvJF
kKJ/qlLPuKjpj5Rlh83+zyxwcAkYrIVipDKcEdDXTweLNQhKHy7dtkapkRKjMUCh
S7KvzZ2qX43yY+Z+Tn2skfDfs6yzxY1VHKPspYZc8XF3T0ThKLg2pyvJ88VyxV2c
2IeKSTw0act7xm+V7rZvTVX7Wdr3RhNZzA42sT3G35h1GGUElTkdGwcc9CKJLG7h
jWV4ZFjdcqxBAZeOeedu7gEjBI4zXcWHjS2t761u5dNiESxS297bIiMl0kkbJ5zP
IWzcJvYoES3j2hEOeTXZaRrHh7X7+y0dXggjuTGqy6kiwESB3k8qWdGMaQs0rRSG
VsFF3CWLII+pyrhrhHOfrFOlxB9QrtNYOniIpKtPmt76k5TirJSjBuMpOfKnomeb
WzHHYd81TL5ulGPPUqRmpKKi3zr3Y6SilzJ3lGUXdbS5fFra9ubRw8UksZyMlHeM
kAkgblIIAy2ADgZPqc+0eD/i14k0gRRvqEl7bQOrtBKI5J2JEnCTzfvOXbfKfMx5
peXHz1d1TwHZskqac8M9veTCGF7SWIwyLFNtiuN8cssVvHL5Tskl0IyVMkpj8tOe
Yuvh3dw/voFksfKtxIN5Z98iybWZZNwdlZAxUohjYjGQOa1xHhnxDSliIUKNDMqG
Gw+GxFaVOUYShHEqm8PNbw5ZxmpxlKSvFSj8RzU+IMrrfHU+rVG+Vc+j2j8S0knz
Sa91Plsm5J+6vs7wN8ZdE1iWCK5vZbW5uGfEN5OBB5jN5QjV4yInVTF5i524iYgJ
EyGvtLwv4psRAgSR0eQbNyyKiRww7GHlOZPMCSFf9ZvJmOcEsDn8U4ZtS0y8U3UJ
hkjhELGJpwXgYxRPIwd5AwIceaFVQy7/AJex+l/Anxmu9HMNvfvJqFtAIvJPnsWi
hS3wIx9oB+6RG582WRc7BCQOB+fZxkNTL61bAYqjKGIpNKcKkHCceb3oxcGuZO99
7Ht4PHxukpqpGSVrNNW9zZXeiva/bzVz9uPAviZEnt5xcRQWfAuDIY5EcvJCUMZ5
dseYFGBET8gGIN1fX/hq8s718CWMxAxtHGwEDyYxMFheTnAyxwoGSqDMoXyq/Ir4
d/E6O+tbKeG8ikt5isghD27+VGFJGdv7wOQVbywcZCjBOBX378KfElxexxvOjpAg
IaYszxmKSMziLZHGXyomT7hkiiikY4iAr88zDBVMJUlOCUYNr3LuznJRXNq272+d
+q3X0lCrh51IyXIozd5Ju0btU/eTi3ayu7W1ad31f3ZolhZ3UsLshjLIsbwlZUaJ
fMQCORiAqRuVV/MPlxj5JvvcD2vQtO8me1BdVW2PlRunzvL+8iR4pYpP9Z5cbrmU
xxHOMgTTEV4l4UYRi2eHVo7+S4ASPTo45YZWaKQ+fEWEctsuwb/vXUUvlSKQOBj2
LSbmOOdLRw0JZmlnjfMciMygHesWIpMOed8svKuewJ+ZmqlNzahNOMeWMZtKUqi5
ZpX6RcZbSWy+Z61CEIpJSTfN8bleydpKKt10b2ulbzv7To9gYbhY7aV4VVkkZ2Nu
kn7l8yQGWX5NjxsZJdgyYh+55lr6C0Ew2ZsZQ7q0W424YCOOdiwKgGJgnRnJkTII
GTzGDXzho98qi3hW42zsZkZ3dJFkRt20Qdf3ZMaAjJIjx1O7Htfh3ULC4tod7BJI
VWKBmuFxvDmaV8y9/wB9IpYOP3vmQcjOeSOMnh4yjyJzdNuTTjaMY2lKfTmbjJWs
3rZbo7pwjKFNrluouLunZSdm2u921/TPq3whM7SWsrQoZJFA2BVdRvGVRy4HmRxh
HeFx5WSoMx/eAV7Daxwzy27OWaRNzurgho9ynayg+YgjAG8HO49QDgivnHwrqfyx
sFUKoIjeOR1kcqEiG5f3ku0hVy+THJuyK9j02+kmKrvBn3xyvIqAokbYcR4EZfgM
xGzHKxjI6D0qLvGMqjb5mnzSUfecuRxlF9HF6Jaq1zh5ZttqolZpXvbTR6a3e1tm
3qvNezaPdRxqiv5ce9nXc+C5ZX24lx+7KeYM9x82e1emabdRg7IxKscm0xTrKXEk
sbgIXXIZ07fOOQTjmMkeRaNNCcRtgNLsQgJsLiNWKlUbn95nf5h54xwOK9Ism2IJ
FQFYSdpG9VKZRgh6R42qI92OZc9O3bRjVhLmjL4ZRVpPmbtP3m7L4nG8rW02u9zl
q2hyxkm202pX0ivddtttl3bPRrGdowQHkCvIc5K7Uk+7tGE8wRjsE/2/3uTmu4sW
jkijEnzN/C78owyF3beSPm6GT5/xzXB2jm5hjBALZZmQcqGYYOMNg5JA2ZH3vz7S
wErRmDGxkKqFQgxhV+Ys3UYym8JwJOD2xXr4fSU2n7un2dLuzS1d+l1520skcFVQ
ktGk21s1daRTul10fppd2Ni2YBgEbELSskZbASSL5lULkH+6BjbkbQRjPHTxQmVt
wRVXaMFd2XZs7jjA6oP48nJ9KpWsMWyH92rqqbIlkSMKGjGVfaMmMvwdm7oQOozX
QRxsSrquCEVOpU8fNuVeRxtHBxkADk5J64PZfZ3ikld3trZbW138lZu5hKabsm0k
lZu3le3qn/WxNDbwiF2b5w6sjMFKswztjDHB5+UDvkcDGTjZ8PxqkaHarcsAzbnI
OCHxwQerAH0z1BNRwWglhMhZgWHDKm8t1ym0Y+dR5Z3KCPL8w+uL+jJlJghc+XK2
wHG3DDDb2ROcAfUYBHv10kvci3vfW6SdrNt3s3tZL17XOfXllql7ydm9NLLba/n9
3lsmCRpTKGyFiwqHAGeSzffIL84yg6AfhUvkLQeXkp8jFerZAX5sfxgY4JweMVsR
xMVwTuJ+ZcYHG7hSR94gcDueue9YutNIIltYXYXN2GjjIDt5SRqTLcEr86JEpDY6
uMgDzJK3cVaO9m3p03u2u/l5rsTe7s09NGtm9V2e299dmeaWmL28uW8rNjZTskLv
vC3dyCyySLHJ95Lc/u45PL5kaQA/uwKinEkerxtwiTQ7iuMD5Pmj2tgFcEg/OcYZ
sc9e30TSbKC2e3VSHjLqGf8A1qtveSRnJyA8sjMzyffl+cDgVz/iK2EJinYg7Zyu
SrEhQWBfaTiTcGBxngEcmuCcJuEZf3le101dRsr6u6u9tPlvqppNxaavHTmd1dNP
Vedr6LS/3VFeWYSZOQpkB3ZLEhiNpYZ3begPU5OSOlYN5aRKzvhizO2XAC/LvwUX
kYBJ5fCA4GOproYoH2FkygAAVSDuAP3VbOOP9gEY24J6VlyylUnYqxVh8hwvzfMU
IZsl9vzt35PTGa5JOXuxkuaSS95NvW0WnJPb4V3tshczTvHS19m7b6/grfLocHe2
x8zfI+xDudYiFdi5Kjc+T8iIWKtyegxJzXk/iuzaZWuIVKvAJhIWBDSW8rgzfefy
1xsHl7DHgLzhcV63qsyKpLSAHnKqpyzjcqox/wBk5+QjqecnmvLddYp5scas6NHI
JFEgT5tqKw+oO/Gc49j14K8LqTm7LmhJcq973nDVed07rXQ6aNSScebXVLTpG17t
LfTp5ao4KHUFlsYoMN+4PlOxlhlAdeAzBMl18jHlnIjwhK+d3868R60sMMgaWJBJ
IFWRVxkbcL5jO++TKDywnCDgducHU9ebStRvtPmfejtst0STzBs81w8jdso3lEcR
eSAeSARXiXj/AMZpZ2N+15ItqYrdpizEK4BWbaS6P5hKAs2AElJXGeuOdThVm+dV
JaRUFblb5eVLolfre70Z3U4RTbUb6xaUrbO3vWe/Xrd2Wmhh/EHxrZ2qSSLKjQSi
chjtZW34WT906fJ1KebnyemRwc/lt+0P8d9L8MyG8hv7dYxPcD94xmJiC4fZE8hj
EZC+WMzEDkFutWfjz+0ZaWAvbO0kYXFu7MBLsIEEoDrIIfvzFzG8hKkiXJizHEK/
Bn9oL4y+IvEV0LCC6M0l7O8X7pJVFpA5PmvER+4t5NwQyB5c8JCRKSTXuZZgI4yr
GMaUZRUlz25ou/LHo1tolpo2nax5uNxNOEJLVczsot20bV9E9NU7rTTXW1jjP2rf
2uNX8Q32qaP4ceGJmYxSmE+ZDArBkJSSHMM8xES+YMSRW7ZH+tAz+XU+m6pq93c3
d5OLppZnkvJLpnd5n3BpmaTPmv5n/LNBJxsSaTJJNek+N77RvD0N9Lqksv8AoxkX
UrxSHmM0srN9ntI4cC5ln3NJJyFHLFsA4+TfEfj/AFnVbO9Onao+n6NbztFZ2sEQ
a7kjutrRSXdyqMsE1x9ncvGs0UiKkoWMqCrfpWWUstymnRnjqc6yhByjQw0faVed
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
9lbVW9bY1b1JQ5HK0kuZW93mSTauls7en5H1Zo98we3G9XXDRnYvzc7t5V8bhsw+
cxgjnkYOPVtKu22RiAhV3oXjx8zLIWTeF8zAjjEa56Z3ccAY+afDuoPvhAJQFxcq
NmSOEV4mYk43uwQf7r+2fbvD12kssZySFDhuVKh94YAPwdwkTZkDJ2cEAYr36Uo0
mnG6lJxcue95Oydnq3ZX2ONvnUpSvZaX7aJrr1el9Ot/L6G0yOIBGDylivmKj7VL
oQG3YAyU3oSEJGMHGSMV2mnAOpVvvOEUkBmYHYPmXYDnjOeM9RjIFeW6YZDLEkMw
BkKKCSrESHLFCuwf3wiLn/V55xXqujwLujaUEuJI96sFKs5bIPdk8zzDx5mM9Md/
Zw8pKMet5Ln0+Fcq690n0+7oedW5YuT0vJ3TXZ6P02TvbX8TtNPi8oSK7OYjs6nC
rsUYLb/3ZJfA6DGB2rrbRUm2+W0ZwoBQ5C5TK7fl6bSGOMjgZycc4sIjMYRONuzI
w5YuAASW3nhvwIGSehNbGnI6SbdvLYyq5BBK7h/EBhgepHXB6cju540+WLSs1vHV
+9ZK63tdtWvtd30RzW5no7NyW+266263t5ep1dtAREFKFiqsdqgYLsoJZBwACWJ/
5ZqM9hRo9vj7THtaNlcdQA6FcfK3oQMkE4zwcDIp9pE6KhdtzkqQ7YxvG8sgwoBC
ZOM54yevNaVnFGJZQBiTJYDIGcOS5bIwFbccuQeWziuqnFLlaj7qctHZPW11e3V7
Lz8jKb36aLZ9mtbabvqWpk+zJLMCmwRsXkJCpGgOZCMEA4UMD2w474Fc/aW8873O
ozD95dRCG2jJZfItBuKHBzseZxvkPXLeX1Q42LsrfXMWlovmRoI7i9IVcGJSDDGW
Of3k0igSRkAbI3JwcGtGeIRQTlgRgEKBgAJjA545wenHTP3sY3aUtm+VXTvok/Xy
vpvr8rxqvNvfXppa78/Xb1OR0y3K27OxEhWeT58ZcyMzZ4/EJzxkHBIwawPEa5tT
8oVVZSgbJ3r5rFjg9AWbA79yDwK7qyaFtPiOzBJkKqAN213dtzZz0ySWyOgGe557
X7YywylRgeWXJ4+6m0/d65+U7l9MYOa5p01Gmmnoopytrd9HfW9nqt+hSlffzs35
WdtFvojjJkm2RzMwEbKpZVXAcuv3Awx5YyQ/I65Ga5TVJWXzuMImwEcE/dGdrSfc
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
DoeOlQ1Z6arVX9Lf56al0d5d2rta97X1S13v0T0I6KKKDoCiiigAooooAKKKKACi
iigAooooAKKU7cLgEHHzEkEFtx5UBRtG3aMEsdwLbsMFVKACiiigAooooAKKKKAC
iiigAooooAKKKKACpEIQhyM4yFGMjO3G485BXIYYHXuvBpiqWIA7/wCT+lSkq7BN
2EGQhwvUjqx+XjIG5j0UZxximnZpq6trfomrdVa2rXp59Zk+nSzcvJL01u+nknbV
ER6njHJ49Pb8KSlOMnHIzwfUUDr9OceuOcfjQlzNJfaaSv5vr+pQ51Cu6qwdVZlD
qMK4UkBgDzhgMjPPPPNXdPjtpJ9tw7RqdgQgr8zmRAVyynaCu87+No68c1n0UJ2v
5pq/VX6rpfzaZMotxceZptW5lv6/M/Qv9nu2iS3iJhVF3hVuFRmEzKYxsYk4heOV
VIdXDxmNNwlxmv29+C1k4trO6bTI5omspIll+ypI90uInZmR4JFlkjMmRJFiXZmY
/vo/Mr+fj9m3x0tjfR6Rd3UiedcW1vbRf60faC5fzdu5miWVAys7BYnuFjGS54/o
V/Ziulnih06SKSWGC2Mvm2syENG8ULDfJcrFIS7lREbeKLyQ4xIBHiT63h9RnVwl
e0uWjiIUuVvWL5ZPoleUntJ3Sclfex+KccQrYWFWpUpxqqjWp9LWpLkUn/ek7px3
bTu9D2jxLpWoeI/B3iHTLXT7ezu4bG6gtreWCGVDb3EEwjgjkuJbVEZZWjHnzymW
02ISYvKyPwT8H+H9T0P4p65ZRrDY3Ml5cxfatRijCpHNKPNjSSaX7kZ2IPnkaSUR
/upa/p4s/D0U0SfbYG+z35ujKsTStEpceSqu6P8A6UylHgMYkijHmSDyf9WYvwv/
AGuPgvrXwy+Jx8YWMd3Dod9q95cTFC8Zuh9oEbRJGZoY7lN7RLseSOPy9wlwDz9v
PF+wr023epDEKUqjiouSjOEoU+XTX3ZJOKs3Z6ta/meVY72/9o0oeyjSx1BqDa9o
6lXRclr6W5LNX3b7649t4S8N3utWTy2pu50+03N3PC4021kuIYpJI3ubyCS2kW2H
leb5S4YSRnEUykNW94v8ItrPi3w5eeMIYNe0qZLCKCC2tImZobPDXXk+cxVBYW5Z
BI8kfmRxw7N+9mbsdC17RPEVho8Xh27mXxDqkcYvLhI5JLSJH8ozRSJGkgE7uVjN
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
IDp8GjaF4m0PVrt7qxVLRrSCy0m4vZkdfJaAoRF5kqpthGZK/Iv9sH/g4s+GfhtN
T034YS3WqX1ysaWkifaNOtpLZm2iWS2jLXbRs1v96D7O372TM2FbH895ziK2Z1Ku
Nrz5cNhYzjSU5Rc7XhGcm9JOUnu7PTyR/RmS5XmEVahga31qp7KdpU3GEIaqnCFV
qyiuR+7bV+9sz+hn9pr4teCPhv4B1LVYfFlvot9BZiIvNfo8txcyRTrBb3FszGS6
d2UCNOg/1uIsE1/Cv/wUd/4Ks/214o17w98PGs9Q8QNZtplze2dybrSbacSxiLUZ
LpJWN2WtI2/0KOWYpNI6tcWmT5nwX+0x/wAFFP2pv2zdXuNK0nV/Ey6JqMk63Oka
MtwtpbCRvtLoL5VLQSfZ1EVzKzRo0So7AfMR8+eGv2P7q6g0zUvH/jJvD6anMxaz
0jTE1rUVhTaWVHvr3R7J7iVpEhjVZ2CTMoCSqW2fC5nmXt6ccNgU7QtzyU7t7yTc
erdtVeWitJatL9T4f4XhluMqZhmVWFfFVeTkjKF/Zt8kpe7ayXMn7zWtr6K1/mGC
28b/ABd8VS3VzPf69reoyBr3UrlXeOJVjdlV2iQQ20axxsLe3jWKIBTtVI1kdey8
B/BG+8ZeIbvwzfeI9M8LalaPJGTqSC6gllDTxRWyS2N3Jtu3ntpIpbWVUmt9yNIp
yyp986T+zJ4k8MzRWHws0G48V6lpkmovJa+IdD0qx8TavCt3b3CB7fSZrqFop4Fi
jtbQXd1NvhihiDsI468m+K/wt1XxRodp8TLXwePB97p97Hb3V7omnQ2C/wBrWUo+
0QXqrL5d1qtv5kTxNcPa3Dy+XEAIWBHx8Zy/tD2darSdGMqUqi5rc60ddOpvFpzj
HRL4W01ufobcI8jq1Ix9pJKKgnVnJuKaTs48m7s2tXHR66eMn4J6/wCDdb0vTNT0
Tw/4y0+61fTNP1WeDT9Wj1LR7MahGlzdqkclnHJCJGuIbm7db/EESLIERlRf068C
fCPwbe6TBrXh3W5vD0lnaSBNODW5gjG6GIW9vaGHHlRPGokjjJeSJmEMWVLDzD9m
83k3hbSvEGu6LdG/ubN9OmfUYfKZ2jYpcSzWZhaKPz1tTJFJIFjw4nhiIwT9YaZ4
QSJP+EgtoprPzFk3pFNC8DxtLKwEkUbQl5DlZdxTPGSQJQKWKjGKSp150uWSalTa
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
W8wOcPGwilt40+b51kWILjMXUjMgbbXf2H7B3xm0Tw/qniLUvAU0UGnN9u1K7j+0
3KQWEEYeS7mktoJFRGtlDLaSpBPGqxrM2S8R9k/Z5/Zk1DxR4yhgls5bzR9KSy1K
d7pXheayklXbG8MgWfDCWIxEAJieAkjywH+bxWIpxpOpWkqjUeWkueLd4qPwNN6u
75W0lu76O31FBSxFVRSfNKEubmSauna6kvteV9Ufrh8EbBvGPgnR9YkhjWW9tirs
0bEOikx292qOtrJH9qIeWOUAbklA4GK95k8I2umC3iW2LNNmFECBYo5CVLTxb0iE
jSZ8wQ5Ev7ohMrKTXceAPCOn+G9A0exR7WGBbZPJgjVI0sGtfLkhEASPd+8DNHFB
+6izknjNdj4ovNDjSOOT7NBNHFPJE73Ie4jlMSLtjXAkmkASceX5U2NkcMoOY6/P
J16kq0pp3i6kYpSjdJSe6lv8TtZr7mfU0m1yQjUThyxXNO7vNez0XutJLuup5jo9
ummraW8SwNNHcSYd3mgaRZmQRjYTLJ8m5QDnHzSgjHT3/wAGS3UEzuIkmWKCJ0uG
VlWMRNlXQmQvFsVMECUS85xzx4/punSyzxTx+dPueOOMrA0ashEf71v3UUhkSJAM
Yih+cxfvjzXumgWZgtY55VmR55YWZFjYOEVGZYJIJxNsMheUgxvkxeXxkjF14zUo
VXJtU3GbcNbRmoxb5Wrcvvc0r6LptrEouFRxg5OT15XaNnompaXlfW17vr5r1Xw8
7yGYLJBsZ1jKRqIpFYqjeZEYiP3b+Wvljr0GcCTP1H8Pg6qFV8yrMjl3k3eZIAIl
WLP7zGwpktiI4jJPGK+dNDltiYLWEHzY1jYmF413A5hQGREiR5CU37sZxgHrX0d8
PoC+xhFEwTZsG3PloFwj7v3mJBhnwmI/MAOc4K8+HpqdVzcLzi+SS+CKXLGyjqvi
U46pO+uuhr7K0JRlDlqctlJy5rWcdG7O9rPRW+Z9r+D44/JtnffI5J8xc7UQ7nVY
3Vx+8aPywfMTjGCB2r6Q8MIU+zp8r7TGQAWDEljuDYX5M56HIOMdDmvmbwYgFvaL
5u7ZIrHaxXIjAZmcAjZ91ZPLHOQB3r6j8IyRzKCsRVwDuO3c4GFHr165yMg8A4r6
XD04ScJO1LZKN3du0Ld+qSat331PDxKlCMk4v4/ed1u+WzV7aaW2s9+x7JpqmQox
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
2TiOEhmLMgmcurFSUIZwiSTyPPIZJJT0wcyD7/DSpqUI3b5pq7jJcsbcyS+K7XNF
tNbtq/Y6oV6LhBtxTSajJy2UVonbXmv1a1drt9fNdG8BQzfvJoTOjHzssscPlO0f
aXiPHlqoEo83O8nAwCPUNJ8GTwTh2EVzFcYWKFEZbiJUjZXkkbZ5OzONnmyR8uB5
YORXs+k+CztijmhMkRARQghILKVWI7zlP3gzlYxn07E9tpfhUW8qRyQmSV35aMgO
BkIysF8tI8IBGz++d/XHTDDStB1ElFqGqjd68vs97+7C733bu1oiPrS5Xedlzcyi
nqtIt6aatq6adv1838MeF9MgdnWzKzpsWUvE7K8wcEJi4PlvCJOgj+4R5hxnB76x
8LSSuHgh2AyRttKI0qRYP3W3H95IkmS6kfI3LEcH1O08MQvHHE+8yIjAhY0Xaz4D
7G+/5q8Sb0kj6kTCTnPYaf4dkghiRYwybEC72ZwCgIeN1DbOh378jILEnPFe/Ckp
wgpK6heScUtWuSLUHHRJJ7edmtNON4tRvJT5uayfNp267+aa3d9rnmlt4Xhi2x3E
DxyOXOQyMyK20t8wEUWC+XKYPcmTsNRvC8gYoYZXRMIqxoA0bNGQ8rqxzMEkVQFc
/wATHCgcesR6KsbJKsByCryFH2Ljbw6nkgDOyUKBnpHnIIsvpU/lqXRGLIQyh1VE
6EspdpC0nfO8cA5xkCvRoU01JNWUYppNJuS0unJJK71vbtqtGjJ4qV1OL95dVJK/
yd7vVLTTXc83g0FFSIPtiKMyCIsMovKF5Nkkb8DOU6ZAIPAJ2INDQxk5MwBhjidp
GaOQsPncFPLTCZbEgwcscV2aaeFBRY96SFQPOYGRnQgOAMomScpvKHjYB0CiYWGE
KxkEsVdRsyBu2q6oPuugdckjH8sbqUY3goy2hFpPXTsr3VlZ62u+phKrKUlJt80v
LVtpJ3t21etzh7vTFg3woFzlMHzD5ah0d/mO/Hl9YwjgvJLycc4z5NOkjhWDbEpl
XYrPECHy65ZlwdkfXA6g5zkjn0hdKZQ7rvkbdufaM5kXJRWaQ+ibBjnhSD0kFKXT
pQEdljd0V3VAAA2dyscodgdkIJIxyueCZAJ967mua8o21eyTWyutddPTW5k581ou
adubo1utF001163t1PNdR0xo0jVIEjkCJuZtkavFjErsucj94GIOCMe/A42+0xol
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
wdOLilNSvpzWVumu7T0X3anqT5fZe0kkvdVm9b3aVvW6vfVX01P5ov2gICi6mGdw
RcAMjjdnLxoMhyVLlhksvzLksmSqivy/8Rf8hS4/3vQjqAe9fqP+0MrIuqNE/mA3
HBIZiIxKPMLsd2eMsQR8oweOtflz4jx/ak45zk5B7ZJxj2xjrz6819HH4Y6fZTbt
5Ld9/wBbpLQ+fdvbO0bLWzW1t9+r1+5mFRRRTLCiiigAooooAKKKKACiiigAoooo
AXHGc98Y7/Wkoopu3RW0X39X82AUUUUgCiiij+l/XT+vkBRRRQA4EAMMZzjByRjH
t36/h1pv+frTwmVJ3DIKgJ/E270Ht3/CgrguDyR0I6dR83JB5HQYJOe2KrlklzWa
V1r5tXXzsr+grrXvfX8F+qGUUp4pKTTTsxhS5xyKTpyKKaa3u7rbTTS1tb77r0S9
ANnS7T7VeJCkghLq+2R1OAwUuQcEbWIG1O+WTHJr3z4Y3jLrukQyPE3l3lz9qeVk
2SlUeMebuWMbSS+EjP7zDDnJNeDaIzx6nZuCebhCGQA4ywLYJUjd1wMY3gcV7v4G
0yOPxFp0oMgj/tM3siz+fGVjjuUmUpLGG35BluAp25MZBZfNArWHLKXwNqVuXmlb
3lZrXrun067nDVXvJtp25V0u1daO6Vrt9dPLY9b8KaJd6N4wvP3Xk210qXltOkck
ZgL36fZ445DkAJ5zbssGLIGGQBX6FeCYDqFp/ZF5C6X2yNULoQt5AMDfvJcPwY4z
J8svmM+JSDmvkDW40t9QS7tJTLENyxMJirsiySXRiTOfLjdEZYjghgpI7V94eA9D
h1vw5pN9pdwsl7bRRpaFN8kkiyQq8SyxxpvEmQDF5nkxRxiQzGYiGvOzKdkqvOkp
6JvXkmrX1tpZu2t1yLujswkOdNK8kpN2S2jaNoqy+L8GeqeDvD0SRxx3xeziIW2f
yyGu5t24xBW8qZBOrhQ8cn+tiYhWyxr9APg/4ZgvtI0yRoWl3QiDed8UYityR86w
t+5Z5EjO3B5D/wCsHT5z+EmL9Law1WMR33nrBH5/leZ93yoWebgbsIDLLJEchTiU
AHP6NfB/wRFa26W9lKVitbpreXL4jhRHVY0mhbzBJOD8kW0dMAyjzZsfK4+lOpHR
t1IQpypTjNPmco8vMrtPl57N7u+vc9qnoo1pSt+7jFxS1i4uCinrtto+vS7svdPA
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
t177fL0E9tVe2v3a+l+wJ80igkDOFyeijG3dn1Ucg+oBqW4fcVwCqkAgbgRwir0B
ODwSckn5vepbVSPMIRGHlgsJB8wG8YEYJO5mwAWEbAKTwBuNVGOe2OTg5JGOOBn0
Oenr09eiUfZ0k/aNSq35o2upR5lZpq8dGm73TurWtqZq0qn+BJLt7yvtp5W32TVh
6iNZW3fcXeM8NkhW29CwO5gAcHAznOBUXOMc4HPsM1ZhkQP+8dkQxSKSiCQlzC6o
Npkj+VnYK7hjtUsTHKB5b1wcZGMj2JHTI6/5z7Vm4wU+VydraSevflvb7m16lK93
o9FH5736W5t72b6XsNopSCDg/wBD1GRyOOlJWRZq6ZO8d1EsbtHuOxmG5sJkMxI/
55jbukHyjHPQGpXfK3ELIBIl67GUfdYNlPKcj/pp84+bjPBAyTlwkqxYAYUBjwCQ
u9QcAhsg5w4wcpuByMg39rySoQi7JXKBwY2VsLlkGNgOBym7kAqM9SdoSmrWcveS
SiraqL5dL31306630euM0r26bvrfZu193srenc+qvgxr4uUs9JJ+zz2lrJbuIiyi
QIzg3TMihiSn2QfvTKh8lyXwXz+kGka29x4I0y9wo1XTfs8tq8OY52uImd0uIJ1j
HleZGoi/dSedFhIe+2vyi+CmtWWheMtKnulFxY3qS2F5HcKgt1jvY4rdlLyGRYZQ
wilik+fBRjF0kx+nPw4W4udP1bSL42lw+m3OyyuonLvcWkh+1QsEe3towghXypZP
LyIghDc7K8fGUK0q8fdSpwlzJ1NoOVpKd1u09OVpLWL13PcypSkrc3M3FxcOW9nC
UZcy81srJ7Lqfo/+xv4msLLXNQ0tryP+2NQS28Qsk7sZZ7S94nuEjkEQKtcGMQkR
jMkIBj5xX7TeCdJTSp/7f05IVivJI53iW2RC9wDHulleF4hIJ3RFBlI8smQsWzk/
zsfAaZ9H8eaBqkksaX1utzpayLMJXexlkkuI4UaOTDlMgiA+VEYowOSUFfvv8JvE
V3dadb6RqRtZhEqPBex3Cyvf2LN5ht9r+UQ0MiJ5mTEBKzefjH7z5LPcLRp1pVHV
96qoqUJRjJJuaV7yfu80E2mpabNH6TkH+0UYUVJcylJc3O1+791u6avo9/s2W5+k
3gPWrHVbrw1qT79PaaT+yHf7Q0bWks8ebeAiRpXkjW5t4hGB+5lLK0G8Tjd+jvw8
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
63t020WltO2rNYwW32tN1dK9vLTfR6p/LXzrxVdyNHJbxMTPOXSMuGwTsKzM5w5+
RcAycHoOOSfk/wCJOqLpmm67cLkyQRR28cWWBnnCMI0tl2bXmkkkBkcAY3x59/pP
VrlC9zLHtuLpmaFFt8ukSKFZzM/l7VJxvKNJ/cJ9T8d+MJbm/utRnu5PMktZbqdL
NZN9vCqyvHbsIj/rJyId7PJJGAE3RRYhry6lnN+0UowinKTim3ZJau71au9F1sj0
sLBQunaSstHq3JST7bJq19LW03PzH/aUQ3OiX19qNwbd4LdvsGnDnywlu0jvc5Uk
zLIZTKuf3JeTaAMCv5af2v8AWFk1DUJECqxPGzeXXACbWZzyMb3B4H7xPQY/po/a
41hbPQdYKKEkVJ5YXDOiFGJGI4iJco/mrnbmWUsuPM5z/J5+03q80r311OGQobma
ZHMcjxktHuX1+/G0fJGcyAyHkmMDGLr048mrblKet224csWr2XuNWvfTtYnMrRip
OStyxUYq1ou8FJpvXeUu6t2R+JXxavvtfiG6PrdXDr1OUMrcFtxLYIH3wT75Brye
ut8aXX2rXblv4gWL85HmMxLYzk+nU5/meSr6O1ulvL9fnv8AM8BKwU8owzkYwAcH
rg4wcdcc9fpTQMkD1IHPT8anmKnOAQy7VbjjCqoHJJOOPrnGetNK9+61XmrpP56r
8RN2aXR36ecUvzZXopTnj3HH54/D+vWkoas7a9HqrbpP9SgooopAFFLjjJ49M55+
nGOPfHtmnIhkkWNerEAFuMZ/iPoAPmPXA7nGarlle3K7vlsmmm+azjZdbp3Xda9h
NpJt6Jat/iNIAA5zkZI5+U5IwffAB44wR3zSVJLnewII2naAewHQD278cc5FR0pa
NrtZfNKz/EE7pPuk/v1ClHpz+Ayf88UlKDgg+h/P24wefrQrXV72ur23t5eYxPrR
Sn/Pf6/nSUO13bVX09PuX5IBQM/r+gyaT6/5/lRSgkEEHBBBB9CDkH8KaaVrq9pX
fmtNHttZ/e9gHKhYsOhVWbnj7vJHTrgHj1plWYVBjumMgUiEYUKSZCZ4cjphV27m
LEjBUD+IZrg45o0tHdXbu7aWv9lbu3m9XpfQlO7mtdGl/wCSp6P59AIwBznPOOeM
cDOe/XpnHrzVxJyhC7cqsYLAMGBOC+dxD4POeOjD2qocsVXjgBRjOOST3PXLHPQZ
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
XaAQwwwbGckkdN3Xvj885+6ua99tG1dXSX3eSt+Ilbrvs/Nq1n+X32uYkygF1ZSG
ySR3z1IH/fYH0GfUVy2qiMKGXG98oy8FgGbIyPRfnByBnAAyOnZzrhQGOQVXC9MK
SAc/39uOeDjkHqa5DVYRkuFdAEwG+Yqm8kZAQ/eIAi54+fgcZrhrRsnJays0793y
yun1SXMltf53LTTSukr8uuulvTe/XbzPGfFSFIHEZdS7AgqOpbaMk45xhQQvOOhB
GR8Z/Eqe4tzcjcAEUnzQ6rIrBBguDHKVOT1QZ54HIkP2b4rMjJnaoIRmA5DbVL7Q
vdH5OQMj7vTkV8VfFK+hVZmljMbiQW6u2HLNJKiqRFsH7tMeY7xlpR5efl+SviOI
JKjS57VW/aRUORNyfNyxupWt7rndq7VtVdpH2HD8KlVtRsu6erVlGyta+tnt+Op8
0RFtQ1M30kkyQ6fbyO0Q+4Zl89Glilh53yGOaOSN4fJkHmHBiGB1dnZoWkmjcqqz
HOwsDJbq6xqrESYjkQnPGAcyklea5ywMnl6jPG6yyS3iwopih2wW4knR0jYx+X8i
yBjnCqYwDz+9PWabElu0mWSeGNSWHLeYF84hFLr5ahRjpjygvGSfLryqcffoynBS
hOMOerL3Zylsmkr6x5Xe621PWxNWp7arBQSV7c2rVlyyjJXej9532t+L1rKxle5L
RSnGzyMMoJbkCUqZI45CQjjBEflTFWxjO+uzsrIGRVZXdFgldZUUMQ22NlkDFN7k
bGkjBwuGA7kjl9FaRt820EfvFjEakqxIQBTI/l7M7lLHiHKgHJ6em6JaHywikK0o
UOTh1KxNHJGscOcuGkWQyOShwAT5hNenhbQpK1NxnJylK/vLkm3KC51pzTcuW3RL
va/HzOCbhFuSTvom0mlZeWnX8jtPD1pNBbQM6qY1Bj8zcnzOXCM7f8tfOxukLyGT
O1AMlsj1XTLaNWiPzIVDbBHJuUq3zyAjYNp3jDuuAcJz3HF6VbOqxkwqWxFtCkBd
j7sBVyV3uOswxHhH29zXf2iuGtpAfKeLLb41V0WQgEKdmSnyFn3t3Dc19BhadOnG
hB6x9mptNX5ardNuLctV8TtrZpannVpuV3fdtX1batFN2V97u/T77npuiHbChaMg
4KrHgkqN2CzsSPm5JHUncc4BwfVNKLsoDMAg35jLbispODk8j5QMbEP8WTzmvL9F
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
SNtZc8YKzfRwnCclbpUd+lmSKAIyCDuQE4OSCCQQffjp2GBUVPwNgIzu3kH+7twu
3t1zuzz6cUys5JprTeMWt39lX6Lqn6bXZ1rbdvV777/5beQUueo9etJRUptbNrda
dmrNfNNp91oMKUY7+n6/55pKkAGxm6kED6bs475zwe3HHPOKqHxK7Std3lqvS3W7
2S73el2k3bvulp5sa3JJHfnGc4HXGfYdauWjxoyGQM4CzEKrAnJTAKqThGDKuNy/
PnngLVIjgH27duSOfy7Z6jJzVmBGYblX/VhjuBXOSpIBHDYAU+p5PIFb4fmjWXJF
OfKnC6Ss24OMlZ2i13vqnbd2IqpODTdlZq97bxaX4tf1qdTqC7tFtYkUFoYUMzmO
NShwSUMy/PIvzxgA9HIGMKCcDTZdjSRM37u4jMbgD5tu5SPmA3BcqAwVhnI4OONW
4SN7JHUuzq0nmOZYihC2iSoqxgDCrIiozKigOwGW4jjwIZCs2Qg+44VXL4UbSxxh
lJzggDkc/dJxXbjOelioyk3d0aa9t8UVOUIXtFXtyx0UVzLmv2Z5+Fi3Qrwk7tzn
UbslZt3W7b0lG6dk0krrm+J1zEykkFnjiESK52FQroSPmXggsGC8dAQwDZFU/wDP
0rTvZ4Zo4Nse2RY2DsCoDN5mcsB94lSeTtI6AECsyvNqSjeHJf8Ahw5uZKzlKKlJ
pNd3b1V09ku+i5OmnJNPaztf3dL6Np8zXN03tbqylGM84/HOOeMnHPHXjPToelJS
jGB3OTx7AZ9j6/XtjHOaXXTTXX1XTrvt11NSzmIR5wrsNy4YOOoKg5QhSVwHBJ5L
AHOCBWwfyz3HbrU7CMJGQrqHjYsWGRvVmGYzkkocIu75cNuBGASY3UjaccMgbjpy
SMfhjHb24rrqxTalaLtGLapt63jG0leN9uXRp3XM9GmiI2XV+83a/le6000d9uny
Ldq4DZGBhlJB+dmzw3B4IIyTmOXZ17kH2H4W+IRo2qxYIWJ3ZJ5QI1aFWeHEnmSD
LKQylliYcKckjG3xm0CGUK+QCRgghSGDDoxBwce2Rnt1rsNGD2N1HdL++VwrGEll
LLukjUgiQMxxGvmhPLYdlG0Y5pczhJtNqK+G9m3dO6Xkt9OiNqT5KiqLeLSfu391
u+27T17ardH6deH7067p7MV+z3JlSa3dSiReSmceU2fkDhfMD+Zg9R1AHU+K/Cuq
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
7rxhWDblOdwKswyOcAZbOf4bEOpCGRwiARMhQYDM2QQVJ3uP7uzA4CN8oB+WtKUo
QTck+aMr0pU1Hnu+Vyeu+qur9XLR308vEUKleLcIatJ2vZNxbvf3r8z5npu18LV7
nq/g+Jbi6tdMmkBjuPtdsESQsUyXkUoFilHnvKQYo5VCqYvN3ZUVwvjfT207V722
kQo8Fy8Z3bcsPl2ngISdgDA7TuDs27AxV/StXksnbyriKNIS89u0SLHN5ksSJNvk
YeYnmCCNY8t+7LFh97dVLxBKl5NO8h3vLai6EmzafOXzEkQBdwwssTqZHfLj5iMk
iuypVhLBwmkuflUZTqOPtHGbScZJ6xUfdtve0bW0a87CwVDGKrZ89TWbSknyy5dL
N9LptJPVSdr6nJ2Fu1zcpEoDHbK4UqzhjFE8gQhAT+8KhAThQzAsyrkjQ1HTwLm2
iswZfNs4JmWNclHdC8yYGSxR9wyXLPj5QFK1n2N3NZTG4tztlVCAcZ+UlQ49RlNw
JGDzXqfwpJvPGmk6hd3FrbWmlz+ZJJcvbxxyeZHIDCxuNsbmeJZlZWZWClpYyJV3
1jg6UK8/ZyjtzS5qd3WduV8qu+VRspO/LfmaTvdHrYupVoOeIXK6dGlK0ebWVSSf
KmttZOMU7qycntdG/wCINA+IFpoWl+B0tZdQ0JfJ1jSvskbXCmW7gM0ssbiNmhke
N8SwPJGA7SEqu7zH8LezukadWglBt2AmBU/uyzbVDZ7s3yr13HOM19qXnxu8FeE/
EN6P7Jn8SRNoT2KSG7UCHVWiljjvYVA2HyQ0YjzN5S/OPKlXzDL8gza2Zbm8leFJ
VvbkTXDMiI8oEwkYKEBSJmxwyAMCSSzdK68TPCVKFCEak5ctSapuVlKnTlZyjUi0
pv37tTk5NrTRKKPMyitj505zlhYxpVHGpCT5ozqOc1zzfO1vFtq2jeuzdsie1uLb
Z58MkJdVdA6lSyNkpIMjlXAOxhw20kVXP860Z71r6aIXTutujFF2je0EBkZ9qBiM
7dxJydzY644rOIwfUdjjGRkgHHbOK82aj/y75nBKLd3e0rRTb0Vvedlp3Vz36bm4
r2qUZ2u1G7jrfRSe7VtV911ZtKKKKyNAooooAKdhskY5UfMPTGBz9DjI7fhSoAGQ
sMpuGRzyARkcZIBzjIBPPAJ4oJyzkcBskgdMFgcc89cD/wCtVxTe1vefLa6v5PZ6
eYru/l3872tvvv03t5jKX/P+fx/SgdR9e5x+p4H17U4I24rjJ2hsL85wQG4255AO
TyCoBBwQRUrdW76XtZ2t30/4cG0t3/Wi/VFueIm2tZQ2RsdSOMLtfOAQc5+bJDBc
5ymRmqQx3OPwzVuaYta2sBUYh81g+0A/vCGK7hyRxu59eOKqou51GCcnooJPHJwB
7fl1rWUXCooytN6N8zcYNSimtfdaSTsnfWyatsZ07qD5rK06jTVrcnPJxfzjZvqJ
645Hr/nnnP8A+vFKASpOR8uOD1IJxwMYwCec469zmp4pY492+PzQynCZ2rk8c4+Y
YBbaVIIOOozUBDL1BXcAecjKnDD6g8MPUYI7Gokoxa6tx1V9m0mmrbpXWl3trvYu
7batazjZu1pLTmsr3021SWqtfUbRR7UVBQUvXOTjvzn+gNJRTTt5q6bWtnb0+fnq
Auc9c54HtgAAe/b6fypKKKG7220SWit01v3fmB2PhXVYrSYRXCgqjpKhOWwVcMds
ZGwsCfmL5GzI2mvqbw7r1rfrZ29lulnhsYZDOYlhtv3cWxvKgbBYu2Co+zwqVD4A
xivitGZWBXg5x37/AO7hvy5r6T+HZk1C5tLqzuktZ7YRmWKQFvOH3ZNkY+aVNql1
ycRBg7A4wcq9uWL97S14pqzfuxi1a2u3Xfex1Yeq1KMNNZbrdLS+l7Nu3brd3PsX
wabdrmBnzC0jOTLAVV3Zj8ryypGAJEkLCIGMxjbHk8c/ZvgC91yJbW3tdSiulVom
SC/jkc+cxyD5kBtjlPkPmPHJIIo4vNH7sKPgXQtTntpoY5xJbkSlY5f3bLJ/FuVs
DnLbcP14yD8oH1b4E12aNrd3WdmMsaZjKrGqfumEgH/PTCFGkB/dbx/yxBA8qphu
aFVSb2jywm/db92/NvJ+9eN76LWyR62HrqnUWsvfck5Rdnryu7vdc17vXq/Jn60/
BvWNfVo0nTT4YrVIIwy3Ek7GTYDJ5lvJHsMYVbfMuD5hKCGU5ES/pL4A1iw1a6ls
dVUy299o8EcjQoluTPazSgvKTPLeZAkijjcyRIeZvK/cjzPxq+FXinVbaeBknhWB
TbqhciR3ibhnEEmEMcbKoxIP3W4/3jX6c/DXxVFHqnh92aKZJbS7WZphDEZFcW7R
yLMNiJJhPL8uPkDr0Ir5LMHHDqs4tK0eac6ak7WcZKMLyvo1Z2dnZWSPtcJmMJYX
2c4zqwjGyjVknKPM1HmstWr3d9ra6M+4/DdhNeXdxqdjbGPV9EeGzvLqIy41azPn
TW73Hm4LvJGyKI5CTMT+/Odpb678Dxtq9vazXaw2lwYsCSynCxNKMq6GDMjxvGYo
0kTHGc4Jzn5L8LaskbWOswxvIbVPs99EB8slmzuU3LGAjy2qyy3UU4yP33URCIRf
SmhSp51tqOlyrE8hRrm3J2wNFLlx8zDCSeYUTCDyss/nE9/mpVuWNOygnJSqXtJO
0knyt6K/uqNruyTe7M51ZVYw5Y3aerUklZqN42d7R1st9LLzPfNPtPFOizTXUd3Y
6vpDwu82nxhYL1dzRqgtJJJ/s0jPA0guUzFiWL9yZBIAJtQ0nw54ndNZsLq78IeK
4I1htPENoEtb0OgZYrW/jkzbavZffMtncpcS9BHJbnEgxNE8SmLyre/eKzumiWR0
mkGxVUFmkYhBu8t2cReobPAO0bV3fT28jPoxilNykQurScp5N3GJGzI4CbY5PKaQ
b8HkZ5L4GdapSqxhiZKcJunFPlTbbdmlOEn73K5JJvRLSMTll7RyUm7K6XLFqKja
1m0lZr3dnslroy1bfE7XfBr2tr47WGayeRooPGGiWssmjlIyUVtWs4xLcaTJJ8s7
yCP7L0JmGMn3Hw54m0zW7RLzT72zv7e4VJY57O4SZWgfa6nAJycnbv8AKUAKIs+n
gqnQ9Ztbi0+xRCVRKt9aB5YwyqPuSxQyeW/mDf5izR+VKFXyoiCAOS074Tx6S8+p
/DrWdW8M3kzzS3OlR6jMNCvTMyCWY2Z81LW6jkOd6RGMEOSDKWrmptwlCXtJTlUj
zczpuSUrxvTSSXLzS9yKW3ndE4mlT9neS9nUbsnFJpttK8leyvu9LbuNnY+4ba9z
Lv3MiksVeWbJcKBwVdwmXA/1YOYyR64HSxaom0xxlHmZcZjXd5LSKMyO/KR/IeTx
J5hGD92vlTwv4jvFMOneIEmOpwy5/wBOurm2SeIB0ZkkR0s5JJi44k8vEhJ8t8ZH
umk6/YrFbq0E1jDIJmO+BTbybgpUG5tRJBh8L8zvE+Hc+WT5gHs4XELlk4Qbbd5S
ceWEZPlSjeW75oau7cbvU8Ovh1BWTbk1dNW6qLei7bWat1R61bTMYozIyYQqHMih
iyOo2OzFxzIRu45+YHJGa00YbFZScBcbA5ADLnhW3jI9CSM+nUHj7K9tbmBXiuI5
lxgvBIkinAZSxflA7evmE4L8dM6pnAVcswHcHkPIvyLIAeE3D5DsHp94jJ9vDwiq
vtJ3ipQU7xldrldPRczu005K9rXb7WPNqPS3K0+muj0S1stNWtOtjVkkRiDISvyZ
U787c8OWMbiQFsjgZYHtyc4t5I7IVA2szMC+QrJu29M4CdhkkAfTJpkszEP5QJfc
PM3SAdchgMc8Ar0P8L59RQmnO8KFKxmNv3jkJnLcYz6YJ6fSrxFalNxjaorXj7SO
32eW7uknZJX033VjGF1yt2u3dJtJtxt56rpHy+bKNxOzKQFDuSGUEr85EgCy/wB1
SPLkI5I+XHHUc3fjZtkMKtGCDlmyzZV1ZUaMo5IKq3YdM84zvSiPyxtIB8vKOCVA
B3tgZBdSMkZ6c4ycGsFruSaPypFSEB9oy0gJxtUq4/eGLlThJOBFz245fZTajzS5
eacZJwUZK0eRNXcXeMtXLTa3Q76VWKSST0td972d+ml7LukjnLyISgFhEzRB2SJV
XykU/wAfm785BxjLlxnpk1z/AJUbYmmkEpkUSHYoUHkHYTHjfucqRJGcAnjpg9IZ
El+0lUfZGAIkCqMozJHI0gCfvuN7emRnJGQM++ikYmN5QofJdlUedhY1JiCHCHc2
QoJwMHnO4VyyhTnLnftLxi1FxTjGbuop2aSTVrLo1fbd9tOu/dTkl7zbvrrZP5fF
t5GPeW8rQAMIki2qzbG2IjEKyRRpj53kO+OKRz/F15q/YWVtHcIwOctHbghXy20L
kv8A6wh9wLYOB+8HOSBTJIv3UCqA2ZHDyk5bZuVnyqDe20L5ezIHzAk8mtvTbeNy
XgUI7M5VTuQqWOWyuMK8RVZCnXCg4GcjelBu3so3lam5uTjv15btpuSVrLa79CPb
e5NNSk+Zytqkm3G2rei06t6+eh2+lWsMggMJRxHJKLgttKlt3zQ52YQc7iJMep61
6/olnGCJFxtlydhC7VOdpZcj5ASp68DpnHTz3Q7SOCJPLJJeQZLDCvKyglsngbm5
PTzCMjuK9f0pFdkMccZ2nDJ8h+QH5kUkgZxj5RynzYPBr6PCUIWc7WndaJ7XSe2m
ytppseLWqXvCL92+71b2bd2v8+ne66yxs38lSX3oVDZZSFHmMMBSwz3PJ+bjODjF
dHDZnbtBDk8NnsoIYFQePk6Hd/rCcdcEFkodEG5TtCjIVdoA65z8gGD6AevvqqOF
IB2A4VQq7+RliTnHGe2RwOvBPt06S5E0u1k7vSySts1qlu9G33OOU5axvpt1/r9P
Uoy22FYc5Kbuen39wXr6n0wAMdOnPajbI6qDGQysNz/KHjyBscHHB4BI5yOtdjKw
jUqTliQANoCtk5Vd3Hu454we2AedvgqKpLEoJCjoygM2WXYAe21SfxBNOpT5ouy1
cUnotvO7+XovJCpu0l/Xn+hiQp5TKwbBZSoBZFx3yf8Ab2krjJ7noMV01lJvYbsM
VATIP3QGyAR/eBIGAf0wa5qTYoIwrrgeWikE9CuCu7nB98Dr24u2Vy0ZCkiNyE5U
84fC4P8Af3AHpg5yeorkpSVKVns1Gy1WqtpZpLW2m3nqteqX7yzVvN6X6Wv3ta69
NHsdsgWTGMj5c46A4JHy4x1Hrn5/TgiVkxtUsEJ2t83zEKCS3ygdMZHA6tmqNrJu
TJJJydr7cYUtgKT79R3JBGOKvB02tyQ24ZXDZ3nau0Z/gyBx2JzjOa9GMk1Fvro9
Vpa3y1WxyS3fr/Xze5EVKhiGA5BJ38qCw3EFTkdDz/tccHhpBIAXJ6lj1LDHc4PX
nLcfUd5nABIXAwzNswM8nk4/u/T+70qEMNqncgCkr8uVBwWz3689M9uOOaLruu/5
Na/P8hJ281pdPrb0/r8hjSAhWVd64G0r2PCYYHAB5O7J4GRhcZDgxwcjAXByQCuW
wVwc889E6gjtkZk5JGVBUngjgHbyAv8AwHPuMdKYFBBGVILZC/dwQB/XnPfPAIPK
bfMno+6s9Zb9tr212XfuJq1rb9fLT/K+45SuSo5K9Sd3pnb19BknuGHOejl+Yj+E
gDkHJ3AZGOhx+WPxqLvn5V+6uOx9R1+f0G8AjBPPQqpHU/LuABJG3JJ4HPzD5ugP
97uSaq99LW+euvbyWyfe4ifIzjeQ33cEkcgcfntP5euKkzyBxgHIyOv+169/y45q
v5gDKBjd0Azg4OcMo4PB67vc9sBS/TLHdnHqcfL/AC6nnp14o+d/8un4bATEnDLx
8v8AtN6nn0H0Hb86RWyCDzjb15yrZxnHpuU9c+g44idyR6jJJx19R9fTHr65phbA
HJUnhchuowfm7KPXpzxwSDS1ST72V99+W/p8tPxHb+l+vyuThs7uCOMjjIO3r8w/
3uM/yHKO5CgswB4KHHXkAEnowxnsPvGo9ynn7uVyMc59QF69iOcH8ekIuVdiuGXD
fdbjr94gexwOB3HpTduW6aTf/Aeiu7t9O+r6BZ7a9NH52t+n9InD4yAdzckFj1Ge
pX0//VSMMk455OOM5Bzz/I+/0qEv3RPlOGUlgQRj5ic7SMLn365OMkox2/OScscn
gfKvXBwew/Dvzms5eXXTs7adWtdn89O5bu5Jdnppb13/AEfT0GS/xOuAF5JA5Kr8
20DtnDZ5xznikyeFI6qRycnI245JJ6Z5OTxz1qN8ZjkRyQTjCrlTndk9NwOOpweP
QjnOmkeNsMSdrOw2hgRy2Dj8/pnOTyTxVZOnJuVkvtJPta6Vu/bvbe5onfpts1o9
Unv/AE/NGmw+STJLBssBkEDAzgHB4yCP4uDxg81Wlw3y+WxUKvlqCBgEHk9SefTr
yMg1CJC4BHAKqS4bcxbcAoDH5znqBzj04yabyOvCt3yG5BB9MDaB3HU4HuKcKicY
8usXbl25tEpX2W626X6dSZJa+S3d7Na/Pz73sRSsI1bPBGAQoLYzyWDAZ4GCWx1H
Yc1j3syiAhchmRG2lfmw5UAE5xl87e44fGavzsHBVxnowzkIMYGM59O3Q98nNc9f
yYKhGIGFfaAPvjcq4dPmySDzxjgg84UcoyUoy15kurcktE1ZaaPl9XpfqNJq1+33
7Wf5+u/pg3LtBGW3dWQZZS3UBsAAOck5w2ODn1zXFajd+YHO0E8qqjIcqAC5Yg+W
uCTjA7Y7c9NqcxEWNgYv1TCgcLy24nK8Djdk8jvXmerXEkccwCFkVSA3y7lZtzEo
Afv5wc+YcnOML0yjGLsovSMt2rbWsu7s9/8AglRXMnrZ209dHdLW/Xv+p51411IL
HcJEylg6+YxZEZsB+Mp937oBwOOfu4zX54/GTxAtva6ksUhijEM+Xc/KqyxsC0TE
DDvjZHLGYjEWXOM+dX2H451Z4IrpjLHCGDYRl3FMMo3pswx2cx4fGd0ZAPmBj+Y3
x78SWGmWN5dXM0Ys90rfOTsZwP3bO0kssknmeVu8rypTMVj278k1zVal5xg3H3Xe
pK9vddneLtpa9rXVnrqkerhIKMU4P3o3k7vRW2bT1t1vq7drn5LftOeLIobbUFmc
s94JVjUB1DARugf/AJZiOR0BSVJORGPSTcP5nP20/H4xNo1vLNG15I4dEdWIjikK
v5rRyRE72kLbgDjyyRgNsH7W/tTeOr7VZLq5Fy9tpqvMWnTZHNNIPMHmRYwIEVdk
ayeXEJfmbAK4r+ZL9pTxc+v+Pb2ASiSGxllgMgcyvIDIXLPKoVZR5pmG1i0iFTyh
JDevgaTV5ShBxSfK73s1yNu/w3bd1Jdb7M4Myr+1fs1L4VG2z15YOSi7u6Taa27e
vzlO5ZyScliWbACjk5AC4B7A8k54PUZMFFFeg238Tbfdu556Vkl6a99LBRRRSGKB
kgZxkgZPbPerD27Im8YKgcuNw4J4yDjBz8uO+fWq4JBBHUVovcobcoQr7toCj5cb
Ou7C7uTg5EnPJI5GNaaTVRyUeVR6tqV20lypfe99FbS5lUlNOHIrpyXN6XV+yuld
q7tv2RnYPPsAfXg4wfQDkDk9wKSpIyqtlun+6GHUdVIII/yMHmjauGIOVBOGORnr
t4AyN3AwejYOdobGXl6a7J3t+rta/S5d7Np36NO2nb779L37IarMpypIOCMjrgjF
T+cxiwTk5wTl9zBizHcc45z15JwarUuTjbk7c525OM4xnHTOOM9cU76JO9k00tGr
3i9U9LO3Z7JBKKla62af3Fq0njhabzYVmE1vLAu4hfKeTGyZWIIBRgM8coXXjduD
4bye0jaOGSSLzWR5Qvy7jHkxHn0LN049M5IFGp7ZBNc28bkBZJoY2Yg4Cs6qS20E
kAHJwCT7mrpy5HzRup3jyu9lut3utrdU03tbWZ04Pmc4qSdnKMtU+TWOjdlbfpqk
76Ha6t4B8Q6T4aHivWUFhFc6haWdtZ3gmj1G9S7tZ7k38Mbx7DZwiJIpJGlDNNPG
sKSLHM8fCH2Ofevov47+MXv08OeC1lhuz4X0+3jv9SjIdr27ls7MJtlEs6vbxwxI
U2ynEjOSAOD87xRmWRY1+85wOCefooJx64BwOcUpN6ydm52mklrCLXw32lzfE5Wv
dteuGDqVZ0PaV+WN25RUVZRpqKSVt7JqTV7vlsael6bJeGa5aOU2dl5UlxIsTOhL
yIFgL7kVGlUvtLOPu8dRW34h0iCKW5udPVxYh1MUkgJKxu2wRO8aiISruO6JEA2Y
YDFeleC/D9rqmj3ml26Sprcdvd3sa+ciJcXNkUEemhHTZIt1ueXdvTEURAMchLCL
xfpB07Txoen2ha9tYZrnWbQRFp7a5UQxyTtK6iT7OfMRoo4cKhkjLGZjG1enDB0n
HmcnyR5HJxjNSqc842jC6bTTajbRuKcup4dTNZSx8YRnGKjU5FTckk6N4c9SXS99
YuzSUlquW78JIwSKSp5IJ1Yh42DDORjOMccgZI59ccn3qCvNqw5Ju0Zxi5Pk54uM
nHpdPya+8+mi1JJpp6LZpr8LhRRRWYx6uV/EbenbOfY59DkEdu2AA/MBkgDLbemB
0OPYnk88E475bxznPt9cjr+GfxxT0VmDlVLbV3EjPyjco3H8ccHP07hrfbXy3f3a
/wDAE7LXTdXv8l1/D/MNu1huxtzzg54HHOM8jPQjr1GDUglChhGGUsuDyDzk8hsA
gbMqABkc8nPEGc56cnPTGPXGOAPbHYYxR/8Aq/z+X06ZqoyUXotO7tez3tpo+qfR
9Bct172u110dvL+tuhKXJSNX5UB9o5yCzAZycD+HjBIyDlRkksAKtgZz2wM5yPT6
H3/EU8BTC5LAMjoVB6sGDAquASMfeOSFwDk7tgMe4/iD94fe4z3z7/1raXvwvVku
blhKm007xX7pwm1qn7itfbVv4hJbpLq79LuVpX893fXXvfRGeBjqO+MH6HscduOQ
SCeAKc7hwoAA2jtn0HGD6YPQ88VHRWF9GrLW2vVWTWjbdm0+3okVbVPte3zCij+t
FT2/H/ga66W7draXbCiiigApTnvnPvSdaKetvL89nb5X/HyAK7Lwv4iuNLvYijy4
EgePawVwykMTIw+ZzsBVABg9MAHjjamgkMU0bgkbWDZGeADknjnjGeOeKLc9oO1m
1a+yba975WX3X6CbaV47rVeq1R94+FfGmk6jDax3hMFzNMY4LQQzTeb8hG+MQxSx
oD5gOZJIkGVw20MR9JeENaJ+zwLcSIFklUzm4jJEOIfJihQ4+cOJQJPNlHzIPLi/
1sv50+A/EkNlcQvcH7RDDKpWCYuykM6s9zCGTYJ2MWRtHBVR0zj7Y8DalpeqQ2F5
baY8NtIfMVHtYjGHElzDIx2+X5bOSxEkcZxHt4ztFc1WkouS5m58qhGScWmlZqXb
ve2trbHVSryaTT96Vo310slfS+l31t08j9Gfhz4mjeTTorW48py6RyvJ8yeWEmT/
AEj94BhxIm0f8tAcYPElfoX8O/GVtPf6Db2RM7QxXUezaqxR3bRBmnRxIMRqE+aA
xTecQ/P7yvyb8HapFarbI1nKsAe3PliIrIyxeZlYkAkOwpGhjf8AdH5ZMkA+XX2N
8O/Fdy19o9pAYbY232+RRJv8rkqqspg8tzIkkhAjkltj5SPD5UnIb5TNsFJpTsku
TknLbmTUedyg99elur1tY+iw2JnCEeWak24KVo2npKGkbO1mm3fq/wAf3S+Hnim2
eAWbTs9u0MEc0kz/ADOIzFGsTOkkan92PL5P7kKmAPmFe/eE/EL6K39k3FxO0M0g
Ok3D4K3EMkg3W/mw+ZxazPjLiTzBzszkD8x/hr4206RltLXU2lu0INzdi6ZwtxK4
l8nYkX7u3jjSJxA+V/0jOcjJ+ubXV5dUs4gLny9ThCXNrcRuYZIp4gZEZEhbOZA/
7wLL+93yEnJr5LE0atGEoKMasYOEfaS1UOeSblZKySj0TTs5bXPZwlTmalzKUZtx
ceaKkkmrNJWtyPWyWqeqvqff1t4iVYJIJAsiIkckpO2Q+UEbzETfHlxtJO0Z8qQA
Z71v2uuwrH9piLxqYWUbnbcqANnaZI8ZLsfMIbOV8gAcGvk3wV40bV4lgndEuYVe
2vohJvkt7uFUkKtA8m/96jMxfJEvl457d9J4kWaOC3W6SFRJDGWcOq75FO4oq+YU
EoVoxzzHvzxmvKxbmm3yOTgopNK32aUrNJ25UnbXq+6dvSo0YPSUlJNc3Nf3uVNO
97PV73tse5WeoG5uTdwOIrqN8uDIricgERxuDJ/qX3OM+Z5gDcSDLM/rega9skjt
7wGzu1AeeHzCyu8isJPs7EgSwzBXbzPK5AJBBznwHRGaSS3kBAVN7gCYxl0O1ZGI
eOMkYdyVTg88nkD1pI7a+S3luCMQhTtgYpPEJA4WRZV83/Vr1UZI8zmIZ5jC0cRN
KU25QjaSlJOEU/aKV9tVFcrfTlTd2ebi5qDlDlbvK6d9rpP5v8/JM9wS00+/TZqU
AmDMZkWZh5iylCybJgm4gRhHPvJ1lya7Kw020t7aNbSSSAFVG6GQvG7J2uIXzA6e
WzvJtjjaXZ3zk+SeH9Qv7We1ikkiu7Mxlo5ZMJcRBkO2KdSqRyPGjKm9eflc56Z9
K0vUmmBBVZEUmNmKtGqhirrsyR85fHBLHKete/g6cacpc0LKqm9NU3aEr313beqt
Zv1Pn6s/e92T7pX13WklturW7L5r0mxure3twiKmQoEpih2hpnjBVtqYIkbA555b
INX0vDHGWZhtcRtHIx2lVQYZTvfanz9Oi9eemOIFyqLseQKyqpXYQpLxFlJDYIIw
B3PT0xmP+1JGMVqFQiV2eTe67QowBkS5xgf6oYHcjyiRXpLlgve5Y2UUrK/u8yS3
3dmla2687nDVUnaybbs5WcrabtLdLXbbQ7n7cSC6rk7WUcqNzFQ4OCc4kyRjPpzV
eSd5Ed2aPzEVCzSsCRn5doZfkGz5jgcfL0rJimRoZA23zULsGYHlUGARxwSNn3Tn
Iwcmsw6qSDFE4BUtvjYMrMypvBV04zJv6E8Zycd9ZRUW+aSam9ElaTatZJ2stVqr
XtZeRKg3e3LdWtdtNrS976JLt1t0NZpl8uRwGMmWQ42l3j8xWQqrnZEdhHvIHDDk
ZrDvWihK8yKnm4cIisWbGwopHHLtt54GfaSk+3RO5ClsrtAEpYrARvyrscmTHBiO
QcfMQM84txdqJHRpVAkaaMyFSQjBUfeHJAZwVfzJs4ErJkE8HV0nNwTptLlUY2ez
5U3ZLZXbTa3fzKho5Ri1dK0bPa3LuvRWV7t2fdmsEZ0MkGCmfLfywpwzYCBQ53yO
TGTJjP3xnu1RXckawefIvlujMRJyAqlgcEJgiT75jBGPm7EnOfHdLHGqqQQy+YwB
yjI+V3Dq5f5t54PfqerJD50ccgleSJW3hTJhSIi7Kzrv+aPd/q2U9gSADmnOmoxi
oRvzJQlFNe6vdakla7fdW63CEpKy+J3T1StJNq9tNNuvVWBCFLAoMsg3OOGRZQir
uU9cZxjkHpzwa17GQKJARKGWHbE0iBpBgsNxiBGXmwUL9gE9OMGOVHkJILxXC5WR
fnJkYrHtjBwPkKJJyfLIYvzzWzp8kb7yhlZwLUHeWOPLddsfmORHLtGM7VPT0wK5
6SSfKvdV5RjtH3lazstnqmm3t0O1xduZX5e7XktG7a62t026M9K0GaSdYA+5XMh2
ROxVY0AUs+A/y7FVCcewxwRXr2kTKssb7kZfNAaMrzg/xL8mcv1/2cDqeB4ppcxD
xFARHE6q7Dks6rtQmU+gCnnJG0gcCvXtGhbC4UyNkyOSxUmRh/CSGYbM4/55HBJI
Br2KHPom78sk3Nd1yxT00bVtnv8AnyVaMXaVnflVraK6Wq76K68t/I9f06SXyo5H
G0OFZY2CrtB6L97jd64HTr3q+12sYOXTcCQNoBGwZ+XKp93O1guDzznpjnYHZREz
SfOgUMhB2k7QxAQ9Bn6g7T9afLcPg5AySMjDEhXDEEN+GfXJB7V7XO4qLXNdcqd1
botrW0v5W7nn+yblZve21tNL+etlrttroaM+o7FG6QDDRopCsSHyEGTgDav3hk8F
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
eaau/NdLnpU4wpwTlLk91cyu7tuMbp9XfZLbbVdPxS/bd+LNp4e0bWJEvfLuDFcx
2++R18+c5jgfkRuUV0PnBPNyAwOMDH85+tahLqmo3N9cMXuLmZ5ZXPAJc5AVAAEU
cnAH8Rr74/bg+JT+JfFkekQ3nnx2ssl5cQNIZPs8q/JCnyPJH54RyxUFjHkn/lrJ
j88ySxJJJJJPJz15619JQjyU0kop8kYzSu7SVm9X2emy3Pnqk1UxFSUfgj7q0sm7
LbrayX3LsJRRRWwBRRRQAUUUUAFFFFABRRRQAVfjsJXtzcr86LIiuFPzJuOMsv3g
mSAZBwpODyaoVs6RM3mSW5LssyDcvzumyM+Y2UVhuIKrtz8gOWfgVpSgqlSMXNQV
7uTV0kvk99k7aPfS5jiJThSc4bwcZSVr3gmudKzTvy3a16ddifxLOl7rt89vaG0S
SdVhs1YytGDHGqJuPzNI5G5xgfvHYADpX2h8J/gJoV74JuJ/EVlHfa3relyX9rd2
jTy3egQRwyXNxHc26HZALeyWG6nuJFYfvzB5ZCyyR+PeBPDulax8Uft1lprHRrZW
1a1tr5A9qhto0dIrthMQIVlAkd1kl8kBY9k2dle+6z8avBmlav4p07SLm403VJfD
C6RZS2s0r2ct9Lamz1GJ7pYYp5JEikn2/NFaTSRJCN0PmJJ6+BpUJyhWrcso1Z1I
Qv7sF9X9nGEXN3X7yTin7qbjF2tdo+NzXMcTXoUcFl0anOsNCpXlFOUoNxgkpcsm
4qm23K7d3rqo3PAjZy+E/E9hp7X7PYjU9OmtbxG2eQ9wYmErwSJ5ggkSJFkeXykd
IPnMYYivS/Ez6XY+NrzW/EMiaVrtoYTqKXUZng1abUo3RJWNtIQonjaO7byofJjt
WTyiSImHjXiK2vodN0/VdThvPO1C1klZJ55BdTRpcyLFfOsu9IrMRLGEbIGC+NgB
rh/EfjOXWL+8uN813Hc3MD7r5E87yLRFjtYQ8TAxrDGqwRiMqUgRVDAkgd9SvhaN
T2UoLDxU3VUpT5+aEp0+RXinK0dHZJyjFSdtEY4bL62NdJqL54KVKviIWg2r01LX
WL54xckpJRbV0+bmNHxdpN3Z6pezxoGiub8m3d08u0kMoLsA0r738glVUykALliB
LwOA1C0e0n2MMBo45B0x8w2vtx/CJVcL6AAdjXpOm6zquqaNd6hqNjHqGkaXrEF5
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
7iWydxJycnOc0O7SO0jkszHLEkkk+5P+fTAr074SfDeb4n+J5dDS8axt7PTLrVLu
eK3a7uJBC8Nva2ltbqVDzXl9dWsBd2EdvA01y+4Q7G461Vzk2lorv3ItObTk1Nx3
5rOy7K0UehgsJhsly9QbXJRpp16rik5yUYxk2ktpNJKN3vq222cJDf6nIqqjPNFa
W0qLH5e+GKJ5DLIxRQFRmkcu0uA7vy7MSSaN1dTXkzTztukbAPAUAKoUKqqAqIoA
CooCqoAAr9bfEX7Hmi+EvBHiG7KnStT+IXhK21/wrp8NzHd7ND07UxDbtJMi/aLc
Pe6ddajq8UsqR/Yre1Z3QlI6/KzxZ4cuvCXiDUfD97LFPPp8qp50BYxTRSxpPBNH
uVX2TQyRyoWVdyOrqCjKTKxPtaNNc1Zc8q1lUTSlGDpXs7v3ozdpwb0cU1fdY5Xm
mCzGtV9hCMJxjzQ0XNKHuqq+aK5Vy1W4tJ3klzd1HnaKUAsQqgkkgAAZJJ4AAHJJ
PAA617BoPwr1O7ntzq1vLYaZe+HpvEEV/dq1rLb6eIZFj1B7XeZDaz3iGHTpHO2+
+Ro42EwVNcNha+LqKlh6bqTb0imk+rvq1oravppfc9HFYyhg4Kdedr3cYq3NLltz
cqbV2k72vd9LvQ8fAJ+hIHPTk/5zivRbLTNJFnDfWk/24wzww6nok4mIeEIDLfR3
C28VvHatkW8bvci5N15c0MTAqsXsPh74Ayz6db3FymoalqN2bm+tI7S32aOmlQaP
NqdrLPfTEFpb47JWJQ29nZW87TkzSGKGleaRr2qW+k+DF0ez8N/bpptTOq2Nrd7v
E2l2k1zGNSI8oRtpWkra3CxxNMiyT7/k38RezhsDVw1WMZxnCcZQk1Onb3opuUVz
6aSurWanFae9ZHz2JzzC4yr7DCVpXoTSry5lCPJK0ub2bXtaiSi2vZqM02pJ8ilJ
eT3iJf8AiK4vNKtJ7WBZIfsGlXdzNdz22nwqI4YxLM25obWyjRvLmdAkZ8qKNooj
j6VsPFWgS6Jp1pqMh1bTvDMhHirw9aItpqMglFlGtvYWs0CzPb2QgnmlEUaxQ/ZJ
JWizISbOg/Da2vH8T67PFfeHvDfgnyorzxdf2+Lwx38ka6ZCq+bbxyaprV8zR+Sk
MqWtuZIllPlyyV4D4x8WaBdeMvEF5o8sx0422rR2OoG2ZLnUNRurT7ObqeCO6Eca
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
SxNDBRw0ppRq885UHGNSMJqCkpNX5W9YNNTTldfs34R8E+GLTwf8a9A+DsGs2Wo6
ethLqPxQ8VaKbeDWfCGgarbeHrr/AIR9EN3apc/F74qTaTpVpBpUtxJaeGfDN9b3
l7dSprLz91oPwDe7b4lav4oeGfx98J7Own8Z/E7xJqGrv8PNZ+I/iG5E1p4FOnWl
iz+ItS0uS1TRLHw1bQ332/Wba+1GcxaBpMtvXp37PGpWnj7wnrC/GTwlaWf7LrfC
TwzrelXVrfahpfiGfVfg/oOkfD3wpZ2Yi1GDOman8UviJ/bupSExDWNbGq3toR5V
1Z1+kXh/9laT4peCPhx4H8UajD8Dfhh4Q+Nmh6H8IdT0i4jn8Q/Enxd4stNJ8TR+
PfFsd0sLajH4a8GWF1qelw38V49zqnimKOGaO2vWEn6zluSYrHYOE669nzujiKsq
NepObdOUUpWUHZRp+z/2ai1GD5ZOS95r+ec64kr5Ri8VhK1erRjLFRc68pwqyio0
8OqsOdP2s6ianTqUOXkhTcG4ycXf8fv2xbK7+E3wO0f4cahrvgr4R694k0my1jxL
8IfCCx618QdfnWxs7k+KPi94knsbCbQLbXBezahofgu0vZRp1uv2TVNI0y88kSfh
BeiD7Qxt2jaOT5wkXn7IixOYc3AErlBjLHgk/KSBX7I/8FaPhxP8Mfjdr/hHw14W
XRfB3h3UtSS0ttQ1S88VeN99zdsf7Q+J3i+WaRrrxnq9ssOq6vo0dxHpujXeoDT7
OwspbMwp+SOlaJf+J9WXSNJsLMalNa3V0iXGpWlharb2ljPeTtNc39zBDFLHBCfJ
hlug8s2y38uWZ44j8NxNTnKth8H9Xgq1CUac6lGMpyqVKyjLZSaTV5XjK04xUfdT
Wv7v4b1IS4fo5i6kqn15PEVJy9nTcYpRjD2kZSdSVoRi4SlKbSclztNJUrDxDfaZ
pslpYTz2c8s+5rm2mkimaLb8qFlAZBGxcxmGSNy0jbyyhRWA7M7s7sXd2Lu7EszM
53MWZvmLFidxOcnJyetXLa0El9HaSTwwhnZJJizSRRBd25maFZGZVCknylkYj7oJ
r6dX9nG51DTPEHiHTJpZND0rQrfXbC4t5Tdi8tr3UF0fSVuWW3MVnJrN7HdXNqs1
xGBaQSA7Jk8s/IznVruFCpVfNRXJCnPmslzRhCMbJ+9KTcUna9u+/wBzXxeBy+Tl
VapuverKdlaV2oq8218T0jFN69ro+VKVTtII6g59voR3B6EdxX1r8Rv2SfFfw9+F
3w9+I1xrujaje/EKw1PXLXwbZzIdb0Xw5plzPYvrWrs8wiit7rUrO/sbMBV8+Swm
lheWCa2eX5SgtZZ7qGzQKk80yQATvHBGkjuEHmyzMkcKKSDJJKyJGAzOQoJrJxlT
ktbOLupLuno0+rTV9NVazs00tsJj8JjqUquGqqpTjKUZOzjrDSWkkm4p3XMrxbTs
2dQuu6fL9hEunwW8MNotrdpaR7fMIBT7QUkLh5pM75XLncSVwOTXTXfgoal4esNQ
0CQ6iVtZp7nZFGZYGWbLQS+XsnBjhkVyzwyBzuYFVAx7H8DvhR4I8e6d4rvdV010
0vwpo1vq3ifxZqXiKOPSPDtnLcy6UksNppqR3N7q2r6oUttB0l2LXIUzHMH+lJ71
pn7NHh1/CSeOvhV41u9ft2k+wXHhe+tJfOjuNQM6w2etzRO+m6ZcT28U0thZxT3e
pmO13XdnGSu76HB4Wri6UpYmCVOtGdOnOLtUdRP2i5XZrlk1GyekrNRa6fNYzNcF
hsS6dCrXo4inVhGanCVSlzO1RKoouTh7lTduPuSTaVuY/NBkkgkZWBR42Kn2Yds9
D7g9uor6O+EvxPvdEMFjPuvrYTZa0jQifdtRIzFmVgTIuQw2KHmJIZTjzanxk+C3
iH4e63eabd6XdW0emRxTXjT2V1byRNL+7uYm85RLK0NzHL88iRsITET/AK2Pf4Ra
3cum3vnQFlMTtsDfK20kEBsoxGQBnA56jrXg1sNOk2qkJKDlJU5cqtJxfKtWtFu1
s9G7I+kwWOo46lGpRqRnZ+/y8sleNk772undK63s27Xf7SfDv4hQy21ldpcSxxSM
s5imy0kMTR7UZ02fInlF9mHJJT96vNfc3wx+JHkXNgbW6jdZ0Z5ElbzA9xL8isER
Y7jAdI08p3OCHUnivwD+HnxR1LRZo55JpJYZbZYTCWDpE8TJHGUDybBG6BpCwj8x
bmYmY5ANffnw++JaXtva30d5I8LYWMmYRKRLtYusbn5WB3Rnk+ZKhwUBbPy+Lwcq
rlCai9HTvF6Q5rJb815NSjdJ2W710OmjVlGd43lGMnG92rczjaK0t0tZav7z+gLw
b8TInhEUlzHGUVAXLsSwjiBH78gho2kxj94RFFjjPFfROheOFigAE8QkH2cMQ7tD
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
DKCY3RZF4dQDvAOG2HhyME1zFaejeSNV083CeZbrdwPcJtDboEkV5htPBzGrcHg1
0YSapYmhUdvdqwd3snfSX/brtL5amGJjzYevG7jzUaibjuk4O9r6XsfZ/wC0Z8Th
B4b0z4Z6aLe90fy7TXLTU4ZEbYt3iX7LbSRQW5eNUCiQSIM/L99Qpr5J8H+Ddd8c
6zbaNoVo9xPPNEksmG8i0ikfZ59zIFKxRKAxLN12n0qDxBeNrmvXIsEuZLYXD22l
WjK8k8VorsILdYwZCCg4KgkDkiu08N678RPAdnfR6FZ3mkDJudRuhpzrcnbFNDDJ
LcPGGWO084yQKG2wzqJ8fMxPot1cbUUPZqVKm5yTgo3lUcvenU5UpTXRpK7jFuPU
8bBYeOVZfSoUqlGGJrcs5SrTUNajinLkk9ZRXLFQSs6re93f770bx78F/gP4TtfD
SeJ4LrXdO0+K8aO20+/v7i81CeN/Otn8uKGKE7zKZVlnhtn82OaLzAsefz1+JHxL
8QfEDWb+5v8AVL+50pr+5n0yyu53dbS2kk3RQpH8sSbEWNf3caZ8tN2doxwUq399
ds8q3V3e3s7MzuJZ7m6uJnyzEnfJNNJI+WJLOztySTVeWCeGSSKaKSOWJzFLG6Mr
xyKSrRyKQGRwVYFWAYEEY4NeXOFVym5Unzpu8uRqUYzanybJKOzj7qfLZJ8pWXZJ
hMHiKmKnWlisXVtOU6jg1CWic6UbOUW3o5OT7JRvYYjtG6yIdroQysMcEdDzkcVp
2upXqu486aQSKA+XkbbHG3mE4UnAQjzNxVtjKJAMivTPBfwe1fxhYT3sd0LAwmOV
I57WVkuLbBNx5Ui5cXCDb5cbQeVJkAS5YY5jxb4duvBl7caLOkpaaJH+0kGMSorO
UO3DBS6MhePfmPJVupNdlLDY3CcmK9k6cef2d5rSd48zpu0ZX5oczStuujsdDzHL
8ViJYKlUp18Unyyp2s4qDjKb55Jc3InzcsW7yVvMp63dR6pbQXyyGSdVS2vBmWVh
LHEIopppJSctPFbMw2BFLEhV+QrXLwzy27+ZC5RuQSMcg8EEehBIPsaiBKkFSQQc
gg4II6EEcg1ftNK1C+immtbWWeK2iknmdFyEih2+a574TepbHIBz2OOetiKuJqyq
Sfvycpe7oows/dSitIQhdaK/Le9ztp0qeHpOlOalScnyqry2Sm2/Zu9lJK9o315b
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
UZS/iVYRjTdmvejzzlsvdp6u2r5DwL4vu/A3inRvEdtEt8mkahFfSaZNc3ttYakI
g6NbXhsZ7a58iaKSSKRoZY5hG7iN1JzTpvFVxqEkt7qFzcyX82qTahlGeQxtOTIw
jkneWXYJCqxxmbd8il3yFesq+srV4Gu7A3FyimNZnW3eOGEsp2I25CWYqAWYSEAj
kybxJWGWOMYABA4A+hznqc47k1M4Tw6gpWcZpVY2k7TjL3VKXJJK6inZNv4mrJM6
fZYfF3quElUXJCd/dnHkvJRatpf2jb0TkuX7Nh00rzyyTSMWklkeR2JyWd2LMST6
kmo6KK5juSSSS0S0S8kFFFFAGn5dy2mCRS72yXDBv7kTlQdpGT94/MrcDrnk8d38
MPiNffDfUdV1OxMjXF1o9zZ2cZYG1W7uHhjaa7hIInhFibyLy8p+9khctiPFXfh/
b6ZqGnaraaigci3mltQzII/tEasUaRN6vIRuCxE5wx27T8mPNdVtTaX08YXajOXj
ADYCsc7RuVT8hypwMAjArojiFGpTnH3pUYwi4yldbNcqV07JLzSbs9EePJ4XMJ43
KsTSjOHNzTjolUi5RktOs1JXb6pa63P3D/ZJ1f8A4TzS4p/DkmnXniqCBvESa7q1
vGo0HUbO2jmu7CxEnzvJNYm8yluLmQw2pvJ2ENt5Q+mNZm1Ce5Px6kv9Dt/BeuGd
fHMnibVf7HuHsNGSKx/s608OT3FjHLHqLSxWsyWMckl7HcSWlpEZjNLH+Wn/AATo
1Qaj8VbfwfHfNaahGt94o0e7urgwaRpQ0XSru61XVNSKiSWa0stOhnkntzCbcrie
4PlQyqa37fPx9h+JXxHvl8GCbQvBzJ/Z9poST3IWW20l0tbbVri0nnkSyuL+WCa6
S3tYLK3iSQPDaxyy3Tyfos8woUcvhicPi8RUxCwjliacZwq4bDVKsK2HdR21XPNU
4UKcWuZ0HJux/PWacHYvH8eyyOhKNHCuhGtKu6KjyYOpTk+WXKoylKTp80GpJRqw
tKync9S+IX7Y/ga2bVtAstPvtfv31mXxJo9/JcpZabpWtWtxcrolqtvYywaZFp9j
EtvcSwQWF1DJcB7aERwPKZKPi/8AaTtNQ8ReFtM8RaFofjDxR4k0idfiPJpmt3U2
pJeSWzNE93qUjS6PBHa2g866sLVI47W38/7ZJHeG5evyojimnL+WjysiPK+1SxWO
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
AQc1q61+zN408Iad/a4ntdQt52YT29tObhtNO4BRflXMdum9kYg5lw2fLGTXl9/Z
6/4dkiudc0eeCKZw9vdiFpLaRdmAkU0aGCSORCcvyQP3X7qaMgcVbCtKK55N8ras
1zpPls7NbdbWu3u9dfSw2aYevbkqwnztKKvaTceVuLb3Wuy6dWe32WqqqIWlXarC
UfPu5QKfK8yOLYmWD4cxZBZ8kjIroE1O3mkg/cmNtipE4Zg5kaQsqFNwcGMFli3n
y+Y8eteBaR4isJNsct3bhpkZ0CN5cmY9p2RkecHd/MQjZnjHHQjubTV7KYxsJSpV
lMb+b9oZw6ttLnEhBJ/1e7PlDHzcA150sM7zvOcuVx1tytRaXLdpLmUrtOL15kmn
c66VdO3vpLmSSVtNVt112b1/NL2uxv4rq4cxytb3KrCYmt/3khKs4fc/mlMwhcmO
cSxyu7jBxmuutIYGie4lnYyRSB5QzkRqId7xKiSbuAhHyoOP4SMnPhenanKF85ZB
EkcbRCdNxOElKx7xH84Mkf7sjnABAIINdnpmoSrHJ5VzNIJHT924Cxycxp8sPmDY
/MXz+XKRFF53QSiuHEYarFPljaCjFaPaSkrwS3bfNe/dWvY9SjVpckpO05t3s7JK
/L70V15Ve/T8j2e3dLiNZQ6KqQCZQGYIXn85kQSSSHy45CgMm/pKSSY8V0sV61tP
A8V1+8BFzEkbMGzKjGAqxc+ZHFLFF5WSCvmgbt33fJtN1j7Mf3zmQxqkocSRx258
sK5KvPFGXMhdQpO6aaJX8qMGPFd5a366mVZLeOOUxBUk2skaBG8yTYzpFsES/MJT
iED9zDJJjy5fMqqdKMvZXp3gvel7sp2cU4ttWt91lqe1hMdKleVGtJVLxlaT+1GS
irctldcsWvdaV9T03T9c1GKOBZII7l8SKxmESGfe7hipkEpRDFHn1IbyumMbVn4p
voLVbA/arFBtu7RjGs7W9wzmNkiOwukcMpzIIDFFLnMQxDFjlNOgSKBBdrINwLRm
WNyPJeX7i7B84i3ZwR5RJTj97k9ba6Xa3Ki4Rov3ils8B1JkWEFxH+7+4PMyJQcc
zAZ+bGGNqUYxi+ScVzWU38NnzS5tGtFJ9Hddtj9GyTjDMsuVNuu6tSMaTlF3s2lB
cspWd1vvdaeh6FoHxRntTFAZYrZrQm9jxOGS5juImhyRJ5cj3H+iSrF++8uNZ4/O
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
ztByRXt/xJ0XQr7QbbUbGW2trp0+2WcTXFuzywstsrrI+8ySS4SQqS+EzKpt8+XI
fmqrv9oXZiWB55XgUKgjLdI1LtsViCVGZH9evpxWboqdalOVScacZRc4RS97l2s/
nLdPddFY8rFZc6uLpYyjVdKrBx51/OouLXk9I8ri7KS0bsfXf7BniW08IftJ+EPE
GsXsdj4VsdP8RJ42Mlwtv9s8HXmjXVlrumRt/rHfUra4FlshDSKk7zMvkxSsvB/t
V+OPCfxH+OnjbxP4FtI7Xw3qGopHpNpa20Vva29vDFHBDZ2MUBIe1tVRbW3nKxyX
aRLcyRq8xA+dkkkiJaN3jYggsjFWweoypBwehGeR1r1z4EeBtM+InxR8M+HNdubu
00B7lr7XJ9PMAvxp9kvmtBZG6Zbdbq8uPs9lC8pKRNcec6ssZU9/1nlwyoU1JOUZ
RrO65akVV9rCydnePLHlbateol8bOTE5bhMLmtfietOSqYfK54TlirL2Sn7abnr7
824xjDRWvq3pb1j4Ifs+yeJ7Pwv4+17xFoth4autZ1Uarpcrl7600TQ1UzanfiRP
sSw393Hc2FjprPLfXjRCX7KtpcQzycZ+0L8PrHwd4vlutAsLuz8MayZLjRRfXNtJ
dskQQSS3FvBHELEXYkS6gtREsMaSNFC7CJgP6c/gz+y38LvCvhFrLSfAVn4wh0xZ
9Pk065tXttJ1jX7tRNfa7darOYtObTPDs9jHBomlZjN7/p2r6hHF+9ir4Q/4KBfs
46ZrfglfiLeXGkR+LdRs31Twz4c8HW19qEWh+CtCSNrnVdW2Rt5Nvqttunh1e7ub
m51dIftcUFraxx+a8HBus6E6VRRxNObnzShem6U+WjFzhGVPeMqz5pPlhJc1rtr8
pwPijgsXxNRpTdanTlVq4WopR5XCnUqQ9h+5hrUpqNSlV9q71OS91tE/n4HBBwDg
9DnB9jgg4PsQfQiun8H2supeINL0qM34F/qFmrf2bHJc3aeTL5vm29mkkYubmNVf
yBJIqoWLFgMsOeuYfs88sAkSXypGTzIixjfaSu5C6oxU9VLIpwRkVoaBpmo6zrWl
6TpIl/tHUb62srQw+ZvWa5lWFW/dAuFXflyOiZzxmsoRlSxEIuPPKnVjeMWnzSjJ
e6nFtO7Vk0/uP27E8s8LWfOoRdGclUlflh7jlGpJb2g7Saa1Ss09j9Sm8T+Drbw5
pvxD0SfxvdeKb/zdA1K3kkZry3s1k+xz3moo1k93dXhjjkjtU0O9treHzYvtdwDm
M/HHx2njvUjWBLxNO0rUrmLT31SUTajOtyvmyySXHlx+YvmMsUafvZI4oIoJZP3c
ckn1doXwi8a/DGy1ybxTqusyWOqaZ5X9tzWz29nYw6SJA+j6XPeXO2Se9inTyY4x
E4iRSGBiGfmnQraL44fEPwr8MmmOl2mp6jaaJYajdSPJFpdtjy1upxEpeeK3jH2q
VAkk0u18eY2Er7ioqGKwdJYhODnl0P7OeJ53Cl7RR5Ytx0SmvejF8zVm01ofkOS/
VsNjquZYarVxOAwCliauITk408P7OE6kYU5RhJumnOMbx1hKSS+G+5+xr4Un0v4z
fB/4p6iJJ/DuheOzPL/ZJ+1a5pWo6JZjUNP1f+zVw01pY30+n3rPiaPZBL59tPDH
JFJ+qXx51T4u/BWTwb4P+J40rxR4t0vwl8QvBXh3xNYaRNPrWj2nxH0CHT9E0yW6
e9S6ttTjHizWJJ7meNkF1eiYTTsvN/8AYJ/Z28U/CDxx43+JkvhvS/Fev/DDw14+
03wzpk9kz6R8RNW1vQdUstKvNGsXnhH2rS7GwuZCSZ5ZrgQERuYMS/SX7WPinw/o
l7oOqWtl4lXxv8Qvjb4C+JHxF8E6skd/r3hBNC8O3Wu3fh620i+tpb2BLhtYtb+9
tpLtP9I0O3tTatDEI0+n4cyKeWYWeKhXrLEVcNWoxpfV3Uw1epWoclWCqXg6PsqM
6tTE1nNqnyU4aWXN+XcccZYXNeM8BTw9KGOo08PCjeS/cyptYmvDlqcnPSjGGIqp
1ZRVOtZRqRjUg0eg/s6WHirwB4c8Q+LtZ/su4/af8e+ALX4YfDjS7C6fTrfV/Dng
PWfCXhY6Lp3nTRwnVdWs9C1GG+1m0traSJIZIzHGZbnb9EeGLrxxHZaP4p8AeFtQ
8TfE6z+KHww/az1Twfq/iu2uNLitr6w1vxHe6dbvqF9J9g0ax1G2u4ILax3NJe3I
vJy80trbyfO/wWPhz4NfCbwV8Vfi74n0PXrzUvF1rqXwyurox3OofDvTPiNofjLx
Fa6rPJDBLdWsk+tQ28+boMY5neaIOtiUr1r9jrx9ZfCXVPEvhb4rTW2ofGT4neEf
FP7Nvww1DSbW8urLSo7Pwbow8IwalqFlJc+VdXmqast7exvEYhqFtHMUimM0cf6D
lOHweAhjIVK+FeNzOKrYSlCylLEwqqXsaMoJy9hGap1p1HNKc6fuRvFp/jOb4Wti
sxzHFQlR5aNSOJu6dR05wwrd404RalOFGjRh+7UVUpyqcycotNewyeK7T4H6F8Ud
Z8L+EIfFvxj+L+oeJPHfxk8MS+IrTUdQ+EumfEf4Z2viN5dMsMRQadc6D4h+Kuif
2i0Aklu9Y0WCzu7mbUJry5bzb4y+CtZ/Zz0vRPgv8Ib3xj8a9R8TeFbLwP8AEC+1
DUbTU7X4Xax8RvAVnolj4e0C8mhuZdI8GeH9Q+IF9dT2jXUWJL6aGV4vsUjQ9xpP
ws1LxF4T+KWkeH7zwJeftb/F3Q/A+g65pCX16thL4e0H4l+J9bvLe2i1KL7RDocP
hb4X6FPqV29qk802otFHOIbS0WPgvhtqOpTfEzxLd+GI9At/jZ418c+EvH3xi8Dw
39+2h+FPA1u15q+sW9ham3uraZrS117w0mnPa83NzHJCZY5cmTqx0sPGvHDRpzqR
k/b4mryTVHF4Z0oU/ZxmorlwODk66pzV1N00pOVmfPUa06VCFSjUeKqqcalTDVHO
bqTdShShKq3V5lFO/sa3vOKVOFRRUrH5S/8ABT5da8F/swfBT4Y+GPENz8RfAei3
2pP4h+Iz20yxa14rllj0ywtF1CFY0u10Xw34Y0/TdOhvoklt9ON7+7y5lH4XeD/C
OlahrPhVvF2pvovhbXtRuLe51W3RppbSC0UtOzRiGR1Z38uGJxFImZDIcrEyn+sb
4v8Awe8E/wDBRfQfBvwF/ZFhi8D6X8MND+Nnxc8RaZcwTtp8V1rvjPRPAWm/2hbS
3V1fQanqcVpa6nJC0UUVhZXbTWsTLKkY+dv2IP8AglLID461H4q+HNYhu/DHiz4f
/CXSPDOpOn2bxJ4+8b3tzqOo+IYXkS7udF8MaP8AD63vtVvhBaRX8p1HRvOuECSL
c/lnFXCuJr4nFVsLTrV514V8ZQjWxFKpWi6uIo0YTcXypRqNtUaUneNFQld8smv6
a8O/EDKOG+Ea+XZnWqYPNfruOxLwsKEVjJQxNWpFVPZwtTXsZ2cZ0lJOCjzQiryf
ov8AwS08L/EDQfEfhHw/8QPEVjZ/ssa74Zj+CYnlhjtEn0f4r+Ibvx74j0Nb67Fv
DHeR+G9B1PxHrOqxFLmGwWxs5r7ybq0EnTftWft8eEvj78Q/Df7P37PGg+H9M+Fs
vxm1XxZa2cWm2en2enaV4Ex4F+CemaOqKlwEuPD1pc65NDHDHJd6z42nmlEsklwI
fyf/AGs/2rvHOg/EnW9L+HGpXvhTwp4W8b+O9Q0LQkEUAsLbVrCHwNoZxauPtUmn
eAdG0rTLZbiWWPTZGuPsUcXmSh/zr0XxVr1lrieKfD95qNjc6a6Xgure7lS6hERW
KOUyQ7SjtclZBvPmKREMERiQfD0qdTJ62LoY6pDE16+FjJJRlenXqRTSgkrU56tO
LvFS1ik3p9LguGK+f4ylxSqsMLSqYdPCUZxly4qbdSdOeYUYWjK8q3tLwtKUrKaf
Ikf1Cfs4ftseEvBPxu0D9nzwRbeD4/BPwj+J1/8AGLxZ40u7i61aLxFefBLwxrGu
2T6dLYSxy6rb6942k8Ra5C945jkmk8P2sCW0WlRfa/Pvhz+2ppnwv+Ev7TXxB069
tfiZ4x8W/BD4gQ6v4h1LUZb/AFhfEv7R3xOvtGt7bWLk399HpGo6V8OdPubvUrDR
xFcSanr0UE95Lp9i8En8zmn+MfE2ianfal4e1S7066vbO+0y6nt3Xzrmx1KKW1vY
XjcvjzoZJBj78bnzYvKkjieNdN8R6lpFpLBo+q3bQ6o0Eur6WbiRNOuJbR5l08zw
PxO9u8ktxG82Qkk+QMeZnkisrp1FF4NTtFKWFlJLC1KqnP2lVxjG6rVlKHtPe5ZO
nFKyat78OA2pKUceqUVRh7VUabjWrVJpfWfa1+fnVOoopUkn+7Tldn0HN4o1WXQL
TxPfa7/wlNjezXnhe08Ka5fTXer6R4f0G70zWWsrYypL/ZGkXmratO1pDZmMlRqH
lOJriWST97Pgp8OJfi18EP2bNU8N64vws/Zl8AeEdZsvjpppspF1PxVLpMd58bvj
dNpP9oWFv/an9n6bH4P8Dq0l1bQ6jd/2DpEN1NBPLcSfjt+xJ8BPCHxR+NvhHQPH
uv6V4OvbTx58P9O1Pwb4mNxFqPjDTNV1zzvE8WmhoY4rV7HSLb7NPas0V60ksIhk
M0swi/cf4tp4w+NXh34T+GtVtLT9mvRdd+NF3+zJ4C8H+G55tN8N+ONE8d+L9f8A
iT8QPF2opaXsVtBo1lpbfCrR4ZoLi6udXisGN3LdQpY25+yyelRx7eYKpiKWJdSM
IOnpCEny4bDJqXL7SE/bSlrJxpU4TqWfIfBeIOPw8MVgshw8ZKNOosXUxHs4ez9k
ldxpU5Qkq8o07pYmH8KScpyjyu3L/sQ+LLf4mfGuL4keE/D2l+FPhF4T8Y67r/xL
8BpotpHoiHxl8Q9W1Lwx4EgtreZEknt/DPhjS7exdkkt7OW0e7gE5kMIr+Jpvh1q
sHxW1PV38Q+G/E/xl8ffDjxNoNzBpMsvib4b2PiHxV4svJNRje4mluodM/4SjSbO
4uYbaxiaKy1GCX7TbQSwx16BHqel/E7VPEHwo+AvhfV/gZ4Q8M3GrfEXXfFMuiwW
bap4A8A6VpXww+E/iO1vjdpa63ceJ4oLnWNV1eN5Bd+IPFd9ei6urqyDHyL4sNpl
9rvib4p+JfD/AIk8GT/D25vPhR4NW1nnsLX4g3dhpHj3WrLxPeC7t/JuBo72uijz
9NizALpDd755IhD+g1MdSoYeDjh1iqWIhSr8sJOpXpqE4yTrTpy5p161aNL6wlrC
nTldx0Z+WqlUxWY1bVFSozw0Z0aPtYVsTFQrQdOdSUlKNV1Kjbg9eSm4xknG56Vo
Pgfwvq9yngvxJYaz4Y8I/s7Xa2uq+JLLVtL/AOEW+KPjmPV/C+l+K/C2teHreNRc
XOq69NLr+qSXMz3KaQVnBBMDRer/AAf+EOh/E+7/AGef2rfF/wDwsDwDpvgT4ofs
2/Dm78Fa5aND4Y8b674d1rX9W8/TrO4lt3fwnBp2g2clhrFtbPY3lve38UMc9z51
Ys1jZ/EX4QeBfh/8K/CV5ZfEH4teO/D/AIm+Mln4nTTbfWtC0n4g/DOzOu3dq5gY
21xo1j4UuPG9vNB5tzFc3VrKXhmleA+0/ETwt8XP2j/AP7Hfw3+FOtaVJ+y5qHi7
4MfCbVfE3h7xTeaX8RfAvjL4ZfDLWrjxFaz6fFdPc2ksVjZ6nqVtqbJ9sN2jRXsM
UB8yvWeFnhY4fEwlKUatD/aqtOaliIyqQrc9SPJT/eRxFR1adJpy5HSnFu0bnz7l
icRWn/tEMLUjioQqRqSXNTpez9piVUhecJ/WpRqOlaSVRxjGi1svym1vwP4s/aB+
K3xV+JXxvl139ny6+Dn7H2teKPCniDw/c6pY3HxGS412x+H3hC9ur6SQ/ZfDPiL/
AITiC31y3gjhttR0iG90mG2X7Vlf0F+Onxj+PPgH4Oav8P8A9m3wJofjL4C/Fb4C
fsi/sM6D8R9B8RronieLXPE/gez+KPie30fTrG2+26hffE6XXby98W3Ra1td9/Yw
+fdLcxq/w/8AFXxl4k8d3HjTwj8Pn1zxh4M+I/7N/wCz78GNK1W3ee90jwpq8PjP
whpKW/iy/m/0rT9V1W/8HamEjt0mtr7UrqaX7LcTMZU+sPDXxXt/2NvhH8N/CPwX
/wCEl+Nlp8Mv2+/jprdkfFcLXM3i6++Fvwj8C+DvD+qWmm3Fsbq48M6Zb6RfeIYI
oIYpLKzgaL9y2kxSyfNqnLCYpVXbF1HQcJYGpVhTtVo14VsRip2i7VaUMRUUWkvd
qaLlV399KtWWDyublRpwwlBxhgVSm8OqLo01JVJOtTqUJ+2mp+zqVJR+PSMUrfQn
wr+EJ+C/wj+IP7Mv7NHjnTf2oP2i7v40eEfgfd/C3xPfOmleBPBPw68Map48/aGv
tPk1A2lv4W8Lax8R73VLJvEEEQhu7LTWlEt7fNffZvE/GP7MPxa/bz8VL8SPH3iT
wT8HPFn7R2uXngL9lD9kk2f9r6Inw3+B2nvo/jjxJJ4pjtLKDwT4U8FaPo8EQ1+0
0yGfxJcWHiO8FhbQWgV/1O+Geu/CPwD8C/iVd/DuHwZoH/BQ74qfs+eC4pG8ONEn
im68eftWeJrPxNNpVtpc0sV7a6hpugeIdJ0q4DRNqOm7ri5h87zBFL+cv7c/g/xt
dfDD4e/Er9ovXfGPgT45C1j/AGPf2a/D3wM1vVH1XXvCHw0019I+OPxa1XVLMaRq
GpaJ4t8ZeJvFXh2S1fyV8Qy+K7iySx1PTVkv5d8ypWwFTF4SU8TGtVp4WDnria9S
hRp1a2IpYeTSlSr1vqyXw1JRp4iTi2m35OTcQYiefYelDFzo4iulGM/ZqtXpYWf7
ivac5KjyxqxlLnjDmp0Z0eWTjUufzV/HL4Jn4J/GbUvhpbeOY/EmlaH4slgtvHnh
SHVYNCbVLKZ7K4j8P3d/DZGayfUAEW+X7OJbZYJpDExEQ+nf2afHV3c+KvFXjLW9
b0XVtN8PeE9SvdH0HVYRJrsHjbVdMuYba00RPMMKLqF94ft2u55JfNhW+b7GEmfA
/o0/aB/4JreE7T/gn/8AD74R+MZ49H8VfCbT4fE3xq+Pt7plhfeM/D3jfxmtlcfD
/wCH2s+GdNlk1uO41Ky1eyS9Fxci5tbG1i1fUhGGxX81nxB/Y9+L/wCzz4t1DwP4
lMHw81PxBHY6qdYnvV0zTrwwXi6n4eu4/wC2J4nvobizuZXtRp8d1JLHcw/I5ebH
5rlHEuCzXMsS8NGc+WEaOIy6pRq4SMlGnyRrU6VTkcnWhGpWqR0UL05J20P2bFV4
47AV8FmFWEa1OUsPhsWo0q/1qlF03Wr81OCdGU01TqQhzuLg0vibf3x8Avjtreje
DdV8WfCCXUrXxX4y8d2Ol6H4A8fl9O0ufRNQ0rUNN1nw5aXklzHPLoeuReI9Tiiu
Zb6SKW60xIBKZ7WWU/px4Q+Mmn/su/BfwP8As9aT421H4D/G34l+P/AHimy8SahH
d+IfCFr8Q/DPi6/8Ja7o0w1L+01sNOXTNRFp9khubW1uLK1G4+RGZbn+frwr4xi8
K+NfA3w31jS9N8Y6d4e8TeKdBvNc8PXrK9v4h8IeL9U1Gw8Qwal5myy0tdP1Z7qI
aXJDDcw3YljjMUYtj+s3wc8V6R+018R/i/qdzNZahptj8JNR8RyaF4u8M2cdv4L+
MV7NB4d1TU/D+vamxaWGDV00PUbfUYLmS1lu7udilvF5kh/T8HmLx06dShThOng9
KixUXFRpQcJ4XDfvanNWVJxqSVpy5tHJPldvyHiLL1l854lU3TwVSc6rk5x55xUo
0MNHn5Zp0+aLfLXopuDu5800frJ8avi94T0fxl8FP2AfFOoeMdF8S6d40/ZJ1z4a
fFf4b2F5oMWuappUEvg7x14+i1m1S+0vSLyz8U6lqUkcN9dzQ+X9lhxdy3UkknqX
7QXiyf4RfDdP2X/BWjeK/iB4a8U/sj/EL4Z2HiLS7O01eNfG/jD486DbfErU/HOt
aQLZtJh8q4gt768nEkV5dXssV3FJe3AaX8qvgH4n+IGs+Bf2mf2hpfGXiONvDnhL
RPDuieEvFWjRjVF8deGfGGgfFPV9Q8F60l19hGlS3/g6e10tLOT7KIm1GG0sPOii
lPsfw7+Mvh7x/rP7VXxx+EfizxhoXiHx94D0+Dw58MfiTLHF4fsNcn1Xwn8RtTj8
O6b9rlh0/U/GviXwPBp7G3mtra5udRgmlkE00UQ9fB0eecfay9tCjWpVMSleVNYy
NHBxq1oxjzzk4SrVJtpWajUVrpo+SxK9j7X6tUl7GnTrUatWnOToqtVcqkaS5oQV
BrljDmlGcbxSi1FpL0f9s7XfAPwv8B/s2fs9fB/xz45+JFj8Cv2rPiJ8I/G/g/Ur
vSvG3xD1/wDsGHwE3hWy0/TLyPfJYR6O17omi6Zp9raRRJf+TE0k1gYX+Of2ktK+
KH7ef7RHx5+JPwv13X/hR8H/AI0ftB/Db4B2XhDxHoFnoPjK9m8IeFdGvPEEd8+s
SCz8Of8ACJy+G7bxLqGm2jSXM0V8NOnSWeKOKT9E/wBi74ReCU+OfwF/bK/aV+Hd
j8Mvj38VP+CgXxQ8MLofiXV1tFtdH8U/ATxV4+8BWR0me+j0VtSj1m+svsOrSWTa
zNPLpMMEm65RW+TfCfwj/aJ+K4T4X+LvCF7Y/C3Xv25f2xPiTofxusfEUcfiW/vP
C/w8nl1vQbVnke6gsNATw/qUGmare3/karJqE8FpZeTo0cZyoQk8JiKNecpqODpY
WHsn7OFSWLx2IzDGylL3bKDyyXOpKK9lU0TWj+nw+ayw1F16bhGtDncak40K8qlX
D0sKl9XXvxrWjXUITc1Vk41FGN2mfzsfFM+DdF1/UvDiQeNviFe638V9e0+B7w2e
k6frnhLTbuw0vTb3StYttNvhJ4h1+6F3HNJZaZqVlHLbrNNcXfmES3dd/YxX4oRT
fEn4EfDnxHpPh/wXplzc+M7O5vR4hsNM1jTDCbK2OojQvDv2vVnt1Et5o9jo0CWx
R5W+XdHF+m37WPhXwC37RP8AwTo+Hn7GGgJ8U9Rtfgx4M+JUnhbTr/T7jV9U17Vv
FHi7xtqtl4jnljWTTNRjt1vJbm31e2il02P7FdfYYY5Y/O+fPEX7Pvjb4aeHfhBq
Pxj8V3vwuh+Pvxg8ZzSeENWm1STQNO0bw7fadaaz4jttP0yzmvNUebUtYudMiunP
2MR6dOYfNglj8v8APs6yFYeUmvhdGlVhQpXq1FGM61O0U+Z2UaTctHGLp6pctz9U
yfiFuhluLqzq4XFuE/ZYedaUp4mLlKE3UwkZQ05acp03y2i0lGTcVf8AKXQfHXiL
4cHU5TbxXmrXj3BsoNYt2kt7G7mhktp9VbTp0+yy3qIzGy8yKOO1kkkmEfmhTXqM
X7Q3iyz8I+HtBiu2uoodRW+ufJmuxcieMJva0KeXHaz37+VPqGoRxSXMsaJptpNb
2cc0MvvXxRl+HHxy1nStB8M3vh3wra/D2z1Tws/iLWbTSPB+lanpGmz3b6Lql3e3
Edt9rnuUEo8/UpZL4xrmbMNvmP4p8feFL3wlqFtHq/h8HRLeeMRa7p5+02ut2vzS
JPp97FLLZXlvOzCeK5gEkUsa/u5cdfhcwwWIw84QSc4Q5J1KfsnahzQbp05zkkpt
JOUoR7X2tf8ATMsxuGzKyxVONPEzpqSjOW7tFwlF2UXJqV2r6J6pXZ73rf7TPxy1
iXR9K8Q+JdSi0rRhv0fwhbXEsGk2tq0b3QubuxR/st1dxNt829vra5v5QR+9OK1f
DviP4r/G3xn/AGZN4l1y5tbSze4uYtb8QSjRtHs7aINJcNDfm30zSrWOIF47RIhH
5bLCB5rx5+XtIvY08Zx6lKV1MNF9pt7OdTa2hkaMRWGnzJCQ4EKeVJIVk8tyoAOR
LX6P/Bbwh4P0vwLHr3iezu28R6xrssZs7RvIh1K6vRCljZRRtmRLHT1aS6k8yOUS
jy4oAk3yx+coU67XtrRqSSipNOHNzNOTt0hFLtZel2ejia9PL8PzwoJSTjCmowg3
KVkrxTav63WnmTaZ+zD8U5UgvtI0m+1HSb248jSNca2a0sr+UPLbPJaSTwXvmQXU
0b/YpPsyfbhtEMXlYz6p49/ZI+M3w00y1v8AxjqvhrSrltMXUP8AhGLPV7PUPFDQ
SDdbnUdHsWvbqOafD7E8u3lIIBjh/d4+l9U8ezL4l8GrrvitdIg+G+k2Wp2eiWO2
+g8I6NaxmOXW9VkkMtreeNNZuZw9hYsZrq1lk8qWa2hjLS8H4j/am8P/AAx1dZk8
NeH/AAu2q2V1re3xTb2fir4g6kb25E8fjXx3flhfPc6lI73Om6DbXNvaxxDyfLlg
m808s8KqnN7Bc8YqCqKMFL3uaLbve6jypPm5et1pa/i4bN81qVoOKpzlLmqqg6Uq
UpwvpTUpu0urvCOr20sn82eHfCnxjtYtNur7wFr1rY6k6/2ZJdafNsv8OyxMtjdw
x+akyL5ZQcyyMMR8ZrvbHS/G9lfR6Zqnh3VoLoW8bxxSQXMcnzpuww2CHZkEx7xG
JeVAJArzrxd/wUj8W6r4xi1Xwvp114o0nRpYFh1Lx5q08+raw0XmG0ittE0xbax8
LaEkvNtoejGS9jjjTztT4lr7T/Zv/aC+J3xLs/Enxa+JGneHdE0Dw+LO2sJ9QS30
TR4riaN3TR9Ds7Sx1LV727e3Xzf7N0u1vtSv5Ug+2alFDI1zDw1ctrucoyjT9lUc
YxqU5axTcG5TTS5WlOKk+ZtXWq0PYp5vmOHoQq4mhRiqlope0cZqpUlaFOy5uVpc
vM7rzszx9P8AhJdOdLXUNNuI4yu1vtCySIwV2lj8tjDswHdjEglBHJi6ZrfsfE1z
byQkzLGUUQzSGORooGSUPvij6iVQ0Ky4833UkgQ/oFceI28R6LcDw74Fj1T4h3un
rf340/RYjpHh7R5LRNRjfW9b1g31rptz9keK7Fqn2qSKIP8AbJLbBjbzbT/Dnw10
L4a6Z4y8YeDtI8TXWqfarvWdeTxDHoek2l/NNeRw6Z4WtCkms+J9RRYrf7RPY6Zb
aPFFHIZbowSCuKvk/NP2E6XNNSc4KD+ODipc7v5a2vvrfU9DB8USil7WjedOpGna
nOLd29Ze81aK21u23fZHz5ZePrZ0b7Q0ULsQA0qjyxmF45PLldBzIHUyKP8AVSZ6
cZ9N0rxjp6wQWwkJikiWIMUhbCsqLAxZ0DCLG4fLEDljyDjP59fETx3ps+s3UnhH
SI9Diga6leLVNdhlDRRkfZTEzxxMlx5bB5Em5PEP+uJrgPC3xu1mS6uTIHu7TT4v
PmeKJzDEtookfbEXkMyKhRAx3R4c/LiSPPhYnILRqSn+7la75rNK9oqMrbN6J9X6
7fbYDOXLkmtbJ8zvF/yyXV+90v1vZbn7Q6F4htzCVjZHbapU7mMiPEcbYQi7BiTb
IU/1Q4yDCcD0e1vY7qIMJIXlWNViS6SNsqFAYSmTeD+82uXHOEGAW+7+NngL9qGw
XUZbe9vbq2hhuBH9mkjaA3M0kEe2NH88ZSMKzyi3EZj6ADkH7J0H44aP4hWyFncL
PO7Q5tyJwpdvMKeUxRjJI0YXESHEQyGlPFfP4jKauHjyujVeilzxvJRtOMkk2+is
k76JNXPpMNnCnKLc+Vc0YyjzJa6La6b35duh+gukX8jQRS3DLLE0CReTH5CQB5jE
5kkREMcSSIqiMxRHpnvivSdEuru8ljS9ijudN8qKzWBY4YI32yKAZG2STu2x5P3Z
kjEefOJlzEK+XPBPjmzupr2W7ms8W9rGJlDFg8jEeSipbfJs8xZCUyD5WSRiMY9u
0LXLK+e3eNwqxOzFzmSBjMysWzIYEkYxlvu4/deXwTkDnlSrUpxbg3O0b+9dqWll
J2erW70s46bK3tUcbKMoq3PTU3FSavzSfIm/dulaO+tt7LqfRdhaaVfRw2ssbweU
jzQQbEcM4xDEyzR48gSBGiLtjzCwPmjIJ1dE0y2j1T/SlE0LorQwgxTjZHKtzCr2
8cccZcxrGgwD9wGUkkg8Po+rxxRxxJLHcQJH1jeN0ZW3MvlGGQSDO79y4yDIz8Yr
u9DuI3aKdXltv3ZkhdY2Dq0bJGWJSKR+SGkIkxwvQda8mphasnTq0m5T9pBwu4rS
nGEuVrqo8qtzRd9tj0cPinSjaEuVNqTX2lC6dk3ZwaaTWjtKN27M908LaFp16lza
3ltBttxHOIGhCx+ZKj43Hy8b5InX7wkl5B2ZAA7W10FYdVtbqGF4Y3JM8Ebwy2yk
EMI44346Iwx2ikkH7piK8y0LxHOzSpcyzNbmRRviA3RwLsjaAPMfmL7XImz5nyg5
kAwPQ9P1RWtmitYRGhlMiFpHmmgRUCmGIBDvgwNsnnbyN+AT+9zdSs8bSpxlRlTi
qUbtJK1anyKDtHSzldvVaO1t0ebiJatqrzTU4yfO73Sd+WUXZtq6Skm7to9s0nSN
MkSa2FrHa26/NI80y7pUkZpAkSyfOVWVJP8AllghkGMjI1IZ/JXyrVEhbZJCkzhS
zbGIkZifkwQoMQk259ga4rS9Qe6iMrzh5nQ7XJy0QREzGHwseIzgeXGOecZBNdBb
6jas6tIPOkhXcsm3zP7pxt/5Z43Kc5yDg89upUW6lHEzqQU6dNpxhTUKcnzRlF2s
neMVteXNJuV1c8V05wcpN80JO7jNPms3HW91e3TXdK+yOo+wxMjXDs9xLkBBKVYb
h8yqONnzfKF2c8DsCK0rOKFUOdsa7kSTLgYySdvGP32XPB6/IOgGML+0Wa3BDgNG
xWKN0QqsUjbg+0Y+fDLkYMinyx1INXre9jDlEiUPL5KNKSwJkLCN128jbl2Q84+U
gHoa6lQpOl7enCKlUj7Ru15SvFRai7t35vRWM6qdlFNxWi02VrbSV99tdk7OzudB
5atJFHJGSWQjzFO5lVG811XzOuxc8kgHvgDNLHbM7iVnCxYxIuQQASyu/wB4YL/J
g5AGMjrWc9wXMbQyI6s5SQhijouxs7WJ+TjLbB98P36Vp2yGMna7OmEXkfMMjA4B
w/CPhDnnB+UVtTT5fZzTlyS5r25WrpJxtpdJq2mmquu+HNyr3km79Gknblt5vRbP
tqtS5LBET5ckxldgwAYZcphk3MH+T/Vk/f4wcY4zSWymGEh0G4vtMa+UdobDKAH3
gfLnDx5zHkDrmmGbzGIjRtmNxDDaSgVlORsyCdioeMAnnB4qUwtJhnl2BFBESADG
YwPmZH+TeeU6/d65xUVI3VlC3JKPIk2nKm0k3q73V1tfTyTMJdNlzPbezaS1t6J/
eawUW4dsHHyjcJGkDEMqlEx99xGPvdz+YryhSqs3IR94UNsJ3IYtuBgY3evALZIG
Dik8nlN81xuWHBcFsggOWVcPhsh2IwTjJBGTg1g6rqO0si7ERIkVnysg8vaWYMM7
PkOXOOUlVM8AVzzpydox1nL+a3Ny2i77XWtrrS60Zz1G3KUNZfafLpbb4u9u+vR7
apdTvoIo3heVVjjkcOw4I3tsReV2ffxgDH3j+Hl3iTWbWzhJBjAjikKO5wExHIW8
wISc4Dx/vMEMecY2yt1zXEtYmeaeScDa0aMyBUyqsw75Pl4HOSBn05+bPH/juO1s
GBnkxMs0ZBUEQwt8oYs/lgPjf06hST0OJnTVJ2qUvaTiklUg03KCWsbbJrlVrvVt
o55VnFPkbt7ret9tXZu+l00vPXscj8RPH1nZvci4u4CkYd85JkaTE7l2z/rPL2iM
mLJKJH5MY61+OH7U37S1r4Y03X306VVeNZo4I3lXfJLLs3AM42pjZn/lp5f+t44r
179oz41QaNZ3wa4QSQRywwILh1fcQ6bpWwQMjdw8WBG657EfzT/tZ/G+7vdSut1z
Nd3DkyWtgu+WGGKASySyOmVL3OxgEkd/LjJyViWLafo8kyqpjqtGpUb9lSioqHK7
zUOWfO1tzNaNt9Hfc8jE4lJRftOiUlaV9JRurLR9Em9nd21PAvjx8c/FPjrX9USC
6+z22/UBNt8w+fH9pf7QqJISI0jVWEUwPmToE3b4dsB+XbO70+01DSdZCx6vHpt1
b3+sws0fkNazX0XkwTtNOZZJJHlaEkRDyYnIMUoya47W/Ed7e61dXskp8wz3TRTo
80eLS6ikW5s0Ey/MWEpjMnlnzGBz5kWysprO1a31i4sr+3WGxNq8MVwzx3l9DdSx
QPFbwt8rm3eQST9JCkbSBVRG2/o9BQw85U48ypxgrKC5JW5NXKDSWnnJLls1e6PN
lhnV9+c5RjUcLJRumpyjH3pJ3XxJrT3W3fZs+6/AuteG/Cup/Ff4gNLpN34p8AeL
fC114O1i31X7V4dsotS1K6TUNMhkE0lpIJ4DcGOGK2aJPsnkKPJ3xt81/Fj4kxeK
/HmoeNNNmZ5dVtLiC8SNWtLP7de6elpqrWEERC2+ntJLM9tAqR/KyyFi0j58quPF
GqzaS2hxyRWulyLYC4tbWGOBLt9OSZbaa42AeZKDcSvI5+aWR90rOQuOdrWpjpuk
6KUG1KDjVguWzUKakowauk5Kad23JNN9jLB5NClXqYitJylL91GN1L/Z1TUFCUrX
u5KU/dtbmau3djizNjcxOM4yScZOTj0yeTjvWzpmgalrUiR6XaT3JYhTtXIQjHmP
I/CJGi7pXdm2xRKWkYDmjTdHnvUM6mPyo8tIjOqu6Rq8rrGu4PI22M4RAXLYUKSQ
D9jfBfRPFOteENTtdLt9KsYr+70vwZY6faW3k+KPE1/r1+bk2+mx5lmneOxs2jv7
h0jiFpttWkku7oRzTgMJ9brRpynGnCUZ2qVHaDnB25Lq7etlorpvS7Su82zZYGle
g6MpxqwhU9pPkp04zaTlLTW2+jSS1b1Ifg7+zxHeeKvEFzrWtaJNb/DzRtO8RSaY
Lq1uz4uv7rU7SwXRdH8vLzG2N3JLeO0UjJHaXDW6XUaE1+wvw5/Zy0DWbDSvhjH4
Vt7f4h3fxS8La5e614c0qe5Tw54J8eWNtqGlWPiDXWt1tbB1vb2xsNJnu/svmmV5
/NFvDKYui+BX7OvhqHx98YtF8daB4f034/ad4c+HPwx+DHgDw3HL4psD4w8RNp/h
3WdX8VtpcLw6RD4Q0J9W1nVIb6WK6OrW9tBDMGNy8X2b8Gvin8D9H+Df7TvhGfxj
49+JPxg+J3xV+GvwV+HPjnwp4O1LS7P7L4Rjit73xbpd9aXcmmW7QLpL6N4X0xNT
Ou6hbSRXMFhFZ3Vzc6f+tZDk9KMKcXGsqsnTp4dUVGUqs+RKpUunCMVSpKrBXbb5
JN7pS/CeLOJMVmE3LCYvmqYWNPnV5KCqTp05pp042lThCdabltVkpQj7tN28Usv2
HPAvg74z/Ez9lI+DPiR4on8TfFb4OaPH4w0jw3bPY6DNqP2KTxYLrxEtzGts2pi+
0y2iYRXPlNFJew21rKI881+0p8F/gv4dhk/ZF+GPgnx94F8bfDj41/tCeKvjH8Qr
zQbhLew+H3w38NWWo6cukePpIraG/wBPii0bU5ltPtt3cW1zI93qCWl9fRi6+gvF
3gb4h/Bnxb+0D4J1T43fFvXv2kr/AOKfwe8UeHfiL42sr7WbPwppXw/s5vEviDXt
ev7uCfTIzYalH4eglXN1Fc6PpTC8CwGaCTmfin+2L4v8ML8HfBel/GX4d/HLQdWi
8aar+01480/TrCS+8ceIPG/jHS/iD41+HfhtpLKwtrfw5d6XFo3g/wAT6rYKomN/
4g0dp7S1gvbaq+rQpUcbHGwVTFLEWoUVRqctGlaVCK+CVKpXxManNTaclSk4zbSi
fIUs2zSU6MsuqV8c6tOFanUqVK2laGVwjVxlWi6PLD98o08PSk4OpNqdnG7fyF8P
/Dvwes7b4UalZePxrfwi+HFvp1/q0DaZDp998Zvi/plxfeMp/Deh/wBpQRXTWPh6
7uvDfh7VNagRLG0txf6ktxLaRWoufxW/al+K998S/GAiuYdF8+PUdY1bUv8AhHFM
WmTanrN/JdSKsYHkPPChXzbmKOGOSSaTyoYotkY/UP46+LdU+LlhAsnhbSPCVlZN
qeg6bqGhW1tHpPh+18TymfXINHtoBLbiCaTfDqN9Kft1w6YgYWlwIl+abP4ReAvA
76br1r4a0z4k6TrvjC98D6HrOo/aLePWvEFtFZf2zfaBplob7UNU0zQF1Czlubo2
FtZX1y0ccQkKSxTebjsFQ9hUwtPD08LBThGdWvaVR06VqiqQdknOcI4lcvKvibld
2b+/4Trwy2tLMcyo1a+P5qssPRjUjONJSdVyr1K6jGnzTjNzqXjBpwtGKjRij468
I/s6a5rC6VrGox6lZ6Ld6dHq80kGkXmqXcFmsbSzXj2VrEM2CNGYzcPIApkAKttO
PqDXvCNt8M/hX4c/t7RYvD6fEfVNX0nwxNcWl7Hrj6LoMkJ1fWLa2t7czQKy3awT
XzEKTazRCWFQQPsf47ab4qHgb49N+zfoerQ/DH4d+D9A8P8Ai7xrq0+saRq9iZ7m
2iutHsLa4htpI3vtVuo7dYpBEYokXywN0it+K/jr4k674w0DwVa6xq/i+81HwlYa
poNrNrOtT6lp0Wn3V3c313b6V5qJJarPNqLm+tBJKjGZ5ZmlkunNeTjY4Xh1NRoq
rVr0uSc6S92Nd+xjVpScvdvTftZNLW8oWdlK32GUV8dxbbEV60IUaGIpr2Kmpzox
lhfrFNyjGyVR1JUubmUnyJ3UW7HteveC/FWk+AfEHjPQ4IBoPxC8XW/hTw1quoXM
13ruoacnnvItrKsrWssd4ptJL6QxyzxSPFDHImyQj5g8QaTNa63qGmf2nBqMmlS/
YJrliLeMzQFknigDkBoobhZkVl4YAN/EM9Pc/EnxB4i0Hw34V8R6/fR+HPA2nam3
hbTbESRRxaldKssLusb7POe6jgEl6wWZYIgofIzXmLMzEsxLMxLMzHLMxOSSTyST
yST15r5HG4yniYUnySUve5o+0VrqTd0le3NzJXad+TRWs19rlWX4jBqt7WpTc3Uk
4yjR05GqcKUXUm+ebhQpRU7SjHnk27tWSU9EeRgiKXYn5VUZYk9gByT6D16cmmUo
JBBBIIOQRwQR0IPYivKPdFCsx2qrM3PygEngEngc8AEn0AJNC4yAcAE43Nuwvv8A
KCeP91voeldRdzaNeaZpS6ZBc2utyO1vrKkGS3fy0gjtr21lX541vN0pvLZs4nj8
xTsZRXOz27QyyxEgtD948gNz95N4RyrAh0yoO0jPPWVLW0kk9Hy8yd1preL2d0uj
7pPRZRqczcZJ05bqLa5rJpc2jas5NKO91a6V7F1NLuLqMXFlBPLHvMUiojSGOUIz
gZUH5ZFRmQN8wCkHJr6c/YwtvC//AAvTw5qni15pNH0BJ9Vl02CcW8utywhUi0z5
o3LxytIHljUxsQgw46jkPgJ4w8O+H9durHxPFI+n6lE6RyIY1khma3ngVo5Htp9k
yiYvCzARGfyzIrbVx5eNQ1TwH4zlvtEvXiv9D1S5bT79R85AMkcdwp2phpIZN2QB
tLcdBXe6cFSlOVFvD1o16Kq6OTlVp8jioqSUPYc0ZKXLzSlJbq6Xz+Knisw/tnJJ
QdCf1SMsJiZXccRSq3VTX3bODcaU2pXjz3u5J2/ss+Gcev8AxitY/Bup+P7XwT4I
srfSNX8XadaWL6brl0byxuNTn8N2F9pkCsbTVLSzFzqMFpGLm20iDTdNijIvLmST
wf8Aas1qx1vwxrGmeF/hdcub/SJdN0DVPEtrfW2paD4T8H2qLczy2txdW66rr09h
HLcTGe0XTdLt5oYoIkmigkrkv2CP2gdK8E/sj618ZfHy6X4j+IXifxzq934Zt77T
/syRTWg0bS7WyikljEVzHJeW9jaWsBjmtohbakT5hv5hFY/aG8aT+M4YNS8S+N5/
DUzeB49Q1OzFtZpHZ2ut3U+q/wBgfa7q4+y6jfeKZ7CfV9QktY4BpujtZQ8kSwyc
VfOllEcNgsNVniKmEruE70pKnTqewoVcU6XI+aoqbUacnUi4ypXS1bT/AJapZXVw
3Fyw9XDShHCVqtJVKLn7OpXo1FNpKioSlGdK0OepvUpRhPmbifzO+G/hn4k+Ini+
80LTYrHSrOxl1C61bxDqLG00HRNLslmnvNR1DUDFmSFIbdhZW0XmXV9cNFZafbTX
d1HC/wBo/Cr4f/DL4e3b+IdO8X6xc6Z4it4fB9tqEVnpkOrLrEl75E2sXk94Gi8B
aUkwUos81/qdysTbZYrdpJYvb/iN+1d8Bvhz4NuNS+B/h/S9W8ca7b3Ph2/tNY02
yuLHwtoFlNZ2k3iK5huvttlrPifxRfSSTadD5U9r4dsLP7RHbPdfZZrT5o8CftRa
j4j1Lw/8OdE8MeH9Esr5fJi1O8srK5lk8S3uL3VPEuqRyQfY7y5a6i2afLeKbXRb
GISWtrDK0oPr5diZ0M1eNxcac4Sr0+SnKdOM4+0oqtKvVpqnN8vvqEIRavdN2eh+
2ZliuJ86wEfqmBrYXLqEfZ4iLrU6KnGjFSqVantU60nGSp1YWha0ZuMJNub+n/ib
8PvGHxQ0iLRtQ1XV5PAnhXSHfQfHPijzPCfh3XY7Lc15/wAIrZ3EQt9Qvb67LySz
Ey3GooWuJfKJCL+YFjq0nhHx3pl9YXcFyNC1tRBfQtLbxahaW13sVpDsjmSG4gjx
ufeRbukZGxUjr9F/iN8TNW8V+FdF8QeN/GPiLXtV+GqL4ZsvDzs9t4ce1t4L77Qm
naPGkcVhpm4w3RuvMlvdSlkhn8qMiYj8w9Ukm1jXL++VIYzdXN3eLHGVijjQStMV
VcgIgJ2IPMDjuT3+izLMq0sRKnWptxhiKdWMZUmqfs5unKMIVLe+vZcrilHliuaK
bvYrgyhVqYPHYfF+9HknQrRsnRblFQcoNpObnScXJpct7+6nov6hfhR4nsYZPCni
fWormX4eeB9GvPEeneI9G1mOPWbDVvBPhmPxHqWkatbvaiS403VrDVbY3Uz5iSG6
JiiuWQoftr9pDxJ8KvipeeDf2mJ/DWi+EtU+JnjLxp8NtH8Wrqi6z4e13S9c+E+k
w+BfEOtJEsD2F5ZXt3cRNJa2scVhqRRr29v7SCSGD+eP9mz4g+KPiH4H0rwJpmo2
Ok+JvB1j4yunvr21mu7HxF4bHht11S01Nfs8kjvH4csri3tTcSC2cwQAxRzSytX6
m6fbfD7VPhf4W/Zr8Pa/4isLjw78KNJ+Lb6EdPd9C+Imv2HhLSvHXii2tZ5pGax1
O5uNLvdOtobKSyFzJdJaWf20eXGP07hfNcBPKoYLHVK+Io4r61ho01KWJlh6GKqV
Fia1WN4VI1MTSjTjy7JQm4xlG1v5j4z4QllWbTxUsXiYVcPi6sJUYTnKCwPPrVlF
yd4RhUjOEXHkk3JtU5czKHwb8Ga3pfiNfiL8b7PUtH0DTrf4YaFoPhbX7iK/8NeP
9L1LR/GHw/8ADHif+zGX7HbW+j6lb/6Ddy3UV8Jrxrg2s0l0RX098F5rn4UR/HD4
z/FPRJ/tjalZeLvDHgbW/DgbVvAc914ytbDXfGX9mxrJf3FrJBp9teWyWWpyRadZ
WJvDbXcFyI5fkb4tfFjU/GWo6L8EfhDoem6x4C1PwPd2Xga11rUJLWS68OeJHtPG
+gTW/iOS4g+y694E8R22s6ZosF2LZ2nkmsyp3wRV9vWGsar418f/AA5ubfx5b3Np
4G+HPgmy8b3N5f299qGqTaZ4fsf7S8M+KBcwW8mpWurnRGv7jUpHuLj7daiKXEls
sp93D4OliMbhJToclGEKuCo/vKzn/ZlKrFzp+zoWnTrYqpQVOVd6P27VNqSifJ51
WxFGpTxGJhSjDMHSVSyssPh6DXs1ypVa1KdXklHlkvdnJRvKKnTO40v4x/C39mDw
VoyeKta07U/jf49+FH7Qln4U+KMnhjWWvdF8SeOrzTdG+Hfgy/1R7hb3TxofhnxB
LcxLefZ7O0vry5mDp5jW8/xZ4l+Mfj/4WeLPM+EyeEdV/ad1bSJLn4haw1ml14O1
bwv8MINdfVdF1C5ug0Ok/wBnab4d0G+mit4rf7fqGm2sRSS9K+b6HYxXUvi79oP4
i+LNBsdS0v4iw/FKPwz4Ev5NLv8AS9E8SW9ro3ifQ/FHhx7udRbz+KLfTr+e2bEM
0EVu1nZr5pjjHyt8a/ixoXw1/ZrTxh4R1i/k8bfFbx14y1yPQ9YLwazoOgeMvD2q
+E9dh06WbzJGiTUbaGV42lEUscscwh8p5lPdxPK9Gq6mIVKdKnhqOIhR53KU6uL9
osBFSqT9pSwNH38QrQlKLSqy+Lm7eG8DTWOoQwdGrjfrNWpGzaqUJTxUqVWKtGnT
dOlCcXdKTpuFP2lGcHyn6EfsL6deaZ4+8beBvhdcaT4M+Jmo6L+zdbfF/wAdWkNr
NJYW8llYeKvG+iJEUTDa34w8U2tgLwRlnjtbeD7FdG0jkHr9x49uf20fjBovgj4f
eNdT+G978Mvj78Wfiz8UNZ0/T47LTNS8DW2o+HvAnhC00+a2MUGq3WseFpbzQvD2
p/blNnEZJr21N5ZvLX5y/Cv4hX2m+E/Dvwo8FeKdG/4a5+M/i3wzoq/EKy03TodK
8VeIdE8b6XH4Y8O6hqLGHbpdzpP9kX0ELwXMt1NZp9qa2aYQ193Q/DjxDpOhfs6f
sdWGvf8ACMfFv4ueD9Jhl8ceCN0moRalL8UPGHi/x3ctr80yw3FtpmkadqE9zbzi
Zozp8sMw8uOKMZcPRr4ir9aw841adLDrD1JYqjCWIknguXG5xKnKUo06NJ0msPH2
nuOVKVNTfvGWeUsRludSlXnUjWqRp0sPSUZzcYxpKnUxEVOi3PDKcZOMbxmrSctV
af8ALV+33omuXHxy8YeLbrwpd+D9K8U674g1jwvZ/Z7iOzvPDkup3VvpMlkbiOOS
4SKCJbE3T757qSB55REeB8F27XsRlSNnRZAkc6uFIZFIIV+7Zc7zn/lps4AQ1/aR
+238APhF8T7nQ/h/p3wl83wlpH7NPhPx7Y/GuG0urWy0zTvA3w7+IXjTxZb3WuPc
T2KXfiO90jTHuUS1NzeyQ3NhFMZ7q3uYP5X/AIi/s8fEPwhpGk61NZ2Op+A9Ykhv
NF8aeH7q21HR4o9T1CGxj/tK+tyZLLbeebbRQ3pBeVHSKQmKUD8c4qydf2nLEU1V
hPEzh+75eaEYTlyYaLquU7TqwhzzU+VxcJt2a1/p/wALeOcHm+QUsJWnSjUwMKGE
lUlKKhVqOHMlBSk5e1j76cHd6XjpopP2bf2W/Hf7T/iDVvD/AMNdMuTF4K8GeIfH
3xB8S6hbyR6V4Z8P6BFLdXt7dywFlSGSP7FpenQvG1zqWs38UEEUvnoIfRvgB+y9
4b+JHxI8OfD3x74l1b4TaxqGl+J9X0TV9S8PXd9J4417T1uLbwb4e8FWyAWd3ea1
4nsrbRHl1OeG0eK4v5oZZbmxhsp/2f8Ah9oNh+zz+yR4n/Zi+HXhDxFc/tCftX+G
fgr4c1T4xeEbRLrRNQ1TXfGl74ps/Aq6wkX2XS4LHR38LwTWVnfB9XubS4vNRIFt
FHH6L8EPiB4R/Zk8S+FJ/wBpyTw/8VPiNp/jDUtN0L4haJCLzwpoeg/s5Wetr4Ut
tF+0WMN26eIfisdS1u5lubGytvEq2Omz4tLTareguFK1T6ioU6dSnTtQrvBSpyxd
SvGNPFYmUVK8FDlqUlTrT5bwpyaVRtpeHmviRj5LPP7OU5OhUqYPCYaMUq8PZxrR
njueUKkKkPaRuqM4WklFWg1JnMaH/wAE/wDSfgpbzWX7cuo+FvA2oeFviv4b0bw/
8S/AniFbDxV4j+J3xUtvDviLxVdeJfF8U0Ny1j8CvAGk6hq+r2VhDMR4u12y0sRz
XmqXDPz/AO1v4w8T/GjwtqfiH4peDj8IvhX8LRBrv7Pq6Hr11ZXes3vxl8Ypovww
1RYbp1urCw0j4c+Fby9upo/Lvb7RvD9peW4MOoxPP9J/FjV/Dvw48JfCb4Zftv8A
iTw14m/4Xx8Z/EXx28YQ6lNrepa78LvhsdRj8X+ML/UxbXMg0v4mfGDxRHY+CbR7
e3a10XSfDl1ZwxR3msXhbxbV/AviL4zfFvWfFv7U9tpNj+zuvww8S/tk6p4Mtd9p
rHhzwFovhS78FfAn4bXVpZyWNvZ6beeb4Z8P+DND0u3tjFpevxahNcxxzcfo2Fyv
BxpqtVjh40cJUrUaE6cGof7JRp4erTw9PljOrKtLDYpUqlSpKPM9KcVWu/xjA43M
cfmlHMMzq4rEPmnWwmI1VFYdOCnDLKUKjoQrV4t069KUY0leE7q8EvPfGfi3xH8V
f2hvi1ofhTQtR0r9l/x82kfB7wj8VvCl/LYaRo/w0/Zh07S/Ed8tjcXN7p0V9eRe
HvBNt4m1TZbXKSald6d9qkjllEEvH/GKTWPiH4E8Grf2l1H8GrHW0v8Aw/8AGG71
tL5vEMnh3wn4X07xT4d1SFbq4vJNfl17WdPuNY1QRRWXm6h5Yli8qSOHsPjZ4un1
Xwd8GvhD+y14m+HV3+yh8EfB2h/Drxf4tkubS8s7v4mfteeIdQ8VeNbi7MbC5ufE
+l6VZ/8ACO26JDNNp+leANRx5csksLfFn7RX7VPwUkn8Bfsz/DzTNR0P4O/CP4wf
FfRLoPdXk11rfw/8XeMfDtzdaob9pftUmp3kGhqY4rhZPsUccURyYkZPl8ZXp4bM
6dPMcRKXufVnUk4Unho0qMcNCtV9koqoq1KGHkoe8489WctJpn12DyPMszx2H+oY
KqqdOjDnw8b+0wtOhTcZ1sTKda0MfXTw8VRh7TDOMZSdpe9L9EvAnxn/ALH13U/2
iL3SbPQvile614o+HPwj0yXWIbbwz4q8MN8OPFnhi2vkiinaKe4Fpreh6Ta3lsTC
ZZWllEsM0TRe66l8X9C+H/7MPiD4T+BLzwR8Nv2oPHfxr8JftVWGj61rcVxpL+Nv
+Fi+Ifh7f6PpVyLrFzbNp8Eb3Fnan7RdaPL50sUP2iWOT+aj4nftKJrHjbwpZaXb
y2vgX4bpZ2vhXQrd3jt7a60uz0/TTqjxymSW5lvrPSrB5zcyedcyRxyzkSqd31F+
zB8dfAiz/Gv4jfGDw7YfEXV/CPhjwH4i+FF1rFyufCE9t8WND8T6zJG1rG873Uek
NqelxWu+6uY49R+yyxPBs8vnwXEmV5ZXw2Gw1ZLDexw1OtWnUhV9n7KajQp0qtVx
jCmoT5qiUXGrUlsmrP6B+GOZ08LhsdVp1ZujVp1qeCot3UI1oxw9Gteq1VoxhJOt
CqnyRcnTqJRd/sPTNe0L4DfCPQPhtD4d0e0/al+J/wAT/hJ4+fTb2K5g0HWfF/w3
+PPj/wAN2nhC2uITFb6BFJp2q6Vq+qSXzafC2lxyS+e80sVvF9A6V8MvD/wb+If7
N3xW8eeLrHw/8T/2lYf22tf1DQLPXzq3w38E6n4ksPG3wn8L2ul6fFMLWKeO/bVY
dRm+1NeaiYoLFGkvbE/ZrXhPUfBvizxh8dv2q9csPD3jfRYdW8P/ABx+B1lcpaz6
7pWky/tReHpfEOrW58uJ7qK3uNK13Rfmji821nmguyNPaWKui+CvgF5/jz4f/aE+
O/ifSPiR+zX8Gf2f/wBoL9o74K+B9b0GzW41TTE+LfiHw5YxQ272VqLy+T4i+LdT
8SWd/eTStKmnacQYopR5ftqnSxdCrKOEw0Z1aWLpTWGrRjWliMRgpwhVjTb/AInL
Zxkn7zp2kvdTPg8zq1KuIx+HdXFYVz+v4jGqDlVnjKv1RYelluEjGnOEKeGlCipU
qi9+dKpKE9OU+svg5qvwr/Zy8WeFP2hf2odc8F2H7RFz+1P8TPhN4c8aabfXt94d
8J6f8Kvgumi+FtSMGoSyaPLNp/i7VNEkt9V1mCOLzrS1ngBlspXj87/ZS+Ld78If
20PiFqP7b3j/AE743/C79gz9maL4o+EJb6HS55L6ZZvCGqfDfw74ZF0IbXU9a8Ra
343sZb2e4dLq51SKOW8nkinEsnwl8VdA0Pxp4k+BP7T/AMTPFl54g/Za/aJ/bP8A
2kfE9n8GtYs7ax8Qw2elarpk2uapc/Zv3szald3VrazWEx/sq0+y2kSSSQX+y2+X
P2hP2o774u678bvjV8LNR8BaDYax8Nvgx8L/ABT8L9RtLYaze2keiaP4akXwppU0
Z068vLKbwbvnvIohfWn9qRajaRwzJFLD5HG+Yww1ClTw+Ioyr4DBYJOhGu6FsRPF
LD3pcinUj7PDvG1Ite5PSNRRUj3uEeH51q+DxU62InQrYapgqkvqn7rBYt4mhDDY
Xnq0/aUZqUJU68I/uLum3KVkl+l3gf8AbF8Sfts+L/hR8F9E+Pml/DK8+PP7UfxQ
/a0/aq8XXPiIWdjpngrw3BFPpmlaq2oG4tY9B+H3wn8Kam2l+Hr0HS7vVbjSbIeX
BpduYvp39t/W/wBl/wCN194NZ9ZufEnx3/aF8H29x8F/gy11Bcap4Z+FUj61o/w3
+LGsXGp2ITT/ABZ8QtIt9F8Qaf8AD6z1WS+k0K6h1TUbPTJ762gr+R/Sk0/xZca1
rnh7V4vAniLxX42svCHhzSodaudEaw0TVQdOvBqcdunlyacwu7SC5aa4ijkeK589
P3hevrL4I/tD6j4V+JXim6uL/TfFfxVfTrj4XeB/H2tWM+sTaCLnR9S8Gz+L/C+t
TyGHR7vw3pa/ZfD+pCQnSFe1u9KjilsopYfybOsto51i5yr144bOVh8dicvzlTnh
1SeIkqlDDTdD2cK2HpQeGoxSipxo0ppL3pJ/ruEyOPD0lHCrF43Aw5nXy6spSre1
ryjKUoYvlk+WM5NOK05U4p2WlLxd8N9c/Z++N2uv4xnntvEtr4tn0iEzyfYtJRNX
0y6W6v0heY2CRiS4tknuLi4kVLeOaOaQmMM/218J/irrvhb9mzTNX1jTNI8T6vce
JtX8J+OLHSIrSO8uvh/8S7U2onS48y1u7m80zV9ItLgS2pmiW6ktpbS5SUIbn7u+
MH7PXh39sj4I6de+CdPh8RL8JtM8PaVP8SrnSDpWofGz4k3OhQX3ia/8J6YY11LW
fDa6rZX8ljI1p5qWUTXmoRR/atkX4v2DyeAvFXjfRPE2ka5og+HOrWMljZQyLbWl
pHpHiuyvHtdbW7mxdpYh55PsPkxRmZI4/L8mOUV9zwTxFOvgcFRzKPs8Zhq2GwuJ
w+HV6NSFHlhHHw51H2ka8G6js01GoqcttPA4kwFDMk8K41k6TpSg6tKKlOjCbpRp
RadOVNrmanCL5oSSlda3/cT4Q6loeq6R4L/ZY0PTdZ17wFNrXgnxBrnirWfF9joP
jLwz4N8XLo+uakRevMrXWoeFLmXxl4dlto4JbprTVbASx38Fwwj9O/bV1jwB4nPw
w8EfD3whDNozeCNb/Z4+KTfD7Vd3jvwzrfwt8Vyav4Y8UNZxTytHG2lQL4nk1SKL
7fLaicF4fsssUn5VfDvxp4c1P41av8WfF+nQeEp/h3pPj/xB4C+IcGvWlz4b8Saj
oOo+GryPQFhuHutPub2z8KeKr2KS3mjS7txNA32mP7It1D+kP7MfhPwxH8CvFf7X
fxEt9Mv/ABr4X8d3un2PjDQZf7Uu774YfEXQvF3wv13W9VsLREtpI9L1O+00S3Kx
XEsZtZJ/ME8m1/1KGY1arhVwWAvWjRjOm5PljjMTieWnGlK/7vnjCXNz7xjDlcm6
bv8AhGb4GrlFb6xUqT5PrEeenGM71cwrxlyTlP2rpv2cVGp+7cJwmlGdGTWv2b+0
l8BPGnjfTPD3wasfFvhX9oH4HfDD4t/s1at8edd8T+Iriw+Lvw/S8v8Awn4QW70p
9GbTXFt4n+HGs2MsWt2t7a3ukRWMpFzdzSySQ+ffFT43X/7PXgbR/wBlj9keJ/ih
8SP2Zv2+PH/w7T4b+K9XVdW8Z+Gvjl4Q8U6ZoPhy21/WZEW+A+13Vte3t3fxypf2
flTXUs3ky1u/sIeMpfj78G/2j7LxBZQ+APEvxf8A2XvAnw+tPiz4ob+x7Tx14h+H
2p+I/COl+JdPkvLswiBbyXwrZ/bPLFy2rxXS2kpjtnC/PfgT9nzxV4d/aT+MX7ZH
7VngTwrdeKvh78E/gJ+1f8I/Evge/wBVntfFupeDfHPgiw17xbcKki2tz4hn0mGW
TVbDUYWFu00stnPDCGuB1UqWFjVUa0k6kYUqNSNlCtWxM8LQouVlF0qjp1K+Opzl
dPkaTTl7y56FenhsTisBi8Up08HReNnR5ZTeJxixSjUi4Rq04ygqSi+anUo1YWlJ
89nE4DRbb4X/ALF2i/stftKeMvh/q/gv4l+Lf2Hf2h/DFnrHhbTrzUr3Sv2mRP8A
EL4atca2kUmpLB9j03VdOaGVWtrDSbmxeaW2yIQvf/AXwjZ6F+29/wAEpfA37XXj
uX4q+GfFv7Jd98SvA7eN08JfYvBM/wAT9B+LHi3R7B7mOAXWq2Wh3VtpGp3ep+KP
tNxGtops9SWCwjtbbyT9mb9pL46fG7x18X/gz4pbQ/GH7Llj4g/bR+G3w4+K02nQ
XdxYeKfjH8LvEvibwZ4c0+6uJ5gqfbvD1jqeiSTW0t1bXGtzLNdXymG3h/GL9sz9
sPSf2gPFv7NeveHvFXi7wj4s+Ef7PegfArxJdyTXeizWi+BLTxBoarp5tkhtbW21
iyvnhOlWtswMt5d7pPJuZFi+IzzP6OVRruph3VzKvHHYeE40KtRUJYilj/YxqVYR
SpPkxlSUZRbh7VU5JvSJ+scPZFi+IMdPDSrR+q0aNDEYl0q0alSNDGYZzoKeHlB1
KfJW56cqXt3OVJe8kmYPxB/aA0rQfhT8evAPh7wN4e1DXPGvx38L3Ft4k1PSpZNM
i8M6DaeIP+JdpN+Z44NOnlvb4XEibY8aYESKL94Snzrp/wAedU+I1vb/AA9+JN/q
rf2klro/gu+1PxPMPB3g62+0v9msk0vV0lh0vToWhTzLmx1W2ito/P8ANt1mm+0R
aNlqviLX/gF4Y8Ozab4b1Pw5N8S/Futwvpn2OPxrc3un+DbUyzapOSZU0a1iTz1l
kErW7RXksHP2nPzXZ+F01nV5LaLUrW/Nt4avNUZLm5SytoDaWgu5rW3ubzy0mmg3
siR+Yn2oQP5I/efvPyvEZtmOOr5nmNfEylQxGN551JtKnQs4xhQhLltypUeR+5Z+
7FaaH7XlOWYKhhHg5UYUquGlCMakZTnXlOlCnRjXvJ+66jpt8jtHltFX1Psuy+G5
+GfiqSa+vPAfxFewu7m4Wbw54isdagM9jZefZRp5E0MU8d1L5Mcjw211EZH4uIth
jr3zwj8QdV0a60iLxBpVzqHiSa9j/syzWKWWewbUEGpXjrGIiwuVtoYUieKKVoo1
EsX+txX5q/DT4tX3w3lS6j0u2u7K7tNSsRFd6bY3cxW7228s1rNcwSXK3kIzPbSQ
TxtbyiPyDFnzT9SeA/iqkw0fxXa6pc295aXdxFcm5WOG4sba+iuLK0eJbdi6xIit
JNO4O4K8RjkDQvSprD1ZxqUk4TilCSn73tZuL5qkouPLGnCXuKKbu7SaV9N8bg8Z
GE3iX7dO3JVjGS15laDjT/htp2k1vbW59C+M/H1z8OLD/hI477VJY9Ns01fxXe6v
ayzx6v4i1oNcaFovkkSQyWjyMZbaOVQ9z9lkm8qIRII/zj8Q/GHxL4r1zUfEmszf
2xdanqE1zfXmrOJJ7uTzXa1Dk4t41h3OI7ZY3jjjUY2DOPtf4qabq/jzw7pugy60
l5p19q1nrniO9tIzJJHa+HvB13csphjWPz2gtzdabZJPIf8ASUtopRD5pz+YWpya
Y009ulpeRQrfX729w7ku1qpb7LvhtzJskyP3jxySYLJ5Y8rDFYjDLBKfwpV0mnSl
T/eKMYW5uS1nJuXPFq0eVJO6TOnJ+XExn7aLlXo2pwm5NzVLR8tpxjKPvKVo9Ulp
39m8P+INNktbvULjSZ76eZZILUwXclilheySW7/a3jhz9pSGFmMUcc8dvvlX94Iv
NjP6Mfs+fHnwV4P8IDS4zqviT4iXbTweF38TL9v8J+EJp1EN9r40aWA2+o6vPbyW
/wDZkEqyRWv2Z5rxZYo4rWX8cLPU1sUt5bWR2fAe4S5kdoTMCyxF94CrtBUZUEfJ
1GSg+zv2ZtC1f4i6raaQmh6fcmSa81PU/Et3dwxnSfDelWMt/q05ja5tre322UU0
pkuci4+zmKJfNKx1xq9aosNOL9q4R2UXBtRi0tVbmso3T/lWieh3Y7DWot1LyoqU
XK9Rwa5GrPTVLo4rWXm2f0baT4qsdd+BPhLwfJrd9qWg69bR2h8NaFbXEvi34teO
5IjNqN7rt+YhbaX4F8N+dCkrGMxyq/76IH7NGep/a3v/AAF+z1+zlo+i3PjH4ZaF
44u/D0Olb7y8i8R/FC8F7EzzaV4J8F2dr/Zfg7TbXzLtW17VJPMjjKXUrWs8xkh+
GNJ/aR/4Vr8KvEVz4d0yFF8K+DYNRuPFN/ZiO+t9L1O4fS/Bnh/S4xDiN572RtVk
skkl+3RIZJvLhi8yP8y7j4nxn4Za5eai9z4o8a+KtZJbUtSMF5Y+HdLZTPeXNw88
cs0urapcTokESyxxW0MNxMeZooxz108M6fMpRqU5Rh7VuNNOU3a61nFun9tRspXs
72VvmMtwlXEV3UlKUaNLE39nH97zznJWdTnSlSUYJPmad+bRW5UWLTxP4u/4R2+1
hpxqWn3Ulxa3arFZ3lzELtpvNnuZLqaOfzCQAhh5jlXzZdx8uOtK6urzwl4e0mbS
tPvbHX/Etk82m3up3B8iWxuGCXkdvpkNyZ0I2pAbq+/dSSrgxSdvLptb0xvD2hQP
eanaa2W8z7DaTqdKgTzAw1HVWhhlnLyhVhtrb93x/wA84yfN7PWU1fWdf8DJquky
TaVNaQWmnXUKw/aNS2tH9qu/LhlMvkx/IMkxfZ44/NllPmc+Ji23Um5xk1OVXn0f
NL2cbxcoN2mubazV09FdXPuqUmvZyhNU7SipKo3aSilblcWtFo2pX63XaxrDzaTo
2lQ3JtIvE+qubk+Tc+e62ySOFaRI0+y2FzIPnigSSSTyyCP3UglPbeG/Hd/4NtnM
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
EHnyGTfC+whMjrg19OoNqOIpx/c39sqrknzNeySXfmUm7xdmnGzPpKePo4uVOhyS
fPBP4bKHKoNuals3oktW9T62sv2sPF9h+y345+CviOztNdv/ABl4s8I6tHPqunrd
XsNn4a0rXrfTtQttUDCaO6jvNaMJiSOTzYm/1nlSSRyeMaHp8y+FdY1SXU54E0e2
03UdX08pJJHL58qxW4uJRL9mhkEssKRWz5uDEJrox+Uksg+dre9l03fJCkOXjRVh
nRLkPHuVlkUuHBDPg7Nw8shhXd6H4qvZodU0q6FvLYX7prEkZLBHu7KGSK0SQQx7
0tlcKBHDJbxRAyeaZAMVwYidareHK6cIONSMG1O65oOSanqm7dHdJvS52UcBDDe3
qUYx5q81VqSleLcpKEbJRurRjGyTstF5299l1+Ww8PaVHo1pZ3FtIiTeJ9RgjQK8
u5pYLBnZPOg2LESJcvvkJ/d4XMm1deL7vxVrFxr8QuovsNkuiaDpOltJIIbeO3hg
trBYUO+3R/Lkuby5/dmQls58yKvG4or288L2l7o8lvLZ6VeXut+L/OvIrNf7QHkR
WNum6b50eISpbW00c8c8u3zI7hfLNX59f0+xttWvNFF1D5s8NgYobqF5Zre4RzqF
3NKjxOyRTiGzgWJCxgPmtn96h41iHUjBNwko1JU5ae5SanTvGScb88k7xav5NrQS
hFa8soTjNJ3XM7St77V7Wkle26j2PTfC+pR6TFPc6e6S+IrySSyubTzLqA6ag8xp
ZkVCLaaVZIxDG8jvbeWzy7f3fH1r+zh8HdV8afEjwT4OutGOvReJJob7VJdM0u81
C8tLONWurtRPFCEmuo7UyOCshtY93+l3oEcnlfFfhOXTbzVNIhnjuLKNXjS6jtrs
eXdM7LHFDIoT5NzB3uUfzd+2Ty/LJ3V+4PwA+LPgLwjf+KdB8R+ILPT/AA9oWg6J
N4n07wNf2eiap4vkv7aOLTfhnp2swQi+s/tF4TJ4pu7G4fIikjkvowfLrpo0KUmn
KEpqfO5uCs48so8vvRa9xNJpvT5WT8vNsVicNRqSwztUtq/iu5Sp024LrbmvFNxV
/ikj7r+CXw+8OeAPHbWXwt8N6T4b8D+GNG1b/hN/Hmv674c8SwHXkEZtYrvU4/N8
JeF7yN5RNLayy+IL2z8uNprI3cUufqjwf8QvDN6niDxrrPiu78Y6JYyyf8Izff2z
qsfh3X3sXaK+vtOtb7S4tV1iK0uUlgivtN8PWum8eVBcR2nNfDeoeL7fVvg/o3gr
wr4D0Pw5oc96/iG51rWJnvNJ8KXviC+uZ08G+ANG1Wc/25r9hpKQwX3im6jvrp5f
30NimQRN4lg+K2r6bD8Ofg42i6Kt3YjT7+fS7a4l8Z6gsECGSe/8RpHaWujWRaYS
S2Vv9lhi3f6wW/7qvQwmCpyqezqNqLfuzk7pTm4yhFSduePIkr+bS21+Rnj5KMHK
dO7l7Ko5vk/dQmnKrUcXOftXNqNuZqy2Stb0X4g/tZ+BdMv9cb4pXYtbaT7VHpWj
a7qt9p0NzY7Ims7iWxkgvr6KSeKG3tbWI4iO8HzfIDGL4Es/jb8EvGvi+1s9F1Ye
FI1ubtL2CGOSPS55N5lt7vzbkxT+VK8cS+dNHFFFGq4Udvmf9oT9k/4zaLr32XUY
7nxNqF4ZrmdLHVIddltII0826uLmG1urm7gjhbzZ5ZLuO2t+8Uv7uvgPxAt54W1O
fTSyieK4EDyLIJGKtsaTdDBNKi+UrSkPmSQSqN0MeK0rZPS9+MppyTjJyXvJp3UV
GTVuVJq1url0sz6TLsbhpucsNVk5zjdOKSVOMZRhCSh8TVtPes3a/p+7Xh34op/b
GnaP4U1yw8SXOo3MttaWWlXUc13czm5YWyLbyziSKQOirny/L4ckhWr6D1nxx4m0
J20fUNOvbDV/sxuD9pQqxb935MkTbATJGm7MaCQfK4HQ1/NDo3jjWPDWsWt9oWoa
ja6pp8iTWmqaRfNZajbyAeeZI5LXyrpJFmwYwSMbVl7GRftP4W/8FAviD4QvpW8X
2svxY1a78iwhuPGmo3V5NYwSbVeW2urmS5mmnkgDCSG+8397HHKZYjFmT5zFZHTq
WUYatWjDltzO691927W00acV1sfYYbNa2HVFpwrypxjZzsp3VndSbtG17pXWqV9L
H7WfDvxdd2msSXN9dMXiMrytEx2vG7MIGReTsklKTsWiMo4I7xn6Qs/i2PLVWaW5
WdnEKwqGkWQTPlWBj8ySXzV8wx9eoPBwfz9+H37R/wALfF2gHT/Huka34M+I+q3d
nc6JoOk6Q93plxZ3NtF9ljiksEuIILmeSM+bcXAJlMyrk+ZDn7j1L4J6npHw8sfF
g160tLy/trS+svD8dwWu4YHCTH7YtpJI/nvb+aY434iDlugkFeV/YEIKdOnTdObj
ObVWfLKMm0pe6tlaKtZX11PQfFUJuLqxkpyq+zvKPuSclFtws23FaRc9r2s9T1y1
+KNzJDBHI+Ptabd6PcNcxeVhY0REQli8Y8o7jgxLwSeavRfETLAR3cIEufKVWaDe
48nzYpsjnEijO/mWVhg/wj5B1bQ/iP4YsIdSvtDaO2vo4LiGeNABPAdqK9u3nyRx
mXcPNjktjIJBLNL5QxFXz/qfxek06a/XV7qZYo1mZXlkK+TF5pwiriMngq8R6xlT
++6FvNrZHXnSqJpVYRhBJQvGXLLli/es7pK7vu+a/Q9GObYapF2qWnrdxlo1eHN1
veNtVfrpdH6m2PxMkidR54EcbAOxkSZvNkKJEIpe5jVP9YRiXAh44FdfbfFO23W8
c86SKswjbbKpkZ0KbHZZJIrddhLnMoPIUnPU/iLcftaWFtaWzaT/AGhqbT6vYaHb
yK8VuLm7uXIiSRrpjDa+RGjYnkP8BJ4lOcq9/a9u7a/gSe1OnreRX8a3k15arbQ3
GlRySX8VzcOY4Gvcq/lWscQk8vywMHaa8zDcPVoSVPkqKM5N83M5Sk7qUrt6KK2t
s2lotBvN8JJwU5392MWrpNt2vbRXir67vme1j93ZfjRYW80afaEikZ5I7dWmCrmM
x75GQ7kMZOMHoFbj5jkE3xv0sMLWXUEtnicq0qSFUDiVAYysn7uPdMvlRouMk/uc
jJH85Mn7Zer6pq9pptpqVtDLq1/DpGmTT3DW8+o3V1BJMEXZlZVVg8UcqsThd3ZK
f4c/awTV/tumTaot3eadfX5itxdypsn0W8WG8PlebHMsFrIjfMxlTOwY656Z5Fjo
TlOTjUp3S5LXbUpx5NVZKyjqtF5LW/NWzPDuUoxtGNrK7V5SUl7q3fwqWy6W9P36
8TfG6wsLWZpbxXIWSQu0hykMeJB5QTzXkkcKkYdSBKVzCOSK+I/iN8eDdzXU63Rj
8qFRCssvnKUKRfvGVPnXhg4WQf8ALEnOQSfzVvv2hfFHiu3vLG3uWVMbXeVvKdCA
8iOHk8riTdEg/dedNFgn70xbyjxj4/8AEH9iPaLPLLLOYfJKyGXzXZm/drOvzhWJ
8tWBzmGOMscZr0aGSYmpNKap00r6ardU5ylJaJbcqWtraXOSvmcVRcKag5O7U5b2
stlvq2k3rqmdz8fv2jn060u3TUEnu7yzkieKKeSNROVkiDcD95Gmd/nY8rzE5fMN
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
KfEL4IeIfCH/AAsHU9eto4ta0zxd4i0WaSxhlHhS9fSNTuYtZuvD99tjhnAuo/It
YoIgiQsrb1H7k/U3/BKX9nb4vfHP9on4bWHwS8eaB4M+Ilt8S9G1Dw0niIi4097z
wFouu/E/UNb1ex8i6jm0fw3pXhS4lumntb0Tm/t7SK2/fTSR/kuX4evRzHD+3hP2
VOsoVYwg9Y80VKPJLkbSas20nTjzS02P6MzrPMDiOHsxxmExdFxjT9n7eEZVoRq1
Y07JxpxnKXLzct1GVpXbjo0f0Ef8FE/j58O/h7cf8FDv2d/gzaN4R/aM+J3xZ/Zf
/Z28F6b4fs/ECeIvGHhLw3olrqXjSWDXIrK30eLRk8aaJ4d8O39mj/bpU1C2tPs9
zGs8sHifhP4Zr+0j4v8AAnxd/bL+Mmqfsl6RceA734H/AA1k0zx85m8Gfs7fsweD
m8KfGfVZJLmyg1DxfrPxD1e2uPD2i6VFFBJrvjXxB4pvZbG/hihtLn7k+MHjv4b/
ALLHxg/4JXaP+0brGj+M9VTwl8Xv27/jx8VptE0hNR8efEH4lzeMvi/4L0rT5laI
xXOhav4P8J+E7V42gstTtdS0dYVtfs8Vkn5n6XYeNf25/wBnP9pH4mfGH4eeFtCm
+BH7IWn+IfgzrkV9Zxwy2Pij9qPxnd3/AIybS4ZvP0XUPEd7qXi3RpjNp1ql1Z6d
LqbSvDP59fuscq58PGsqroynGFKlU9m6v7qvTq4GlVlUq88or2mBw+KjTk6cPZ4p
qMVKUT+bMHPE4WjgaEadLB4GGJjiM1zChW9pjJ8z+rwo4WNWGHSjONKpOvBQqTw9
ONWlf942/kPxpN+zjrXxL8ZeIfhj4B8daJ8H/Cts/hz9nXw74avL/XL74haxqF7p
tlYar4r1iKOXRdP8Q3OmGbxF4x061M1v5zQ6bpxYvFc18sa/o2jW/i+XxWviBZNV
8CaXNr1/Y6VH5Gmyanpt/ba3p+n3MKQ2u2SFlke+IhKfaWQYeIbh+jGlaB4q+Fn7
PH7I2mfB/wCHdp8QdfsP2b/it+0p41it9Qs3PhnxZ8ZvG2qfC7wH4yurUweUb3wP
ZeHvCmt6Lp08lzJe6jfpCYra0sLcy/EWp/CD44T+BvEGt+ItB8NR2fgjwL4c17x9
fLd21nqms6l8S2iuvDdjqsz2rC611dINqbjSLG3jjhAupbiM3kk0sfxf1/GYDFxy
2tVw86kMVKvKvFVqVZRhip4anW9nBJe/KlCdKWkZOvBPqz7fAVMPQnXqutKhRhiF
ldKeIxbqV6tOE61CdSrTlGUoTq89OqpqSnUeKhJySStq638RG/aT+LK2Cx+I/BXh
SK31y50zxBoEkQtJbDUtNk8Uaf4e12COd7aTTn8c6bLMZjAWhE8kxikMIkXB/bQ/
aw+Mfxh8Mp4YhT7H4I8LWCxm40dSlobPxBJa23iKw1KH93j7d4o0ttUgSGMxW0tz
PDLLLLKZR866bqfiL4ZX1lo/h+VrfxJruoaGi6LKVJa/0zWrjTptFit7wRf2bdOd
RikkaaMnCHMphlkeT37w5P4bg+FHj6X4q3EGjeMvHFt438AabZXRgg07Q9e8IR6Z
fRXqwQLcmRbixvpbdbuV4pbjVZL0xSMLOIHlx2LxMqWJXPiMLUjD2fNKUIUsSoSp
pSlP3W5OhFqP25RjK/M2m/QlleWZRmOV5jTwcMZQwbjhcDhpRlUrKpVqRli8bCm2
6klanJyqNzhFxajBNpP8l7lpZFhymxY2cPIGxlmYsGcN828qOjY+7wKhB84xn5MF
9qAb2kON2MrgqSfmzlPoRmtHVdsU88AnNxGkg8lwVEbbVIRyqs+7zE243/Pjt2GH
u8iVXV8tG6sCN2S2Vxw3Pf5ccnue1fmNWEqdWVPnTlTqTi3dSXvO8krtt2eia37o
/oKjJ1qcGlZygnBJSSUWktU0ndtK90rdNbnU2mq6lHZ32iQXq29lqSQyX8MxxDNP
apKYJCEDk3Fv50nkOOnmP06HrvAel2Osztp2qzXOm/ar2x+weI7W3kli0ySKaNZr
i5S0UTeSIJGmZkjk2SQxnEZ3yVyvh77ONb0ue7tY9Usobq2ub+xLywyXttHMZLiy
WSAJIjz20csO+LcQXB8sjr+wP/BMr4Q/2n8ZvDvi/Up7LTvhTb/E/wCHnhL4hw+L
dKg+xaV4S+KeqyaHpG2fVUSGW7vreDVZNN8hZLdpNL84yRSCKOTlx2LxGEpSnhYx
rV2qdOFKpzSu5NRbjZP3220k7O6VtLs8rMcVSwOGr1asVTpKlGtOd1BOUZKDjzK7
dR6KMWmppWd9T+ij/gkj/wAE69X/AGcviBY/F6+13RPiz8EviZpPiL4feEfD/iDw
7cL9p8SfFb9neXXrX4kWdxeWPn6Lpuq+Io5/Adtez2Ebaxp83nxSyQNADwn7EH/B
KL9h39qeLwB4u+JVl8TPhPrHjfx/8dfghH4YXV4Idcuvih4E0V7zUtP1a9j0+5jt
P7HjlOo2iC4s5tSt4lUiOMXNqfuPxd8QvHvjrSvAH7O3w6j8S/Bjx5J8PNQ+E+u+
P/A9tFqXgz4da9+xT401jWfD2pWVpsgnWz1f4eC/0y3WVZp9W0+7j0wx+bbW92fd
v2mte1HS/AXw9i+AOgeEviJqXgj46/An9p74dTeHHk0rVL7wR8ZvB0mheLfGt4dL
vRLq2or4807xReazDd2N1Bf+H72ztLuKS7s3ux5Mcwo0akoYnG8+FyeMqlarhMRS
w8MxzOpSnRw2EqUq/tKEpYmrWVOMFKFR+wvePtLv8k+sZhWUsesdTm8zxHLB1Kco
16OBo8qUZ18HNTp03GFSSdSl7SnKTbfva/nv/wAEu/ht8ZvCvwN/aL+AvwZ+Inhv
4n6PYftf/ArULnRNaWDWYvDngTw18TNN03xW9pBr0j2WmanHokH/AAkFrPbztJu0
I/2bHJqFtHDD+jHxk+Cnwv1P4oeG9Tm8It8Mvit4D/4KA/tGJ4el0lzqMHxC8RX3
wFuvEdv8QtZ1CaeyvbOz1WOLTNY1e4WSVLLV7CeIBxIs0Xk3wd+GXwt+AEP/AAVY
8BeCPFHjj4f/ABFs0+DXxM1bxD4yvLODwpHeReL5/GmmeLPAsumwx6lpOh3t54in
sdfS9FukFnJY+bLNCZZINv4i/GnU/hb8ZvH37Rn7UGjQ+OfhJp/7U/wxj+Cup6dd
W1iNK8C/tF+EdQ0efWryW3uIrXWbLwnpZm06eHVYk+3QXkUtuJS8F2l4mOJpQqVa
GI9jnnEUZrKMBGhSo5lk2BrYPAVOerhvbfUsVGEsQ1UhT/fexjOdnKyWtLGYTEU/
a11ONCn9XnWqVcS6qxeNcvZTpU8VB+3oW5IzcZq0/aSvHmc7fzEeOPhx8Q/HnwF+
EHw88b+OUm8X6b+1X+0P8PvGvifVZVkPhTR/hL4Z8MfEHVtRfWA9wusaTc+BvFur
XulQJbSR+ZYTQWMNzNNiT8sPjB8DtD0bwB8MvG+g+ONF8UXvxNbxlpw0vR7iK+nt
28I3mnwHVLmx/wCQjpNvrS6qGtUv7eGWS50vVDEI4Yq+jfiP8bte+F/xi+MHhP4S
6vc+KfgP4I+O/wAQRY+FdeeO38RXVz8QPDeqfCzVWs9SSy/tiOe/8K21pp1xcQXb
xh7ey8qJ0jSaXjvgFe/s+adq37Jk7eIxoPjs/tX69ovxi0fVzKyWPwSvdV+Gr+Ht
c1DUtSjtfDka2sVz41sLmyt75Liea1ea8sra0nheX7vCPJZYfE4KEYRxFLCuvXzG
FSUKHt6tRyrylhZfBUV6crRvG8rN3TR9JRnnmFqTxdRVa9GU6c8Jh6FP2tWNNU69
ZU8Y0l7OGlClBxUk5qKe8pL82b7wPrOmmRp7aaHyypEjRsYYxIG2RyMQVEhbuDJj
GT0kqPRdMvfNcWUWb2IJI+3cshPniB4/sjLvMu7hFzt5fzPL2YH7JfHP4b23j34/
/FXwP8NvhDc2Pg62+MXxM0TwxNeX9rfQanpUF1qes+EI9OsIbKS2bzvDyS3sBaRm
vrWS28maaaLbL+dvifwLqnw38aXFte3Ed9bx+Rei5tZmKq6Sb4beGWPy5LVUypG+
OLy51zFFIBDnLNMoo08NSxWAqPF4erRhUhWje1b37LlfKpKM+S21r3Tdj6LA8SrE
S+qYqKw2O9lTrfV3KLqQS5XKFWKbcXrrGXd2V7peNavYzaHdX1u13G15Pcae6C1m
VoD5YKta3Cq+37SJVSSeFvtCcdcb807S6F0928zGyvUvbO4CxW+yOPYBDHFGkX+r
Jl2Md8ZQxgnsAfU/EFnoWtafqC6VNa2UOnW8cnnXawrcXdwZDeXN9ezwea81zE7r
BDtzJIjR/ukOI683eHUJVlwQ8WqtBatdwfu2D29p5/ktA/3HmEC5QAu+1Ioz5khr
5vEYaVJuK9nJTcat4uM5fDTbjJapWitVKzuuh7eHxSxMWpWUlJc/P7i0UNY2V03G
/uq9n13a7CXxDrfh/wAS2l29rbzXK20GpI10m21vltk8uGaGOMBLkMVdDOmfMkH+
szIJa/S79kPV/hd4usY9RisYZ/jrrfiq38O+FPCKebqWiXRuIFvdX8WmBPMltJ/D
1nI6W1pcxX/2+8n84SW01q8cn5PaRbXlnDb6xBNbX89tcRaVNpF/9oXaZYp7iSKR
ZY43+zgwNKfs8v7qSTONp4+if2ePidc/B/4yWXi/SraLw1fXV5BpllfiRlt9IOpQ
iy1e7s5Jn3BYrW5uXZncjy/3Rk48w8+DqR9vTq2mqkFKNP2c3CEmrp05UJNKVtJJ
7aNptaPDNMO8Vl9WnRnyv3pRbUoSm4pPlqSSlLluryUVeSTas2f1R6p4Z0bwF498
J6V4ltb/AF/W/BHhbTtTtfDGkXWn6nb2cWtLDZeHNHgtdGe6kHjvxdqF1PfTjUfs
0ukaY9lNelDL8vXWXxE1C88f+Mvh1qeqt4N0200PSU8cwfCzTv7T8UWuo63IZo/g
94d1R7N/7R8W6kY0g8Sa7aCSPQ4vtUE1zDNFcpH8KfBT9p3X/FNgPjX4L0nTtG0L
4OeGfF/xW+JvxPhkvr823xI+IGsy/DvwRqmuXUshnvNQ0V59B1Lwv4QtZTHbXmnT
3cBMH9p3Uf3B4IuNK0D4g3Pwk+E/hyPxR4h8IfDPwR4PuPitrc7DxNffGLx1aW/i
z4k/FLxRNc3Ju4dS0m01Oew0rTr+5aC3S3EhsL2SXEPv0cRXdZUMRGlRlOqp+1lO
UVU5VDlp0uRSpzqxVWPMk1BNqPNsflWJhLDXpqPtZRoVMNWc5Q5qFSliKXtq04rW
lFxr0akU71OSonJNxSfyd+0l4mi05fHmgW/gEaVfv5enReD7DULmS28N6K1s72Oo
fE7xHPew3N9rbwRR332V5bG1luvOxa2UPLfzwa3cyz67qkwhWG4+2Snd5q/YmlBY
kQtHJJvQb1jDrLg4Ubzk1+6/x+8J+Evh98HPit4l17xnpfivT/CXijUwvg6XVL9P
EPxB8cteTxatq+o3Mby/bbXTPJnEsF7dW2Ht/K2CaaaOvwPtvE+j+JvGMsXiawn0
i1vtQlee2srJSLKWWPFvboDPJGltHH5cNvHG/mJEg586Pn08TTnhqdOM5XlVmp8r
tGrZysm1GNrJSVr3k7rTofR8N1ZT+u1ovnhRnToOS5nGTjTpp+zcpc0otu7fLZyf
K5NqygsbGEy308169leQsFshaJK6z3LCRkAmSSMoHA8x+pHQZ610OhaMFvbx/Eur
2PhWW2083kMupJdNJehnEKWttFZQ3DvdzCVHCTfZgY98m/ORL2WpaJqdp4b02a/8
IT6L8N9euyNJ8Y3mhm6vbyWDzTJZW2qyxBHu15NzbW58+2jcReY0eDLw2p3cFpbX
VheWctpoWoXE0uj6nf2SXeq3L24WS3Q3bhESNC6rcx2+RFIrxmM48yuSqmqsZRa5
aLcrR5rzn7sVq1zWjUVpW5UvS59PCr7WUoqSjKpU5IuMoPlUOWMlqnFSvo4tSs1u
nt6p8MfH3ifwb4p03W47ma5h0O4sr6KG+1BtPTUIbKdJo4EuWeSa2kkRAluqfvMj
y4Y+BX9Hn7KH7c1h+1DNp3hTUfhlb6DPp+nyK2meEdX17W/EWoXdikaW0NxceIL4
abDPqgjeWN5ZBFFGzzTfvIzGP5YY/HFnomiXtld2FncyXhiksr91n+3WKwSLJG1u
8M0iPC+zZH5kZA3sBIf9VXV+CviZqttHd3Wla3r+j6lthmtYtNE6prMxuIo4reZr
K+sntFjMksovXkm8t4QPKGQa5sRhYYjlnBx9ooS5pKS1qJRlJVG2vdcF7l/e00d9
BYicpRnJ2jODjTw87OVlLlbmoQaUpc2kttk9Io/uh8eXMXiRPC/gLS/A1z4c1G+j
jb7B4ov7GeKys7NYbqK8fVYNcksTCLUlvLljtRIEk84RTHyouC+MX7Lnw48V6MZh
4b05byJ5oLnXPCVta6jDOhihurqVksr24jSMFgYw+ZG3ScSkAj8Nv+Cf/wAZfF/j
BfEui6R468AfDLxxcafaR3PxA+Ki6WdAtpLe73XNncS67dC1gl1GFntbeefTL+5u
Cy28ZeaSMD95v2cvhw/jXxDc6zcfHvwv8TNA8O6Iuo61o/wV8BaXqMl7rRQR3cNn
f6PJp+yET2+8WN59ltTLHJD5aQuYofEaqRnOMqNRTrVKVKDprljaKhaUXpG0nre9
tNTzcTWWGnThHF2lhoqvUl7Ot+9nLlU72UoJSulyc7cbXZ+R/wC0Z+wlqvh/QdY8
TeAL7UtY019OeT7NeaabS8thEXkguIIXlIaS1RQwfEUscWc5yJB+OniHQfGuj6Y+
hask+oaBd3ramTJC00smoMHaa4V3AeC/8kOsjpsk+eMkyRYx/cLq/wAONB8a393F
qH/CU2fhbT4JLfV7/wAUDwx4Qnto2ikEek6e9reiSDULVJCJY57W5i8mTP2rzraJ
K/GP9vf9jjwd4P0ubXvBC+IIdNvJ7W4gsry507V1nupWkcvp99pbyQP+8dZL9MRf
6M74A8rnol7SnCDcYpU5KF3aPtfhjJRVk+eMo3b6pvo2aYXNY1MRTo1m/aSd4W1U
bRjKmp81uV7NNJ72fl/L7451TxBNq2nzWemX1rYaC7T6XeabBPaSwXIaNlmFxG7o
tz53lGYEGaJxJPgqST5povxY1TwtrWq6ykXnavqMWqQyXs7SRXGNU3w3TtubyjNI
8rFlZWiMgEpO2Hj9CfiF4Ll0XQdTt9YddOFswmjjniYwyLMojkg3IJI4LktIz/6y
Uv5Xm+acAn4B+JnwsvdIt7TXLa/ivtJu5I40ubeZJghfzZEijdZCTsEbh90Uflyx
gsHJEpPrVCPK3GMJSk3Km2vecl9hrS6lrZ/Jd/fpx5pQ9pHpzcybacnKPKk3Kz+J
36O7Por4b/tE+FLG+8N3XjfUdf8AESWF5pD+JbCBLOHU77TbeT7JKbaeKaGC8m06
xKC3t38mSQQGOXdgyn66Twx4w8daB4L8Y+GvDmq6v4J8Q6L8QvH+l3lnqGkxao/h
b4caoNF1KSOOd/LZtM1W9soNc0txHfCB3ntbeWC4tZT+FF8L/S7t4HWW1nVQQxDR
s0UnzpJFnny5c+Ysi8PkMhA69T4Y+J3i/wANX+hzRa9rlxpeh6lLqEGhrrmq2Wnn
7Y1r/akEKWV3AbOPVorK1i1EW3lrdpbW4uUmEMah+1pOEXKE788qqUWlzKVvcc30
5feVla8lt00q5dipSdSjWppzhGnL20ZTkqUbtqjGM6cYVJN6TlPRJJpbr9X/ABbL
rtz4+0rwHpPhq61RNGXTD40aCCI36z6laPd3Wl2N6izXVrc2lrFlyI/+WQMsYikM
dfVngX4ZfATxv4j0zwpB8aNY+HmuW8ltbafp/jC306WxtZPNBuRqOo3Gr2Agkt1k
tjE9rFKs8skoH2WGRpbb4Y/Zx/bV8FeFPjF4j8XXPgi2i8SfEPwdq3hiw1vVNRFz
YeFfFOqaCujWPi6ezks3F/eaRdQxavDC8MqXlziHEYEbH1L44/s++Kfgn8S/GOi6
p4g0r4nWd3caHH4R+Iug6jHe6D461Lx7pkGv+ETpd1FDGiX1/b6lY7LERW5iWIoZ
U2eXGqjlg8PTxE81cVCVOFPDq0oTxGJnSVSNqsWqkIqycY8srRteT5bePiI1MTmF
fC1sLLDRjhKVTCzhCMqtdxlSp16lVNTilCU4xUZO8+aT2Umfthef8E4PHi+BtQ8S
/DXxV8Pfifo1tpcUv27wzrUmm3mt36Mq3RvfPYxWtwL6aVJFiunEog80yDzfOPxP
4w/Ze0DwZo+qX/xi8JeIfCWt3DSw2moS6VNeeH1mkiS5t1OtwwS2iBpJUt5PtDRy
nPDmHzCPDPgV+2R8ef2btG0zXtD1/XR4Vsda0zTH8DalrsUNnrlveay8t5Y2Suk0
Fs9vLb3Hm3UcMvk3MvlSiaHDy/1G/snfteeAv2ofhF8R7rx78MdC8XeELKCCfWdA
8Ta1oeoNZyS2qw3+mva6naJ/aIkkTybVIp7aKMNLJayLEBjz8PxHmft5LFYWlUy+
lVrUcLmFBU6Ua84wc5c6upbxn7O11sp3Z87mHDmPwanWw+Ze9Ou5QpKccPWmocrV
N6csudu791qycfdi0fhl4Z0KDwhpd5darpVnoUusxaNpUXiHSb60W9bTbLToNX0y
+0jUo75WeZnaHZNZlvLlbzriGQwyxn2rSPjmdd1z4B/D34weHLTUfg58Jda1zxDr
XiKzvL671LWrPUEnmhj1KC3QPqk0UjyW7SRXF1G09zKZVFvCQn7HfFj/AIIifsaf
tJaH4a8d+GfG2vfs62XiXRodf0lvh3ol83huLU5YoZ2TUtN1W3/su4ZkkSKOXS7r
T47mJZhFGD5kp/G/9qf4Nftn/sPXtro9zbeCvjt8INGsZdI8H/FbwT4ThtNVstIM
lu9hqd5b6FNDeRa9pUcOozOlw1/bTP5tpqV/ew/ZpK/UuHs+y/E4DBYKvW5XOrCW
DdWpSVWnCq2p+yScac5YqDfK4tNJ3erkfBZ1gsbVjKEIUa2IVKVOSrOFL2EqkPq7
q0qsZ1XCt70oJy5Hu4qTTR5d4f8A26B4DtfjN4G8C/s2XHg6f4v+LrjQfDPjO01S
2ttF0Xw14l1CO1livtMmtIpJ5IrGKWKEyzi2tnnuZppZfJjM3wv+2H+1T8I/H0dt
+zmnw9uvDfwd+Eep/EPxXoV9Z6zHDbeLPiB4oTQtG0vxdYoq3K3+naZomkyR6bGk
bADUr0GOQR75f1j+Enjn/gnv4q+DN+PFfjaf4v8AxCsdIjHi3XtMstc8N+ItD1jX
IHRtPn0uaa1Z3h1O2a3vdWttJvtMiW4i3TW0/m7Pz+1r9gTwN8c7LX/H/hjTbrw3
oNpqVzbaPo3i/U4NC8TzRWs91C1vZ213KiaqZYrO7urRLaZxexXFvN5PlFDH7mMp
zWWYn6nGrHF42nONfCwl7Su6lWvz1ZxTnO8XCTpzjCMbRppXd5M+byTGcOYbMsRj
M4y/H5Y8DiqdKNZSrUvbYqpSp0adSlSnUjVqSWHUoxm6fLCM3Vsm42/F5vEPgddP
8QeH/BWjalceI9T1DTdA8Ma3fJb3aLpN3Jcx6gttBdtG2l3U901vHbzRx+YIrq4E
r22fLl8y1yz1HTdX8X2OqXGpPfwT2GgXN3AtlfxtNbTpDLZ315ZzXECIba1mFu1h
JOLg25ikeUKJT+xlj/wTu8Pan4t+IGmeA/Heg6Pb/Cr4bL4/utT+Muhaf4e0G71/
UJ9PsBo13JeG906WwsjqmmQxS3d1cqb5pZLWOMLKa+Jv2mv2Q/i7+zJpPgfQPiH8
OpdN1vXNBk+Kr+J/DN4+r2tx4O8Q302k+DbjU7e0gOmafZ3N9p17c6VcJeyR32l6
hbyYiniuI6/LY5Di5YnF4FUatbHUaFPF1Yuo5VaVJqg3TVO0pylCU6cOWjJxptyT
VkfuOXcV5RjIUMLQrexjWqwp04YmXLOVX2Ma8ZSqVJLR04004xUnz1VpzOz8B1/X
b3w9N4M0HT9SOuxeDtEluF0HxF4dtNNtdHl1R7m+vrG4hneUasJzc/aUmuHcGOe3
jiGKx7fxnLDZ6Dp0f9t+KfCunT6n4hu/Cup3jp4ej8Z3On3Ftcava2FqhjS3tLf+
yvtoDxXF7FbPCZbeKQY5/wCJXjrxv8Ttem8b+O7ttS8VakLKCfVI7DTLC1ns9NtL
bTdPgW10uytbdBaWVpb2karH/wAe0EMR713/AMI/2d/HPxI03UvEltHPo/hLTpYr
HUtZnjunjudX1LjT9Bs4IUk+16xrUsTR2Nig3FEkupzHZ280se/1KDxdOnKnUlXk
lQozqU1TnCag5QlFe9y+xmqnvXVqbbbTTOzFYzLsswDxua4nD4OLThUVOr+7liKt
+eFKaUKlSUqlSoqfLGM3KUuZXeng8EdxfTvHZobj7QZNluqtvGWAYBf3ph3Hrh3y
N2ScjP6UfBq8+JP7O/wj8ZeK/C66n4P1TXNKi8Na1ezWcpsdYtdbj+2aVpBkn/4l
qyXyQS3UbiCa9mhieWCS1iSVq+yo/wBgP4S/sv8A/CodH+O5vvFuv+PNV0i7+JWk
/D62s/EuseBbXUo4ZvCvgV3eSHT4vHGu3Ekh1nSoDNJpsNzauGYRxF/j39u/xr4j
+K3j7xDoPg3WSP2f/gvfy6NYfD7Rb2DStc0e70+EaLpWrajDqRE3i/VLuWYWsV1Z
HUTpthDqNrbRWltG91c/oFHIZ8M0cLm+aUPrFfE1KEsN7KbqxftPrFN81k1RcHSU
5Skm7KXKrxbX5hV4vwXH+aYTIMuwrXD8HUx2YZnmFGcMNWhgcRQp0MNQpPSrWxNa
T9iqypU5QjGtzuThCXzJ8Sf2i73xhNDrmvapdap4q8O6JZ2FpFPF5umy6yrS2SvM
JjGWFtYtPqES29oLCK5WJI0jkeVz8VvNLLK87u7Su5keTJ3F2bcWLdcljnOc5PrX
UeI9O8R6HHBouu6ddafIjjVGS7sPs9zK2owRvbzzXEiC4kElqqNFC7CKMF5I1LTS
SNyYyeBnnsO9fnea5jjcfiq08XVqylKs6vJNv3JuMYxSTbfuQjGKWyfNypXP3DI8
rwGW4SMMBToxoyjGMHQcXTdKF3BQUVGMYtylJRS0UoqTk43L76pfyWQ097mR7X7c
+otGzFvNvHhSATTEkmV44kKxF8mMSzbSPNfL73UdV1y8W5vrq61G8McMEbzO0rRw
QKsVvBEp+SG3gQLHDDGEhiQBUVV4rutH+G8+p6Tpuptq1jFJqt7JYwaci3c97BLG
FdpbuO3tZhDAIXSVj8zhCcqvBqrqFhpHhfXJdI1i2hmbT7a/upG0+7e4kk1O4snf
RrKS5R9sNtbTiyluY18yZBJdLLJ55jitc54PF0aVOrXk6VCsozUudyu1K3K4xvy1
I88p8s0nbmer32WPwcqs6WFgq2JpRrPlp01dJSjGpZycLxlNQi+WXLJqN2kk1x8i
yXks91e3DG6knVDCsZkuLiWQkYiRAsKJGAqYLpt3RpDE4BC1bmL7PK0DRukkRKyi
QjcG/u4Q4G0cHk5OenStKXWZbi00OxMNvax6K108Vzbwr9qnlu7oXLzXLt/r2i2R
Rwq+QkaEc7iKyJZXmkkmlbdJK7O7YA3OxyzEKAASSScAc1yVnT526bc4tRbnJtyc
3GMqjfMk7qba5rJStJpWenbSVW/vpQiudKCaskp8tJx5Ulyypx55Rk5OLmo7Ru2Y
OM9s47fy6/j0p8UjRuGQoD0PmRpKmDwd0bpIrD6ofUDIpgxxn15I6447dOOcdOvN
KvUfLvycbfmySeBjGDn0xnnqD0rB6766bfLbU3et7q67f8OWImi2xKY98qXAfbJJ
i2mRjGDHL88RhAK4aRZPmRzlovLDttW8v2yHV7CKDTIIW+0anbQ3bBZ7RbUfarlN
M1GaQSmV7W3NulrcyXS3sfCxyX628poCGKePUZop4NNa3itx/Zs0tx516vmKlwsM
joYnkglRLh7eaSJ2U5t0kaFgOi0zT49U1bQdMs9OisrvWdOisFXX7loNPubm5BtL
e/sb0rA1sl5cIzRvKfs0MzSRGaSAM1c9WSS5mpLlvJ3t7jio1bu7s9rXjzJarmS0
WcptWlyysk77e6+VS11t/dTjeKenMlc5VoI5LgxW5dEaJJIzeNHBIT5KvtBLCNhI
xIhORvQoRgk1o2Goah4dv7XUbMxQ31usEgIjDbQ/lTxiRHQBGljHlSeWRvj3gnEj
NJ9UeBvgNF45vNM0S8uNU0q98LW0KavpOv2sNnBrd3dyyyeT4d11LyS1u7ed4/It
rOOXzQkT3KKhuZEi5L4tfCq18CyTTXr31013Hc2u6KGSBdKnslb+zbErNOxuYjEl
tbMCrsEhMsPlgIlYUsXGtrFN046OUlpJuUVDllPlVTnpyjU91OOqs5WbPMeY4WpW
WFqtfvIyUqcrP7fIubW79pG0uTl3atzNNm74Cls9Turzxnaappi6hB/Zc93biwMH
9nXkrwo8jyviACSR5nmeESLuiE/7kDyj+pvwj1Lwhd6X4QX4l6kJdA8GXOm2D32o
PDINWutfmlupbi9dGjgt7TR3EBikE0Uhid/KIZQa/E74d+N7r4beI5mvNMju7C+i
fT9Z0q/M4X7PNlRKUilgBurJis8DSD5JUIK9RX3V4W8d6ZrVlfXN0NJvPCVsviMT
QSDf9u/s3SpZbO2Xz5ok+0WhitprV38yJ98fmebDMM/f8I4+jgqVahi6i+p1K6kr
OmqtOE6TcoYZbxqTk5Ok4XjzKPVJP8v484eqVKMalOo5YdypxpzahOXJUXs7UpxX
uShG8VLmXM3GTb0Z+nHjX9oTS/G9toXjd9QtbYT2MGj6F4bZY47gfEfwUNXj0fxD
ZREvGuiXUGtpa20DWtrbXEUhU/8AHk/m+l/Dj41eFpfFGpatrkVz4k8S+N7fw1p4
8OIW17SNK8e6dotzqfh6ZZfsckNlctdR2FrNDHa/ZnuZL8QyAPLIP5itP+KXi/SN
YsNRi1e5vP7EuL2XSEvHN0lg9wJljltVm3LG9s8gmtflMcEiKUQAYr7Z/Zj/AG5L
j4IeHfibcX9omqeNvGP/AAilhpOovZwrHpsOjR3xm1SJ41jS21CSVNLjuZYog10q
tPM8kqlJPo8NxPh8XmGPq0ZwwNHE+1p0sK3GlKlTlPDwXLVk1yztzVakoy55So2S
SUUfDZ74OY7D4HEVcHCjmFaTpTpU6cVTqc0qytGV4SfJShGE5Nr4nyxfKpSP6F/A
nxQuPh+nhzxle+Er7xr8U9Xh07wZ4mhtxBq1noc3jHWLvW9X1Ke2t5pDBqM0NzYx
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
E1Td7+yjWlTnNcm19EuZLmVlZ7MmrgMvxk8ROeBpc1SrCrUl7OMZVKlqSlKTVnJS
dOmnfdRine0bfqXbftb/AA21a60TSfiV4Ym1WXRdT1TVLa2glgk07Un1qKWd/wC2
yjRSiY3V07yWtvJcIVkYyyIZfLj5/wAH+HvBPxL8Nt8MfCN/4cuvEPxA+KD+NfF/
inVNPtk/4RDwfotsNSGnadLGftUEck0krXQtcteR2scIiMuYq/K688S3OrXw3mC2
aeRYjKT5aKPlzJ+5YbdgX78YOB3xGMX9B8XeIvCuvwanpmpXFhdQyrF5kTyCOSJN
qkHGGeGRGHBOSGHQ16WHrV6MoRnWnVpRq151Iz96TdRRbjFyvU5bK0Un7qelm0ed
jOHsHUdarQg8PXUI1aUITmqPt6MnUp1HTuoNqpJykvtvl5l7qP0P1nRNc+E+s+AD
8TJ9S8YfCTV7jxJN8LtG1PVXtbKAnU1065v/AOzPPiksrS5eOF7+8jEUs1mj2kN0
DHLXLfFT4aWWheIdHttO8T6V4hg1SOXWv7M0uaBDoU2rf6XDFaRG6lWzs4opRDeS
LJ5nnH5opMPS/HLSdf8AiT4S8J/GubxZYXs/ivUtF+HPw3+Glp9uudasrHSdMEur
X88UbSabp1stx5XlhDnVL6+uDBaCe1vPL0PgPrGseAvF/iD4eah8Hv8AhPvinrUS
eCvCWmapZz3dxpmo64Xt57lohEbqSTTo7qV7WO1triaO+aLzfKNu9fS5dWw/1nEV
fqrnSxmGoSdKq3Krh6ntqUq1nBOUL++mmr2ak78x8tUdenhYYudeH9oUqGIVfBxc
MNRlFVYzdRuu42hQ53GriKf7uc03zaWXnGofDHSvCesvZ/EOS98MWT6Na6zp6z2Q
u5dXsbzaunDR4kbddW902f8ASpIooooicEEb63tNk8K3vhuXwXqPhjTPB3i6CWLX
9L+IusanrNrdS+HbYzvZaVpmjKBY+ZqBli8pjbSpIVeH7TGJPNj9N1v9nv4lf8LG
uvgrqvhnxVq/7R2mXdpNd29/q1nqOk+HfDNvotjq2mWLQW73MQuYILuB7i2mlEVj
GY4LoR+VLGPKfG3jnWfEOr6f4y8Ty3HjT4nabcWFleW8lpbw+H/D2j+H55rCHw6d
Ltba1s4Iomt5o4Y7K3FtbRCMCSTzTInbifq+CrSpKnb63B1oUfZxqRjOSlTcqkrK
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
RslUlazlK/o3wp8JeFvElh8VfjV45tfEni3T/FGo2Nx4i8O+EvC7zeI/CN1eTQPd
+MNJ1XULdLbTnub+NYL/AFGQX9ncyXbw3sKFoWr53+IuiWXh+48UeP8AwhoviPw7
ZW1n9hm0n4hzNqA+JfhLXRaKmRG1xpd/cabM4u7qOzKG1txY3tmbWazXGt8ZfEPx
Rl0vQviN8Ob7xr4JstF8FWvhP4kafpurXUug290upzRQXVrZoIbOz0zVrKOxllhu
Myf2okpimk8yMReKjxF42+JOj/D/APZx1q80G6l0/wAYprngv4hXGoF/7OtfEVpA
9xomp3DidZdLM0sN0LRiJ7HU2eHM0LeXXm1cJj3FV3Nwwk8U4YrDVrU6uEo0aclN
TjGbg+ZwjJRglOVGarRvOOvvUq1StTc5YqPuQ96C5lClCdpylGzgpvljT9m7SaUp
b3s/LLTVJtG0K316S0sLm1WW+i8O6roRSy13wf4gtzui0rVRLbolxp00Um6SCYTm
5tZ1eK8E0LWlbfw58KaF4z1ea08UalDbeKr6ZtTtfDuqWB03S9atZyl55+jaxp0q
x2t6QGlWxmtktb6082G1uI55Rj6J8beH/h6dX/sS08G6B4i8e+G7Kez8aSaBaarp
Xg3Xb7TEEL3S+H7N4po9V2R3Md5NafZLWK4eS7hjhbbFH1Pgn4Q2ukftAfCG++DO
s+HNcvroWPijwD4a+I+l22saG2rRSltX8H6xH9rtrS/Oh38c0YstU8j7dbbJjbyG
4Mh7KlaFF0p4pzwLq805YlOnVhCFFxklKUOdRpyg3Ul7tN1IXneElImeJ/c4irCL
hV9m5JSuk37Pmi3K37uLm253jGTT5nqrP5Q8SfAzWov+El1JZtFaLRZpHuZtFN6N
KKuzyh4nubddoCMqxxxII3VfvRkEt4hpWp6lor6gtjq13psjwy208NuxWK/tpUki
uYJ/3qRujxHAjdJRJvBG0oGr+lD4ifsl/EHRfBus/ET4o6Asev8AiTxDc2On+G/B
GhIPDtxf3tnuvmaSwjOjXGnR3Lh4rO38qKKN4Ts/1mP58vjT4D1fwZ4v1CPU9HTw
+11J9o/sMyF59NR2kjiEqgEJHdLA1zBhvuSAFV+UH62f1TE0qWJwjdVVoOqqbtd0
IyUVN8u6lzJpq/urm1jq/D4Z4jpZzVxuE+s060MPVjQp1Y2lCVWnGDq06TnFOpBe
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
5+KPhvSfjF8LviFNr3wl8R3Ul58OIJfGAgf43X3g3RRa3F073PiO1tvE6W+mPF5d
3BJMdPExzB+K37X/AIn8bt4K+Hfhf47/AAEX42at+wT8WPAun+LfjFoKtJ4c+IX7
KHjKSHV/BHhLxR470+7t9Z0qaY/adG8I3FrceYujXEDWpsdYsriS88XifIIZm6eP
hGjCOWV4VFiVT5qNSGKqU40VeKc3WUmqE5UpRjJVIrkXJY6uCM6pU8Tisnqct1Cn
h8bhVVjSniJYevTjSrfvqjoVKlPETp05S5qbn7XeUTm/+Cgf7Gnw1/aA+FfiT9sP
wdpt14C8b6N+zr8Hvjz44RNWi1jwd40sPEOs2/w11e20GVoLGTQ9V8J67aR2V884
1JNVtvst3BbWx+0TR/zW+K/BN7p2sjTbYJftdaaNXs57O4hufMslhuLiUMYZpER4
YY5fMDHfJ5f7pCDmv9EH9pr9i74NfHT4cfsufDb9mP46a78Kfhl4z+FmsWPg7wvp
kS6t4e8c+EPjPFf/ABl+CfhPxbZ3+qxrqHhy18Z+D/EfhFkvI73VU1M2cM8Ut+I5
bn+Ib9oD4LeLvhpqFh4E+IHwl8Z/Db4weHPGOu2vi3XLu1vv7G1rw1eQafDoK6Va
Si2SDUNA1K01+3xZhItS0/ULFofLFmIq/M8w4LwmTYDA0MsxGKnUmq9alTxLlPF4
ik704QVJq/7upQckmvdjW1k9j9x8OeMKuYyzDCYyv7PFYOrCEcDKMKVLLMG4RpUG
6kpRjWTnS99UZVY05VqcfdTPnD4MfGjXfglftq2nRx3Mkblo4Zg8boZEEbTqVYcR
JEyytNHJHLH+5w6kg/pL498X+AP2tPhzYv4Q1DTdD8fXWn2Fx8SPEPjDUoZNXv4L
eNoLTw94U0+/njtNB0eCWKKSSz0yGS61aQqVlhs7WWGL86tI+Htzq3h+x1v7Ro18
bi+1nwadHu7yOzv9Pv5NMu77S57iMpJKI1m/e24O2DzYJbWaTyY5PL5CLwX4osbH
w1rmlx3ttaaub6HTruxklRpbyxmZLm3EnCQzR+WhSFj5vlOP3QHmAfIfVpzrx5Kb
w+MhS9lJRirXqS5v9ovHRWi5RvLmg30bP0PG4bLsxnCtzxo4zB1/aUcTooe3lC7U
o6KcXGnGbg3KLtGb5nGJ6N+0J8Erj4Yaho66NFeXvhu4so30+9u7NrK91aWEul7q
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
uP2Q9QvbHx1pfwoufC2uftUfED4e2mh6tqX/AAjGp3VpDrHhux1u+N5Lfw+F5tXs
7ENZRoIdauZLIicwxxR/R37Jf7Pfhn4y/tEfDz4Kv4mmnj+Itp8R/Gui+JNOvZIP
Enwx+G+i2d5c+DdXvr2GdbnStVS3iheawS933gji+2GazuIjXl1cu+r4h184y+eI
xWOxVPAYGnRxEovDZfSp0pxrTpRi3CtTlB2ru3JKpGCcnGVviKucYOWV4nG0K1KF
GWBxeOjUr4F14qnHDSxGFc6TjCpCTh7WdDCzSmsPLCwbjKdn/VB8KtR+L37N/hLx
3pvwJ+Hnw/8Ajb4X8Q+LNXuPih8c9V0o2OqT6zf2VrciSaFr+5stfs7FrnZI1jdY
3yvNbxBLn936RpHifwl4J8Aad8Ov2l/iz+yx4obWo21XxF8NZfAK65aE+NbaSe2h
Sa3ukm8NW8qXUEY/tOzujbgyxQmQNbSD+cj4eftP2/wiv4P2bPjRd/Fn4n/GWX4r
zeG/hT8EfhZPq+i/Cf4vfDm8m06Hw/8AEW+uYNak026tLq6i1ia90xBb6vBd2jwX
NvYG6nntP1b8V/tRfGHxb438N/Br9oX9o34EfAPwv47u30Lw/wCFPgJoOg+PfEsG
k6WyPptj4u0nWLPxDqNjfx2X2eKO9s/EFjIbqW8hEV+LY2x4sLiMVg8xWcVOatle
X4Ou8MqEXmMI1sRjo4Wlja+Mw7nR+qzpuEX9Yn7eLUayguW54+My2OcQhl9fEUcP
iK8adWpBwlh8djaMaMJzr4TDuNapPklObjOlTw9Hm5qUq0nBJfz5/tsf8EF/iX43
+OXxJ8Y/scW3hXVPAOu3WoeKvDfw/XxJi402zmeaS50jR7+/srITW9repLbWFvqC
W0kFpJZRT3krEyj+b7x54F+IPwO+IOr+DfGei6v4I8eeDtUaz1XRdTt5rHVNK1C3
IYxzQy4bHIKON0VxEVkjaWGRXf8A01/iN+3P+zNL4Ys4Pgt+334i+F3jTwKlh4c8
U6F4/wD2U7rxV4L1S7sbu206K/8AGnhnVfh/o3iy00e+nYaTqWueGvEVjaafFeed
NKJIYZk/nb/4KD/sean/AMFNPF+o+Pvgro/wo1j9oPwz4ftofEOqfC/4g6Yfh/8A
EKys3uUhfw9b+No9B16y1G8lkjt9K0O/1PVL3TpLe40nMsfkTQ/Y4mvQyzD0auYY
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
er+JtK1HUkniVor6WbTbKOC8NzcyXVssF1ezWsVpCJZP5LNYDR3t3DIVLLPJG8sb
ZDMg2qfMBCyHaPnPPlnkEk19/lGMzKhg6lDMcRVq4yg1GvSnCUZYWq40ZwpOq0va
ctqsoyg20rKTclr9fwxQwedZbOFP6w8FzQdHEYjXEY7CzhCMqsr2tSqyjVpxjKN2
o3S1TPpLTtc8deLLLwvq2lHL/DbU44LHxZpc4stTtbG/v7zU7WGQvJ9ntoNPuheP
FNbRRqPtCRSNIRD5n6BaZ8Q9b0HQNa+E3gi2TxlB4o8eLHet4hvlt9d1m3+Mvg3T
/DXiXSr3UoTFKtidV0yy1QOI2gjnisZiTM8T1+RfhHX9a0+6ay02S7aHUpYLRrWB
ZHEzJNutYzEmFdzMqgf8tAV/dH5cV9vz2WmeHtE034k3sZfXNQS2g0iRb90f+2dK
uYt8bW0TxyxTWSKR5sqBhHCuM8mT9R4ezK2Ar1MPLFTzCvSVKrVlio0oZdTjWpzl
OhfmVSpPDqrFqcZSfMlfU8ri7J/Z1MNSlSo1KKqTjgaVGk7e1nKnWpyxiVSm+SnU
9rJSjKHKpzaitbfQupyeD/gdrnwM1jQ30nSb/wAUfDXxZ8EvjP4antrqK5utT1y7
8QeA/EmralLG7rBeWlre2d9bvElsZUsLCc28vnTA8t4Su7WbRde134xS3M8PhzwH
4t0nwJqNrqF2H8Ta18Pb/RNRs9I1G2WNnubGbSmS1t3m2x4lhklkj+yivlnXvEPi
Dxlr3iy+8Srdi0PiN/G39j6hb3S315fatrMP9pwadeTwlEuXRi0ki/u5ooJJog00
Yil9R1PUbHxMNO0DTReaDpmhfEm5u9Psp7CQy2fhfxvaw21yZzNBLI8VqkccZd/M
+95x8zG6vdweIdKMIOMJ4avG1Kviqj9tTnR9m4OEdlzTkoxXNBO1TR63+cxGS/uc
HTxleU8Q5L6/i6UmqkKftZYmnToVIPmjJyxSw7b54qkklK8I29a+JPxD8TfEVPiP
8VvCWtx6H8Nv+F2WfxC1Kx0H7baavoL+PnNraWcnlmIQ2cDaPFpbyRXLO8z2BlXZ
cRQ2/wBJftAfHvT/AIKongT4S6ympWF3a2HxE0GIT6jLPr3g742eA9Oh+JHgq/lh
mkGofZ9bgs7y01AyZkkgmuZMSt5R+Tb3xto/hf4NePvhFLpMc2k6f4k1LStX1S1k
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
4m+N/g2+vdRE2pRC58Q3d98VY9R1exTxBNJbQ2kFhZQWMk1lHc28UUaiKSWRYc18
hmeHxMsLisRWhRqUqOKwsIygqalSlUi1OpJVEk5wdGU4JrkmouXN7x+fcW5tiK+f
rBpz9hSqSdDAyi40qsJVUsRia/O5KME5OpZTspKb5Y8zS/Et7+1+HvxW8dt4v1aS
a98GWnhvwTot3ax2UPhXxb4h1LSbW42Wdlp0cXkR2EZ1t3ltbaWO5urfS4ZpQt2T
X1f4YE9voHjTxF4oa0n1DxL4V1HQLLS7+8WKXS9Ot3sr83UEOJTa3toFWS1u45QZ
pLVCCeTJ5n4y8N+B4ml06ytbTxJeXP7Xni7RvFA8b6ewW30rSlsDfQaN9nfAi0+S
3ur2C7uba1muftDQwwmGOKSqVn41sfGWp+N9b8TDU9G8L6t4n8UPafbpGtYTqKab
E8djp8biK3ksUhubC2kTyv3ob99LJKc1w4eli5QpYhSqYRYWnTlTg7Sr4ltUFUhK
lBXipP2s5J83K4JJ223xeHqYvCKWHjGdOkqMMRKkoJzhS9mvq1GnD3Z8/K5zlB/C
rR7LvtW+G9j4y+Hej/EzV9SubTUdQ+LVuj28urKl/p3hvWbSTTLzWfD73t1FIkGp
X1hdLdTT/ZpLmz1S3hiuYvKjjl4L4weHrn9prUPB97oGq6TbfCX4a2/w40v4hS2V
+vh/xx4TeW4034N+I7ANMZRcaQ1zDBrGoTvDeH7DrEt1NFsiumTym8+Jfga2in+G
3iDxWbK08aalZabaTXNwLuz0CzFlHc2n2W484bBbT20d3tMcaQwS3cJ8zBNfH3w2
/bH0/wCHPxv+K+mavPBpXhH4t+A/F3wt8Z6pHYm+/sXUdVs7W2j1y1htIzHcrB4m
0HStfjure0kuLYSzRW8jLJOT+i8HZvVw1HGU5VqdLA1vZ3quj7HnqTbcqNJ1ZKEK
jvVi5zXMrprSV15OZcF5ziYvGYapUnjcHTrYjC4f6tGSwuAapJ4akvdqOvyupyTi
5v3Yx5ZOSR6F+1JZeObPxj418P6HZ2eu+B/CWqaF451q80TUTAvhW3tpNO+G+rWt
+sjRh5NV1XTtJj1C4dHjVZNPu4pXtLoyn1Kx8Y6zrHhzwd8PfhlcT6JrM3hC6h1e
xsbiWWzurK2mvPEkF7atAMQakdOhnWzvZFj32xurQ/vhLip4S1STVPBGs6V4ol0X
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
ltaPFayySxiSVLeKWfzLnzZX+1tS+LfiHQfh/o3witvhr4Y+OukeENOi+MXh/wAW
+K7HVL6/8NW+t6Olx4ugvrGzv7UzaLYSbVv4r2TZDd2InLm0kaKf5GtUxWXZzl+M
p08Niacq2Jp1JYjlpYnBYLE0vZ42NHGSaU6Eq0qFSnh5XaUqvsY3gkVjMopzpVqk
Jr29WpDEwdoSqSq0WpQr+3xNR0FapNWvRlG0lo7csaWk+NtO8Q/Fv4P3/wAP/hZf
fHex8LaWvha/8Fa5p2vr4R8Z6pDFHY6fqNjDZTQ6orie8WN7eeO3/e2NsPKmSWVa
9gn+CPiP9n/44+APHPxN+Cngr4i23x50rxlKfh/Donimbwv8LbrXbqbSNMu7G40l
7ayude8FXTrqNnpTT6xplqlrFDq9tKZVji+O/DXxj1vVvhpqPwx0LTNdsfEt58QZ
fHejX3gWCa2k06K504WOo6RbWthNFeCxZ4LOWGGGULGglRmb92o/qt/4I/eKv2zt
E/Zd1v4UfD/9mnw3N4q0m5u9b+H/AMc/jtb6rrOlaB4k8SFbfUT4Ws9f06a006/s
9JS6uVgW+hVp0SWSyuIZXik93D1sdLLqtN1cHluDwmNWCqfWY1MRWjSxs4QwOKw9
WhH2q5cRJJU6kVSi5VORpuLl83xBiJ5RWp1lTwnPWoLAPBVsW8PUxdNRdWrVqVva
JOKqz52sJhfb1JxipydNKMfxn+LH/BLHXPgl8Eh45+LXx28DeEJvHr6zr/w5+D9r
Dd6j488R6dpc1xFH4k/sLTjdJpujWx8q1h+2X0VxiclIfKSTyvkbX/8AgnL8f/DX
wc8HfGnxVpWlfDzwh4r8P6tr+n3/AMR9Rbwk+sxWEsPkR6Fb38BfUGv4LiA6eI1T
7Q8gy22aGv6sf2kPhD8Gvglb/BX4hfHv4iaN+1F+2JruqWnwHsrb4XavY+JfBnhX
XbiSXU/t/wAR7fTLL7Pp+tXdvf8A2K00C6isJtUDuRAYbW8uovgn9r74RfEnx94x
1w/8FFvicLTUtTg0K2+Gvwj8NySWkng7TbjUrP7Pc+HtDtbiHTtH+z6dBEL621CS
P7fdXfnXhSaOJq5suzGu44jDZrk+InjMpwuHq4v6lUhKrj61WcsNiKtaXM1gqVH2
KxEaNSMKvLVSbV3f57/WjNMBiMMoZvGNDMswq1bYvL5Truk4Uo0MNlOBpqjVq4fk
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
dSccmwVJYNQxWOyOcXVlPCYnExrZnirYOhhqnPUjyTpuOAXtfg5faTVk2peg/EX4
cax8RfBv7Kk3gD4g+DfA+n/tgfCjVvg745uRpljeWkfxQ8Dara6brmiam9ram3s/
EfimCbSfsUsT/afOZJIY445JTJ8T/H74O2nwU+BOo2cV74avvi58CfjHD4B8YyaT
aNPca/4Z8aeG9Vl0mW/sjZ2Uk0mk3/h3xHoupSXUUUcUc+lCKQyG1ll/Sv4E/s8/
so/Gv/gqp8VPgr8Oviv4u1f4T+ItWtvi3+y6/gm+lbwno3jnxboun+OFtJjG1zb6
dH4VuoYfCNtNb28ep+Ymnx6qZPJuK9a/a/tf2ZPjv/wUp8BaT4W8O6R4o/4aE+Be
m+DfF9np8eq6Ra+Av2xjfeKPDFvo/i26tf7OhbULrWdA0vSNXhkldbW21v8AtKSH
zd0jelmOFxNXBTWHk508lwvJTwdOKh7WpVowVBzqycIwqyoVaiqNr3vqXK5Rsjys
BmVXKsxwdKs8RicJHAQz3Ex+r0sNVpzqOdSnQqPnjLEwp4GpLBTVaclelTqQpc+i
/nO+K3wU8OW3wOs9Q8RLoVp8R9LuPBuq6Zfadqc1uPF3gTx7DqP2DxBLp8lit7cX
Ph3UbFtM1cB7ya3iu7PdDH5MpT5x8Rfs4aj4e8JR6xd6xYXWp3MUV3o8WiGTVNM1
/TWjvGlu7O/WKEC4tJbZLW4tRFJIkt1aCXy5ZJRF+o/jb44aZ8RfEXwC0Lx/8FZr
Pxx+zh428VfCj4xeDbXRpX0VvhRHr9n/AGU975rTXEHifQNc1DxvZ3Ud9lIorHSr
eGceZdbvc9W8HfEfwv4o+LH7F9j8NfDPiP4i+FPFn/CbfBjxNpDaZa6dB4Q1K0Tx
PcT2yXdqftXhPxD4LfTNZNvY33lvcxG5iiYvdI/53h8ujVxVH6xhaUsPRwtaea1O
b97CtVr8sKc1CU3CdOShJSi7+zqc11ze9+p4XivMsnoYehH469evj3Sni6XsKeXU
6tOlUrUqkpOKor2lHFVKbsnSxKUNaSt/Ptrvwd8c+HvDdl4r1PTfL0nUY45bSUSB
mmR5jbuVH8TQT4juNpYRO8YZsyJniW8MeIlspNSfRdTSwiRZJLt7SZIER22K5dlA
2s3yqe56V+63xQ+GnjTXvjD8P/gf4e0X4Y6pY6npGifHTwD9gmAsLjR/G/h+FvF3
w/0aa0v7y11OwsfEWl61EbKD/SbLV9O1LybmKXzIq8k/aF8GalF8XfD37OHhCTwn
rvhTxFqGk/Eb4eajo17PFbaroHiPQoI5fCTNAL2N9TS+haxNlNGjR6tYGIC2lvZl
OeI4Rg6EMRQxVKLnCjKWGhL2kqTqzlT9nKU5Jubai01zbvmSSbX0OX+IuIr1MLha
lHBSxOIw1bNa0XOdP6tldJ2u4pfx5RTcVPkS5ajfMqev483F3eHT7XTrgS+RbXNz
dWok3AI15HbrcbARyJfs0DZB/h754za/Xj4/fBeOfxH4B+A3hv4dafrfjG60PTfE
mga3aalaW3ibUNC1KzF7e+B9diYRpJrOlX63C20R+zXXmr5MMcoliJ+RviX8HPAu
heCtPm8O3Mj/ABAuvGH/AAid54XN7DLeadd28Bmumntji4WCR5LWK0nZBC5a7iMp
mtSBx5hwtiaHtJwxVKqqNCE3Ctz0sQmlGPsbOPJOavGMVCUtHFX0dvpMq4zwGNp4
O+Fq4epjZe0jTpzpVowoVZSccZWcZJ0aNRxm3KUVaSd7tnyB05FO3NgDccAlhz0Y
4GR7/KOfYVYvrK6068ubC+t5rS8s5pLe6triNop4J4mKSRSxuAyOjggqwyMVVr5O
SnByg+ZOE2pRu7KcXZ/NNb76H20ZRnGMotSjJKUZJpppq6aa0aad01umfQ/wM/aA
1b4RePfCXivUtPj8X6R4ZnkQ+H9UW3uLSfTLyKeHUbKNbuC4WF5VuGntLhNstlfR
xXtuUmXNYk/xO1rxXeaNFrV2h0fwr4p1PxPpilHi1G3tdbvLGfVdLt7iOVYYbSY2
Ec/lsf3d1PPNHJiaVD4nU8MlxHv+zvMnnRtbyeUXXzYpMb4XCffR8KTG2QSFOMgG
vTlnePnSwtGtVdSlhZuUVLSU4ySi6c5r3nFR5lHX3eZtdDyJ5HlqxdXMKeGpUsZV
pUqMqyWkadKVVrlh8FOUlXrQlOCUpKo73PpD4n+MtD8Q6Wfh18LvDkll4V0/xjr3
j23jtpXu3ii1fTtF02OKSSaJr949PjsFAkubl1gE5WNAJJGPO6vqtj4fHjHT73X3
8Uat4t8NeE9RTWbmK4S5stYkfTNWv7O5LSTJLdWUcl1YPMs0sUrxE71LtGPF4ft9
pi4hF1AHSSHzEWaNZI5VKSwl12h0kQssiZIZSQRVTG1gHB4xkZwSODgHBxkdDg+u
DTr5rVr16lV0oQo+ypU6WGXM6dJwXuTk3pUm06koznHmvKTvtbOGTUVCGHVW+HhJ
VZJLnxFfEe3oYmVStXqSnKzq0IOUFZTUnGo2kj0fVzBZ2+o6xf39lrXiHWLvR9X0
7UbZX+yT2l3DqX9vwTRPBbYuLa+aDT54gNgeGd7fzIPKuWsfDPxzrHgDxP8A8Jfp
Mlub2Cw1XT5NLvp5Tp+t6Jren3mka7oFxHsmWeC+06/mjWC4cAgBoxLcCIjzJXwy
5G+NX3eUzHaRnleMEbhwWXDdwQQKvKYJLCWM3LJJBL58NvIrFZQ4RJAjg+WJEA3N
uWMsB8hboPHq0MPiVUhWhGcKtKUKsZaOpFr3ouStbnbeis+3vavtjhvY0+SUnU55
QhKap2Uaa5IRpqENIU/cTmkowXPUkuRXt9R/Az44yfCf4u+CPHel+E9O8G+FHudX
8P61PbQanqL3vh/xGs+m31xcX93O81zf+HoLyO8s5LD7FKLmzT92BI0Vf0xfADUf
BfxH8Q6H4T/aL/4KWeMvEnhDx3pN9ovw/wDhF4Hs/FUGh+KNC122lsLO707WRZ23
hvSteW302fTLO2fThqEd+buLUJoppTbT/wAqngbxRoOp3E3gbX4ItJ8J+LfsSX1+
y/bv+Ea1yyhkS28R6WjReda28h/daxaxGWSWxkmEW8xxQH+gv/gnfFrPwT8J6hF4
98K/BvxUsIkvvgd4n8Q6lDdana6k9xLuWw022m8+680sbuK2RVuVntUIMcLsa82X
tKFDHylRhHB4zDYbB4+jVqYj2dVYep7XA4iUsNL2ntMJWd6lRScvY3m56RPznjmj
Tp4fC1qWHlRzihVvg62GeF+veyq3U40cVjKOJcJK0nVVOSm6cLwkk0j9jf2dPhxo
dzY+Lfgt+w7+zDrvwt0bwnc65reoftQftV6rpE+nX3xD8OXV2un+KLXT9bju4rYa
Zp8V5Ja6hp1tDerK/nT6daRadLHceF2nwg0X4g+NfiZ8ZYfCtv8A8FLv2nPDt5pd
jfX+ka/rdl8IIfGd/AVtvGVzYtDo0OveErOOC0c6Pp90mjOkMsiyxmSWOGzrXxk8
DeN/Bfhr4sTz/tMfH/4weC9RTSbj4d+GXu/hd8FIfFU1vfRweINWsvEUWpTXen2U
k8Wkand26W9vcoqi+ht4LicS9z4s1Nfhn8MLTxjc/tZeFvgL8ItR8OXGhax+yX+z
zoek+LfF/i3x54htZGufDGu+MfCN9HqdvfajFJHPaz6jd2FtDai9Nq0NtG7tnRwc
cFj6uMwcsThKlWu80zZYSpTxeWVsfRoUsLVyzF0q9Sc5U8Rho4evh6tevaclKUYN
ual+bThia9CngsXiI1q2LcqEK+LWMWKxODp4mnVpYitiqMp5nXhCcnRr0IvAYZKr
U9pKMKZ+a37QFtF8HvFV18Qf2yL1tX+JcVvok/g/9nP4bWWmHwboOtToq3ejahqO
hxw6Xp2lwl7aZbeNtT1aaSB7XUYm/eTH8Hv2gfh14+1fxz4n8Rap4V8NfDzwPb3h
1LS9P0ua1s9P07RtVP2u0Sy0uS4bWtTvdk3lzMLeRjcu26SOFhJX9ReqfCP4weEP
AHiu90T9nDwJ8CPgVqHhtdWh/aK+IWpaP4n+JdxeailsseqzQfFDV5pNKvdWEpgj
GlaUv2VpUmt9TzIDL+cfx5tvhX4Yi0X4YfCX4feOfifqmmaRLf8Ajj42eMNCsL26
+23t1H9quNFgvL+/0iw8Lm5lW+Ms941uIZIns9QlEyIO6GLrOD1qcv1Sri8RUrYR
RxuJwTdOeApUqjdOnOWFlVjQnhsPSaahzO/LdfQ8M46OAm8ZQjSxFdyw+XU631qn
PA4WFOEPa8mHp1ZYXLeZuSg5VMZi6tWvaqpWaf8AOtqNmLK6khSQTw5JguFyFniD
MiyhG2vHuKnMcipJGcq6AjFQQSvbzwygsDDLHMMMyEFWVlZWX5lboVdckcEZFehf
Eqw03SvGGrW//CRx+L7kXlx9uv7CKO0slk3kCCGSPzYnlgHyTLbp9nSRWRJGIOPO
DgthSduSE3HouTgE9B157ZyenNaUasa1OE4KpyTinGVWDpzlFreUJWlFtbppH7rQ
lKrRh7WL5nTSm9VGUrcs+VtRk1faXJBTTUopJ2X7tfscWHxM+NfxH8GeKPg3e6H4
kn1a01X4VaZ8O/GFnYa2NF8Kr8Pru+8ceIr+DWHj0m0svD93Ne3OnatcRRZuvKu9
oLNFL9KfEb4D+HLrwF8Tvhv+yZ41RPCf7J8ngXxf8U/EmtHSLvWvi58fb7U9Xm0z
RvBHhew1C6bUPDGlO1xY6fqaRXFrLHbxS3kah4bmT8q/+CbPizW7r44WHwL034mw
/B+y+PljrPwx174i38UVzY+GvD/iLTpY9VQwSpvSTU47cWPmQzQEPPGDIuZGr9Av
gt4Vk+CfgmT9p741+EdYt9H+DVj4m8D/AAUFvZW3hvTvi/4u0O8utI0C/wBXvrU2
t3rej+F9R1RdU1O/m/tEzadZ2umSTGICKO5UMJTeErvkhTpYhxwWXuPLRWPkqSp4
uU6fvqk51PY1W1J0aEVvOakflec4DG4fNMV9XxS+tYehhJ4GFPDxnVxNGpUrpUsY
qsaWHxlT2OHxFHDpSlLDznVxtRPlppcJ+0b8Ev20P+Ckvib4lftCePr7wBpn/DP/
AMJdHm8f3mo61B4P8N6cbSK7uNL8IaDpXm3mm2Xim9sre4afSbJLZZdWW7mvTFNK
2Pqv9knx38XPix+wf8Pfh3pv7SPw3guPCnirUPBPhD9nK1NnpXj34hWthq73knh/
xomjXOl6pqFhbWreVo9+k10l1Y3ke+Q3sSRRfMWtXnx0uPhx8Svhh4J+KFt8Rv2e
vG2lWf7QnxzGj3FrpegaH4z8UaZDPq2jL4hsme9dtCmv9Otf7HW+Wx/thBFHpguF
Mg/LHwb4W8efCLx/4R1+b+0vCEevX1vceB/Fb3d7otxp63eppFovimx1KOeza1Fj
cLFcvO9yESJJ/N243r+i5NmkKGNw9WqsRisRTw9TB5nilWjUp0Y1adGMcLhqrdSs
pYSCjGrGHsnZ04NRjzN+BisklnuURy/EY/JMBHJcVgsdw/gMJldOToQoYKTqwqUc
UlOlWxNStKslRpqrRoqPs5uc+aP9T3x++N/wa1DxXr37EH7T3wP+Cf7EHw5uPhlL
4vtvGXw28Dv8fPieusafLp8lvoF7r0fiOKbTtQ1PyNUvIdT062t7+K4sVtxNcyTe
fN8RfEHwR8Av2k/Cj+Hv2e/2l/2+fj38VPh9p6W3hxfEnhKG20XRbbTbWKx0uS6h
bx/qOoadp7B0s47+xlu7m1tJWeaAiMxHbbUfjP8Asm+N/H3jr9nDX/hr+03Fp3w3
0W7/AGgvir8YtG+HvjLwpo/jS+mu9Y1vTPBev+LpLttSuElUW7DTpbkX+Z4XtJt6
yLieAPiT+z54ia6/ak8b/H34pQ+NPE/hRtO8cfDH9mP4LW3w9s9B0eK6ZhpWuS6M
dB0S48OWbraTfblhhMxlEER2W4ir6/E14e0zHB4O8IyjS+r06lRe1p4dU6MpzneV
Ck7cirKnGpOpHm5ZXd5P4DBYajgsNCvljxEoqeFdOtg/rGKjUzWdGm5vF5XiMJXx
mBhi6EUpfWcbTjVUYf8APxnw98Q/h/8AGXRvBlpqHx98OfGWXxt4Vu0jtr06bb6r
cXOk2kbiO4TxE982o3Vl9kCtcWLzzQxBcncCa/MH4gavpOteJbzUtNia4t7lgS8/
22O78xQFdbpZ8sJgeDt+TABySTX7G/tsfDzw9p2j+G/iB8BfjP4iXwP4mszrVnYe
L/iRocLz2M6+bMqadZatdTWd0rSIbrTbyMXVtdBoSc5Svxg8QtaR6tePaXt3O80r
PdTwahDdLNcZ/eym4iMfmmSQyMGZQSD65J+Ez6M8MoUKlWeInKNOblWjzpwb506c
ryulfkV7+7ytNW1/bOB66xeH+uTvzzdZKjRpVcJTw8lOKqUatGV3TaaUoctR3d01
bbjKKKK+IP04KccY45J6+30ptFWnZNJJ3VrtXcbavl7Xu03Z9WrPUAqSKWSCRZYn
aORc7WRirDcpVgCpB5UlTzyCQeDUdFSm0007NNNPs1qmB9U/su+JtO03xfPo99q1
5oTeJrW48Pw3NiYzA6amkaSW1/ayT2wvY5Xhga2ia5iIlikVJ7ZpRIvs3xa+BEXh
vwzdeMLODUU0nS7/AMPaNf3ktq1sralf22rybraCeZHQSQaGZJZH8yOMbQZIxJC9
z+f2m38+l39pqNsds9ncRXMLcjEkLh0OVIYYZQcqQR2r9tvCPxd8O/tCfs2XHhPV
NAhXxTrvjfQNU1rWJpI/I0m70f8A4liag02+N10z+z3vFXTpibaKSd5lSWVgkfq4
Zqsryjz/ALyhGrCNRU5W9rSiqqXK1ZJtO1mradD884rw2PweKwmPwcqk8POtTp4i
lFRaSlUpc9205W9lCck20lL1PJP2MviD4w1r40eGbrxH8QrOz8BLqvgjwB42ute1
X7Nqg8C6pLa6NJpmkF4JJprHTtL0eGBoHdra1ggtwLa5WQiX9XfC3wg8QeL/ABx8
KPAljrHiDwnqvibw74t+NkvhHVrK3geDwbBqes3t7dWuqXaBrI6hpWhDVLaKeeyd
bG6tWs45fN82v54NXnu7DxFJNemfTGsNQGmQ6zo8AjtGbw2sMdtBay2nlwTzEWdk
8svLSY8zkSSyH7i8EftH/tP/ABG8Sah4vsbi88T+Hvhh8OLHwNrF/ZQ2unS6d4Fu
rWLw/Jp8l6sEl1cXetHVL63vpFM13dy31z52YSQOHE5S8RiqrptUMKoVG6DaXPif
YclCLc5OLvWrxckpRvypJ3bOLMqTnTw+Lp1sPhuWLjGU4RShSUUqUYtJKc+eU0uZ
X95LdH1L8Y9f0PSdR1zwv4Z0Ox8IPceG9B0Map4jeW/8KXPjXxPNHf69c/aLJbln
vrl4ZrFNZnuZbWOKWeWKKOGWSW3+CP2rPA2oWd3AusalDpmoalrp0Oz0+6dJNMWX
RbGzjkk8NPE1zNbWU7TGFZfl054onJvHba9fqz8Tvh94f1DTBonh268P6R4PsdU0
n4kQaZ4wXVmTVPD2lfD7wTI9h4YvnEkK6g1zq+naTFeajLaxNqN+uZf3dzDN+Sv7
Yur+DI/FU2keFNa1a/1zwjr9tqPjbSr9Y9RsLjx34o0ix/tm10HWhEph0jQ1s57C
1h+zrH5sdxc/66UV83SisHiFh21Wk50vrK9/93UUKMVL4nFqdWLSj7ytb3krs48g
xrxrwtGlhfq6oRcq9WMHepUapypVaknenCLlJ02otqLSjNrc+a/h/wCH9W+IfiGw
0gB9VtNGi/s++ivbffdRaeLyKC3kXaZDceUZVC3kQ8+2wx8ryki836C8R/APwhpj
WunS2CXseXYatAWFxfzH7U1zLc3BNpDNDaKsYjjWzjuY1KSTZya9B+AnhmLwRp/i
nWdMefU7drPRrO6sdb0u0R/DfiDXngW4vfDPiONmaRIVvbuAp5kMchj/AH9uZ0gk
GP8AH74h6T4F0bTYNJvn1PxDKZbC300PLHYjSTFIb261SODUFey1NzI0ULWUIaa1
2mSWMHbSjgq1etVdBSoQ9vCNClrTvePtantYx+G1VxjdXvCeuyZ9dLFVKuJqYajU
SlKcIr4048yjObbVo2U5JpqTUUmr6XPjfVfg9q9xLf3fhy1WbS47sJpUUkjNc3Vs
d/ms8IM0pkD7FQiRnSLYZVRuV4p9Z8ZeGtQ0m2uBf2c/h5rq70tPs728+6Zd32yS
Xy1uLlAkUIJnLiO2hWALEqEDpL742eLr3xFc63HcvpkF1AtqLKwf5bWHbCjy2xlX
b57+QC+9BE6M8AWNG3L3Nn4N0/4gNa6hFeTWGmWVxaw3Wq3KZvb15LdprieS3SS5
jsfMuiiiBWkDRmMiNieOmH1ynJPFwpyouLbjFSnKk7RTi5K6ldt6297XXa3rznKh
TSxqjVpypuNnFzld6TUrX+xJJu+9/U8O1fxTrWt28UuqtBcuJJdt8kcUV5JOxiaV
rySHa1y7xqFDXCljnej7g2fo74YePJPF+q+GNG8XMs+nQWT+CdNmEKRrpUl9Ms/h
8POGWSGB7otC4WbbtLzTBhbgr8z+INEOh6tqWmkTyrZzYindCm6PAYeau1RuYNGM
oV2k9DkAQQ3d/oV3a3NuPs0uLPUFgkImt5PnW6tWKHIMZTynCs7SLkgyB/lHr4TE
PDypvDqCcZwnFSXu6ct4v7SvFq/LqrK/QnF5bhsdhPZ0YU4O0nSnGHKoKpGN0rNu
L5bXVkuZapKWv6X/AAw+MtmfF0OnCwhL+FPCmq2DWkkMbIEs5FsCsV3NM89xdWsj
qzzK/wC93GIJLFxWKtvDrMWt+Ptc1K0h0O3eSxisDLPFbzy6ReQSnR7iS5dJLeY2
97MbaGA/IZID5kUUe0fBWi+I9Ym8SXeq2l3Z2Oo6jDqqTvdNMIbk39vc+dHJIokk
86Z5itu6mNhcmBi425rpNT8da1eeC3+GzWz+Zb+JP7SdI7cS3c2oNEbSa2LpJK8g
372TYPnbdvUnyiPqsFxDWp0UsW4VZwaxUFNqftKvtpc6Ts+TkpcqgppW5ZJKzufF
VuEJUMbRnhanLGdSj9bc7TcKUrKrJrRWjKNNpptLe8Wmj0W/+OcqagdJ8FabZ6Rp
155UEr3yqkz31trEmoaffx3UcsUyiFUt7dobqS6aaEzRJKm6LZ1Nh8VfBuh+JbfU
daWbxZqUMbBr+0e8aM3gAmsWsrR4woglaWOFgJDKrW6wy5WQmvkHUtM1LR7xrLVb
G702+jSGV7a9gltrhY54kngkMcqo4SWF0libGGRlZSQRVXz5/MaXzpfNYlmk8x/M
YnkkvncST1JNci4hqyjUTg5RqOTi1UbtCVRVIr0VlbkcejT01+lfCuVVKcPZJqLp
STqQnepWc3Fucq9pOSkk1orWto0lb9QfBmu6X8RPEj/ETxbqsuleE9MvNK1G20yC
AR2viS80/UoZBo2qRySeRbFLWa4jM/kTRfZke0g4kAh7zxB4i8U/ELWNY1DwXfWV
omrfB1fC/jGS+W5sdOhsvC+vWN9HbaFewxRw36yHR9JnVQEtk/0iKaLMazSfm58O
vGcGmyJp+vaxrdto32gzyQ6dNb4LgRrGFS63IiNiQ3O3aGSOIBTJ5ckf03qH7SGi
atoWm+CvBfh+4uLaDTLnwxY+H72JnuL9Nes/st3Lp8oF7Db3Lan/AKayIbaS5lu1
EcZmkuZI/rsNm2Fx1KlVrTo08ThsDPD4WVSKpRbcZTnH2cHKVX2rcYKLUnKaUE9I
s+Ax/C2Jw+YxjRws61HDrlp1o00sPRw0uVtVXLlUpNxT521FOKlPljofQ37T/wAW
rBZPBGm+B7OG28SeA4dGsR4esLOG10PxNZ3vgzQWv7ufQxGYm+061pck8ztLL9pe
fzbP/VwSyfkSJ2+2NPJGkjtK7vHIisjOxJIZMbT8xzjGM84FfpRfXml+APCnheyO
pNfX9z4o07Utd1LXLeC51LR573w5a20S20nkynZo832yKOOW5GzywdvnR+Wn56+M
PC+p+ENdutG1Rf36rDdQybWQXNnexJdWd0isqnZcW8scyYGMMB7V8vn0KDqUcTgc
EqNGNnVnGXN7WtOzlJ3bqWk9U3de9bT4V9LwLTw2Gw1XBwW8LUqlVy9tXjCdT2yS
drU4SnGcY357Vb3cVHl/RT9g349ab8P/AIk+INL0fWbn4cJ4/wDg1qvw6vNZ027F
nt1me8WV72e9mOEhvdPa889QuUQyQWohM8so/t61vxDplj8C7T4P/Ch7rVLvT/D/
AIi1HWfGdnqNp/aV7a+KfgZbtqPjfX3tPMSeE3P9o3Tx2ccskpgh0kfv7UxSf56/
wZ13w/oWreAZdMisJfGd94k1vSNZj16BJdDj0C/023sLOXbJbTBb2U3uoxQtC8TC
W3Qy+SJnkuf7Bv2Nv2k/DnwyvfEGlfEmfXtU8W3un/BjwXq1y19GNA0fw/4u8A3G
kSLbLdzxR3f2KC608X6RjzryS0cw/aZYv3vk4vC4rFUp0KNZxq4ijzRVKSVDDyxF
XCpyevL7Rxq2hz3UZyasnFM+V45y/DUarxKwdSpKTXsqc06s8XVo1IUotpfvfZwU
I8k1KLfuykn71+KOu6z8Pfhp8HNDk1BdW8Y3Pi79kb4qeHfGXgiwS9udc0/SPEXx
N0vwjoEMVobC3OjrZXdzbzaY8aNGmrSTTySiOHPa6Nq1nq2s/Ebx5+0Z4cmFtrPi
f9q74bfCLU9Ob7be+T47+G/i3xb4m8T6lpli8sK3U0dtYwLBdQ/bR4hvEvSH8qXG
r458N/C34AfGTxT8UNM8Qfb7v4a2n7J/g/8A4V5PJcroHhzT/Ed6b5tZsYLu+xfX
X/CF2uq3Vq2j2tiNH1SS7mhihgjAr4p+G8V5qvij4n+Gl8WHQtD+FXxl+K3jvU7G
TUobrR9d1zXPD11omg6Bpt1ML+C2ttW1LS7BptVgupLo2N5deV9qLoZfkJRxVdVp
4CvVw1GGJnBwkpUcdUeIpUoOVacm+SSp1YQUXenVTslFNnjYFOtPFqFPD1VSpKVf
Eyp+5CvWSvQws4q0eXmhGPs2m/aO60u/S/iv4D8ZaL+yz8QfjPc6jpfjnwdofwA/
ZU+Gfgnw5rkVxrMw1bVtR+33mrap4TuPs2qWMGo+FNPs9Vs5biMWs1hJJLDYMBGV
/n6/bJ+CHhbwj4t1W4WbRvD/AImi+E/wE8at4c0HT00nSJtQ+JfgHwx4t1OGK1lx
dCW1g1+L90IfM3vGS0cKGGL9p/21PiVrviXwd8QPE2j67qPwkt/D/wC0X8Ivh74a
8Q+Zf3HgrxddfC/4PXXgywu7WzuRe2Wj6Nb21oJokvbYwxXF95N3H51ycfn/APts
+NPCGk/EG18OfGHRtB8S634j/ZL8KQp450mO2vXufHVxoVl4j8PanbvaoNtvaG3s
NJgvJyJY7J5ftstz5sgi9DLMdXxGLoYTF4aWOqxo4hYrGxhHDypujDCVIrkpXw1a
PJzU3Vg1KU1a19vfyGOLwVWjWw9fEwSq8sMthSjJqjCGHdZKooqNVpJynCUnUlNt
OzVl+Vfw38ReLfCEd9pmiWV2/wDwm8Nrb2M9tBI0st3pupI0IgkRWDCO7Typ0Rhg
MC8iIQx/SXRfB/8AwoSyv/FHjrUrxfiXceFtJ8ReBpo97W/hvxfH4isdUigeLfJ+
7uPDsWpW+BFcRxDU4jGlif8AV8R/wT/+DXgjx38bPhXeXGoPeLZ32kX+uabK+nag
01zJrTqloli7s0YkiNq8kKws8kMu2W2Vo5BX3PfeDPEvxb/aFbw/4h8Ka5cW8fx0
1bwf4Q8Rrpscng6ax0+fVv7N0UAC0+xeJon0+PTbaC0tY7b7PNPD5csMEMkv63lG
Cj/Z9WrGfJ7C9SMJ2ioSi1yqPNafN7ODc2pcr5or7R53GWa0a+bvAwhBU403icyk
v3davKk6ao0Yc+y5IKNVQ+KPNoruJ8neF5de+LfiLx9e6HbXXh/wp4lnb4qeMvDG
t2TW1pres+Fb9bu/0vSZC8S3E129/ew5VPMktr02zDzIQY6/xlhudentrDwZLpvh
/wCFDeNPiCukpo91aajp+kQ+J7D/AISCLw5MEkjiMlqbC2gLveJc21yscRL3UUGz
1bXLa48efGXSfDPh2LUNC0y0utd1qx0u2sRI+r6Dq0kcOoQ2N1aPJaodRu4UNtaa
hHGtjcKmCZcA+U/EnRPFKaJ/wqbTLQazpUuvaz4j0TUPD8Fjf3T6Uj51WPxHFagx
re+GoJJpbm7/ANHktlE48yWCSSvWxzbwtCU6kXVoRpzjiKTVqcZRlCyVlJzjGny1
Oa7cVOzaaPBwnNVx9CupUqD5aTp4Ka/3em4exlVrNx5KtaFOKlCUrNLmV9zwPwX+
0lpfwU8H6jD4a0xdU1zxNZ2kGoXd/JNFDsMTxatYulrIXZ7O4lgutOuXYSSiWYyo
nMVcfJ+3J8S28L3vhmOOK2gnt7mOIwSu9sZLu4czNeWd2blbiN7GQ2LoZMusNrJu
TyRHXgnxR1u/k1m/8ELbx6XpHhvWbyK3sFlDxLqMMMdhqGoLLK8kijVjafbJIElk
Te8ax5CLnyqzsbrUJ4bW0heaaZhHFGgLNJI7bVRAASXdiFVQMscAckV+d5ji+TMc
NiMLRp0MZg4qNLERher7advaKNST1V5O146Ky7W/Zsv4eyqpg3Wx2GhN1508VNVK
3tIcsfeoTvHlglZXa96O+vZb+7uL+6mvZ2ld55CRJK7yNtX5UQyuWZzGgVNzMzEL
ySau+HrjQ7bV7SbxJY3uo6KBcJe2mnXaWN44ltZ4oJYLh4pkBtrp4LpomQC4SFrc
yQ+b5qe6+Bf2aPij4w1bT9NufD99pWm3UixjU7z9zaQfaIhLBPnZIS1x5lusKukY
uTLBH5y+bEa9I079jPxVf+Mz4Pm1fT4C+lDUdO1m2dbiyvTgOLSSFHkuIbpFfy7k
gNFFMixGVpHcR+DVqc9aanUk6km5Tk7u8pP3m5K63vrfRrlep6tXOcqoqWFniYwU
aMtaMpWjSjFxvCpC3LOMVtF80Wrra6ufs0WHhfxZqdposmi6ndajpEsUOheKPDUs
uj+IrC5udZi1Gzm1iztZvM1yDTLa0vLxWtxMbdxAsrIkKsf02+KHw+/Z4+C3hPw1
HqegaZ8ZLP4V/tJeMtL8Rau/huCzn1zw/wCLrayvEXXbEOVisbhvMfRbNxJ9nmhu
zaOZZt8n52+DtM139g345WPibxfbnWbvSNI+0WKaTYJq+ia/Ya4u0W1xNdz6akEW
qaK9zbXqThJbOG9GI5ZuK+6/gRB8KfjpB8ffH39rWt60WiWuoeAtJlaezv7bxjYX
ljqFpZazo0brZand6joovrSzk82UG6sWz+9ZcfqnDccueUywNaMKuJxaj7XFRrKc
4QrSVFR9ikqsZKHvOcVzU27u3un47xnPF08wpZ1RxONfD0Y06tOWFVSP1jE15exn
TqVIJTp04QrScGnGm3NtQlKm70/hb+zL8GdC0KHxhrEDarpXjzR/jtpnw70XWUm8
NtZeJdB0zTb7wXeLBc3Rv7v+0LrUSlnHfRy2k1vJmOKbypRD1etw/Fb9p/XpvDWl
6JqukaNomm+Efi1qeoyTz6RqOkaH4Ei0H4U+ItS8MwXEv2HXotMtZLjVb2SzjilP
2C5mhtpZoTE179qj9pPw3+0TpHwX8B/D/QdKt9Uv7Dw9oOpaNpMkHhvXPCXxS8O3
On+HbjXbx47VxJa+KvDtvpmYHlQjVrQT/ah5fkUnxW+Lfir4aQfB/wAOeD9dvvEd
38Kb/wAc+CNW0uXT7qPX9f8Ah58RtVOp2Ai8QS28rTNqcGta1ZC5nuZ5YtRFneYk
nsYjD9VQeWYDE4XL408RWcaU6MKsbqlXSVNc0lJqHtFLkhGopKTTjfWOvw8sRm2K
r4TE42nUhmeOni40Vjak6sMvw1KUnTrwd+RLETjQoKdSMOeaVa7jdHhl14k/4Vdq
fjD4N+E1utb1/wAI/Hvxt4KgjsYQ2u+JvDPjjwvqHw7I0m3MF3cyJrsMUyvDNJNB
FDcabJaLcmWUmr8HvCd3pPx2+E1/8V59I1DTPif4Q8X6XoN1KINLGgeK/DEXiTQt
DsdVNrBavPrtp4g0HT4vkXNzc39qZc3nmOOn0vwV4f8ABvj3wT8UvES+Ih8Q9S1/
4m+A/EumeKZre2uPhx8V/D1xBqHwwvrq9tInuruZ9Mk0S8jmmtHa+vE1G1F1CALq
P5o+MMetfEuD4ifFjQxd+GJ/hx4ysdW1bwZ9muoLrw3qfjHV9ROuXmi3SeaUsrDx
Fa6U9xb3Esd1bDXLIO8wE0o58TmtXDQhUj7ROjj1XpR92TqvEU/YTrOLunGjOrF8
l3yyjCcWua57+AwtDG1K+FgpU6WMwUaGMzOpTcq1TFVpVcJy0XfnhTeKUa8a0bU5
U5xS9xxb9q+Ifi7VP2h/EYms/EGl6fq2s6TdP48+yXlzFPoNna3TQapZ6lpd1C8X
kQX0lxq1kYtknl3kksRRpBHF9QN8TvAXwG+DP/DMmtQzap4U8baXa3HjvVj5qw63
qs+ltBb6lo98E8+Kfw/qVroOvW9vqFzbiSyl1CCL9zLKJfkHTvFfg/4Y6FqFrpGs
WeveJviF4A+HnxKtdV1qzaFrq+1ix1XRviV4T8+T7Q8zrBq95EHjSSFLnRJ5cCeO
HZr+GdAi0LTtT8c+L7u11q68FazceF9R8LyRwebpUWoWRuNPnkntDHDIrRObSNpo
8W0hgEuQSIrweb4lLF4mglVr1qaeF517SNG9OlFTcV/DxFKzvyvmTk9NLPzswynC
YmjSwdWjXw2WYCfPhcKozpV8VjoQpuhiaNRJTpxw1WfsacmpRUo20mkz9D9Dudf+
DH/BNf41a14H8Xavd+LfjN4q8IeIryfxAbaHxLbaZ8Htch0zWotNWdftM2oWOnX/
AIangDreiHRtQ1CVZFluZLgfOvxO0/41/tTftAeAPi14m0vxh8JbX4j/ALPGkeMp
PEeq2TWlh47Hwj+G8OqpqNk3nLa3On+Ir3wqsOmvaiMSiQRiMytNby+O+Fvi/dfE
H4z/AAz8N+P/AAlb/ED4PXXjnw8+q6Vqeo6jpNit69rY6P4j0/Q7yCe1tbHVdU0X
Tobe+gEqxX93Y2pnllliikHuf7avxZaWb4S+AfhV4k1DSvFvwC8Y6z8MfBdhDFqo
8KeJvhDr2sXWqeEtVui0zQ30+k2t82hajb774xMB5d0q+XbRdmIxLrYCm40eeWGX
tIVI8qlWrKpRnOjGEVGdG31ejS+Nymmo3j18TLMvxOVZvDC14xnm2dxzTMZZtWhG
dPLMLi8PRw9PC1FBuMlhqmGwsf39KEIRanCLabJv2kf2lvGX7Svww+Iuk/D3QdMf
4Z/DL436V8YtSvxqT2nljxJpcPhdbGTT3kjFxaXz2vnm4tJAqXEsoKQwnzJf0P8A
2q9H/Zi+BX7PX7Q/7Kv7Omuah4d039pzRP2N/wBpD4d6Ffa/HqElu93qrHxLPbXR
u7u/v7/TIYrqDVY5LqSG2azTURPt3yv/AC7a58Tvib8FPGnxO+Fvi6W1luLfQNd+
Eviyx0ZIbGwvZrLVzcxahdrb21murSWOoQJNG1zFGLgJGZxJg7/Lrr47/ES9s9Dt
LzWHu28NeHYvC2gX1wiyajpOj2up3OrWNtaXcnmPGtjd3dwtqFx5FrILWHy4o4wn
zceOcveZ4zGZnQxNGthKqll+FwsVQoQqctC9OpTjzv2cKlKcp80pOV01zNtv7uh4
TY1YfLY5PmkMJgMPXhmFH6vUnOOMVelhKqrYqVW9PEy9vQlUV6ULU67ULXmn/ZT4
I/Zw+IXwn/az/Z51741/tE6R8fYf2ov2WPHPw20/xFqOl2FhOlm/wY8R+HPCNpeQ
3t1q8ep3nhnX18NiDVS326e4kiS4tz5c0cvh/wCw74t1P9tH9qT4SaB8aPgZa+Lf
DEf7Efxf/Zh8P+IPG2kLqnhO7+KPwH8J+LvGPhzxDomomOK3S/0o6f4a0rUoxcpf
QJrE7AwvPbY/Gvxn/wAFFdY+KPwe/Y+06/vvGWjfEP8AZo8WSLqHjHSoDPY6dp2p
6zbX0OqSand3bTTXkyaZF/Z2l3CT2sCxXwNwsb/ZT+hP7HX7Uth4B+Gngvwr8Cri
Lx94t+GX/BRLw/4k8A23iLX4vD11458JftH/AA11X4c+JPCtx5BMGnw6peeG9Oku
b9bg2eky6nLeTWkZNz9p2yrPoZ1TcaNDEQrYiE8POliXTh7OnhfaJVbWlKUK1H2c
qU4yXNGm1bRxPj824KznJaOIxOazw2OzGNOeHw2Kw9GOHoUeWviYxrzlRjSw9Kc6
OKwd6coK0YTa/mf0hbftufB74/r/AMEl/hR4u8J6Xqei/Bb4rfF3wz8a/hzp9jqM
Gn6B4P8AiT8SPA954amOo289tCthc6H9s8yCW6juZtR0u+hvbS7tpx9p7b4pfHf4
afsteGv+Con/AATo1z4bXlvd3dp4V1z4aDQtM1nX/wDhJ/Gvw6+Kmi6toepXUEFv
LDo41TwDqr3N/f3DWFrDFoseneaTeWin5n/Z98Nah+zX+xb/AMFCr3W5dG0v40fB
z9tr4F6XFaeVpc+uQfZ9f8aaL4s8L6Z4lFtcy3NvdRee4FtJ9mjk0ma4h2x3RJ/T
/wDYl8SeIPE//BVD4mfFv4u+C4PCvhL9q7w5rU3w9m+Ii6bJrl/4M+K+ii7+HNvp
yFngvojbwaXZpLa3PlyW9pPCZJZoTHXu1KX1ebx+KtRqYOp7PJsDBVIKVKFaGYU1
XUZKMqc/bV501JW5nyvseZW+pwxCqU39fwlGNWNFzxMqc8RXrVMHjac8P+6SVGjS
xlWMHFVJRw9JSjNu0j5+/bZ+Jfgjw9e+Kfhh8Ev2XrXTPCH/AAUX/wCCe/wo+KVt
a/Ba1vLw6d8XdD8W6D49WNvDED28UuhfD/xD8OvH+mawLayfU9O066W7lS2hbUtO
Pl/xg+NHx8P7Mn7CfjLTPBl5qXjn9pb4DftI/sNfEL4V6ZbPpp8X6/oGqf8ACDeC
dWWzsklnv9budGvvCWozw35uLqW/0PyYbVZZjIPoj9jj4gftB+I/HH7Kv7T/AI41
D4UWHw7/AGEf2sPiL+zX8RNQg8jQ9cj8A/tD+IZotYg1fRHgi0jTdE8P3urazoOi
3jXUQkuNYuBHZ/a4b6+uvhH4hWXxW8QfDnx9+0L4g+PWk33gT9h3/god48m8KWlp
okLeItD8U+JfEtnqmma1K2kJFpsHhbWJfANtbadYpYiyGpjWjxDLED4mHwtKjj60
6nLVoUpV/ZOUpV5YbMMXhp4eVV2lea54YJ3imoqN7tbelWeGxX1ahVo0njsPVcaz
hRxM6Vf21OrhsJh4Tjy2dfmwM5vmhPkhHW8D2TxN4s+MvgL9jz/gn3+1VNd6NoX7
Rf7BH7TOofszagPFN7bz2w0V5H+JvgG18aW9nfWV7BoNro1vrXgq6tdQubS5S30o
WtnLaT25mH0Vr/hjx/8As/8A7HP7RPwr+LvxxOjftE/s0ftIaF8arv4hfCu4+1aY
vwC/b08MTeF/HPhvwlHIy6ePC+rXOq32rzWKPFp41HVdJRbm2u5Hvl+e9U8K/se/
t1ft8/H3wL4Q8a+MtX+D37YHwwf9prwn4Q+Guv3+iaLov7UPg7wNq/jLxDo/ivw1
qF01vqOqXtjF8S4dEkW2zYav4stNOjhWxub2WT2X4F/Eb9kj9tf9qL9hPwf8TPh1
4q8X+H/HP7MGrfsf+P5/FNtrGjafZfEH4QWF8/wN8Y6pqem3EVl4g1PxDp1hoelz
WS6nMbLULy0vJrW1ntoxF7+CzKtgK3+1RqzeFwEK1R0Zww1DH4irOrio0WuV2qLC
yxuGjFt+7V9zld5Hl4vD14xwuFp08Rh6rxkMZiY1MFShVy6NarPFqjCdWc506MJU
MZTUW401KpGT9q+WkZOgfCb9kb9hjxx8XP2FNZ8a+PfFnwj/AG5/2evC3xg+HHxN
8baFo8HgSXxFpXhi++IfwH+IGhahaPeXqS39/wD274HurdtPJu59UuLXUDLDYxMf
APiVq2geGvBvhHTvhJ+zraWHhH9sv4GeLv2evip4L8NWep3fjDRP2kvAXieC70zT
Y/D9zeR3V7KfF2meAPiDoEEypNFofiCS08yWWJxcT/E/9rP40fFZPgh4V+HH7OGp
6T8aP+CbXxX1LwTJ4obw63iPw3oPwfuPFOhy/Dbwl4nu9QhuLvTk8M65o3iDQ9BX
Uv8ARbaxO/Tn89LwP9b/APBRbT/2ivjh+0/4o039n3/hFdK8CfFL4Xfs/wD/AAUb
8AahBf2HhjxR8KB4G0weCfihF4X1mGS1t77xFqniq6l1DxRBPLc7tM0/Sr0SxnS/
LPiYWrmmDxOGq4eanDKqdfNqkMXWliMTHGSqunRcoL4XzfV3FpaQpttqzku/Gyax
+FxdedP2teNGGZw+stRxNOlS5qGLl9XjZVvYywuIhUlrNULQ0aRw2heH7n9jL9ln
9ij9vvwb+zda+GfiR8F/ijefCf432Mel6jY6vqEGm65dX+meLLwLFHIsmuWUOuaL
caxc21wYpYNGtz50CtHH9pfA6fxl+1ZD+3v8ILr4WQfAL4g/FHWPEX7aP7J2rar4
e0D/AITjR/FFnrVj4ogt21KGW7a4udb0m40i/spbe5iihhudTktpmtkjr86P2kNE
/aN/at/aY/bC/Zs+Efxbsbf4J/GPwL4L/aQ0Xws+ry3GneMX03wBoHj/AFbS/Cd1
ax38drJFr1t4ks72DTII4I2sdT0n7NLE0UVdND468MfGPxT/AMEvvH8fxug+FvxR
+H134e/Y+/aEsvhf8RrSy+Ij+DH1TS9K8H+PdGNnFcSSLqPgvWtY0PxdqWp2JFo2
lQ2Uh8mztTcezhI0k4Uak6dHG43lxuKVKFWaqzqxpV6ELuVlBS56M2nFNScbpXZ4
uYYb67hKdZVIurCUa9Wq8PXrVMHhqlCGKwsK93yp+0+sUnKoqipuMYzkj5S8DaF4
I8beLf2kPjl8c/jN8N/BVr+3B8Kvi/okyeF11bRrXR/j54Xgi8Y6XY3RuoI4NM8Q
P448Madfarp1rdXMd1pvjX/R/s51XyrbzH9kyy8Dy/Cz4cft+fErxv8AFrxz40/Z
e+NXwa+EPxG0y3g+0aZpfw3SNl+GFtLPNdWrTeFtV8NeFta8HXy6mknlXNrZ6SYZ
LKa2J9e/bs+FHwA/ZYT9vb9iTxf8TbOzvfD3xV8EfHz9mW71vTdV8Q+IYNZuNEj/
AOEg0HXxbwKB/wAJt4N8TabJdapcD7Hd3HhyJ47Es8SWvnsn7QfwF8F/so634v8A
Dnwc1ybw5+3j8GNY+F/j/wAAeELth4b+H/7UfwUvNC1zwr4l0nSo3KHT7/XrLw94
w0fRma3+w+G/GPijw9axTQ6f5V/8vifqtPG4qtUr18PDE4/2k1RjBOnh63suTD1F
KN8Qo0FrVasp048rT1PsMEsb/Y0ufB4qcsyq0MNSnJ06FOpgqeCouFKjpFQ9pgPa
U6kqc5QdfApSlaUDh/Cuk+CfhV8S/wBr/wCLvwz8FXvxgf8AY6/aAg8W/ArWv+Ei
1J9Ctfgq3xhvNO0nUtBe2cx6zpy6hd6LeR2K293bSabr+pTyRR+ULqPtNC+HPgv9
pv4xftQ+K/APwO8XaZqd14X8aftZ/sr6zrGiar4Y1bVv+Ebkj8WeKPh0tnaXs2l3
kNhYw+JtQ8N3OmyeVc3fhy6ihjAv/ssXp3xm/aR+KXw/+Bv7PfxX+EPw48KaZoH7
WH7PF9+zz8U/Dml+G/D5htPi38PdYvfh1f295NLpty1jrer6a3gfxRJDPFZS3Wo3
kszLc/vLm2ofC/8Aa6+PfwQ/Y+/Z2+JXgbVPD2n/ABy/Zp/am8c/ArxB4S8YaeLt
Nb8KfFPw/qeqaBbeJNNN0dVTSbPU5/iP4d1SWDU9Pv7RJbKGSWLb5EeNOhSxGJzH
CwpUaNHHYmhiK0/rUnyU8PBqlKlUnJqiuelUg6EFabnyuCckjkhTxVeVPMIciqYr
ErLKVZ42pKrh6eHpUoVqVeFJWdB4/ByU5e7SccdVbb5+Y8L+D2j3X7ZvxJ8T+L/D
HwpuPhv408eXN34o+BnjLRpp7q3sf2lfg74Ks/F3xI+GqJbSWQXQviJb+frGnabd
W32uw1GXTLTTpdQii1AXPkvwt/ZrtvEX7Q3gj4kftCvpw+FP7Ydv8R7YeNPC2m/2
do/g/wCK2s2Otx6Xo6f2s0NroesaJ48itLN7a6u4Et5JF82UwqZB9f8A7I+kfEn4
YeCf2+PgZ438YeH/AIXftFeG5NZ/aC+EmpWviLQ9Lv8AS/iv8L3u7zxjoGl6fKPJ
02bxV4PuNSi0meOO1e4bTbNoZblYcxRfCTVPAeu/8E8fjN8Lf2gtf8nwt+0NpHjP
9oj9mb4tamLTTrnw5+1J8O5JNO+I3w2luLZprQWXiy/tvDUQuZbnS7WWG+S5fT7C
fVRc23rYTGYF0/b4xqFDB42rGlUnKEqUpUaHNCtUglJvlU6cpxp8zjyP35crTnFU
85o43GYfA1YLA5nVwWTZe8LKrWxFTLcRhXJYvAV6jlZ4enCliY0YyXtauAxE+SHt
vd/mr+JWt6x4x+JPifxP4l0WeQ6Zqtlp/ipNOja2k2aO1toMs99cbZ47bU9UNlm6
u5EEUuqTyukQ3CMcJfaUkl7cRaLaard28j3F9ppltHWafRIxK/2mSFFLFoViZZ5o
iYC0cxBAUGti+XUbS3u9Ut/ENyL3WNQ1TRfFNsLmdX+WeK6A1CdLiddUstRK/aVe
R5o5Lm0mOJDCs7U9Jvry0nW9j1+/0y+0mAQ6ZJbSS/aWsLmeSzvbaxkE0Rgxb3V1
J5GfLnjeZTgMXb8nxfNiMXiZValLlr4meKUoKHPKM9YqEk1F2hNylTailJKKtNn9
OYWCw2GoUqElGnhKFPCUqVqyilShTpxVSLjKTtONlOLs6M1OzSjIzNH0bVtXv7TT
dK0yS91O6ZZrK3EZaW7VHZdkMMrCGeMurbxsYERSAsESQV+mXwj+B+t6ZpWneNfi
l4z+Gmi+Ab3ULPQte8J6R/Zx1rwvJq7xJYanut7OS0W5hctH9nuL6+a45RopoxJL
F8Aa1pPh+w8V6cvhrxhqd9pUkNvJNrM2l3OmarpkczGCWKa2hupGkbyXJD2915cs
MmwlSXQf0bfsV/Bz4Gap4W+HGp+A/hX4x174afE290/4PfFf4ia4kGsWnhL4r+Id
Pu7v4a+NNR8OPC/9l6PceKIbBI70TTeRpdtfQXkxeQCb5HN6eIrVcHRw2kZXrSqz
p4d040YQhOSqzrTUaDlG15RjOouXW0ea/j8SY9U8snW5lT9pTUaUnT5asZ1Jcs6c
J1vddWcY2owjTcpS0ScZxZ5t4T/ZE+H+ofEC6/ZpRLzUPi9olja61Y65pfhCxsfD
Hi3Tr21XW9Ltrm9ubm4tLifWNDnt7q1E4tXuS0YzHPIkcXivxo/Yw8C3Phzwd4qu
LC/s73xJ4j8ReCn06Lw7Jp+uaH4s0iSG3h8JeLYIrqJ9CuUMsc+kX1+I7TUrCZRH
JJLCRF99eIfhh8YfEXw11L48/Ejx7dfCH4s/sVeLrK98aaRobq+r698Pj4h0y38J
eL9K8OaAfs19pmm6zcRaLeXF7dy2k+jXummKeS0hMlfUPxV8G+FPix8TvDPjfQ/i
94z8D3H7cXwR1/xD8NIrC1urXw5F428IaHbudaNyPPbw5f6rqOjQtfaHDaytLHLd
Dzrg3Qki5KNLGShKvPEY2vicXKNW+Gp1sTl9DC4NRhUaxOHoKnBcj56fxNxbjdH5
/HMMVQxFHEPMqeHwmAw9eVZSqXrV8bQpc2Ip0kopSo18PNY2mkm6caM4K/NeP8x/
iz9jK4a9is/Cl9fxajqf9q/2PpWoaXfbp7vTbk2k+j3U20my1a2u0mt57KSJrgLG
j+X86NJ8heJ/hl4z8JzXCapotyYba+vNOe6tk8+A3dgUF5D+73SK0G9fMDINmecc
4/qi8GeF7P4++NtS8a+EPijpV/4g+Ivwx1258PaX/ZFxa6RqPxx+DHh7TNc+Icuk
arPayWVpB4i1GyvNZ1XTLuKwuY/+EkufsklzD9l3fGf7Snwi8TeNb/xp8UfhH4E0
vxH4T8WeEdH+K+naOkFvJfaZqdrosUnxS8P6RfaZcedeWGk6umqPaahiQXdtZzTS
W8PmG2stqOLrqjOvCSlGpjZ0cLSxcpUJzo0uWE3D2sITc1JSsmpKSi5K6Pp8o4kz
F5i8BXXPSpYWFevVrNyVOpVlCMIKo+SSTbqKOko2o1G7aH89ytLbyo674ponV0OC
rpJG2VYZGQysufYivqb4I/tKeM/AfiHQbe712eHSbK+ku7S7NrbX82m6q4U2V8kd
/wCZD5MNwMzwALBIkrF4m2Jt9X17wH4Y1C08Kal4j+GWp6IvjuxnuJ9b8/UY4NA1
+wlazm0y8T7N9mtbK8RIr8yO/wBoAvo2EkXlyNXg3xL+DTeFPtN3aaVrulW1rqKa
XqEGqJ5yWV5cM0tpPaTqiteaJe2mJ7S9O4ou3z5GEkch9KGKdajUpSjKFOtN0JpT
pzjNrR35JtrXTWzesdU9fpcRisvzCnHDY2g4TxEa9GnNKFRxcb06rg17ySvfWDTT
Se6v/R3b/tGaz8TbTwd4i8RyfF74y+HNL0+00nXfAHgnWNJ0bwzqcN5YQaJrt3b2
0GlXIv4LwtIn2K9aOa2u2tZ7SYKcj1Twx47vT4s0j4O/sh/sWXHwp8H+J77W7W8+
Luo+I9U8f+IvEcktkH0O5vUvdHmtNKm0C41AC+sWW/NkXEMUkDefJX8w/wANPif8
Uv2bfE7QTw6zb2E0K+bpDXd9YW15Y6hE6i906WB4SVuIHMkE0EiCVwpSRZQssf66
/Cn9pDXfAvgmx8ZfBGT4j+I9evrSL7DDZ/GLVPCsWkM4e9ubltNtZ1uL5redpbee
MS2t55QFpNcS5asaeDioVsqzBt4SrhqlWtjatJqvDE4PkqYC06bioVo1HThzyhed
N2lJ2Pgsbw3Wyr/asnWFxLgnTwtGrOtHAyo1VF4mWIoQxNGg5pycrTjK/v3XMrn2
x8YvhN8dvHsGiyf8FKvi9qA8W+HNQEGhfDfQfGml/wDCU+LPBOlfZr2bSv8AhCdN
mjsbK3vxDstr6OCOTzZYDcW0pEWfkb4r/tRfGv8AaB+H/iT4G+E/hdon7Pn7MPh3
TYtB0LVLC0m0/Vbq7SSytNNXxBr9w1rN4wvmSRJZNJsbecwfvLtkuprQT1S1D4je
LLfx3Z/FfxVb/Afw7rviGT/hJZPiR8Xta8SeMPF8fiCVILm6t7fQrfWdTttRumvY
zGHuNK+yS5IkjXDCPf1PxO/xs+Ltv49sfCnij9q7xjZ3atpmhS6lc+H/AIb6Hrlg
kNx/atvoEIt78eHLlBE+m7o7C18rzZZsxGMV608RiuRewx0n9eqQnhKuKoOtLKuX
klUw0cR7G0KNWyrS5XU1vFXlKx81KMaao1cRl+X162VQniV7K2GyimlUjKNTC4WU
4YP29KCi44jFV6lSmoe0jSd7P8WfFXwUi8J+HPEV5LZaldaNYktp/j/V9Pu9Atr2
/hmmt5LDTNNuJTNdWd3JGotZplNy5BlNvAZjBH8129pNdRXLwozm0i+0TAdoAyoz
D1KlgSBzs3NjarEfrp+3xrmueLPE+h3P7S/jfQPCniDTrfUD/wAKZ+EEOjanp2jf
Z5YrTSrIW1hqMdho1zBarJDPLqbTXEbLL96WSbd+Vut3NlbpAPDZubDTNXtXa4tJ
btZrj9ze3NukF9OixByY4Yrhk2RwnzvukDI4Itxk4805SnUlFzcZRpc9NycnTjV5
aqhOMbxcopS1cbI/W+F8xx2Y5ZQxOK5ZVcTL2kZ0rzwsaXM2lDENQWIqTpxcnKjT
jR1ik42u7Xh7WrfR9Q8OarpFkY9W0W+stSvbqXdIsktjqAuYngRXJhQxCG3k27PN
IfehEmR+83i/xj8ZPi34J+AP7X/hQ6F47+FfhLx7qH7N3gT4EXMt74hu9M8ZvoK+
IL3W18HFRby6VqWpa0b2F51upZdRs7CLUY5lni878FbLw5cGyvbtZIo7S22297fz
yrbCK6kDFbC0ieUSXcjtE6O4jMePveXmMy/b37E3x2ufhZP440i61/xBDdXXh27P
wds4NQhsrCy+Kmp6tomm2+sQLebmtb59P8xbe5soxcie0s90kXlnJDDRrYuljoxn
UxOEo16OEj7RQp8uIlTlWlUhJqE403TVWPMr81NR2kZZ7hY4uh7SjVuqFWdOrTmp
TlVhiKUqNSk583PQsq1uePLOjhnWcVbf9OfF3wq+HzeD9N/Yx+GPxB8G+GPiPrXg
vxN8Wf2ifH2taxd+GtF/tPTZZdY074U6DYSyNBrWrwxRi1fS9NdpZb7VLSKaaP7B
dCH84v21/EHxcHgj4Z6N8dNGurPxd/Zumt8P7s6db+H0tfhn4esYfDWlW/8AY0fl
yJBqEumjUrG7SGM3gea/aa++1NLb/oV4B+EWsad4c8WfBb9oz4f6fpE3wj+O198T
Pjp8ebadb/4lajYjw/HJL8PtN8S3WZo5b22XU763totSt7fVr27tZ7uKI2f2s+Df
FPwtY/tc/EiH406glz4n8Ba5B4o0mfwhp2pM+rfDb4f/AA7hSx0nU9av/Mgu9Mux
p0dpd28+pHyLsQrJOb4XREnqQcMFhJU8P7XESlKpXxuIoSUKtbNK6w9OlF0ZSfO8
RRVXEVuR2VeVKnDl5dPhcsxlDA4/DYitbEYGnUrVpY2pGniJTqVIqqvYYqEv3f1i
nThOnQqv9zg8Nh6MrOumfmN4b8Q/DzUfhX4hsPGvjLx+njDTtRij8JeErK3MvhK8
065tLye51S81JtVUpf2uqLbwT6fJpYNzY3RuoNQ8+3eGvcPA/wC2/wDHXwR8C7r4
MfDHWfCfw/8ACqRR2PiSDRNN/s/xP4+F1JdrcXmq6vPJNd3jtBOLa7toprWFbZgB
EF6fFcuimbxHdaBo4nv5JNWm0zRjmKN70m+NtZu7MyRKbmMLyGVA8gO7aMHcm0OT
wpfeJdA8W6Zqel+I9Jt76xutPubaCOew1YTfZDHd+exJiiV5C6wkM7YkDMqVeGxW
Lp4qeKWIqxrLltUrScnh9FTUaaatBNXTi0/tapOR+h43KMoxFNQr0KeLU8VRzChh
a0IVKdOo+SEa0KCUbwTl8cryjUlZSUuVr2bXNK+C+q+CYvEWufEHxJB4yu43aPw7
puiNf2FpeCMl4nnmktoESWXYdsDhcCQmXOXr5eIAJGSQCcHGMjscEgjIwcVKLmYW
7WofFu0vnNHtTmTCru3bd/RQAN20c4GScqLqcIiCT5UBCjahwCcnquT+JPp0FPGY
xY6pGrVi4VFCKnOK55Ta3TvOMVFfZ5Yq12ndWPTy7AVcvpzpfWamJjKq5QjVlCMK
NP7MKUadFOPZqUpXXvc17or0UUV556gUUUUAFFFFABXeeAviH4h+H2pS3ui3UiQX
cRttSsDI4tNRtWPzwXMa8OCpZVYgldxx7cHRWtGtOhNVKbtJXWqumnumuq/VJ7oz
q0qdenKlVgpwlo4vbuvRp6prVM/Tz4T/AA+8J/GnwtpmoXTpoGl3Gr6v4g1i1iEl
w9g2j2Ny+pWlr5cYed721t7e6OQEitpGkMXHH054G8PXOg6X8cPhP4FgtvBvhHxh
8YvBOjXPi241Blt9Fs9K1PxPJpS294k8t7NpdxplrfXVz5kN1MxtoZgYmO0/k98H
/jVqnw3F7pFw1xd+HNTSdZbOOVo3tZbqCW0uJbdw67I7m3mdLqMYEuyE5G1t31jp
HxYt77RbDSNO1NVutU15NbW3mLMbmKLQtRsmW8xuiLQeZOI5XcAjUH8kkyx59qVe
lWhGpFt15qMrrlcKUqdenVXtabVpv91aOmq5XZJ8p+dZrlWMo4irSjaWCnOLpQmp
SpwS1VSLSk1VhJpO6kk0pNWu395eM/jjatothZK2l+JPhz4N8N6zoNjrF39nhvdY
j0y5n8UQ3l3OfOuI4rtdA0m6uLS4eaOW7W0hllSC28uT8Tbjx3dT+KNXv/D2o/2Z
Y+IYU1DVdM8YGy1mx1K/mjLS28/n2U8MkT7h9mlmWGSKVhIHgUAx9x8dfGreZpvh
Tw7K1vo6adpV69xDeyL9qzoUEMsLbbgxmJpLm8aSCQKzysD5RVoc/NjXKy27JNGj
XEZi8m4IfzfKQLEYGw3lsqIsfl7kJRVcZ+YY8LF0YL937k5S96rOMLRlOo4zUpUZ
e4pQaTbhazbtrFW9vh7J6WFwyrxU17eCioS5ZuCdRuUnGyi7z15mlKKj7uh+iHhT
x6ml6J4N8J2Pg7WPCvlSX2u+PNSkSS98F+fO0zWz2Wom6mGk2kFqyTSiaeZ1vZAs
I3xwgM8SfCiy+IPihfFOsX12NLj0PT7A2iTQSXFzqUsTrHdWuoiV47u3eEvPEsiR
YjeGFmj2Rg/EWm+ONd0/TLvw5ZeINRg0HxDdadP4isbiOJraV7KSQqVUvcLJBH50
kqp5MXzrHmNjGrH6Vj+MelWn9mWQjlaKHwu995aXMbW39qRWEdh4dtI7wJs09bOw
hhLyCD5ry4EBEkIBPJhoywsVBv8Ad+8m4ptr2nL7RqUuacU3zKCvNpJO/QWMy6vh
0pYVyU6jqKU1zSqRU25TfNK7jFe9GG8oqzTttV1P9m7R4vFF5Z6V4htrrSbW8gsr
bzROt7cG1j3anc3Nt5I8mJ5QwtTE11H5QDTYbMQ9X1zT9J8NnRPDmnOLWDT4vJnC
SjyvOlDSTCQpII5Jc7AkjxSYk8yI9K4jwf8AGC3g1Rtau4wbvSfD0Nxc2upmGW4Z
o0WNBa3odRc+Yx/eJhcyPk/xeb5p4j+I1v4j1rU9ZkuY/wB+JRDAqxwiGDUJVZYL
oxTyxlreLKlvNkzKkTCJeg7W5wvH3ZRly3pyp6ae6teZvRPm1Wj6XOP2WPqVacMT
VrVVThCN3Jy5JS5Y9IxXv3jJyb95pau6MX43DTINRtI9MubaS4QyvfR2kYWQTzkr
O1xIGEcizxgHckYOd/n5L5r5/dskgE7dxIXnauewBJxjp74rpfE2pf2rqVzf+YHy
xi4O4OSNrzbTvCCYgysfl3SsxXB6cvXHh6bpwtJ3knK7s+rT666K3zutLH1mXYd4
fDQg23JXbvra9nyp9VHo/N9tbVlcvZ3UFxHHDK8MqSKk8ayxOUOdkkb5R0f7rKwI
I6YIBr1Sw8WzM+oxWmm6XZ3J0iO50+5trWKS4t7vSpPtlxcL8jRy+bHHf5mdTNHu
DtMPL8uvIaUMynKkqcEZBIOGBVhkdmUlSOhBIPBroesHCy1cXqusZJ62s2nZpq9t
fv1xGFp4hpySuk1dq99Vo9bW3Vmnuz0i7nh8Y6ZcX99e6rqni8X9hbxebN9oA08w
3sKWkYnuGklX7QLRllXAgTdCsZBQtxmh6Fq3iTWNN8P6JZS6hrGsXkGn6bYw7RLd
3lzIsUMEZkZE3u7Ko3MBk8msyOSSKSOWJ2jlidXjkRirpIjBkdWByrKQCpGMEAjk
V3XgPxld+EfEmja8XknXSLyS9tIPNVUjvBbxxCZQ4aOF3VIVedU85vKXDBgHXpfJ
XnCKjCh7qi3CPuaRhCHuqzV2ve1a5ndaPTJ062DoV/qyVVRhOWHoy09nJQ92lBKy
lC6uo3g91zdVyGp6Zf6NqN7pOqWs1jqOnXU9lfWc67Jra6tpGhnhkXkBo5EZTgkZ
HBI5qfRNZ1DQNSt9V0u4NrfW3miGcKrGPzonhYgMCMhXJVsZRgrr8yivRvHPi+w8
Zaz4j12C1tY49dn+1mG5hhlv7TUb2Fr+aK3vZUiuDBDepcRGUMPOV0VhIG2S+SdO
DWS56NSMk1zQkpRlCSadmmpJxd0n99jShUeKoOOIo8knBRrUpK8XzwXMuWWtrtqz
vbbmbufT3hrxXpt5PZeMvGt5za3ZurazjSe6F08OpQefc3Klz5cUk1zeugKtJiCX
EbDYw7q71HwH8WvCfxL17xFayWHizSvB3h+XwtrkNm/2e4n0HXIrLU7eJmihOJdJ
njaQeW0qW9rPl1KlZvjSyuTDIAwllT+GFXwnmF1Ks0ZV0cZH3CoyxBzkc7kes6vb
m+it9VksbaaPUUuIYZsQyw3Sqz24gjwrrK4jWMEYjfB3LsJr6enncatKsq2GhL2t
NU5cu9J0+V03CL5YxipNttc0mlq1ynz9bIlCuq1Co6NSlOM6E4zlTjCjGpGboKnB
TlNykoqTl7sr25JGFb3AtrhZGTzPKMhVkeSJ/MYERzLJGyuGibbJHjjKgEHJr9sP
gz4+sPit4P1/UbnUpns1uPhfpYtbM2smri/0K28kXN/dSSW0yWmkWFibqJZnliJa
X94ZVwPxIm8syuYgwiLZTd97b23fM3zeo3HB4zX0t+zf8VY/Aer6jouoO0en64st
xBPs3x22q2mmahHYtOqNG80Ek00UckUjmERmQ4RnJb51Vfd5IrWFeGIpPVSc6dSn
PlnO6bhJU1dSTStdK5rxJlksdgHUoqSxFCPNFpqM1Tcoyq8jbcYTUY3TXVb6I/ej
9p34/eDvj78I9T8W2/iCDQLvxH498AeBrzxHbuJ5r6T4YeEdfs/DUWoS2ksSadZy
aVqZt7eRpJ7zzIpDgiGaObrvAfxG8N6D8Y/jv8P/ABLYWd18NdGs/AnjVYDpllFF
4gk8N6voEev2v9qWoidogupzuEcSfarWCfzYv3vmH8Tdb+Ldivgi++G2iWdnOsN1
oPid7W3tkj0XU/EclwYb2aIB4XhlNpftA8m5VEts3nCSNYs+l/DP4w2DeJfHTDxF
fSeIfGWrWPg2e21ALc2ljpiapZXPijUNHWWef7S11Z2kKW294J41ibEQDyAqpSjP
EyqOnDE069WpL2dOfK6EL4JU5Ksoc0XGFBq0nKNr7XbPz6tkdaGVyoUJVqMYcygo
xU69T2k8K4YjEOKvKolCS9pf4bcvvb+tftT+IfFGkaHfeH/Dmv6NrHg24+PnxN8R
ReHfEeoG3n8QW2q6/YaPa6fYWl0XRv7Hk00RpqGnxrHFILp/Plt40B+M/wBtu4st
G+Nl9oWjRTae/hrwZ4T8LS3VveJd6bqtra+G9Jt44tPSNpYIrSGzYwl0mkEzICyi
VTLLY/az+J9v4/1LwLpGprJpr+GvD969hNaP9st7KXXvEGo6zf2t4saR+fdRzyhp
ry3eWRpjlgeFi+cPjDqE+p+N7q+m1FtUW40nw95EzymRo4ItD0+BIyMkRbjC0yRg
8RTIzAMxA56cXh8ZVrVZy9rKjiadKjTTp06aq1Kcl7T2c+ScqK5uR2Unzq90ml9r
w7galLD5bKajStTxbqRs3Ks+ejGM+eUpXU0pTnzapycd4wb+p/2G4fEev/tA+EX8
NanfeCNWuNa8JaXZeINEWP7LogkubSG8vpIzNGvmPBbyXjIxw2J5mf8Ad5b9aviD
+0Jf/DnQPgb4d8DXWsePvFXh39qLxn8Ttfu9G0+0n1fVrLQ9WtdH0+ZLKwlhNxLq
ttHrWpmxaW3iuJLqCWaYgSXNfgH8FvHXijwP4uttU8K2DX8tvNHqEunRztDcSmwj
mljkt7iMCcSQfvJdiLKGQFWhk5z94ab8WvAfgrU2u1mP/CVN8JL/AFC/aS7lti3j
fxPpV5GI7eaNWEDj+1oZAsglmjCN94+ZJX3mT432WWYmK5an1hctWnOMuWpJKaT5
ZRUZzTsoOD7pr3WfF8YcP1cVntDGckatOjSjKnQjGMuaUKcYJV5KUqtOMedPV8kn
70W7s+gfh3quieE/CHxA+Ksd7eQ+K/GXgH4ly+HfDd2kUv8AwjsGhfEfwtLowtfI
ugLC9kkuZ5o5kEsXlRSWq/vJQXs/A3TPCvh2H4qfFX4gWereHdXvPGfhHwlo1rPf
Wzt5HxT8K63/AMJqyW0n+hGCCG4h8Q2s9wEntohB5/lElE+QtD8V6OfDuj3vxFlt
IotOm8MaXolo15P5EWi6y2peL9RmmAfM128K6daxKB5Zil5WKVRnOsvjVqvjvxR4
R0PxVpEcXhTxf8U7jxlfyNqrr53hmXU7WyW1uIMyXEKWelabd20Be5txMkeC7GTz
R6jxVGNOVFtzp1bqfPKStThVpTpRpqKSUYUZShaWkrtt31PNoZHi41MdJcz+tu9W
opwi4U6aVSFGg217RKFOUZbvzfNr82ftE+B7nwh8QZZZrxr+PxLpkHiiG9YxSx3C
391eQSfZ5oSba4t4Z7WW3jlt3kiKwNh5HSTH0/8As6/DfQI/DGpfEHX9CsV1rw9r
3ha4eACO7jbwhr9tPbLqVnaKspS5TVJrctKkcbWwVY5QpkRz84/tJfEqz+J3irw3
f6bpx0vT9J8JafomnwrZ/YLR7W3vNRuQbOJ0DNareXl4iyCWSFpfOkjCSPMre0/B
ptY07RBqeteLkksJPh7qB07w9dRrYW0cuh3iSac7KJ44L+0thGRNdyRofN/cuDPE
M/E42lRniq9Kmk6zqU2p+0i7zajOpytPRxcbaX5rvmdz9GqxxEsky6FebpzUFCdO
0lOUIySpq0Hbl5Irmi1ZJxaStY/QvXI9W04JYay8un2lkdKk02RNsurCKCyiNpMI
pE8yHbp00MlsDIJI7Z4yf+WuOZ03xHp/hSWbVtKBmluDcpNqd1Ct80Q1PTx9tMaR
jFrGupIPLSDBEezn/WZ4bxF8Q7Xxv4tg82/ewvb6LwTc3eqySvdWzRrbWeiTpkv5
aN9jgit5DF5RTCSLHgGSvF7X4oWdzcQ+F7e3lFwfFviTw7pkC3qTee9oyNYXE15+
5MSXUE1xhpFk8xkVfuxbq8F5diaUnOnVUkqXs6s5xcqM5SilOKjHduTU4295N+TP
Ip0aeJoxpYnDpSjC0qUVy0+Vyu5y35lZczTl1aaWiPTvi/FpPxM8PaXfeLLJtV1X
Q4LeMeXefYIZdJt3ukSxud/krPLFJJII0kf93GAM/wDLQflfB4g8V/D/AFDV9O0e
/wBT0Iz3dpOVgnubSYnTbz7ZpF7HJC8ReS3yxgm+ePbNLtB3Aj7k8T+Obvw9Yzrb
XNtfzMFvIoZ9jRS5UI7BFYO6xzmWKRGxH+6RTtJBr4G8WeIdT8R6q13qn+vt0a0i
UxJE8Vus80yQME4ZYGneOJmLN5QQFmxmuzDuvhU69OrLDVYt0+SMpqpKbS5pWfwR
cW27t62S1Vz6LKcPSl7SiqUKmEqR96lU1pL2coun7OjJOHKpcydkuj6WPr/wB8dP
Aml6CsepG9uPFviaxgi17xJriJNdeG/Fmkapa6rpPifS7uxtvtq6deyLLZ3sEKtL
H9oM0/nGPNfb3wr8fXOt/Dj4ua3rV3p6v4ytfC2o+Bb7VLqC90yy1fw7r99Pdatb
SzW3nwwQasI9P8mYDZZ6sbiGIQiM1+Hle2+Cfi5r2laNaeDLs3d7pFvdXc+lfZJx
Dd6c+oi2XUYow4MdzbXMdpG/2dzFi4RJBMAMD7LKeKKk3Tw2Pm7wd8JVgl7tZunZ
Tk/es506cluubmu0pWPnuJuB8LjsNUqYWPNUdWnUqQrSvCFOlUhWXso+7FKDpU48
l1H2cbJN35vsHxtD8TviN8SL+LWFTw5a/HqS48V6TbST28+nap4i0SC8hsm0+9T5
LC8e9trjSIp7uRJxLdfvSkUq7ug1bWvDWjfBbw3pHh27u9b1XxTeeJbf4labcXD3
An1+C5k0e6jv5IlLwyeTbeH9ZtmkbNrc2kxPK5Hknj/406NqXgbSvBemzNNqvha8
XUPDWs6YqR6hpV5dtb3qyxF3eZ7bU5EjXUoLeVvs17E8ip+9kE3nPwx+IV7Y+Ppv
Enie5tV0vx5p/iKLUdCs5Ug0+fVJbO40+c31mwcWN5dAyzWssaDN3eW0qv5SSIOu
eNw8MXGdSrUxca0Zc0KclH2UVKTtBXUeeLcWru3MlaMnGx4WFynG1Mtp1KlNYR5e
n7DCUk4fXFh6cvY3911P3mFhGopOT5KmHvdRnFx9v8GeAP8AhAb5NY8dtaJe+A9d
07QbzRdSv7W4hutE8XWl7Ha3Ni0qTwpZ2t1eW8/nxSGMGUH92QSOJHjzx54m+IZe
6eDSF+K1t/Z9pcYhWyvbrTLZdLaaeKNIooY5LqyeGF4REVeVp2YiZnHkvifxX4m8
Za8WsPEDSaK1pp+jXurSTtKiaLczLHp51exd5GD6N5f2eOWVDLDJDAYfKleEGj4z
8XHxNpPgrw/o1hPFr3hGO4s5JLKQRyQX9oWS+ube3QF3hv47KLVTLG6iGc3YIAHO
31/D4WnUp4SddzpVozpuouVSXs4uVOEY6ylOpeUnblabXMkrr1aGTValWNXGSoVs
TiaNSFScoWWW0p03UpycZSUY3xUY1p88nPkapuPM4X+hZ/inKnhfw/4K8LXky6zp
+tTazJd21l5NzY+JtEvV23rmZgkK2/krLDIwNpIXuopHDPHX0t8KfHi+FZ/EvxJ8
eaiG1a50e80G40SS5sNU3W2pz28Wu6pZ290hktNRsL5LTW9NlQARxxNiUQ+ZIfzj
s9Xm+Gmsa9LcodavtRsLK5W9uHWC6utD8QW7/wBobEdZDFeK1zDHJED5kNxE8hBR
ZAvLw3OuavPJceIdYvbdYXm07yphKJ/t1rZLPYQXlsrRBBfQxvbrKjF3khLSrJgs
TD59XpKjzzlJq7jQhGUfZ03VjUabd/fck0rSv8Tbkkr8eL4ToY3D1Iwqqjhm1Vni
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
ZKnVnTw658dWrYjD0lKnKrgFGeBpxdSdS/u0pY2Tgk4qtXw7XKryP0hFu7eLtRHh
X4x2Fx8AvjNqN3pfgPVvG2rw/wBp+GNTvJgNFlFzLbNai/8ADuoTnRtWthc7LzTH
1AxRW8kxMVjVm8c+OtB8OaPrOs+H9V+KXwamuvBXxS8HWus6Vdf8LB+GWhmVI/Ei
Cydbu28QeE9OSfR74vbJcPYR6NqkO6X7VLL+WXhv4gTeFvDfj34f63pV5qHhfxfY
xXNhpd1Mol8OeIrOWPUfD3ijTPOhdYr3y1XT7+a1a3/tDRr66hlaaPy4ju+FPjVd
6F8UtI+LtzLr8fjGwm0q6uNR0q+s4FvruwsbbTL6a/t5bN11CDXbSCVNXtJZI47o
Xd0srSiZjXkLCLD0VVo1qUq85x9pS/s+i1HlcVKbSqxg5OyalZO7k1y2tL6TEZLj
KsnUhUdT6rTm8DUXJ+9l7GMKanJSv++hUqUsRJt2qUaNanGTl7v3f+0l8G/BHgLw
t4eXWPGtj4r8Ia/4fm8cfA3xdPNObjUvDrME8Q/DnWtQ8mYXF1pskzz6ONyXGm6l
aS2Yj8u8WOL4o1288Z/ATxVoc3h/VZ9R8LappGn+JvDU7SSHTdZ0HUVPleYYWV4b
qzufPtpwHjmtrkE7BFMqP6n8dPjHp3i258OWHhjQ3uPBNlq1n8VPD+gSA3mk+GH1
4rd+LfCsenytLb2WgPf/AGmRrKNjBDKd+P8AS5Z5PPfir46u7vXtN8I6dpNvqXhX
wQ+pap4eRW2yP4H8V2tjq93orhtyeRaJOfs1zAokspRJNDGFRPL+uzSjhcXgJSmo
zq1KeHVeUlzSq1KihzRUIJxUFGndJP3fc1XMefkdDMaCwlPFxeJeIhjKuLoV504U
4RhyQhUitFDESlOCna3NKpXklaCPaPDPxG8E+NrCXUovDWi3vii4vJL290fUdakh
iaUpI7SW1leRrarKzOoZbdoUliWYCSTyzj22x+KfxU0LSrfUvBPiFPAOixC2XV1t
9QsvDdlaaYlpFDMI7jSp7Uz+bbKoLxmWWaSMeaZBHGT+WcMltofiqKbRtTmawjuE
n0+/IaKZraeMSwRXap8omjLraXyruhE8c2CY1BrqPEvxM1bXLZLSBLHSYgxF3FaW
SIly6uHUyKyyKqq4YqkcEajc6sPmcyeRgJwwEsRNQt7ShHDRi5KaUlScFbnTUItP
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
Xbdkkr9EtEvRIpJLRJLVvRW1erfq3uf/2Q==
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Pictures\ii-blur.jpg}}}|
| attached on:|22 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[ii-blur|ii-blur]] - {{{type=image/jpeg, size=14630 bytes, encoded=19812 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|ii-blur]] or [img[tooltip|ii-blur][link]]}}}
[img[tooltip|ii-blur]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAIiAiIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDq
yxPc0h5paULmuA0QgXNSKnFKFxUirmgY0LmpAtOC08LQIaFpdtOxS4NADMUlSbaa
RQAw00mnkc0bRQBHjNLt9qkC0u2gLEe0CjFSbKULTsOxFilwfWpMCjbQOwwA0jZ6
CpCKTHtQOxCVNN21Yx60xhTGkRbR2o6U/aaNtAWEUAnnrUjZfJ4AApgFLv7Uxco8
DPoRxmlxlwg+UCmhs59PanIScY5IHemS4kBLKzDNIHx705lJYmk2AUhWF3gtkimt
to2k9KNnr1pBYYQT0pjDt1NTYJ4FAUCgZB5dIye3WrBXjio2H40ARRjaT/SpWGcD
PFOjUAMT16AUrjgDofamQyo8Zz1zTohtbBNPkyeg6UxeDkmkBcHzZIHUVIjkk8cH
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
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Pictures\iiiblur-iii.jpg}}}|
| attached on:|23 February 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[iiiblur-iii|iiiblur-iii]] - {{{type=image/jpeg, size=31227 bytes, encoded=42286 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|iiiblur-iii]] or [img[tooltip|iiiblur-iii][link]]}}}
[img[tooltip|iiiblur-iii]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS
Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjL/wAARCAMEAjIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0
bT/+PaT/AK+J/wD0a1W+2aq6f/x7Sf8AXxP/AOjWq3Xk0/gXobVPjfqKBxmpKYhx
x2p46irIHjkUqnBpOhpwx1pATA+tMup1ggL/AMR4Ue9KOBz0rFvLkzz5B+ReF/xo
SuBCcliSck8k04CmjmngVQBj0oyR2pwpcUwG9RTCKeR6Uxj60ARtjFQt1qRmqE0A
IaAOeKOvSp448CgBiqakAyORUwjFLsoAh246U5SDT9npTdnX1oAQrmmFDTvmB5pw
OaAIilRONoJqySKrSvk47CgCqwJPNMK1YODTCKYiuRQCVYEEgjuKcxUVEzH6UwNC
HUmTiYbh6jrVxLmOVcxsGFc8zD601ZXRgyEqfUUrAdGzk9TTC4FZcOok4Ewz/tD/
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
AkgQPcRo3RmAP510tFFTIAooopDCiiigD//Z
---END_DATA---
%/
| source file:|{{{C:\Users\Paul\Desktop\mirrors.jpg}}}|
| attached on:|28 January 2009 by PaulReiber|
| description:|attached by FileDropPlugin|
| embedded:|[[mirrors|mirrors]] - {{{type=image/jpeg, size=91827 bytes, encoded=124349 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|mirrors]] or [img[tooltip|mirrors][link]]}}}
[img[tooltip|mirrors]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
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
6ctCy3VuOtQjAWleEuU6QppXPtg/LS1T6fdNEKGrbvy4qaxsKUxXZanW/UgYJIIP
OjTHaHUCCJllDiTvcZT9YqTGEkqN0EX6iBwu/LhrsmcqtrDb1RWn8cUsFoqUFbjx
8zgkHjgegGrEqfIcp3wU2JQW3SJXVX4oIZUxs8zsanREPbc+qQ74X3Oow06++sVP
TJ8RHT+8I8prw32LjtxpTm0diFbcg/PRQa63qmVT4U6HX+l1Qoti9HL2q1a6h/sC
UiYJsmVLaW3+EZGDsSxGQghWDlZxwMljmO0CVqtPMupHdAJVaxuCSAm2mo0JOsI1
RwZPMziHEt5gCSbHkCR8QIWvi1uGHcPxo3y6kLlUyxp1Nt+Mw04EpSqnwmmXAk+i
fHLx+XOrWvh0vWzIfTeBBiy0MO7w1KWlhSm4qkA58VYG0ZIJGTzkHVJVkQqX1I6x
VGfdd+W7ZZvm8pU6fVL4eXCYZXLkLdPiOrASMb8ZJxwOdXydN+kTtKsqPSenFw2b
eFvvRAZabVuhmUy8pQG9SiPKon3zrdcLVDCOKJ/P+qCS2AkA3GlrDfpGZYqaqVEk
ESqkHL+7bS9t4lXb0qA7CaVHlMSklgK8dpYwvPqDpi3JUmnhVZilgNx3EMs7j+Yk
8/56FTtK6gW8pLsel1miLjN+GlLdLLkQoSMDIRlOPmCNRp63dX6lbdMpMZ6SimVp
VV3yoi3doW2lPCgD3QSfXWr0ygy8soupeSpAG4N9Bv77Rmk0sz5DYSbm+49omL+0
H2On/UmqNpKlz4NPodOwr8z017wcD55mN6bXxWdSYnTmmvT3A2W7fo7KIERR4XIe
WQ2nHyShJPyGhVZXUZu4ennR9M1Sm1X51+anzCle5sU2iIcfWoY7pKqSpX66jv8A
FZ1Ftnqp1mtmks1GQ9YFq/8A3rqFMRGWURYrIDbQkbQSjcWnAAruHAdKFFqsrOYr
mHWjcoByjroB/wDcLwRXTFCnNtKGm58hw9xaDt0nu9Vg2LQX6xJi06S/SXn6s/U1
BKFrluKeUDuPfLnYdu2iNYvV+g1h0zWa/TZ8CmqffWyy4lKwApKMIyRgblfQ41S9
1w+IdXUm7WYNFmyKTZdOlJZhKLZbU8gnCn1I7gY7J7gDnk40zqH1VqFBZr0SlyH1
U+Y423HddVyoJcykebn0B9+NOU9VaY053CQFmyQpXEnjb46wMGH5x5HequlR1tbb
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
AskJuANdrCw1PPjHE+J8dVaRrkxISaEstpVlui+Y20F1Hb0A6kwE+k7P4i4P25Wk
pcj0uluOSag4k4QvHlKz6nBPB7+nOpX2zVmq7Rrsrr9NqbdNoSWWKfHjy/CdmSX9
2zdjzISlKCvYDlWQDjsY+0elSUQZdKtShyFGpjMyS24HnChX5EAcZ27jj7/XT0ue
1b/syNQnpExm2/xcN2RWXH6h/sK0Nq/K4kBW1exWAUgqJXx2OguMizimuOPISO8c
SEspVpoBdRCeJ0Oo2NtoHysvTpV99usIcTNhSLXSSAlR1Vfj0332hPqfUmVMqjFK
pDS4SHnQl919JEhTII8RXukYz8/bnX51b6vVG9ZSqMqLANPpAaYjz24hEhaWwO6x
gKTkJ7jOAcHSvJtlTKokh+RAWZUcKbXEX4i0tkBWCcZA5Oh0Lfo0Vx2bdlejwoy6
kpuJAjNlT7yRk5Uv0zyDgccc6XZWi1CgNpeeaKGzYZU3USrnYcdLC9rQy1rB03he
nSz1He7xxTwKnCQgJbG4N+Z003iuXrbGejXfLW8242p5xp1vx2toUhQASR8vKrn1
0RegyPHaviI+HFsMvR5JaQ5gFaCokgngcAjnSF8SM9NRu9brTgcZiU6OxEwMqSwk
K2bzk5OCM57djyNK3w8XUi07muOqyogqUWFBjy36d4iU+MltX5CSkgAhfJIOtQfl
lzFHUlfhNtR6pMCKzlqOLJxIOUOh0HpmQr83id/TeEuuWI9ctLs78NdiJLqqPX7v
SlVGixWpDSluuk5SpKtqmykIKjyCMc63Xx1XaVVLBoceVSKnTqIf2jdNVs6L4FLj
q3ONoaYZb8wbYKlOYUQHFBOc5016o9cF3QG5Ny1hNFt2UsypVv0FIbStLyApKHcL
ws4TnJypR9AcDToiUq2qLY1y/s2I6FPtMNQIkRCCZBfUltDit4O5SVHsrJAGQMjG
swnq83SJ1h6Xl7rcUEIBF+IBAPDgTb1heEkhykZG1jI0kKvffkco29Tc6WEI1Z64
MLv21RUVyaTQoEGpvmoS4zrzb1RdQ4yxKx+csoAKgj8yfEIwMaZVxVyv/EPcUekU
WT+z6DQY+5Sp52sk52mUpKRnxVjOEE8AYBHOjLOsKyhatOodxxGKg3R0Kc/GuSFN
LbecO5wocByElWTjJ/XQGrvVjp70mhyaXaERiM5JfzKcjnxH3VAcElZyQM8bsAZO
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
o//Z
---END_DATA---
%/
/***
Until http://trac.tiddlywiki.org/ticket/944 is fixed we redefine hasClass so it doesnt die on svg objects
***/
//{{{
if (version.major+version.minor/10+version.revision/100 <= 2.43) {
function hasClass(e,className)
{
if(e.className && e.className.toString().split(" ").indexOf(className) != -1) {
return true;
}
return false;
}
}
//}}}