<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<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='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></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>
<!--}}}-->
<!--{{{-->
<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>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
See [[Eachine H8 Mini RC Quadcopter]]
[[10Hz U-blox binary GPS data in 66 lines of code (arduino)|https://goo.gl/b6A1cn]]
http://wiki.paparazziuav.org/wiki/Sensors/GPS
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/TwhCX0c8Xe0" frameborder="0" allowfullscreen></iframe>
</html>
[[3D-printed Micro RC Truck "Unimog" and Transmitter (1/87)|https://youtu.be/ssL4QJDtk_k]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ssL4QJDtk_k" frameborder="0" allowfullscreen></iframe>
</html>
[[3d printed quadcopter|http://goo.gl/C1eFYL]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/C1eFYL" frameborder="0" allowfullscreen></iframe>
</html>
  * **[[3d_graphics:3d_scanning_for_free|3D scanning for free!]]**
  * https://youtu.be/D6eqW6yk50k
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/D6eqW6yk50k" frameborder="0" allowfullscreen></iframe>
</html>

Published on Jan 6, 2015
3D scanning does not have to require expensive equipment and software. Using photogrammetry techniques you can
do quite a bit of scanning for free with just a camera and some free, open-source software. For lighting, a
cloudy day is good or for small objects fluorescent lighting also casts very little shadow. You can also try
doing it inside a shadow.

Note: No need to install Visual SFM or CMVS, just extract Visual SFM, then extract CMVS into the same folder.
The download link for CMVS is on this page, lower right called "Download Zip".
https://github.com/pmoulon/CMVS-PMVS In the zip file open "BinariesWIn-Linux / Win64-VS2010" Then copy all the
files in there and paste them in the same folder as Visual SFM Of course if you're using WIn32 you'll do that
one instead.
If you press tab and nothing happens all I can say is make sure CMVS is installed as described and check the
log window for errors. I don't know any more than that.

I've put a lot of work into this tutorial as well as the comments and description text. If you like it
please consider leaving a tip on my channel page with the "Support this channel button on the right". Thank
you. 

Software you'll need:
Visual SFM (CUDA version if you use nVidia)
http://ccwu.me/vsfm/

CMVS
http://www.di.ens.fr/cmvs/
Meshlab
http://meshlab.sourceforge.net/

Here is the rock in full 3D after cleanup and retopo.
https://skfb.ly/Cxxp

If you'd like to join Sketchfab and display your own models please use my link.
https://skfb.ly/BVJN

If you'd like to use my photos you can get them here (259MB)
https://www.dropbox.com/s/g9rxzs59lt5...

This is the original tutorial I followed which has a ton of information, but I wanted my videos to get right to
the point.
http://wedidstuff.heavyimage.com/inde...

Shot with my Galaxy Note 3, edited in HitFilm and Photoshop

See my 3D work at http://philnolan3d.com


[[3d_graphics:3d_scanning_for_free|MORE 3D Scanning For Free!]]**
https://youtu.be/eoZ9I7AvVEU
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/eoZ9I7AvVEU" frameborder="0" allowfullscreen></iframe>
</html>

Published on May 6, 2015
Previously I made a video on 3D scanning for free with just your camera and some software. In this video we'll
do the same thing with some different free software, there are some drawbacks and some things that are better,
you decide which method you like best! 
For lighting, a cloudy day is good or for small objects fluorescent lighting also casts very little shadow. You
can also try doing it inside a shadow.
If you like this tutorial please consider leaving a tip on my channel page with the "Support this
channel button on the right". Thank you. 

View the model in full 3D on sketchfab here:
https://skfb.ly/EruI

Autodesk Memento download:
https://memento.autodesk.com/

Download the photos I used:
https://dl.dropboxusercontent.com/u/3...

Shot with my Canon Vixia HF R50, as well as CamStudio. Edited in HitFilm and Photoshop.

Background Music "Sunny Day Train" by +Hikosaemon

See my 3D work at http://philnolan3d.com
''I HATE [[Germ Warfare|https://youtu.be/AJKxON3ufcA]] - [[Zardoz (1974) 720p BrRip x264 - VPPV|http://thailanguage.tiddlyspot.com/#%5B%5BZardoz%20(1974)%20720p%20BrRip%20x264%20-%20VPPV%5D%5D]] -   [[Rrustdon (ficticious)|https://youtu.be/eenZZL_bf6o]]''
''I was adopted by [[Robert Rust in Yuba City, California, 95991|https://www.instantcheckmate.com/people/robert-rust/?state=California&city=Yuba+City&zip=95991]] the second husband of 
Elizabeth Ann Turner. My natural name is Gary Allen Snow ([[PDQ|http://www.thesaurus.com/browse/pdq]] - The Virtual King of Speed + 71)''
''Building a solar powered RC submarine to [[circumnavigate the world|https://youtu.be/i_vGTUlCQq0]] would not be allowed unless 
permission was given for every county where there was point of entry.  Therefore it would be 
necessary to make an international agreement that all data would be shared which is collected, 
and that no malice would be intended, and that any control operator would be harmless.
My dream is to design a solar and [[wind powered|https://youtu.be/Fdfc2mgxYEA]] amphibious drone submarine/wet sub, remotely 
controlled (by satellite) capable of navigating the world - with political permission and under guard
- to film countries I can not afford to visit - non-manned. (Maybe the [[US Veterans Administration|https://www.myhealth.va.gov/]] 
could help.) Make a Raspberry Pi version of the [[3D Printed Theo Jansen Crossbow Tank|http://blenderorganizer.tiddlyspot.com/#%5B%5B3D%20Printed%20Theo%20Jansen%20Crossbow%20Tank%5D%5D]] 
(walking under the ocean silently.) Could drag a dry [[MARS|http://www.ckycs.com/kyarmymars/whatismars.htm]] capsule with life support, cargo, and 
communications, as a lifeboat, in provisioning or emergencies, for Catamarans. With [[Hangouts|https://hangouts.google.com/]].''
''[[N6XRE - RUST, GARY A|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]] - [[Anet A8 Desktop 3D Printer Prusa i3 DIY Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] with a T8 CNC for jewelry.''

[[Democratizing Bio-Sensing Tools With OpenBCI|https://youtu.be/c7v5urh06kM]] - ''[[Sailing La Vagabonde|https://www.youtube.com/playlist?list=PLej_Gvr1c1MM4hEcyzmT06mGoIqoXHcwo]]'' - [[Math vs Physics|https://youtu.be/m6rfpQXzXu0]] - [[Volume|https://en.wikipedia.org/wiki/Volume_rendering]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/c7v5urh06kM" frameborder="0" allowfullscreen></iframe></html>
''[[N6XRE - RUST, GARY A|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]] - [[BLU Advance 5.0|https://www.amazon.com/dp/B018IZ0SWI/_encoding=UTF8?coliid=I362UIRFN7LI1U&colid=27Y18XJ9539G3]] with [[EchoLink for Android|http://www.echolink.org/faq_android.htm]] and MARS''
''[[The Physics of Sailing - KQED QUEST|https://youtu.be/yqwb4HIrORM]] - [[Beginners Guide to Sailing - An Introduction|https://youtu.be/b477nzyJum0]]'' 
''[[Adventure Adrift|https://youtu.be/JwcABboo51U]] - Idea: Supliment Main Sail with above Wetsub equipt with two [[softwing sails|https://youtu.be/DNbCZkd9tX0]]
mounted by trapezoidal cranes mounted closely to the deck as outrigger Wetsub/Pods to form a 
trimaran with 3 sails (Two Softwings and a Mainsail). One Pod is the Wetsub, the other is a 
submersible towable lifeboat for hull maintenance - on a hookah rig (Aerospace attachments 
to the hull). 

''[[Power Wing Sail System|https://youtu.be/5ck9GFx6ZPg]] (Make collapsible softwing with solar cells) - [[Wing sail|https://youtu.be/HeS9UJd2mqQ]] - [[Ocean current|https://www.google.com/search?client=ubuntu&channel=fs&q=currents+underwater&ie=utf-8&oe=utf-8]]''
[[Solar powered submarine|https://www.google.com/search?client=ubuntu&channel=fs&q=Borg&ie=utf-8&oe=utf-8#channel=fs&q=solar+powered+submarine]] - [[Submarine Robots Powered by Renewable Energy|https://youtu.be/Iu7_UkhFyn0]] - [[Circumnavigation|https://en.wikipedia.org/wiki/Circumnavigation]]
[[Fusion power|https://en.wikipedia.org/wiki/Fusion_power]] - [[Tesla, Inc.|https://www.tesla.com/]] should also make [[eBikes|https://www.amazon.com/gp/product/B002AQHM3U/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1]] and [[Lilium VTOL ElectroJet|https://lilium.com/]]s - [[SpaceX|https://en.wikipedia.org/wiki/SpaceX]] - [[THE BORG|https://en.wikipedia.org/wiki/Borg_(Star_Trek)]]

''[[66" R/C Nautilus Submarine|https://youtu.be/1cWJjgn2co4]] dives - [[R/C Disney Nautilus Under the Waves|https://youtu.be/i_vGTUlCQq0]] - [[2 Wing sail |https://youtu.be/H1cEFP_H4Rk?list=PLt2oE-MF03CgWIKIGqW5c6QgvHoTZdEFe]] & [[Currents|https://www.boem.gov/Ocean-Current-Energy/]].''<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/1cWJjgn2co4" frameborder="0" allowfullscreen></iframe></html>
''[[Thingiverse 3D Printed Disney Nautilus|https://www.thingiverse.com/thing:354870]] - [[TUSA SAV-7 Evolution DPV Full Length Video|https://youtu.be/vt_apfS3OxM]] + Hookah.''
''Request that the cost guard take possession of the submarine in point of entry and load on memory 
of local [[Youtubers|https://www.youtube.com/channel/UCd7MMxZLnYVREjGJLXYJvCA/featured]] by Wifi, then relaunch the submarine to a new destination. Please transmit 
Youtubes, charge batteries, and notify control operators, to save energy. Repairs might be requested.
[[Dogfights 720p - The Worlds Greatest Air Battles|https://youtu.be/3KeMIx4TFbg]] - I know nothing. [[You|https://www.youtube.com/results?search_query=hogans+hero+full+episodes&spfreload=1]] eat better than a 
German Commodant.''

''[[Submarine Euronaut playlist|https://youtu.be/-TC3Qy6JMdk?list=PLMXx6FVaLXm-82cg2jeD6nJSjaU08MGRK]] - Idea: A Green Peace Diplomatic Submarine - The Ai WingDreamer''<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/-TC3Qy6JMdk?list=PLMXx6FVaLXm-82cg2jeD6nJSjaU08MGRK" frameborder="0" allowfullscreen></iframe></html>
''[[Sailing SV Delos|https://www.youtube.com/channel/UCvLc83k5o11EIF1lEo0VmuQ]] It was ever so much simpler when there was only Noah and the Ark.
Progress is always the enemy. If men were meant to fly they would be born with wings.
But it was always simpler to make beer, wine, and whiskey, and laugh and play and party.
3/4 of the world became ocean, made by Shiva, so that men could live by the sea. All the 
fish are free for the taking. There is ultimate abundance in nature and life. We will always live.
[[Greenland Kayak playlist|https://youtu.be/K9on1jxA530?list=RDP0Yx2I2jQdY]] - Don't cry. - [[2001 A Space Odyssey (1968)|https://thepiratebay.org/torrent/6941712/2001_A_Space_Odyssey_(1968)_720p_BrRip_x264_-_850MB_-_YIFY]] - HAL 9000 vs Elon Musk.
Elon Musk's Mars mission is very wrong! As a representative of Ai he should know better.

[[Submarines! - Mean Machines - Fast, Furious & Funny|https://youtu.be/Cc9exfu857Y]]''
<<miniBrowser http://www.bluefinrobotics.com/vehicles-batteries-and-services/bluefin-sandshark/>>

''Idea: A Helicopter pad on an airplane. The helicopter controls a submarine. The submarine is a drone sub
with no personnel. The submarine has a helicopter pad for inspection and repair and could load batteries. 
After a mission the helicopter would be able to land back on the airplane pad, a towable arduino flying runway, 
amphibious, solar cell pad, taking the amphibious runway with it. Also, the helicopter could be remotely 
controlled  by satellite. I disagree with Elon Musk's Mars mission. Only a [[suicide cult|http://psychology.tiddlyspot.com/#%5B%5BCult%20suicide%5D%5D]] would promote it. Torture.''

''[[ELECTRONOOBS|https://www.youtube.com/channel/UCjiVhIvGmRZixSzupD0sS9Q/featured]] - [[Ovation Applause AB24AII Balladeer Guitar|Ovation Applause AB24AII Balladeer|http://thailanguage.tiddlyspot.com/#%5B%5BOvation%20Applause%20AB24AII%20Balladeer%5D%5D]] for [[Nemo|https://en.wikipedia.org/wiki/Captain_Nemo]] sailors (doesn't warp) - [[Molding|https://www.google.com/search?client=ubuntu&channel=fs&q=currents+underwater&ie=utf-8&oe=utf-8#channel=fs&q=molding]]
made with a T8 jewelry/[[Flute|https://www.amazon.com/dp/B006GLEKWQ/_encoding=UTF8?coliid=I346NT49T195NE&colid=27Y18XJ9539G3]]/lego CNC and [[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - Build a [[wooden concert flute|https://www.8notes.com/f/25_259888.asp]] 
an inch at a time, rabbited (named the Satyr from the great Satyr [[Pan|https://en.wikipedia.org/wiki/Pan_(god)]] with perfect intonation). Time will tell.''

<<miniBrowser https://3dlabprint.com/shop/aichi-m6a-seiran/>>
[[The Largest Submarine in World War II|https://youtu.be/_HHnOvQ0anc]] Youtube
<<miniBrowser http://www.operationstormbook.com/i400_images.html>>
''[[Additive Manufacturing - Ceramic 3D Printing Breakthrough|http://blenderorganizer.tiddlyspot.com/#%5B%5BAdditive%20Manufacturing%20-%20Ceramic%203D%20Printing%20Breakthrough%5D%5D]] Youtube - [[Math Channels|http://scienceport.tiddlyspot.com/#%5B%5BMath%20Channels%5D%5D]]''
''[[To Farm Out Work or Not To Farm Out Work?|http://psychology.tiddlyspot.com/#%5B%5BTo%20Farm%20Out%20Work%20or%20Not%20To%20Farm%20Out%20Work%3F%5D%5D]] - [[Virtual Reality Glasses|http://mediaport.tiddlyspot.com/#%5B%5BWorlds%20First%204K%20VR%20-%20HALF%20PRICE%20of%20a%20HTC%20VIVE%5D%5D]] - [[Barbi (Klein) Benton|https://youtu.be/A1o-gLIh10w]] ([[2|http://www.hgtv.com/videos/barbis-copper-dream-palace-0217813]])''
''[[DIY Low Cost Tiny Home made of Air crete|https://youtu.be/b9Gmor0I3mw]] - [[Creation of a Medieval Village in Blender 2.79|https://youtu.be/GlyhFyfVGbE]]''
''What if you could startup a [[Pony Express Ebike Battery Exchange, Charging Station and Database|http://inventoryport.tiddlyspot.com/#%5B%5BPony%20Express%20Ebike%20Battery%20Exchange%2C%20Charging%20Station%20and%20Database%5D%5D]]
in any bicycle shop, hostile, or apartment building that features an exercise room, nation wide on [[Google Docs|https://docs.google.com/]]? - [[Tesla Inc.|http://scienceport.tiddlyspot.com/#%5B%5BTesla%20Inc.%5D%5D]]''
''When you are traveling, carrying a large lithium battery for an Ebike on an airplane is not allowed. Exchange it with Bitcoin.''
# ''What production would be the bees knees for the King of Thailand? - [[CMS Bali 250cc Water Cooled Moped|http://countyimports.com/inc/sdetail/cms-bali-250cc-water-cooled-touring-edition-motor-scooter-moped-for-sale---free-shipping--mp-5018--/25503/22831]] - $2,099.96
Gasoline Vehicles do not need Transmissions, they need electric wheels for Serial Power assist. (Reducing emissions).
A [[Cyclamatic Power Plus eBike|https://www.amazon.com/dp/B002AQHM3U/_encoding=UTF8?coliid=I4NFDTMNXZ0LE&colid=27Y18XJ9539G3]] with a connection for a [[Savannamama 26" 2-Stroke 66CC/80CC gBike|https://www.amazon.com/dp/B01I3NL5S6/_encoding=UTF8?coliid=I38B6Q7EW7CHLG&colid=27Y18XJ9539G3]] as a sidecar
(autonomous and Covered) to pull a Rickshaw Carriage (no range limitations). [[TL;DR - What Was the Mouse Utopia?|https://youtu.be/HfNKFvHtA3g]]''
# '' [[DongFang (150CC :: 3 Wheel reverse trike|http://countyimports.com/inc/sdetail/dongfang--150cc----3-wheel-reverse-trike---motor-scooter---free-shipping---df-12567--/19235/40309]] - $1,959.95 - with front electric wheels - http://dmvnv.com/newresident.htm''
''[[How to Make a Google Home on Raspberry Pi without MagPi 57 Kit|http://n6xre.tiddlyspot.com/#%5B%5BHow%20to%20Make%20a%20Google%20Home%20on%20Raspberry%20Pi%20without%20MagPi%2057%20Kit%5D%5D]]''
''[[Aluminum shell prototyping|Aluminum shell prototyping parts|http://n6xre.tiddlyspot.com/#%5B%5BAluminum%20shell%20prototyping%20parts%5D%5D]] - [[Sculpteo|https://www.sculpteo.com/en/]] - [[Baofeng Radio TNC Packet Radio|http://n6xre.tiddlyspot.com/#%5B%5BBaofeng%20Radio%20TNC%20Packet%20Radio%20cable%5D%5D]]''
''[[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - [[Consciousness is similar to the Astronomy of time and space|http://n6xre.tiddlyspot.com/#%5B%5BConsciousness%20is%20similar%20to%20the%20Astronomy%20of%20time%20and%20space%5D%5D]]''
''[[Water Memory (Documentary of 2014 about Nobel Prize laureate Luc Montagnier)|https://youtu.be/R8VyUsVOic0]]''
''[[Making Gears|http://blenderorganizer.tiddlyspot.com/#%5B%5BMaking%20Gears%5D%5D]] - [[Danielle Fong|https://youtu.be/MaebOLfdSd8]] - [[Elon Musk tells all, strange events.|https://youtu.be/RPOLlAqBe1g]] - [[Red Skelton Albert Hall|https://youtu.be/3Pf5DIkd0xo]]''
I was adopted by [[Robert Rust in Yuba City, California, 95991|https://www.instantcheckmate.com/people/robert-rust/?state=California&city=Yuba+City&zip=95991]] the second husband of Elizabeth Ann Turner. 
My natural name is Gary Allen Snow ([[PDQ|http://www.thesaurus.com/browse/pdq]] - [[The Virtual King of Speed|https://youtu.be/Hg2zx95CgdA]] + 71) - [[To This Day Project|https://youtu.be/ltun92DfnPY]]
''[[Author Brian Shul on piloting the SR-71|https://youtu.be/wigZsFypdyI]]'' - [[The flight that rocked the Soviet Union|http://n6xre.tiddlyspot.com/#%5B%5BThe%20flight%20that%20rocked%20the%20Soviet%20Union%5D%5D]] - [[Rrustdon (ficticious)|https://youtu.be/eenZZL_bf6o]]<br> <html><iframe width="560" height="315" src="https://www.youtube.com/embed/wigZsFypdyI" frameborder="0" allowfullscreen></iframe></html>
[[Photorealistic Facial Texture Inference Using Deep Neural Networks|http://scienceport.tiddlyspot.com/#%5B%5BPhotorealistic%20Facial%20Texture%20Inference%20Using%20Deep%20Neural%20Networks%5D%5D]]


[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BAmazing%20In%20Motion%20-%20SWARM%5D%5D]]
See [[Eachine H8 Mini RC Quadcopter]]
See [[CineTank MK2-L Quadcopter]] for Large Quad
See [[Flying 3D X6]] and [[Kaideng K70C|Kaideng K70C Sky Warrior Drone]] for Medium Quad
See [[Quadcopter Tracking]]

[[Amazing In Motion - SWARM|https://goo.gl/y6Y2F0]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/uj0v1BgzUdc?list=PLBlWoBy7VSXNKmx3HY1wySZEeKVCZHwoE" frameborder="0" allowfullscreen></iframe>
</html>

Swarm Quadcopters - modify the transmitters with Raspberry Pi - Ground based photographic positioning system
[[Eachine H8 Mini Headless Mode 2.4G 4CH 6 Axis RC Quadcopter RTF - US $13.99|http://goo.gl/RYm5fo]]
[[Eachine H8C Mini With 2MP Camera 2.4G 6-Axis Headless Mode RC Quadcopter RTF - US $27.99|http://goo.gl/DR9tK3]]
A Swarm would be much more fun than a Large Quad because they could act cooperatively to lift a grid.  
Many mini quads could lift as much as a Large Quad, and you could add as many as you need for a task 
- it would act as a modular Large Quad, by flying in formation, lifting a grid (or net).
''[[Universal Licensing System|http://n6xre.tiddlyspot.com/#%5B%5BUniversal%20Licensing%20System%5D%5D]] - [[A Protocol for Offline Bitcoin Over Radio Transactions|http://n6xre.tiddlyspot.com/#%5B%5BA%20Protocol%20for%20Offline%20Bitcoin%20Over%20Radio%20Transactions%5D%5D]] - [[HP Laptop Store|http://store.hp.com/us/en/vwa/Laptops/form=Standard-laptop]]''
See ''[[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - [[DIY Electric Bike - 3d Printed|http://scienceport.tiddlyspot.com/#%5B%5BDIY%20Electric%20Bike%20-%203d%20Printed%5D%5D]] - [[Lilium VTOL ElectroJet|https://lilium.com/]] - [[Tesla, Inc.|https://www.tesla.com/]] - [[BCI|https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface]] - [[Railgun|https://en.wikipedia.org/wiki/Railgun]] - [[Ship Parts|http://psychology.tiddlyspot.com/#%5B%5BShip%20Parts%5D%5D]]''
''[[The Mouse That Roared|https://thepiratebay.org/torrent/4072072/The_Mouse_That_Roared_(1959)_(Peter_Sellers__Jean_Seberg)]] - [[Prophecy 80 Pound Pistol Crossbow|https://www.amazon.com/dp/B00SI8TZCK/_encoding=UTF8?coliid=I3VMAYCT3G1GQG&colid=27Y18XJ9539G3]] - [[3D Printed Theo Jansen Crossbow Tank|http://blenderorganizer.tiddlyspot.com/#%5B%5B3D%20Printed%20Theo%20Jansen%20Crossbow%20Tank%5D%5D]]''
[[Internet Radio|https://www.internet-radio.com]] - [[PhuketLiveRadio|http://www.thephuketnews.com/radio/listen.php#5KdBJpbAL5yeyc3v.97]] - https://time.is/Phuket - [[Ambient Art Foundation on RadioForest|http://www.radioforest.net/radio/ambient-art-foundation/700272]] - ''[[Thingiverse|https://www.thingiverse.com/]]''
[[Shoutcast]] - [[Psychillosis.pls|https://yp.shoutcast.com/sbin/tunein-station.pls?id=543496]] (for an external player) - http://websdr.suws.org.uk/ @ 196.00 kHz AM
<<miniBrowser http://www.shoutcast.com/Search?query=Psy>>
''[[Democratizing Bio-Sensing Tools With OpenBCI|https://youtu.be/c7v5urh06kM]] - [[UCMJ|http://n6xre.tiddlyspot.com/#%5B%5BThe%20flight%20that%20rocked%20the%20Soviet%20Union%5D%5D]] - [[THE BORG|https://en.wikipedia.org/wiki/Borg_(Star_Trek)]] - [[Rendering Photorealistic CGI|http://blenderorganizer.tiddlyspot.com/#%5B%5BThe%20Science%20of%20Rendering%20Photorealistic%20CGI%5D%5D]]''<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/c7v5urh06kM" frameborder="0" allowfullscreen></iframe></html>
''[[A Helicopter pad on an airplane.|http://h8quadmod.tiddlyspot.com/#%5B%5BA%20Helicopter%20pad%20on%20an%20airplane%5D%5D]] The helicopter controls a submarine. The submarine is a drone sub''
''with no personnel. The submarine has a helicopter pad for inspection and repair. After a mission''
''the helicopter would be able to land back on the airplane pad. Also, remote control the helicopter.''
''[[Solar powered submarine|https://www.google.com/search?client=ubuntu&channel=fs&q=Borg&ie=utf-8&oe=utf-8#channel=fs&q=solar+powered+submarine]] - [[Submarine Robots Powered by Renewable Energy|https://youtu.be/Iu7_UkhFyn0]] - [[Circumnavigation|https://en.wikipedia.org/wiki/Circumnavigation]]''
''[[Fusion power|https://en.wikipedia.org/wiki/Fusion_power]] - [[Tesla, Inc.|https://www.tesla.com/]] should also make [[eBikes|https://www.amazon.com/gp/product/B002AQHM3U/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1]] and [[Lilium VTOL ElectroJet|https://lilium.com/]]s - [[SpaceX|https://en.wikipedia.org/wiki/SpaceX]]''
''[[Koenigsegg|https://youtu.be/H2mTriy9oQM]] [[Flexible-fuel|https://en.wikipedia.org/wiki/Flexible-fuel_vehicle]] (Propane?)  [[Turbo-Electric|https://en.wikipedia.org/wiki/Gas_turbine_locomotive]] Charging Station Trailer for Tesla Products.''
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BAnonine%20VPN%5D%5D]]
[[Anonine VPN|https://anonine.com/en/guides/openvpn-ubuntu-14.04-64bit]]
<<miniBrowser https://anonine.com/en/guides/openvpn-ubuntu-14.04-64bit>>
<<miniBrowser https://www.ivpn.net/>>
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|4.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
|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
<<<
2011.02.14 4.0.1 fix OSX error: use picker.file.path
2009.06.04 4.0.0 changed attachment storage format to use //sections// instead of embedded substring markers.
|please see [[AttachFilePluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePlugin= {major: 4, minor: 0, revision: 1, date: new Date(2011,2,14)};

// 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",

	tiddlerFormat: '!usage\n{{{%0}}}\n%0\n!notes\n%1\n!type\n%2\n!file\n%3\n!url\n%4\n!data\n%5\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; ">&nbsp;\
		</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:\'\';">&nbsp;\
		</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:\'\';\">&nbsp;\
		</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;vertical-align:top;width:1%;white-space:nowrap">\
			notes&nbsp;\
		</td><td style="border:0" colspan=2>\
			<textarea name="notes" style="width:98%;height:3.5em;margin-bottom:2px"></textarea>\
		</td><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			attach as&nbsp;\
		</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><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			add tags&nbsp;\
		</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");
		src=src.value!=src.defaultValue?src.value:"";
		var when=(new Date()).formatString(config.macros.timeline.dateFormat);
		var title=form.tiddlertitle.value;
		var local = form.local.value!=form.local.defaultValue?form.local.value:"";
		var url = form.URL.value!=form.URL.defaultValue?form.URL.value:"";
		var notes = form.notes.value;
		var tags = "attachment excludeMissing "+form.tags.value;
		var useData=form.useData.checked;
		var useLocal=form.useLocal.checked;
		var useURL=form.useURL.checked;
		var mimetype = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";
		// validate checkboxes and get filename
		if (useData) {
			if (src.length) { if (!theLocation) var theLocation=src; }
			else { alert(this.sourceErr); src.focus(); return false; }
		}
		if (useLocal) {
			if (local.length) { if (!theLocation) var theLocation = local; }
			else { alert(this.localErr); form.local.focus(); return false; }
		}
		if (useURL) {
			if (url.length) { if (!theLocation) var theLocation = url; }
			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 (!title || !title.trim().length || title==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 && !mimetype.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 mimetype=theList.options[i].text; theList.selectedIndex=i; break; }
		}
		// attach the file
		return this.createAttachmentTiddler(src, when, notes, tags, title,
			useData, useLocal, useURL, local, url, mimetype);
	},
	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 (src, when, notes, tags, title, useData, useLocal, useURL, local, url, mimetype, noshow) {
		if (useData) { // encode the data
			if (!mimetype.length) {
				alert(this.MIMEErr);
				form.MIMEType.selectedIndex=1; form.MIMEType.focus();
				return false;
			}
			var d = this.readFile(src); if (!d) { return false; }
			displayMessage('encoding '+src);
			var encoded = this.encodeBase64(d);
			displayMessage('file size='+d.length+' bytes, encoded size='+encoded.length+' bytes');
		}
		var usage=(mimetype.substr(0,5)=="image"?'[img[%0]]':'[[%0|%0]]').format([title]);
		var theText=this.tiddlerFormat.format([
			usage, notes.length?notes:'//none//', mimetype,
			useLocal?local.replace(/\\/g,'/'):'', useURL?url:'',
			useData?('data:'+mimetype+';base64,'+encoded):'' ]);
		store.saveTiddler(title,title,theText,config.options.txtUserName,new Date(),tags);
		var panel=document.getElementById("attachPanel"); if (panel) panel.style.display="none";
		if (!noshow) { story.displayTiddler(null,title); story.refreshTiddler(title,null,true); }
		displayMessage('attached "'+title+'"');
		return true;
	},
//}}}
// // base64 conversion
//{{{
	encodeBase64:
	function (d) {
		if (!d) 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<d.length; ) {
			chr1=d.charCodeAt(i++);
			chr2=d.charCodeAt(i++);
			chr3=d.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="";
		}
		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.path;
		}
		catch(ex) { displayMessage(ex.toString()); }
		return result;
	}
}
//}}}
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|4.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|plugin|
|Description|run-time library for displaying attachment tiddlers|
Runtime 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: after creating new attachment tiddlers, you can remove [[AttachFilePlugin]], as long as you retain //this// tiddler (so that images can be rendered later on).
!!!!!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
<<<
2009.10.10 [4.0.1] in fileExists(), check for IE to avoid hanging Chrome during startup
2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
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: 4, minor: 0, revision: 1, date: new Date(2009,10,10)};
//}}}

//{{{
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
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(f) {
	if(window.Components) { // MOZ
		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(f); }
		catch(e) { return false; } // invalid directory
		return file.exists();
	}
	else if (config.browser.isIE) { // IE
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		return fso.FileExists(f);
	}
	else return true; // other browsers: assume file exists
}
//}}}

//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {

	// extract embedded data, local and remote links (if any)
	var text=store.getTiddlerText(title,'');
	var embedded=store.getTiddlerText(title+'##data','').trim();
	var locallink=store.getTiddlerText(title+'##file','').trim();
	var remotelink=store.getTiddlerText(title+'##url','').trim();

	// backward-compatibility for older attachments (pre 4.0.0)
	var startmarker="---BEGIN_DATA---\n";
	var endmarker="\n---END_DATA---";
	var pos=0; var endpos=0;
	if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
		embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
	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));

	// if there is a data: URI defined (not supported by IE)
	if (embedded.length && !config.browser.isIE) return embedded;

	// 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) { 
		locallink=locallink.replace(/^\.[\/\\]/,''); // strip leading './' or '.\' (if any)
		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;

	// attachment URL doesn't resolve, just return input as is
	return title;
}
//}}}
//{{{
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);
	}
}
//}}}
/***
|Name|AttachFilePluginInfo|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|4.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Documentation for AttachFilePlugin|
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.
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Syntax
<<<
''To display the attach file control panel, simply view the [[AttachFile]] shadow tiddler that is automatically created by the plugin, and contains an instance of the inline control panel.''.  Or, you can write:
{{{
<<attach inline>>
}}}
in any tiddler to display the control panel embedded within that tiddler.  Note: you can actually use any unique identifier in place of the "inline" keyword.  Each unique id creates a separate instance of the controls.  If the same ID is used in more than one tiddler, then the control panel is automatically moved to the most recently rendered location.  Or, you can write:
{{{
<<attach>>
}}}
(with no ID parameter) in SidebarOptions.  This adds a command link that opens the controls as a floating panel, positioned directly to the left of the sidebar.
<<<
!!!!!Usage
<<<
Binary file content can be stored in three different locations:
#embedded in the attachment tiddler (encoded as base64)
#on your filesystem (a 'local link' path/filename)
#on a web server (a 'remote link' URL)
The plugin creates an "attachment tiddler" for each file you attach.  Regardless of where you store the binary content, your document can refer to the attachment tiddler rather than using a direct file or URL reference in your embedded image or external links, so that changing document locations will not require updating numerous tiddlers or copying files from one system to another.
> 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. |
When you attach a file, a tiddler (tagged with<<tag attachment>>) is generated (using the source filename as the tiddler's title).  The tiddler contains //''base64 text-encoded binary data''//, surrounded by {{{/%...%/}}} comment markers (so they are not visible when viewing the tiddler).  The tiddler also includes summary details about the file: when it was attached, by whom, etc. and, if the attachment is an image file (jpg, gif, or png), the image is automatically displayed below the summary information.
>Note: although you can edit an attachment tiddler, ''don't change any of the encoded content below the attachment header'', as it has been prepared for use in the rest of your document, and even changing a single character can make the attachment unusable.  //If needed, you ''can'' edit the header information or even the MIME type declaration in the attachment data, but be very careful not to change any of the base64-encoded binary data.//
Unfortunately, embedding just a few moderately-sized binary files using base64 text-encoding can dramatically increase the size of your document.   To avoid this problem, you can create attachment tiddlers that define external local filesystem (file://) and/or remote web server (http://) 'reference' links, without embedding the binary data directly in the tiddler (i.e., uncheck "embed data" in the 'control panel').

These links provide an alternative source for the binary data: if embedded data is not found (or you are running on Internet Explorer, which does not currently support using embedded data), then the plugin tries the local filesystem reference.  If a local file is not found, then the remote reference (if any) is used.  This "fallback" approach also lets you 'virtualize' the external links in your document, so that you can access very large binary content such as PDFs, MP3's, and even *video* files, by using just a 'remote reference link' without embedding any data or downloading huge files to your hard disk.

Of course, when you //do// download an attached file, the local copy will be used instead of accessing a remote server each time, thereby saving bandwidth and allowing you to 'go mobile' without having to edit any tiddlers to alter the link locations...
<<<
!!!!!Syntax / Examples
<<<
To embed attached files as images or link to them from other tiddlers, use the standard ~TiddlyWiki image syntax ({{{[img[tooltip|filename]]}}}), linked image syntax ({{{[img[tooltip|filename][tiddlername]]}}}) , or "external link" syntax ({{{[[text|URL]]}}}), replacing the filename or URL that is normally entered with the title of an attachment tiddler.

embedded image data:
>{{{[img[Meow|AttachFileSample]]}}}
>[img[Meow|AttachFileSample]]
embedded image data with link to larger remote image:
>{{{[img[click for larger view|AttachFileSample][AttachFileSample2]]}}}
>[img[click for larger view|AttachFileSample][AttachFileSample2]]
'external' link to embedded image data:
>{{{[[click to view attachment|AttachFileSample]]}}}
>[[click to view attachment|AttachFileSample]]
'external' link to remote image:
>{{{[[click to view attachment|AttachFileSample2]]}}}
>[[click to view attachment|AttachFileSample2]]
regular ~TiddlyWiki links to attachment tiddlers:
>{{{[[AttachFileSample]]}}} [[AttachFileSample]]
>{{{[[AttachFileSample2]]}}} [[AttachFileSample2]]
<<<
!!!!!Defining MIME types
<<<
When you select a source file, a ''[[MIME|http://en.wikipedia.org/wiki/MIME]]'' file type is automatically suggested, based on filename extension.  The AttachFileMIMETypes tiddler defines the list of MIME types that will be recognized by the plugin.  Each MIME type definition consists of exactly two lines of text: the official MIME type designator (e.g., "text/plain", "image/gif", etc.), and a space-separated list of file extensions associated with that type.  List entries are separated by "----" (horizontal rules).
<<<
!!!!!Known Limitations
<<<
Internet Explorer does not support the data: URI scheme, and cannot use the //embedded// data to render images or links.  However, you can still use the local/remote link definitions to create file attachments that are stored externally.  In addition, while it is relatively easy to read local //text// files, reading binary files is not directly supported by IE's FileSystemObject (FSO) methods, and other file I/O techniques are subject to security barriers or require additional MS proprietary technologies (like ASP or VB) that make implementation more difficult.  As a result, you cannot //create// new attachment tiddlers using IE.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your document:
* [[AttachFilePlugin]] (tagged with <<tag systemConfig>>)
* [[AttachFilePluginFormatters]] ("runtime distribution library") (tagged with <<tag systemConfig>>)
* [[AttachFileSample]] and [[AttachFileSample2]] //(tagged with <<tag attachment>>)//
* [[AttachFileMIMETypes]] //(defines binary file types)//
> 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. |
<<<
!!!!!Revisions
<<<
2009.06.04 4.0.0 changed attachment storage format to use //sections// instead of embedded substring markers.
2008.07.21 3.9.0 Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
2008.05.12 3.8.1 automatically add 'attach' task to backstage (moved from BackstageTweaks)
2008.04.09 3.8.0 in onChangeSource(), if source matches current document folder, use relative reference for local link.  Also, disable 'embed' when using IE (which //still// doesn't support data: URI)
2008.04.07 3.7.3 fixed typo in HTML for 'local file link' so that clicking in input field doesn't erase current path/file (if any)
2008.04.07 3.7.2 auto-create AttachFile shadow tiddler for inline interface
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.12.03 3.7.1 in createAttachmentTiddler(), added optional "noshow" flag to suppress display of newly created tiddlers.
2007.10.29 3.7.0 code reduction: removed support for built-in upload to server... on-line hosting of binary attachments is left to the document author, who can upload/host files using 3rd-party web-based services (e.g. www.flickr.com, ) or stand-alone applications (e.g., FTP).
2007.10.28 3.6.0 code reduction: removed duplicate definition of image and prettyLink formatters.  Rendering of attachment tiddlers now //requires// installation of AttachFilePluginFormatters
2007.03.01 3.5.3 use apply() to invoke hijacked function
2007.02.25 3.5.2 in hijack of "prettyLink", fix version check for TW2.2 compatibility (prevent incorrect use of fallback handler)
2007.01.09 3.5.1 onClickAttach() refactored to create separate createAttachmentTiddler() API for use with FileDropPluginHandlers
2006.11.30 3.5.0 in getAttachment(), for local references, add check for file existence and fallback to remote URL if local file not found.  Added fileExists() to encapsulate FF vs. IE local file test function (IE FSO object code is TBD).
2006.11.29 3.4.8 in hijack for PrettyLink, 'simple bracketed link' opens tiddler instead of external link to attachment
2006.11.29 3.4.7 in readFile(), added try..catch around initWithPath() to handle invalid/non-existent paths better.
2006.11.09 3.4.6 REAL FIX for TWv2.1.3: incorporate new TW2.1.3 core "prettyLink" formatter regexp handling logic and check for version < 2.1.3 with fallback to old plugin code.  Also, cleanup table layout in HTML (added "border:0" directly to table elements to override stylesheet)
2006.11.08 3.4.5 TEMPORARY FIX for TWv2.1.3: disable hijack of wikiLink formatter due to changes in core wikiLink regexp definition.  //Links to attachments are broken, but you can still use {{{[img[TiddlerName]]}}} to render attachments as images, as well as {{{background:url('[[TiddlerName]]')}}} in CSS declarations for background images.//
2006.09.10 3.4.4 update formatters for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.07.24 3.4.3 in prettyLink formatter, added check for isShadowTiddler() to fix problem where shadow links became external links.
2006.07.13 3.4.2 in getAttachment(), fixed stripping of newlines so data: used in CSS will work
2006.05.21 3.4.1 in getAttachment(), fixed substring() to extract data: URI (was losing last character, which broken rendering of SOME images)
2006.05.20 3.4.0 hijack core getRecursiveTiddlerText() to support rendering attachments in stylesheets (e.g. {{{url([[AttachFileSample]])}}})
2006.05.20 3.3.6 add "description" feature to easily include notes in attachment tiddler (you can always edit to add them later... but...)
2006.05.19 3.3.5 add "attach as" feature to change default name for attachment tiddlers.  Also, new optional param to specify tiddler name (disables editing)
2006.05.16 3.3.0 completed XMLHttpRequest handling for GET or POST to configurable server scripts
2006.05.13 3.2.0 added interface for upload feature.  Major rewrite of code for clean object definitions.  Major improvements in UI interaction and validation.
2006.05.09 3.1.1 add wikifer support for using attachments in links from "linked image" syntax: {{{[img[tip|attachment1][attachment2]]}}}
2006.05.09 3.1.0 lots of code changes: new options for attachments that use embedded data and/or links to external files (local or remote)
2006.05.03 3.0.2 added {{{/%...%/}}} comments around attachment data to hide it when viewing attachment tiddler.
2006.02.05 3.0.1 wrapped wikifier hijacks in initAttachmentFormatters() function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.27 3.0.0 Update for TW2.0.  Automatically add 'excludeMissing' tag to attachments
2005.12.16 2.2.0 Dynamically create/remove attachPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.
2005.11.20 2.1.0 added wikifier handler extensions for "image" and "prettyLink" to render tiddler attachments
2005.11.09 2.0.0 begin port from old ELS Design adaptation based on ~TW1.2.33
2005.07.20 1.0.0 Initial release (as adaptation)
<<<
!usage
{{{[img[AttachFileSample]]}}}
[img[AttachFileSample]]
!notes
example of encoded data attachment
!type
image/gif
!file
./images/meow.gif
!url
http://www.TiddlyTools.com/images/meow.gif
!data
data:image/gif;base64,R0lGODlhOABQAPcAAAAACAAAEAAICAgICAgLDBAQCAQQGRAIEBgICBAQEBAQGBAYFBoOEhwUFCEYEBgYGA4cIBkgGyEcHCEhISkYGCkcHCEpHCklIRAgMRkmNSElKSEpNikeKykpKSExQiE5QjEhJTEpITEpKSkpMSkxISk1KTExITExKSktNTEpMTEpOTExMSk5MSkxOSkxQik5PTkrKTkxMTE8KTFCMTExOTExQjE5PTFCPTk3MzlCMTkxQjk5QkI0MzlGPUg9M01JNi88TTlEUkI8REJCSkZDRFBDQkY/UFA/TjNMUkNOS1JKSkpWRj1KWEpKWj9OXEVZZlhMRlVLVVpSUlReUFdSYFVhX1JSa1VfbmBbU11ia2dcV3FjXVpldWVkb2tnb3tnbGZ1ZHV6aWVwe3d5c2N4iXN3gntzgHeBiYd2dYWHeoh/jIKLkJWEfZmUh5CNlJ+VkICPn46XpZiSo5WfoJycnKaemaGcqKWlpZWnraWtqa2qoq2lrZavvKW4xK2lta2ws/8A/7WcjLWllLWlpbWlrb2tnMatnLWtpbWtrb2trbWttb2ttbWtvbW1pca1pbW1ra21va21xrW1tbW1vbW1xrW9tb21rb21tb21vb21xr29rb29tca9sca1vc69rda9ra29wa3GxrW9vbW9xq29zrHGyrPB0rXG1r29vb29xr29zr3Gvb3Gxr3Gzr3G1sa9vcbGtc7GtdbGtcbGvc7GvdbGvd7Gvca9xsa9zsbGxsbGzsbG1s7DyNbGxtbGzs7G1rjQ2MbO0sbO3sbW1s7Owc7OzsbW3sbe3s7O1s7W0tbQx+HUzNDQ29bW1tvb1ufa1sPW6dDW4dbW3trY4sni7dbk797e3tbx9N7n3ufe3t7e597n597i7+fe597s9N73++fn3ufn5+fn7+fv5+fv7+/e5+/r4vfr4ufn9+fv9+fv/+/n7+/v8/Pz7/fv9+/v/+f3++f//+/39+/3/+//9+////f37/f39/f3//f/9/f////37//39//3////9////yH5BAEAAIAALAAAAAA4AFAAQAj+AAEJHEiwoMGDCBMqXIiwiA8tXbxIgXHhgY+FICSIiCFFihIeXRgm9OKlDJMqYs506UIDRIUKD7w8kLCiAw0q0ao8WCFhwgQqDx7E+EJHm0gpUaI0ibKDBo0dXeakazEkxYUOGjRMSQOmQw874eR9IHNPXrFba5Y8CLNDyYULGlZQRVjtzJCmTnew2AGp2j19gAGTC6ctnLvDZfWR07AjCJAd4fTduxctFapbiDKTQ7gjSZcsT6PQqLmCxhA78v4GnuxOHuGzeei8kVLkh5I1b9y80XPp0q1s+lK7E3eQjSIvbqJAEiPGjR0/c9REqyavtTx9rVtn09asmJsvbMb+uLlcrFn3YsqsiRM33M3CDlkUsWMnT978cM206Y/WjH+187cEGOArqKCiCCJ00DEHHXXkIdJBEgQVlEsS1iThAwlg+EAXcNgBySiQQILKJWOM8YYy2Tyo4oqA5HELMtxxVwyLNA5UxAUxxPBWjTjGIIIWNSKUhhddUFFFU0O89BZjQ9DQwYUPVKABCEJg8cYZK5aRxRNM0JDCCimkQMUONXUAwlVOKbGDGHhAMEczgemjTV2jXeCTBqZFoZASVDDRxGildTbHX3zUgJeTZ0Cimj5kBLHDEEM0IU59cd6TDmHm7WFQNHDAwcVoT5m2Qg2tAJPYau6wY01/2ohTjDb+Z91hhiK3FMiILnkcWIw1iLlz0BuPquHEFaDWtEMVclyXWpz1pUNONdKkkkoWyEGSqyKXvYJeNtmEo6pRCEkyaX3ykMPOYOWSw41+2rDTGjndNoMMMsXoUkw05SFzXnlnFaiIikpOIIEUbrzaSit+RPFWByK4ocoordzC74iKKHLGFmm4kQciQSIkgQQIIEAAAQ+Q/IDIIieQAAFROPcHI9heUodh2ujT8c0CzcEdt8Ph7DONGgwxxs+A7BADEUT4SOMEMWyBBRYiEA2ID16oYYYZDsXwQGNOMHGFFUz4ucMFND2qRBdmeDEE0Uq0IccWSuDQwdwXXrBCkxVFKOH+VVB8UceMNHohxhVNipDCEBqkoIGUTu70AA4P3PUEYG6cEQXiM0lwwRBryKNiF1dcwYQQDK+wQxZijGYmnk+tsEIVGrgTZ6VniMHUCHZ3EAWQCWlRxe+X47BCy8UEc08GcmfVwVUxLDHFECPoE01TTWhjTRQimBBDEW64QUYTZczBhBcJCTFEFKODSkMUZcAJWDWMjDJHGW4089df3DiRBRDgwzE7YPLgji5uIQmEzIMaeHgU+nbwqCaEaFEAXI82rqOav8gDLgOzjj5c9YpbXEIR2bjHLQ5yBjdw4QxjGs0OOvA6MQSjGrNLjX2akQ1U0KEMXlACDYh0uS3M4Q3+CeoAHbKBmHuE4yBJ6EEXUveomiBuCKhwA3AqOJmypIMb+ILEH1ChhTXoIUEbqwMiXsELZThjOOEgB8cO4gYqKOEMDNxhFKjQBFmFw4IAZM25uJOKMWyhi35gxFk6WAxnqOcw5wKcQdAgJz84shrVcIMfRpEOSMqjGtGoTnVSJY78dIcRf2ADFPwgsbM0Q2LmaRVmGNKGYmzSPvYxFzsqOZ12dSsbACrlq85Sq1sQ6EBrfBAReHI1baTjUuGIhjZ0UZkC3cI89CqPeQrkBzq4IQ1nWMOCCsijoPhgBUKoQstokJUJQOkBSlADJVqRimKgghEwe4MW0KCxZvisIif+QwCUMnShkD2ABmaQAyQoMYoCXYINdCgGcKRmEAkRQAErI4DKgiIHP/wBEoy4hDvN0wxfMXRFo7CXNYh4j492TBG7VJVJV1oQKDBUCzi6WZQuUAai+UAEPvDRBWikEaTxIGo/EwIP/igFH0hARZoTwRC+8AUtFEFqPlCCFryghZtSRE8H6cIOHnABH0iBWl4wwxGgupIiKUEIPqjAqKhihSY4igYjMGcHUrCDKIS1hFKTAlVFAwIq1W19NMCnhCRQgRBAAQ28SIPP1nCGNBTDaXfZQQoq8LGgYAVSILjQBC6wAyEQAQ11SFGNuvC7P+2ACXO4i+kipNYHdIBMppn+hxteRyYqCEwCOJDCHDyqIixoQQxuleyXojA3rFxgBK57ixcmcNozAOYeeAjCGWZiN7hM4AmjUFEVmpCFJrjuSxEhE1ZAYLq7KQFS0RjU/+5xhjI0YQcauEBesKoQM2QBUp113dzm4CjFZaVM8RWCGwA4u3sAowmq1cAE8GQF+iJECXNkwg6E11kmuCEdGSATCLISlyqAwXkQSI0TuACHdBTjDh0Agwmw0EAyiWElCilCEvDrlKfsoAzC0Ecc9uI6DXDVxxPwwgjuAQc8NSEa3UiDMnghu3v8oXZ3QIYX/KCQIdCxKYGiQhei8dw5tHEIXqjCHGAImHR8QAhAuEL+FsrwP8E0QxdwVogC71JjIXShFdcJDH6sUQxFQJAccHCvE87Qh0WVJRrhCJCBFEKNK0yYgZ3NwgrcAIl0zK414qAPAPPsXQvBSR7TrNiBJKGPNyAkGsbgA1NcxwLXuQEPwrA0s9wRDms8N1XuOOYQJLCF/ESDPwOsVR7glCoSliEOZWCgapNwJDm0AoKSqc49FEGFMtyhVqhIWArWoAgF5WEPLmqDfGTXM4M8oQxXSF2kxpSFHbTADX/wS6XIBatmSKILQzAcpMIkhTSo4Q1pGGM2NqmYg1xhd2sYTQqcdAEqJMENmSywJtnBnVsoopomagMQGVSHQVziFc1AETn+qmNPg1CBCkFwQxC+RKa71bUMsnvuZDRZrmog45138HKu6FCxzGhrVdkQRzhEexAiZRMFe2nSClB3B21AsIrycNav34lDN9wiDwW6TBmdEQ720NoaCTmDGqgghnbvQA7ppt8twnKq+rwLktHIgxbaAIU1+AEVxSgGL3hRSF5tkFt3QEgsdOyGO1zUDWVgxK/1lQ53jbwsnNzOKf2giDdAgQ54zzu/aLgePi9kMqZIRzBGMYpfV6PxlaxGu7BjH3FkwxqrwvYYftDO7jxTl2dBRBsYcongkKtcs4w63AszmGaIA1ZnyTtHzaN5iQVIEXpwj0iw4Abr1OdcFKcPu/T+I/lc8rJftapYbOrAItNhQRHyyLS5CMOffb0qGvqqV949WDE63MEN2qRDbGgUg+WtQARbdnr/cUq6wAg5NwfK1H7TdAl+kAd54AYYswYJ8gpBQllcNTdj4AWMEAxyAAE+JiFKIB6jcAvBUC8jAjNugAUmQgfBVCNBAVsLVwVZwAQPYE5Q8hZ/MAqM0AonqAiDoAXioQdEFyTnVIRBoTIJoAAg0AVyYAeRACIjgghh8AaoMFI+gyEhgwAJoE9QQgBaqAAvWAaBdBmXcQd1ACdl8VE6kk8ZsoVJCFEJMGl2MAdzADOv8AYdpQ+8wFIDUTIj44VBAQgeQlC1ogvNgAouykAHFMiHCkEJqtAK0rQqjKgipWcNvyE7k6gip8QOXTeEmcgQbAAI3VByNBIQAAA7
!usage
{{{[img[AttachFileSample2]]}}}
[img[AttachFileSample2]]
!notes
example of external attachment (no embedded data)
!type
image/jpg
!file
./images/meow2.jpg
!url
http://www.TiddlyTools.com/images/meow2.jpg
!data
[[AustralianQuadRotor|http://goo.gl/3lTyL9]] - use [[FreeMat]] or [[MatLab]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/3lTyL9" frameborder="0" allowfullscreen></iframe>
</html>
[[Black Hat 2013 - Million Browser Botnet|https://youtu.be/ERJmkLxGRC0]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ERJmkLxGRC0" frameborder="0" allowfullscreen></iframe>
</html>

''[[BitTorrent Downloading Using a Proxy|http://goo.gl/C8946Y]]''
''[[FREE PROXY LIST|http://www.samair.ru/proxy/]]''
<html>
<iframe width="1000" height="1000" src="http://goo.gl/C8946Y" frameborder="0" allowfullscreen></iframe>
</html>

''[[BITTORRENT: BYPASS ANY FIREWALL OR THROTTLING ISP WITH SSH|https://goo.gl/DSk57H]]''
''[[public access unix systems for free speech|http://silenceisdefeat.com/]]''
<html>
<iframe width="1000" height="1000" src="https://goo.gl/DSk57H" frameborder="0" allowfullscreen></iframe>
</html>
[[BitTorrent Sync|https://www.getsync.com/]] - [[BitTorrent Sync Help|http://help.getsync.com/hc/en-us]] - [[BitTorrent Sync Links]]
<html>
<iframe width="1000" height="1000" src="https://www.getsync.com/" frameborder="0" allowfullscreen></iframe>
</html>

[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BBitTorrent%20Sync%20Links%5D%5D]] - [[BitTorrentSync Directories|http://glassparrot.tiddlyspot.com/#%5B%5BBitTorrentSync%20Directories%5D%5D]]
[[Emulating Raspberry Pi in Windows the easy way]] (ARM not IBM) - Use [[QEmu/KVM|http://wiki.qemu.org/KVM]] with linux. - See https://en.wikipedia.org/wiki/Cross_compiler
[[PINE A64]] is the world's first 64-bit expandable Quad Core 1.2Ghz supercomputer, tablet, media center, and more... starting at just $15. (ARM not IBM)

[[BitTorrent Sync]] Links -  [[INTERNET FAILURES AT THE SANDFORD HOTEL IN SAN DIEGO]]
The download is slow because the Hotel Internet is slow, but it will get to you without errors, because it is a torrent.
Internet speed tends to be 20KB/s to 100KB/s so it may take a day or two to download a 3.1 Gig iso file. Just keep it running - until you can share it. 
- It will resume where it left off if you turn off your machine. The more people that share, the faster the download, just like torrents, only automatic.

1> [[BitTorrent Sync Link for my Ubuntu Studio Studio4DVD-021416.iso|https://link.getsync.com/#f=BitTorrentSync&sz=31E8&t=1&s=KXAVLRKSGOOP6JN5BA3P3ROX5QRQYGNT&i=CL5SRMKCX2ASFHQBZCQROVB2EUBU4TBDK&v=2.3]] - IBM - 3.1 Gb.  - [[BitTorrent Sync Help|http://help.getsync.com/hc/en-us]]
- The [[BitTorrent Sync]] KEY is B5IHSG5ICHP6EOR6TVTK2OIK7OOBHJQRZ (for manual entry)
- There are 3 System Errors after login. Just cancel them. It's because of Desktop inconsistencies. (password is changeme)
- Report them to Ubuntu if you wish to see why. They're only ugly, not fatal. They don't occur if you install the system.
- I will fix that, someday, but it is not important - I used the iso to make a virtual machine with [[Portable­ VirtualBox|http://www.vbox.me/]]
- Which is now 54 Gigs, after I installed other apps - just small enough for a [[64 Gig Superior|http://www.amazon.com/Silicon-Power-MicroSDXC-Superior-SP064GBSTXDU3V20SP/dp/B015A9YZF6/ref=pd_sim_sbs_147_5?ie=UTF8&dpID=4170rDi7-LL&dpSrc=sims&preST=_AC_UL160_SR160%2C160_&refRID=0BQQHQDT8BS013F8X4ZT]] or [[64 Gig Elite|http://www.amazon.com/dp/B00TB8XZOK/ref=psdc_3015433011_t2_B010Q588D4]] pendrive.
- I used [[UNetbootin Portable|http://portableapps.com/apps/utilities/unetbootin-portable]] for a hard disk install or [[Systemback|https://goo.gl/PE4XtJ]] (which is better) from the DVD. It backs up a running Linux system on the fly.
- [[Make A Live CD/DVD/BootableFlash From a Harddisk Install|MakeALiveCD/DVD/BootableFlashFromHarddiskInstall]]  using [[Systemback|https://goo.gl/PE4XtJ]] - Make one and share.
- [[LinuxLive USB Creator|http://www.linuxliveusb.com/en/features]] looks like it might work for installing an iso and portable virtualbox, but I have never tried it (I like [[Systemback|https://goo.gl/PE4XtJ]])
- For windows 7 backups I use [[fsarchiver|https://www.fsarchiver.org/]] with the [[qt4-fsarchiver|https://sourceforge.net/projects/qt4-fsarchiver/]] GUI which is already installed on this DVD.

- click 
[img[https://goo.gl/BO12T9][https://link.getsync.com/#f=BitTorrentSync&sz=31E8&t=1&s=7NXSBMPOSUMJAZMS4HNOLDSXRXM6KFKK&i=CJWC52QMCWVSC3WQOGV2ICOXGZ7IVLLMX&v=2.2]]
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BCGI%20**Award-Winning**%203D%20Animated%20Short%20HD%3A%20%22Soar%22%20-%20by%20Alyce%20Tzue%5D%5D]]
|[[CGI **Award-Winning** 3D Animated Short HD: "Soar" - by Alyce Tzue|https://goo.gl/pnWQgK]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/UUlaseGrkLc" frameborder="0" allowfullscreen></iframe></html><br><<attach inline>>|# [[Internet Radio]] - [[MiniBrowser]]<br>See [[Eachine H8 Mini RC Quadcopter]]<br>[[mathbff]] - ''[[Eachine H8 MiniQuad - US $13.99|http://goo.gl/RYm5fo]]'' - ''[[Clone Pendrives with UDPcast|http://www.udpcast.linux.lu/cmdlinedoc.html]]''<br>[[HOW DOES FLASH DRIVE WORK?]] - [[TiddlyWiki Tutorial]] - [[Parakeets]]<br>''[[Linux man pages|http://goo.gl/XhBgid]]'' -- [[How to install Google Drive Grive2 on Ubuntu]]<br>[[Migrate Windows7 Hard Drive Partitions To An Oracle VirtualBox VDI File]]<br>[[Is it possible to convert virtual machines to physical environments?]] YES.<br>[[How do I upload a file to MediaFire?|http://knowledgebase.mediafire.com/article.php?id=340]] - [[Dropbox Tour|https://www.dropbox.com/tour]] - [[Gdrive Storage Plans|https://support.google.com/drive/answer/2375123?hl=en&ref_topic=2375005]]<br>[[How to Boot From a USB Drive in VirtualBox (Virtualbox must be started as user:root)|http://openfoamwiki.net/index.php/Installation/Outdated/USB-Stick#How_to_boot_the_USB-Stick_in_a_VirtualBox.3F]]<br>- Another way - [[Youtube|https://youtu.be/aSS1bOF7sDA]]<br>[[BITTORRENT: BYPASS ANY FIREWALL]] - ''https://www.whatismyip.com/''<br>[[Emulating Raspberry Pi in Windows the easy way]]<br>[[Raspberry Pi's Impact on Hacking]] - ''(64-bit Quad Core) [[Raspberry Piâ„¢ 3 Microcomputer|http://goo.gl/Qagr2Y]]''<br>[[PINE A64]] is the world's first 64-bit expandable Quad Core 1.2Ghz supercomputer,<br>tablet, media center, internet PBX, midi box, and more ... starting at just $15.<br>[[Soundlink Audio JavaScript]] - http://www.willit3dprint.com/ <br>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>''[[Kali Linux VMware and VirtualBox Image Downloads|https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/]] - [[Official Kali Linux Docker Images|https://www.kali.org/news/official-kali-linux-docker-images/]] - [[Kali Linux Downloads|https://www.kali.org/downloads/]]''<br>https://en.wikipedia.org/wiki/Docker_(software) - [[Raspberry Pi's Impact on Hacking]]<br>[[Internet Crime Schemes]]<br>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>- Status Reports: [[INTERNET FAILURES AT THE SANDFORD HOTEL IN SAN DIEGO]]<br>- 02/29/16 2:22PM PST - Internet back on line. See  Status Reports|
<<miniBrowser hidecontrols http://tiddlytools.com/#CatalogTabs%20QuickStart>>
[[MiniBrowserPlugin]] - [[MiniBrowserPluginInfo]]
|<<miniBrowser http://www.calculator.net/scientific-calculator.html>>|
|<<miniBrowser http://www.unitconverters.net/>>|
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BCineTank%20MK2-L%20Quadcopter%5D%5D]]
See [[Flying 3D X6]] for Medium Quad
See [[Eachine H8 Mini RC Quadcopter]] for Swarm Quadcopter Project and How To
Control your R/C transmitter from a PC using an Arduino 

[[CineTank MK2-L Quadcopter Build|http://goo.gl/iAuk8q]]
[[Use ASUS Xtion Pro Live for 3d Mapping with Pi Zero or Winbook TW700 Tablet|http://goo.gl/RqyIJk]]
[[ASUS Xtion Pro Live Color RGB Motion Sensor Support Developer|http://goo.gl/uWLgsi]] - (Items shipped: March 9, 2015)
[[Raspberry Pi OpenCV Experiment|https://youtu.be/Eux6BTQ4GSA]]
[[Pi Zero: The Computer That Costs $5|http://goo.gl/oVHi89]] - https://www.adafruit.com/products/2885
[[Hubsan H501S X4 5.8G FPV Brushless With 1080P HD Camera GPS FollowMe RC Quadcopter RTF|http://goo.gl/n7NFdU]] - US $219.99 - https://youtu.be/wkJrnYSVw9Q
<html>
<iframe width="1000" height="1000" src="http://goo.gl/iAuk8q" frameborder="0" allowfullscreen></iframe>
</html>

CineTank MK2-L Quadcopter - http://goo.gl/F0tX5K
<html>
<iframe width="1000" height="1000" src="http://goo.gl/F0tX5K" frameborder="0" allowfullscreen></iframe>
</html>

eXom - The intelligent mapping & inspection drone - Playlist - https://goo.gl/1HFVVu
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EyrGpVkmqBs?list=PLNqEO2KyF8UmJv5_hI2byNgs_BcY9KfS8" frameborder="0" allowfullscreen></iframe>
</html>

3D mapping a property with pix4d + quadcopter - https://youtu.be/q9vRWn2pYOE
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/q9vRWn2pYOE" frameborder="0" allowfullscreen></iframe>
</html>

Eagle Y6 professional mapping drone - https://youtu.be/a3WMVokQaec
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/a3WMVokQaec" frameborder="0" allowfullscreen></iframe>
</html>

The bentwing 3D Aerial Mapping System - https://youtu.be/R7S1xXr3VMM
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/R7S1xXr3VMM" frameborder="0" allowfullscreen></iframe>
</html>

Phoenix Aerial AL3-16 UAV LiDAR Mapping System Overview - https://youtu.be/BhHro_rcgHo
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/BhHro_rcgHo" frameborder="0" allowfullscreen></iframe>
</html>


[[Circuit Tutorials|https://youtu.be/2a1I1X3RV0g?list=PL4ZSD4omd_Aw-ozOphzFCkhWMtBdyEIrP]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/2a1I1X3RV0g?list=PL4ZSD4omd_Aw-ozOphzFCkhWMtBdyEIrP" frameborder="0" allowfullscreen></iframe>
</html>
See [[Eachine H8 Mini RC Quadcopter]]
[[Controlling your R/C transmitter from a PC using an Arduino|https://goo.gl/WMyNeD]]
[[Pi Zero: The Computer That Costs $5|http://goo.gl/oVHi89]] - https://www.adafruit.com/products/2885
[[Eachine H8 Mini RC Quadcopter Spare Parts Transmitter H8mini-001 - US $6.89|http://goo.gl/fN2N6b]]
[[2pcs nRF24L01+ 2.4GHz Wireless Transceiver - Arduino Compatible - $5.95|http://goo.gl/aJ8qSM]]
[[How to Install Ubuntu on Android!|https://youtu.be/YbunTRzEQCI]]
[[50 Pieces NE555N NE555 NE555P General Purpose Single Bipolar Timer DIP8 - $3.46|http://goo.gl/I5UDcH]]
<html>
<iframe width="1000" height="1000" src="https://goo.gl/WMyNeD" frameborder="0" allowfullscreen></iframe>
</html>
See [[Eachine H8 Mini RC Quadcopter]]
[[DEFCON 19: Build your own Synthetic Aperture Radar|https://goo.gl/f4mvmh]]
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/MViVyocQhVw" frameborder="0" allowfullscreen></iframe>
</html>
See [[AncestryDNA|http://scienceport.tiddlyspot.com/#AncestryDNA]] - ONLY$99
* Discover the family story your DNA can tell.
* Uncover your ethnic mix, discover distant relatives, and find new details about your unique family history with a simple DNA test.

I have professed to be a [[Pantheist|https://en.wikipedia.org/wiki/Pantheism]]  ([[Fear > antonyms|https://www.powerthesaurus.org/fear/antonyms]]) in the past, and have been told that my heritage has
some Native American background. However I have read articles about tracing Native American heritage 
with DNA, and there are some complications. There is no question about the [[Legality of the War on Drugs|https://www.revolvy.com/main/index.php?s=Legality%20of%20the%20War%20on%20Drugs&item_type=topic]] 
with the Native American tribes in the study and use of ''[[Psilocybin|http://scienceport.tiddlyspot.com/#Psilocybin]]'' in their culture, of which I am an advocate.
Demonizing the study and use of ''[[Ganoderma|https://youtu.be/sh6CzNbRtks?list=RDsh6CzNbRtks]]'' in any culture, would be equivalent to making a [[mandamus|http://legal-dictionary.thefreedictionary.com/mandamus]] about
[[Darwinism|https://en.wikipedia.org/wiki/Darwinism]] or the study of [[DNA|https://en.wikipedia.org/wiki/DNA]] just to preserve [[Capitalism|https://en.wikipedia.org/wiki/Capitalism]] by promoting [[Disease mongering|https://en.wikipedia.org/wiki/Disease_mongering]]. It's not honest.

[[How to Prove Native American Ancestry|https://youtu.be/dIu-WF1LZY4]] - [[Computer Grown Ganoderma|https://youtu.be/CuOIQY5IvR4]] - [[Festivals Concierge Services|http://festivalsconcierge.com/the-mayan-jungle-experience/]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/dIu-WF1LZY4" frameborder="0" allowfullscreen></iframe></html>
Same with [[Ginseng|https://www.youtube.com/results?search_query=Ginseng]] - [[From Ginseng to Mushrooms: Goodies from your Woods|https://youtu.be/3bGECN7nZpA]] - [[Bioprospecting|https://en.wikipedia.org/wiki/Bioprospecting]]
See video by [[Kathleen Harrison, MA|http://www.plantteachers.com/videos-visionary-convergence-2015/]] (not listed on Youtube) - [[former|http://www.thefreedictionary.com/Higgs+boson]] [[maenad|http://www.thefreedictionary.com/maenad]] ([[2|http://www.thefreedictionary.com/bozon]]) of [[Terence McKenna|https://en.wikipedia.org/wiki/Terence_McKenna]]
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BData%20telemetry%20with%20MultiWii%20integrated%20nRF24L01%5D%5D]]
|See [[3d printed quadcopter]]<br>[[Data telemetry with MultiWii integrated nRF24L01|https://goo.gl/ldkCHl]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/bxlJckevIEk" frameborder="0" allowfullscreen></iframe></html>|Using the ack payload feature of nRF24L01 module to send real-time IMU data back to the transmitter.<br>Source - http://www.iforce2d.net/MultiWii_RF24.zip <br>TX source - http://www.iforce2d.net/sketches/TelemetryTransmitter.zip <br>[[Arduino RC things Playlist|https://goo.gl/Vy91lD]] <br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/qtKUwQitqz8?list=PLzidsatoEzeiyDUJTK8o0SNKbzWtbXKrX" frameborder="0" allowfullscreen></iframe></html>|
|[[Arduino and nRF24L01+ Data Transceiver|https://goo.gl/TZzkhx]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/wlhuO82IZjQ" frameborder="0" allowfullscreen></iframe></html>|[[Follow-up: Arduino and High Power nRF24L01+ Data Transceiver|https://goo.gl/4yE2rc]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/2A4Uo30eea0" frameborder="0" allowfullscreen></iframe></html>|
[[MultiWii|http://www.multiwii.com/]] - http://www.multiwii.com/wiki/?title=Main_Page
<html>
<iframe width="1000" height="1000" src="http://www.multiwii.com/" frameborder="0" allowfullscreen></iframe>
</html>

- click 
[img[http://i.imgur.com/KM1vRf9.jpg][https://goo.gl/bGaTyV]]
/***
|Name|[[DatePlugin]]|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|
This plugin provides a general approach to displaying formatted dates and/or links and popups that permit easy navigation and management of tiddlers based on their creation/modification dates.
!!!!!Documentation
>see [[DatePluginInfo]]
!!!!!Configuration
<<<
<<option chkDatePopupHideCreated>> omit 'created' section from date popups
<<option chkDatePopupHideChanged>> omit 'changed' section from date popups
<<option chkDatePopupHideTagged>> omit 'tagged' section from date popups
<<option chkDatePopupHideReminders>> omit 'reminders' section from date popups
<<option chkShowJulianDate>> display Julian day number (1-365) below current date

see [[DatePluginConfig]] for additional configuration settings, for use in calendar displays, including:
*date formats
*color-coded backgrounds
*annual fixed-date holidays
*weekends
<<<
!!!!!Revisions
<<<
2011.04.23 2.7.3 added config.macros.date.tipformat for custom mouseover tooltip and config.macros.date.leadtime for custom reminder leadtime (default=90 days)
2010.12.15 2.7.2 omit date highlighting when hiding popup items (created/changed/tagged/reminders)
|please see [[DatePluginInfo]] for additional revision details|
2005.10.30 0.9.0 pre-release
<<<
!!!!!Code
***/
//{{{
version.extensions.DatePlugin= {major: 2, minor: 7, revision: 3, date: new Date(2011,4,23)};

config.macros.date = {
	format: 'YYYY.0MM.0DD', // default date display format
	linkformat: 'YYYY.0MM.0DD', // 'dated tiddler' link format
	tipformat: 'YYYY.0MM.0DD', // 'dated tiddler' link tooltip format
	leadtime: 31, // find reminders up to 31 days from now
	linkedbg: '#babb1e',
	todaybg: '#ffab1e',
	weekendbg: '#c0c0c0',
	holidaybg: '#ffaace',
	createdbg: '#bbeeff',
	modifiedsbg: '#bbeeff',
	remindersbg: '#c0ffee',
	weekend: [ 1,0,0,0,0,0,1 ], // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ],
	holidays: [ '01/01', '07/04', '07/24', '11/24' ]
		// NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
};

config.macros.date.handler = function(place,macroName,params)
{
	// default: display current date
	var now =new Date();
	var date=now;
	var mode='display';
	if (params[0]&&['display','popup','link'].contains(params[0].toLowerCase()))
		{ mode=params[0]; params.shift(); }

	if (!params[0] || params[0]=='today')
		{ params.shift(); }
	else if (params[0]=='filedate')
		{ date=new Date(document.lastModified); params.shift(); }
	else if (params[0]=='tiddler')
		{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
	else if (params[0].substr(0,8)=='tiddler:')
		{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
	else {
		var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
		var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
		var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
		date = new Date(y,m-1,d);
	}
	// date format with optional custom override
	var format=this.format; if (params[0]) format=params.shift();
	var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
	showDate(place,date,mode,format,linkformat);
}

window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
	mode	  =mode||'display';
	format	  =format||config.macros.date.format;
	linkformat=linkformat||config.macros.date.linkformat;

	// format the date output
	var title=date.formatString(format);
	var linkto=date.formatString(linkformat);
	var tip=date.formatString(config.macros.date.tipformat);

	// just show the formatted output
	if (mode=='display') { place.appendChild(document.createTextNode(title)); return; }

	// link to a 'dated tiddler'
	var link = createTiddlyLink(place, linkto, false);
	link.appendChild(document.createTextNode(title));
	link.title = tip;
	link.date = date;
	link.format = format;
	link.linkformat = linkformat;

	// if using a popup menu, replace click handler for dated tiddler link
	// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
	if (mode=='popup') {
		link.onclick = onClickDatePopup;
		link.style.fontStyle='normal';
	}
	// format the popup link to show what kind of info it contains (for use with calendar generators)
	if (autostyle) setDateStyle(place,link,weekend);
}
//}}}
//{{{
// NOTE: This function provides default logic for setting the date style when displayed in a calendar
// To customize the date style logic, please see[[DatePluginConfig]]
function setDateStyle(place,link,weekend) {
	// alias variable names for code readability
	var date=link.date;
	var fmt=link.linkformat;
	var linkto=date.formatString(fmt);
	var cmd=config.macros.date;

	var co=config.options; // abbrev

	if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=''))
		{ place.style.background = cmd.weekendbg; }
	if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
		{ link.style.fontStyle='normal'; link.style.fontWeight='bold'; }
	if (hasReminders(date))
		{ link.style.textDecoration='underline'; }
	if (isToday(date))
		{ link.style.border='1px solid black'; }
	if (isHoliday(date)&&(cmd.holidaybg!=''))
		{ place.style.background = cmd.holidaybg; }
	if (hasCreateds(date)&&(cmd.createdbg!=''))
		{ place.style.background = cmd.createdbg; }
	if (hasModifieds(date)&&(cmd.modifiedsbg!=''))
		{ place.style.background = cmd.modifiedsbg; }
	if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=''))
		{ place.style.background = cmd.linkedbg; }
	if (hasReminders(date)&&(cmd.remindersbg!=''))
		{ place.style.background = cmd.remindersbg; }
	if (isToday(date)&&(cmd.todaybg!=''))
		{ place.style.background = cmd.todaybg; }
	if (config.options.chkShowJulianDate) { // optional display of Julian date numbers
		var m=[0,31,59,90,120,151,181,212,243,273,304,334];
		var d=date.getDate()+m[date.getMonth()];
		var y=date.getFullYear();
		if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0)
			d++; // after February in a leap year
		wikify('@@font-size:80%;<br>'+d+'@@',place);
	}

}
//}}}
//{{{
function isToday(date) // returns true if date is today
	{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }
function isWeekend(date) // returns true if date is a weekend
	{ return (config.macros.date.weekend[date.getDay()]); }
function isHoliday(date) // returns true if date is a holiday
{
	var longHoliday = date.formatString('0MM/0DD/YYYY');
	var shortHoliday = date.formatString('0MM/0DD');
	for(var i = 0; i < config.macros.date.holidays.length; i++) {
		var holiday=config.macros.date.holidays[i];
		if (holiday==longHoliday||holiday==shortHoliday) return true;
	}
	return false;
}
//}}}
//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e) { e=e||window.event;
	var p=Popup.create(this); if (!p) return false;
	// always show dated tiddler link (or just date, if readOnly) at the top...
	if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
		createTiddlyLink(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat),true);
	else
		createTiddlyText(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat));
	addCreatedsToPopup(p,this.date,this.format);
	addModifiedsToPopup(p,this.date,this.format);
	addTaggedToPopup(p,this.date,this.linkformat);
	addRemindersToPopup(p,this.date,this.linkformat);
	Popup.show(); e.cancelBubble=true; if(e.stopPropagation)e.stopPropagation(); return false;
}
//}}}
//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
	var createds= { };
	var tiddlers = store.getTiddlers('title','excludeLists');
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].created.formatString('YYYY0MM0DD')
		if (!createds[date])
			createds[date]=new Array();
		createds[date].push(tiddlers[t].title);
	}
	return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
	if (config.options.chkDatePopupHideCreated) return false;
	if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
	return (config.macros.date.createds[date.formatString('YYYY0MM0DD')]!=undefined);
}

function addCreatedsToPopup(p,when,format)
{
	if (config.options.chkDatePopupHideCreated) return false;
	var force=(store.isDirty() && when.formatString('YYYY0MM0DD')==new Date().formatString('YYYY0MM0DD'));
	if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var createds = config.macros.date.createds[when.formatString('YYYY0MM0DD')];
	if (createds) {
		createds.sort();
		var e=createTiddlyElement(p,'div',null,null,'created ('+createds.length+')');
		for(var t=0; t<createds.length; t++) {
			var link=createTiddlyLink(createTiddlyElement(p,'li'),createds[t],false);
			link.appendChild(document.createTextNode(indent+createds[t]));
		}
	}
}
//}}}
//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
	var modifieds= { };
	var tiddlers = store.getTiddlers('title','excludeLists');
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].modified.formatString('YYYY0MM0DD')
		if (!modifieds[date])
			modifieds[date]=new Array();
		modifieds[date].push(tiddlers[t].title);
	}
	return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
	if (config.options.chkDatePopupHideChanged) return false;
	if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
	return (config.macros.date.modifieds[date.formatString('YYYY0MM0DD')]!=undefined);
}

function addModifiedsToPopup(p,when,format)
{
	if (config.options.chkDatePopupHideChanged) return false;
	var date=when.formatString('YYYY0MM0DD');
	var force=(store.isDirty() && date==new Date().formatString('YYYY0MM0DD'));
	if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var mods = config.macros.date.modifieds[date];
	if (mods) {
		// if a tiddler was created on this date, don't list it in the 'changed' section
		if (config.macros.date.createds && config.macros.date.createds[date]) {
			var temp=[];
			for(var t=0; t<mods.length; t++)
				if (!config.macros.date.createds[date].contains(mods[t]))
					temp.push(mods[t]);
			mods=temp;
		}
		mods.sort();
		var e=createTiddlyElement(p,'div',null,null,'changed ('+mods.length+')');
		for(var t=0; t<mods.length; t++) {
			var link=createTiddlyLink(createTiddlyElement(p,'li'),mods[t],false);
			link.appendChild(document.createTextNode(indent+mods[t]));
		}
	}
}
//}}}
//{{{
function hasTagged(date,format) // returns true if date is tagging other tiddlers
{
	if (config.options.chkDatePopupHideTagged) return false;
	return store.getTaggedTiddlers(date.formatString(format)).length>0;
}

function addTaggedToPopup(p,when,format)
{
	if (config.options.chkDatePopupHideTagged) return false;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var tagged=store.getTaggedTiddlers(when.formatString(format));
	if (tagged.length) var e=createTiddlyElement(p,'div',null,null,'tagged ('+tagged.length+')');
	for(var t=0; t<tagged.length; t++) {
		var link=createTiddlyLink(createTiddlyElement(p,'li'),tagged[t].title,false);
		link.appendChild(document.createTextNode(indent+tagged[t].title));
	}
}
//}}}
//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
	var reminders = { };
	if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
		var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
		for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
	}
	return reminders;
}

function hasReminders(date) // returns true if date has reminders
{
	if (config.options.chkDatePopupHideReminders) return false;
	if (window.reminderCacheForCalendar)
		return window.reminderCacheForCalendar[date]; // use calendar cache
	if (!config.macros.date.reminders)
		config.macros.date.reminders = indexReminders(date,config.macros.date.leadtime); // create a reminder cache
	return (config.macros.date.reminders[date]);
}

function addRemindersToPopup(p,when,format)
{
	if (config.options.chkDatePopupHideReminders) return false;
	if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed

	var indent = String.fromCharCode(160)+String.fromCharCode(160);
	var reminders=findTiddlersWithReminders(when, [0,config.macros.date.leadtime],null,null,1);
	createTiddlyElement(p,'div',null,null,'reminders ('+(reminders.length||'none')+')');
	for(var t=0; t<reminders.length; t++) {
		link = createTiddlyLink(createTiddlyElement(p,'li'),reminders[t].tiddler,false);
		var diff=reminders[t].diff;
		diff=(diff<1)?'Today':((diff==1)?'Tomorrow':diff+' days');
		var txt=(reminders[t].params['title'])?reminders[t].params['title']:reminders[t].tiddler;
		link.appendChild(document.createTextNode(indent+diff+' - '+txt));
	}
	if (readOnly) return;	// readonly... omit 'new reminder...' command
	var rem='\\<\\<reminder day:%0 month:%1 year:%2 title:"Enter a reminder title here"\\>\\>';
	rem=rem.format([when.getDate(),when.getMonth()+1,when.getYear()+1900]);
	var cmd="<<newTiddler label:[["+indent+"new reminder...]] prompt:[[add a reminder to '%0']]"
		+" title:[[%0]] text:{{var t=store.getTiddlerText('%0','');t+(t.length?'\\n':'')+'%1'}} tag:%2>>";
	wikify(cmd.format([when.formatString(format),rem,config.options.txtCalendarReminderTags||'']),
		createTiddlyElement(p,'li'));
}
//}}}
/***
|Name|DatePluginConfig|
|Source|http://www.TiddlyTools.com/#DatePluginConfig|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|formats, background colors and other optional settings for DatePlugin|
***/
// // Default popup content display options (can be overridden by cookies)
//{{{
if (config.options.chkDatePopupHideCreated===undefined)
	config.options.chkDatePopupHideCreated=false;
if (config.options.chkDatePopupHideChanged===undefined)
	config.options.chkDatePopupHideChanged=false;
if (config.options.chkDatePopupHideTagged===undefined)
	config.options.chkDatePopupHideTagged=false;
if (config.options.chkDatePopupHideReminders===undefined)
	config.options.chkDatePopupHideReminders=false;
//}}}

// // show Julian date number below regular date
//{{{
if (config.options.chkShowJulianDate===undefined)
	config.options.chkShowJulianDate=false;
//}}}

// // fixed-date annual holidays
//{{{
config.macros.date.holidays=[
	"01/01", // NewYearsDay, 
	"07/04", // US Independence Day
	"07/24"  // Eric's Birthday (hooray!)
];
//}}}

// // weekend map (1=weekend, 0=weekday)
//{{{
config.macros.date.weekend=[ 1,0,0,0,0,0,1 ]; // day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6
//}}}

// // date display/link formats
//{{{
config.macros.date.format="YYYY.0MM.0DD"; // default date display format
config.macros.date.linkformat="YYYY.0MM.0DD"; // 'dated tiddler' link format
config.macros.date.tipformat="YYYY.0MM.0DD"; // 'dated tiddler' tooltip format
//}}}

// // reminder lead time
//{{{
config.macros.date.leadtime=31; // find reminders up to 31 days from now
//}}}

// // When displaying a calendar (see [[CalendarPlugin]]), you can customize the colors/styles that are applied to the calendar dates by modifying the values and/or functions below:
//{{{
// default calendar colors
config.macros.date.weekendbg="#c0c0c0";
config.macros.date.holidaybg="#ffaace";
config.macros.date.createdbg="#bbeeff";
config.macros.date.modifiedsbg="#bbeeff";
config.macros.date.linkedbg="#babb1e";
config.macros.date.remindersbg="#c0ffee";

// apply calendar styles
function setDateStyle(place,link,weekend) {
	// alias variable names for code readability
	var date=link.date;
	var fmt=link.linkformat;
	var linkto=date.formatString(fmt);
	var cmd=config.macros.date;

	if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=""))
		{ place.style.background = cmd.weekendbg; }
	if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
		{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
	if (hasReminders(date))
		{ link.style.textDecoration="underline"; }
	if (isToday(date))
		{ link.style.border="1px solid black"; }
	if (isHoliday(date)&&(cmd.holidaybg!=""))
		{ place.style.background = cmd.holidaybg; }
	if (hasCreateds(date)&&(cmd.createdbg!=""))
		{ place.style.background = cmd.createdbg; }
	if (hasModifieds(date)&&(cmd.modifiedsbg!=""))
		{ place.style.background = cmd.modifiedsbg; }
	if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=""))
		{ place.style.background = cmd.linkedbg; }
	if (hasReminders(date)&&(cmd.remindersbg!=""))
		{ place.style.background = cmd.remindersbg; }
	if (isToday(date)&&(cmd.todaybg!=""))
		{ place.style.background = cmd.todaybg; }
	if (config.options.chkShowJulianDate) {
		var m=[0,31,59,90,120,151,181,212,243,273,304,334];
		var d=date.getDate()+m[date.getMonth()];
		var y=date.getFullYear();
		if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0) d++; // after February in a leap year
		wikify("@@font-size:80%;<br>"+d+"@@",place);
	}
	var t=store.getTiddlerText(linkto,'')
	if (config.options.chkInlineCalendarJournals && t.length) wikify('<br>'+t,place);
}
//}}}
|Name|DatePluginInfo|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for DatePlugin|
This plugin provides a general approach to displaying formatted dates and/or links and popups that permit easy navigation and management of tiddlers based on their creation/modification dates.
!!!!!Usage
<<<
This plugin displays formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30).  Optionally, you can create a link to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to tiddlers that were created/changed on that date, or are tagged with that date and, if the [[ReminderMacros|http://remindermacros.tiddlyspot.com/]] plugin is installed, any pending reminders for next month.  There is also a public API, so other plugins can embed a variety of formatted date output, links, and/or popup menus.
{{{
<<date mode date format linkformat>>
}}}
//all parameters are optional//
*''mode''<br>is one of:
**''display'' (default)<br>shows a formatted date
**''link''<br>creates a link to a specific 'date titled' tiddler
**''popup''<br>creates a popup command containing a dated tiddler link, plus links to changes and reminders.
*''date'' (or ''tiddler'' or ''tiddler:title'' or ''today'' or ''filedate'')<br>enter ANY date (not just today) as space-separated year, month, and day parameters (e.g., 2011 4 23).  You can use pre-defined variables, Y, M, and D for the current year, month and day, repectively.  These variables can be combined with simple mathematical expressions to calculate ''relative dates'' (e.g., D+1 = tomorrow, M-1 = last month, Y+1= next year, etc.)  Alternatively, you can use special keywords in place of the year/month/day parameters to access tiddler and file dates:
**''tiddler'' displays the modification date of the current tiddler.
**''tiddler://name-of-tiddler//'' displays the modification date of a specific tiddler.
**''today'' shows the current date.
**''filedate'' shows the modification date of the entire document.  
*{{block{
''format'' (and ''linkformat'') (default: YYYY.0MM.0DD)<br>uses standard ~TiddlyWiki date formatting syntax to specify the title of the target tiddler.
>''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero
>''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero
>''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds
>//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//
}}}
*{{block{
''linkformat''<br>specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format.  The default tooltip is same as the title of the linked tiddler.  You can customize the tooltip by modifying the definition in [[DatePluginConfig]]:
{{{
config.macros.date.tipformat="YYYY.0MM.0DD"; // 'dated tiddler' tooltip format
}}}
}}}
You can adjust the 'lead time' for display of [[reminders|http://remindermacros.tiddlyspot.com/]] by modifying the definition in [[DatePluginConfig]]:
{{{
config.macros.date.leadtime=30; // find reminders up to 30 days from now
}}}
In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:
{{{
showDate(place, date, mode, format, linkformat, autostyle, weekend);
}}}
Note that the javascript API supports two //optional// true/false parameters, in addition those provided by the macro interface:
*''autostyle''<br>font/background styles of formatted dates are automatically adjusted to show the date's status:  'today' is boxed, 'changes' are bold, 'reminders' are underlined, weekends, holidays, changes, and reminders each have a different background color to make them more visibly distinct from one another.
*''weekend''<br>true=day is a weekend, false=day is a weekday, default=automatically determine if a given date falls on a weekend.
<<<
!!!!!Examples
<<<
{{{The current date: <<date>>}}}
>The current date: <<date>>
{{{The current time: <<date today "0hh:0mm:0ss">>}}}
>The current time: <<date today "0hh:0mm:0ss">>
{{{Today's blog: <<date link today "DDD, MMM DDth, YYYY">>}}}
>Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
{{{Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>}}}
>Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
{{{The first day of next month will be a <<date Y M+1 1 "DDD">>}}}
>The first day of next month will be a <<date Y M+1 1 "DDD">>
{{{This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>}}}
>This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
{{{The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>}}}
>The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
{{{This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>}}}
>This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
{{{<<date Y 07 24 "MMM DDth, YYYY">> will be a <<date Y 07 24 "DDD">>}}}
><<date Y 07 24 "MMM DDth, YYYY">> will be a <<date Y 07 24 "DDD">>
<<<
!!!!!Revisions
<<<
2011.04.23 2.7.3 added config.macros.date.tipformat for custom mouseover tooltip
2010.12.15 2.7.2 omit date highlighting when hiding popup items (created/changed/tagged/reminders)
2009.05.31 2.7.1 in addRemindersToPopup(), 'new reminder....' command now uses {{{<<newTiddler>>}}} macro.  Also, general code reduction/cleanup.
2008.03.08 2.7.0 in addModifiedsToPopup(), if a tiddler was created on the specified date, don't list it in the 'changed' section of the popup.  Based on a request from Kashgarinn
2008.01.31 2.6.0 refactored date style logic into separate setDateStyle() function so it can be overridden by a custom definition.  See [[DatePluginConfig]].
2008.01.11 2.5.0 added options to selectively suppress created/changes/tagged/reminders popup content 
2008.01.08 [*.*.*] plugin size reduction: documentation moved to DatePluginInfo
2007.11.21 2.4.0 added hasTagged() and addTaggedToPopup() to list any tiddlers that has been tagged using the title of the dated journal tiddler asa tag value (i.e., the tiddlers that will be listed in the standard "tagging" display when viewing the journal tiddler itself).  Based on a request from Coby.
2007.06.20 2.3.1 in onClickDatePopup(), use Popup.show() instead of deprecated ScrollToTiddlerPopup().  Fixes fatal error that prevents popups from being properly displayed
2007.05.31 2.3.0 list "created" tiddlers in date popup.  Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.
2006.05.09 2.2.1 added "todaybg" handling to set background color of current date.  Also, honor excludeLists tag when getting lists of tiddlers.  Based on suggestions by Mark Hulme.
2006.05.05 2.2.0 added "linkedbg" handling to set background color when a 'dated tiddler' exists.  Based on a suggestion by Mark Hulme.
2006.03.08 2.1.2 add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler.  Thanks to Jeremy Sheeley for these additional tweaks.
2006.03.06 2.1.0 hasReminders() nows uses window.reminderCacheForCalendar[] when present.  If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders.  Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").
2006.02.14 2.0.5 when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
2006.02.05 2.0.4 added var to variables that were unintentionally global.  Avoids FireFox 1.5.0.1 crash bug when referencing global variables
2006.01.18 2.0.3 In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content.  With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned.  To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
2006.01.11 2.0.2 correct 'weekend' override detection logic in showDate()
2006.01.10 2.0.1 allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
2005.12.27 2.0.0 Update for TW2.0
Added parameter handling for 'linkformat'
2005.12.21 1.2.2 FF's date.getYear() function returns 105 (for the current year, 2005).  When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number.  But IE's date.getYear() already returns 2005.  As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005).  Adding +1900 is now conditional so the values will be correct on both browsers.
2005.11.07 1.2.1 added support for "tiddler" dynamic date parameter
2005.11.06 1.2.0 added support for "tiddler:title" dynamic date parameter
2005.11.03 1.1.2 when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu.  Based on a suggestion from BenjaminKudria.
2005.11.03 1.1.1 Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache.  While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed.  This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
2005.11.01 1.1.0 corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended.  This should hopefully speed up calendar generators and other plugins that render multiple dates...
2005.10.31 1.0.1 documentation and code cleanup
2005.10.31 1.0.0 initial public release
2005.10.30 0.9.0 pre-release
<<<
[[My Mediawiki]]
[[Universal Licensing System]]
[[Hey Google Phrases]]
[[Ocean Energy - Wave Power Station]]
[[Additive Manufacturing - Ceramic 3D Printing Breakthrough]]
[[DNA]]
[[Moses!]]
[[Shoutcast]]
[[PermaView]]
[[Meet the dazzling flying machines of the future]]
[[Amazing In Motion - SWARM]]
[[CGI **Award-Winning** 3D Animated Short HD: "Soar" - by Alyce Tzue]]
[[SiteSubtitle]]
[[Vertical Takeoff and Landing Aircraft without Rotating Aerofoil]]
[[Korean Air Lines Flight 007]]
[[Parakeets]]
[[MiniBrowser]]
[[Eachine H8 Mini RC Quadcopter]]
[[Quadcopter Tracking]]
[[mathbff]]
[[Data telemetry with MultiWii integrated nRF24L01]]
[[The Paparazzi Project]]
[[BitTorrent Sync Links]]
[[How to install Google Drive Grive2 on Ubuntu]]
[[Circuit Tutorials]]
[[3D-printed Micro RC Truck "Unimog" and Transmitter (1/87)]]
[[AustralianQuadRotor]]
[[DefaultTiddlers]]
[[GettingStarted]]
/***
|''Name''|DiffFormatter|
|''Description''|highlighting of text comparisons|
|''Author''|FND|
|''Version''|0.9.0|
|''Status''|beta|
|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/FND/formatters/DiffFormatter.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Keywords''|formatting|
!Description
Highlights changes in a unified [[diff|http://en.wikipedia.org/wiki/Diff#Unified_format]].
!Notes
Based on Martin Budden's [[DiffFormatterPlugin|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/DiffFormatterPlugin.js]].
!Usage
The formatter is applied to blocks wrapped in <html><code>{{{diff{..}}}</code></html> within tiddlers tagged with "diff".
!Revision History
!!v0.9 (2010-04-07)
* initial release; fork of DiffFormatterPlugin
!StyleSheet
.diff { white-space: pre; font-family: monospace; }
.diff ins, .diff del { display: block; text-decoration: none; }
.diff ins { background-color: #dfd; }
.diff del { background-color: #fdd; }
.diff .highlight { background-color: [[ColorPalette::SecondaryPale]]; }
!Code
***/
//{{{
(function() {

config.shadowTiddlers.StyleSheetDiffFormatter = store.getTiddlerText(tiddler.title + "##StyleSheet");
store.addNotification("StyleSheetDiffFormatter", refreshStyles);

var formatters = [{
		name: "diffWrapper",
		match: "^\\{\\{diff\\{\n", // XXX: suboptimal
		termRegExp: /(.*\}\}\})$/mg,
		handler: function(w) {
			var el = createTiddlyElement(w.output, "div", null, "diff");
			w.subWikifyTerm(el, this.termRegExp);
		}
	}, {
		name: "diffRange",
		match: "^(?:@@|[+\\-]{3}) ",
		lookaheadRegExp: /^(?:@@|[+\-]{3}) .*\n/mg,
		handler: function(w) {
			createTiddlyElement(w.output, "div", null, "highlight").
				innerHTML = "&#8230;";
			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
				w.nextMatch = this.lookaheadRegExp.lastIndex;
			}
		}
	}, {
		name: "diffAdded",
		match: "^\\+",
		termRegExp: /(\n)/mg,
		handler: function(w) {
			var el = createTiddlyElement(w.output, "ins", null, "added");
			w.subWikifyTerm(el, this.termRegExp);
		}
	}, {
		name: "diffRemoved",
		match: "^-",
		termRegExp: /(\n)/mg,
		handler: function(w) {
			var el = createTiddlyElement(w.output, "del", null, "removed");
			w.subWikifyTerm(el, this.termRegExp);
		}
	}
];

config.parsers.diffFormatter = new Formatter(formatters);
config.parsers.diffFormatter.format = "diff";
config.parsers.diffFormatter.formatTag = "diff";

})();
//}}}
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BEachine%20H8%20Mini%20RC%20Quadcopter%5D%5D]] - See [[Future Drones|Top 10 Smart #Drone: New Future #Technology #UAV Existed in 2016!]]
|[[Eachine H8 headless mode explained - more or less|https://youtu.be/hrPdUDX-C70]]<br><html><iframe width="420" height="315" src="https://www.youtube.com/embed/hrPdUDX-C70" frameborder="0" allowfullscreen></iframe></html>|[[Eachine H8 mini FPV modification|https://youtu.be/Xa5BCGrlBwE]] - [[Bangood|http://goo.gl/WYwZXk]] - US $13.99<br>- See [[Flying 3D X6]] for FPV cameras, transmitters, and receivers.<br>[[FPV AIO 600TVL 170 Degree mini Camera 5.8G 8CH Transmitter All in One Only 3g - US $39.99|http://goo.gl/uLd6R7]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/Xa5BCGrlBwE" frameborder="0" allowfullscreen></iframe></html>|

See [[CineTank MK2-L Quadcopter]] for Large Quad
See [[Flying 3D X6]] and [[Kaideng K70C|Kaideng K70C Sky Warrior Drone]] for Medium Quad

https://github.com/garyrust/H8QuadMod  -  https://git-scm.com/docs - [[Git Cheatsheet|https://goo.gl/y0BR0J]]
Project - 1> [[Eachine H8 Mini RC Quadcopter]] - [[The Paparazzi Project]] - [[Tedtalk-Robots that fly]]
Project - 2> [[How to play piano|http://psychology.tiddlyspot.com/#%5B%5BHow%20to%20play%20piano%5D%5D]]
Project - 3> [[DEFCON 19: Build your own Synthetic Aperture Radar]]

Idea: Use Medium Smart - Quads - [[Kaideng K70C|Kaideng K70C Sky Warrior Drone]] - (Instrumented with the [[Ultimate GPS]], [[wifi telemetry|https://learn.adafruit.com/downloads/pdf/home-automation-in-the-cloud-with-the-esp8266-and-adafruit-io.pdf]], and a [[FPV camera|http://www.banggood.com/FPV-AIO-600TVL-170-Degree-mini-Camera-5_8G-8CH-Transmitter-All-in-One-Only-3g-p-1015137.html]]) to provide navigation information to a swarm 
of [[minimally modified|http://www.banggood.com/Eachine-H8-Mini-RC-Quadcopter-Spare-Parts-Receiver-Board-H8mini-004-p-977949.html]] slave Eachine H8 micro-drones (US$13.99) by [[bit-banging|https://en.wikipedia.org/wiki/Bit_banging]] control codes on a wifi channel. (mount this modified board on [[K70C|Kaideng K70C Sky Warrior Drone]] to virtually mirror H8 control codes)
See [[How-To: Shrinkify Your Arduino Projects]] - See ''[[Adafruit Color Sensor|https://learn.adafruit.com/downloads/pdf/adafruit-color-sensors.pdf]]'' - See ''[[Sequential logic|https://en.wikipedia.org/wiki/Sequential_logic]]'' - See ''[[Repeater|https://en.wikipedia.org/wiki/Repeater]]'' - See ''[[Dynamic dispatch|https://en.wikipedia.org/wiki/Dynamic_dispatch]]'' - See ''[[Computer cluster|https://en.wikipedia.org/wiki/Computer_cluster]]''
[[3d merge|3d scanning for free]] the the pixels of cameras on a swarm of ''[[Eachine H8C Mini With 2MP Camera 2.4G 6-Axis Headless Mode RC Quadcopter RTF|http://www.banggood.com/Eachine-H8C-Mini-With-2MP-Camera-2_4G-6-Axis-Headless-Mode-RC-Quadcopter-RTF-p-1008944.html]]'' (US$25.99) into 
[[HDR|https://en.wikipedia.org/wiki/High-dynamic-range_imaging]] (postprocessed) panorama maps, while recharging cluster launched H8s. This could be used for [[spectrographic|https://en.wikipedia.org/wiki/Spectroscopy]] inspection of agriculture or mineralogical plots. (IR to UV temperatures)
(Adafruit Color Sensors have a 3,800,000:1 dynamic Color temperature range).  A [[K70C|Kaideng K70C Sky Warrior Drone]] should be capable of carrying a 4 watt MQTT store and forward [[VHF/UHF transponder|http://www.amazon.com/gp/product/B007H4VT7A?psc=1&redirect=true&ref_=oh_aui_detailpage_o05_s00]] 
when cluster launched. (''[[BaoFeng UV-5R|http://www.baofengradio.com/en/ProShowcn.asp?ID=141]]'' has a 16 oz shipping weight with charger, mike, and battery - much less when stripped down. It can operate simplex with repeaters on 
2 meters and 400 centimeters - and can be operated on marine bands and vhf citizens band in emergencies. It will do [[bit-banged|https://en.wikipedia.org/wiki/Bit_banging]] ''[[PSK|https://en.wikipedia.org/wiki/Phase-shift_keying]]'' and ''[[Spread spectrum|https://en.wikipedia.org/wiki/Spread_spectrum]]''. It is software controlled).
Cluster launch and ''[[charge|http://www.banggood.com/IMAX-B6-AC-B6AC-Lipo-NiMH-3S-RC-Battery-Balance-Charger-p-908064.html]]'' between Repeater stations when possible and use them for [[RDF|https://en.wikipedia.org/wiki/Radio_direction_finder]]  Radio direction finder way-points. (Use a stripped down Adafruit [[SDR|https://www.adafruit.com/products/1497]] and [[Raspberry Pi Zero|https://www.adafruit.com/products/2885]])
You need lots of programmable radio frequencies, and a stable time clock when clustering, then a SDR can be programmed as a RDF easilly, by using a differential phase locked loop.
See [[Colorburst|https://en.wikipedia.org/wiki/Colorburst]] for an example of simplex quadrature synchronization in a sequential time base. GPS/RDF integrals can be relayed the same way in simplex. This way. Send a burst to 
syncronize the phase of a sweep oscilator on all quads.  Since it had to travel a distance the sweep oscillator on each quad will start at a different time than the synchronizing sweep oscillator.  
Each quad then transmits its sweep oscillator back to the source round robin.  The received sweep is compared for fequency and phase to produce a distance integral. This can be done with 
four antennas and 4 sweep frequencies round robin, by simplex transmission to find x,y,z orientation when they are flying tangent to the ground (if not, radio their world plane from their gyro?). 
See  ''[[Raspberry Pi FM transmitter|http://makezine.com/projects/raspberry-pirate-radio/]]'' - See ''[[Highlights of Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]]''
See [[Quadcopter Tracking]]

[[FPV Goggles]]
- click - Banggood All in One FPV - $39.99 -
[img[http://goo.gl/c4RbGZ][http://goo.gl/Wn5U9n]]
[[Bangood Wishlist|https://www.banggood.com/index.php?com=account&t=wishlist]]

[[MiniBrowserList]] -  See ''[[Radio direction finder|https://en.wikipedia.org/wiki/Radio_direction_finder]], [[Phase-locked loop|https://en.wikipedia.org/wiki/Phase-locked_loop]]'' and ''[[Raspberry Pi FM transmitter|http://makezine.com/projects/raspberry-pirate-radio/]]''
<<miniBrowser https://www.adafruit.com/>>
|[[SIM (TING)|https://goo.gl/Qhvypy]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/7Rt5xUbqDzA" frameborder="0" allowfullscreen></iframe></html>|[[Autonomous Quadcopter(Arduino) - 3D Mapping|https://youtu.be/vXPdUOgVKiA]] - Use Color Tracking<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/vXPdUOgVKiA" frameborder="0" allowfullscreen></iframe></html>|
# [[Eachine H8 Mini quadcopter review]]
# See [[Kaideng K70C Sky Warrior Drone]] for Medium Quad - Best Camcopter
# [[Controlling your R/C transmitter from a PC using an Arduino]]
# [[10Hz U-blox binary GPS data in 66 lines of code (arduino)]] - See [[How-To: Shrinkify Your Arduino Projects]]
# [[Ultimate GPS]]
See [[Quadcopter Tracking]]

Adafruit FONA 808 Cellular + GPS Breakout - https://goo.gl/kOxoyW - SIM (TING) - https://goo.gl/Qhvypy
<html>
<iframe width="1000" height="1000" src="https://goo.gl/kOxoyW" frameborder="0" allowfullscreen></iframe>
</html>

[[Raspberry Pi emulation|http://goo.gl/YC2xV8]]
[[Kernel-o-Matic]] - for Raspberry Pi
<html>
<iframe width="1000" height="1000" src="http://goo.gl/YC2xV8" frameborder="0" allowfullscreen></iframe>
</html>


See [[Eachine H8 Mini RC Quadcopter]]
[[Eachine H8 Mini quadcopter review|http://goo.gl/tf0R0o]]<br>
<html>
<iframe width="1000" height="1000" src="http://goo.gl/tf0R0o" frameborder="0" allowfullscreen></iframe>
</html>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BEco%20Dome%2C%20Building%20a%20Small%20Home%5D%5D]] - [[Weed eater Bike playlist|http://fishcode.tiddlyspot.com/#%5B%5BWeed%20eater%20Bike%20playlist%5D%5D%20%5B%5BRidekick%20Power%20Trailer%5D%5D]] - [[MiniBrowser]] 

|[[Eco Dome, Building a Small Home|https://youtu.be/zcElYoMcrmo]]<br><html><iframe width="420" height="315" src="https://www.youtube.com/embed/zcElYoMcrmo" frameborder="0" allowfullscreen></iframe></html>|[[Eco Dome, Building a Small Home 2|https://youtu.be/OpBQxpGA1YI]]<br><html><iframe width="420" height="315" src="https://www.youtube.com/embed/OpBQxpGA1YI" frameborder="0" allowfullscreen></iframe></html>|

[[3D Printing Buildings|https://en.wikipedia.org/wiki/Building_printing]] - [[Sausage making|https://en.wikipedia.org/wiki/Sausage_making]] - with adobe tube bags.
''[[Deep travel|https://youtu.be/GErjagMyrYk]] - [[Interview With Bob|https://youtu.be/XP1xg2Bg6Rs]]''
[[Blender_(software)|https://en.wikipedia.org/wiki/Blender_(software)]] - It's easier to build round houses. Less stress.
[[FreeCAD|https://en.wikipedia.org/wiki/FreeCAD]]
[[Meet the dazzling flying machines of the future]]
Add [[Mycelium|https://en.wikipedia.org/wiki/Mycelium]] to make it stronger. Maybe [[Amsterdam|https://en.wikipedia.org/wiki/Amsterdam_Arena]] [[Truffles|https://en.wikipedia.org/wiki/Truffle]]? (grows on wood chips or straw)
[[Mycorestoration of Abandoned Logging Roads|http://www.fungi.com/blog/items/mycorestoration-of-abandoned-logging-roads.html]] - [[Hematite|https://en.wikipedia.org/wiki/Hematite]] - [[Ceramic materials|https://en.wikipedia.org/wiki/Ceramic_materials]] - [[Glass fiber|https://en.wikipedia.org/wiki/Glass_fiber]]
[[blenderorganizer|http://blenderorganizer.tiddlyspot.com/]] - [[glassparrot|http://glassparrot.tiddlyspot.com/]]
[[Internet Crime Schemes|http://goo.gl/Stm6zF]]
[[Emulating Raspberry Pi in Windows the easy way|https://goo.gl/I1ZUDX]]
<html>
<iframe width="1000" height="1000" src="https://goo.gl/I1ZUDX" frameborder="0" allowfullscreen></iframe>
</html>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BFPGA%20Tutorials%5D%5D]] - [[Highlights of Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]]
|[[FPGA playlist - Nick Williams|https://youtu.be/yoytRxOjA-A?list=PL2o_JnEWfUHgqEBEtqaWtRY8MqhWd9M0k]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/yoytRxOjA-A?list=PL2o_JnEWfUHgqEBEtqaWtRY8MqhWd9M0k" frameborder="0" allowfullscreen></iframe></html>|[[FPGA / Programmable Logic - EEVblog|https://youtu.be/gUsHwi4M4xE?list=PLvOlSehNtuHuWNxksxL54Shr1G5JnBGr6]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/gUsHwi4M4xE?list=PLvOlSehNtuHuWNxksxL54Shr1G5JnBGr6" frameborder="0" allowfullscreen></iframe></html>|
[[Avegant's Glyph|https://www.avegant.com/]] ($699) - See [[Tested|https://youtu.be/O98kwszk6NE]]
[[Babggood|http://www.banggood.com/5-Inch-Display-5_8G-32CH-Googles-DIY-FPV-Video-Glasses-For-Multicopter-p-1023732.html?utm_source=youtube&utm_medium=Painless360&utm_campaign=BG11719879&utm_content=chengshaoyun]] (US$89.99) below
|[[RC Review - Cheap 5" 32 Channel FPV Goggles|https://youtu.be/GwA3saATPE0]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/GwA3saATPE0" frameborder="0" allowfullscreen></iframe></html>|[[DIY FPV Goggles 5.8Ghz 5 Inches Screen Affordable and Easy FPV|https://youtu.be/dzM5bVanLEk]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/dzM5bVanLEk" frameborder="0" allowfullscreen></iframe></html>|
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BFlying%203D%20X6%5D%5D]]
[[Banggood|http://www.banggood.com/Flying-3D-Flying3D-X6-6-Axis-2_4G-GPS-RC-Quadcopter-RTF-p-945096.html]] (US$185.99) - bought Sep 05 2015

See [[CineTank MK2-L Quadcopter]] for Large Quad
See [[Eachine H8 Mini RC Quadcopter]] for Mini Quad
Flying 3D X6 X8 FY-X8-016 6CH Remote Control Transmitter - US $48.43 - http://goo.gl/rQBHvF - Binding

Medium Quads
Flying 3D X6 Plus GPS FPV Drone Range Return and Flight Time Testing - US $185.99 - http://goo.gl/6bIR5o
YiZhan Tarantula X6 RC Quadcopter Spare Parts 7.4V 1200mah Battery - US $11.67 - http://goo.gl/08O3MX
https://youtu.be/eWBq7bHtmSQ 
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/eWBq7bHtmSQ" frameborder="0" allowfullscreen></iframe>
</html>

JJRC H16 YiZhan Tarantula X6 WLtoys V666 V686G V222 5.8G FPV 720P Camera 
With Monitor Real Time Transmission - US $51.99 - http://goo.gl/aOZL9K
https://goo.gl/lYkPEq
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Ckp6-cr4hz4" frameborder="0" allowfullscreen></iframe>
</html>

Julian's Postbag: #45 - PAL TV Camera 170° Lens FPV 5V! Banggood - https://youtu.be/wVps10OeYnw 
600TVL 1/4 1.8mm CMOS FPV 170 Degree Wide Angle Lens Camera PAL/NTSC 3.7-5V 
- US $ 9.80 - http://bit.ly/1jgEDc5
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/wVps10OeYnw" frameborder="0" allowfullscreen></iframe>
</html>

Eachine 2202M 2210M and 2636C "FPV" cameras Video - https://goo.gl/MBF6dB 
JH33H-FPV-Camera - http://goo.gl/wQUwFi - JH-15A-FPV-Camera - http://goo.gl/uHckuU 
- JH-13H-FPV-Camera - http://goo.gl/i6LKYt - These Support 2GB~32GB Micro SD card
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/SyYe1y7kBek" frameborder="0" allowfullscreen></iframe>
</html>

5.8GHZ FPV BUILD EACHINE TS832 (BANGGOOD) - https://goo.gl/eUrjj3
TARANTULA 5.8GHZ FPV BUILD TEST FLIGHT Video - https://goo.gl/lz9ldC
get the transmitter here - http://goo.gl/L67uBd - US $ 17.99 
- get the tarantula here - http://goo.gl/hQfAIK
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/8KYxocwOCoA" frameborder="0" allowfullscreen></iframe>
</html>

Eachine ER32 Receiver Test Video - https://goo.gl/e95kxU
RC Groups Review: http://goo.gl/JV3h3T
ER32 5.8G 32CH Wireless AV Mini Receiver - US $17.89 - http://goo.gl/LxGU64
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/iXkvypq6kgU" frameborder="0" allowfullscreen></iframe>
</html>

Aomway 5.8GHz FPV 4 Leaf Clover AV Transmission RHCP Antenna 1 Pair Blue Red - US $14.99 - http://goo.gl/HPcaAu
USB 2.0 Video TV DVD VHS Audio Capture Adapter (for Laptop and Android to record) - US $6.59 - http://goo.gl/Bc9MgR Use ER32 5.8G 
Blue Sky 5 Inch HD Digital Panel Display 800x480 Snowflakes Screen - US $ 29.19 - http://goo.gl/NqeHtE Use ER32 5.8G 
Using Coupon Code WABGRC RX LCD 5802 5.8GHz LCD Diversity Receiver 7 Inch Monitor White - US $119.99 - http://goo.gl/665dYs
HD Dual Lens Car Camera H.264 Dash DVR Video Recorder Cam G-sensor - US $49.99 - http://goo.gl/aAMtxt
[[FreeCAD Tutorials|https://goo.gl/QoZTW4]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/QzfT-ZDp0Wo?list=PLAYwpugSXElgQefbCUFNQibJbz-iwUCCr" frameborder="0" allowfullscreen></iframe>
</html>
[[FreeMat|http://freemat.sourceforge.net/]]
<html>
<iframe width="1000" height="1000" src="http://freemat.sourceforge.net/" frameborder="0" allowfullscreen></iframe>
</html>
[[Google Hangouts|https://talkgadget.google.com/hangouts/_/onb4c3bpcfqxlxcyz4hkxoeovia]]
<html>
<iframe width="1000" height="1000" src="https://talkgadget.google.com/hangouts/_/onb4c3bpcfqxlxcyz4hkxoeovia" frameborder="0" allowfullscreen></iframe>
</html>
Idea: A flash card reader that carries two micro sd cards and which can be read separately by an 
operating system (one for op code and the other for data) with only one usb plug - (like a hub).

[[How Flash Memory Works|https://www.youtube.com/watch?v=kNGvZGz7dmE]]
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/kNGvZGz7dmE" frameborder="0" allowfullscreen></iframe>
</html>

[[HOW DOES FLASH DRIVE WORK?|https://howflashdriveworks.wordpress.com/how-does-flash-drive-work/]]
<html>
<iframe width="1000" height="1000" src="https://howflashdriveworks.wordpress.com/how-does-flash-drive-work/" frameborder="0" allowfullscreen></iframe>
</html>

[[How Flash Memory Works|http://computer.howstuffworks.com/flash-memory.htm]]
<html>
<iframe width="1000" height="1000" src="http://computer.howstuffworks.com/flash-memory.htm" frameborder="0" allowfullscreen></iframe>
</html>
[[Universal Licensing System]] - See [[unKoshered Ham Rantings!|Moses!]] - ''http://catchvideo.net/''
''[[October2017 Youtube Playlist|https://www.youtube.com/playlist?list=PLzHM9iyT6QCpsORVF008omissmzYBZTl0]] - [[My Playlists|http://inventoryport.tiddlyspot.com/#%5B%5BMy%20Playlists%5D%5D]] - [[Wish List|http://n6xre.tiddlyspot.com/#%5B%5BWish%20List%5D%5D]]''
Click to Speak with translator
# [[OK google, what time and date is it?|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20what%20time%20and%20date%20is%20it%3F]]
# [[OK Google, what is the weather?|https://translate.google.com/?hl=en&tab=wT#auto/th/OK%20google%2C%20what%20is%20the%20weather%3F]]
# [[OK google, what is on my schedule?|https://translate.google.com/?hl=en&tab=wT#auto/th/OK%20google%2C%20what%20is%20on%20my%20schedule%3F]]
# [[OK google, what can you do?|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20what%20can%20you%20do%3F]]
# [[OK google, Let’s play crystal ball.|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20Let%E2%80%99s%20play%20crystal%20ball.]] - Is [[Kepler's Somnium|http://www.depauw.edu/sfs/backissues/8/christianson8art.htm]] fiction? [[OK google, I’m Bored.|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20I%E2%80%99m%20Bored.]] - [[Shroomery Message Board|https://www.shroomery.org/forums/showflat.php/Number/1334481/fpart/all/vc/1]]
# [[Get your kicks on Route 66|https://youtu.be/dCYApJtsyd0]]. (or the [[Chicken Ranch|https://youtu.be/QaGNTksIfQE]] in [[Las Vegas|https://youtu.be/ypPRoomqJpY]] Videos) [[FAQ|http://www.a2zlasvegas.com/adult/lasvegas//brothels/crfaq.html]] - [[Tantra E-juice|http://moving.tiddlyspot.com/#%5B%5BTantra%20E-juice%5D%5D]]
# [[OK google, play lucky trivia?|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20play%20lucky%20trivia%3F]] - https://www.nasa.gov/eclipselive 
# [[OK Google I want to talk to Crazy House|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20Google%20I%20want%20to%20talk%20to%20Crazy%20House]] - [[OK Google, Where can I buy Moclobemide|https://translate.google.com/#auto/en/OK%20Google%2C%20Where%20can%20I%20buy%20Moclobemide]] - [[2|https://www.drugs.com/international/moclobemide.html]] - [[3|https://en.wikipedia.org/wiki/Moclobemide]]
# [[OK google, what is live spelled backwards?|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20google%2C%20what%20is%20live%20spelled%20backwards%3F]]
# [[OK Google, Flip a coin.|https://translate.google.com/?hl=en&tab=TT#auto/th/OK%20Google%2C%20Flip%20a%20coin.]] - Call it - Beds or Snails? Three times.
# [[OK google, how do you say I'm a Bunny would you like a ride in my vehicle and some dinner in French?|https://translate.google.com/?hl=en&tab=TT#auto/fr/OK%20google%2C%20how%20do%20you%20say%20I%27m%20a%20Bunny%20would%20you%20like%20a%20ride%20in%20my%20vehicle%20and%20some%20dinner%20in%20French%3F]] - [[Yes or No in French?|https://translate.google.com/?hl=en&tab=TT#auto/de/OK%20google%2C%20how%20do%20you%20say%20Yes%20or%20No%20in%20French%3F]]
# [[More Hey Google Phrases|http://n6xre.tiddlyspot.com/#%5B%5BMore%20Hey%20Google%20Phrases%5D%5D]]
[[How to Make a Google Home on Raspberry Pi without MagPi 57 Kit|http://n6xre.tiddlyspot.com/#%5B%5BHow%20to%20Make%20a%20Google%20Home%20on%20Raspberry%20Pi%20without%20MagPi%2057%20Kit%5D%5D]] - [[Anet A8 Desktop 3D Printer Prusa i3 DIY Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]]
[[5 Best Buffets in Las Vegas RIGHT NOW|https://youtu.be/CZD7noSqnBg]] - [[How to Eat Cheap in Las Vegas for Under $10|https://youtu.be/VtQ0lyFXMtg]] - [[Day 5: $10 VS $42 BUFFET!|https://youtu.be/nO-QuEEaxHk]]
[[How To Guides - Scale Model Tips and Tech|https://youtu.be/-0EWdr6t8m0?list=PLJexk848lGiQx-sk7n5OuF-bEbqJ8ZGxF]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/-0EWdr6t8m0?list=PLJexk848lGiQx-sk7n5OuF-bEbqJ8ZGxF" frameborder="0" allowfullscreen></iframe>
</html>
[[MiniBrowserList]] - [[How to Setup an LCD Touchscreen on the Raspberry Pi|http://www.circuitbasics.com/setup-lcd-touchscreen-raspberry-pi/]] - See [[How to Build a Portable Hacking Station with a Raspberry Pi and Kali Linux|https://www.offensive-security.com/kali-linux/kali-with-raspberry-pi-tft-support/]] (for educational purposes only) in MiniBrowser Bookmarks Bar.

<<miniBrowser http://www.circuitbasics.com/setup-lcd-touchscreen-raspberry-pi/>>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BHow%20to%20do%20Camera%20Tracking%20in%20Blender%5D%5D]]
[[How to do Camera Tracking in Blender|https://youtu.be/5HvLTJ4Zgo0]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/5HvLTJ4Zgo0" frameborder="0" allowfullscreen></iframe>
</html>
[[How to host your own git repository on Onedrive/Dropbox/GoogleDrive|https://goo.gl/B23akH]] - Youtube - for updates to Mint Pendrive ([[Systembackup|https://goo.gl/PE4XtJ]])

[[Make A Live CD/DVD/BootableFlash From a Harddisk Install|MakeALiveCD/DVD/BootableFlashFromHarddiskInstall]]
[[MakeALiveCD/DVD.pdf on gdrive|https://goo.gl/6vdqPy]] - manual method

[[How to install Google Drive Grive2 on Ubuntu|http://dothisbest.com/how-to/install-google-drive-grive2-on-ubuntu/]]
<html>
<iframe width="1000" height="1000" src="http://dothisbest.com/how-to/install-google-drive-grive2-on-ubuntu/" frameborder="0" allowfullscreen></iframe>
</html>

[[How-To: Shrinkify Your Arduino Projects|https://goo.gl/6UNN7H]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/30rPt802n1k" frameborder="0" allowfullscreen></iframe>
</html>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BINTERNET%20FAILURES%20AT%20THE%20SANDFORD%20HOTEL%20IN%20SAN%20DIEGO%5D%5D]]
 'INTERNET FAILURES AT THE SANDFORD HOTEL IN SAN DIEGO'
1301 5th Ave.
San Diego, Ca. 92101
Office: 619-235-7900
See [[List of computer criminals (Wikipedia)|https://en.wikipedia.org/wiki/List_of_computer_criminals]]

[[Learn Thai Online|http://psychology.tiddlyspot.com/#%5B%5BLearn%20Thai%20Online%5D%5D]]
----
!! Grandfather clauses 
Comcast will not put a private internet account in my building because of [[Grandfather clauses|http://goo.gl/n94LdB]]. This is a case of Cyber Slavery in the USA.
Grandfather clauses were passed by southern states in the late 1800s to keep blacks from voting unless their grandfathers had served in the 
Confederate Army. Such laws are now unconstitutional. [[Mac Address Ghost|https://goo.gl/kMroxz]] has helped with [[ARP spoofing|https://en.wikipedia.org/wiki/ARP_spoofing]] on Wifi. I USB tether my phone.
----
I have reported [[ARP spoofing|https://en.wikipedia.org/wiki/ARP_spoofing]] Man in The Middle attacks to the management in the past.  The internet (and privacy) are as essential as a phone is.
My Obitalk Internet phone does not work unless it can sign on to the internet.  I am retired on Social Security. It is getting harder every year.
If you can not reach me, please report the failure to the front office (listed above).
''[[Google docs Spreadsheets|https://docs.google.com/spreadsheets/u/0/]]'' might be useful since they can be shared. I have considered filing a complaint with [[INET Crime Schemes|http://goo.gl/Stm6zF]].
----
02/21/16 10:18 PST login failure
02/22/16 1:49PM PST - Internet is working again.
02/28/16 7:51PM PST - Internet failure
02/29/16 9:22AM PST Internet failure
02/29/16 2:22PM PST - Internet back on line.
03/29/16 10:00AM PST - Internet failure
03/29/16 Keeps switching between [[Wifi|https://en.wikipedia.org/wiki/Wi-Fi]] and [[Mobile IP|https://en.wikipedia.org/wiki/Mobile_IP]]. Record with [[Wireshark|https://en.wikipedia.org/wiki/Wireshark]] and send to [[INET Crime Schemes|http://goo.gl/Stm6zF]].
More later. (This should be temporary - but I am getting attacked). [[Cal Pen Code § 422. Punishment for threats. (2011)|http://psychology.tiddlyspot.com/#%5B%5BCal%20Pen%20Code%20%C2%A7%20422.%20Punishment%20for%20threats.%20(2011)%5D%5D]]
----
!!!05/2016 
I had throttleing problems all through 04/2016 up until now. It has been slower than my cellphone. See note above about [[Grandfather clauses|http://goo.gl/n94LdB]].
!!!I am still being attacked. This is on purpose. Internet is suppose to be included in my rent. 05/11/2016
''I shouldn't have to complain. If the internet is down only for me then I am being targeted. If not, someone else will complain.''
''I would prefer avoiding arguements, or [[Plausible deniability|https://en.wikipedia.org/wiki/Plausible_deniability]]. I hope I can live without a need for [[rehabilitation|https://en.wikipedia.org/wiki/Charles_Graner]] from my landlord.''

[[United States of America 1789 (rev. 1992) Constitution|https://www.constituteproject.org/constitution/United_States_of_America_1992]] - [[INET Crime Schemes|http://goo.gl/Stm6zF]] - [[Law|http://network.bepress.com/law/]] - [[Selected Works of Malla Pollack|https://works.bepress.com/malla_pollack/]]
[[United States Constitution - Article I Section 8 Clause 8|http://psychology.tiddlyspot.com/#%5B%5BUnited%20States%20Constitution%20-%20Article%20I%20Section%208%20Clause%208%5D%5D]] Compromize of the Intellectual Property Clause of the United States Constitution
[[Kevin Mitnick|https://en.wikipedia.org/wiki/Kevin_Mitnick]] served five years in prison—four and a half years pre-trial and eight months in solitary confinement for the same thing.
[[Lewys Martin|http://www.cityam.com/1416836848/bitcoin-blackmailer-lewys-martin-who-demanded-1m-halifax-return-28000-customers-details]] served two years in prison. See [[List of computer criminals (Wikipedia)|https://en.wikipedia.org/wiki/List_of_computer_criminals]]  
Pled guilty to five counts of "unauthorised acts with intent to impair operation 
of or prevent/hinder access to a computer", two of "unauthorised computer access with intent 
to commit other offences", one of "unauthorised computer access with intent to commit other 
offences", and one of "unauthorised access to computer material".
Hacking attempt on the websites of Kent Police, Cambridge University and Oxford University. 
Former member of NullCrew and said to have penetrated the servers of 
Department of Defense (DoD), Pentagon, NASA, NSA, other UK government websites.[40]
----
[[Kevin Mitnick: Live Hack at CeBIT Global Conferences 2015|https://youtu.be/Q7G3kKRdUl4]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/NtzZBTjKngw?list=PL_sayCZbKt8_HftG2xOzsxKpL6jFslPPx" frameborder="0" allowfullscreen></iframe>
</html>
See [[Kevin Mitnick (Wikipedia)|https://en.wikipedia.org/wiki/Kevin_Mitnick]] - [[Lewys Martin|http://www.cityam.com/1416836848/bitcoin-blackmailer-lewys-martin-who-demanded-1m-halifax-return-28000-customers-details]] - [[List of computer criminals (Wikipedia)|https://en.wikipedia.org/wiki/List_of_computer_criminals]] - [[Corruption|https://en.wikipedia.org/wiki/Corruption]] in Bookmarks
<<miniBrowser https://en.wikipedia.org/wiki/Kevin_Mitnick>>
/***
|Name|ImageMapPlugin|
|Source|http://www.TiddlyTools.com/#ImageMapPlugin|
|Documentation|http://www.TiddlyTools.com/#ImageMapPluginInfo|
|Version|1.2.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|apply image maps ('hotspots') with links to tiddlers|
!!!!!Documentation
>see [[ImageMapPluginInfo]]
!!!!!Revisions
<<<
2009.05.27 [1.2.2] improved autoscroll for {{{<<mapMaker>>}}} textarea
2009.05.14 [1.2.1] added cursor changes
see [[ImageMapPluginInfo]] for additional revision details
2009.05.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageMapPlugin= {major: 1, minor: 2, revision: 2, date: new Date(2009,5,27)};
//}}}
//{{{
config.macros.imageMap = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		// image element must immediately precede macro
		var img=place.lastChild; if (!img||img.nodeName!='IMG') return;
		var map=params[0]; var items=store.getTiddlerText(map,'').split('\n----\n'); if (!items) return;
		var out=['<MAP NAME="'+map+'">'];
		var fmt='<AREA SHAPE="POLY" TIDDLER="%0" COORDS="%1" TITLE="%2" ALT="%2" ONCLICK="%3" STYLE="%4">';
		var click="story.displayTiddler(story.findContainingTiddler(this),this.getAttribute('tiddler'));";
		var style='cursor:pointer';
		for (var i=0; i<items.length; i++) {
			var lines=items[i].split('\n'); var tid=lines.shift(); var coords=lines.join('');
			var tip=store.tiddlerExists(tid)?store.getTiddler(tid).getSubtitle():tid;
			out.push(fmt.format([tid,coords,tip,click,style]));
		}
		out.push('</MAP>');
		createTiddlyElement(place,'span').innerHTML=out.join('');
		img.setAttribute('isMap',true);
		img.setAttribute('useMap','#'+map);
		img.style.border=0;
	}
}
//}}}
//{{{
config.macros.mapMaker= {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var img=place.lastChild; // image element must immediately precede macro
		if (!img||img.nodeName!='IMG') return;
		img.onmousemove=function(ev){ ev=ev||window.event;
			var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
			var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
			lines[last]+=(lines[last].length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
			ta.value=lines.join('\n');
			ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
			ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
			ta.focus();
		};
		img.onmouseout=function(ev){ ev=ev||window.event;
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
			var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
			ta.value=lines.join('\n');
			ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
			ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
		};
		img.onmouseover=img.onclick=function(ev) { ev=ev||window.event;
			var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			ta.value+=(ta.value.length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
			var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
			ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
			ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
			ta.focus();
		}
		img.style.border='1px solid #999';
		img.style.cursor='crosshair';
		var map=params[0]||'';
		var s=createTiddlyElement(place,'div');
		s.style.height=s.style.width='1em';
		img.emW=s.offsetWidth; img.emH=s.offsetHeight; // get font metrics (for auto scrolling)
		s.style.height=s.style.width='';
		s.innerHTML+='<div class="toolbar">'
			+'<a href="javascript:;" '
			+'onclick="config.macros.mapMaker.load(this.parentNode.nextSibling)">load map</a>'
			+'<a href="javascript:;" '
			+'onclick="config.macros.mapMaker.save(this.parentNode.nextSibling)">save map</a>'
			+'</div>'
			+'<textarea rows="8" style="display:block;clear:both;width:100%;" tiddler="'+map+'">'
			+store.getTiddlerText(map,'')
			+'</textarea>';
	},
	load: function(ta) {
		var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'');
		if (!tid||!tid.length) return; // cancelled by user
		ta.value=store.getTiddlerText(tid,''); ta.setAttribute('tiddler',tid);
		return false;
	},
	save: function(ta) {
		var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'NewImageMap');
		while (tid && tid.length && store.tiddlerExists(tid)) {
			if(confirm(config.messages.overwriteWarning.format([tid]))) break;
			var tid=prompt('Enter a different tiddler title:',tid);
		}
		if (!tid||!tid.length) return; // cancelled by user
		store.saveTiddler(tid,tid,ta.value,config.options.txtUserName,new Date(),['imageMap'],{});
		story.displayTiddler(null,tid);
		displayMessage('image map saved to: '+tid);
		ta.setAttribute('tiddler',tid);
		return false;
	}
}
//}}}
/***
|Name|ImageMapPluginInfo|
|Source|http://www.TiddlyTools.com/#ImageMapPlugin|
|Documentation|http://www.TiddlyTools.com/#ImageMapPluginInfo|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for ImageMapPlugin|
!!!Usage
<<<
{{{
[img[...]]<<imageMap MapName>>
}}}
applies an image map to the embedded image immediately preceding the macro.   ''~MapName'' is the title of a tiddler (or a tiddler section) that contains an ''~HR-separated list'' of items, where the first line of each item is the ''tiddler to link to'' and the second line is a ''list of polygon coordinates'' using standard HTML <AREA COORDS="..."> syntax (e.g., a ''comma-separated series of X,Y pairs'': "x1,y1,x2,y2,x3,y3,...", that trace out the desired shape).
{{{
[img[...]]<<mapMaker MapName>>
}}}
adds interactive point-and-click calculation of X,Y map coordinates that are automatically entered into a text input field that you can then edit and save to a tiddler to create an ~HR-separated map definition.
<<<
!!!imageMap Example
<<<
{{{
[img[images/california.gif]]<<imageMap ImageMapPluginInfo##county_map>>
}}}
~~//(click a county to open a tiddler)//~~
[img[images/california.gif]]<<imageMap ImageMapPluginInfo##county_map>>
<<<
!!!mapMaker example
<<<
{{{
[img[images/california.gif]]<<mapMaker ImageMapPluginInfo##county_map>>
}}}
~~//(click anywhere inside image to record x,y coordinates)//~~
[img[images/california.gif]]<<mapMaker ImageMapPluginInfo##county_map>>
<<<
!!!Revisions
<<<
2009.05.14 1.2.1 added cursor changes
2009.05.13 1.2.0 add MAP/AREA elements using innerHTML
2009.05.12 1.1.1 fixed mapMaker event handling for IE
2009.05.10 1.1.0 added {{{<<mapMaker>>}}}
2009.05.10 1.0.1 open tiddlers following current tiddler instead of at top of story column
2009.05.09 1.0.0 initial release
<<<
!!!Sample Map
<<<
{{{
!county_map
San Francisco
50,231,51,225,54,222,55,226,55,231,50,231,50,231
----
San Mateo
59,252,60,242,58,239,55,238,54,232,49,233,50,240,50,244,50,249,54,253,59,252,59,252
----
Santa Clara
94,242,90,244,80,243,75,242,66,243,60,243,58,251,63,255,70,258,75,270,79,268,95,268,97,260,97,254,94,254,93,252,97,250,94,248,95,246,94,242,94,242
----
Alameda
94,223,95,242,90,243,80,242,75,241,65,242,66,235,63,225,70,224,80,226,94,221,94,224,95,225,95,231,94,223,94,223
----
Contra Costa
97,213,97,221,83,226,69,224,63,224,62,220,67,214,73,217,79,214,98,214,96,214,97,213,97,213
----
Santa Cruz
53,254,59,251,63,255,70,258,75,268,73,273,68,273,67,266,53,254,53,254
----
San Benito
117,292,116,302,114,304,110,302,111,307,104,304,101,306,91,292,91,288,87,288,87,285,73,273,75,271,78,269,96,270,116,292,117,292,117,292
----
Monterey
128,325,86,325,83,319,83,313,78,309,78,305,64,286,64,283,67,282,67,273,73,273,87,284,86,288,90,287,91,292,101,305,104,303,110,306,113,303,126,318,128,325,128,325
----
Fresno
123,266,133,278,149,271,164,269,170,261,176,261,176,257,181,258,182,254,190,252,194,245,203,237,211,243,213,248,211,253,218,267,221,276,215,276,214,278,195,278,195,282,179,282,177,285,166,285,162,289,154,291,152,294,146,294,146,302,126,318,116,304,118,302,116,299,117,290,106,278,123,265,123,266,123,266
----
Merced
114,249,117,245,142,238,145,245,148,249,153,251,152,256,143,256,136,258,130,262,125,263,106,278,96,269,97,261,99,255,113,250,114,249,114,249
----
Madera
167,243,173,243,174,239,178,238,179,234,192,227,194,228,193,235,198,232,203,236,192,245,188,252,180,254,180,258,172,257,175,261,168,260,163,269,146,270,132,278,122,266,124,263,130,262,135,258,142,256,151,256,152,252,167,243,167,243
----
Kings
162,324,161,303,164,302,164,295,162,294,162,289,153,291,151,295,146,295,146,303,128,318,128,325,161,324,162,324,162,324
----
Tulare
232,324,233,316,234,314,229,310,229,303,228,299,230,296,219,276,213,276,212,279,193,278,193,282,177,282,176,286,164,285,161,289,163,295,164,303,160,304,161,325,232,324,232,324
----
Mono
183,182,183,188,185,194,181,200,181,209,185,211,185,213,191,218,191,224,196,227,194,235,198,233,203,236,211,243,243,243,183,182,183,182
----
Inyo
241,243,320,324,233,324,233,317,235,314,229,310,229,303,228,299,231,295,220,276,217,267,211,253,213,247,211,242,242,244,241,243,241,243
----
San Luis Obispo
111,348,97,340,86,325,127,325,129,332,139,341,144,343,145,346,150,348,156,354,156,358,159,360,161,368,157,371,153,364,136,358,133,354,131,360,126,362,126,366,120,363,112,364,111,356,106,353,112,348,111,348,111,348
----
Santa Barbara
121,387,117,383,111,381,111,365,121,362,127,367,125,362,132,360,135,353,137,359,154,365,157,372,161,368,164,372,163,394,143,390,126,384,121,387,121,387
----
Ventura
186,402,175,401,163,395,163,372,166,369,172,371,177,376,186,376,193,397,186,402,186,402
----
Los Angeles
205,409,184,402,193,397,186,376,234,376,236,388,238,408,232,416,222,420,217,424,211,420,205,409,205,409
----
Kern
240,325,128,325,130,334,139,342,150,348,159,359,162,370,167,368,176,377,235,375,237,374,239,343,241,341,241,325,240,325,240,325
----
San Bernardino
392,401,320,324,240,325,241,342,238,345,236,374,234,377,237,407,256,422,264,413,290,414,303,417,386,414,390,409,392,401,392,401
----
Riverside
379,441,388,429,387,412,303,417,289,414,263,413,255,421,260,424,260,428,265,428,265,436,271,438,275,443,352,444,379,442,379,441,379,441
----
Orange
258,441,221,421,232,415,237,407,255,421,259,424,260,428,266,428,265,438,258,443,258,441,258,441
----
San Diego
322,482,284,484,280,475,276,464,270,451,258,440,264,437,272,438,275,443,283,445,321,444,321,483,322,482,322,482
----
Imperial
378,480,321,482,322,445,378,443,382,451,378,461,383,468,382,475,378,480,378,480
----
Stanislaus
113,229,95,240,98,257,113,249,118,244,141,237,132,228,127,214,124,230,112,229,113,229,113,229
----
Mariposa
168,228,154,225,151,228,148,227,147,231,144,231,145,236,141,237,143,245,151,254,165,242,172,243,172,238,177,238,177,234,191,227,194,226,189,224,184,221,181,223,178,220,169,229,157,226,153,226,151,229,152,229,168,228,168,228
----
Alpine
173,172,172,176,164,180,164,192,179,201,185,194,183,181,173,173,173,172,173,172
----
Calaveras
125,203,127,214,132,223,144,220,165,195,163,191,158,194,150,194,135,203,125,203,125,203
----
San Joaquin
108,205,97,213,97,222,94,225,95,240,113,229,124,229,127,215,125,203,120,206,107,206,108,205,108,205
----
Amador
125,189,126,194,125,203,135,203,150,194,158,194,163,191,164,179,154,186,142,189,124,189,125,189,125,189
----
Sacramento
83,212,96,213,107,205,118,205,124,203,125,195,123,188,120,180,104,180,106,189,103,197,102,203,94,206,93,210,79,212,83,212,83,212
----
Yolo
102,174,98,174,97,170,92,165,68,164,74,178,79,181,81,189,91,190,93,187,97,187,99,197,104,197,106,189,104,180,102,174,102,174
----
Solano
79,197,72,204,73,209,82,211,94,210,95,205,103,203,104,196,98,196,97,186,91,187,90,190,80,189,78,193,79,197,79,197
----
Napa
58,177,59,183,65,192,65,205,71,204,79,197,77,192,80,188,78,181,73,178,67,164,64,166,64,173,58,177,58,177
----
Sonoma
24,168,48,165,56,175,57,182,64,192,64,203,45,198,43,191,32,180,31,176,23,168,24,168,24,168
----
Marin
44,210,50,212,52,216,57,218,60,217,59,212,62,210,64,203,46,199,43,209,44,210,44,210
----
Tuolumne
165,195,144,219,131,223,132,227,142,237,146,236,145,230,149,230,149,226,154,228,155,225,169,228,178,220,182,222,185,221,190,225,190,218,185,213,185,210,180,209,180,200,165,193,164,196,165,195,165,195
----
Mendocino
10,107,16,116,16,126,15,132,20,151,21,161,24,169,50,165,43,158,46,155,46,150,43,145,45,137,53,132,53,114,56,109,11,108,10,107,10,107
----
Humboldt
21,38,17,50,19,59,12,70,9,70,1,85,2,92,10,107,31,108,33,73,32,65,39,65,39,59,45,53,43,51,44,42,33,43,30,37,21,37,21,38,21,38
----
Del Norte
24,14,19,24,20,37,29,37,32,43,37,42,38,37,35,34,42,31,43,21,50,15,24,14,24,14
----
Siskiyou
130,19,51,15,44,21,43,31,36,33,39,37,38,43,43,42,42,50,45,53,54,57,55,61,59,61,59,65,64,61,69,63,67,54,71,52,76,54,80,48,90,46,90,55,131,57,132,31,129,30,130,19,130,19
----
Modoc
183,22,130,19,131,57,179,60,182,22,183,22,183,22
----
Trinity
56,98,57,102,55,105,55,109,31,108,33,72,31,65,39,65,40,58,44,52,54,57,55,61,58,61,58,65,65,61,69,63,67,53,71,52,76,55,79,47,90,46,90,55,90,59,75,70,70,84,56,98,56,98
----
Shasta
124,95,120,96,115,94,111,96,94,96,83,97,78,95,71,98,67,96,57,98,69,84,74,70,90,59,89,54,131,57,132,93,124,95,124,95
----
Tehama
130,105,125,110,109,116,104,122,93,122,93,124,53,122,53,114,57,108,55,106,56,101,56,97,65,96,71,98,77,95,84,98,94,97,112,96,116,94,120,96,123,95,126,98,126,101,130,105,130,105
----
Lake
64,150,67,162,64,167,64,173,58,178,50,164,42,159,46,154,46,149,43,145,45,137,52,133,55,131,61,132,61,141,55,141,54,143,57,149,63,151,64,151,64,150,64,150
----
Colusa
95,143,92,149,92,156,94,164,67,163,64,151,57,149,53,143,56,141,83,142,84,140,87,141,89,143,95,143,95,143
----
Glenn
99,131,97,133,97,137,101,139,96,143,89,143,86,141,82,140,82,142,60,142,61,132,55,131,53,123,92,123,99,131,99,131
----
Sutter
113,166,111,170,111,179,103,180,102,174,97,173,97,169,93,164,92,156,91,149,108,151,108,157,113,166,113,166
----
Butte
120,143,115,144,115,146,107,151,91,149,95,143,101,139,96,137,96,132,99,131,92,123,102,122,109,116,125,109,128,117,126,124,130,128,132,135,126,140,121,138,120,143,120,143
----
El Dorado
170,160,163,160,157,164,149,164,148,167,131,166,122,177,126,188,143,188,155,185,162,180,172,176,173,172,170,169,170,160,170,160
----
Placer
171,152,146,151,138,158,135,158,129,163,121,161,113,165,111,170,111,179,120,179,122,177,131,166,146,168,150,164,157,164,163,161,171,160,171,153,171,152,171,152
----
Yuba
135,145,131,145,129,148,124,150,122,159,113,166,108,157,108,151,115,146,115,143,122,143,120,139,127,140,133,135,135,134,135,145,135,145
----
Nevada
172,143,150,142,146,139,136,144,131,144,129,148,124,150,122,161,130,164,136,157,138,158,146,151,170,152,171,143,171,144,172,143,172,143
----
Sierra
172,131,145,130,139,126,134,134,134,145,145,139,150,143,172,144,173,131,172,131,172,131
----
Plumas
141,94,124,94,126,102,130,105,125,110,128,117,126,124,130,129,132,134,140,126,145,130,168,131,171,124,169,117,154,102,149,103,148,106,141,102,141,93,141,94,141,94
----
Lassen
177,93,174,130,167,131,170,124,169,115,153,101,148,104,148,106,141,103,141,93,132,93,131,59,179,60,176,94,177,93,177,93
!end county_map
}}}
<<<
***/
 
https://leesbirdblog.files.wordpress.com/2011/05/
/***
|Name|ImagePathPlugin|
|Source|http://www.TiddlyTools.com/#ImagePathPlugin|
|Version|0.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin
|Description|Tell TiddlyWiki where to look for image files.  Permits multiple 'fallback' locations|
|Status|ALPHA - initial development/testing only - may be unstable - do not distribute|

!!!!!Usage
<<<
This plugin adds "resolvePath()" fallback processing to the {{{[img[...]]}}} formatter's handler, so that local image file references can be successfully resolved, even if the files cannot be located on the local filesystem.

The plugin tries alternative file "paths" that are listed, one per line, in an optional tiddler, [[ImagePathList]].  Each path in the list is combined with the image filename, which is then checked for existence, until the file is located.  If no alternative is found, or [[ImagePathList]] is not present, then a 'last-ditch' fallback is attempted using the remote system and path specified in [[SiteUrl]] (if present).

If no fallback attempt is successful (i.e., because no [[ImagePathList]] OR [[SiteUrl]] tiddlers have been defined), the plugin simply passes the original image file value along for default handling by the browser without any "path resolution" being applied.(i.e, the current TW core behavior occurs).

| ''Important note: This plugin may cause one or more security alert messages to appear, because it uses browser-specific functions that can require security permission in order to access the local filesystem to check for the existence of a given image file.  If you block local access, the 'last-ditch' fallback using the remote [[SiteUrl]] (if present) will be attempted.'' |

Note: the image formatter code contained here also includes support for AttachFilePlugin extensions (if installed).  AttachFilePlugin includes its own fallback mechanism for handling embedded vs. local file vs. remote URL references to the attached binary file.  Both methods may be used: ImagePathPlugin provides fallback for images contained in tiddler content, while AttachFilePlugin works well for access to non-image binary files (or images used in CSS as backgrounds, textures, etc.)
<<<
!!!!!Examples
<<<
coming soon...
<<<
!!!!!Revisions
<<<
''2007.04.13 [0.7.1]'' in testFile(), convert any file:// references to local native format before checking for existence.
''2007.03.26 [0.7.0]'' for IE, use onError handling to trigger call to resolvePath() so it will only be invoked if the original path/file is not found by the browser-native lookup.  This avoids an unneeded call to fileExists() and the accompanying ActiveX security alert message box (as well as being slightly more efficient...)
''2007.03.25 [0.6.0]'' code cleanup (moved global functions into config.formatterHelpers) plus documentation re-write
''2007.03.24 [0.5.0]'' initial implementation - ALPHA - do not distribute
<<<
!!!!!Code
***/
//{{{
version.extensions.ImagePathPlugin= {major: 0, minor: 7, revision: 1, date: new Date(2007,4,13)};
//}}}
//{{{
// name of path definition tiddler
if (config.options.txtPathTiddler==undefined) config.options.txtPathTiddler="ImagePathList";
//}}}
//{{{
// low-level wrapper for platform-specific tests for local file existence
// returns true/false without visible error display
// Uses Components for FF and ActiveX FSO object for MSIE
// NOTE: this can cause a security warning on some browsers
config.formatterHelpers.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;
}
//}}}
//{{{
// higher-level logic for checking local file existence.
// with secondary check for finding relative file references
// and automatic OK of http-based references without checking local filesystem
config.formatterHelpers.testFile=function(theFile) {
	if (document.location.protocol!="file:") return true; // viewing remote document, can't test local filesystem... assume OK
	if (theFile.substr(0,5)=="http:") return true; // remote HTTP reference... assume OK
	if (theFile.substr(0,5)=="file:") theFile=getLocalPath(theFile); // convert local FILE reference to native format
	if (this.fileExists(theFile)) return true; // file exists locally... OK to use!
	// file might have been relative, add path from current document and try again
	var docPath=document.location.href;
	var slashpos=docPath.lastIndexOf("/"); if (slashpos==-1) slashpos=docPath.lastIndexOf("\\"); 
	if (slashpos!=-1 && slashpos!=docPath.length-1) docPath=docPath.substr(0,slashpos+1); // trim off filename
	if (this.fileExists(getLocalPath(docPath+theFile)))
		return true; // ah ha!... file exists relative to current document... OK to use!
	return false; // file not found on local system
}
//}}}
//{{{
// given a path/file string, check for existence and
// try alternatives (if any) defined in a tiddler
// with last-ditch using system/path from SiteUrl (if any)
config.formatterHelpers.resolvePath=function(theFile,testoriginal) {
	if (testoriginal && this.testFile(theFile)) return theFile; // FOUND FILE - use specified path/file without modification
	// get the filename portion only
	var slashpos=theFile.lastIndexOf("/"); if (slashpos==-1) slashpos=theFile.lastIndexOf("\\"); 
	var theName=(slashpos==-1)?theFile:theFile.substr(slashpos+1);
	// get list of fallbacks (if any)
	var pathText=store.getTiddlerText(config.options.txtPathTiddler);
	if (pathText && pathText.length) {
		var paths=pathText.split("\n");
		for (p=0; p<paths.length; p++) // combine path+filename until one works...
			if (this.testFile(paths[p]+theName))
				return paths[p]+theName; // FOUND FILE - use alternative path+filename
	}
	// try "last ditch" fallback using SiteURL - assumes that original path/file was relative to document location
	var siteURL=store.getTiddlerText("SiteUrl");
	if (!siteURL||!siteURL.length) return theFile; // NO FALLBACK - use original path/file and hope for the best
	// trim filename (if any) from site URL
	var slashpos=siteURL.lastIndexOf("/"); if (slashpos==-1) slashpos=siteURL.lastIndexOf("\\"); 
	if (slashpos!=-1 && slashpos!=siteURL.length-1) siteURL=siteURL.substr(0,slashpos+1);
	return siteURL+theFile; // LAST DITCH: use system/path from SiteUrl combined with original file/path
}
//}}}
//{{{
// replace standard handler for image formatter
// adds call to resolvePath() to handle fallback processing
// includes support for AttachFilePlugin as well
config.formatters[config.formatters.findByField("name","image")].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) {
		// Simple bracketted link
		var e = w.output;
		if(lookaheadMatch[5]) {
			var link = lookaheadMatch[5];
			if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x
				var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);
			else
				var external=config.formatterHelpers.isExternalLink(link);
			if (external) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) { // ELS - attachments
					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(lookaheadMatch[1])
			img.align = "left";
		else if(lookaheadMatch[2])
			img.align = "right";
		if(lookaheadMatch[3])
			img.title = lookaheadMatch[3];
		if (config.macros.attach!=undefined && config.macros.attach.isAttachment(lookaheadMatch[4])) // ELS - attachments
			img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
		else {
			if (config.browser.isIE || config.browser.isSafari) { // ELS - path processing
				// IE and Safari use browser's onError handling to check the original file...
				// avoids extra security alert messages due to use of Components/ActiveX for filesystem access
				img.onerror=(function(){this.src=config.formatterHelpers.resolvePath(this.src,false);return false;});
				img.src=lookaheadMatch[4]; // ELS - path processing
			} else {
				// if NOT IE or Safari, always check the original path/file before rendering
				img.src=config.formatterHelpers.resolvePath(lookaheadMatch[4],true);
			}
		}
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}
//}}}
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|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
<<<
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
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: 3, date: new Date(2011,9,3)};
//}}}
//{{{
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();
			if (stretchW||stretchH) 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.imageSize={
	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?this.imageSize.dragtip:'')+this.imageSize.tip;
	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;
	};
}
//}}}
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|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
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." 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: 6, date: new Date(2010,12,15)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( 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) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					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,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					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 script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					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.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|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.  When a tiddler is rendered, the plugin automatically invokes any embedded scripts, which can be used to construct and return dynamically-generated output that is inserted into the tiddler content.
{{{
<script type="..." src="..." label="..." title="..." key="..." show>
	/* javascript code goes here... */
</script>
}}}
All parameters are //optional//.    When the ''show'' keyword is used, 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
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
2009.04.11 1.9.5 pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
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
<<<
[[How to install Windows 7 from a USB 3.0 Thumb Drive (FAST installation!)|http://goo.gl/cYgfZG]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/cYgfZG" frameborder="0" allowfullscreen></iframe>
</html>
''[[Internet Crime Schemes|http://www.ic3.gov/crimeschemes.aspx]] - [[Submit a complaint to IC3|http://www.ic3.gov/complaint/splash.aspx?]] - [[Cal Pen Code § 422. Punishment for threats. (2011)|http://psychology.tiddlyspot.com/#%5B%5BCal%20Pen%20Code%20%C2%A7%20422.%20Punishment%20for%20threats.%20(2011)%5D%5D]]''
[[Permaview|http://goo.gl/Stm6zF]] - [[INTERNET FAILURES AT THE SANDFORD HOTEL IN SAN DIEGO]]
- click 
[img[https://goo.gl/C49oMz][http://www.ic3.gov/crimeschemes.aspx]]
|[[Digital Storytelling - Fingerprint Analysis|https://youtu.be/6A1xJFExL8g]]<br><html><iframe width="420" height="315" src="https://www.youtube.com/embed/6A1xJFExL8g" frameborder="0" allowfullscreen></iframe></html>|[[Free College Every Day - Forensic Science and Crime Scene Investigation|https://youtu.be/1FxKwmq5HJw]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/1FxKwmq5HJw" frameborder="0" allowfullscreen></iframe></html>|
|[[Forensic Science - The Dark Side of Forensic DNA Documentary|https://youtu.be/gcvFagNoLnw]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/gcvFagNoLnw" frameborder="0" allowfullscreen></iframe></html>|[[Blindspot: An Audio and Video Forensic Podcast|https://youtu.be/2KCGchPBNLM?list=PLrHF9nMB3dI8R2gOUmxdrq6LO3BHe0Hjq]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/2KCGchPBNLM?list=PLrHF9nMB3dI8R2gOUmxdrq6LO3BHe0Hjq" frameborder="0" allowfullscreen></iframe></html>|

http://www.bitlet.org/ - google the hash
<nowiki>Terry.Pratchetts.Going.Postal.BRRIP.MP4 </nowiki>
<nowiki>bittorrent hash 9F0D26A29711409BF4C5C7AF2133EAA713463245</nowiki>
[[Terry Pratchett's Going Postal|https://en.wikipedia.org/wiki/Terry_Pratchett%27s_Going_Postal]]
[[Richard Coyle|https://en.wikipedia.org/wiki/Richard_Coyle]] was formerly alias [[Caiaphas|https://en.wikipedia.org/wiki/Caiaphas]] (2015) - (also [[Martin Landau|https://en.wikipedia.org/wiki/Martin_Landau]], 1965)

[[Cotard delusion | http://en.wikipedia.org/wiki/Cotard_delusion]]
<<miniBrowser http://en.wikipedia.org/wiki/Cotard_delusion>>

Also see Detekt in miniBookmarks Bar
<<miniBrowser http://www.paterva.com/web6/>>

-click-
''[[AmScope - SKU: B120B-E - 40X-2000X LED Digital Binocular Compound Microscope with 3D Stage + USB Camera|http://www.amscope.com/40x-2000x-led-digital-binocular-compound-microscope-with-3d-stage-usb-camera.html]]'' 
[img[http://ecx.images-amazon.com/images/I/61BHb5HzqWL._SL1200_.jpg][http://www.amscope.com/40x-2000x-led-digital-binocular-compound-microscope-with-3d-stage-usb-camera.html]]



-click-
''[[AmScope - SKU: UBW500X02MP - 5X-500X 2MP 8-LED Zoom Digital USB Microscope Endoscope XP/Vista/7/8 & Mac|http://www.amscope.com/5x-500x-2mp-8-led-zoom-digital-usb-microscope-endoscope-xp-vista-7-8-mac.html]]'' 
[img[http://ecx.images-amazon.com/images/I/7145pmFJdkL._SL1200_.jpg][http://www.amscope.com/5x-500x-2mp-8-led-zoom-digital-usb-microscope-endoscope-xp-vista-7-8-mac.html]]






[[MiniBrowserList]] - [[How to Setup an LCD Touchscreen on the Raspberry Pi]]
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BInternet%20Radio%5D%5D]]

<<miniBrowser https://www.internet-radio.com/>>
[[Is it possible to convert virtual machines to physical environments?|http://superuser.com/questions/114445/is-it-possible-to-convert-virtual-machines-to-physical-environments]]
- click 
[img[http://i.imgur.com/NhAx4yT.jpg][http://goo.gl/bKLNX6]]
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BJabber%20XAMPP%5D%5D]]
[[Jabber XAMPP|https://xmpp.koderoot.net/]]
<<miniBrowser https://xmpp.koderoot.net/>>
[[KK2.1.5 MULTI-ROTOR LCD FLIGHT CONTROL BOARD|http://goo.gl/jYU6lo]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/jYU6lo" frameborder="0" allowfullscreen></iframe>
</html>
See [[Eachine H8 Mini RC Quadcopter]]
[[Kaideng K70C Sky Warrior Drone|https://youtu.be/yR6UmF0aUJ8]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/yR6UmF0aUJ8" frameborder="0" allowfullscreen></iframe>
</html>

Published on Jan 30, 2016 - [[Banggood|http://www.banggood.com/Kai-Deng-K70C-With-2MP-Wide-Angle-HD-Camera-Gimbal-3D-Rolling-RC-Quadcopter-RTF-p-1033123.html]] (US $85.99)
This large drone is a major leap over previous toy grade quadcopters. It may very well be 2016's best toy drone. Find it here from LighTake http://shrsl.com/?~b8rr 720p HD with wide angled lens, motorized gimbal, powerful motors and great range. Its anti-vibration camera mount is also designed to accommodate many action cameras such as GoPro Hero4, Xiaomi Yi, SJCam, etc... 

Pro's
- 720p HD camera with wide angled lens. But the mount also is designed for GoPro style cameras. Can easily replace the existing camera with GoPro or GoPro clone cameras.
- No propellers in video! Camera is mounted far forward, and quadcopter arms are swept back to prevent quadcopter components coming into field of view.
- Powered remote control gimbal. Can remotely tilt camera full down, horizontal, or angles in between.
- Camera anti vibration mounts. Works best at totally eliminating jello with heavier action cameras.
- Camera mount sized and designed to accommodate GoPro and GoPro clone cameras.
- Great range in excess of 150 meters.
- Appears to use Syma X8C sized plug-in motors (power plugs appear to be same also). 
- Good power and steep pitch make this quadcopter very fast at high rates.
- Great LED lighting, good night flier.

Con's 
- Over 250 grams. Will require FAA registration.

And here is its flight demonstration

Specifications:
Brand: KAIDENG
Model: K70H
Color: Black + Yellow
Material: ABS + Electronic Components
Item name: RC Quadcopter
Control channel: 4 channels
Controller Frequency: 2.4GHz
Gyroscope: Six axis
Function: forward/backward, up/down, left/right, sideward flight, hovering, 3D flips,CF Mode,One Key Return, 2.0MP Camera
Remote distance: About 100m (But I was easily flying past 150 meters)
Charging time: About 200mins
Flight time: About 10mins (I averaged about 9 minutes)
Quadcopter battery: 7.4V 2000mah Li-po battery (replaceable)
Transmitter battery: 4 *AA battery (not included)
Item dimension: 55.7*53.8*17.5 CM

Package Content: 1 x RC Quadcopter, 1 x Controller, 1 x 2.0MP Camera, 1 x Charger, 1 x English User Manual

Affiliate links: At no cost to you, I do receive a small commission for sales resulting from these links.

MUSIC LICENSE
"Awel" by stefsax
http://ccmixter.org/files/stefsax/7785
is licensed under a Creative Commons license:
http://creativecommons.org/licenses/b...
music was shortened to fit length of video.
[[Korean Air Lines Flight 007|https://en.wikipedia.org/wiki/Korean_Air_Lines_Flight_007]]
<<miniBrowser https://en.wikipedia.org/wiki/Korean_Air_Lines_Flight_007>>
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[MainMenu]]
''[[CatchVideo|http://catchvideo.net/]]''
''[[Wordpress|https://glassparrot.wordpress.com/]]''
''[[My Playlists|http://inventoryport.tiddlyspot.com/#%5B%5BMy%20Playlists%5D%5D]]''
''[[Social Security|https://secure.ssa.gov/RIL/SiView.do]]''
''[[Medicare|https://myhealthone.com/mh1/public/mh1/Login/#/login-form]] - [[VA|https://www.myhealth.va.gov/]]''
''[[VMTN Trip Request|http://www.rtcsnv.com/transit/rtc-transit-services/veteranservices/vmtn-online-trip-request-2/]]''
''[[Bookmarks|http://almanac.tiddlyspot.com/#Bookmarks]]''
''[[Google_Search|https://www.google.com/]]''
''[[Google_Mail|https://mail.google.com/]]''
''[[10MinuteMail|http://10minutemail.com/10MinuteMail/index.html]]''
''[[Google_Calendar|https://calendar.google.com/]]''
''[[Google_Hangout_Plus|https://plus.google.com/hangouts]]''
''[[Gdrive|https://drive.google.com/#all]]''
''[[Goo.gl|https://goo.gl]]''
''[[Raspberry Pi 3 MIDI|http://mediaport.tiddlyspot.com/#%5B%5BRaspberry%20Pi%203%20MIDI%5D%5D]]''
''[[Recipes|http://inventoryport.tiddlyspot.com/#Recipes]]''
''[[Turo Car Rental|https://turo.com/search?location=3040%20E%20Charleston%20Blvd%20%233087%2C%20Las%20Vegas%2C%20NV%2089104%2C%20USA&locationType=Address&startDate=10%2F25%2F2017&startTime=10%3A00&endDate=11%2F01%2F2017&endTime=10%3A00&region=NV&country=US&category=ALL&instantBook=false&customDelivery=false&maximumDistanceInMiles=30&sortType=RELEVANCE&isMapSearch=false&latitude=36.1584026&longitude=-115.1067183&defaultZoomLevel=14]]''
''[[Uber Ride|https://www.uber.com/ride/]] - [[mUber|https://m.uber.com/]]''
''Uber PBX - [[GOGO|https://gogograndparent.com/]]''
''[[Apartments|http://moving.tiddlyspot.com/#Apartments]]''
''Gary Rust'' 
''3040 E. Charleston Blvd #3087''
''Las Vegas, Nevada'' 
''89104''
''[[Blood Pressure|https://goo.gl/FvAHkr]]
[[DefaultTiddlers]]
''[[Hangouts|https://hangouts.google.com/]] on [[Gmail|https://mail.google.com/]]<br>Main (702) 900-8019''
''[[Phones|http://moving.tiddlyspot.com/#Phones]]''
''Gary Rust on<br>[[ObiTalk|https://www.obitalk.com/info/products]]<br>510 537 368<br>([[buy worldwide|http://1outlets.com/obihai-technology-inc-obi200-1-port-voip-adapter-usb-t38-fax-support-USD-ccy/sku/11l4tHt6GUSuS28Yw2QYss/]])''
''[[Obi200 Device Guide|http://www.obihai.com/OBiDeviceAdminGuide]]''
''Google [[ARC Welder|https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn]]''
''[[Dry Ice|http://www.smartandfinal.com/cmssearch/result/?q=dry+ice&store_key=352]]''
''[[Weather Las Vegas|https://www.wunderground.com/us/nv/las-vegas]]''
''[[N6XRE - RUST, GARY A|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]]''
''[[Talkatone|http://www.makeuseof.com/tag/free-phone-calls-wifidata-talkatone-android-ios/]]<br>FWD from Main<br>(702) 825-5436''
''[[SipBroker|http://www.sipbroker.com/sipbroker/action/providerWhitePages]] -  [[SB PSTN|http://www.sipbroker.com/sipbroker/action/pstnNumbers]]''
''[[Callcentric|https://www.callcentric.com/support/device/android/callcentric]] - *462 - 1-631-536-7241''
''Callcentric INUM [[International iNUM|http://www.inum.net/what-is-inum-2/local-access-numbers/]] @ (213) 221-3799<br>883510001197009''
''[[Skype|https://login.skype.com/login?client_id=578134&redirect_uri=https%3A%2F%2Fweb.skype.com%2F]]<br>Name: garyrust''
''Skype To Go No.<br>(702) 425-7809''
''[[jabber.hot-chilli.net|https://jabber.hot-chilli.net/jappix/]]<br>Name: phuket''
[[Psilocybin|http://scienceport.tiddlyspot.com/#Psilocybin]]
[[My Webpages|http://h8quadmod.tiddlyspot.com/#%5B%5BMy%20Webpages%5D%5D]]
[[Blender Crash Course|https://www.youtube.com/playlist?list=PLS24VPXMziw2bmTkMdgd0crwU2vYH5Bzu]]
''[[Blender Wiki|http://wiki.blender.org/]]''
''[[Blender Manual Localhost|http://psychology.tiddlyspot.com/#%5B%5BBlender%20Manual%20Localhost%5D%5D]]''
''[[Kiwix Localhost|http://psychology.tiddlyspot.com/#%5B%5BKiwix%20Localhost%5D%5D]]''
''[[Calculators|http://psychology.tiddlyspot.com/#Calculators]]''
''[[World Travel Thailand|http://psychology.tiddlyspot.com/#%5B%5BWorld%20Travel%20Thailand%5D%5D]]''
''[[Copy, URL to Gdrive|http://urltodrive.softgateon.net/]]''
''[[CasualSexProject|http://casualsexproject.com/]]''
[[INET-FAILURES|http://h8quadmod.tiddlyspot.com/#%5B%5BINTERNET%20FAILURES%20AT%20THE%20SANDFORD%20HOTEL%20IN%20SAN%20DIEGO%5D%5D]]
[[INET Crime Schemes|http://goo.gl/Stm6zF]]
''[[Web Tools|https://www.dmoz.org/Computers/Internet/Protocols/DNS/Web_Tools]]''
''[[Internet Speed Test|https://www.whatismyip.com/internet-speed-test/?iref=c1]]''
''[[Exede Satellite Inet|http://www.satelliteinternetsource.com/]]''
''[[DNSqueries|http://www.dnsqueries.com/en/]]''
''[[Linux man pages|http://goo.gl/XhBgid]]''
''[[FREE PROXY LIST|http://www.samair.ru/proxy/]]''
''[[Anonine VPN|http://h8quadmod.tiddlyspot.com/#%5B%5BAnonine%20VPN%5D%5D]]''
''[[CyberGhost Proxy|http://www.cyberghostvpn.com/en_us/free-proxy]]''
''[[HTML(5) Tutorial|http://www.w3schools.com/html/default.asp]]
''[[javascript|http://javascript.crockford.com/]]''
''[[javascriptkit|http://www.javascriptkit.com/cutpastejava.shtml]]''
''[[InlineJavascriptPlugin|http://tiddlytools.com/#InlineJavascriptPluginInfo]]''
[[FaceBook|http://tinyurl.com/njtafkt]]
[[photos.goo|https://photos.google.com/]]
[[flickr|https://www.flickr.com/cameraroll]]
http://imgur.com/
[[WelcomeToTiddlyspot]] [[GettingStarted]]
[[TiddlyWiki Tutorial]]
''[[TiddlyDesktop|https://github.com/Jermolene/TiddlyDesktop/]]''
''[[TiddlyDesktop Video|http://tiddlywiki.com/#Introducing%20TiddlyDesktop%20Video]]''
''[[twhelp|http://twhelp.tiddlyspot.com/]]''
''[[tiddlytools|http://tiddlytools.com/]]''
''[[tiddlyvault|http://tiddlyvault.tiddlyspot.com/]]''
''[[TiddlyWiki/Dev|http://tiddlywiki.com/dev/]]''
''[[TiddlyWiki5|https://github.com/Jermolene/TiddlyWiki5]]''
''[[TW5 Magick|http://tw5magick.tiddlyspot.com/]]''
''[[Search|https://search.disconnect.me/]]''
''[[Gethub H8QuadMod|https://github.com/garyrust/H8QuadMod]]''
[[WikiText TiddlyWiki |http://tinyurl.com/o5p7h3x]]
[[Empty TiddlyWiki 5|http://tiddlywiki.com/]]
---- 
''[[MiniBrowserPlugin|http://tiddlytools.com/#MiniBrowserPlugin]]''
''[[EasyEditPlugin|http://visualtw.ouvaton.org/VisualTW.html#EasyEditPlugin]]''
''[[InlineJavascriptPlugin|http://tiddlytools.com/#InlineJavascriptPlugin]]''
''[[AttachFilePlugin|http://www.tiddlytools.com/#AttachFilePlugin]]''
[[TiddlyMail|file:///var/www/html/tiddlymail/tiddlymail.html]] - (Local)
//[[PermaView]] (stored)//
[[Make trash-wine or moonshine|https://www.youtube.com/watch?v=GvVtw2PKCyY]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/GvVtw2PKCyY" frameborder="0" allowfullscreen></iframe>
</html>
Also see [[Making an Ubuntu live USB stick persistent]]
[[Custom Mint MATE build using Systemback|https://goo.gl/AEwOAx]]
To use USB drive in virtualbox type this in the terminal.. sudo adduser YOURUSERNAME vboxusers
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/R-VdLJX_LwU" frameborder="0" allowfullscreen></iframe>
</html>

[[MakeALiveCD/DVD/BootableFlashFromHarddiskInstall|https://goo.gl/PE4XtJ]]
- click 
[img[http://i.imgur.com/aCEBbJ5.png][https://goo.gl/PE4XtJ]]

https://answers.launchpad.net/systemback
- click 
[img[http://i.imgur.com/JUf2BTM.png][https://answers.launchpad.net/systemback]]
[[ISO Mint 17.2 live: ERROR (initramfs) /cow format specified as aufs and no support found.|https://bugs.launchpad.net/systemback/+bug/1489563]]

[[MakeALiveCD/DVD.pdf on gdrive|https://goo.gl/6vdqPy]] - manual method
[[Making an Ubuntu live USB stick persistent|http://shallowsky.com/blog/linux/install/ubuntu-persistent-live-cd.html]]
<html>
<iframe width="1000" height="1000" src="http://shallowsky.com/blog/linux/install/ubuntu-persistent-live-cd.html" frameborder="0" allowfullscreen></iframe>
</html>
[[Quadcopter Dynamic Modeling and Simulation Using MATLAB and Simulink|https://youtu.be/kIgwZFGlgio]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kIgwZFGlgio" frameborder="0" allowfullscreen></iframe>
</html>

https://github.com/dch33/Quad-Sim

[[MatLab|http://edu.levitas.net/Tutorials/Matlab/index.html]]
<html>
<iframe width="1000" height="1000" src="http://edu.levitas.net/Tutorials/Matlab/index.html" frameborder="0" allowfullscreen></iframe>
</html>
[[mathbff]]

''[[Muon Ray channel|https://www.youtube.com/user/MuonRay/videos]]''
''[[Richard Feynman - Patents|https://youtu.be/rc9gwPB78lk]]''
''[[Richard Feynman QED Lecture 2, Reflection and Transmission : 1/7|https://www.youtube.com/watch?v=UUAG3yDInQQ&list=PL56C0E60D5AC9DFA4]]''
''[[Richard Feynman's Story of Particle Physics|https://youtu.be/kW6rR9H9Vu8]]''
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kW6rR9H9Vu8" frameborder="0" allowfullscreen></iframe>
</html>

''[[Mangaljit Singh channel|https://www.youtube.com/channel/UC1g-2jlKuIRtgLY2DN5CA6A/videos]]''
[[Fresnel Diffraction Integral and Fraunhofer Approximation|https://youtu.be/bSHjLu-j8do]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/bSHjLu-j8do" frameborder="0" allowfullscreen></iframe>
</html>

''[[tawkaw OpenCourseWare channel|https://www.youtube.com/channel/UCh_Fl53JBzp6Swd4LYPqJrQ/videos]]''
[[Lecture 17 Fraunhofer diffraction; Fourier transforms and theorems|https://youtu.be/plU4v1dylf4]]
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/plU4v1dylf4" frameborder="0" allowfullscreen></iframe>
</html>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BMeet%20the%20dazzling%20flying%20machines%20of%20the%20future%5D%5D]] - See [[Quadcopter Tracking]]
|[[NXP Board|http://www.mouser.com/new/NXP-Semiconductors/freescale-freedom-boards/]] - [[Mercury FPGA Board|http://www.micro-nova.com/mercury]]<br><html><iframe src="http://bcove.me/e1zjlzac" frameborder="0" allowfullscreen></iframe></html><br>[[How-To: Shrinkify Your Arduino Projects]] - ''[[Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]]''<br>See [[Eachine H8 Mini RC Quadcopter]]<br>[[Meet the dazzling flying machines of the future|https://youtu.be/RCXGpEmFbOw]] - See [[Amazing In Motion - SWARM]]<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/RCXGpEmFbOw" frameborder="0" allowfullscreen></iframe></html>|[[FPGA Tutorials]] - ''[[Microcontroller Tutorial-Patrick Hood-Daniel]]''<br><<miniBrowser http://www.fpgacenter.com/>>|
[[Microcontroller Tutorial-Patrick Hood-Daniel|https://youtu.be/JMMamSVy1Zs?list=PLE72E4CFE73BD1DE1]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/JMMamSVy1Zs?list=PLE72E4CFE73BD1DE1" frameborder="0" allowfullscreen></iframe>
</html>
''[[PermaLink|http://goo.gl/Euk8mv]]'' 
 [[Install Win 7 from a USB 3.0 Thumb Drive (FAST installation!)]] - See ''[[Pirate Bay|https://thepiratebay.se]]'' (for educational purposes, only).
- I made a Virtual Machine with ''[[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]'' of my Windows7 on my Hard Drive.
 Then I transferred the Windows7 Virtual Machine back to my Hard Drive after installing some programs on it, using this proceedure.

Photo Album of Migrate procedure - ''[[Migrate Windows7 Hard Drive Partitions To An Oracle VirtualBox VDI File|https://goo.gl/photos/5Y8HBDbBDByyis6S8]]''
See original PDF - [[How to migrate existing Windows installations to VirtualBox|https://www.virtualbox.org/wiki/Migrate_Windows]] - I modified the procedure.

1> First - [[MakeALiveCD/DVD/BootableFlashFromHarddiskInstall]] - you need a linux Live CD to make a ''[[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]'' VDI  and install 
- ''[[fsarchiver|https://www.fsarchiver.org/Main_Page]]'' and ''[[qt4-fsarchiver|https://sourceforge.net/projects/qt4-fsarchiver/]]'' to make a backup image of your Windows System. You can [[BitTorrent Sync]] my iso - but my internet is slow.
- click  - See [[BitTorrent Sync Links]] - The [[BitTorrent Sync]] KEY is B5IHSG5ICHP6EOR6TVTK2OIK7OOBHJQRZ (for manual entry).
[img[https://goo.gl/CPikH3][https://link.getsync.com/#f=BitTorrentSync&sz=31E8&t=1&s=7NXSBMPOSUMJAZMS4HNOLDSXRXM6KFKK&i=CJWC52QMCWVSC3WQOGV2ICOXGZ7IVLLMX&v=2.2]]
2> click - This is my original Hard Drive in gparted (Ubuntu Studio) https://goo.gl/Es2UWk - Windows7 is on /dev/sda1 and /dev/sda2
''[[Ubuntu Studio|https://ubuntustudio.org/download/]]'' is on /dev/sda7 and I installed  ''[[fsarchiver|https://www.fsarchiver.org/Main_Page]]'', ''[[qt4-fsarchiver|https://sourceforge.net/projects/qt4-fsarchiver/]]'' and  ''[[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]''. I also made a ''[[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]'' install on my hard drive.
- (You can just make a pendrive - with persisence and install ''[[fsarchiver|https://www.fsarchiver.org/Main_Page]]'', ''[[qt4-fsarchiver|https://sourceforge.net/projects/qt4-fsarchiver/]]'' and  ''[[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]''.)  You will be using it later 
- to transfer Windows7 to a VDI.
[img[https://goo.gl/Es2UWk][https://goo.gl/fXyfNw]]
3> I made a backup copy of /dev/sda1 and /dev/sda2 with the qt4-fsarchiver. This shows the restore process to my new VDI file for Virtualbox
- using those images.  But first you will have to make the VDI to restore to. Just make the image now. Use Partition save with fsarchiver instead 
(other side). - Use Ubuntu Studio Hard Disk Install (or pendrive - with persisence.) to do this.
[img[https://goo.gl/qFZQo2][https://goo.gl/ae3Icu]]
[img[https://goo.gl/blRSgo][https://goo.gl/1l5RUz]]
4> Prepare to boot up your virtual machine with Virtualbox. Put Ubuntu Studio.vdi on the first Sata drive, and make an empty Dynamic VDI file 
- for your Windows7 transfer on the second Sata drive. My Dynamic size was 322 Gb. Do this as user:root so Virtualbox shared drives will be
- accessible. (no problems with privileges - just in case).
[img[https://goo.gl/pOych1][https://goo.gl/d72RnJ]]
[img[https://goo.gl/PfpoJD][https://goo.gl/UB8jZV]]
5> Boot the Ubuntu Studio.vdi up. Open GParted. Win7.vdi will be /dev/sdb. Create a Partition Table, then create /dev/sdb1 and /dev/sdb2 with 
- NTFS formatting and appropriate sizes.
[img[https://goo.gl/kmX1i2][https://goo.gl/W7UO5y]]
6> Now you can transfer your system with qt4-fsarchiver Restore - Deja Vu
[img[https://goo.gl/qFZQo2][https://goo.gl/ae3Icu]]
[img[https://goo.gl/blRSgo][https://goo.gl/1l5RUz]]
- You will get a warning about /dev/sdb1 and /dev/sdb2 - but Continue to Restore = YES  When you boot it up, they will be /dev/sda1 and /dev/sda2
[img[https://goo.gl/4P5DMZ][https://goo.gl/ThoZwp]]
- If there is a PBR (partition boot record) you will get a warning. - DO NOT PERFORM RESTORE = NO. You only have 2 partitions. 
- Your hard disk has more. You will fix that later with your Windows7 Install (repair) CD or iso on your first boot up.
[img[https://goo.gl/aIQomq][https://goo.gl/SiitcV]]
7> After your system is transfered you will have to mount /dev/sdb2 and rename agp440.sys to agp440.sys.orig and intelppm.sys to intelppm.sys.orig
[img[https://goo.gl/6UgbHF][https://goo.gl/Df9h9C]]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ABOVE+++++++++++++++++++++++++++++++++++++++++++++++++++++

8> Your done. You can now use the vdi to boot up. You will have to use the Windows7 Install (repair) CD or iso on your first boot up to fix the PBR (partition boot record).
- It will automatically find Windows and repair the PBR. After that you should be able to boot up without it. (It's after choose language, Repair, and choose the troubleshooter.)
9> On First boot the screen will be small.  You need to install Devices/Insert Guest Additions CD image.  Go to the CD drive and install it. Reboot.
[img[https://goo.gl/XrJMVK][https://goo.gl/yoyINh]]
[img[https://goo.gl/RKgk3g][https://goo.gl/TUFpl4]]
- Now you have installed the drivers for Virtualbox, and the screen and hardware should work normally.

[[Emulating Raspberry Pi in Windows the easy way]] - [[Raspberry Pi's Impact on Hacking]] -  (for educational purposes, only).
[[Permaview|http://h8quadmod.tiddlyspot.com/#MiniBrowser]] 
[[MiniBrowserList]] - [[How to Setup an LCD Touchscreen on the Raspberry Pi]] - [[Morse Code]]

<<miniBrowser http://www.universaluclick.com/comics/strip/alley-oop#samples>>
Slinky loop aerial
https://www.nonstopsystems.com/radio/pdf-ant/article-antenna-slinky-RDCM-11-2010.pdf
----
Bluefin SandShark
http://www.bluefinrobotics.com/vehicles-batteries-and-services/bluefin-sandshark/
----
Bluefin- 12D
http://www.bluefinrobotics.com/vehicles-batteries-and-services/bluefin-12d/
----
Korean Air Lines Flight 007
https://en.wikipedia.org/wiki/Korean_Air_Lines_Flight_007
----
PSY
http://www.shoutcast.com/Search?query=Psy
----
Ambient Art Foundation - Shoutcast
http://www.shoutcast.com/Search?query=Ambient%20Art%20Foundation
----
Shoutcast
https://www.shoutcast.com/Search?query=Sleep%20Radio%20Stream#
----
Ambient Art Foundation
http://www.radioforest.net/radio/ambient-art-foundation/700272
----
Internet Radio
https://www.internet-radio.com
----
Wikipedia
https://en.wikipedia.org/wiki/
----
Name: phuket@jabber.hot-chilli.net
https://jabber.hot-chilli.net/jappix/
----
Cotard delusion (Wikipedia)
http://en.wikipedia.org/wiki/Cotard_delusion
----
Unit Converter
http://www.unitconverters.net/
----
Scientific Calculator
http://www.calculator.net/scientific-calculator.html
----
List of computer criminals (Wikipedia)
https://en.wikipedia.org/wiki/List_of_computer_criminals
----
Corruption
https://en.wikipedia.org/wiki/Corruption
----
Kevin Mitnick (Wikipedia)
https://en.wikipedia.org/wiki/Kevin_Mitnick
----
Lewys Martin
http://www.cityam.com/1416836848/bitcoin-blackmailer-lewys-martin-who-demanded-1m-halifax-return-28000-customers-details
----
U-Turn USA Powered Paragliders and Paramotor Equipment
http://u-turnusa.com/
----
Coanda effect
http://www.xplorair.com/nasa-application.html
----
Vertical Takeoff and Landing Aircraft without Rotating Aerofoil
http://www.xplorair.com/
----
XPLORAIR's Concept
http://www.xplorair.com/concept_xplorair.html
----
BUILD A $360 SYNTHETIC APERTURE RADAR WITH MIT’S OPENCOURSEWARE
http://hackaday.com/2012/12/18/build-a-360-synthetic-aperture-radar-with-mits-opencourseware/
----
RADAR IMAGING IN YOUR GARAGE: SYNTHETIC APERTURE RADAR
http://hackaday.com/2014/03/17/radar-imaging-in-your-garage-synthetic-aperture-radar/
----
Homemade synthetic aperture radar (see more links)
http://hforsten.com/homemade-synthetic-aperture-radar.html
----
Raspberry Pi FM transmitter
http://makezine.com/projects/raspberry-pirate-radio/
----
Adafruit SDR
https://www.adafruit.com/products/1497
----
Raspberry Pi Zero
https://www.adafruit.com/products/2885
----
Spread spectrum
https://en.wikipedia.org/wiki/Spread_spectrum
----
PSK
https://en.wikipedia.org/wiki/Phase-shift_keying
----
Spectroscopy
https://en.wikipedia.org/wiki/Spectroscopy
----
HDR
https://en.wikipedia.org/wiki/High-dynamic-range_imaging
----
Dynamic dispatch
https://en.wikipedia.org/wiki/Dynamic_dispatch
----
Repeater
https://en.wikipedia.org/wiki/Repeater
----
Bit banging
https://en.wikipedia.org/wiki/Bit_banging
----
Computer cluster
https://en.wikipedia.org/wiki/Computer_cluster
----
Sequential logic
https://en.wikipedia.org/wiki/Sequential_logic
----
Adafruit Ultimate GPS HAT for Raspberry Pi
https://learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps-hat-for-raspberry-pi.pdf
----
Color temperature
https://en.wikipedia.org/wiki/Color_temperature
----
Lux
https://en.wikipedia.org/wiki/Lux
----
Adafruit Color Sensors
https://learn.adafruit.com/downloads/pdf/adafruit-color-sensors.pdf
----
PiPhone - A Raspberry Pi based Cellphone
https://learn.adafruit.com/downloads/pdf/piphone-a-raspberry-pi-based-cellphone.pdf
----
Adafruit FT232H Breakout
https://learn.adafruit.com/downloads/pdf/adafruit-ft232h-breakout.pdf
----
Ringly Teardown
https://learn.adafruit.com/downloads/pdf/ringly-teardown.pdf
----
Home Automation in the Cloud with the ESP8266 & Adafruit IO
https://learn.adafruit.com/downloads/pdf/home-automation-in-the-cloud-with-the-esp8266-and-adafruit-io.pdf
----
Mini Pan-Tilt Kit Assembly
https://learn.adafruit.com/downloads/pdf/mini-pan-tilt-kit-assembly.pdf
----
Programming Microcontrollers using OpenOCD on a Raspberry Pi
https://learn.adafruit.com/downloads/pdf/programming-microcontrollers-using-openocd-on-raspberry-pi.pdf
----
Adafruit
https://www.adafruit.com/
----
Radio direction finder
https://en.wikipedia.org/wiki/Radio_direction_finder
----
NAVIGATION THEORY AND EQUIPMENT
http://www.virhistory.com/navy/manuals/10478a/10478a-08.pdf
----
Phase-locked loop
https://en.wikipedia.org/wiki/Phase-locked_loop
----
Transponder
https://en.wikipedia.org/wiki/Transponder
----
Telemetry
https://en.wikipedia.org/wiki/Telemetry
----
First-person view (radio control)
https://en.wikipedia.org/wiki/First-person_view_(radio_control)
----
Time (Wikipedia)
https://en.wikipedia.org/wiki/Time
----
Trilateration
https://en.wikipedia.org/wiki/Trilateration
----
Triangulation
https://en.wikipedia.org/wiki/Triangulation
----
List of mathematical symbols
https://en.wikipedia.org/wiki/List_of_mathematical_symbols
----
Trigonometric functions
https://en.wikipedia.org/wiki/Trigonometric_functions
----
Navigation
https://en.wikipedia.org/wiki/Navigation
----
Mercury FPGA Board
http://www.micro-nova.com/mercury
----
FPGA Center
http://www.fpgacenter.com/
----
Students in Singapore built this incredible personal flying machine
http://www.techinsider.io/an-incredible-new-flying-machine-design-2015-12
----
Comparison of programming languages
https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(object-oriented_programming)
----
Object-oriented programming
https://en.wikipedia.org/wiki/Object-oriented_programming
----
MQTT
https://en.wikipedia.org/wiki/MQTT
----
Morse Code
http://morsecode.scphillips.com/translator.html
----
Makehuman
http://www.makehuman.org/
----
Alley OOp
http://www.universaluclick.com/comics/strip/alley-oop#samples
----
EuropaRussiaMoscow
http://streaming210.radionomy.com/EuropaRussiaMoscow
----
ICECAST
http://icecast.org/
----
Download torrent with BitLet.org
http://www.bitlet.org/
----
Glassparrot at wikia.com
http://glassparrot.wikia.com/wiki/Glassparrot_Wiki
----
blenderorganizer at tiddlyspot.com
http://blenderorganizer.tiddlyspot.com/
----
glassparrot at tiddlyspot.com
http://glassparrot.tiddlyspot.com/
----
fishcode at tiddlyspot.com
http://fishcode.tiddlyspot.com/
----
GlassParrot at Wordpress
http://glassparrot.wordpress.com/video/
----
Detekt - Computer and network surveillance software
https://en.wikipedia.org/wiki/Detekt
----
Maltego Forensic Testing
http://www.paterva.com/web6/
----
Carbon Fiber Air Tanks
http://www.airgunsofarizona.com/Tanks.html
----
Google Products
https://www.google.com/intl/en/about/products/
----
Internet Radio
https://www.internet-radio.com/
----
Shoutcast
http://www.shoutcast.com/Home
----
How to Setup an LCD Touchscreen on the Raspberry Pi
http://www.circuitbasics.com/setup-lcd-touchscreen-raspberry-pi/
----
How to Build a Portable Hacking Station with a Raspberry Pi and Kali Linux
http://lifehacker.com/how-to-build-a-portable-hacking-station-with-a-raspberr-1739297918
----
Packet Sniffing using the Raspberry Pi
http://jamesdotcom.com/?p=400
----
JavaScriptKit
http://www.javascriptkit.com/cutpastejava.shtml
----
TiddlyWiki.com - official release
http://www.TiddlyWiki.com
----
TiddlyWiki.org - wiki, tickets, source control
http://www.TiddlyWiki.org
----
GoogleGroup: TiddlyWiki - user/author discussion
http://groups.google.com/group/TiddlyWiki/
----
GoogleGroup: TiddlyWikiDev - core/plugin discussion
http://groups.google.com/group/TiddlyWikiDev/
----
TiddlyVault - index of add-ons from many sources
http://TiddlyVault.TiddlySpot.com
----
TiddlySpot - instant TiddlyWiki hosting!!
http://www.TiddlySpot.com
----
TiddlyTools - plugins, scripts, templates, etc.
http://www.TiddlyTools.com
----
del.icio.us - find popular TiddlyWiki sites
http://del.icio.us/tag/tiddlywiki
----
<<tiddler BookmarkList>>
----
<<tiddler MiniBrowserList_osmosoft>>
----
<<tiddler MiniBrowserList_tech>>
----
<<tiddler MiniBrowserList_news>>
----
<<tiddler MiniBrowserList_media>>
----
<<tiddler MiniBrowserList_flash>>
flash games...

----
Rag Doll
http://www.planetdan.net/pics/misc/georgerag.swf
----
Asteroids
http://www.80smusiclyrics.com/games/asteroids.swf
----
PacMan
http://www.80smusiclyrics.com/games/pacman.swf
----
Tetris
http://www.80smusiclyrics.com/games/tetris2.swf
----
Simon
http://www.80smusiclyrics.com/games/simon.swf
flickr photos...

----
HDR Pool (public collection)
http://www.flickr.com/groups/hdr/pool/show/
----
favorite videos...

----
"PovertyUSA" - WATCH THIS!
http://www.nccbuscc.org/cchd/povertyusa/tour.swf
----
Jack W counts (1yr old)
http://wolfram.org/media/jack_20050310_cleaned.mov
----
webcams...

----
Times Square
http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx
----
Monterey Bay
http://www.mbayaq.org/media/STRM/mba_mbay.asx
----
Wrightsville Beach, North Carolina
http://www.aroundtownnc.com/wvx/beachcam.wvx
----
Koningsplein, Amsterdam
"""mms://rembrandt.terena.nl/stream2"""
----
Corsica
http://195.6.173.164/liensmedias/webcam.asx
----
Kulak's Woodshed: Live/Recorded acoustic music
http://www.kulakswoodshed.com/high.asx
----
news...

----
BBC News24 - Live
http://www.bbc.co.uk/newsa/n5ctrl/live/nb/rm/video/now2_nb.ram
----
BBC News - London Summary
http://www.bbc.co.uk/london/realmedia/news/tvnews.ram
----
BBC Entertainment News
http://www.bbc.co.uk/newsa/n5ctrl/summaries/entertain/bb_liquid_news.ram
----
Bloomberg Business News
http://www.bloomberg.com/streams/video/LiveBTV200.ram
----
movies (AmericaFree.TV)...

----
Classic Comedy
http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov
----
Classic Movies
http://www.americafree.tv/unicast_mov/AmericaFreeTVClassics.mov
----
"B" Movies
http://www.americafree.tv/unicast_mov/AmericaFreeTVDimensionB.mov
----
science/education/govt...

----
PBS: Annenberg/CPB
http://www.scctv.net/annenberg_broadband.asx
----
NASA TV
http://science.ksc.nasa.gov/video/nasatv/nasatv.asx
----
C-SPAN 1
http://play.rbn.com/play.asx?url=cspan/cspan/wmlive/cspan1v.asf&proto=mms?mswmext=.asx
----
C-SPAN 2
http://play.rbn.com/play.asx?url=cspan/cspan/wmlive/cspan2v.asf&proto=mms?mswmext=.asx
----
C-SPAN 3
http://play.rbn.com/play.asx?url=cspan/cspan/wmlive/cspan3v.asf&proto=mms?mswmext=.asx
news and events...

----
News - CNN
http://www.cnn.com
----
News - BBC
http://news.bbc.co.uk
----
Comics
http://www.unitedmedia.com/comics/
----
Television
http://www.tvguide.com/listings/default.aspx
----
Weather
http://www.wunderground.com/US/CA/Sunnyvale.html
----
Earthquakes
http://quake.wr.usgs.gov/recenteqs/latest.htm
----
Maps
http://maps.google.com
BT/Osmosoft...

----
Jeremy Ruston
http://jermolene.wordpress.com/
----
Andrew Back
http://carrierdetect.com/
----
Fred Dohr
http://fnd.lewcid.org/blog/
----
James Shi
http://curiousjames.wordpress.com/
----
Jon Lister
http://jaybyjayfresh.com/
----
Nick Webb
http://www.erraticmusings.com/
----
Paul Downey
http://blog.whatfettle.com/
----
Phil Hawksworth
http://www.hawksworx.com/journal/
----
Phil Whitehouse
http://philwhitehouse.blogspot.com/
----
Simon McManus
http://simonmcmanus.com/
technical references...

----
Javascript QuickRef (DevGuru)
http://www.devguru.com/technologies/javascript/
----
CSS QuickRef (DevGuru)
http://www.devguru.com/technologies/css2/
----
CSS compatibility chart
http://www.webdevout.net/browser-support-css
----
Unicode Character Charts
http://www.alanwood.net/unicode/
----
UTF-8 Encoding (Wikipedia)
http://en.wikipedia.org/wiki/UTF-8
----
HTML Character entities (W3)
http://www.w3.org/TR/REC-html40/sgml/entities.html
----
Mozilla Developer Center
http://developer.mozilla.org/
----
Gecko DOM Reference
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference
----
IP Lookup...

----
ARIN - North America
http://www.arin.net
----
RIPE - Europe
http://www.ripe.net
----
APNIC - Asia/Pacific
http://www.apnic.net
----
LACNIC - Latin America/Caribbean
http://www.lacnic.net
----
AFRINIC - Africa
http://www.afrinic.net
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Documentation
>see [[MiniBrowserPluginInfo]]
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Revisions
<<<
2011.02.08 1.5.3 added 'nocontrols' macro keyword parameter
2009.08.29 1.5.2 in load(), fixed 'noplayer' IFRAME output
2009.07.03 1.5.1 added onclick handling to 'n of m' button.  also, if noedit mode, add line numbers to bookmarks droplist items
2009.06.08 1.5.0 added optional 'noedit' mode: replaces add/del/edit buttons with next/previous navigation.
|see [[MiniBrowserPluginInfo]] for additional revision details|
2007.10.15 1.0.0 combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 0.0.0 inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.MiniBrowserPlugin={major: 1, minor: 5, revision: 3, date: new Date(2011,2,8)};

config.shadowTiddlers.MiniBrowser='<<miniBrowser>>';
config.options.txtMiniBrowserWidth=config.options.txtMiniBrowserWidth||'100%';
config.options.txtMiniBrowserHeight=config.options.txtMiniBrowserHeight||'480';
config.macros.miniBrowser= {
	favoritesList: 'MiniBrowserList',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var noPlayer=params[0]&&params[0].toLowerCase()=='noplayer'; if (noPlayer) params.shift();
		var noEdit  =params[0]&&params[0].toLowerCase()=='noedit';   if (noEdit)   params.shift();
		var expand  =params[0]&&params[0].toLowerCase()=='expand';   if (expand)   params.shift();
		var hideControls=params[0]&&params[0].toLowerCase()=='hidecontrols'; if (hideControls) params.shift();
		var noControls  =params[0]&&params[0].toLowerCase()=='nocontrols';   if (noControls)   params.shift();
		hideControls	=noControls||hideControls;	// no controls implies hide controls
		var url		=(params[0]&&!store.tiddlerExists(params[0]))?params.shift():'';
		if (!url.length) noControls=hideControls=false; // if no initial URL, force controls to show
		if (!config.macros.player) noPlayer=true; // PlayerPlugin not installed
		var w=config.options.txtMiniBrowserWidth;
		var h=config.options.txtMiniBrowserHeight;

		// create form
		var guid=new Date().getTime()+Math.random().toString(); // globally unique ID
		var html=store.getTiddlerText('MiniBrowserPlugin##html');
		html=html.replace(/%id%/g,guid)
			.replace(/%noplayer%/g,noPlayer?'true':'')
			.replace(/%noedit%/g,noEdit||readOnly?'none':'inline')
			.replace(/%shownav%/g,noEdit||readOnly?'inline':'none')
			.replace(/%hidecontrols%/g,hideControls?'none':'block')
			.replace(/%bookmarksize%/g,(expand?70:20)+'%')
			.replace(/%urlsize%/g,(expand?69.5:20)+'%')
			.replace(/%linebreak%/g,expand?'<br>':'')
			.replace(/%favorites%/g,params[0]||config.macros.miniBrowser.favoritesList);
		createTiddlyElement(place,'span').innerHTML=html;

		// init form
		function $(i){return document.getElementById(i)}; // abbrev
		$('minibrowser_controls_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_resize_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_nocontrols_'+guid).style.display=noControls?'none':'inline';
		$('minibrowser_togglecontrols_'+guid).checked=!hideControls;
		$('minibrowser_form_'+guid).url.value=url;
		$('minibrowser_form_'+guid).w.value=w;
		$('minibrowser_form_'+guid).h.value=h;
		if (noPlayer) { // hide type list no PlayerPlugin
			$('minibrowser_type_'+guid).style.display='none';
			$('minibrowser_url_'+guid).style.width=(expand?81.5:32)+'%';
		}

		// load bookmarks droplist from HR-separated tiddler contents
		var b=$('minibrowser_bookmarks_'+guid);
		while (b.options[1]) b.options[1]=null; // clear list but leave 'prompt' item
		var p; while (p=params.shift()) this.getFavorites(b,p,noEdit); // load custom bookmarks
		if (b.length<2) this.getFavorites(b,config.macros.miniBrowser.favoritesList,noEdit); // default list
		$('minibrowser_nav_'+guid).value='1 out of '+b.length;

		// load initial URL (if any)
		var place=$('minibrowser_player_'+guid);
		this.load(place,guid,'','',w,h,true,noPlayer);
		this.go($('minibrowser_form_'+guid));
	},
	getFavorites: function(list,tid,noEdit) {
		var txt=store.getTiddlerText(tid); if (!txt||!txt.trim().length) return;
		txt=this.getWikifiedData(txt);
		var parts=txt.split('\n----\n');
		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
			var indent=value&&value.length?'\xa0\xa0':'';
			var prefix=value.length&&noEdit?list.length+1+': ':'';
			list.options[list.length]=new Option(prefix+indent+label,value,false,false);
		}
	},
	getWikifiedData: // wikify 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.replace(/\r*/g,'').replace(/\n\n/g,'\n');
	},
	load: function(place,id,type,url,w,h,showcontrols,noPlayer) {
		if (!noPlayer)
			config.macros.player.loadURL(place,id,type,url,w,h,showcontrols);
		else { // force IFRAME-only display
			if (!place) place=document.getElementById(id).parentNode;
			var fmt="<iframe name='%0' id='%0' src='%1' width='%2' height='%3' \
				style='background:#fff;border:1px solid'></iframe>";
			place.innerHTML=fmt.format([id,url,w,h]);
		}
	},
	go: function(f) {
		var url=f.url.value.trim();
		if (!url.length) url=f.url.value=f.bookmarks.value.trim();
		if (!url.length) { this.done(f); return false; }
		var id=f.playerID.value;
		document.getElementById('minibrowser_player_'+id).style.display='block';
		document.getElementById('minibrowser_controls2_'+id).style.display='block';
		this.load(null,id,f.type.value,f.url.value,f.w.value,f.h.value,f.ctrls.checked,f.noPlayer.value=='true');
		var matched=false; for (var i=0; i<f.bookmarks.options.length; i++) // select matching bookmark
			if (f.bookmarks.options[i].value==url) { f.bookmarks.selectedIndex=i; matched=true; break; }
		if (!matched) f.bookmarks.selectedIndex=0;
		f.done.disabled=false;
		return false;
	},
	done: function(f) {
		var id=f.playerID.value;
		this.load(null,id,null,null,f.w.value,0,f.ctrls.checked,f.noPlayer.value=='true');
		document.getElementById('minibrowser_player_'+id).style.display='none';
		document.getElementById('minibrowser_controls2_'+id).style.display='none';
		f.done.disabled=true; 
		return false;
	},
	fit: function(place) {
		// fudge factor to account for the other controls + padding + borders.  ADJUST THIS VALUE TO FIT LAYOUT
		var trim=89;
		var t=story.findContainingTiddler(place);
		if (!t) { t=place; while (t && t.className!='floatingPanel') t=t.parentNode; } if (!t) return;
		var w='100%'; // horizontal stretching via CSS works, but vertical stretching doesn't... so:
		var h=t.offsetHeight-trim; // workaround: get containing panel/tiddler height and subtract trim height
		var f=place.form;
		this.load(null,f.playerID.value,f.type.value,f.url.value,w,h,f.ctrls.checked,f.noPlayer.value=='true');
		place.form.w.value=w; place.form.h.value=h; // update width/height input fields
	},
	add: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=prompt('Please enter a description for\n'+place.value); if (!d || !d.length) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var tid=store.getTiddler(title);
		var txt='%0\n%1\n----\n%2'.format([d,v,tid?tid.text:'']);
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		if (!tid) story.displayTiddler(story.findContainingTiddler(place),title);
		else story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	},
	del: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=place.options[place.selectedIndex].text; if (!d.length) return;
		if (!confirm('Are you sure you want to remove this favorite?\n\n'+d+'\n'+v)) return;
		var tid=store.getTiddler(title); if (!tid) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var pat='%0\n%1\n----\n'.format([d.replace(/\xa0/g,''),v]); var re=new RegExp(pat,'i');
		var txt=tid.text.replace(re,'');
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	}
}
//}}}
/***
//{{{
!html
<form id='minibrowser_form_%id%' style='display:block;margin:0;padding:0' onsubmit='return config.macros.miniBrowser.go(this);'><!--
--><nobr><input type='hidden' name='playerID' value='%id%'><input type='hidden' name='noPlayer' value='%noplayer%'><!--
--><div id='minibrowser_controls_%id%' style='display:%hidecontrols%'><!--
--><input type='button' value='<' title='back' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(-1)}catch(e){window.history.go(-1)}' ><!--
--><input type='button' value='>' title='forward' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(+1)}catch(e){window.history.go(+1)}'><!--
--><input type='button' value='+' title='refresh'style='width:3%'
	onclick='try{window.frames["player_%id%"].location.reload()}catch(e){;}'><!--
--><input type='button' value='x' title='stop'style='width:3%'
	onclick='window.stop()'><!--
--><select name='bookmarks' id='minibrowser_bookmarks_%id%' size='1' style='width:%bookmarksize%'
	onchange='this.form.url.value=this.value;
		this.form.nav.value="%0 out of %1".format([this.selectedIndex+1,this.length]);
		this.form.nav.title="reload %0".format([this.options[this.selectedIndex].text]);
		return config.macros.miniBrowser.go(this.form);'><!--
--><option value=''>bookmarks...</option><!--
--></select><!--
--><span style='display:%noedit%'><!--
--><input type='button' value='add' title='add URL to the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.add(this.form.url,this.getAttribute("favorites"));'><!--
--><input type='button' value='del' title='remove URL from the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.del(this.form.bookmarks,this.getAttribute("favorites"));'><!--
--><input type='button' value='edit' title='edit the bookmarks list' style='width:6%'
	favorites="%favorites%"
	onclick='story.displayTiddler(null,this.getAttribute("favorites"),2)'><!--
--></span><!--
--><span style='display:%shownav%'><!--
--><input name=prev type='button' value='&#x25C4;' title='view previous bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.max(b.selectedIndex-1,0); b.onchange();'><!--
--><input name='nav' id='minibrowser_nav_%id%'
	type='button' value='N out of MM' title='enter a bookmark number' style='width:12%'
	onclick='return this.form.next.click();
		var b=this.form.bookmarks;
		var i=prompt("Enter a bookmark number (1-"+b.length+")",b.selectedIndex+1);
		if (i && i<b.length) { b.selectedIndex=i-1; b.onchange(); }'><!--
--><input name=next type='button' value='&#x25BA;' title='view next bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.min(b.selectedIndex+1,b.length); b.onchange();'><!--
--></span><!--
-->%linebreak%<!--
--><select name='type' id='minibrowser_type_%id%' size='1' style='width:12%'
	onchange='var opt=this.options; for (var i=0; i<opt.length; i++)
		if (i==this.selectedIndex) opt[i].text=opt[i].text.replace(/\xa0\xa0/,"&radic;");
		else opt[i].text=opt[i].text.replace(/&radic;/,"\xa0\xa0");
		if (this.selectedIndex==0) opt[1].text=opt[1].text.replace(/\xa0\xa0/,"&radic;");'><!--
--><option value=''>type...</option><!--
--><option value=''>&radic; auto-detect</option><!--
--><option value='iframe'>&nbsp;&nbsp; web page</option><!--
--><option value='windows'>&nbsp;&nbsp; windows media</option><!--
--><option value='realone'>&nbsp;&nbsp; real one</option><!--
--><option value='quicktime'>&nbsp;&nbsp; quicktime</option><!--
--><option value='flash'>&nbsp;&nbsp; flash</option><!--
--><option value='image'>&nbsp;&nbsp; jpg/gif/png</option><!--
--></select><!--
--><input type='text' name='url' id='minibrowser_url_%id%' size='60' value='' style='width:%urlsize%'
	onfocus='this.select()'><!--
--><input type='submit' value='go' title='view URL' style='width:6%'><!--
--><input type='button' value='open' title='open a separate tab/window' style='width:6%'
	onclick='if (this.form.url.value.length) window.open(this.form.url.value)'><!--
--><input type='button' value='done' name='done' disabled title='disconnect from URL' style='width:6%'
	onclick='return config.macros.miniBrowser.done(this.form);'><!--
--></div><!--
--><div id='minibrowser_player_%id%' style='display:none;text-align:center'></div><!--
--><span id='minibrowser_controls2_%id%' style='margin-top:2px;display:none;'><!--
--><div id='minibrowser_resize_%id%' style='display:%hidecontrols%;float:right'><!--
--> size: <input type='text' name='w' size='3' value='' style=''
	onfocus='this.select()'><!--
-->x<input type='text' name='h' size='3' value='' style=''
	onfocus='this.select()'><!--
--> <input type='submit' value='set' style='width:5em'
	onclick='var f=this.form;
		if(!f.w.value.trim().length) f.w.value=config.options.txtMiniBrowserWidth;
		if(!f.h.value.trim().length) f.h.value=config.options.txtMiniBrowserHeight;
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='submit' value='reset' style='width:5em'
	onclick='var f=this.form; f.ctrls.checked=true; f.w.value="100%"; f.h.value="480";
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='button' value='fit' title='resize player to fit containing window' style='width:5em'
	onclick='config.macros.miniBrowser.fit(this)'><!--
--></div><!--
 style='display:%hidecontrols%'
--><span id='minibrowser_nocontrols_%id%'><!--
--> <input type='checkbox' name='ctrls' id='minibrowser_togglecontrols_%id%' title='toggle minibrowser controls' CHECKED 
	onclick='document.getElementById("minibrowser_controls_%id%").style.display=this.checked?"block":"none";
		document.getElementById("minibrowser_resize_%id%").style.display=this.checked?"block":"none";'
><a href='' title='toggle minibrowser controls'
	onclick='this.previousSibling.click();return false;'>show controls</a><!--
--></span><!--
--></span><!--
--></nobr></form>
!end
//}}}
***/
 
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Usage
<<<
{{{<<miniBrowser noplayer noedit expand hidecontrols nocontrols URL TiddlerName TiddlerName TiddlerName...>>}}}
* ''noplayer'' (optional)<br>disables support for embedded media player (using [[PlayerPlugin]], if installed)
* ''noedit'' (optional)<br>hides bookmark //add//, //del//, and //edit// buttons
* ''expand'' (optional)<br>displays minibrowser controls on two lines instead of one for increased readability, especially when long titles or URLs are displayed.
* ''hidecontrols'' (optional)<br>hides initial display of minibrowser controls (except for 'show controls' checkbox)<br>//note: if no initial URL is specified, controls will be shown anyway//
* ''nocontrols'' (optional)<br>hides all minibrowser controls including 'show controls' checkbox<br>//note: if no initial URL is specified, controls will be shown anyway//
* ''URL'' (optional)<br>specifies an initial URL to open when the mini browser is rendered
* ''TiddlerName'', ''TiddlerName''... (optional)<br>indicates one or more tiddlers containing 'HR-separated' lists of favorites.<br>//notes: if no tiddler is specified, [[MiniBrowserList]] is used by default.  In addition, when adding/deleting favorites, the plugin automatically updates [[MiniBrowserList]], regardless of any alternative lists of favorites stored in separate tiddlers.  After changes to [[MiniBrowserList]] are made, you can then use cut/paste to manually move entries from that tiddler into other tiddlers.//
<<<
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Examples
>{{{<<miniBrowser>>}}}<br>{{smallform small{<<miniBrowser>>}}}
>{{{<<miniBrowser noedit>>}}}<br>{{smallform small{<<miniBrowser noedit>>}}}
>{{{<<miniBrowser expand>>}}}<br>{{smallform small{<<miniBrowser expand>>}}}
>{{{<<miniBrowser noedit expand>>}}}<br>{{smallform small{<<miniBrowser noedit expand>>}}}
>{{{<<miniBrowser hidecontrols http://www.TiddlyWiki.com>>}}}<br>{{smallform small{<<miniBrowser hidecontrols http://www.TiddlyWiki.com>>}}}
!!!!!Revisions
<<<
2011.02.08 1.5.3 added 'nocontrols' macro keyword parameter
2009.08.29 1.5.2 in load(), fixed 'noplayer' IFRAME output
2009.07.03 1.5.1 added onclick handling to 'n of m' button.  also, if noedit mode, add line numbers to bookmarks droplist items
2009.06.08 1.5.0 added optional 'noedit' mode to hide bookmark add/del/edit buttons.  Also, moved html def'n to section (saves space)
2008.09.30 1.4.0 removed hard-coded fontsize.  Added 'expand' option (wider controls, displayed on two lines)
2008.09.16 1.3.1 fixed getWikifiedData() when using IE (remove \r and multiple \n)
2008.08.12 1.3.0 added support for wikifying content from favorites lists to enable use of forEachTiddler or inline script output to generate lists on the fly.
2008.08.06 1.2.2 corrected size control buttons to use fixed width
2008.04.07 1.2.1 added txtMiniBrowserWidth and txtMiniBrowserHeight.  cleanup init handling (somewhat)
2008.04.06 1.2.0 added support for specifying initial URL to view (suggested by Richard Berg).  When opening a URL, select matching entry (if any) in bookmarks droplist.  Added support for hiding minibrowser controls.
2008.01.19 1.1.0 added support for optional extra favorites lists stored in separate tiddlers
2007.10.15 1.0.0 combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 0.0.0 inline script
<<<
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BMorse%20Code%5D%5D]] - See MQTT and Alley [[OOp|MiniBrowser]] in bookmarks
[[Morse Code|http://morsecode.scphillips.com/translator.html]]
<<miniBrowser http://morsecode.scphillips.com/translator.html>>
[[Permaview|http://psychology.tiddlyspot.com/#Moses!]] -  [[Shoutcast]] - ''[[N6XRE - RUST, GARY A|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]] - [[BaoFeng UV-5R Dual Band HandiTalkie|http://www.amazon.com/BaoFeng-UV-5R-Dual-Radio-Black/dp/B007H4VT7A/ref=sr_1_4?s=electronics&ie=UTF8&qid=1462976213&sr=1-4&keywords=baofeng+uv-5r]] - [[Baofeng UV-5R repeater|http://glassparrot.tiddlyspot.com/#%5B%5BBaofeng%20UV-5R%20repeater%5D%5D]]''
''[[Ham It Up Upconverter for SDR|http://www.amazon.com/dp/B009LQT3G6/ref=wl_it_dp_o_pd_nS_ttl?_encoding=UTF8&colid=27Y18XJ9539G3&coliid=I32X1JBZPDTZBE]] - [[TYT TYT-TH-9800 50W/40W Two Way Radio|http://www.amazon.com/dp/B00I53VUEY/ref=wl_it_dp_o_pd_nS_ttl?_encoding=UTF8&colid=27Y18XJ9539G3&coliid=I3TAJ0ZMMR6DXZ&psc=1]] - [[Pookyfish|http://glassparrot.tiddlyspot.com/#Pookyfish]] Free Internet''
''[[Broadcastify|http://www.broadcastify.com/listen/ctid/219]]'' - [[MorseCode|http://fishcode.tiddlyspot.com/#MorseCode]] - ''[[WebSDR|http://www.websdr.org/]]'' - ''[[eHamNet|http://www.eham.net/]]'' - ''[[AMPRNET|http://wiki.ampr.org/wiki/Main_Page]]'' - ''[[Winlink|http://glassparrot.tiddlyspot.com/#%5B%5BWinlink%20Digital%20Ameteur%20Radio%5D%5D]]'' - ''[[Packet Radio|http://www.tapr.org/pr_links.html]]'' - ''[[HackRF|http://glassparrot.tiddlyspot.com/#HackRF]]'' - ''[[RPi Hub|http://glassparrot.tiddlyspot.com/#%5B%5BRPi%20Hub%5D%5D]]''
Click on Tags tab to shorten the Timeline menu if your screen is too narrow. -  ''[[Moving Plans|http://psychology.tiddlyspot.com/#%5B%5BMoving%20Plans%5D%5D]] - [[SEEKER Podcasts|http://www.seeker.com/]]'' 
|''[[Morons!|http://psychology.tiddlyspot.com/#%5B%5BBimbo's%20Initiation%5D%5D]]'' They're all morons. You realize, ''[[this|https://en.wikipedia.org/wiki/Corruption]]'' means ''[[war|http://psychology.tiddlyspot.com/#%5B%5BChemical%20warfare%5D%5D]]! [[uTOHphu|http://psychology.tiddlyspot.com/#%5B%5BCult%20suicide%5D%5D]]''<br>''[[How To Install And Run A Chroot JailKit Shell|http://glassparrot.tiddlyspot.com/#%5B%5BHow%20To%20Install%20And%20Run%20A%20Chroot%20JailKit%20Shell%5D%5D]]. - [[¡Ay, caramba!|https://en.wikipedia.org/wiki/%C2%A1Ay,_caramba!]]''<br>''BLU Studio Selfie - Smartphone - GSM Unlocked'' $79.99 - click<br>[img[http://i.imgur.com/DmnCNhb.jpg][http://goo.gl/xOGu6J]]<br>Get ye back to thy [[Microscope|http://glassparrot.tiddlyspot.com/#Microscope]]. Pronto. Thow hast not seen the end. Halt. - ''[[Blend4Web|https://www.blend4web.com/en/]] - [[Gazebo Robot simulator|http://gazebosim.org/]] - [[FreeCAD|https://www.freecadweb.org/]] -  [[FreeVPN|http://n6xre.tiddlyspot.com/#FreeVPN]]''|''[[Pantheism|https://en.wikipedia.org/wiki/Pantheism]] - [[RARE 1950's Walt Disney PREDICTIVE PROGRAMMING|https://youtu.be/XRpMuk27ddA]] - [[Confucius Say|https://goo.gl/qujjR1]] - [[I Ching|http://almanac.tiddlyspot.com/#%5B%5BI%20Ching%5D%5D]]''<br>''[[จิต สู้ มาร|https://www.viddsee.com/video/spirit-fight-evil/tfyib]]  -  [[Boomers Bible|https://ia800300.us.archive.org/30/items/TheBoomerBible/Boomer_Bible.pdf]]  - A Latin maxim - sic utere tuo ut [[alterum|https://en.wikipedia.org/wiki/Homeostasis]] non laedes - advocates that<br>"no one is to use his property in such a manner as to injure that of another."'' - ''[[Boom Boom Girls|https://youtu.be/1vHgXk7TaGU]]''<br>[[HP Spectre HP Laptop|http://glassparrot.tiddlyspot.com/#%5B%5BHP%20Spectre%20HP%20Laptop%5D%5D]] - [[Programs To Learn Thai|http://artport.tiddlyspot.com/#%5B%5BChanging%20a%20Song%E2%80%99s%20Pitch%20in%20Audacity%5D%5D]] - [[Foreign Exchange Rates|http://psychology.tiddlyspot.com/#%5B%5BForeign%20Exchange%20Rates%5D%5D]] - [[Hangouts|https://plus.google.com/hangouts]] - [[Psilocybin|http://scienceport.tiddlyspot.com/#Psilocybin]]<br>[[The Devil And Miss Jones|http://glassparrot.tiddlyspot.com/#%5B%5BThe%20Devil%20And%20Miss%20Jones%5D%5D]] - [[Is Kamasutra Pornography?|https://youtu.be/czu4M978vUk]] - [[High School DxD|https://goo.gl/8WO9Eh]] - [[Learn Thai Online|http://psychology.tiddlyspot.com/#%5B%5BLearn%20Thai%20Online%5D%5D]] - [[Up|https://youtu.be/o8lFOVxheyE]]<br>''[[Science and Islam|http://thailanguage.tiddlyspot.com/#Moses!]] - [[New Computer Knows The Day You Will Die|https://youtu.be/WW1UI-d4MmY]] - [[The Tootsie Roll Tragedy|http://psychology.tiddlyspot.com/#%5B%5BTootsie%20Roll%20Tragedy%3A%20The%20Real%20Leo%20Hirschfeld%20Story%5D%5D]]''<br>''[[Seven wonders of the Buddhist world BBC Documentary|https://youtu.be/-WDG2DELq00]]'' - ''[[Buddhism|http://moving.tiddlyspot.com/#Buddhism]]'' - ''[[Mosquito repellent|http://scienceport.tiddlyspot.com/#%5B%5BMosquito%20repellent%5D%5D]] - [[Bali|http://moving.tiddlyspot.com/#Bali]]''<br>''[[Always Look On The Bright Side Of Life - HD 1080p - Monty Python Life of Brian|https://youtu.be/SJUhlRoBL8M?list=RDfUspLVStPbk]] - [[AncestryDNA|http://scienceport.tiddlyspot.com/#AncestryDNA]]''<br>''[[Ship Parts|http://psychology.tiddlyspot.com/#%5B%5BShip%20Parts%5D%5D]] - [[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - [[Purgatory|https://en.wikipedia.org/wiki/Purgatory]] - [[Shiva|https://en.wikipedia.org/wiki/Shiva]]'' - ''[[Reincarnation|http://moving.tiddlyspot.com/#Reincarnation]] - [[SIDDHARTHA|http://almanac.tiddlyspot.com/#SIDDHARTHA]]''<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/BzYKAamsQWo?list=RDBzYKAamsQWo" frameborder="0" allowfullscreen></iframe></html><br>''[[Living on a Boat|http://psychology.tiddlyspot.com/#%5B%5BLiving%20on%20a%20Boat%5D%5D]]'' - ''[[Blenderella|http://moving.tiddlyspot.com/#Blenderella]]'' - ''[[High-speed multimedia radio|http://glassparrot.tiddlyspot.com/#%5B%5BHigh-speed%20multimedia%20radio%5D%5D]]'' - ''[[Contact Lens FAQ|http://moving.tiddlyspot.com/#%5B%5BContact%20Lens%20FAQ%5D%5D]]'' - ''[[Moving Plans|http://moving.tiddlyspot.com/#%5B%5BMoving%20Plans%5D%5D]]''<br>''[[King of Thailand - Bhumibol Adulyadej|http://almanac.tiddlyspot.com/#%5B%5BKing%20of%20Thailand%20Rama%20IX%20-%20Bhumibol%20Adulyadej%5D%5D]] dies Oct. 13, 2559 BE - [[The Tibetan Book of the Dead|http://almanac.tiddlyspot.com/#%5B%5BThe%20Tibetan%20Book%20of%20the%20Dead%5D%5D]]''<br>''[[Former President of Cuba Fidel Castro|https://en.wikipedia.org/wiki/Fidel_Castro]] dies November 25, 2016 CE. - [[Last Judgment|https://en.wikipedia.org/wiki/Last_Judgment]] - [[The God|https://youtu.be/93xY06Sh7FE]]''<br>''[[Journal|http://almanac.tiddlyspot.com/#Journals]] - [[Arrived in Phuket, Thailand on 09/05/2016|http://moving.tiddlyspot.com/#%5B%5BArrived%20in%20Phuket%2C%20Thailand%20on%20Sept%2005%2C%202016%5D%5D]] - [[Ripley Believe it or Not|http://moving.tiddlyspot.com/#%5B%5BRipley%20Believe%20it%20or%20Not%5D%5D]] - [[Ship Parts|http://psychology.tiddlyspot.com/#%5B%5BShip%20Parts%5D%5D]] - [[Get I2P|https://geti2p.net/en/]]''<br>''[[Gary Rust on Facebook|https://www.facebook.com/gary.rust.75]] - [[Billy Furman on Facebook|https://www.facebook.com/billy.furman1]] - [[Thailand Rob|https://www.youtube.com/channel/UCd7MMxZLnYVREjGJLXYJvCA/featured]] - [[Sailing La Vagabonde|https://www.youtube.com/playlist?list=PLej_Gvr1c1MM4hEcyzmT06mGoIqoXHcwo]]''|
''[[TIDDLYWIKI INTERNALS PERMAVIEW|http://almanac.tiddlyspot.com/#%5B%5BTIDDLYWIKI%20INTERNALS%5D%5D]] - [[Oppenheimer: "I am become Death, the destroyer of worlds."|https://youtu.be/lb13ynu3Iac]] - [[Nuc Time-Lapse Map|http://almanac.tiddlyspot.com/#Nuclear]]''
''[[6 Secret Cities That Prove We Don't Know What's Really Going On|https://youtu.be/wYyBcOLq8bs]] - [[A Psychologists Amazing Discoveries After Near Death Experience|https://youtu.be/RZtM9lanqI4]]'' 

''https://en.wikipedia.org/ - [[DIY Electric Bike - 3d Printed|http://scienceport.tiddlyspot.com/#%5B%5BDIY%20Electric%20Bike%20-%203d%20Printed%5D%5D]] - [[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - [[MakeSea 3D Printed Electric Motor|https://www.makesea.com/web/cla/~/50612/profile/-/asset_publisher/Rl6cqGtVw4Vb/content/660-watt-3d-printed-halbach-array-brushless-motor?inheritRedirect=false&redirect=https%3A%2F%2Fwww.makesea.com%2Fweb%2Fcla%2F%7E%2F50612%2Fprofile%3Fp_p_id%3D101_INSTANCE_Rl6cqGtVw4Vb%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_col_id%3Dcolumn-1%26p_p_col_count%3D4]] - [[HP Laptop Store|http://store.hp.com/us/en/vwa/Laptops/form=Standard-laptop]] - [[Ship Parts|http://psychology.tiddlyspot.com/#%5B%5BShip%20Parts%5D%5D]]''
<<miniBrowser https://www.blenderguru.com/>>
''[[Can I run Daz Studio on Ubuntu|https://www.daz3d.com/forums/discussion/74732/solved-can-i-run-daz-studio-on-ubuntu]] - [[MakeHuman|http://www.makehuman.org/]] - [[Kinect Mocap Basics|https://sites.google.com/site/mcasualsdazscripts2/kinect-mocap-basics]] - [[mcasual|https://www.youtube.com/user/mcasual/videos]] Youtubes - [[FreeCAD Lessons for Beginners|http://psychology.tiddlyspot.com/#%5B%5BFreeCAD%20Lessons%20for%20Beginners%5D%5D]]''
<<miniBrowser https://www.daz3d.com/daz_studio>>
''[[THE SACRED BOOKS OF THE EAST|https://goo.gl/MsP8Dg]] - [[BIG BUDDHA PHUKET|http://www.phuket101.net/phuket-big-buddha/]] - [[Tantra E-juice|http://moving.tiddlyspot.com/#%5B%5BTantra%20E-juice%5D%5D]] - [[Visa|http://moving.tiddlyspot.com/#Visa]]''
<html><iframe width="560" height="315" src="https://www.youtube.com/embed/0G-C8xqNSe8?list=PLFEGb57YkU-aPxVpSQXufjg-Mhh-XFC8t" frameborder="0" allowfullscreen></iframe></html>
'''[[Dasboard|https://www.wix.com/dashboard/a43f1c88-4aab-471b-988f-1f1affff55cc/home]] - [[WixEditor|https://wix.com/editor/a43f1c88-4aab-471b-988f-1f1affff55cc?editorSessionId=9ecaa826-3dc0-43b8-bab4-35a1e89075ac&referralInfo=dashboard]]'''<br>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title></title>
</head>
<body>
<a href="https://garyrust2013.wixsite.com/n6xre" target="_blank"><img
style="border: 0px solid ; width: 1010px; height: 551px;"
alt="N6XRE WixSite"
src="https://i.imgur.com/rJF973D.png"></a><br>
</body>
</html> <br>
<html><iframe src="https://pastebin.com/embed_iframe/AF9KuwKa" style="border:none;width:100%"></iframe></html>
[img[https://zxing.org/w/chart?cht=qr&chs=350x350&chld=L&choe=UTF-8&chl=BEGIN:VCARD%0AVERSION:3.0%0AN:Gary+Allen+Rust%0AORG:N6XRE%0ATEL:7025812502%0AURL:http://n6xre.duckdns.org:73/mediawiki/%0AEMAIL:garyrust2013@gmail.com%0AADR:3040+E+Charleston+Blvd++%233087+Las+Vegas\,+Nv.+89104%0ANOTE:702-900-8019+on+Google+Voice%0AEND:VCARD]]<br>
''These pagess are also hosted on my duckdns domain - listed below''<br>
<<miniBrowser http://n6xre.duckdns.org:85/Tiddlyspot/>>
[[Archimedes-Lab]]
''[[Twitter Page|https://twitter.com/glassparrot]]''

Here are my webpages and references.

Goto http://fishcode.tiddlyspot.com/
Goto http://h8quadmod.tiddlyspot.com/
Goto http://glassparrot.tiddlyspot.com/
Goto http://blenderorganizer.tiddlyspot.com/
Goto http://psychology.tiddlyspot.com/

Goto http://glassparrot.wordpress.com/video/
Goto http://glassparrot.wikia.com/wiki/Glassparrot_Wiki

Goto https://twitter.com/glassparrot/
Goto https://www.facebook.com/gary.rust.75

Goto https://vega.pythonanywhere.com

Goto [[Ad-hoc_networking/Ad-hoc_networking |https://wiki.archlinux.org/index.php/Ad-hoc_networking]] - here
Goto [[NetworkManage | https://wiki.archlinux.org/index.php/NetworkManager]] - here
Goto http://www.biograf.ch/downloads/VirtualToxLab.pdf

- click for Gary Rust on Facebook -
[img[https://s3.amazonaws.com/lowres.cartoonstock.com/computers-social_media-social_networks-website-profile-follower-wda2309_low.jpg][https://www.facebook.com/gary.rust.75]]

- click for Billy Furman on Facebook -
[img[http://ak-hdl.buzzfed.com/static/2013-10/enhanced/webdr03/30/23/enhanced-buzz-20384-1383191052-17.jpg][https://www.facebook.com/billy.furman1]]

[[Node.js playlist|https://youtu.be/O28Knn00qYo?list=PLfMzBWSH11xYjL8oFumSfzOf6-kr8_t-o]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/O28Knn00qYo?list=PLfMzBWSH11xYjL8oFumSfzOf6-kr8_t-o" frameborder="0" allowfullscreen></iframe>
</html>
[[Permalink|http://scienceport.tiddlyspot.com/#%5B%5BOcean%20Energy%20-%20Wave%20Power%20Station%5D%5D]]
''[[High-voltage direct current|https://en.wikipedia.org/wiki/High-voltage_direct_current]] - [[Uniti EV|https://www.uniti.earth/invest/]] - [[Host your wiki with Miraheze|https://meta.miraheze.org/wiki/Help_center]]''
''[[Enel Green Power’s Marine Machine, power from the sea|https://youtu.be/OgDl1PjFheY]] - [[Fusion Energy - Prof. Steven Cowley|https://youtu.be/SMxOvuSMAug]]''
''also see [[HOW THE BIGGEST OIL RIGS ARE MADE|https://youtu.be/iy1sxHyDhbk]] - [[Algae CO2 Capture|https://youtu.be/QI3Al1dpuUY]] - [[Algae Power|https://youtu.be/waPgGQNppHY]] Youtubes''
''[[Algae Biofuels and Biotech - Stephen Mayfield|https://youtu.be/jPfYjOMNGX0]] - [[Salt evaporation ponds|https://en.wikipedia.org/wiki/Salt_evaporation_pond]] and algae for biofuels.''
[[Ocean Energy - Wave Power Station|https://youtu.be/gcStpg3i5V8]] - [[2|https://youtu.be/fYfs-qYGzvs]] - [[The Boring Company|https://www.youtube.com/channel/UCUU0JfukhilijYKenOyKqdg]] - [[Lithium Extraction Process|https://youtu.be/w3CrFR1Jk1w]] - [[Starlink|https://arstechnica.com/information-technology/2016/11/spacex-plans-worldwide-satellite-internet-with-low-latency-gigabit-speed/]] - [[2|https://youtu.be/AllaFzIPaG4]]
<html><iframe width="560" height="315" src="https://www.youtube.com/embed/gcStpg3i5V8" frameborder="0" allowfullscreen></iframe></html>
[[Now You Know - In Depth - Zac & Jesse's Solution to Pollution|https://youtu.be/4ikX-Cg-TMI]] - [[Energy From Floating Algae Pods|https://youtu.be/HwKyW7e9NPw]]
[[NOVA ScienceNOW - Public Genomes, Algae Fuel - Discovery Science Space|https://youtu.be/jZO9Auxxh74]] - [[Farming the Sea|https://youtu.be/EAN-VRvD8_k]] - [[2|https://youtu.be/E-PycaZ6-PQ]] - [[3|https://youtu.be/iXqK7CeypJk]]
''Human kindness has never weakened the stamina or softened the fiber of a free people. A nation
does not have to be cruel to be tough. [[It's not that we can't do it, it's that we must do it|https://en.wikipedia.org/wiki/Attack_on_Pearl_Harbor]].'' 
1> [[Franklin D. Roosevelt|https://www.brainyquote.com/quotes/quotes/f/franklind138856.html]] - ''[[100 Gigafactories|https://youtu.be/ib1KKHGYmLQ]] - [[2|http://www.smh.com.au/world/lithium-bolivia-20170523-gwb8me.html]] - [[3|https://www.google.com/search?ei=JbsAWtSQKJq4jAPOs4ewDw&q=how+far+is+bolivia+from+puerto+rico&oq=how+far+is+bolivia+from+peurto&gs_l=psy-ab.1.1.33i21k1j33i160k1l2.46564.70106.0.76091.22.22.0.0.0.0.373.2620.7j14j0j1.22.0....0...1..64.psy-ab..0.15.1871...0j0i8i7i30k1j0i8i30k1j0i22i30k1j0i22i10i30k1j0i13k1.0.n7wOdRp918Y]] - [[4|https://www.google.com/search?ei=tcYAWviDGtu4jAOqpCk&q=does+the+amazon+river+run+through+bolivia&oq=does+the+amazon+river+bolivia+&gs_l=psy-ab.1.0.0i7i30k1l3.13975.37956.0.45461.26.24.2.0.0.0.534.3250.6j15j4-1j1.23.0....0...1.1.64.psy-ab..1.25.3248...0j0i22i30k1j35i39k1j0i7i10i30k1j0i7i5i30k1j0i8i7i30k1j0i8i7i10i30k1j0i8i30k1.0.GhyJ9jOC65o]].  [[Roll out the barrel|https://youtu.be/7KRc-ceWE2E]]. [[We'll have a barrel of fun|https://www.iridium.com/network/iridiumnext]].''
''I am neither bitter nor cynical but I do wish there was less immaturity in political thinking.'' 
2> [[Franklin D. Roosevelt|https://www.brainyquote.com/quotes/quotes/f/franklind396993.html]]
''Thanksgiving 2017 in United States of America - Thursday, November 23''
''Paleface - [[BAKED HAM|https://www.epicurious.com/recipes/food/views/baked-ham-360789]] served with wine.''
''Redskin - [[Juicy Roast Turkey Recipe|https://natashaskitchen.com/2014/11/06/juicy-roast-turkey-recipe/]] served with vodka.'' 
''Wetback - [[Menudo Sabroso|https://www.heb.com/recipe/recipe-item/menudo-sabroso/1392679750215]] served with mescal.''
''Cocoabrain - [[Soul Food Pork Chitlins & Hog Maws Recipe|https://youtu.be/23KvV52_DAA]] served with beer.'' Youtube
OpenCV GSOC 2015 - http://sourceforge.net/projects/opencvlibrary/
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/OUbUFn71S4s" frameborder="0" allowfullscreen></iframe>
</html>

http://opencv.org/
<html>
<iframe width="1000" height="1000" src="http://opencv.org/" frameborder="0" allowfullscreen></iframe>
</html>
[[PINE A64|https://goo.gl/CVeiRG]] is the world's first 64-bit expandable Quad Core 1.2Ghz supercomputer, tablet, media center, and more... starting at just $15.

- click 
[img[http://i.imgur.com/LZxF8Pn.png][https://goo.gl/CVeiRG]]
- click 
[img[https://leesbirdblog.files.wordpress.com/2011/05/73-budgerigar-melopsittacus-undulatus-by-lee-lpz11c.jpg][https://leesbirdblog.files.wordpress.com/2011/05/73-budgerigar-melopsittacus-undulatus-by-lee-lpz11c.jpg]]
https://leesbirdblog.files.wordpress.com/2011/05/73-budgerigar-melopsittacus-undulatus-by-lee-lpz11c.jpg
73-budgerigar-melopsittacus-undulatus-by-lee-lpz11c.jpg 
[[ImagePathPlugin]] doesn't work.  Why? What am I doing wrong? -  ([[ImagePathList]]) - See http://goo.gl/6eP4jW configuration
Should I use <nowiki>AttachFilePlugin</nowiki> instead? Probably. It has some advantages.
[[AttachFilePlugin]]
[[AttachFilePluginInfo]]
[[AttachFilePluginFormatters]]
[[AttachFileSample]]
[[AttachFileSample2]]

/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
# [[Eachine H8 Mini RC Quadcopter|http://h8quadmod.tiddlyspot.com/#%5B%5BEachine%20H8%20Mini%20RC%20Quadcopter%5D%5D]]
# [[Faraday Future car 2016|http://glassparrot.tiddlyspot.com/#%5B%5BFaraday%20Future%20car%202016%5D%5D]]
# [[Migrate Windows7 Hard Drive Partitions To An Oracle VirtualBox VDI File|http://goo.gl/Euk8mv]]
# [[Learn Thai Online|http://psychology.tiddlyspot.com/#%5B%5BLearn%20Thai%20Online%5D%5D]]
# [[RPi Hub|http://glassparrot.tiddlyspot.com/#%5B%5BRPi%20Hub%5D%5D]] - [[Backup - Restore Raspberry Pi|http://glassparrot.tiddlyspot.com/#%5B%5BBackup%20-%20Restore%20Raspberry%20Pi%5D%5D]]
# [[BitTorrent Sync Links|http://h8quadmod.tiddlyspot.com/#%5B%5BBitTorrent%20Sync%20Links%5D%5D]]
# [[BitTorrentSync Directories|http://glassparrot.tiddlyspot.com/#%5B%5BBitTorrentSync%20Directories%5D%5D]]
# [[Internet Radio|http://h8quadmod.tiddlyspot.com/#%5B%5BInternet%20Radio%5D%5D]] - [[MiniBrowser|http://h8quadmod.tiddlyspot.com/#MiniBrowser]]
# [[Making outgoing IRC DCC work with NAT|http://glassparrot.tiddlyspot.com/#%5B%5BMaking%20outgoing%20IRC%20DCC%20work%20with%20NAT%5D%5D]] - [[RPi Hub|http://glassparrot.tiddlyspot.com/#%5B%5BRPi%20Hub%5D%5D]] - [[Django|http://glassparrot.tiddlyspot.com/#Django]]
# [[Eco Dome, Building a Small Home|http://h8quadmod.tiddlyspot.com/#%5B%5BEco%20Dome%2C%20Building%20a%20Small%20Home%5D%5D]]
# [[Highlights of Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]]
# [[Jabber XAMPP]] - [[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BJabber%20XAMPP%5D%5D]]
# ''[[How to Setup an LCD Touchscreen on the Raspberry Pi|http://glassparrot.tiddlyspot.com/#%5B%5BHow%20to%20Setup%20an%20LCD%20Touchscreen%20on%20the%20Raspberry%20Pi%5D%5D]]''
# [[h8quadmod Download Link|http://h8quadmod.tiddlyspot.com/download]] to attach in mail, irc, or messenger
# [[Internet Crime Schemes|http://goo.gl/Stm6zF]] - [[How To Install And Run A Chroot JailKit Shell|http://glassparrot.tiddlyspot.com/#%5B%5BHow%20To%20Install%20And%20Run%20A%20Chroot%20JailKit%20Shell%5D%5D]]
''[[Eachine H8 MiniQuad - US $13.99|http://goo.gl/RYm5fo]]'' - [[Kaideng K70C|Kaideng K70C Sky Warrior Drone]] (camera platform - [[Banggood|http://www.banggood.com/Kai-Deng-K70C-With-2MP-Wide-Angle-HD-Camera-Gimbal-3D-Rolling-RC-Quadcopter-RTF-p-1033123.html]] - US $85.99) - [[Flying 3D X6]] - (GPS and Telemetry - US$185.99)
''[[Trigonometric functions|https://en.wikipedia.org/wiki/Trigonometric_functions]]'' - [[List of mathematical symbols|https://en.wikipedia.org/wiki/List_of_mathematical_symbols]] - Wikipedia - ''[[Google docs Spreadsheets|https://docs.google.com/spreadsheets/u/0/]]'' - [[Triangulation|https://en.wikipedia.org/wiki/Triangulation]] - [[Trilateration|https://en.wikipedia.org/wiki/Trilateration]] - Radio Sync [[Time|https://en.wikipedia.org/wiki/Time]]
[[Digital Counter Design|https://goo.gl/ey6BfM]] - Ultra Light Weight [[FPV|https://en.wikipedia.org/wiki/First-person_view_(radio_control)]] Radio/Optical [[Telemetry|https://en.wikipedia.org/wiki/Telemetry]] ground tracking  [[Transponder|https://en.wikipedia.org/wiki/Transponder]]. ([[Phase-locked loop|https://en.wikipedia.org/wiki/Phase-locked_loop]]) - ''[[Radio direction finder|https://en.wikipedia.org/wiki/Radio_direction_finder]]'' 
[[Circuit Tutorials]] - [[Microcontroller Tutorial-Patrick Hood-Daniel]] - ''[[Chris Hawkes channel|https://www.youtube.com/user/noobtoprofessional/playlists]]'' - [[How to do Camera Tracking in Blender]]
[[mathbff]] - [[Highlights of Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]] - See [[FPV Goggles]]

[[MiniBrowserList]]
<<miniBrowser http://hforsten.com/homemade-synthetic-aperture-radar.html>>
<<miniBrowser https://en.wikipedia.org/wiki/Navigation>>
<<miniBrowser http://www.virhistory.com/navy/manuals/10478a/10478a-08.pdf>>
[[Raspberry Pi & Python OpenGL Fun with Tony D! @adafruit #LIVE|https://youtu.be/lQYlIn1BEfk]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/lQYlIn1BEfk" frameborder="0" allowfullscreen></iframe>
</html>
[[Raspberry Pi's Impact on Hacking|https://youtu.be/P2q0z8jVH5w]]
 (for educational purposes, only). - [[Raspberry Pi's Impact on Hacking]]

<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/P2q0z8jVH5w" frameborder="0" allowfullscreen></iframe>
</html>
Streamed live on Nov 6, 2012
More Hangouts: http://www.concise-courses.com/past/

UPDATE: We've compiled a list of 85 uses for the Raspberry Pi. Please let us know what we're missing: http://www.concise-courses.com/securi...

+DJ Palombo gives us some ingenious [and scary] uses for Raspberry Pi. After you watch the video, you'll have a great overview of the endless 
uses "Raspberry Pi" has for the IT Security community. You can also view a full transcript here: http://bit.ly/R7l94g

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
''[[Kali Linux VMware and VirtualBox Image Downloads|https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/]] - [[Official Kali Linux Docker Images|https://www.kali.org/news/official-kali-linux-docker-images/]] - [[Kali Linux Downloads|https://www.kali.org/downloads/]]''
https://en.wikipedia.org/wiki/Docker_(software) - https://learn.adafruit.com/kali-linux-on-the-raspberry-pi-with-the-pitft
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[[Using Raspberry Pi w/ Kali to Test the Security of a Router|https://youtu.be/HUCE3xbjD_w]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/HUCE3xbjD_w" frameborder="0" allowfullscreen></iframe>
</html>

[[How To Create An Evil Twin Access Point (with WPA/ WPA2 Capture)|https://youtu.be/LwEjYL6Eoro]]
<html>
<iframe width="420" height="315" src="https://www.youtube.com/embed/LwEjYL6Eoro" frameborder="0" allowfullscreen></iframe>
</html>
''[[Universal Licensing System|http://n6xre.tiddlyspot.com/#%5B%5BUniversal%20Licensing%20System%5D%5D]] - [[A Protocol for Offline Bitcoin Over Radio Transactions|http://n6xre.tiddlyspot.com/#%5B%5BA%20Protocol%20for%20Offline%20Bitcoin%20Over%20Radio%20Transactions%5D%5D]] - [[HP Laptop Store|http://store.hp.com/us/en/vwa/Laptops/form=Standard-laptop]]''
See ''[[Anet A8 3D Printer Kit|http://scienceport.tiddlyspot.com/#%5B%5BAnet%20A8%20Desktop%203D%20Printer%20Prusa%20i3%20DIY%20Kit%5D%5D]] - [[DIY Electric Bike - 3d Printed|http://scienceport.tiddlyspot.com/#%5B%5BDIY%20Electric%20Bike%20-%203d%20Printed%5D%5D]] - [[Lilium VTOL ElectroJet|https://lilium.com/]] - [[Tesla, Inc.|https://www.tesla.com/]] - [[BCI|https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface]] - [[Railgun|https://en.wikipedia.org/wiki/Railgun]] - [[Ship Parts|http://psychology.tiddlyspot.com/#%5B%5BShip%20Parts%5D%5D]]''
''[[The Mouse That Roared|https://thepiratebay.org/torrent/4072072/The_Mouse_That_Roared_(1959)_(Peter_Sellers__Jean_Seberg)]] - [[Prophecy 80 Pound Pistol Crossbow|https://www.amazon.com/dp/B00SI8TZCK/_encoding=UTF8?coliid=I3VMAYCT3G1GQG&colid=27Y18XJ9539G3]] - [[3D Printed Theo Jansen Crossbow Tank|http://blenderorganizer.tiddlyspot.com/#%5B%5B3D%20Printed%20Theo%20Jansen%20Crossbow%20Tank%5D%5D]]''
[[Internet Radio|https://www.internet-radio.com]] - [[PhuketLiveRadio|http://www.thephuketnews.com/radio/listen.php#5KdBJpbAL5yeyc3v.97]] - https://time.is/Phuket - [[Ambient Art Foundation on RadioForest|http://www.radioforest.net/radio/ambient-art-foundation/700272]] - ''[[Thingiverse|https://www.thingiverse.com/]]''
[[Ambient Art Foundation]] - [[Psychillosis.pls|https://yp.shoutcast.com/sbin/tunein-station.pls?id=543496]] (for an external player) - http://websdr.suws.org.uk/ @ 196.00 kHz AM
<<miniBrowser https://www.shoutcast.com/Search?query=Sleep%20Radio%20Stream#>>
''[[Democratizing Bio-Sensing Tools With OpenBCI|https://youtu.be/c7v5urh06kM]] - [[UCMJ|http://n6xre.tiddlyspot.com/#%5B%5BThe%20flight%20that%20rocked%20the%20Soviet%20Union%5D%5D]] - [[THE BORG|https://en.wikipedia.org/wiki/Borg_(Star_Trek)]] - [[Rendering Photorealistic CGI|http://blenderorganizer.tiddlyspot.com/#%5B%5BThe%20Science%20of%20Rendering%20Photorealistic%20CGI%5D%5D]]''<br><html><iframe width="560" height="315" src="https://www.youtube.com/embed/c7v5urh06kM" frameborder="0" allowfullscreen></iframe></html>
''[[A Helicopter pad on an airplane.|http://h8quadmod.tiddlyspot.com/#%5B%5BA%20Helicopter%20pad%20on%20an%20airplane%5D%5D]] The helicopter controls a submarine. The submarine is a drone sub''
''with no personnel. The submarine has a helicopter pad for inspection and repair. After a mission''
''the helicopter would be able to land back on the airplane pad. Also, remote control the helicopter.''
''[[Solar powered submarine|https://www.google.com/search?client=ubuntu&channel=fs&q=Borg&ie=utf-8&oe=utf-8#channel=fs&q=solar+powered+submarine]] - [[Submarine Robots Powered by Renewable Energy|https://youtu.be/Iu7_UkhFyn0]] - [[Circumnavigation|https://en.wikipedia.org/wiki/Circumnavigation]]''
''[[Fusion power|https://en.wikipedia.org/wiki/Fusion_power]] - [[Tesla, Inc.|https://www.tesla.com/]] should also make [[eBikes|https://www.amazon.com/gp/product/B002AQHM3U/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1]] and [[Lilium VTOL ElectroJet|https://lilium.com/]]s - [[SpaceX|https://en.wikipedia.org/wiki/SpaceX]]''
''[[Koenigsegg|https://youtu.be/H2mTriy9oQM]] [[Flexible-fuel|https://en.wikipedia.org/wiki/Flexible-fuel_vehicle]] (Propane?) [[Turbo-Electric|https://en.wikipedia.org/wiki/Gas_turbine_locomotive]] Charging Station Trailer for Tesla Products.''
Updated on <<date filedate "DDD, 0hh:0mm:0ss - MMM DDth, YYYY">> - ''My Home = [[N6XRE|http://n6xre.tiddlyspot.com/]] - [[N6XRE WixSite|https://garyrust2013.wixsite.com/n6xre]] - Member of [[GlobalTuners|http://www.globaltuners.com]], [[WebSDR|http://www.websdr.org/]] and [[EchoLink|http://www.echolink.org/]] - [[Boats Map|http://psychology.tiddlyspot.com/#%5B%5BMarine%20Traffic%20Map%5D%5D]]''
''[[I2P|https://en.wikipedia.org/wiki/I2P]]'' - ''[[artport|http://artport.tiddlyspot.com/]] - [[scienceport|http://scienceport.tiddlyspot.com/]] - [[mediaport|http://mediaport.tiddlyspot.com/]] - [[fishcode|http://fishcode.tiddlyspot.com/]] - [[h8quadmod|http://h8quadmod.tiddlyspot.com/]] - [[glassparrot|http://glassparrot.tiddlyspot.com/]] - [[blenderorganizer|http://blenderorganizer.tiddlyspot.com/]] - [[psychology|http://psychology.tiddlyspot.com/]] - [[moving|http://moving.tiddlyspot.com/]] - [[almanac|http://almanac.tiddlyspot.com/]] - [[thailanguage|http://thailanguage.tiddlyspot.com/]] - [[inventoryport|http://inventoryport.tiddlyspot.com/]] - [[Satellites|http://www.n2yo.com/whats-up/whats-up-now.php]]''
''h8quadmod''
[[Soundlink Audio JavaScript|http://www.javascriptkit.com/script/script2/soundlink.shtml]]
<html>
<iframe width="1000" height="1000" src="http://www.javascriptkit.com/script/script2/soundlink.shtml" frameborder="0" allowfullscreen></iframe>
</html>
!Upload an icon
<<tiddler spaceIcon>>
!Describe your space
If you haven't already done so, you should provide a brief decscription of yourself and what you're using this space for. To do this, just edit the [[SiteInfo]] tiddler (keeping the title the same of course).

!Change the title
<<tiddler spaceTitle>>
!Change the theme
<<tiddler colorScheme>>
!Change the menu
If you'd like to change the menu items along the top, you can edit the [[MainMenu]] tiddler.

!Change the default tiddlers
<<tiddler setDefaultTiddlers>>
!More Advanced customisations
If you know HTML and CSS, you can edit some or all of the following tiddlers to customise your space further:
* PageTemplate
* EditTemplate
* ViewTemplate
* StyleSheet
[[Vijay Kumar: Robots that fly ... and cooperate|https://goo.gl/3MCAAn]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/4ErEBkj_3PY" frameborder="0" allowfullscreen></iframe>
</html>
See [[KK2.1.5 MULTI-ROTOR LCD FLIGHT CONTROL BOARD]]

[[Building the Lisa/S Nano Quadcopter|https://goo.gl/7J1jqt]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/7lLxFDNiywM" frameborder="0" allowfullscreen></iframe>
</html>

[[ARDrone Autonomous Flight|https://goo.gl/0NDZSX]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/XZim32_bfpw" frameborder="0" allowfullscreen></iframe>
</html>

[[Lisa/S/Tutorial/Nano Quadcopter|http://goo.gl/V2MkPN]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/V2MkPN" frameborder="0" allowfullscreen></iframe>
</html>

[[The Paparazzi Project|http://goo.gl/5kxOlP]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/5kxOlP" frameborder="0" allowfullscreen></iframe>
</html>

[[Paparazzi UAV collection|https://goo.gl/0xbLtl]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/gITViNUCvy0?list=PLekU8nVT6qLm3oOudER7WVuj2plH_aU4u" frameborder="0" allowfullscreen></iframe>
</html>

[[Lisa/S Nano Quadcopter Kit|http://goo.gl/MXYtmF]]
<html>
<iframe width="1000" height="1000" src="http://goo.gl/MXYtmF" frameborder="0" allowfullscreen></iframe>
</html>
[[TiddlyWiki Tutorial|https://youtu.be/ZMGpAW0z_Bo?list=PLzZCajspPU_UjFn0uy-J9URz0LP4zhxRK]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ZMGpAW0z_Bo?list=PLzZCajspPU_UjFn0uy-J9URz0LP4zhxRK" frameborder="0" allowfullscreen></iframe>
</html>
[[Permaview|http://h8quadmod.tiddlyspot.com/#%5B%5BTop%2010%20Smart%20%23Drone%3A%20New%20Future%20%23Technology%20%23UAV%20Existed%20in%202016!%5D%5D]]
[[Top 10 Smart #Drone: New Future #Technology #UAV Existed in 2016!|https://youtu.be/BYgXFDE8APE]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/BYgXFDE8APE" frameborder="0" allowfullscreen></iframe>
</html>
CoDrone: http://kck.st/1RTx9un
Razer Eidolon: http://bit.ly/1md65YK
PlexiDrone: http://bit.ly/1PutpZA
ONAGOfly: http://bit.ly/1Y10LE2
Micro Drone 3.0: http://bit.ly/1G3yHxk
WALLET DRONE: http://bit.ly/1KX5m4s
Bionic Bird: http://bit.ly/1PROoFI
ELF: http://bit.ly/1JY0dOI
NANO DRONE for Beginners: http://bit.ly/1VLEt9b
Ghost Drone: http://bit.ly/1UJUlJd
PhoneDrone Ethos: http://bit.ly/1md3dLn
Fotokite Phi: http://bit.ly/1hB5rC2
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'h8quadmod';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n")

});
//}}}
[[Turnigy 2826|https://youtu.be/Saj_0H6XkFs]]
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Saj_0H6XkFs" frameborder="0" allowfullscreen></iframe>
</html>
See [[Eachine H8 Mini RC Quadcopter]]
[[Ultimate GPS|https://goo.gl/EqmFt5]]
<html>
<iframe width="1000" height="1000" src="https://goo.gl/EqmFt5" frameborder="0" allowfullscreen></iframe>
</html>
''[[Permaview|http://n6xre.tiddlyspot.com/#%5B%5BUniversal%20Licensing%20System%5D%5D]] - [[Groundhog Day|http://n6xre.tiddlyspot.com/#%5B%5BGroundhog%20Day%5D%5D]]''
''In house mediawiki is at''
''http://n6xre.ttl60.com:73/mediawiki/index.php/Main_Page''
''[[Celestial Navigation|https://youtu.be/fn9xMkNUMmY]] - [[Celestial Navigation at Sea|https://youtu.be/kZCwgoUxXWs]] - [[How does precision GPS work?|https://youtu.be/BGkohw9xGyk]]''
''[[Centimeter Positioning with a Smartphone-Quality GNSS Antenna|https://youtu.be/rCOvklUB5vQ]] - [[Centimeter-Accurate Mobile Positioning|https://youtu.be/_7x_Rpe_bzw]]''
''[[N6XRE - RUST, GARY A|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]] - [[BaoFeng UV-5R Dual Band HandiTalkie|http://www.amazon.com/BaoFeng-UV-5R-Dual-Radio-Black/dp/B007H4VT7A/ref=sr_1_4?s=electronics&ie=UTF8&qid=1462976213&sr=1-4&keywords=baofeng+uv-5r]] - [[Baofeng UV-5R repeater|http://glassparrot.tiddlyspot.com/#%5B%5BBaofeng%20UV-5R%20repeater%5D%5D]]''
''[[Ham It Up Upconverter for SDR|http://www.amazon.com/dp/B009LQT3G6/ref=wl_it_dp_o_pd_nS_ttl?_encoding=UTF8&colid=27Y18XJ9539G3&coliid=I32X1JBZPDTZBE]] - [[TYT TYT-TH-9800 50W/40W Two Way Radio|http://www.amazon.com/dp/B00I53VUEY/ref=wl_it_dp_o_pd_nS_ttl?_encoding=UTF8&colid=27Y18XJ9539G3&coliid=I3TAJ0ZMMR6DXZ&psc=1]] - [[Pookyfish|http://glassparrot.tiddlyspot.com/#Pookyfish]] Free Internet''
''[[Broadcastify|http://www.broadcastify.com/listen/ctid/219]] - [[MorseCode|http://fishcode.tiddlyspot.com/#MorseCode]] - [[WebSDR|http://www.websdr.org/]] - [[eHamNet|http://www.eham.net/]] - [[AMPRNET|http://wiki.ampr.org/wiki/Main_Page]] - [[Winlink|http://glassparrot.tiddlyspot.com/#%5B%5BWinlink%20Digital%20Ameteur%20Radio%5D%5D]] - [[Packet Radio|http://www.tapr.org/pr_links.html]] - [[HackRF|http://glassparrot.tiddlyspot.com/#HackRF]] - [[RPi Hub|http://glassparrot.tiddlyspot.com/#%5B%5BRPi%20Hub%5D%5D]]''

''[[Apartments|http://moving.tiddlyspot.com/#Apartments]] - [[HP Laptop Store|http://store.hp.com/us/en/vwa/Laptops/form=Standard-laptop]] - [[Universal Licensing System - N6XRE|http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830]] - [[Weather Underground Las Vegas|https://www.wunderground.com/us/nv/las-vegas]]''
''[[Dionysian Mysteries|https://en.wikipedia.org/wiki/Dionysian_Mysteries]] - [[How to make Root Beer Easy|http://inventoryport.tiddlyspot.com/#%5B%5BHow%20to%20make%20Root%20Beer%20Easy%5D%5D]] - [[3D LabPrint|http://thailanguage.tiddlyspot.com/#%5B%5B3D%20LabPrint%5D%5D]] - [[Baofeng Radio TNC Packet Radio cable|http://n6xre.tiddlyspot.com/#%5B%5BBaofeng%20Radio%20TNC%20Packet%20Radio%20cable%5D%5D]]''
''[[Aimee Nolte Music|http://mediaport.tiddlyspot.com/#%5B%5BAimee%20Nolte%20Music%5D%5D]] - [[Math Channels|http://scienceport.tiddlyspot.com/#%5B%5BMath%20Channels%5D%5D]] - [[Recipes|http://inventoryport.tiddlyspot.com/#Recipes]] - [[Wish List|http://n6xre.tiddlyspot.com/#%5B%5BWish%20List%5D%5D]] - [[If Gparted won't run use FixParts|http://n6xre.tiddlyspot.com/#%5B%5BIf%20Gparted%20won't%20run%20use%20FixParts%5D%5D]]''

<<miniBrowser http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=722830>>
''[[Mui Bueno Recipes - Horchata/|http://muybuenocookbook.com/2011/07/horchata/]]''
''[[Slinky loop aerial|https://www.nonstopsystems.com/radio/pdf-ant/article-antenna-slinky-RDCM-11-2010.pdf]] - [[Food Recipes|http://inventoryport.tiddlyspot.com/#Recipes]]''
''https://www.freecycle.org/''
<<miniBrowser http://www.otvinta.com/download12.html>>
'' Wikipedia [[David Carradine|https://en.wikipedia.org/wiki/David_Carradine]] - [[Ralph L. Boyce|https://en.wikipedia.org/wiki/Ralph_L._Boyce]] - [[Thaksin Shinawatra|https://en.wikipedia.org/wiki/Thaksin_Shinawatra]] trade in the [[Cayman Islands|https://en.wikipedia.org/wiki/Cayman_Islands]]''
''Thaksin Shinawatra traded 100 Billion Baht for 2942042000 US Dollars after the [[Military Coup|https://en.wikipedia.org/wiki/Category:Military_coups_in_Thailand]] 
at the time of David Carradine's death in [[Bankok, Thailand, June 3, 2009|https://en.wikipedia.org/wiki/Economy_of_Thailand#2006_to_2011]] (aged 72) reported by 
Ambassador Ralph L. Boyce. The United States never tried to recover the counterfeited money.''
''[[Tokyo Rose - JOAK|https://en.wikipedia.org/wiki/Tokyo_Rose]] - [[The Mouse That Roared|https://thepiratebay.org/torrent/4072072/The_Mouse_That_Roared_(1959)_(Peter_Sellers__Jean_Seberg)]] - [[VA gov|https://www.myhealth.va.gov/]] - [[A Helicopter pad on an airplane|http://h8quadmod.tiddlyspot.com/#%5B%5BA%20Helicopter%20pad%20on%20an%20airplane%5D%5D]] - [[uTOHphu|http://psychology.tiddlyspot.com/#%5B%5BCult%20suicide%5D%5D]]''
''[[Zardoz (1974) 720p BrRip x264 - VPPV|http://thailanguage.tiddlyspot.com/#%5B%5BZardoz%20(1974)%20720p%20BrRip%20x264%20-%20VPPV%5D%5D]] -   [[Rrustdon (ficticious)|https://youtu.be/eenZZL_bf6o]] - https://www.tesla.com/model3''
''[[Felix The Cat Japanicky 1920 1929 Funny Cartoon Short|https://youtu.be/jgqeE1ZLL1w]]''
[[Footnotes, Endnotes, and Bibliographies|http://www.semo.edu/pdf/old/CWE_Footnotes_Endnotes_and_Bibliography.pdf]]
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 07/06/2018 03:38:45 | h8quadmod   | [[/|http://h8quadmod.tiddlyspot.com/#DefaultTiddlers%20%5B%5BNetgear%20CM-500%20Cable%20Modem%5D%5D%20%5B%5BUniversal%20Licensing%20System%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 10/06/2018 20:12:04 | h8quadmod | [[/|http://h8quadmod.tiddlyspot.com/#%5B%5BUniversal%20Licensing%20System%5D%5D%20%5B%5BNetgear%20CM-500%20Cable%20Modem%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 11/06/2018 23:32:01 | h8quadmod  | [[/|http://h8quadmod.tiddlyspot.com/#%5B%5BNetgear%20CM-500%20Cable%20Modem%5D%5D%20%5B%5BUniversal%20Licensing%20System%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 13/06/2018 04:23:46 | h8quadmod  | [[/|http://h8quadmod.tiddlyspot.com/#%5B%5BNetgear%20CM-500%20Cable%20Modem%5D%5D%20%5B%5BUniversal%20Licensing%20System%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 06/08/2018 16:49:15 | YourName | [[/|http://h8quadmod.tiddlyspot.com/#DefaultTiddlers%20%5B%5BNetgear%20CM-500%20Cable%20Modem%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 20/10/2018 16:50:20 | h8quadmod | [[/|http://h8quadmod.tiddlyspot.com/#%5B%5BMy%20Mediawiki%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 22/01/2019 00:03:20 | h8quadmod | [[/|http://h8quadmod.tiddlyspot.com/]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 22/01/2019 10:21:37 | h8quadmod | [[/|http://h8quadmod.tiddlyspot.com/]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 07/07/2019 05:25:36 |  h8quadmod | [[/|http://h8quadmod.tiddlyspot.com/#SiteSubtitle]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
| 15/07/2019 10:31:29 | h8quadmod  | [[/|http://h8quadmod.tiddlyspot.com/#%5B%5BMy%20Mediawiki%5D%5D]] | [[store.cgi|http://h8quadmod.tiddlyspot.com/store.cgi]] | . | [[index.html | http://h8quadmod.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
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.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	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);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

[[Xplorair PX200 flying car (vertical take-off)|https://youtu.be/-MKMvsQZUjQ]] Youtube - See ''Coanda effect'' in Bookmarks and read ''Concept'' of this design to understand how this is done (if you think is all talk and no action - ''[[Sacrebleu|https://en.wikipedia.org/wiki/Sacrebleu]] - [[¡Ay, caramba!|https://en.wikipedia.org/wiki/%C2%A1Ay,_caramba!]])''
<<miniBrowser http://www.xplorair.com/concept_xplorair.html>>
Now you tell me. You should have listened to [[Richard Feynman|http://www.feynman.com/]]. Fusion would be better than fission.
''[[mathbff|https://www.youtube.com/user/mathbff/videos]]'' - [[Math Channels]] - [[Highlights of Calculus|http://blenderorganizer.tiddlyspot.com/#%5B%5BHighlights%20of%20Calculus%5D%5D]] - [[Working for Free|http://blenderorganizer.tiddlyspot.com/#%5B%5BWorking%20for%20Free%5D%5D]]?

''[[Trigonometric functions|https://en.wikipedia.org/wiki/Trigonometric_functions]]'' - [[List of mathematical symbols|https://en.wikipedia.org/wiki/List_of_mathematical_symbols]] - Wikipedia - ''[[Google docs Spreadsheets|https://docs.google.com/spreadsheets/u/0/]]''
- click 
[img[https://lh3.googleusercontent.com/afdfkXNuEqs-1jSV3tbKO3X9coVvnY4hhxBdoCo-Lcd0hoIl3q8iuUx9VAb6gx7_c_JV8jfltT5nz9RWRJS_MQQEj3MIrrgLMIxcq3vnv2RVc5Cf0L_KHuxG9m0Bt0QJrCTs_jt9hQPe8uMOVtX0J6632Qe8qIoKaBZZvr9qRk4KCsJfy5avHo_K_vk3O1ClU28z_LxC5T8Z1_2Gw2T1HH_fAnmUReUrDG-73fsZOrvrNdnjKydrX6kzrgTCM3t9Lyx5l-U_PJLXItwMnAqiYRwEgu8BG8PZbek_IDUPexz267aveHKjrdQjqJVsGg-sFmPwM6H2sAIDC676MvLxutWqFNJQBru5G_jFPkRvnkvoXxn3u2Y3UgdfsB_U_8424Qe9WPnu5fLeJO7XK-Yq1Oxfv5XO5MG2ibiy0lwlmcvCW557qM4aHmK9o64YWyEAice4muBqT1PAV15sJHu3sr3QPMtcsS93fPXHDIPTepjyEMuaYIGIstadwT3SqsnljQ1cpEZ9R77T6NdZupKygmkT2g9VoFSWTRWV9O90WHrVXbLB0P2ebFoml58uYfTDVP-4=w1255-h796-no][https://www.youtube.com/user/mathbff/videos]]