<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[202668] trunk/Websites/webkit.org</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/202668">202668</a></dd>
<dt>Author</dt> <dd>dino@apple.com</dd>
<dt>Date</dt> <dd>2016-06-29 21:39:55 -0700 (Wed, 29 Jun 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add the UI JavaScript library to make
other browsers happy.

* demos/spring/dat.gui.min.js: Added.
* demos/spring/index.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebsiteswebkitorgChangeLog">trunk/Websites/webkit.org/ChangeLog</a></li>
<li><a href="#trunkWebsiteswebkitorgdemosspringindexhtml">trunk/Websites/webkit.org/demos/spring/index.html</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkWebsiteswebkitorgdemosspringdatguiminjs">trunk/Websites/webkit.org/demos/spring/dat.gui.min.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebsiteswebkitorgChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/ChangeLog (202667 => 202668)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/ChangeLog        2016-06-30 04:24:52 UTC (rev 202667)
+++ trunk/Websites/webkit.org/ChangeLog        2016-06-30 04:39:55 UTC (rev 202668)
</span><span class="lines">@@ -1,5 +1,13 @@
</span><span class="cx"> 2016-06-29  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Add the UI JavaScript library to make
+        other browsers happy.
+
+        * demos/spring/dat.gui.min.js: Added.
+        * demos/spring/index.html:
+
+2016-06-29  Dean Jackson  &lt;dino@apple.com&gt;
+
</ins><span class="cx">         Demo and JS implementation of our spring() animation
</span><span class="cx">         timing function.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebsiteswebkitorgdemosspringdatguiminjs"></a>
<div class="addfile"><h4>Added: trunk/Websites/webkit.org/demos/spring/dat.gui.min.js (0 => 202668)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/demos/spring/dat.gui.min.js                                (rev 0)
+++ trunk/Websites/webkit.org/demos/spring/dat.gui.min.js        2016-06-30 04:39:55 UTC (rev 202668)
</span><span class="lines">@@ -0,0 +1,95 @@
</span><ins>+/**
+ * dat-gui JavaScript Controller Library
+ * http://code.google.com/p/dat-gui
+ *
+ * Copyright 2011 Data Arts Team, Google Creative Lab
+ *
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+var dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(f,a){a=a||document;var d=a.createElement(&quot;link&quot;);d.type=&quot;text/css&quot;;d.rel=&quot;stylesheet&quot;;d.href=f;a.getElementsByTagName(&quot;head&quot;)[0].appendChild(d)},inject:function(f,a){a=a||document;var d=document.createElement(&quot;style&quot;);d.type=&quot;text/css&quot;;d.innerHTML=f;a.getElementsByTagName(&quot;head&quot;)[0].appendChild(d)}}}();
+dat.utils.common=function(){var f=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(a[c])||(d[c]=a[c])},this);return d},defaults:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(d[c])&amp;&amp;(d[c]=a[c])},this);return d},compose:function(){var d=a.call(arguments);return function(){for(var e=a.call(arguments),c=d.length-1;0&lt;=c;c--)e=[d[c].apply(this,e)];return e[0]}},
+each:function(a,e,c){if(a)if(f&amp;&amp;a.forEach&amp;&amp;a.forEach===f)a.forEach(e,c);else if(a.length===a.length+0)for(var b=0,p=a.length;b&lt;p&amp;&amp;!(b in a&amp;&amp;e.call(c,a[b],b)===this.BREAK);b++);else for(b in a)if(e.call(c,a[b],b)===this.BREAK)break},defer:function(a){setTimeout(a,0)},toArray:function(d){return d.toArray?d.toArray():a.call(d)},isUndefined:function(a){return void 0===a},isNull:function(a){return null===a},isNaN:function(a){return a!==a},isArray:Array.isArray||function(a){return a.constructor===Array},
+isObject:function(a){return a===Object(a)},isNumber:function(a){return a===a+0},isString:function(a){return a===a+&quot;&quot;},isBoolean:function(a){return!1===a||!0===a},isFunction:function(a){return&quot;[object Function]&quot;===Object.prototype.toString.call(a)}}}();
+dat.controllers.Controller=function(f){var a=function(a,e){this.initialValue=a[e];this.domElement=document.createElement(&quot;div&quot;);this.object=a;this.property=e;this.__onFinishChange=this.__onChange=void 0};f.extend(a.prototype,{onChange:function(a){this.__onChange=a;return this},onFinishChange:function(a){this.__onFinishChange=a;return this},setValue:function(a){this.object[this.property]=a;this.__onChange&amp;&amp;this.__onChange.call(this,a);this.updateDisplay();return this},getValue:function(){return this.object[this.property]},
+updateDisplay:function(){return this},isModified:function(){return this.initialValue!==this.getValue()}});return a}(dat.utils.common);
+dat.dom.dom=function(f){function a(b){if(&quot;0&quot;===b||f.isUndefined(b))return 0;b=b.match(e);return f.isNull(b)?0:parseFloat(b[1])}var d={};f.each({HTMLEvents:[&quot;change&quot;],MouseEvents:[&quot;click&quot;,&quot;mousemove&quot;,&quot;mousedown&quot;,&quot;mouseup&quot;,&quot;mouseover&quot;],KeyboardEvents:[&quot;keydown&quot;]},function(b,a){f.each(b,function(b){d[b]=a})});var e=/(\d+(\.\d+)?)px/,c={makeSelectable:function(b,a){void 0!==b&amp;&amp;void 0!==b.style&amp;&amp;(b.onselectstart=a?function(){return!1}:function(){},b.style.MozUserSelect=a?&quot;auto&quot;:&quot;none&quot;,b.style.KhtmlUserSelect=
+a?&quot;auto&quot;:&quot;none&quot;,b.unselectable=a?&quot;on&quot;:&quot;off&quot;)},makeFullscreen:function(b,a,c){f.isUndefined(a)&amp;&amp;(a=!0);f.isUndefined(c)&amp;&amp;(c=!0);b.style.position=&quot;absolute&quot;;a&amp;&amp;(b.style.left=0,b.style.right=0);c&amp;&amp;(b.style.top=0,b.style.bottom=0)},fakeEvent:function(b,a,c,e){c=c||{};var r=d[a];if(!r)throw Error(&quot;Event type &quot;+a+&quot; not supported.&quot;);var n=document.createEvent(r);switch(r){case &quot;MouseEvents&quot;:n.initMouseEvent(a,c.bubbles||!1,c.cancelable||!0,window,c.clickCount||1,0,0,c.x||c.clientX||0,c.y||c.clientY||0,!1,
+!1,!1,!1,0,null);break;case &quot;KeyboardEvents&quot;:r=n.initKeyboardEvent||n.initKeyEvent;f.defaults(c,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0});r(a,c.bubbles||!1,c.cancelable,window,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.keyCode,c.charCode);break;default:n.initEvent(a,c.bubbles||!1,c.cancelable||!0)}f.defaults(n,e);b.dispatchEvent(n)},bind:function(a,e,d,f){a.addEventListener?a.addEventListener(e,d,f||!1):a.attachEvent&amp;&amp;a.attachEvent(&quot;on&quot;+e,d);return c},
+unbind:function(a,e,d,f){a.removeEventListener?a.removeEventListener(e,d,f||!1):a.detachEvent&amp;&amp;a.detachEvent(&quot;on&quot;+e,d);return c},addClass:function(a,e){if(void 0===a.className)a.className=e;else if(a.className!==e){var d=a.className.split(/ +/);-1==d.indexOf(e)&amp;&amp;(d.push(e),a.className=d.join(&quot; &quot;).replace(/^\s+/,&quot;&quot;).replace(/\s+$/,&quot;&quot;))}return c},removeClass:function(a,e){if(e){if(void 0!==a.className)if(a.className===e)a.removeAttribute(&quot;class&quot;);else{var d=a.className.split(/ +/),f=d.indexOf(e);-1!=
+f&amp;&amp;(d.splice(f,1),a.className=d.join(&quot; &quot;))}}else a.className=void 0;return c},hasClass:function(a,c){return(new RegExp(&quot;(?:^|\\s+)&quot;+c+&quot;(?:\\s+|$)&quot;)).test(a.className)||!1},getWidth:function(b){b=getComputedStyle(b);return a(b[&quot;border-left-width&quot;])+a(b[&quot;border-right-width&quot;])+a(b[&quot;padding-left&quot;])+a(b[&quot;padding-right&quot;])+a(b.width)},getHeight:function(b){b=getComputedStyle(b);return a(b[&quot;border-top-width&quot;])+a(b[&quot;border-bottom-width&quot;])+a(b[&quot;padding-top&quot;])+a(b[&quot;padding-bottom&quot;])+a(b.height)},getOffset:function(a){var c=
+{left:0,top:0};if(a.offsetParent){do c.left+=a.offsetLeft,c.top+=a.offsetTop;while(a=a.offsetParent)}return c},isActive:function(a){return a===document.activeElement&amp;&amp;(a.type||a.href)}};return c}(dat.utils.common);
+dat.controllers.OptionController=function(f,a,d){var e=function(c,b,f){e.superclass.call(this,c,b);var q=this;this.__select=document.createElement(&quot;select&quot;);if(d.isArray(f)){var l={};d.each(f,function(a){l[a]=a});f=l}d.each(f,function(a,b){var c=document.createElement(&quot;option&quot;);c.innerHTML=b;c.setAttribute(&quot;value&quot;,a);q.__select.appendChild(c)});this.updateDisplay();a.bind(this.__select,&quot;change&quot;,function(){q.setValue(this.options[this.selectedIndex].value)});this.domElement.appendChild(this.__select)};
+e.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&amp;&amp;this.__onFinishChange.call(this,this.getValue());return a},updateDisplay:function(){this.__select.value=this.getValue();return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);
+dat.controllers.NumberController=function(f,a){function d(a){a=a.toString();return-1&lt;a.indexOf(&quot;.&quot;)?a.length-a.indexOf(&quot;.&quot;)-1:0}var e=function(c,b,f){e.superclass.call(this,c,b);f=f||{};this.__min=f.min;this.__max=f.max;this.__step=f.step;a.isUndefined(this.__step)?this.__impliedStep=0==this.initialValue?1:Math.pow(10,Math.floor(Math.log(Math.abs(this.initialValue))/Math.LN10))/10:this.__impliedStep=this.__step;this.__precision=d(this.__impliedStep)};e.superclass=f;a.extend(e.prototype,f.prototype,
+{setValue:function(a){void 0!==this.__min&amp;&amp;a&lt;this.__min?a=this.__min:void 0!==this.__max&amp;&amp;a&gt;this.__max&amp;&amp;(a=this.__max);void 0!==this.__step&amp;&amp;0!=a%this.__step&amp;&amp;(a=Math.round(a/this.__step)*this.__step);return e.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__impliedStep=this.__step=a;this.__precision=d(a);return this}});return e}(dat.controllers.Controller,dat.utils.common);
+dat.controllers.NumberControllerBox=function(f,a,d){var e=function(c,b,f){function q(){var a=parseFloat(n.__input.value);d.isNaN(a)||n.setValue(a)}function l(a){var b=u-a.clientY;n.setValue(n.getValue()+b*n.__impliedStep);u=a.clientY}function r(){a.unbind(window,&quot;mousemove&quot;,l);a.unbind(window,&quot;mouseup&quot;,r)}this.__truncationSuspended=!1;e.superclass.call(this,c,b,f);var n=this,u;this.__input=document.createElement(&quot;input&quot;);this.__input.setAttribute(&quot;type&quot;,&quot;text&quot;);a.bind(this.__input,&quot;change&quot;,q);a.bind(this.__input,
+&quot;blur&quot;,function(){q();n.__onFinishChange&amp;&amp;n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,&quot;mousedown&quot;,function(b){a.bind(window,&quot;mousemove&quot;,l);a.bind(window,&quot;mouseup&quot;,r);u=b.clientY});a.bind(this.__input,&quot;keydown&quot;,function(a){13===a.keyCode&amp;&amp;(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,f.prototype,{updateDisplay:function(){var a=this.__input,b;if(this.__truncationSuspended)b=
+this.getValue();else{b=this.getValue();var d=Math.pow(10,this.__precision);b=Math.round(b*d)/d}a.value=b;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common);
+dat.controllers.NumberControllerSlider=function(f,a,d,e,c){function b(a,b,c,e,d){return e+(a-b)/(c-b)*(d-e)}var p=function(c,e,d,f,u){function A(c){c.preventDefault();var e=a.getOffset(k.__background),d=a.getWidth(k.__background);k.setValue(b(c.clientX,e.left,e.left+d,k.__min,k.__max));return!1}function g(){a.unbind(window,&quot;mousemove&quot;,A);a.unbind(window,&quot;mouseup&quot;,g);k.__onFinishChange&amp;&amp;k.__onFinishChange.call(k,k.getValue())}p.superclass.call(this,c,e,{min:d,max:f,step:u});var k=this;this.__background=
+document.createElement(&quot;div&quot;);this.__foreground=document.createElement(&quot;div&quot;);a.bind(this.__background,&quot;mousedown&quot;,function(b){a.bind(window,&quot;mousemove&quot;,A);a.bind(window,&quot;mouseup&quot;,g);A(b)});a.addClass(this.__background,&quot;slider&quot;);a.addClass(this.__foreground,&quot;slider-fg&quot;);this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=f;p.useDefaultStyles=function(){d.inject(c)};e.extend(p.prototype,f.prototype,{updateDisplay:function(){var a=
+(this.getValue()-this.__min)/(this.__max-this.__min);this.__foreground.style.width=100*a+&quot;%&quot;;return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,&quot;/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n.slider {\n  box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n  height: 1em;\n  border-radius: 1em;\n  background-color: #eee;\n  padding: 0 0.5em;\n  overflow: hidden;\n}\n\n.slider-fg {\n  padding: 1px 0 2px 0;\n  background-color: #aaa;\n  height: 1em;\n  margin-left: -0.5em;\n  padding-right: 0.5em;\n  border-radius: 1em 0 0 1em;\n}\n
 \n.slider-fg:after {\n  display: inline-block;\n  border-radius: 1em;\n  background-color: #fff;\n  border:  1px solid #aaa;\n  content: '';\n  float: right;\n  margin-right: -1em;\n  margin-top: -1px;\n  height: 0.9em;\n  width: 0.9em;\n}&quot;);
+dat.controllers.FunctionController=function(f,a,d){var e=function(c,b,d){e.superclass.call(this,c,b);var f=this;this.__button=document.createElement(&quot;div&quot;);this.__button.innerHTML=void 0===d?&quot;Fire&quot;:d;a.bind(this.__button,&quot;click&quot;,function(a){a.preventDefault();f.fire();return!1});a.addClass(this.__button,&quot;button&quot;);this.domElement.appendChild(this.__button)};e.superclass=f;d.extend(e.prototype,f.prototype,{fire:function(){this.__onChange&amp;&amp;this.__onChange.call(this);this.getValue().call(this.object);
+this.__onFinishChange&amp;&amp;this.__onFinishChange.call(this,this.getValue())}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);
+dat.controllers.BooleanController=function(f,a,d){var e=function(c,b){e.superclass.call(this,c,b);var d=this;this.__prev=this.getValue();this.__checkbox=document.createElement(&quot;input&quot;);this.__checkbox.setAttribute(&quot;type&quot;,&quot;checkbox&quot;);a.bind(this.__checkbox,&quot;change&quot;,function(){d.setValue(!d.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};e.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&amp;&amp;
+this.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute(&quot;checked&quot;,&quot;checked&quot;),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common);
+dat.color.toString=function(f){return function(a){if(1==a.a||f.isUndefined(a.a)){for(a=a.hex.toString(16);6&gt;a.length;)a=&quot;0&quot;+a;return&quot;#&quot;+a}return&quot;rgba(&quot;+Math.round(a.r)+&quot;,&quot;+Math.round(a.g)+&quot;,&quot;+Math.round(a.b)+&quot;,&quot;+a.a+&quot;)&quot;}}(dat.utils.common);
+dat.color.interpret=function(f,a){var d,e,c=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null===a?!1:{space:&quot;HEX&quot;,hex:parseInt(&quot;0x&quot;+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:f},SIX_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9]{6})$/i);return null===a?!1:{space:&quot;HEX&quot;,hex:parseInt(&quot;0x&quot;+a[1].toString())}},write:f},CSS_RGB:{read:function(a){a=a.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
+return null===a?!1:{space:&quot;RGB&quot;,r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:f},CSS_RGBA:{read:function(a){a=a.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);return null===a?!1:{space:&quot;RGB&quot;,r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:f}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:&quot;HEX&quot;,hex:a,conversionName:&quot;HEX&quot;}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!=
+a.length?!1:{space:&quot;RGB&quot;,r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:&quot;RGB&quot;,r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(b){return a.isNumber(b.r)&amp;&amp;a.isNumber(b.g)&amp;&amp;a.isNumber(b.b)&amp;&amp;a.isNumber(b.a)?{space:&quot;RGB&quot;,r:b.r,g:b.g,b:b.b,a:b.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(b){return a.isNumber(b.r)&amp;&amp;
+a.isNumber(b.g)&amp;&amp;a.isNumber(b.b)?{space:&quot;RGB&quot;,r:b.r,g:b.g,b:b.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(b){return a.isNumber(b.h)&amp;&amp;a.isNumber(b.s)&amp;&amp;a.isNumber(b.v)&amp;&amp;a.isNumber(b.a)?{space:&quot;HSV&quot;,h:b.h,s:b.s,v:b.v,a:b.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(b){return a.isNumber(b.h)&amp;&amp;a.isNumber(b.s)&amp;&amp;a.isNumber(b.v)?{space:&quot;HSV&quot;,h:b.h,s:b.s,v:b.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){e=!1;
+var b=1&lt;arguments.length?a.toArray(arguments):arguments[0];a.each(c,function(c){if(c.litmus(b))return a.each(c.conversions,function(c,f){d=c.read(b);if(!1===e&amp;&amp;!1!==d)return e=d,d.conversionName=f,d.conversion=c,a.BREAK}),a.BREAK});return e}}(dat.color.toString,dat.utils.common);
+dat.GUI=dat.gui.GUI=function(f,a,d,e,c,b,p,q,l,r,n,u,A,g,k){function v(a,b,h,d){if(void 0===b[h])throw Error(&quot;Object &quot;+b+' has no property &quot;'+h+'&quot;');d.color?b=new n(b,h):(b=[b,h].concat(d.factoryArgs),b=e.apply(a,b));d.before instanceof c&amp;&amp;(d.before=d.before.__li);y(a,b);g.addClass(b.domElement,&quot;c&quot;);h=document.createElement(&quot;span&quot;);g.addClass(h,&quot;property-name&quot;);h.innerHTML=b.property;var f=document.createElement(&quot;div&quot;);f.appendChild(h);f.appendChild(b.domElement);d=w(a,f,d.before);g.addClass(d,m.CLASS_CONTROLLER_ROW);
+g.addClass(d,typeof b.getValue());t(a,d,b);a.__controllers.push(b);return b}function w(a,b,h){var c=document.createElement(&quot;li&quot;);b&amp;&amp;c.appendChild(b);h?a.__ul.insertBefore(c,params.before):a.__ul.appendChild(c);a.onResize();return c}function t(a,c,h){h.__li=c;h.__gui=a;k.extend(h,{options:function(b){if(1&lt;arguments.length)return h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[k.toArray(arguments)]});if(k.isArray(b)||k.isObject(b))return h.remove(),v(a,h.object,h.property,
+{before:h.__li.nextElementSibling,factoryArgs:[b]})},name:function(a){h.__li.firstElementChild.firstElementChild.innerHTML=a;return h},listen:function(){h.__gui.listen(h);return h},remove:function(){h.__gui.remove(h);return h}});if(h instanceof l){var d=new q(h.object,h.property,{min:h.__min,max:h.__max,step:h.__step});k.each([&quot;updateDisplay&quot;,&quot;onChange&quot;,&quot;onFinishChange&quot;],function(a){var K=h[a],b=d[a];h[a]=d[a]=function(){var a=Array.prototype.slice.call(arguments);K.apply(h,a);return b.apply(d,a)}});
+g.addClass(c,&quot;has-slider&quot;);h.domElement.insertBefore(d.domElement,h.domElement.firstElementChild)}else if(h instanceof q){var e=function(b){return k.isNumber(h.__min)&amp;&amp;k.isNumber(h.__max)?(h.remove(),v(a,h.object,h.property,{before:h.__li.nextElementSibling,factoryArgs:[h.__min,h.__max,h.__step]})):b};h.min=k.compose(e,h.min);h.max=k.compose(e,h.max)}else h instanceof b?(g.bind(c,&quot;click&quot;,function(){g.fakeEvent(h.__checkbox,&quot;click&quot;)}),g.bind(h.__checkbox,&quot;click&quot;,function(a){a.stopPropagation()})):
+h instanceof p?(g.bind(c,&quot;click&quot;,function(){g.fakeEvent(h.__button,&quot;click&quot;)}),g.bind(c,&quot;mouseover&quot;,function(){g.addClass(h.__button,&quot;hover&quot;)}),g.bind(c,&quot;mouseout&quot;,function(){g.removeClass(h.__button,&quot;hover&quot;)})):h instanceof n&amp;&amp;(g.addClass(c,&quot;color&quot;),h.updateDisplay=k.compose(function(a){c.style.borderLeftColor=h.__color.toString();return a},h.updateDisplay),h.updateDisplay());h.setValue=k.compose(function(b){a.getRoot().__preset_select&amp;&amp;h.isModified()&amp;&amp;E(a.getRoot(),!0);return b},h.setValue)}function y(a,
+b){var c=a.getRoot(),d=c.__rememberedObjects.indexOf(b.object);if(-1!=d){var e=c.__rememberedObjectIndecesToControllers[d];void 0===e&amp;&amp;(e={},c.__rememberedObjectIndecesToControllers[d]=e);e[b.property]=b;if(c.load&amp;&amp;c.load.remembered){c=c.load.remembered;if(c[a.preset])c=c[a.preset];else if(c.Default)c=c.Default;else return;c[d]&amp;&amp;void 0!==c[d][b.property]&amp;&amp;(d=c[d][b.property],b.initialValue=d,b.setValue(d))}}}function L(a){var b=a.__save_row=document.createElement(&quot;li&quot;);g.addClass(a.domElement,&quot;has-save&quot;);
+a.__ul.insertBefore(b,a.__ul.firstChild);g.addClass(b,&quot;save-row&quot;);var c=document.createElement(&quot;span&quot;);c.innerHTML=&quot;&amp;nbsp;&quot;;g.addClass(c,&quot;button gears&quot;);var d=document.createElement(&quot;span&quot;);d.innerHTML=&quot;Save&quot;;g.addClass(d,&quot;button&quot;);g.addClass(d,&quot;save&quot;);var e=document.createElement(&quot;span&quot;);e.innerHTML=&quot;New&quot;;g.addClass(e,&quot;button&quot;);g.addClass(e,&quot;save-as&quot;);var f=document.createElement(&quot;span&quot;);f.innerHTML=&quot;Revert&quot;;g.addClass(f,&quot;button&quot;);g.addClass(f,&quot;revert&quot;);var r=a.__preset_select=document.createElement(&quot;select&quot;);
+a.load&amp;&amp;a.load.remembered?k.each(a.load.remembered,function(b,c){F(a,c,c==a.preset)}):F(a,&quot;Default&quot;,!1);g.bind(r,&quot;change&quot;,function(){for(var b=0;b&lt;a.__preset_select.length;b++)a.__preset_select[b].innerHTML=a.__preset_select[b].value;a.preset=this.value});b.appendChild(r);b.appendChild(c);b.appendChild(d);b.appendChild(e);b.appendChild(f);if(x){var n=function(){u.style.display=a.useLocalStorage?&quot;block&quot;:&quot;none&quot;},b=document.getElementById(&quot;dg-save-locally&quot;),u=document.getElementById(&quot;dg-local-explain&quot;);
+b.style.display=&quot;block&quot;;b=document.getElementById(&quot;dg-local-storage&quot;);&quot;true&quot;===localStorage.getItem(document.location.href+&quot;.isLocal&quot;)&amp;&amp;b.setAttribute(&quot;checked&quot;,&quot;checked&quot;);n();g.bind(b,&quot;change&quot;,function(){a.useLocalStorage=!a.useLocalStorage;n()})}var m=document.getElementById(&quot;dg-new-constructor&quot;);g.bind(m,&quot;keydown&quot;,function(a){!a.metaKey||67!==a.which&amp;&amp;67!=a.keyCode||B.hide()});g.bind(c,&quot;click&quot;,function(){m.innerHTML=JSON.stringify(a.getSaveObject(),void 0,2);B.show();m.focus();m.select()});g.bind(d,
+&quot;click&quot;,function(){a.save()});g.bind(e,&quot;click&quot;,function(){var b=prompt(&quot;Enter a new preset name.&quot;);b&amp;&amp;a.saveAs(b)});g.bind(f,&quot;click&quot;,function(){a.revert()})}function M(a){function b(f){f.preventDefault();e=f.clientX;g.addClass(a.__closeButton,m.CLASS_DRAG);g.bind(window,&quot;mousemove&quot;,c);g.bind(window,&quot;mouseup&quot;,d);return!1}function c(b){b.preventDefault();a.width+=e-b.clientX;a.onResize();e=b.clientX;return!1}function d(){g.removeClass(a.__closeButton,m.CLASS_DRAG);g.unbind(window,&quot;mousemove&quot;,c);g.unbind(window,
+&quot;mouseup&quot;,d)}a.__resize_handle=document.createElement(&quot;div&quot;);k.extend(a.__resize_handle.style,{width:&quot;6px&quot;,marginLeft:&quot;-3px&quot;,height:&quot;200px&quot;,cursor:&quot;ew-resize&quot;,position:&quot;absolute&quot;});var e;g.bind(a.__resize_handle,&quot;mousedown&quot;,b);g.bind(a.__closeButton,&quot;mousedown&quot;,b);a.domElement.insertBefore(a.__resize_handle,a.domElement.firstElementChild)}function G(a,b){a.domElement.style.width=b+&quot;px&quot;;a.__save_row&amp;&amp;a.autoPlace&amp;&amp;(a.__save_row.style.width=b+&quot;px&quot;);a.__closeButton&amp;&amp;(a.__closeButton.style.width=b+&quot;px&quot;)}
+function C(a,b){var c={};k.each(a.__rememberedObjects,function(d,e){var f={};k.each(a.__rememberedObjectIndecesToControllers[e],function(a,c){f[c]=b?a.initialValue:a.getValue()});c[e]=f});return c}function F(a,b,c){var d=document.createElement(&quot;option&quot;);d.innerHTML=b;d.value=b;a.__preset_select.appendChild(d);c&amp;&amp;(a.__preset_select.selectedIndex=a.__preset_select.length-1)}function E(a,b){var c=a.__preset_select[a.__preset_select.selectedIndex];c.innerHTML=b?c.value+&quot;*&quot;:c.value}function H(a){0!=a.length&amp;&amp;
+u(function(){H(a)});k.each(a,function(a){a.updateDisplay()})}f.inject(d);var x;try{x=&quot;localStorage&quot;in window&amp;&amp;null!==window.localStorage}catch(N){x=!1}var B,I=!0,z,D=!1,J=[],m=function(a){function b(){var a=c.getRoot();a.width+=1;k.defer(function(){--a.width})}var c=this;this.domElement=document.createElement(&quot;div&quot;);this.__ul=document.createElement(&quot;ul&quot;);this.domElement.appendChild(this.__ul);g.addClass(this.domElement,&quot;dg&quot;);this.__folders={};this.__controllers=[];this.__rememberedObjects=[];this.__rememberedObjectIndecesToControllers=
+[];this.__listening=[];a=a||{};a=k.defaults(a,{autoPlace:!0,width:m.DEFAULT_WIDTH});a=k.defaults(a,{resizable:a.autoPlace,hideable:a.autoPlace});k.isUndefined(a.load)?a.load={preset:&quot;Default&quot;}:a.preset&amp;&amp;(a.load.preset=a.preset);k.isUndefined(a.parent)&amp;&amp;a.hideable&amp;&amp;J.push(this);a.resizable=k.isUndefined(a.parent)&amp;&amp;a.resizable;a.autoPlace&amp;&amp;k.isUndefined(a.scrollable)&amp;&amp;(a.scrollable=!0);var d=x&amp;&amp;&quot;true&quot;===localStorage.getItem(document.location.href+&quot;.isLocal&quot;),e;Object.defineProperties(this,{parent:{get:function(){return a.parent}},
+scrollable:{get:function(){return a.scrollable}},autoPlace:{get:function(){return a.autoPlace}},preset:{get:function(){return c.parent?c.getRoot().preset:a.load.preset},set:function(b){c.parent?c.getRoot().preset=b:a.load.preset=b;for(b=0;b&lt;this.__preset_select.length;b++)this.__preset_select[b].value==this.preset&amp;&amp;(this.__preset_select.selectedIndex=b);c.revert()}},width:{get:function(){return a.width},set:function(b){a.width=b;G(c,b)}},name:{get:function(){return a.name},set:function(b){a.name=
+b;r&amp;&amp;(r.innerHTML=a.name)}},closed:{get:function(){return a.closed},set:function(b){a.closed=b;a.closed?g.addClass(c.__ul,m.CLASS_CLOSED):g.removeClass(c.__ul,m.CLASS_CLOSED);this.onResize();c.__closeButton&amp;&amp;(c.__closeButton.innerHTML=b?m.TEXT_OPEN:m.TEXT_CLOSED)}},load:{get:function(){return a.load}},useLocalStorage:{get:function(){return d},set:function(a){x&amp;&amp;((d=a)?g.bind(window,&quot;unload&quot;,e):g.unbind(window,&quot;unload&quot;,e),localStorage.setItem(document.location.href+&quot;.isLocal&quot;,a))}}});if(k.isUndefined(a.parent)){a.closed=
+!1;g.addClass(this.domElement,m.CLASS_MAIN);g.makeSelectable(this.domElement,!1);if(x&amp;&amp;d){c.useLocalStorage=!0;var f=localStorage.getItem(document.location.href+&quot;.gui&quot;);f&amp;&amp;(a.load=JSON.parse(f))}this.__closeButton=document.createElement(&quot;div&quot;);this.__closeButton.innerHTML=m.TEXT_CLOSED;g.addClass(this.__closeButton,m.CLASS_CLOSE_BUTTON);this.domElement.appendChild(this.__closeButton);g.bind(this.__closeButton,&quot;click&quot;,function(){c.closed=!c.closed})}else{void 0===a.closed&amp;&amp;(a.closed=!0);var r=document.createTextNode(a.name);
+g.addClass(r,&quot;controller-name&quot;);f=w(c,r);g.addClass(this.__ul,m.CLASS_CLOSED);g.addClass(f,&quot;title&quot;);g.bind(f,&quot;click&quot;,function(a){a.preventDefault();c.closed=!c.closed;return!1});a.closed||(this.closed=!1)}a.autoPlace&amp;&amp;(k.isUndefined(a.parent)&amp;&amp;(I&amp;&amp;(z=document.createElement(&quot;div&quot;),g.addClass(z,&quot;dg&quot;),g.addClass(z,m.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(z),I=!1),z.appendChild(this.domElement),g.addClass(this.domElement,m.CLASS_AUTO_PLACE)),this.parent||G(c,a.width));g.bind(window,&quot;resize&quot;,
+function(){c.onResize()});g.bind(this.__ul,&quot;webkitTransitionEnd&quot;,function(){c.onResize()});g.bind(this.__ul,&quot;transitionend&quot;,function(){c.onResize()});g.bind(this.__ul,&quot;oTransitionEnd&quot;,function(){c.onResize()});this.onResize();a.resizable&amp;&amp;M(this);this.saveToLocalStorageIfPossible=e=function(){x&amp;&amp;&quot;true&quot;===localStorage.getItem(document.location.href+&quot;.isLocal&quot;)&amp;&amp;localStorage.setItem(document.location.href+&quot;.gui&quot;,JSON.stringify(c.getSaveObject()))};c.getRoot();a.parent||b()};m.toggleHide=function(){D=
+!D;k.each(J,function(a){a.domElement.style.zIndex=D?-999:999;a.domElement.style.opacity=D?0:1})};m.CLASS_AUTO_PLACE=&quot;a&quot;;m.CLASS_AUTO_PLACE_CONTAINER=&quot;ac&quot;;m.CLASS_MAIN=&quot;main&quot;;m.CLASS_CONTROLLER_ROW=&quot;cr&quot;;m.CLASS_TOO_TALL=&quot;taller-than-window&quot;;m.CLASS_CLOSED=&quot;closed&quot;;m.CLASS_CLOSE_BUTTON=&quot;close-button&quot;;m.CLASS_DRAG=&quot;drag&quot;;m.DEFAULT_WIDTH=245;m.TEXT_CLOSED=&quot;Close Controls&quot;;m.TEXT_OPEN=&quot;Open Controls&quot;;g.bind(window,&quot;keydown&quot;,function(a){&quot;text&quot;===document.activeElement.type||72!==a.which&amp;&amp;72!=a.keyCode||
+m.toggleHide()},!1);k.extend(m.prototype,{add:function(a,b){return v(this,a,b,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(a,b){return v(this,a,b,{color:!0})},remove:function(a){this.__ul.removeChild(a.__li);this.__controllers.splice(this.__controllers.indexOf(a),1);var b=this;k.defer(function(){b.onResize()})},destroy:function(){this.autoPlace&amp;&amp;z.removeChild(this.domElement)},addFolder:function(a){if(void 0!==this.__folders[a])throw Error('You already have a folder in this GUI by the name &quot;'+
+a+'&quot;');var b={name:a,parent:this};b.autoPlace=this.autoPlace;this.load&amp;&amp;this.load.folders&amp;&amp;this.load.folders[a]&amp;&amp;(b.closed=this.load.folders[a].closed,b.load=this.load.folders[a]);b=new m(b);this.__folders[a]=b;a=w(this,b.domElement);g.addClass(a,&quot;folder&quot;);return b},open:function(){this.closed=!1},close:function(){this.closed=!0},onResize:function(){var a=this.getRoot();if(a.scrollable){var b=g.getOffset(a.__ul).top,c=0;k.each(a.__ul.childNodes,function(b){a.autoPlace&amp;&amp;b===a.__save_row||(c+=g.getHeight(b))});
+window.innerHeight-b-20&lt;c?(g.addClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=window.innerHeight-b-20+&quot;px&quot;):(g.removeClass(a.domElement,m.CLASS_TOO_TALL),a.__ul.style.height=&quot;auto&quot;)}a.__resize_handle&amp;&amp;k.defer(function(){a.__resize_handle.style.height=a.__ul.offsetHeight+&quot;px&quot;});a.__closeButton&amp;&amp;(a.__closeButton.style.width=a.width+&quot;px&quot;)},remember:function(){k.isUndefined(B)&amp;&amp;(B=new A,B.domElement.innerHTML=a);if(this.parent)throw Error(&quot;You can only call remember on a top level GUI.&quot;);var b=
+this;k.each(Array.prototype.slice.call(arguments),function(a){0==b.__rememberedObjects.length&amp;&amp;L(b);-1==b.__rememberedObjects.indexOf(a)&amp;&amp;b.__rememberedObjects.push(a)});this.autoPlace&amp;&amp;G(this,this.width)},getRoot:function(){for(var a=this;a.parent;)a=a.parent;return a},getSaveObject:function(){var a=this.load;a.closed=this.closed;0&lt;this.__rememberedObjects.length&amp;&amp;(a.preset=this.preset,a.remembered||(a.remembered={}),a.remembered[this.preset]=C(this));a.folders={};k.each(this.__folders,function(b,
+c){a.folders[c]=b.getSaveObject()});return a},save:function(){this.load.remembered||(this.load.remembered={});this.load.remembered[this.preset]=C(this);E(this,!1);this.saveToLocalStorageIfPossible()},saveAs:function(a){this.load.remembered||(this.load.remembered={},this.load.remembered.Default=C(this,!0));this.load.remembered[a]=C(this);this.preset=a;F(this,a,!0);this.saveToLocalStorageIfPossible()},revert:function(a){k.each(this.__controllers,function(b){this.getRoot().load.remembered?y(a||this.getRoot(),
+b):b.setValue(b.initialValue)},this);k.each(this.__folders,function(a){a.revert(a)});a||E(this.getRoot(),!1)},listen:function(a){var b=0==this.__listening.length;this.__listening.push(a);b&amp;&amp;H(this.__listening)}});return m}(dat.utils.css,'&lt;div id=&quot;dg-save&quot; class=&quot;dg dialogue&quot;&gt;\n\n  Here\'s the new load parameter for your &lt;code&gt;GUI&lt;/code&gt;\'s constructor:\n\n  &lt;textarea id=&quot;dg-new-constructor&quot;&gt;&lt;/textarea&gt;\n\n  &lt;div id=&quot;dg-save-locally&quot;&gt;\n\n    &lt;input id=&quot;dg-local-storage&quot; type=&quot;checkbox&quot;/&gt; Automatically save\n    values to &lt;code&gt;localStorage&lt;/code&gt; on exit.\n\n    &lt;div id=&quot;dg-local-explain&quot;&gt;The values saved to &lt;code&gt;localStorage&lt;/code&gt; will\n      override those passed to &lt;code&gt;dat.GUI&lt;/code&gt;\'s constructor. This makes it\n      easier to work incrementally, but &lt;code&gt;localStorage&lt;/code&gt; is fragile,\n      
 and your friends may not see the same values you do.\n      \n    &lt;/div&gt;\n    \n  &lt;/div&gt;\n\n&lt;/div&gt;',
+&quot;.dg {\n  /** Clear list styles */\n  /* Auto-place container */\n  /* Auto-placed GUI's */\n  /* Line items that don't contain folders. */\n  /** Folder names */\n  /** Hides closed items */\n  /** Controller row */\n  /** Name-half (left) */\n  /** Controller-half (right) */\n  /** Controller placement */\n  /** Shorter number boxes when slider is present. */\n  /** Ensure the entire boolean and function row shows a hand */ }\n  .dg ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n    width: 100%;\n    clear: both; }\n  .dg.ac {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    height: 0;\n    z-index: 0; }\n  .dg:not(.ac) .main {\n    /** Exclude mains in ac so that we don't hide close button */\n    overflow: hidden; }\n  .dg.main {\n    -webkit-transition: opacity 0.1s linear;\n    -o-transition: opacity 0.1s linear;\n    -moz-transition: opacity 0.1s linear;\n    transition: opacity 0.1s linear; }\n    .dg.main.taller-than-window {\
 n      overflow-y: auto; }\n      .dg.main.taller-than-window .close-button {\n        opacity: 1;\n        /* TODO, these are style notes */\n        margin-top: -1px;\n        border-top: 1px solid #2c2c2c; }\n    .dg.main ul.closed .close-button {\n      opacity: 1 !important; }\n    .dg.main:hover .close-button,\n    .dg.main .close-button.drag {\n      opacity: 1; }\n    .dg.main .close-button {\n      /*opacity: 0;*/\n      -webkit-transition: opacity 0.1s linear;\n      -o-transition: opacity 0.1s linear;\n      -moz-transition: opacity 0.1s linear;\n      transition: opacity 0.1s linear;\n      border: 0;\n      position: absolute;\n      line-height: 19px;\n      height: 20px;\n      /* TODO, these are style notes */\n      cursor: pointer;\n      text-align: center;\n      background-color: #000; }\n      .dg.main .close-button:hover {\n        background-color: #111; }\n  .dg.a {\n    float: right;\n    margin-right: 15px;\n    overflow-x: hidden; }\n    .dg.a.has
 -save &gt; ul {\n      margin-top: 27px; }\n      .dg.a.has-save &gt; ul.closed {\n        margin-top: 0; }\n    .dg.a .save-row {\n      position: fixed;\n      top: 0;\n      z-index: 1002; }\n  .dg li {\n    -webkit-transition: height 0.1s ease-out;\n    -o-transition: height 0.1s ease-out;\n    -moz-transition: height 0.1s ease-out;\n    transition: height 0.1s ease-out; }\n  .dg li:not(.folder) {\n    cursor: auto;\n    height: 27px;\n    line-height: 27px;\n    overflow: hidden;\n    padding: 0 4px 0 5px; }\n  .dg li.folder {\n    padding: 0;\n    border-left: 4px solid rgba(0, 0, 0, 0); }\n  .dg li.title {\n    cursor: pointer;\n    margin-left: -4px; }\n  .dg .closed li:not(.title),\n  .dg .closed ul li,\n  .dg .closed ul li &gt; * {\n    height: 0;\n    overflow: hidden;\n    border: 0; }\n  .dg .cr {\n    clear: both;\n    padding-left: 3px;\n    height: 27px; }\n  .dg .property-name {\n    cursor: default;\n    float: left;\n    clear: left;\n    width: 40%;\n    
 overflow: hidden;\n    text-overflow: ellipsis; }\n  .dg .c {\n    float: left;\n    width: 60%; }\n  .dg .c input[type=text] {\n    border: 0;\n    margin-top: 4px;\n    padding: 3px;\n    width: 100%;\n    float: right; }\n  .dg .has-slider input[type=text] {\n    width: 30%;\n    /*display: none;*/\n    margin-left: 0; }\n  .dg .slider {\n    float: left;\n    width: 66%;\n    margin-left: -5px;\n    margin-right: 0;\n    height: 19px;\n    margin-top: 4px; }\n  .dg .slider-fg {\n    height: 100%; }\n  .dg .c input[type=checkbox] {\n    margin-top: 9px; }\n  .dg .c select {\n    margin-top: 5px; }\n  .dg .cr.function,\n  .dg .cr.function .property-name,\n  .dg .cr.function *,\n  .dg .cr.boolean,\n  .dg .cr.boolean * {\n    cursor: pointer; }\n  .dg .selector {\n    display: none;\n    position: absolute;\n    margin-left: -9px;\n    margin-top: 23px;\n    z-index: 10; }\n  .dg .c:hover .selector,\n  .dg .selector.drag {\n    display: block; }\n  .dg li.save-row {\n    pad
 ding: 0; }\n    .dg li.save-row .button {\n      display: inline-block;\n      padding: 0px 6px; }\n  .dg.dialogue {\n    background-color: #222;\n    width: 460px;\n    padding: 15px;\n    font-size: 13px;\n    line-height: 15px; }\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n  padding: 10px;\n  color: #222;\n  font-family: Monaco, monospace;\n  font-size: 10px;\n  border: 0;\n  resize: none;\n  box-shadow: inset 1px 1px 1px #888;\n  word-wrap: break-word;\n  margin: 12px 0;\n  display: block;\n  width: 440px;\n  overflow-y: scroll;\n  height: 100px;\n  position: relative; }\n\n#dg-local-explain {\n  display: none;\n  font-size: 11px;\n  line-height: 17px;\n  border-radius: 3px;\n  background-color: #333;\n  padding: 8px;\n  margin-top: 10px; }\n  #dg-local-explain code {\n    font-size: 10px; }\n\n#dat-gui-save-locally {\n  display: none; }\n\n/** Main type */\n.dg {\n  color: #eee;\n  font: 11px 'Lucida Grande', sans-serif;\n  text-shadow: 0 -1px 0 #
 111;\n  /** Auto place */\n  /* Controller row, &lt;li&gt; */\n  /** Controllers */ }\n  .dg.main {\n    /** Scrollbar */ }\n    .dg.main::-webkit-scrollbar {\n      width: 5px;\n      background: #1a1a1a; }\n    .dg.main::-webkit-scrollbar-corner {\n      height: 0;\n      display: none; }\n    .dg.main::-webkit-scrollbar-thumb {\n      border-radius: 5px;\n      background: #676767; }\n  .dg li:not(.folder) {\n    background: #1a1a1a;\n    border-bottom: 1px solid #2c2c2c; }\n  .dg li.save-row {\n    line-height: 25px;\n    background: #dad5cb;\n    border: 0; }\n    .dg li.save-row select {\n      margin-left: 5px;\n      width: 108px; }\n    .dg li.save-row .button {\n      margin-left: 5px;\n      margin-top: 1px;\n      border-radius: 2px;\n      font-size: 9px;\n      line-height: 7px;\n      padding: 4px 4px 5px 4px;\n      background: #c5bdad;\n      color: #fff;\n      text-shadow: 0 1px 0 #b0a58f;\n      box-shadow: 0 -1px 0 #b0a58f;\n      cursor: pointer; }\n   
    .dg li.save-row .button.gears {\n        background: #c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\n        height: 7px;\n        width: 8px; }\n      .dg li.save-row .button:hover {\n        background-color: #bab19e;\n        box-shadow: 0 -1px 0 #b0a58f; }\n  .dg li.folder {\n    border-bottom: 0; }\n  .dg li.title {\n    padding-left: 16px;\n    background: black url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\n    cursor
 : pointer;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n  .dg .closed li.title {\n    background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\n  .dg .cr.boolean {\n    border-left: 3px solid #806787; }\n  .dg .cr.function {\n    border-left: 3px solid #e61d5f; }\n  .dg .cr.number {\n    border-left: 3px solid #2fa1d6; }\n    .dg .cr.number input[type=text] {\n      color: #2fa1d6; }\n  .dg .cr.string {\n    border-left: 3px solid #1ed36f; }\n    .dg .cr.string input[type=text] {\n      color: #1ed36f; }\n  .dg .cr.function:hover, .dg .cr.boolean:hover {\n    background: #111; }\n  .dg .c input[type=text] {\n    background: #303030;\n    outline: none; }\n    .dg .c input[type=text]:hover {\n      background: #3c3c3c; }\n    .dg .c input[type=text]:focus {\n      background: #494949;\n      color: #fff; }\n  .dg .c .slider {\n    background: #303030;\n    cursor: ew-resize; }\n  .dg .c .slider-
 fg {\n    background: #2fa1d6; }\n  .dg .c .slider:hover {\n    background: #3c3c3c; }\n    .dg .c .slider:hover .slider-fg {\n      background: #44abda; }\n&quot;,
+dat.controllers.factory=function(f,a,d,e,c,b,p){return function(q,l,r,n){var u=q[l];if(p.isArray(r)||p.isObject(r))return new f(q,l,r);if(p.isNumber(u))return p.isNumber(r)&amp;&amp;p.isNumber(n)?new d(q,l,r,n):new a(q,l,{min:r,max:n});if(p.isString(u))return new e(q,l);if(p.isFunction(u))return new c(q,l,&quot;&quot;);if(p.isBoolean(u))return new b(q,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(f,a,d){var e=
+function(c,b){function d(){f.setValue(f.__input.value)}e.superclass.call(this,c,b);var f=this;this.__input=document.createElement(&quot;input&quot;);this.__input.setAttribute(&quot;type&quot;,&quot;text&quot;);a.bind(this.__input,&quot;keyup&quot;,d);a.bind(this.__input,&quot;change&quot;,d);a.bind(this.__input,&quot;blur&quot;,function(){f.__onFinishChange&amp;&amp;f.__onFinishChange.call(f,f.getValue())});a.bind(this.__input,&quot;keydown&quot;,function(a){13===a.keyCode&amp;&amp;this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,
+f.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController,
+dat.controllers.ColorController=function(f,a,d,e,c){function b(a,b,d,e){a.style.background=&quot;&quot;;c.each(l,function(c){a.style.cssText+=&quot;background: &quot;+c+&quot;linear-gradient(&quot;+b+&quot;, &quot;+d+&quot; 0%, &quot;+e+&quot; 100%); &quot;})}function p(a){a.style.background=&quot;&quot;;a.style.cssText+=&quot;background: -moz-linear-gradient(top,  #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);&quot;;a.style.cssText+=&quot;background: -webkit-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);&quot;;
+a.style.cssText+=&quot;background: -o-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);&quot;;a.style.cssText+=&quot;background: -ms-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);&quot;;a.style.cssText+=&quot;background: linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);&quot;}var q=function(f,n){function u(b){v(b);a.bind(window,&quot;mousemove&quot;,v);a.bind(window,
+&quot;mouseup&quot;,l)}function l(){a.unbind(window,&quot;mousemove&quot;,v);a.unbind(window,&quot;mouseup&quot;,l)}function g(){var a=e(this.value);!1!==a?(t.__color.__state=a,t.setValue(t.__color.toOriginal())):this.value=t.__color.toString()}function k(){a.unbind(window,&quot;mousemove&quot;,w);a.unbind(window,&quot;mouseup&quot;,k)}function v(b){b.preventDefault();var c=a.getWidth(t.__saturation_field),d=a.getOffset(t.__saturation_field),e=(b.clientX-d.left+document.body.scrollLeft)/c;b=1-(b.clientY-d.top+document.body.scrollTop)/c;1&lt;b?b=1:0&gt;
+b&amp;&amp;(b=0);1&lt;e?e=1:0&gt;e&amp;&amp;(e=0);t.__color.v=b;t.__color.s=e;t.setValue(t.__color.toOriginal());return!1}function w(b){b.preventDefault();var c=a.getHeight(t.__hue_field),d=a.getOffset(t.__hue_field);b=1-(b.clientY-d.top+document.body.scrollTop)/c;1&lt;b?b=1:0&gt;b&amp;&amp;(b=0);t.__color.h=360*b;t.setValue(t.__color.toOriginal());return!1}q.superclass.call(this,f,n);this.__color=new d(this.getValue());this.__temp=new d(0);var t=this;this.domElement=document.createElement(&quot;div&quot;);a.makeSelectable(this.domElement,!1);
+this.__selector=document.createElement(&quot;div&quot;);this.__selector.className=&quot;selector&quot;;this.__saturation_field=document.createElement(&quot;div&quot;);this.__saturation_field.className=&quot;saturation-field&quot;;this.__field_knob=document.createElement(&quot;div&quot;);this.__field_knob.className=&quot;field-knob&quot;;this.__field_knob_border=&quot;2px solid &quot;;this.__hue_knob=document.createElement(&quot;div&quot;);this.__hue_knob.className=&quot;hue-knob&quot;;this.__hue_field=document.createElement(&quot;div&quot;);this.__hue_field.className=&quot;hue-field&quot;;this.__input=document.createElement(&quot;input&quot;);
+this.__input.type=&quot;text&quot;;this.__input_textShadow=&quot;0 1px 1px &quot;;a.bind(this.__input,&quot;keydown&quot;,function(a){13===a.keyCode&amp;&amp;g.call(this)});a.bind(this.__input,&quot;blur&quot;,g);a.bind(this.__selector,&quot;mousedown&quot;,function(b){a.addClass(this,&quot;drag&quot;).bind(window,&quot;mouseup&quot;,function(b){a.removeClass(t.__selector,&quot;drag&quot;)})});var y=document.createElement(&quot;div&quot;);c.extend(this.__selector.style,{width:&quot;122px&quot;,height:&quot;102px&quot;,padding:&quot;3px&quot;,backgroundColor:&quot;#222&quot;,boxShadow:&quot;0px 1px 3px rgba(0,0,0,0.3)&quot;});c.extend(this.__field_knob.style,
+{position:&quot;absolute&quot;,width:&quot;12px&quot;,height:&quot;12px&quot;,border:this.__field_knob_border+(.5&gt;this.__color.v?&quot;#fff&quot;:&quot;#000&quot;),boxShadow:&quot;0px 1px 3px rgba(0,0,0,0.5)&quot;,borderRadius:&quot;12px&quot;,zIndex:1});c.extend(this.__hue_knob.style,{position:&quot;absolute&quot;,width:&quot;15px&quot;,height:&quot;2px&quot;,borderRight:&quot;4px solid #fff&quot;,zIndex:1});c.extend(this.__saturation_field.style,{width:&quot;100px&quot;,height:&quot;100px&quot;,border:&quot;1px solid #555&quot;,marginRight:&quot;3px&quot;,display:&quot;inline-block&quot;,cursor:&quot;pointer&quot;});c.extend(y.style,{width:&quot;100%&quot;,height:&quot;100%&quot;,
+background:&quot;none&quot;});b(y,&quot;top&quot;,&quot;rgba(0,0,0,0)&quot;,&quot;#000&quot;);c.extend(this.__hue_field.style,{width:&quot;15px&quot;,height:&quot;100px&quot;,display:&quot;inline-block&quot;,border:&quot;1px solid #555&quot;,cursor:&quot;ns-resize&quot;});p(this.__hue_field);c.extend(this.__input.style,{outline:&quot;none&quot;,textAlign:&quot;center&quot;,color:&quot;#fff&quot;,border:0,fontWeight:&quot;bold&quot;,textShadow:this.__input_textShadow+&quot;rgba(0,0,0,0.7)&quot;});a.bind(this.__saturation_field,&quot;mousedown&quot;,u);a.bind(this.__field_knob,&quot;mousedown&quot;,u);a.bind(this.__hue_field,&quot;mousedown&quot;,function(b){w(b);a.bind(window,
+&quot;mousemove&quot;,w);a.bind(window,&quot;mouseup&quot;,k)});this.__saturation_field.appendChild(y);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};q.superclass=f;c.extend(q.prototype,f.prototype,{updateDisplay:function(){var a=e(this.getValue());if(!1!==a){var f=!1;
+c.each(d.COMPONENTS,function(b){if(!c.isUndefined(a[b])&amp;&amp;!c.isUndefined(this.__color.__state[b])&amp;&amp;a[b]!==this.__color.__state[b])return f=!0,{}},this);f&amp;&amp;c.extend(this.__color.__state,a)}c.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var l=.5&gt;this.__color.v||.5&lt;this.__color.s?255:0,p=255-l;c.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+&quot;px&quot;,marginTop:100*(1-this.__color.v)-7+&quot;px&quot;,backgroundColor:this.__temp.toString(),border:this.__field_knob_border+&quot;rgb(&quot;+l+
+&quot;,&quot;+l+&quot;,&quot;+l+&quot;)&quot;});this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+&quot;px&quot;;this.__temp.s=1;this.__temp.v=1;b(this.__saturation_field,&quot;left&quot;,&quot;#fff&quot;,this.__temp.toString());c.extend(this.__input.style,{backgroundColor:this.__input.value=this.__color.toString(),color:&quot;rgb(&quot;+l+&quot;,&quot;+l+&quot;,&quot;+l+&quot;)&quot;,textShadow:this.__input_textShadow+&quot;rgba(&quot;+p+&quot;,&quot;+p+&quot;,&quot;+p+&quot;,.7)&quot;})}});var l=[&quot;-moz-&quot;,&quot;-o-&quot;,&quot;-webkit-&quot;,&quot;-ms-&quot;,&quot;&quot;];return q}(dat.controllers.Controller,dat.dom.dom,dat.color.Color=function(f,a,d,e){function c(a,
+b,c){Object.defineProperty(a,b,{get:function(){if(&quot;RGB&quot;===this.__state.space)return this.__state[b];p(this,b,c);return this.__state[b]},set:function(a){&quot;RGB&quot;!==this.__state.space&amp;&amp;(p(this,b,c),this.__state.space=&quot;RGB&quot;);this.__state[b]=a}})}function b(a,b){Object.defineProperty(a,b,{get:function(){if(&quot;HSV&quot;===this.__state.space)return this.__state[b];q(this);return this.__state[b]},set:function(a){&quot;HSV&quot;!==this.__state.space&amp;&amp;(q(this),this.__state.space=&quot;HSV&quot;);this.__state[b]=a}})}function p(b,c,d){if(&quot;HEX&quot;===
+b.__state.space)b.__state[c]=a.component_from_hex(b.__state.hex,d);else if(&quot;HSV&quot;===b.__state.space)e.extend(b.__state,a.hsv_to_rgb(b.__state.h,b.__state.s,b.__state.v));else throw&quot;Corrupted color state&quot;;}function q(b){var c=a.rgb_to_hsv(b.r,b.g,b.b);e.extend(b.__state,{s:c.s,v:c.v});e.isNaN(c.h)?e.isUndefined(b.__state.h)&amp;&amp;(b.__state.h=0):b.__state.h=c.h}var l=function(){this.__state=f.apply(this,arguments);if(!1===this.__state)throw&quot;Failed to interpret color arguments&quot;;this.__state.a=this.__state.a||
+1};l.COMPONENTS=&quot;r g b h s v hex a&quot;.split(&quot; &quot;);e.extend(l.prototype,{toString:function(){return d(this)},toOriginal:function(){return this.__state.conversion.write(this)}});c(l.prototype,&quot;r&quot;,2);c(l.prototype,&quot;g&quot;,1);c(l.prototype,&quot;b&quot;,0);b(l.prototype,&quot;h&quot;);b(l.prototype,&quot;s&quot;);b(l.prototype,&quot;v&quot;);Object.defineProperty(l.prototype,&quot;a&quot;,{get:function(){return this.__state.a},set:function(a){this.__state.a=a}});Object.defineProperty(l.prototype,&quot;hex&quot;,{get:function(){&quot;HEX&quot;!==!this.__state.space&amp;&amp;(this.__state.hex=
+a.rgb_to_hex(this.r,this.g,this.b));return this.__state.hex},set:function(a){this.__state.space=&quot;HEX&quot;;this.__state.hex=a}});return l}(dat.color.interpret,dat.color.math=function(){var f;return{hsv_to_rgb:function(a,d,e){var c=a/60-Math.floor(a/60),b=e*(1-d),f=e*(1-c*d);d=e*(1-(1-c)*d);a=[[e,d,b],[f,e,b],[b,e,d],[b,f,e],[d,b,e],[e,b,f]][Math.floor(a/60)%6];return{r:255*a[0],g:255*a[1],b:255*a[2]}},rgb_to_hsv:function(a,d,e){var c=Math.min(a,d,e),b=Math.max(a,d,e),c=b-c;if(0==b)return{h:NaN,s:0,v:0};
+a=(a==b?(d-e)/c:d==b?2+(e-a)/c:4+(a-d)/c)/6;0&gt;a&amp;&amp;(a+=1);return{h:360*a,s:c/b,v:b/255}},rgb_to_hex:function(a,d,e){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,d);return a=this.hex_with_component(a,0,e)},component_from_hex:function(a,d){return a&gt;&gt;8*d&amp;255},hex_with_component:function(a,d,e){return e&lt;&lt;(f=8*d)|a&amp;~(255&lt;&lt;f)}}}(),dat.color.toString,dat.utils.common),dat.color.interpret,dat.utils.common),dat.utils.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||
+window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(f,a){window.setTimeout(f,1E3/60)}}(),dat.dom.CenteredDiv=function(f,a){var d=function(){this.backgroundElement=document.createElement(&quot;div&quot;);a.extend(this.backgroundElement.style,{backgroundColor:&quot;rgba(0,0,0,0.8)&quot;,top:0,left:0,display:&quot;none&quot;,zIndex:&quot;1000&quot;,opacity:0,WebkitTransition:&quot;opacity 0.2s linear&quot;,transition:&quot;opacity 0.2s linear&quot;});f.makeFullscreen(this.backgroundElement);this.backgroundElement.style.position=
+&quot;fixed&quot;;this.domElement=document.createElement(&quot;div&quot;);a.extend(this.domElement.style,{position:&quot;fixed&quot;,display:&quot;none&quot;,zIndex:&quot;1001&quot;,opacity:0,WebkitTransition:&quot;-webkit-transform 0.2s ease-out, opacity 0.2s linear&quot;,transition:&quot;transform 0.2s ease-out, opacity 0.2s linear&quot;});document.body.appendChild(this.backgroundElement);document.body.appendChild(this.domElement);var d=this;f.bind(this.backgroundElement,&quot;click&quot;,function(){d.hide()})};d.prototype.show=function(){var d=this;this.backgroundElement.style.display=
+&quot;block&quot;;this.domElement.style.display=&quot;block&quot;;this.domElement.style.opacity=0;this.domElement.style.webkitTransform=&quot;scale(1.1)&quot;;this.layout();a.defer(function(){d.backgroundElement.style.opacity=1;d.domElement.style.opacity=1;d.domElement.style.webkitTransform=&quot;scale(1)&quot;})};d.prototype.hide=function(){var a=this,c=function(){a.domElement.style.display=&quot;none&quot;;a.backgroundElement.style.display=&quot;none&quot;;f.unbind(a.domElement,&quot;webkitTransitionEnd&quot;,c);f.unbind(a.domElement,&quot;transitionend&quot;,c);f.unbind(a.domElement,
+&quot;oTransitionEnd&quot;,c)};f.bind(this.domElement,&quot;webkitTransitionEnd&quot;,c);f.bind(this.domElement,&quot;transitionend&quot;,c);f.bind(this.domElement,&quot;oTransitionEnd&quot;,c);this.backgroundElement.style.opacity=0;this.domElement.style.opacity=0;this.domElement.style.webkitTransform=&quot;scale(1.1)&quot;};d.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-f.getWidth(this.domElement)/2+&quot;px&quot;;this.domElement.style.top=window.innerHeight/2-f.getHeight(this.domElement)/2+&quot;px&quot;};return d}(dat.dom.dom,dat.utils.common),
+dat.dom.dom,dat.utils.common);
</ins><span class="cx">\ No newline at end of file
</span><span class="cx">Property changes on: trunk/Websites/webkit.org/demos/spring/dat.gui.min.js
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+native
</ins><span class="cx">\ No newline at end of property
</span><a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<ins>+Date Revision
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/plain
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkWebsiteswebkitorgdemosspringindexhtml"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/demos/spring/index.html (202667 => 202668)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/demos/spring/index.html        2016-06-30 04:24:52 UTC (rev 202667)
+++ trunk/Websites/webkit.org/demos/spring/index.html        2016-06-30 04:39:55 UTC (rev 202668)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/style&gt;
</span><del>-&lt;script src=&quot;https://raw.github.com/dataarts/dat.gui/master/build/dat.gui.min.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;dat.gui.min.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;spring.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>