on master help sign in
Add the very important Signal library :P

Remove past versions of the RTS.

commit10f0a244494433f299fe8767f11fad7ad1ae6c0d authorevancz <info@elm-lang.org> dateSun 10 Mar 2013, 19:03 (14 years ago) parent29a2ec3
6 files changed+36−5056
compiler/elm-runtime-0.5.0.2.js−123 compiler/elm-runtime-0.6.0.3.js−134 compiler/elm-runtime-0.7.1.1.js−142 compiler/elm-runtime-0.7.2.js−4522 compiler/elm-runtime-0.7.js−135 libraries/Signal.elm+36
compiler/elm-runtime-0.5.0.2.jsdeleted−123
@@ -1,123 +0,0 @@
1−var Guid=function(){var d=0;return{guid:function(){return d+=1}}}(),Elm=Elm||{};
2−Elm.JavaScript=function(){function d(a){for(var b=["Nil"],l=a.length;l--;)b=["Cons",a[l],b];return b}function a(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b}function g(a){return a.slice(1)}function i(a){return["Tuple"+a.length].concat(a)}return{castJSBoolToBool:function(a){return a},castBoolToJSBool:function(a){return a},castJSNumberToFloat:function(a){return a},castFloatToJSNumber:function(a){return a},castJSNumberToInt:function(a){return~~a},castIntToJSNumber:function(a){return a},
3−Experimental:{castJSElementToElement:function(a){return function(b){return function(l){return["Element",Guid.guid(),["EExternalHtml",l],a,b,1,Nothing,Nothing]}}},castElementToJSElement:function(a){return Render.render(a)}},castJSArrayToList:d,castListToJSArray:a,castJSStringToString:d,castStringToJSString:function(g){return"string"===typeof g?g:a(g).join("")},castTupleToJSTuple2:g,castTupleToJSTuple3:g,castTupleToJSTuple4:g,castTupleToJSTuple5:g,castJSTupleToTuple2:i,castJSTupleToTuple3:i,castJSTupleToTuple4:i,
4−castJSTupleToTuple5:i}}();var Elm=Elm||{},JSjson=JSON;
5−Elm.JSON=function(){function d(b,a){return function(h){return function(e){var c=i.castStringToJSString(h);return e[1].hasOwnProperty(c)&&(e=e[1][c],e[0]===b)?e[1]:a}}}function a(b){return function(a){function h(b){switch(b[0]){case "JsonNull":return null;case "JsonString":return i.castStringToJSString(b[1]);case "JsonObject":var c={},b=b[1][1],f;for(f in b)c[f]=h(b[f]);return c;case "JsonArray":c=i.castListToJSArray(b[1]);for(f=c.length;f--;)c[f]=h(c[f]);return c;default:return b[1]}}return JSjson.stringify(h(["JsonObject",
6−a]),null,i.castStringToJSString(b))}}function g(b){function a(b){switch(typeof b){case "string":return["JsonString",i.castJSStringToString(b)];case "number":return["JsonNumber",i.castJSNumberToFloat(b)];case "boolean":return["JsonBool",i.castJSBoolToBool(b)];case "object":if(null===b)return["JsonNull"];for(var c in b)b[c]=a(b[c]);return b instanceof Array?["JsonArray",i.castJSArrayToList(b)]:["JsonObject",["JSON",b]]}}var b=JSjson.parse(b),h;for(h in b)b[h]=a(b[h]);return["JSON",b]}var i=Elm.JavaScript,
7−j=["JSON",{}];return{empty:j,singleton:function(b){return function(a){var h={};h[i.castStringToJSString(b)]=a;return["JSON",h]}},insert:function(b){return function(a){return function(h){var h=h[1],e={},c;for(c in h)e[c]=h[c];e[i.castStringToJSString(b)]=a;return["JSON",e]}}},lookup:function(b){return function(a){var h=i.castStringToJSString(b);return a[1].hasOwnProperty(h)?Just(a[1][h]):Nothing}},findString:d("JsonString",["Nil"]),findObject:d("JsonObject",j),findArray:d("JsonArray",["Nil"]),findWithDefault:function(b){return function(a){return function(h){var e=
8−i.castStringToJSString(a);return h[1].hasOwnProperty(e)?h[1][e]:b}}},remove:function(b){return function(a){var a=a[1],h={},e;for(e in a)h[e]=a[e];delete h[i.castStringToJSString(b)];return["JSON",h]}},toPrettyJSString:a,toJSString:a(""),fromJSString:g,toPrettyString:function(b){return function(g){return i.castJSStringToString(a(b)(g))}},toString:function(b){return i.castJSStringToString(a("")(b))},fromString:function(b){return g(i.castStringToJSString(b))},toList:function(b){var b=b[1],a=[],h;for(h in b)a.push(Value.Tuple(i.castJSStringToString(h),
9−b[h]));return i.castJSArrayToList(a)},fromList:function(b){for(var b=i.castListToJSArray(b),a={},h=b.length;h--;)a[i.castStringToJSString(b[h][1])]=b[h][2];return["JSON",a]},JsonString:function(b){return["JsonString",b]},JsonNumber:function(b){return["JsonNumber",b]},JsonBool:function(b){return["JsonBool",b]},JsonNull:["JsonNull"],JsonArray:function(b){return["JsonArray",b]},JsonObject:function(b){return["JsonObject",b]}}}();
10−var Value=function(){function d(b){if(0==b.length)return b;for(var b=b.replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\n/g,"<br/>"),b=b.split("<br/>"),a=b.length;a--;){var h=b,e=a,c;c=b[a];if(0!=c.length){c=c.split("");" "==c[0]&&(c[0]="&nbsp;");for(var f=c.length;--f;)" "==c[f][0]&&" "==c[f-1]&&(c[f-1]+=c[f],c[f]="");for(f=c.length;f--;)if(1<c[f].length&&" "==c[f][0]){for(var n=c[f].split(""),g=n.length-2;0<=g;g-=2)n[g]="&nbsp;";c[f]=n.join("")}c=
11−c.join("");c=" "===c[c.length-1]?c.slice(0,-1)+"&nbsp;":c}h[e]=c}return b.join("<br/>")}var a=function(b,g){if("object"===typeof b){if(b===g)return!0;if(b.length!==g.length)return!1;for(var h=b.length;h--;)if(!a(b[h],g[h]))return!1;return!0}return b===g},g=function(b){if("boolean"===typeof b)return b?"True":"False";if("number"!==typeof b){if("string"===typeof b&&2>b.length)return"'"+b+"'";if(b[0]){if("Tuple"===b[0].substring(0,5)){for(var a="",h=b.length;--h;)a=","+g(b[h])+a;","===a[0]&&(a=a.substring(1));
12−return"("+a+")"}if("Cons"===b[0])for(var h="string"===typeof b[1]?'"':"]",e="string"===typeof b[1]?"":",",c="string"===typeof b[1]?function(c){return c}:g,a=("string"===typeof b[1]?'"':"[")+c(b[1]),b=b[2];;)if("Cons"===b[0])a+=e+c(b[1]),b=b[2];else return a+h;else{if("Nil"===b[0])return"[]";if("JSON"===b[0])return"(JSON.fromList "+g(Elm.JSON.toList(b))+")";if("RBNode"===b[0]||"RBEmpty"===b[0])return"(Map.fromList "+g(Elm.Dict.fold(function(c){return function(b){return function(a){return["Cons",["Tuple2",
13−c,b],a]}}})(["Nil"])(b))+")";a="";for(h=b.length;--h;)a=" "+g(b[h])+a;a=b[0]+a;return 1<b.length?"("+a+")":a}}}return b+""},i=function(b){for(var a=["Nil"],h=b.length;h--;)a=["Cons",b[h],a];return a},j;j=document.addEventListener?function(b,a,h){b.addEventListener(a,h,!1)}:function(b,a,h){b.attachEvent("on"+a,h)};return{eq:a,str:i,show:function(b){return i(g(b))},Tuple:function(){var b=arguments.length,a=Array(b+1);for(a[0]="Tuple"+arguments.length;b--;)a[b+1]=arguments[b];return a},append:function(b,
14−a){if("string"===typeof b&&"string"===typeof a)return b.concat(a);if("Nil"===b[0])return a;for(var h=["Cons",b[1],["Nil"]],e=h,b=b[2];"Cons"===b[0];)e[2]=["Cons",b[1],["Nil"]],b=b[2],e=e[2];e[2]=a;return h},listToArray:function(b){for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return a},toText:function(b){if("string"===typeof b)return d(b);for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return d(a.join(""))},properEscape:d,getTextSize:function(b,a,h){var e=document.createElement("div");e.innerHTML=
15−h;e.style.textAlign="left";0<b&&(e.style.width=b+"px");e.style.visibility="hidden";e.style.styleFloat="left";e.style.cssFloat="left";document.body.appendChild(e);h=window.getComputedStyle(e);b=h.getPropertyValue("width").slice(0,-2)-0;h=h.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(e);delete e;return[Math.ceil(b),Math.ceil(Math.max(a,h))]},getSize:function(b){b=b.cloneNode(!0);b.style.visibility="hidden";b.style.styleFloat="left";b.style.cssFloat="left";document.body.appendChild(b);
16−var a=b.offsetWidth,h=b.offsetHeight;document.body.removeChild(b);delete b;return[a,h]},getExcess:function(b){b=b.cloneNode(!0);b.style.visibility="hidden";b.style.styleFloat="left";b.style.cssFloat="left";document.body.appendChild(b);var a=b.offsetWidth,h=b.offsetHeight,e=window.getComputedStyle(b),c=e.getPropertyValue("width").slice(0,-2)-0,e=e.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(b);delete b;return[a-c,h-e]},groupForms:function(b){for(var b=Elm.JavaScript.castListToJSArray(b),
17−a=[],h=[],e=b.length;e--;){var c=b[e];switch(c[4][0]){case "FElement":0<h.length&&(a.push(h),h=[]);a.push(c);break;default:h.push(c)}}0<h.length&&a.push(h);return a},wrap:function(a){var g=Value.getSize(a);return["Element",Guid.guid(),["EHtml",a],g[0],g[1],1,Nothing,Nothing]},addListener:j}}(),Elm=Elm||{};
18−Elm.List=function(){function d(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&c("map");for(var f=["Cons",a(b[1]),["Nil"]],e=f,b=b[2];"Cons"===b[0];)e[2]=["Cons",a(b[1]),["Nil"]],b=b[2],e=e[2];return f}}function a(a){return function(b){return function(f){var e=b;if("Nil"===f[0])return e;for("Cons"!==f[0]&&c("foldl");"Cons"===f[0];)e=a(f[1])(e),f=f[2];return e}}}function g(a){return function(b){return function(f){var e=b;if("Nil"===f[0])return e;"Cons"!==f[0]&&c("foldr");for(var n=[];"Cons"===
19−f[0];)n.push(f[1]),f=f[2];for(f=n.length;f--;)e=a(n[f])(e);return e}}}function i(c){return function(b){var f;"Cons"!==b[0]?f=void 0:(f=b[1],b=b[2],f=a(c)(f)(b));return f}}function j(b){return function(a){return function(f){if("Nil"===f[0])return["Cons",a,["Nil"]];"Cons"!==f[0]&&c("scanl");for(var e=[a];"Cons"===f[0];)a=b(f[1])(a),e.push(a),f=f[2];for(var f=["Nil"],n=e.length;n--;)f=["Cons",e[n],f];return f}}}function b(c){return function(a){a:{for(var f=[function(c){return"Nil"!==c[0]?void 0:["Tuple2",
20−["Nil"],["Nil"]]},function(a){if("Cons"===a[0]){var f=a[1],a=a[2];var e=b(c)(a);"Tuple2"!==e[0]?f=void 0:(a=e[1],e=e[2],f=c(f)?["Tuple2",["Cons",f,a],e]:["Tuple2",a,["Cons",f,e]]);return f}}],e=f.length;e--;){var n=f[e](a);if(void 0!==n){a=n;break a}}a=void 0}return a}}function l(c){a:{for(var a=[function(c){return"Nil"!==c[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(c){if("Cons"!==c[0])c=void 0;else if(c=["Tuple2",c[1],l(c[2])],"Tuple2"!==c[0]||"Tuple2"!==c[1][0])c=void 0;else var a=c[1][1],b=
21−c[1][2],c="Tuple2"!==c[2][0]?void 0:["Tuple2",["Cons",a,c[2][1]],["Cons",b,c[2][2]]];return c}],b=a.length;b--;){var f=a[b](c);if(void 0!==f){c=f;break a}}c=void 0}return c}function h(c){return function(a){a:{for(var b=[function(c){return"Nil"!==c[0]?void 0:["Nil"]},function(c){if("Cons"===c[0]){var a=c[1];return"Nil"!==c[2][0]?void 0:["Cons",a,["Nil"]]}},function(a){if("Cons"===a[0]){var b=a[1];if("Cons"===a[2][0]){var f=a[2][1],a=a[2][2];return["Cons",b,["Cons",c,h(c)(["Cons",f,a])]]}}}],f=b.length;f--;){var e=
22−b[f](a);if(void 0!==e){a=e;break a}}a=void 0}return a}}function e(c){return function(a){a:{for(var b=[function(c){return"Nil"!==c[0]?void 0:["Nil"]},function(c){if("Cons"===c[0]){var a=c[1];return"Nil"!==c[2][0]?void 0:a}},function(a){if("Cons"===a[0]){var b=a[1];if("Cons"===a[2][0]){var f=a[2][1],a=a[2][2];return Value.append(b,Value.append(c,e(c)(["Cons",f,a])))}}}],f=b.length;f--;){var n=b[f](a);if(void 0!==n){a=n;break a}}a=void 0}return a}}var c=function(c){throw"Function '"+c+"' expecting a list!";
23−},f=a(function(c){return function(a){return["Cons",c,a]}})(["Nil"]),n=g(function(c){return function(a){return Value.append(c,a)}})(["Nil"]),m=a(function(c){return function(a){return c&&a}})(!0),s=a(function(c){return function(a){return c||a}})(!1),p=a(function(c){return function(a){return c+a}})(0),k=a(function(c){return function(a){return c*a}})(1),u=i(function(c){return function(a){return Math.max(c,a)}}),x=i(function(c){return function(a){return Math.min(c,a)}});return{head:function(c){if("Cons"!==
24−c[0])throw"Error: 'head' only accepts lists of length greater than one.";return c[1]},tail:function(c){if("Cons"!==c[0])throw"Error: 'tail' only accepts lists of length greater than one.";return c[2]},last:function(c){if("Cons"!==c[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var a=c[1];"Cons"===c[0];)a=c[1],c=c[2];return a},map:d,foldl:a,foldr:g,foldl1:i,foldr1:function(a){return function(b){if("Nil"===b[0])throw"'foldr1' requires an non-empty list.";"Cons"!==b[0]&&
25−c("foldr1");for(var f=[];"Cons"===b[0];)f.push(b[1]),b=b[2];for(var b=f.pop(),e=f.length;e--;)b=a(f[e])(b);return b}},scanl:j,scanl1:function(c){return function(a){if("Cons"!==a[0])throw"Error: 'scanl1' requires a list of at least length 1.";return j(c)(a[1])(a[2])}},filter:function(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&c("filter");for(var f=[];"Cons"===b[0];)a(b[1])&&f.push(b[1]),b=b[2];for(var b=["Nil"],e=f.length;e--;)b=["Cons",f[e],b];return b}},length:function(c){for(var a=
26−0;"Cons"===c[0];)a+=1,c=c[2];return a},reverse:f,concat:n,concatMap:function(c){return function(a){return n(d(c)(a))}},and:m,or:s,all:function(c){return a(function(a){return function(b){return b&&c(a)}})(!0)},any:function(c){return a(function(a){return function(b){return b||c(a)}})(!1)},sum:p,product:k,maximum:u,minimum:x,partition:b,zipWith:function(a){return function(b){return function(f){if("Nil"===b[0]||"Nil"===f[0])return["Nil"];("Cons"!==b[0]||"Cons"!==f[0])&&c("zipWith");for(var e=[];"Cons"===
27−b[0]&&"Cons"===f[0];)e.push(a(b[1])(f[1])),b=b[2],f=f[2];for(var f=["Nil"],n=e.length;n--;)f=["Cons",e[n],f];return f}}},zip:function(a){return function(b){if("Nil"===a[0]||"Nil"===b[0])return["Nil"];("Cons"!==a[0]||"Cons"!==b[0])&&c("zip");for(var f=[];"Cons"===a[0]&&"Cons"===b[0];)f.push(["Tuple2",a[1],b[1]]),a=a[2],b=b[2];for(var b=["Nil"],e=f.length;e--;)b=["Cons",f[e],b];return b}},unzip:l,intersperse:h,intercalate:e,sort:function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&c("sort");for(var b=
28−[];"Cons"===a[0];)b.push(a[1]),a=a[2];b.sort(function(c,a){return c-a});for(var a=["Nil"],f=b.length;f--;)a=["Cons",b[f],a];return a},take:function(a){return function(b){if(0>=a)return["Nil"];if("Nil"===b[0])return b;"Cons"!==b[0]&&c("take");var f=["Cons",b[1],["Nil"]],e=f,b=b[2];for(--a;"Cons"===b[0]&&0<a;)e[2]=["Cons",b[1],["Nil"]],e=e[2],b=b[2],--a;return f}},drop:function(a){return function(b){if("Nil"===b[0])return b;for("Cons"!==b[0]&&c("drop");"Cons"===b[0]&&0<a;)b=b[2],--a;return b}}}}();
29−Elm=Elm||{};
30−Elm.Maybe=function(){function d(a){return function(d){return"Just"===a[0]?["Cons",a[1],d]:d}}function a(a){return function(d){return function(j){var b=a(d);return"Just"===b[0]?["Cons",b[1],j]:j}}}return{Just:function(a){return["Just",a]},Nothing:["Nothing"],catMaybes:Elm.List.foldr(d)(["Nil"]),isJust:function(a){return"Just"===a[0]},isNothing:function(a){return"Nothing"===a[0]},fromMaybe:function(a){return function(d){return"Just"===d[0]?d[1]:a}},consMaybe:d,mapMaybe:function(g){return Elm.List.foldr(a(g))(["Nil"])},maybe:function(a){return function(d){return function(j){return"Just"===
31−j[0]?d(j[1]):a}}}}}();
32−(function(){for(var d in Elm)this[d]=Elm[d];if(Elm.Dict)throw"Module name collision, 'Dict' is already defined.";Elm.Dict=function(){function a(a){return function(c){return function(b){return function(f){return function(e){return["RBNode",a,c,b,f,e]}}}}}function g(a){return function(){switch(a[0]){case "RBEmpty":return z(Value.str("(min RBEmpty) is not defined"));case "RBNode":switch(a[4][0]){case "RBEmpty":return["Tuple2",a[2],a[3]]}return g(a[4])}throw"Non-exhaustive pattern match in case";}()}
33−function d(a){return function(c){var b;a:{switch(c[0]){case "RBEmpty":b=Nothing;break a;case "RBNode":b=function(){switch(compare(a)(c[2])[0]){case "EQ":return Just(c[3]);case "GT":return d(a)(c[5]);case "LT":return d(a)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return b}}function j(a){return function(c){return function(b){var f;a:{switch(b[0]){case "RBEmpty":f=a;break a;case "RBNode":f=function(){switch(compare(c)(b[2])[0]){case "EQ":return b[3];
34−case "GT":return j(a)(c)(b[5]);case "LT":return j(a)(c)(b[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return f}}}function b(a){return function(c){return A(d(a)(c))}}function l(c){a:{switch(c[0]){case "RBNode":switch(c[5][0]){case "RBNode":c=a(c[1])(c[5][2])(c[5][3])(a(w)(c[2])(c[3])(c[4])(c[5][4]))(c[5][5]);break a}}c=z(Value.str("rotateLeft of a node without enough children"))}return c}function h(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":c=
35−a(c[1])(c[4][2])(c[4][3])(c[4][4])(a(w)(c[2])(c[3])(c[4][5])(c[5]));break a}}c=z(Value.str("rotateRight of a node without enough children"))}return c}function e(c){a:{switch(c[0]){case "Black":c=w;break a;case "Red":c=C;break a}throw"Non-exhaustive pattern match in case";}return c}function c(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[5][0]){case "RBNode":c=a(e(c[1]))(c[2])(c[3])(a(e(c[4][1]))(c[4][2])(c[4][3])(c[4][4])(c[4][5]))(a(e(c[5][1]))(c[5][2])(c[5][3])(c[5][4])(c[5][5]));
36−break a}}}c=z(Value.str("color_flip called on a RBEmpty or RBNode with a RBEmpty child"))}return c}function f(a){a:switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=l(a);break a}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=h(a);break a}}}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=
37−c(a);break a}}}}}return a}function n(c){a:switch(c[0]){case "RBNode":switch(c[1][0]){case "Red":c=a(C)(c[2])(c[3])(c[4])(c[5]);break a}}return c}function m(c){return function(b){return function(e){var h=function(e){var n;a:{switch(e[0]){case "RBEmpty":n=a(w)(c)(b)(y)(y);break a;case "RBNode":n=function(){switch(compare(c)(e[2])[0]){case "EQ":return a(e[1])(e[2])(b)(e[4])(e[5]);case "GT":return a(e[1])(e[2])(e[3])(e[4])(h(e[5]));case "LT":return a(e[1])(e[2])(e[3])(h(e[4]))(e[5])}throw"Non-exhaustive pattern match in case";
38−}();n=f(n);break a}throw"Non-exhaustive pattern match in case";}return n};return n(h(e))}}}function s(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[4][1][0]){case "Red":c=!0;break a}}}c=!1}return c}function p(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[4][4][0]){case "RBNode":switch(c[4][4][1][0]){case "Red":c=!0;break a}}}}c=!1}return c}function k(b){if(not(s(b))&&not(p(b))){b=c(b);a:switch(b[0]){case "RBNode":b:switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":b=
39−c(l(a(b[1])(b[2])(b[3])(b[4])(h(b[5]))));break b}}}break a}}return b}function u(b){return function(e){var d;a:{switch(e[0]){case "RBEmpty":d=y;break a;case "RBNode":if("LT"===compare(b)(e[2])[0]){d=k(e);b:{switch(d[0]){case "RBEmpty":d=z(Value.str("delLT on RBEmpty"));break b;case "RBNode":d=f(a(d[1])(d[2])(d[3])(del(d[4]))(d[5]));break b}break}}else{e=s(e)?h(e):e;b:{switch(e[0]){case "RBNode":switch(e[5][0]){case "RBEmpty":e=eq(b,e[2]);break b}}e=!1}if(e)d=y;else{var e=not,i;b:{switch(d[0]){case "RBNode":switch(d[5][0]){case "RBNode":switch(d[5][1][0]){case "Red":i=
40−!0;break b}}}i=!1}if(e=e(i)){e=not;b:{switch(d[0]){case "RBNode":switch(d[5][0]){case "RBNode":switch(d[5][4][0]){case "RBNode":switch(d[5][4][1][0]){case "Red":i=!0;break b}}}}i=!1}e=e(i)}e&&(d=c(d),d=p(d)?c(h(d)):d);b:{switch(d[0]){case "RBNode":e=eq(b,d[2]);break b}e=!1}if(e)b:{switch(d[0]){case "RBEmpty":d=z(Value.str("delEQ called on a RBEmpty"));break b;case "RBNode":i=g(d[5]);c:{switch(i[0]){case "Tuple2":e=i[1];break c}break}c:{switch(i[0]){case "Tuple2":i=i[2];break c}break}var e=a(d[1])(e)(i)(d[4]),
41−j=function(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBEmpty":c=y;break a}}c=k(c);b:{switch(c[0]){case "RBEmpty":c=y;break b;case "RBNode":c=f(a(c[1])(c[2])(c[3])(j(c[4]))(c[5]));break b}throw"Non-exhaustive pattern match in case";}}return c};d=n(j(d[5]));d=f(e(d));break b}break}else b:{switch(d[0]){case "RBEmpty":d=z(Value.str("delGT called on a RBEmpty"));break b;case "RBNode":d=f(a(d[1])(d[2])(d[3])(d[4])(del(d[5])));break b}break}}}break a}throw"Non-exhaustive pattern match in case";
42−}return n(d)}}function x(c){return function(b){a:{switch(b[0]){case "RBEmpty":b=y;break a;case "RBNode":b=a(b[1])(b[2])(c(b[3]))(x(c)(b[4]))(x(c)(b[5]));break a}throw"Non-exhaustive pattern match in case";}return b}}function q(c){return function(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=a;break a;case "RBNode":b=q(c)(c(b[2])(b[3])(q(c)(a)(b[4])))(b[5]);break a}throw"Non-exhaustive pattern match in case";}return b}}}function r(c){return function(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=
43−a;break a;case "RBNode":b=r(c)(c(b[2])(b[3])(r(c)(a)(b[5])))(b[4]);break a}throw"Non-exhaustive pattern match in case";}return b}}}var t=[],v;for(v in Elm.Prelude)0<=t.indexOf(v)||(this[v]=Elm.Prelude[v]);var A=Elm.Maybe.isJust,w=["Red"],C=["Black"],y=["RBEmpty"],B=y,z=console.log;return{empty:B,lookup:d,findWithDefault:j,member:b,insert:m,singleton:function(c){return function(a){return m(c)(a)(y)}},remove:u,map:x,foldl:q,foldr:r,union:function(c){return function(a){return q(m)(a)(c)}},intersect:function(c){return function(a){return q(function(c){return function(f){return function(e){return b(c)(a)?
44−m(c)(f)(e):e}}})(B)(c)}},diff:function(c){return function(a){return q(function(c){return function(){return function(a){return u(c)(a)}}})(c)(a)}},keys:function(c){return q(function(c){return function(){return function(a){return["Cons",c,a]}}})(["Nil"])(c)},values:function(c){return q(function(){return function(c){return function(a){return["Cons",c,a]}}})(["Nil"])(c)},toList:function(c){return q(function(c){return function(a){return function(b){return["Cons",["Tuple2",c,a],b]}}})(["Nil"])(c)},fromList:function(c){return List.foldl(uncurry(m))(B)(c)}}}()})();
45−(function(){for(var d in Elm)this[d]=Elm[d];Elm.Set=function(){var a=[],d;for(d in Elm.Prelude)0<=a.indexOf(d)||(this[d]=Elm.Prelude[d]);a=Dict.empty;d=Dict.remove;var i=Dict.member,j=Dict.union,b=Dict.intersect,l=Dict.diff,h=Dict.keys,e=List.foldl(function(c){return function(a){return Dict.insert(c)(["Tuple0"])(a)}})(a);return{empty:a,singleton:function(c){return Dict.singleton(c)(["Tuple0"])},insert:function(c){return Dict.insert(c)(["Tuple0"])},remove:d,member:i,union:j,intersect:b,diff:l,toList:h,
46−fromList:e,foldl:function(c){return Dict.foldl(function(a){return function(){return function(b){return c(a)(b)}}})},foldr:function(c){return Dict.foldr(function(a){return function(){return function(b){return c(a)(b)}}})},map:function(c){return function(a){a=h(a);return e(List.map(c)(a))}}}}()})();Elm=Elm||{};
47−Elm.Char=function(){function d(a,b){return function(d){d=d.charCodeAt(0);return a<=d&&d<=b}}var a=d(48,57),g=d(97,102),i=d(65,70);return{fromCode:function(a){return String.fromCharCode(a)},toCode:function(a){return a.charCodeAt(0)},toUpper:function(a){return a.toUpperCase()},toLower:function(a){return a.toLowerCase()},toLocaleUpper:function(a){return a.toLocaleUpperCase()},toLocaleLower:function(a){return a.toLocaleLowerCase()},isLower:d(97,122),isUpper:d(65,90),isDigit:a,isOctDigit:d(48,55),isHexDigit:function(d){return a(d)||
48−g(d)||i(d)}}}();Elm=Elm||{};
49−Elm.Color=function(){return{rgba:function(d){return function(a){return function(g){return function(i){return["Color",d,a,g,i]}}}},rgb:function(d){return function(a){return function(g){return["Color",d,a,g,1]}}},red:["Color",255,0,0,1],green:["Color",0,255,0,1],blue:["Color",0,0,255,1],yellow:["Color",255,255,0,1],cyan:["Color",0,255,255,1],magenta:["Color",255,0,255,1],black:["Color",0,0,0,1],white:["Color",255,255,255,1],gray:["Color",128,128,128,1],grey:["Color",128,128,128,1],complement:function(d){var a,
50−g=d[1]/255;a=d[2]/255;var i=d[3]/255,d=Math.max(g,a,i),j=Math.min(g,a,i),j=d-j,b=0;0===j?b=0:d===g?b=(a-i)/j%6:d===a?b=(i-g)/j+2:d===i&&(b=(g-a)/j+4);a=60*b;var g=d*(0===d?0:j/d),b=(a+180)%360/60,l=g*(1-Math.abs(b%2-1)),j=i=a=0;0<=b&&1>b?(a=g,i=l,j=0):1<=b&&2>b?(a=l,i=g,j=0):2<=b&&3>b?(a=0,i=g,j=l):3<=b&&4>b?(a=0,i=l,j=g):4<=b&&5>b?(a=l,i=0,j=g):5<=b&&6>b&&(a=g,i=0,j=l);d-=g;return["Color",Math.round(255*(a+d)),Math.round(255*(i+d)),Math.round(255*(j+d)),1]},extract:function(d){return 1===d[4]?"rgb("+
51−d[1]+","+d[2]+","+d[3]+")":"rgba("+d[1]+","+d[2]+","+d[3]+","+d[4]+")"}}}();
52−var Collage=function(){function d(a,c){var b=c.length-1;if(!(0>=b))for(a.moveTo(c[b][1],c[b][2]);b--;)a.lineTo(c[b][1],c[b][2])}function a(a,c,b,d){0===a.length&&(a=[8,4]);var h=d.length-1;if(!(0>=h)){var g=d[h][1],i=d[h][2],k=0,j=0,l=0,q=0,r=0,t=0,v=a.length,A=!0,w=a[0];for(c.moveTo(g,i);h--;){k=d[h][1];j=d[h][2];l=k-g;q=j-i;for(r=Math.sqrt(l*l+q*q);w<=r;)g+=l*w/r,i+=q*w/r,c[A?"lineTo":"moveTo"](g,i),l=k-g,q=j-i,r=Math.sqrt(l*l+q*q),A=!A,t=(t+1)%v,w=a[t];0<r&&(c[A?"lineTo":"moveTo"](k,j),w-=r);g=
53−k;i=j}}c.strokeStyle=Elm.Color.extract(b);c.stroke()}function g(b,c,f,n,g){c.clearRect(0,0,f,n);for(f=g.length;f--;){var i=g[f],p=b,n=c,k=i[1],j=i[2],l=i[3][1],q=i[3][2],i=i[4];n.save();(0!==l||0!==q)&&n.translate(l,q);k!==~~k&&n.rotate(2*Math.PI*k);1!==j&&n.scale(j,j);n.beginPath();switch(i[0]){case "FLine":a:switch(p=n,k=i,i=k[3][1],k[1][0]){case "Solid":k=k[2];d(p,i);p.strokeStyle=Elm.Color.extract(k);p.stroke();break;case "Dotted":a([3,3],p,k[2],i);break a;case "Dashed":a([8,4],p,k[2],i);break a;
54−case "Custom":a(k[1][1],p,k[2],i)}break;case "FShape":a:switch(l=p,j=n,p=i[1],k=i[2],i=i[3][1],p[0]){case "Filled":p=j;d(p,i);p.fillStyle=Elm.Color.extract(k);p.fill();break a;case "Outlined":p=j;d(p,i);p.strokeStyle=Elm.Color.extract(k);p.stroke();break a;case "Textured":k=l;p=p[1];l=new Image;l.src=h.castStringToJSString(p);l.onload=k;d(j,i);j.fillStyle=j.createPattern(l,"repeat");j.fill();break a;case "CustomOutline":a(p[1],j,k,i)}break;case "FImage":k=n,j=i[1],l=i[2],i=i[3],q=new Image,q.onload=
55−p,q.src=h.castStringToJSString(i),k.drawImage(q,-j/2,-l/2,j,l)}n.restore()}}function i(a,c,b){var d=Render.newElement("canvas");d.style.width=~~a+"px";d.style.height=~~c+"px";d.style.display="block";d.width=~~a;d.height=~~c;if(d.getContext){var h=d.getContext("2d"),a=d.width,c=d.height;g(function(){g(this,h,a,c,b)},h,a,c,b);return d}d.innerHTML="Your browser does not support the canvas element.";return d}function j(a,c,b,d,h,i,g){var k=Render.render(g),b="translate("+(h-g[3]/2)+"px,"+(i-g[4]/2)+"px) "+
56−(1===d?"":"scale("+d+","+d+")")+" "+(b===~~b?"":"rotate("+360*b+"deg)");k.style.transform=b;k.style.msTransform=b;k.style.MozTransform=b;k.style.webkitTransform=b;k.style.OTransform=b;b=Render.newElement("div");Render.addTo(b,k);b.style.width=~~a+"px";b.style.height=~~c+"px";b.style.overflow="hidden";return b}function b(a,c,b){if(!Value.eq(b,c)){var d=a.style.width.slice(0,-2)-0,h=a.style.height.slice(0,-2)-0;if("object"===typeof b[0]){if("object"===typeof c[0]&&a.getContext){var l=a.getContext("2d");
57−return g(function(){g(this,l,d,h,b)},l,d,h,b)}c=i(d,h,b);c.style.position="absolute";return a.parentNode.replaceChild(c,a)}c=j(d,h,b[1],b[2],b[3][1],b[3][2],b[4][1]);c.style.position="absolute";return a.parentNode.replaceChild(c,a)}}function l(a,c,b,d,h){var i=0,g,k=(a[1]-d[1])/b,a=(a[2]-d[2])/b;0!==c&&(c*=-2*Math.PI,b=k*Math.cos(c)-a*Math.sin(c),a=k*Math.sin(c)+a*Math.cos(c),k=b);if(0===h.length)return!1;g=h[0];for(b=h.length-1;b--;){c=h[b];d=g[1];g=g[2];var j=c[1],l=c[2];if(g<l)var q=g,r=l;else q=
58−l,r=g;if(d<j)var t=d,v=j;else t=j,v=d;q<a&&a<=r&&k<=v&&(k<=t||k<=(a-g)*(j-d)/(l-g)+d)&&++i;g=c}return 1===i%2}var h=Elm.JavaScript;return{collage:function(a,c,b){if(0===b.length)return i(a,c,[]);for(var d=Array(b.length),h=b.length;h--;){var g=b[h];d[h]="string"===typeof g[0]?j(a,c,g[1],g[2],g[3][1],g[3][2],g[4][1]):i(a,c,g)}return 1===b.length?d[0]:Render.flowWith(Render.goIn,function(c){return c},d)},updateCollage:function(a,c,f){if(1===f.length)return b(a,c[0],f[0]);for(var a=a.childNodes,d=a.length,
59−h=d;h--;)b(a[d-h-1],c[h],f[h])},insideForm:function(a){return function(c){var b=a[1],d=a[2];if(6>c.length){var h=c[3][1],g=c[3][2],i=0,j=c[2];switch(c[4][0]){case "FShape":for(var u=c[4][3][1],x=u.length;--x;)var q=u[x],i=Math.max(i,q[1]*q[1]+q[2]*q[2]);i*=j*j;break;case "FImage":u=j*c[4][1]/2;j=j*c[4][2]/2;i=u*u+j*j;break;case "FElement":u=j*c[4][1][3]/2,j=j*c[4][1][4]/2,i=u*u+j*j}c.push(function(c,a){var b=c-h,f=a-g;return b*b+f*f<i+1})}if(!c[5](b,d))return!1;var r,t;switch(c[4][0]){case "FShape":return l(a,
60−c[1],c[2],c[3],c[4][3][1]);case "FLine":return!1;case "FImage":r=c[4][1]/2;t=c[4][2]/2;break;case "FElement":r=c[4][1][3]/2,t=c[4][1][4]/2}return l(a,c[1],c[2],c[3],[[null,r,t],[null,-r,t],[null,-r,-t],[null,r,-t],[null,r,t]])}}}}(),Elm=Elm||{};
61−Elm.Graphics=function(){function d(c){return function(a){return["Position",c,a]}}function a(c){return function(a){return["EText",c,a]}}function g(c){return function(a){return["EFlow",c,k.castListToJSArray(a)]}}function i(c){return["Line",k.castListToJSArray(c)]}function j(c){return function(a){var b=k.castListToJSArray(c);0<b.length&&b.push(b[0]);return["Shape",b,a]}}function b(c){return function(a){return function(b){return function(f){return["Form",c,a,b,f]}}}}function l(c){return function(a){return function(b){return["FLine",
62−c,a,b]}}}function h(c){return function(a){return function(b){return["FShape",c,a,b]}}}function e(c,a,b,f,d,e){return["Element",Guid.guid(),c,a,b,f,d,e]}function c(c,a,b){return["Element",Guid.guid(),c,a,b,1,Nothing,Nothing]}function f(c){return~~c[3]}function n(c){return~~c[4]}function m(a){return function(b){return function(f){return c(["EImage",k.castStringToJSString(f)],a,b)}}}function s(a){return function(b){return c(A,a,b)}}function p(c){return function(a){return function(b){var f=map(function(b){return["Tuple2",
63−c/2*cos(2*(pi/50)*b),a/2*sin(2*(pi/50)*b)]}),d=49,e=["Nil"];if(0<=d){do e=["Cons",d,e];while(0<d--)}return j(f(e))(b)}}}var k=Elm.JavaScript,u=["DRight"],x=["DDown"],q=["DOut"],r=["Near"],t=["Mid"],v=["Far"],A=["EEmpty"],w=["Solid"],C=["Dotted"],y=["Dashed"],B=["Filled"],z=["Outlined"],D=d(r)(r),E=d(v)(r),F=d(r)(v),G=d(v)(v),H=d(r)(t),I=d(v)(t),r=d(t)(r),v=d(t)(v),t=d(t)(t);return{left:["DLeft"],right:u,down:x,up:["DUp"],inward:["DIn"],outward:q,topLeft:D,topRight:E,bottomLeft:F,bottomRight:G,midLeft:H,
64−midRight:I,midTop:r,midBottom:v,middle:t,middleAt:function(c){return function(a){return["PositionAt",c,a]}},topLeftAt:function(c){return function(a){return["PositionTL",c,a]}},topRightAt:function(c){return function(a){return["PositionTR",c,a]}},bottomLeftAt:function(c){return function(a){return["PositionBL",c,a]}},bottomRightAt:function(c){return function(a){return["PositionBR",c,a]}},absolute:function(c){return["Absolute",c]},relative:function(c){return["Relative",c]},width:function(c){return function(a){var b=
65−a[2];switch(b[0]){case "EImage":case "EVideo":return e(a[2],c,a[4]*c/a[3],a[5],a[6],a[7]);case "EText":return b=Value.getTextSize(c,a[4],b[2]),e(a[2],c,b[1],a[5],a[6],a[7])}return e(a[2],c,a[4],a[5],a[6],a[7])}},height:function(a){return function(c){switch(c[2][0]){case "EImage":case "EVideo":return e(c[2],c[3]*a/c[4],a,c[5],c[6],c[7])}return e(c[2],c[3],a,c[5],c[6],c[7])}},size:function(c){return function(a){return function(b){return e(b[2],c,a,b[5],b[6],b[7])}}},opacity:function(c){return function(a){return e(a[2],
66−a[3],a[4],c,a[6],a[7])}},color:function(c){return function(a){return e(a[2],a[3],a[4],a[5],Just(c),a[7])}},link:function(a){return function(c){return e(c[2],c[3],c[4],c[5],c[6],Just(k.castStringToJSString(a)))}},widthOf:f,heightOf:n,sizeOf:function(c){return["Tuple2",~~c[3],~~c[4]]},text:function(b){var f=Value.getTextSize(0,0,b);return c(a("left")(b),f[0],f[1])},asText:function(b){var b=monospace(Value.toText(Value.show(b))),f=Value.getTextSize(0,0,b);return c(a("left")(b),f[0],f[1])},plainText:function(b){var b=
67−Value.toText(b),f=Value.getTextSize(0,0,b);return c(a("left")(b),f[0],f[1])},centeredText:function(b){var f=Value.getTextSize(0,0,b);return c(a("center")(b),f[0],f[1])},justifiedText:function(b){var f=Value.getTextSize(0,0,b);return c(a("justify")(b),f[0],f[1])},rightedText:function(b){var f=Value.getTextSize(0,0,b);return c(a("right")(b),f[0],f[1])},image:m,images:function(c){var a=Elm.Signal.constant(s(0)(0)),c=Elm.Signal.lift(function(c){var c=k.castStringToJSString(c),b=new Image;b.onload=function(){Dispatcher.notify(a.id,
68−m(this.width)(this.height)(c))};b.src=c})(c);return Elm.Signal.lift2(function(c){return function(){return c}})(a)(c)},video:function(a){return function(b){return function(f){return c(["EVideo",k.castStringToJSString(f)],a,b)}}},fittedImage:function(a){return function(b){return function(f){return c(["EFittedImage",k.castStringToJSString(f)],a,b)}}},flow:function(a){return function(b){var d;d=map(f)(b);a:{switch(a[0]){case "DLeft":d=sum(d);break a;case "DRight":d=sum(d);break a}d=maximum(d)}var e;e=
69−map(n)(b);a:{switch(a[0]){case "DDown":e=sum(e);break a;case "DUp":e=sum(e);break a}e=maximum(e)}return c(g(a)(b),d,e)}},above:function(a){return function(b){return c(g(x)(["Cons",a,["Cons",b,["Nil"]]]),max(~~a[3])(~~b[3]),~~a[4]+~~b[4])}},below:function(a){return function(b){return c(g(x)(["Cons",b,["Cons",a,["Nil"]]]),max(~~a[3])(~~b[3]),~~a[4]+~~b[4])}},beside:function(a){return function(b){return c(g(u)(["Cons",a,["Cons",b,["Nil"]]]),~~a[3]+~~b[3],max(~~a[4])(~~b[4]))}},layers:function(a){return c(g(q)(a),
70−maximum(map(f)(a)),maximum(map(n)(a)))},collage:function(a){return function(b){return function(f){return c(["ECollage",a,b,Value.groupForms(f)],a,b)}}},spacer:s,container:function(a){return function(b){return function(f){return function(d){return c(["EContainer",f,d],a,b)}}}},line:i,segment:function(a){return function(c){return i(["Cons",a,["Cons",c,["Nil"]]])}},polygon:j,rect:function(a){return function(c){return function(b){return j(["Cons",["Tuple2",0-a/2,0-c/2],["Cons",["Tuple2",0-a/2,c/2],["Cons",
71−["Tuple2",a/2,c/2],["Cons",["Tuple2",a/2,0-c/2],["Nil"]]]]])(b)}}},oval:p,circle:function(a){return p(2*a)(2*a)},ngon:function(a){return function(c){return function(b){var f=toFloat(a),d=map(function(a){return["Tuple2",c*cos(2*(pi/f)*a),c*sin(2*(pi/f)*a)]}),e=a-1,h=["Nil"];if(0<=e){do h=["Cons",e,h];while(0<e--)}return j(d(h))(b)}}},solid:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(l(w)(a)(c))}},dotted:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(l(C)(a)(c))}},dashed:function(a){return function(c){return b(0)(1)(["Tuple2",
72−0,0])(l(y)(a)(c))}},customLine:function(a){return function(c){return function(f){return b(0)(1)(["Tuple2",0,0])(l(["Custom",k.castListToJSArray(a)])(c)(f))}}},filled:function(a){return function(c){return b(0)(1)(c[2])(h(B)(a)(c))}},outlined:function(a){return function(c){return b(0)(1)(c[2])(h(z)(a)(c))}},customOutline:function(a){return function(c){return function(f){return b(0)(1)(f[2])(h(["CustomOutline",k.castListToJSArray(a)])(c)(f))}}},textured:function(a){return function(c){return b(0)(1)(c[2])(h(["Textured",
73−a])(null)(c))}},sprite:function(a){return function(c){return function(f){return function(d){return b(0)(1)(d)(["FImage",c,f,k.castStringToJSString(a)])}}}},toForm:function(a){return function(c){return b(0)(1)(a)(["FElement",c])}},rotate:function(a){return function(c){a:{switch(c[0]){case "Form":var f=c[2],d=c[3],e=c[4],c=b(a+c[1])(f)(d)(e);break a}throw"Non-exhaustive pattern match in case";}return c}},scale:function(a){return function(c){return b(c[1])(a*c[2])(c[3])(c[4])}},move:function(a){return function(c){return function(f){var d;
74−a:{switch(f[0]){case "Form":d=f[1];var e=f[2],h=f[3],f=f[4];switch(h[0]){case "Tuple2":var g=h[1],h=h[2];d=b(d)(e)(["Tuple2",a+g,c+h])(f);break a}}throw"Non-exhaustive pattern match in case";}return d}}},isWithin:Collage.insideForm}}();Elm=Elm||{};
75−Elm.Text=function(){function d(a){return Value.toText(a)}var a=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},g=function(a,b){return function(d){return"<span style='"+a+":"+b+"'>"+d+"</span>"}},i=function(a){a=Elm.JavaScript.castStringToJSString(a);return g("font-family",a)},j=a("h1"),b=g("font-style","italic"),a=a("b"),l=g("text-decoration","underline"),h=g("text-decoration","overline"),e=g("text-decoration","line-through");return{fromString:d,toText:d,header:j,
76−height:function(a){return g("font-size",a+"em")},italic:b,bold:a,underline:l,overline:h,strikeThrough:e,monospace:i("monospace"),typeface:i,color:function(a){return g("color",Elm.Color.extract(a))},link:function(a){return function(b){return"<a href='"+d(a)+"'>"+b+"</a>"}}}}();
77−var Render=function(){function d(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a}function a(a){return a}function g(a){a.style.styleFloat="left";a.style.cssFloat="left";return a}function i(a){a.style.position="absolute";return a}function j(a,b,e){for(var h=d("div"),g=e.length;g--;){var i=a(b(e[g]));h.appendChild(i)}return h}function b(a){switch(a[0]){case "Absolute":return a[1]+"px";case "Relative":return 100*a[1]+"%"}}function l(a,f){f.style.position="absolute";f.style.margin=
78−"auto";switch(a[0]){case "Position":"Far"!==a[1][0]&&(f.style.left=0);"Near"!==a[1][0]&&(f.style.right=0);"Far"!==a[2][0]&&(f.style.top=0);"Near"!==a[2][0]&&(f.style.bottom=0);break;case "PositionAt":f.style.top=b(a[2]);f.style.left=b(a[1]);var d="translate("+-elem[3]/2+"px,"+-elem[4]/2+"px)";f.style.transform=d;f.style.msTransform=d;f.style.MozTransform=d;f.style.webkitTransform=d;f.style.OTransform=d;break;default:d=a[0].slice(-2),f.style["T"===d[0]?"top":"bottom"]=b(a[2]),f.style["L"===d[1]?"left":
79−"right"]=b(a[1])}}function h(c){var b={};switch(c[2][0]){case "EText":var b=c[2][1],e=c[2][2],m=d("div");m.innerHTML=e;m.style.textAlign=b;b=m;break;case "EImage":b=c[2][1];e=d("img");e.src=b;e.name=b;e.style.display="block";b=e;break;case "EVideo":m=c[2][1];b=d("video");b.controls="controls";e=d("source");e.src=m;m=m.split(".");e.type="video/"+m[m.length-1];b.appendChild(e);b.style.display="block";break;case "EFittedImage":var s=c[3],p=c[4],b=c[2][1],e=d("div");e.style.width=s+"px";e.style.height=
80−p+"px";e.style.position="relative";e.style.overflow="hidden";var k=d("img");k.onload=function(){k.style.position="absolute";k.style.margin="auto";var a=s,b=p;s/p>this.width/this.height?b=Math.round(this.height*s/this.width):a=Math.round(this.width*p/this.height);k.style.width=a+"px";k.style.height=b+"px";k.style.left=(s-a)/2+"px";k.style.top=(p-b)/2+"px"};k.src=b;k.name=b;e.appendChild(k);b=e;break;case "EFlow":a:{b=c[2][2];switch(c[2][1][0]){case "DDown":b=b.slice(0).reverse();case "DUp":b=j(a,h,
81−b);break a;case "DRight":b=b.slice(0).reverse();case "DLeft":b=j(g,h,b);break a;case "DOut":b=b.slice(0).reverse();case "DIn":b=j(i,h,b);break a}b=void 0}break;case "ECollage":b=Collage.collage(c[2][1],c[2][2],c[2][3]);break;case "EEmpty":b=d("div");break;case "EContainer":e=c[2][1];b=h(c[2][2]);l(e,b);e=d("div");e.style.position="relative";e.style.overflow="hidden";e.appendChild(b);b=e;break;case "EHtml":b=c[2][1];"button"!==b.type&&(e=Value.getExcess(b),c[3]-=e[0],c[4]-=e[1]);break;case "EExternalHtml":b=
82−d("div"),b.appendChild(c[2][1])}b.id=c[1];b.style.width=~~c[3]+"px";b.style.height=~~c[4]+"px";1!==c[5]&&(b.style.opacity=c[5]);"Just"===c[6][0]&&(b.style.backgroundColor=Elm.Color.extract(c[6][1]));return"Just"===c[7][0]?(e=d("a"),e.href=c[7][1],e.appendChild(b),e):b}function e(b,d,j){"A"===b.tagName&&(b=b.firstChild);if(d[1]!==j[1]){if(d[2][0]!==j[2][0])return b.parentNode.replaceChild(h(j),b);var m=j[2],s=d[2];switch(m[0]){case "EText":m[1]!==s[1]&&(b.style.textAlign=m[1]);m[2]!==s[2]&&(b.innerHTML=
83−m[2]);break;case "EImage":m[1]!==s[1]&&(b.src=m[1]);break;case "EVideo":case "EFittedImage":if(!Value.eq(m,s)||j[3]!==d[3]||j[4]!==d[4])return b.parentNode.replaceChild(h(j),b);break;case "ECollage":if(m[1]!==s[1]||m[2]!==s[2]||m[3].length!==s[3].length)return b.parentNode.replaceChild(h(j),b);Collage.updateCollage(b,s[3],m[3]);break;case "EFlow":if(m[1]!==s[1])return b.parentNode.replaceChild(h(j),b);var p=m[2],k=b.childNodes;if(p.length!==k.length)return b.parentNode.replaceChild(h(j),b);var s=
84−s[2],u={};switch(m[1][0]){case "DDown":case "DUp":u=a;break;case "DRight":case "DLeft":u=g;break;case "DOut":case "DIn":u=i}for(m=k.length;m--;)e(k[m],s[m],p[m]),u(k[m]);break;case "EContainer":e(b.childNodes[0],s[2],m[2]);l(m[1],b.childNodes[0]);break;case "EHtml":j[1]!==d[1]&&(p=h(j),b.parentNode.replaceChild(p,b),b=p);"button"!==p.type&&(m=Value.getExcess(b),j[3]-=m[0],j[4]-=m[1]);break;case "EExternalHtml":j[1]!==d[1]&&b.parentNode.replaceChild(h(j),b)}j[3]!==d[3]&&(b.style.width=~~j[3]+"px");
85−j[4]!==d[4]&&(b.style.height=~~j[4]+"px");j[5]!==d[5]&&(b.style.opacity=j[5]);2===j[6].length&&(m=Elm.Color.extract(j[6][1]),m!==b.style.backgroundColor&&(b.style.backgroundColor=m));if(2===j[7].length&&(1===d[7].length||j[7][1]!==d[7][1]))b.parentNode.href=j[7][1];j[1]=d[1]}}return{render:h,update:e,addTo:function(a,b){a.appendChild(b)},newElement:d,flowWith:j,goIn:i}}(),Elm=Elm||{};
86−Elm.Signal=function(){var d=function(a,b,d){for(var h=a.kids,g=h.length;g--;)h[g].recv(b,d,a.id)},a=function(a){this.id=Guid.guid();this.value=a;this.kids=[];this.defaultNumberOfKids=0;this.recv=function(a,b,e){if(b=b===this.id)this.value=e;d(this,a,b);return b};Dispatcher.inputs.push(this)},g=function(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.count=0;this.changed=!1;b.reverse();this.recalc=function(){for(var d=a,f=b.length;f--;)d=d(b[f].value);this.value=d};this.recalc();this.recv=
87−function(a,e){this.count+=1;e&&(this.changed=!0);this.count==b.length&&(this.changed&&this.recalc(),d(this,a,this.changed),this.changed=!1,this.count=0)};for(var f=b.length;f--;)b[f].kids.push(this)},i=function(a,b,f,h){this.id=Guid.guid();this.value=f?b(h.value):b;this.kids=[];this.recv=function(b,c){c&&(this.value=a(h.value)(this.value));d(this,b,c)};h.kids.push(this)},j=function(a,b,f){this.id=Guid.guid();this.value=a(f.value)?b:f.value;this.kids=[];this.recv=function(b,c){var h=c&&!a(f.value);
88−h&&(this.value=f.value);d(this,b,h)};f.kids.push(this)},b=function(a){this.id=Guid.guid();this.value=a.value;this.kids=[];this.recv=function(b,f){var h=f&&!eq(this.value,a.value);h&&(this.value=a.value);d(this,b,h)};a.kids.push(this)},l=function(a){return function(b){return function(d){d=new g(function(a){return function(b){return[a,b]}},[a,d]);d=new j(function(a){return a[0]},[!0,b],d);return new g(function(a){return a[1]},[d])}}},h=function(a,b){this.id=Guid.guid();this.value=b.value;this.kids=
89−[];this.count=0;this.changed=!1;this.recv=function(f,h,g){g===a.id&&(this.changed=h);this.count+=1;2==this.count&&(this.changed&&(this.value=b.value),d(this,f,this.changed),this.count=0,this.changed=!1)};a.kids.push(this);b.kids.push(this)};return{constant:function(b){return new a(b)},lift:function(a){return function(b){return new g(a,[b])}},lift2:function(a){return function(b){return function(d){return new g(a,[b,d])}}},lift3:function(a){return function(b){return function(d){return function(h){return new g(a,
90−[b,d,h])}}}},lift4:function(a){return function(b){return function(d){return function(h){return function(i){return new g(a,[b,d,h,i])}}}}},foldp:function(a){return function(b){return function(d){return new i(a,b,!1,d)}}},foldp_:function(a){return function(b){return function(d){return new i(a,b,!0,d)}}},foldp1:function(a){return function(b){return new i(a,function(a){return a},!0,b)}},count:function(a){return new i(function(){return function(a){return a+1}},0,!1,a)},keepIf:function(a){return function(b){return function(d){return new j(function(b){return!a(b)},
91−b,d)}}},dropIf:function(a){return function(b){return function(d){return new j(a,b,d)}}},keepWhen:function(a){return l(new g(function(a){return!a},[a]))},dropWhen:l,dropRepeats:function(a){return new b(a)},sampleOn:function(a){return function(b){return new h(a,b)}}}}();
92−var Dispatcher=function(){function d(a){if(!a.hasOwnProperty("defaultNumberOfKids"))return!0;var g=a.kids.length;if(0==g)return!1;if(g>a.defaultNumberOfKids)return!0;for(var h=!1;g--;)h=h||d(a.kids[g]);return h}var a=null,g=0,i=[],j=null;return{initialize:function(){a=Elm.main();a.hasOwnProperty("recv")||(a=Elm.Signal.constant(a));j=a.value;for(var b=[],g=i.length;g--;)d(i[g])&&b.push(i[g]);i=b;document.getElementById("content").appendChild(Render.render(j));b=document.getElementById("widthChecker").offsetWidth;
93−b!==window.innerWidth&&Dispatcher.notify(Window.dimensions.id,Value.Tuple(b,window.innerHeight));a=Elm.Signal.lift(function(a){var b=document.getElementById("content");Render.update(b.firstChild,j,a);return j=a})(a)},notify:function(a,d){g+=1;for(var h=!1,e=i.length;e--;)h=i[e].recv(g,a,d)||h;return h},inputs:i}}();
94−Elm.HTTP=function(){function d(a){return function(d){return function(c){return function(f){return{"0":"Request",length:1,verb:b.castStringToJSString(a),url:b.castStringToJSString(d),data:null===c?null:b.castStringToJSString(c),headers:f}}}}}function a(a){return d("GET")(a)(null)(["Nil"])}function g(a,d){return function(c){if(""!==c.url){var f={value:["Waiting"]};a.push(f);var g=null;window.ActiveXObject&&(g=new ActiveXObject("Microsoft.XMLHTTP"));window.XMLHttpRequest&&(g=new XMLHttpRequest);g.onreadystatechange=
95−function(){4===g.readyState&&(f.value=200===g.status?["Success",l(g.responseText)]:["Failure",g.status,l(g.statusText)],setTimeout(function(){i(a,d)},0))};g.open(c.verb,c.url,!0);Elm.List.map(function(a){g.setRequestHeader(b.castStringToJSString(a[1]),b.castStringToJSString(a[2]))})(c.headers);g.send(c.data)}}}function i(a,b){0<a.length&&(Dispatcher.notify(b.id,a[0].value),"Waiting"!==a[0].value[0]&&(a.shift(),setTimeout(function(){i(a,b)},0)))}function j(a){var b=Elm.Signal.constant(["Waiting"]),
96−a=Elm.Signal.lift(g([],b))(a);return Elm.Signal.lift2(function(a){return function(){return a}})(b)(a)}var b=Elm.JavaScript,l=Elm.JavaScript.castJSStringToString;return{get:a,post:function(a){return function(b){return d("POST")(a)(b)(["Nil"])}},request:d,send:j,sendGet:function(b){return j(Elm.Signal.lift(a)(b))}}}();
97−Elm.Input=function(){var d=Elm.JavaScript,a=Elm.JavaScript.castJSStringToString,g=function(b,g){b.placeholder=d.castStringToJSString(g);var h=Elm.Signal.constant(["Nil"]);Value.addListener(b,"keyup",function(){Dispatcher.notify(h.id,a(b.value));b.focus()});b.style.padding="1px";return Value.Tuple(Value.wrap(b),h)},i=function(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a},j=function(a){for(var d=i("select"),g=[];"Cons"===a[0];){var e=i("option"),c=Value.toText(a[1][1]);
98−e.value=c;e.innerHTML=c;d.appendChild(e);g.push(a[1][2]);a=a[2]}var f=Elm.Signal.constant(g[0]);Value.addListener(d,"change",function(){Dispatcher.notify(f.id,g[d.selectedIndex])});return Value.Tuple(Value.wrap(d),f)};return{textArea:function(a){return function(d){var h=i("textarea");h.rows=d;h.cols=a;return g(h,"")}},textField:function(a){var d=i("input");d.type="text";return g(d,a)},password:function(a){var d=i("input");d.type="password";return g(d,a)},checkbox:function(a){var d=i("input");d.type=
99−"checkbox";d.checked=a;var g=Elm.Signal.constant(a);Value.addListener(d,"change",function(){Dispatcher.notify(g.id,d.checked)});return Value.Tuple(Value.wrap(d),g)},dropDown:j,stringDropDown:function(a){return j(Elm.List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var g=i("input");g.type="button";g.value=d.castStringToJSString(a);var h=Elm.Signal.constant(!1);Value.addListener(g,"click",function(){Dispatcher.notify(h.id,!0);Dispatcher.notify(h.id,!1)});return Value.Tuple(Value.wrap(g),
100−h)}}}();
101−Elm.Keyboard={Raw:function(){function d(a,g){return"Nil"===g[0]?g:g[1]===a?g[2]:["Cons",g[1],d(a,g[2])]}var a=Elm.Signal.constant(["Nil"]),g=Elm.Signal.constant(["Nothing"]);Value.addListener(document,"keydown",function(d){var g;a:{for(g=a.value;"Nil"!==g[0];){if(g[1]===d.keyCode){g=!0;break a}g=g[2]}g=!1}g||Dispatcher.notify(a.id,["Cons",d.keyCode,a.value])||this.removeEventListener("keydown",arguments.callee,!1)});Value.addListener(document,"keyup",function(g){var j=d(g.keyCode,a.value);Dispatcher.notify(a.id,
102−j)||this.removeEventListener("keyup",arguments.callee,!1)});Value.addListener(window,"blur",function(d){Dispatcher.notify(a.id,["Nil"])||this.removeEventListener("blur",arguments.callee,!1)});Value.addListener(document,"keypress",function(a){var d=Dispatcher.notify(g.id,["Just",a.charCode||a.keyCode]);Dispatcher.notify(g.id,["Nothing"]);d||this.removeEventListener("keypress",arguments.callee,!1)});return{keysDown:a,charPressed:g}}()};
103−Elm.Mouse=function(){function d(a){var b=0,c=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,c=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,c=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,c)}var a=Elm.Signal.constant(Value.Tuple(0,0));a.defaultNumberOfKids=2;var g=Elm.Signal.lift(function(a){return a[1]})(a);g.defaultNumberOfKids=0;var i=Elm.Signal.lift(function(a){return a[2]})(a);i.defaultNumberOfKids=
104−0;var j=Elm.Signal.constant(!1),b=Elm.Signal.constant(!1),l=Elm.Signal.constant(Value.Tuple());Value.addListener(document,"click",function(a){var d=Dispatcher.notify(b.id,!0),c=Dispatcher.notify(l.id,Value.Tuple());Dispatcher.notify(b.id,!1);!d&&!c&&this.removeEventListener("click",arguments.callee,!1)});Value.addListener(document,"mousedown",function(a){Dispatcher.notify(j.id,!0)||this.removeEventListener("mousedown",arguments.callee,!1)});Value.addListener(document,"mouseup",function(a){Dispatcher.notify(j.id,
105−!1)||this.removeEventListener("mouseup",arguments.callee,!1)});Value.addListener(document,"mousemove",function(b){Dispatcher.notify(a.id,d(b))||this.removeEventListener("mousemove",arguments.callee,!1)});return{position:a,x:g,y:i,isClicked:b,isDown:j,clicks:l,isClickedOn:function(a){var a=Render.render(a),b=Elm.Signal.constant(!1);Value.addListener(a,"click",function(){Dispatcher.notify(b.id,!0);Dispatcher.notify(b.id,!1)});return Value.Tuple(Value.wrap(a),b)}}}();
106−Elm.Random=function(){return{inRange:function(d){return function(a){return Elm.Signal.constant(Math.floor(Math.random()*(a-d+1))+d)}},randomize:function(d){return function(a){return function(g){return Elm.Signal.lift(function(){return Math.floor(Math.random()*(a-d+1))+d})(g)}}}}}();
107−Elm.Time=function(){return{every:function(d){var d=1E3*d,a=Elm.Signal.constant(0),g=0;setInterval(function(){g+=d;Dispatcher.notify(a.id,g/1E3)},d);return a},after:function(d){var d=1E3*d,a=Elm.Signal.constant(!1);setTimeout(function(){Dispatcher.notify(a.id,!0)},d);return a},before:function(d){var d=1E3*d,a=Elm.Signal.constant(!0);setTimeout(function(){Dispatcher.notify(a.id,!1)},d);return a}}}();
108−Elm.Window=function(){var d=Elm.Signal.constant(Value.Tuple(window.innerWidth,window.innerHeight));d.defaultNumberOfKids=2;var a=Elm.Signal.lift(function(a){return a[1]})(d);a.defaultNumberOfKids=0;var g=Elm.Signal.lift(function(a){return a[2]})(d);g.defaultNumberOfKids=0;Value.addListener(window,"resize",function(a){var g=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(d.id,Value.Tuple(g,window.innerHeight))||this.removeEventListener("resize",arguments.callee,!1)});return{dimensions:d,
109−width:a,height:g}}();Value.addListener(document,"elm_log",function(d){console.log(d.value)});Value.addListener(document,"elm_title",function(d){document.title=d.value});Value.addListener(document,"elm_redirect",function(d){0<d.value.length&&(window.location=d.value)});Elm=Elm||{};
110−Elm.Prelude=function(){var d=function(a){return function(g){var i=a%g,i=0==a?0:0<g?0<=a?i:i+g:-d(-a)(-g);return i==g?0:i}};return{eq:Value.eq,id:function(a){return a},not:function(a){return!a},fst:function(a){return a[1]},snd:function(a){return a[2]},rem:function(a){return function(d){return a%d}},div:function(a){return function(d){return~~(a/d)}},compare:function(a){return function(d){a="object"===typeof a?toText(a):a;d="object"===typeof d?toText(d):d;return[a===d?"EQ":a<d?"LT":"GT"]}},toFloat:function(a){return a},
111−round:function(a){return Math.round(a)},floor:function(a){return Math.floor(a)},ceiling:function(a){return Math.ceil(a)},truncate:function(a){return~~a},readInt:function(a){var a=JavaScript.castStringToJSString(a),d=a.length;if(0===d)return Nothing;var i=0;if("-"==a[0]){if(1===d)return Nothing;i=1}for(;i<d;++i)if(!Char.isDigit(a[i]))return Nothing;return Just(parseInt(a))},readFloat:function(a){var a=JavaScript.castStringToJSString(a),d=a.length;if(0===d)return Nothing;var i=0;if("-"==a[0]){if(1===
112−d)return Nothing;i=1}for(var j=0;i<d;++i)if(!Char.isDigit(a[i])){if("."===a[i]&&(j+=1,1>=j))continue;return Nothing}return Just(parseFloat(a))},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:function(a){return function(d){return Math.atan2(a,d)}},mod:d,min:function(a){return function(d){return Math.min(a,d)}},max:function(a){return function(d){return Math.max(a,d)}},flip:function(a){return function(d){return function(i){return a(i)(d)}}},
113−clamp:function(a){return function(d){return function(i){return Math.min(d,Math.max(a,i))}}},curry:function(a){return function(d){return function(i){return a(["Tuple2",d,i])}}},uncurry:function(a){return function(d){if("Tuple2"!==d[0])throw"Function was uncurry'd but was not given a pair.";return a(d[1])(d[2])}},logBase:function(a){return function(d){return Math.log(d)/Math.log(a)}},Just:Elm.Maybe.Just,Nothing:Elm.Maybe.Nothing,maybe:Elm.Maybe.maybe,map:Elm.List.map,filter:Elm.List.filter,head:Elm.List.head,
114−tail:Elm.List.tail,last:Elm.List.last,length:Elm.List.length,reverse:Elm.List.reverse,foldr:Elm.List.foldr,foldr1:Elm.List.foldr1,foldl:Elm.List.foldl,foldl1:Elm.List.foldl1,and:Elm.List.and,or:Elm.List.or,all:Elm.List.all,any:Elm.List.any,sum:Elm.List.sum,product:Elm.List.product,concat:Elm.List.concat,concatMap:Elm.List.concatMap,maximum:Elm.List.maximum,minimum:Elm.List.minimum,scanl:Elm.List.scanl,scanl1:Elm.List.scanl1,take:Elm.List.take,drop:Elm.List.drop,zip:Elm.List.zip,unzip:Elm.List.unzip,
115−lift:Elm.Signal.lift,lift2:Elm.Signal.lift2,lift3:Elm.Signal.lift3,lift4:Elm.Signal.lift4,foldp:Elm.Signal.foldp,foldp1:Elm.Signal.foldp1,foldp_:Elm.Signal.foldp_,constant:Elm.Signal.constant,count:Elm.Signal.count,keepIf:Elm.Signal.keepIf,dropIf:Elm.Signal.dropIf,keepWhen:Elm.Signal.keepWhen,dropWhen:Elm.Signal.dropWhen,dropRepeats:Elm.Signal.dropRepeats,sampleOn:Elm.Signal.sampleOn}}();
116−(function(){var d=function(a){for(var d in a)Elm.Prelude[d]=a[d]};d(Elm.Color);d(Elm.Text);d(Elm.Graphics);show=Value.show})();
117−(function(){for(var d in Elm)this[d]=Elm[d];Elm.Automaton=function(){function a(a){return["Automaton",a]}function d(a){return["DragFrom",a]}function i(b){return function(c){var d;a:{switch(b[0]){case "Automaton":d=b[1];break a}throw"Non-exhaustive pattern match in case";}var e;a:{switch(c[0]){case "Automaton":e=c[1];break a}throw"Non-exhaustive pattern match in case";}return a(function(a){var a=d(a),b;a:{switch(a[0]){case "Tuple2":b=a[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(a[0]){case "Tuple2":a=
118−a[2];break a}throw"Non-exhaustive pattern match in case";}var c=e(b);a:{switch(c[0]){case "Tuple2":b=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",b,i(a)(c)]})}}function j(b){return a(function(a){var c=unzip(map(function(b){a:{switch(b[0]){case "Automaton":b=b[1](a);break a}throw"Non-exhaustive pattern match in case";}return b})(b)),d;a:{switch(c[0]){case "Tuple2":d=c[1];break a}throw"Non-exhaustive pattern match in case";
119−}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",d,j(c)]})}function b(c){return a(function(a){return["Tuple2",c(a),b(c)]})}function l(b){return function(c){return a(function(a){a=c(a)(b);return["Tuple2",a,l(a)(c)]})}}function h(b){return function(c){return a(function(a){var d=c(a)(b);a:{switch(d[0]){case "Tuple2":a=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=d[2];break a}throw"Non-exhaustive pattern match in case";
120−}return["Tuple2",a,h(d)(c)]})}}function e(a){return function(b){a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":b=["Tuple2",a[1]-b[1],a[2]-b[2]];break b}break}break a}throw"Non-exhaustive pattern match in case";}return b}}function c(a){return function(b){var c;a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":var f=function(a){return["Tuple2",b[2],["Tuple2",a,b[2]]]};c=function(){switch(b[1][0]){case "DragFrom":var c;a[1]?c=["Tuple2",uncurry(move)(e(a[2])(b[1][1]))(b[2]),["Tuple2",
121−d(b[1][1]),b[2]]]:(c=uncurry(move)(e(a[2])(b[1][1]))(b[2]),c=["Tuple2",c,["Tuple2",m,c]]);return c;case "Ignore":return f(a[1]?s:m);case "Listen":return f(not(a[1])?m:isWithin(a[2])(b[2])?d(a[2]):s)}throw"Non-exhaustive pattern match in case";}();break b}break}break a}throw"Non-exhaustive pattern match in case";}return c}}var f=[],n;for(n in Elm.Prelude)0<=f.indexOf(n)||(this[n]=Elm.Prelude[n]);var m=["Listen"],s=["Ignore"],f=l(0)(function(){return function(a){return 1+a}});return{Automaton:a,run:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=
122−lift(fst)(foldp_(function(a){return function(b){a:{switch(b[0]){case "Tuple2":switch(b[2][0]){case "Automaton":b=b[2][1](a);break a}}throw"Non-exhaustive pattern match in case";}return b}})(a[1])(b));break a}throw"Non-exhaustive pattern match in case";}return b}},step:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return b}},composeAuto:i,combine:j,pure:b,init:l,init_:h,count:f,Listen:m,Ignore:s,DragFrom:d,vecSub:e,stepDrag:c,
123−draggable:function(a){return h(["Tuple2",m,a])(c)}}}()})();
compiler/elm-runtime-0.6.0.3.jsdeleted−134
@@ -1,134 +0,0 @@
1−Elm={};var Guid=function(){var e=0;return{guid:function(){return e+=1}}}();
2−Elm.JavaScript=function(){function e(a){for(var b=["Nil"],l=a.length;l--;)b=["Cons",a[l],b];return b}function j(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b}function a(a){return a.slice(1)}function d(a){return["Tuple"+a.length].concat(a)}return{castJSBoolToBool:function(a){return a},castBoolToJSBool:function(a){return a},castJSNumberToFloat:function(a){return a},castFloatToJSNumber:function(a){return a},castJSNumberToInt:function(a){return~~a},castIntToJSNumber:function(a){return a},
3−Experimental:{castJSElementToElement:function(a){return function(b){return function(l){return["Element",Guid.guid(),["EExternalHtml",l],a,b,1,Nothing,Nothing]}}},castElementToJSElement:function(a){return Render.render(a)}},castJSArrayToList:e,castListToJSArray:j,castJSStringToString:e,castStringToJSString:function(a){return"string"===typeof a?a:j(a).join("")},castTupleToJSTuple2:a,castTupleToJSTuple3:a,castTupleToJSTuple4:a,castTupleToJSTuple5:a,castJSTupleToTuple2:d,castJSTupleToTuple3:d,castJSTupleToTuple4:d,
4−castJSTupleToTuple5:d}}();var JSjson=window.JSON;
5−Elm.JSON=function(){function e(b,a){return function(h){return function(k){var f=d.castStringToJSString(h);return k[1].hasOwnProperty(f)&&(k=k[1][f],k[0]===b)?k[1]:a}}}function j(b){return function(a){function h(b){switch(b[0]){case "JsonNull":return null;case "JsonString":return d.castStringToJSString(b[1]);case "JsonObject":var f={},b=b[1][1],c;for(c in b)f[c]=h(b[c]);return f;case "JsonArray":f=d.castListToJSArray(b[1]);for(c=f.length;c--;)f[c]=h(f[c]);return f;default:return b[1]}}return JSjson.stringify(h(["JsonObject",
6−a]),null,d.castStringToJSString(b))}}function a(b){function a(b){switch(typeof b){case "string":return["JsonString",d.castJSStringToString(b)];case "number":return["JsonNumber",d.castJSNumberToFloat(b)];case "boolean":return["JsonBool",d.castJSBoolToBool(b)];case "object":if(null===b)return["JsonNull"];for(var f in b)b[f]=a(b[f]);return b instanceof Array?["JsonArray",d.castJSArrayToList(b)]:["JsonObject",["JSON",b]]}}var b=JSjson.parse(b),h;for(h in b)b[h]=a(b[h]);return["JSON",b]}var d=Elm.JavaScript,
7−i=["JSON",{}];return{empty:i,singleton:function(b){return function(a){var h={};h[d.castStringToJSString(b)]=a;return["JSON",h]}},insert:function(b){return function(a){return function(h){var h=h[1],k={},f;for(f in h)k[f]=h[f];k[d.castStringToJSString(b)]=a;return["JSON",k]}}},lookup:function(b){return function(a){var h=d.castStringToJSString(b);return a[1].hasOwnProperty(h)?["Just",a[1][h]]:["Nothing"]}},findString:e("JsonString",["Nil"]),findObject:e("JsonObject",i),findArray:e("JsonArray",["Nil"]),
8−findWithDefault:function(b){return function(a){return function(h){var k=d.castStringToJSString(a);return h[1].hasOwnProperty(k)?h[1][k]:b}}},remove:function(b){return function(a){var a=a[1],h={},k;for(k in a)h[k]=a[k];delete h[d.castStringToJSString(b)];return["JSON",h]}},toPrettyJSString:j,toJSString:j(""),fromJSString:a,toPrettyString:function(b){return function(a){return d.castJSStringToString(j(b)(a))}},toString:function(b){return d.castJSStringToString(j("")(b))},fromString:function(b){return a(d.castStringToJSString(b))},
9−toList:function(b){var b=b[1],a=[],h;for(h in b)a.push(Value.Tuple(d.castJSStringToString(h),b[h]));return d.castJSArrayToList(a)},fromList:function(b){for(var b=d.castListToJSArray(b),a={},h=b.length;h--;)a[d.castStringToJSString(b[h][1])]=b[h][2];return["JSON",a]},JsonString:function(b){return["JsonString",b]},JsonNumber:function(b){return["JsonNumber",b]},JsonBool:function(b){return["JsonBool",b]},JsonNull:["JsonNull"],JsonArray:function(b){return["JsonArray",b]},JsonObject:function(b){return["JsonObject",
10−b]}}}();
11−var Value=function(){function e(b){if(0==b.length)return b;for(var b=b.replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\n/g,"<br/>"),b=b.split("<br/>"),a=b.length;a--;){var h=b,d=a,f;f=b[a];if(0!=f.length){f=f.split("");" "==f[0]&&(f[0]="&nbsp;");for(var c=f.length;--c;)" "==f[c][0]&&" "==f[c-1]&&(f[c-1]+=f[c],f[c]="");for(c=f.length;c--;)if(1<f[c].length&&" "==f[c][0]){for(var g=f[c].split(""),r=g.length-2;0<=r;r-=2)g[r]="&nbsp;";f[c]=g.join("")}f=f.join("");
12−f=" "===f[f.length-1]?f.slice(0,-1)+"&nbsp;":f}h[d]=f}return b.join("<br/>")}var j=function(b,a){if("object"===typeof b){if(b===a)return!0;if(b.length!==a.length)return!1;for(var h=b.length;h--;)if(!j(b[h],a[h]))return!1;return!0}return b===a},a=function(b){if("boolean"===typeof b)return b?"True":"False";if("number"!==typeof b){if("string"===typeof b&&2>b.length)return"'"+b+"'";if(b[0]){if("Tuple"===b[0].substring(0,5)){for(var d="",h=b.length;--h;)d=","+a(b[h])+d;","===d[0]&&(d=d.substring(1));return"("+
13−d+")"}if("Cons"===b[0])for(var h="string"===typeof b[1]?'"':"]",k="string"===typeof b[1]?"":",",f="string"===typeof b[1]?function(b){return b}:a,d=("string"===typeof b[1]?'"':"[")+f(b[1]),b=b[2];;)if("Cons"===b[0])d+=k+f(b[1]),b=b[2];else return d+h;else{if("Nil"===b[0])return"[]";if("JSON"===b[0])return"(JSON.fromList "+a(Elm.JSON.toList(b))+")";if("RBNode"===b[0]||"RBEmpty"===b[0])return b=Elm.Dict.foldr(function(b){return function(a){return function(f){return["Cons",["Tuple2",b,a],f]}}})(["Nil"])(b),
14−d="Dict","Cons"===b[0]&&"Tuple0"===b[1][2][0]&&(d="Set",b=Elm.List.map(function(b){return b[1]})(b)),"("+d+".fromList "+a(b)+")";d="";for(h=b.length;--h;)d=" "+a(b[h])+d;d=b[0]+d;return 1<b.length?"("+d+")":d}}}return b+""},d=function(b){for(var a=["Nil"],d=b.length;d--;)a=["Cons",b[d],a];return a},i;i=document.addEventListener?function(b,a,d){b.addEventListener(a,d,!1)}:function(b,a,d){b.attachEvent("on"+a,d)};return{eq:j,str:d,show:function(b){return d(a(b))},Tuple:function(){var b=arguments.length,
15−a=Array(b+1);for(a[0]="Tuple"+arguments.length;b--;)a[b+1]=arguments[b];return a},append:function(b,a){if("string"===typeof b&&"string"===typeof a)return b.concat(a);if("Nil"===b[0])return a;for(var d=["Cons",b[1],["Nil"]],k=d,b=b[2];"Cons"===b[0];)k[2]=["Cons",b[1],["Nil"]],b=b[2],k=k[2];k[2]=a;return d},listToArray:function(b){for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return a},toText:function(a){if("string"===typeof a)return e(a);for(var d=[];"Cons"===a[0];)d.push(a[1]),a=a[2];return e(d.join(""))},
16−properEscape:e,getTextSize:function(a,d,h){var k=document.createElement("div");k.innerHTML=h;k.style.textAlign="left";0<a&&(k.style.width=a+"px");k.style.visibility="hidden";k.style.styleFloat="left";k.style.cssFloat="left";document.body.appendChild(k);h=window.getComputedStyle(k,null);a=h.getPropertyValue("width").slice(0,-2)-0;h=h.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(k);return[Math.ceil(a),Math.ceil(Math.max(d,h))]},getSize:function(a){a=a.cloneNode(!0);a.style.visibility=
17−"hidden";a.style.styleFloat="left";a.style.cssFloat="left";document.body.appendChild(a);var d=a.offsetWidth,h=a.offsetHeight;document.body.removeChild(a);return[d,h]},getExcess:function(a){a=a.cloneNode(!0);a.style.visibility="hidden";a.style.styleFloat="left";a.style.cssFloat="left";document.body.appendChild(a);var d=a.offsetWidth,h=a.offsetHeight,k=window.getComputedStyle(a,null),f=k.getPropertyValue("width").slice(0,-2)-0,k=k.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(a);
18−return[d-f,h-k]},groupForms:function(a){for(var a=Elm.JavaScript.castListToJSArray(a),d=[],h=[],k=a.length;k--;){var f=a[k];switch(f[4][0]){case "FElement":0<h.length&&(d.push(h),h=[]);d.push(f);break;default:h.push(f)}}0<h.length&&d.push(h);return d},wrap:function(a){var d=Value.getSize(a);return["Element",Guid.guid(),["EHtml",a],d[0],d[1],1,["Nothing"],["Nothing"]]},addListener:i}}();
19−Elm.List=function(){function e(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&f("map");for(var c=["Cons",a(b[1]),["Nil"]],g=c,b=b[2];"Cons"===b[0];)g[2]=["Cons",a(b[1]),["Nil"]],b=b[2],g=g[2];return c}}function j(a){return function(b){return function(c){var g=b;if("Nil"===c[0])return g;for("Cons"!==c[0]&&f("foldl");"Cons"===c[0];)g=a(c[1])(g),c=c[2];return g}}}function a(a){return function(b){return function(c){var g=b;if("Nil"===c[0])return g;"Cons"!==c[0]&&f("foldr");for(var d=[];"Cons"===
20−c[0];)d.push(c[1]),c=c[2];for(c=d.length;c--;)g=a(d[c])(g);return g}}}function d(a){return function(f){var b;"Cons"!==f[0]?b=void 0:(b=f[1],f=f[2],b=j(a)(b)(f));return b}}function i(a){return function(b){return function(c){if("Nil"===c[0])return["Cons",b,["Nil"]];"Cons"!==c[0]&&f("scanl");for(var g=[b];"Cons"===c[0];)b=a(c[1])(b),g.push(b),c=c[2];for(var c=["Nil"],d=g.length;d--;)c=["Cons",g[d],c];return c}}}function b(a){return function(f){a:{for(var c=[function(a){return"Nil"!==a[0]?void 0:["Tuple2",
21−["Nil"],["Nil"]]},function(f){if("Cons"===f[0]){var c=f[1],f=f[2];var g=b(a)(f);"Tuple2"!==g[0]?c=void 0:(f=g[1],g=g[2],c=a(c)?["Tuple2",["Cons",c,f],g]:["Tuple2",f,["Cons",c,g]]);return c}}],g=c.length;g--;){var d=c[g](f);if(void 0!==d){f=d;break a}}f=void 0}return f}}function l(a){a:{for(var f=[function(a){return"Nil"!==a[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(a){if("Cons"!==a[0])a=void 0;else if(a=["Tuple2",a[1],l(a[2])],"Tuple2"!==a[0]||"Tuple2"!==a[1][0])a=void 0;else var f=a[1][1],b=
22−a[1][2],a="Tuple2"!==a[2][0]?void 0:["Tuple2",["Cons",f,a[2][1]],["Cons",b,a[2][2]]];return a}],b=f.length;b--;){var c=f[b](a);if(void 0!==c){a=c;break a}}a=void 0}return a}function h(a){return function(f){a:{for(var b=[function(a){return"Nil"!==a[0]?void 0:["Nil"]},function(a){if("Cons"===a[0]){var f=a[1];return"Nil"!==a[2][0]?void 0:["Cons",f,["Nil"]]}},function(f){if("Cons"===f[0]){var b=f[1];if("Cons"===f[2][0]){var c=f[2][1],f=f[2][2];return["Cons",b,["Cons",a,h(a)(["Cons",c,f])]]}}}],c=b.length;c--;){var g=
23−b[c](f);if(void 0!==g){f=g;break a}}f=void 0}return f}}function k(a){return function(f){a:{for(var b=[function(a){return"Nil"!==a[0]?void 0:["Nil"]},function(a){if("Cons"===a[0]){var f=a[1];return"Nil"!==a[2][0]?void 0:f}},function(f){if("Cons"===f[0]){var b=f[1];if("Cons"===f[2][0]){var c=f[2][1],f=f[2][2];return Value.append(b,Value.append(a,k(a)(["Cons",c,f])))}}}],c=b.length;c--;){var g=b[c](f);if(void 0!==g){f=g;break a}}f=void 0}return f}}var f=function(a){throw"Function '"+a+"' expecting a list!";
24−},c=j(function(a){return function(f){return["Cons",a,f]}})(["Nil"]),g=a(function(a){return function(f){return Value.append(a,f)}})(["Nil"]),r=j(function(a){return function(f){return a&&f}})(!0),m=j(function(a){return function(f){return a||f}})(!1),n=j(function(a){return function(f){return a+f}})(0),u=j(function(a){return function(f){return a*f}})(1),x=d(function(a){return function(f){return Math.max(a,f)}}),q=d(function(a){return function(f){return Math.min(a,f)}});return{head:function(a){if("Cons"!==
25−a[0])throw"Error: 'head' only accepts lists of length greater than one.";return a[1]},tail:function(a){if("Cons"!==a[0])throw"Error: 'tail' only accepts lists of length greater than one.";return a[2]},last:function(a){if("Cons"!==a[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var f=a[1];"Cons"===a[0];)f=a[1],a=a[2];return f},map:e,foldl:j,foldr:a,foldl1:d,foldr1:function(a){return function(b){if("Nil"===b[0])throw"'foldr1' requires an non-empty list.";"Cons"!==b[0]&&
26−f("foldr1");for(var c=[];"Cons"===b[0];)c.push(b[1]),b=b[2];for(var b=c.pop(),g=c.length;g--;)b=a(c[g])(b);return b}},scanl:i,scanl1:function(a){return function(f){if("Cons"!==f[0])throw"Error: 'scanl1' requires a list of at least length 1.";return i(a)(f[1])(f[2])}},filter:function(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&f("filter");for(var c=[];"Cons"===b[0];)a(b[1])&&c.push(b[1]),b=b[2];for(var b=["Nil"],g=c.length;g--;)b=["Cons",c[g],b];return b}},length:function(a){for(var f=
27−0;"Cons"===a[0];)f+=1,a=a[2];return f},reverse:c,concat:g,concatMap:function(a){return function(f){return g(e(a)(f))}},and:r,or:m,all:function(a){return j(function(f){return function(b){return b&&a(f)}})(!0)},any:function(a){return j(function(f){return function(b){return b||a(f)}})(!1)},sum:n,product:u,maximum:x,minimum:q,partition:b,zipWith:function(a){return function(b){return function(c){if("Nil"===b[0]||"Nil"===c[0])return["Nil"];("Cons"!==b[0]||"Cons"!==c[0])&&f("zipWith");for(var g=[];"Cons"===
28−b[0]&&"Cons"===c[0];)g.push(a(b[1])(c[1])),b=b[2],c=c[2];for(var c=["Nil"],d=g.length;d--;)c=["Cons",g[d],c];return c}}},zip:function(a){return function(b){if("Nil"===a[0]||"Nil"===b[0])return["Nil"];("Cons"!==a[0]||"Cons"!==b[0])&&f("zip");for(var c=[];"Cons"===a[0]&&"Cons"===b[0];)c.push(["Tuple2",a[1],b[1]]),a=a[2],b=b[2];for(var b=["Nil"],g=c.length;g--;)b=["Cons",c[g],b];return b}},unzip:l,intersperse:h,intercalate:k,sort:function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&f("sort");for(var b=
29−[];"Cons"===a[0];)b.push(a[1]),a=a[2];b.sort(function(a,f){return a-f});for(var a=["Nil"],c=b.length;c--;)a=["Cons",b[c],a];return a},take:function(a){return function(b){if(0>=a)return["Nil"];if("Nil"===b[0])return b;"Cons"!==b[0]&&f("take");var c=["Cons",b[1],["Nil"]],g=c,b=b[2];for(--a;"Cons"===b[0]&&0<a;)g[2]=["Cons",b[1],["Nil"]],g=g[2],b=b[2],--a;return c}},drop:function(a){return function(b){if("Nil"===b[0])return b;for("Cons"!==b[0]&&f("drop");"Cons"===b[0]&&0<a;)b=b[2],--a;return b}}}}();
30−Elm.Maybe=function(){function e(a){return function(d){return"Just"===a[0]?["Cons",a[1],d]:d}}function j(a){return function(d){return function(i){var b=a(d);return"Just"===b[0]?["Cons",b[1],i]:i}}}return{Just:function(a){return["Just",a]},Nothing:["Nothing"],catMaybes:Elm.List.foldr(e)(["Nil"]),isJust:function(a){return"Just"===a[0]},isNothing:function(a){return"Nothing"===a[0]},fromMaybe:function(a){return function(d){return"Just"===d[0]?d[1]:a}},consMaybe:e,mapMaybe:function(a){return Elm.List.foldr(j(a))(["Nil"])},
31−maybe:function(a){return function(d){return function(i){return"Just"===i[0]?d(i[1]):a}}}}}();
32−Elm.Char=function(){function e(a,b){return function(d){d=d.charCodeAt(0);return a<=d&&d<=b}}var j=e(48,57),a=e(97,102),d=e(65,70);return{fromCode:function(a){return String.fromCharCode(a)},toCode:function(a){return a.charCodeAt(0)},toUpper:function(a){return a.toUpperCase()},toLower:function(a){return a.toLowerCase()},toLocaleUpper:function(a){return a.toLocaleUpperCase()},toLocaleLower:function(a){return a.toLocaleLowerCase()},isLower:e(97,122),isUpper:e(65,90),isDigit:j,isOctDigit:e(48,55),isHexDigit:function(e){return j(e)||
33−a(e)||d(e)}}}();
34−Elm.Color=function(){function e(e){var a=e.value*e.saturation,d=e.hue/60,i=a*(1-Math.abs(d%2-1)),b=0,l=0,h=0;0<=d&&1>d?(b=a,l=i,h=0):1<=d&&2>d?(b=i,l=a,h=0):2<=d&&3>d?(b=0,l=a,h=i):3<=d&&4>d?(b=0,l=i,h=a):4<=d&&5>d?(b=i,l=0,h=a):5<=d&&6>d&&(b=a,l=0,h=i);e=e.value-a;return["Color",Math.round(255*(b+e)),Math.round(255*(l+e)),Math.round(255*(h+e)),1]}return{rgba:function(e){return function(a){return function(d){return function(i){return["Color",e,a,d,i]}}}},rgb:function(e){return function(a){return function(d){return["Color",e,
35−a,d,1]}}},hsva:function(j){return function(a){return function(d){return function(i){var b=e({hue:j,saturation:a,value:d});b[4]=i;return b}}}},hsv:function(j){return function(a){return function(d){return e({hue:j,saturation:a,value:d})}}},red:["Color",255,0,0,1],green:["Color",0,255,0,1],blue:["Color",0,0,255,1],yellow:["Color",255,255,0,1],cyan:["Color",0,255,255,1],magenta:["Color",255,0,255,1],black:["Color",0,0,0,1],white:["Color",255,255,255,1],gray:["Color",128,128,128,1],grey:["Color",128,128,
36−128,1],complement:function(j){var a;a=j[1]/255;var d=j[2]/255,j=j[3]/255,i=Math.max(a,d,j),b=Math.min(a,d,j),b=i-b,l=0;0===b?l=0:i===a?l=(d-j)/b%6:i===d?l=(j-a)/b+2:i===j&&(l=(a-d)/b+4);a={value:i,hue:60*l,saturation:0===i?0:b/i};a.hue=(a.hue+180)%360;return e(a)},extract:function(e){return 1===e[4]?"rgb("+e[1]+","+e[2]+","+e[3]+")":"rgba("+e[1]+","+e[2]+","+e[3]+","+e[4]+")"}}}();
37−var Collage=function(){function e(a,b){var c=b.length-1;if(!(0>=c))for(a.moveTo(b[c][1],b[c][2]);c--;)a.lineTo(b[c][1],b[c][2])}function j(a,b,c,g){0===a.length&&(a=[8,4]);var d=g.length-1;if(!(0>=d)){var m=g[d][1],h=g[d][2],e=0,i=0,j=0,l=0,p=0,s=0,v=a.length,z=!0,w=a[0];for(b.moveTo(m,h);d--;){e=g[d][1];i=g[d][2];j=e-m;l=i-h;for(p=Math.sqrt(j*j+l*l);w<=p;)m+=j*w/p,h+=l*w/p,b[z?"lineTo":"moveTo"](m,h),j=e-m,l=i-h,p=Math.sqrt(j*j+l*l),z=!z,s=(s+1)%v,w=a[s];0<p&&(b[z?"lineTo":"moveTo"](e,i),w-=p);m=
38−e;h=i}}b.strokeStyle=Elm.Color.extract(c);b.stroke()}function a(a,b,c,g,d){b.clearRect(0,0,c,g);for(c=d.length;c--;){var m=d[c],n=a,g=b,i=m[1],l=m[2],q=m[3][1],t=m[3][2],m=m[4];g.save();(0!==q||0!==t)&&g.translate(q,t);i!==~~i&&g.rotate(2*Math.PI*i);1!==l&&g.scale(l,l);g.beginPath();switch(m[0]){case "FLine":a:switch(n=g,i=m,m=i[3][1],i[1][0]){case "Solid":i=i[2];e(n,m);n.strokeStyle=Elm.Color.extract(i);n.stroke();break;case "Dotted":j([3,3],n,i[2],m);break a;case "Dashed":j([8,4],n,i[2],m);break a;
39−case "Custom":j(i[1][1],n,i[2],m)}break;case "FShape":a:switch(q=n,l=g,n=m[1],i=m[2],m=m[3][1],n[0]){case "Filled":n=l;e(n,m);n.fillStyle=Elm.Color.extract(i);n.fill();break a;case "Outlined":n=l;e(n,m);n.strokeStyle=Elm.Color.extract(i);n.stroke();break a;case "Textured":i=q;n=n[1];q=new Image;q.src=h.castStringToJSString(n);q.onload=i;e(l,m);l.fillStyle=l.createPattern(q,"repeat");l.fill();break a;case "CustomOutline":j(n[1],l,i,m)}break;case "FImage":i=g,l=m[1],q=m[2],m=m[3],t=new Image,t.onload=
40−n,t.src=h.castStringToJSString(m),i.drawImage(t,-l/2,-q/2,l,q)}g.restore()}}function d(b,f,c){var g=Render.newElement("canvas"),b=~~b,f=~~f;g.style.width=b+"px";g.style.height=f+"px";g.style.display="block";g.width=b;g.height=f;if(g.getContext){var d=g.getContext("2d");a(function(){a(this,d,b,f,c)},d,b,f,c);return g}g.innerHTML="Your browser does not support the canvas element.";return g}function i(a,b,c,g,d,h,e){var i=Render.render(e),c="translate("+(d-e[3]/2)+"px,"+(h-e[4]/2)+"px) "+(1===g?"":"scale("+
41−g+","+g+")")+" "+(c===~~c?"":"rotate("+360*c+"deg)");i.style.transform=c;i.style.msTransform=c;i.style.MozTransform=c;i.style.webkitTransform=c;i.style.OTransform=c;c=Render.newElement("div");Render.addTo(c,i);c.style.width=~~a+"px";c.style.height=~~b+"px";c.style.overflow="hidden";return c}function b(b,f,c){if(!Value.eq(c,f)){var g=b.style.width.slice(0,-2)-0,h=b.style.height.slice(0,-2)-0;if("object"===typeof c[0]){if("object"===typeof f[0]&&b.getContext){var m=b.getContext("2d");return a(function(){a(this,
42−m,g,h,c)},m,g,h,c)}f=d(g,h,c);f.style.position="absolute";return b.parentNode.replaceChild(f,b)}f=i(g,h,c[1],c[2],c[3][1],c[3][2],c[4][1]);f.style.position="absolute";return b.parentNode.replaceChild(f,b)}}function l(a,b,c,g,d){var h=0,e,i=(a[1]-g[1])/c,a=(a[2]-g[2])/c;0!==b&&(b*=-2*Math.PI,c=i*Math.cos(b)-a*Math.sin(b),a=i*Math.sin(b)+a*Math.cos(b),i=c);if(0===d.length)return!1;e=d[0];for(c=d.length-1;c--;){b=d[c];g=e[1];e=e[2];var j=b[1],l=b[2];if(e<l)var t=e,p=l;else t=l,p=e;if(g<j)var s=g,v=j;
43−else s=j,v=g;t<a&&a<=p&&i<=v&&(i<=s||i<=(a-e)*(j-g)/(l-e)+g)&&++h;e=b}return 1===h%2}var h=Elm.JavaScript;return{collage:function(a,b,c){if(0===c.length)return d(a,b,[]);for(var g=Array(c.length),h=c.length;h--;){var e=c[h];g[h]="string"===typeof e[0]?i(a,b,e[1],e[2],e[3][1],e[3][2],e[4][1]):d(a,b,e)}return 1===c.length?g[0]:Render.flowWith(Render.goIn,function(a){return a},g)},updateCollage:function(a,f,c){if(1===c.length)return b(a,f[0],c[0]);for(var a=a.childNodes,g=a.length,d=g;d--;)b(a[g-d-1],
44−f[d],c[d])},insideForm:function(a){return function(b){var c=a[1],g=a[2];if(6>b.length){var d=b[3][1],e=b[3][2],h=0,i=b[2];switch(b[4][0]){case "FShape":for(var j=b[4][3][1],q=j.length;--q;)var t=j[q],h=Math.max(h,t[1]*t[1]+t[2]*t[2]);h*=i*i;break;case "FImage":j=i*b[4][1]/2;i=i*b[4][2]/2;h=j*j+i*i;break;case "FElement":j=i*b[4][1][3]/2,i=i*b[4][1][4]/2,h=j*j+i*i}b.push(function(a,b){var c=a-d,f=b-e;return c*c+f*f<h+1})}if(!b[5](c,g))return!1;var p,s;switch(b[4][0]){case "FShape":return l(a,b[1],b[2],
45−b[3],b[4][3][1]);case "FLine":return!1;case "FImage":p=b[4][1]/2;s=b[4][2]/2;break;case "FElement":p=b[4][1][3]/2,s=b[4][1][4]/2}return l(a,b[1],b[2],b[3],[[null,p,s],[null,-p,s],[null,-p,-s],[null,p,-s],[null,p,s]])}}}}();
46−Elm.Graphics=function(){function e(a){return function(b){return["Position",a,b]}}function j(a){return function(b){return["EText",a,b]}}function a(a){return function(b){return["EFlow",a,u.castListToJSArray(b)]}}function d(a){return["Line",u.castListToJSArray(a)]}function i(a){return function(b){var c=u.castListToJSArray(a);0<c.length&&c.push(c[0]);return["Shape",c,b]}}function b(a){return function(b){return function(c){return function(f){return["Form",a,b,c,f]}}}}function l(a){return function(b){return function(c){return["FLine",
47−a,b,c]}}}function h(a){return function(b){return function(c){return["FShape",a,b,c]}}}function k(a,b,c,f,g,d){return["Element",Guid.guid(),a,b,c,f,g,d]}function f(a,b,c){return["Element",Guid.guid(),a,b,c,1,["Nothing"],["Nothing"]]}function c(a){return~~a[3]}function g(a){return~~a[4]}function r(a){return function(b){return function(c){return f(["EImage",u.castStringToJSString(c)],a,b)}}}function m(a){return function(b){return f(z,a,b)}}function n(a){return function(b){return function(c){var f=map(function(c){return["Tuple2",
48−a/2*Math.cos(2*(Math.PI/50)*c),b/2*Math.sin(2*(Math.PI/50)*c)]}),g=49,d=["Nil"];if(0<=g){do d=["Cons",g,d];while(0<g--)}return i(f(d))(c)}}}for(this.i in Elm.List)eval("var "+this.i+" = Elm.List[this.i];");var u=Elm.JavaScript,x=["DRight"],q=["DDown"],t=["DOut"],p=["Near"],s=["Mid"],v=["Far"],z=["EEmpty"],w=["Solid"],C=["Dotted"],E=["Dashed"],A=["Filled"],D=["Outlined"],y=e(p)(p),B=e(v)(p),F=e(p)(v),G=e(v)(v),H=e(p)(s),I=e(v)(s),p=e(s)(p),v=e(s)(v),s=e(s)(s);return{left:["DLeft"],right:x,down:q,up:["DUp"],
49−inward:["DIn"],outward:t,topLeft:y,topRight:B,bottomLeft:F,bottomRight:G,midLeft:H,midRight:I,midTop:p,midBottom:v,middle:s,middleAt:function(a){return function(b){return["PositionAt",a,b]}},topLeftAt:function(a){return function(b){return["PositionTL",a,b]}},topRightAt:function(a){return function(b){return["PositionTR",a,b]}},bottomLeftAt:function(a){return function(b){return["PositionBL",a,b]}},bottomRightAt:function(a){return function(b){return["PositionBR",a,b]}},absolute:function(a){return["Absolute",
50−a]},relative:function(a){return["Relative",a]},width:function(a){return function(b){var c=b[2];switch(c[0]){case "EImage":case "EVideo":return k(b[2],a,b[4]*a/b[3],b[5],b[6],b[7]);case "EText":return c=Value.getTextSize(a,b[4],c[2]),k(b[2],a,c[1],b[5],b[6],b[7])}return k(b[2],a,b[4],b[5],b[6],b[7])}},height:function(a){return function(b){switch(b[2][0]){case "EImage":case "EVideo":return k(b[2],b[3]*a/b[4],a,b[5],b[6],b[7])}return k(b[2],b[3],a,b[5],b[6],b[7])}},size:function(a){return function(b){return function(c){return k(c[2],
51−a,b,c[5],c[6],c[7])}}},opacity:function(a){return function(b){return k(b[2],b[3],b[4],a,b[6],b[7])}},color:function(a){return function(b){return k(b[2],b[3],b[4],b[5],["Just",a],b[7])}},link:function(a){return function(b){return k(b[2],b[3],b[4],b[5],b[6],["Just",u.castStringToJSString(a)])}},widthOf:c,heightOf:g,sizeOf:function(a){return["Tuple2",~~a[3],~~a[4]]},text:function(a){var b=Value.getTextSize(0,0,a);return f(j("left")(a),b[0],b[1])},asText:function(a){var a=Elm.Text.monospace(Value.toText(Value.show(a))),
52−b=Value.getTextSize(0,0,a);return f(j("left")(a),b[0],b[1])},plainText:function(a){var a=Value.toText(a),b=Value.getTextSize(0,0,a);return f(j("left")(a),b[0],b[1])},centeredText:function(a){var b=Value.getTextSize(0,0,a);return f(j("center")(a),b[0],b[1])},justifiedText:function(a){var b=Value.getTextSize(0,0,a);return f(j("justify")(a),b[0],b[1])},rightedText:function(a){var b=Value.getTextSize(0,0,a);return f(j("right")(a),b[0],b[1])},image:r,images:function(a){var b=Elm.Signal.constant(m(0)(0)),
53−a=Elm.Signal.lift(function(a){var a=u.castStringToJSString(a),c=new Image;c.onload=function(){Dispatcher.notify(b.id,r(this.width)(this.height)(a))};c.src=a})(a);return Elm.Signal.lift2(function(a){return function(){return a}})(b)(a)},video:function(a){return function(b){return function(c){return f(["EVideo",u.castStringToJSString(c)],a,b)}}},fittedImage:function(a){return function(b){return function(c){return f(["EFittedImage",u.castStringToJSString(c)],a,b)}}},flow:function(b){return function(d){var h;
54−h=map(c)(d);a:{switch(b[0]){case "DLeft":h=sum(h);break a;case "DRight":h=sum(h);break a}h=maximum(h)}var e;e=map(g)(d);a:{switch(b[0]){case "DDown":e=sum(e);break a;case "DUp":e=sum(e);break a}e=maximum(e)}return f(a(b)(d),h,e)}},above:function(b){return function(c){return f(a(q)(["Cons",b,["Cons",c,["Nil"]]]),Math.max(~~b[3],~~c[3]),~~b[4]+~~c[4])}},below:function(b){return function(c){return f(a(q)(["Cons",c,["Cons",b,["Nil"]]]),Math.max(~~b[3],~~c[3]),~~b[4]+~~c[4])}},beside:function(b){return function(c){return f(a(x)(["Cons",
55−b,["Cons",c,["Nil"]]]),~~b[3]+~~c[3],Math.max(~~b[4],~~c[4]))}},layers:function(b){return f(a(t)(b),maximum(map(c)(b)),maximum(map(g)(b)))},collage:function(a){return function(b){return function(c){return f(["ECollage",a,b,Value.groupForms(c)],a,b)}}},spacer:m,container:function(a){return function(b){return function(c){return function(g){return f(["EContainer",c,g],a,b)}}}},line:d,segment:function(a){return function(b){return d(["Cons",a,["Cons",b,["Nil"]]])}},polygon:i,rect:function(a){return function(b){return function(c){return i(["Cons",
56−["Tuple2",0-a/2,0-b/2],["Cons",["Tuple2",0-a/2,b/2],["Cons",["Tuple2",a/2,b/2],["Cons",["Tuple2",a/2,0-b/2],["Nil"]]]]])(c)}}},oval:n,circle:function(a){return n(2*a)(2*a)},ngon:function(a){return function(b){return function(c){var f=map(function(c){return["Tuple2",b*Math.cos(2*(Math.PI/a)*c),b*Math.sin(2*(Math.PI/a)*c)]}),g=a-1,d=["Nil"];if(0<=g){do d=["Cons",g,d];while(0<g--)}return i(f(d))(c)}}},solid:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(l(w)(a)(c))}},dotted:function(a){return function(c){return b(0)(1)(["Tuple2",
57−0,0])(l(C)(a)(c))}},dashed:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(l(E)(a)(c))}},customLine:function(a){return function(c){return function(f){return b(0)(1)(["Tuple2",0,0])(l(["Custom",u.castListToJSArray(a)])(c)(f))}}},filled:function(a){return function(c){return b(0)(1)(c[2])(h(A)(a)(c))}},outlined:function(a){return function(c){return b(0)(1)(c[2])(h(D)(a)(c))}},customOutline:function(a){return function(c){return function(f){return b(0)(1)(f[2])(h(["CustomOutline",u.castListToJSArray(a)])(c)(f))}}},
58−textured:function(a){return function(c){return b(0)(1)(c[2])(h(["Textured",a])(null)(c))}},sprite:function(a){return function(c){return function(f){return function(g){return b(0)(1)(g)(["FImage",c,f,u.castStringToJSString(a)])}}}},toForm:function(a){return function(c){return b(0)(1)(a)(["FElement",c])}},rotate:function(a){return function(c){a:{switch(c[0]){case "Form":var f=c[2],g=c[3],d=c[4],c=b(a+c[1])(f)(g)(d);break a}throw"Non-exhaustive pattern match in case";}return c}},scale:function(a){return function(c){return b(c[1])(a*
59−c[2])(c[3])(c[4])}},move:function(a){return function(c){return function(f){var g;a:{switch(f[0]){case "Form":g=f[1];var d=f[2],h=f[3],f=f[4];switch(h[0]){case "Tuple2":var e=h[1],h=h[2];g=b(g)(d)(["Tuple2",a+e,c+h])(f);break a}}throw"Non-exhaustive pattern match in case";}return g}}},isWithin:Collage.insideForm}}();
60−Elm.Text=function(){function e(a){return Value.toText(a)}var j=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},a=function(a,b){return function(g){return"<span style='"+a+":"+b+"'>"+g+"</span>"}},d=function(b){b=Elm.JavaScript.castStringToJSString(b);return a("font-family",b)},i=j("h1"),b=a("font-style","italic"),j=j("b"),l=a("text-decoration","underline"),h=a("text-decoration","overline"),k=a("text-decoration","line-through");return{fromString:e,toText:e,header:i,
61−height:function(b){return a("font-size",b+"em")},italic:b,bold:j,underline:l,overline:h,strikeThrough:k,monospace:d("monospace"),typeface:d,color:function(b){return a("color",Elm.Color.extract(b))},link:function(a){return function(b){return"<a href='"+e(a)+"'>"+b+"</a>"}}}}();
62−var Render=function(){function e(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a}function j(a){return a}function a(a){a.style.styleFloat="left";a.style.cssFloat="left";return a}function d(a){a.style.position="absolute";return a}function i(a,b,g){for(var d=e("div"),h=g.length;h--;){var i=a(b(g[h]));d.appendChild(i)}return d}function b(a){switch(a[0]){case "Absolute":return a[1]+"px";case "Relative":return 100*a[1]+"%"}}function l(a,c){c.style.position="absolute";c.style.margin=
63−"auto";switch(a[0]){case "Position":"Far"!==a[1][0]&&(c.style.left=0);"Near"!==a[1][0]&&(c.style.right=0);"Far"!==a[2][0]&&(c.style.top=0);"Near"!==a[2][0]&&(c.style.bottom=0);break;case "PositionAt":c.style.top=b(a[2]);c.style.left=b(a[1]);var g="translate("+~~(-c.style.width.slice(0,-2)/2)+"px,"+~~(-c.style.height.slice(0,-2)/2)+"px)";c.style.transform=g;c.style.msTransform=g;c.style.MozTransform=g;c.style.webkitTransform=g;c.style.OTransform=g;break;default:g=a[0].slice(-2),c.style["T"===g[0]?
64−"top":"bottom"]=b(a[2]),c.style["L"===g[1]?"left":"right"]=b(a[1])}}function h(b){var c={};switch(b[2][0]){case "EText":var c=b[2][1],g=b[2][2],r=e("div");r.innerHTML=g;r.style.textAlign=c;c=r;break;case "EImage":c=b[2][1];g=e("img");g.src=c;g.name=c;g.style.display="block";c=g;break;case "EVideo":r=b[2][1];c=e("video");c.controls="controls";g=e("source");g.src=r;r=r.split(".");g.type="video/"+r[r.length-1];c.appendChild(g);c.style.display="block";break;case "EFittedImage":var m=b[3],n=b[4],c=b[2][1],
65−g=e("div");g.style.width=m+"px";g.style.height=n+"px";g.style.position="relative";g.style.overflow="hidden";var k=e("img");k.onload=function(){k.style.position="absolute";k.style.margin="auto";var a=m,b=n;m/n>this.width/this.height?b=Math.round(this.height*m/this.width):a=Math.round(this.width*n/this.height);k.style.width=a+"px";k.style.height=b+"px";k.style.left=(m-a)/2+"px";k.style.top=(n-b)/2+"px"};k.src=c;k.name=c;g.appendChild(k);c=g;break;case "EFlow":a:{c=b[2][2];switch(b[2][1][0]){case "DDown":c=
66−c.slice(0).reverse();case "DUp":c=i(j,h,c);break a;case "DRight":c=c.slice(0).reverse();case "DLeft":c=i(a,h,c);break a;case "DOut":c=c.slice(0).reverse();case "DIn":c=i(d,h,c);break a}c=void 0}break;case "ECollage":c=Collage.collage(b[2][1],b[2][2],b[2][3]);break;case "EEmpty":c=e("div");break;case "EContainer":g=b[2][1];c=h(b[2][2]);l(g,c);g=e("div");g.style.position="relative";g.style.overflow="hidden";g.appendChild(c);c=g;break;case "EHtml":c=b[2][1];"button"!==c.type&&(g=Value.getExcess(c),b[3]-=
67−g[0],b[4]-=g[1]);break;case "EExternalHtml":c=e("div"),c.appendChild(b[2][1])}c.id=b[1];c.style.width=~~b[3]+"px";c.style.height=~~b[4]+"px";1!==b[5]&&(c.style.opacity=b[5]);"Just"===b[6][0]&&(c.style.backgroundColor=Elm.Color.extract(b[6][1]));return"Just"===b[7][0]?(g=e("a"),g.href=b[7][1],g.appendChild(c),g):c}function k(b,c,g){"A"===b.tagName&&(b=b.firstChild);if(c[1]!==g[1]){if(c[2][0]!==g[2][0])return b.parentNode.replaceChild(h(g),b);var e=g[2],i=c[2];switch(e[0]){case "EText":e[1]!==i[1]&&
68−(b.style.textAlign=e[1]);e[2]!==i[2]&&(b.innerHTML=e[2]);break;case "EImage":e[1]!==i[1]&&(b.src=e[1]);break;case "EVideo":case "EFittedImage":if(!Value.eq(e,i)||g[3]!==c[3]||g[4]!==c[4])return b.parentNode.replaceChild(h(g),b);break;case "ECollage":if(e[1]!==i[1]||e[2]!==i[2]||e[3].length!==i[3].length)return b.parentNode.replaceChild(h(g),b);Collage.updateCollage(b,i[3],e[3]);break;case "EFlow":if(e[1]!==i[1])return b.parentNode.replaceChild(h(g),b);var n=e[2],u=b.childNodes;if(n.length!==u.length)return b.parentNode.replaceChild(h(g),
69−b);var i=i[2],x=function(a){return a};switch(e[1][0]){case "DDown":case "DUp":x=j;break;case "DRight":case "DLeft":x=a;break;case "DOut":case "DIn":x=d}for(e=u.length;e--;)k(u[e],i[e],n[e]),x(u[e]);break;case "EContainer":k(b.childNodes[0],i[2],e[2]);l(e[1],b.childNodes[0]);break;case "EHtml":g[1]!==c[1]&&(n=h(g),b.parentNode.replaceChild(n,b),b=n);"button"!==n.type&&(e=Value.getExcess(b),g[3]-=e[0],g[4]-=e[1]);break;case "EExternalHtml":g[1]!==c[1]&&b.parentNode.replaceChild(h(g),b)}g[3]!==c[3]&&
70−(b.style.width=~~g[3]+"px");g[4]!==c[4]&&(b.style.height=~~g[4]+"px");g[5]!==c[5]&&(b.style.opacity=g[5]);2===g[6].length&&(e=Elm.Color.extract(g[6][1]),e!==b.style.backgroundColor&&(b.style.backgroundColor=e));if(2===g[7].length&&(1===c[7].length||g[7][1]!==c[7][1]))b.parentNode.href=g[7][1];g[1]=c[1]}}return{render:h,update:k,addTo:function(a,b){a.appendChild(b)},newElement:e,flowWith:i,goIn:d}}();
71−Elm.Signal=function(){function e(a){this.id=Guid.guid();this.value=a;this.kids=[];this.defaultNumberOfKids=0;this.recv=function(a,b,c){if(b=b===this.id)this.value=c;k(this,a,b);return b};Dispatcher.inputs.push(this)}function j(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.count=0;this.changed=!1;b.reverse();this.recalc=function(){for(var d=a,f=b.length;f--;)d=d(b[f].value);this.value=d};this.recalc();this.recv=function(a,c){this.count+=1;c&&(this.changed=!0);this.count==b.length&&(this.changed&&
72−this.recalc(),k(this,a,this.changed),this.changed=!1,this.count=0)};for(var d=b.length;d--;)b[d].kids.push(this)}function a(a,b,d,f){this.id=Guid.guid();this.value=d?b(f.value):b;this.kids=[];this.recv=function(b,d){d&&(this.value=a(f.value)(this.value));k(this,b,d)};f.kids.push(this)}function d(a,b,d){this.id=Guid.guid();this.value=a(d.value)?b:d.value;this.kids=[];this.recv=function(b,g){var f=g&&!a(d.value);f&&(this.value=d.value);k(this,b,f)};d.kids.push(this)}function i(a){this.id=Guid.guid();
73−this.value=a.value;this.kids=[];this.recv=function(b,d){var f=d&&!Value.eq(this.value,a.value);f&&(this.value=a.value);k(this,b,f)};a.kids.push(this)}function b(a,b){this.id=Guid.guid();var d=(new window.Date).getTime();this.value=a?Value.Tuple(d,b.value):d;this.kids=[];this.recv=function(d,f){f&&(this.value=a?Value.Tuple(d,b.value):d);k(this,d,f)};b.kids.push(this)}function l(a,b){this.id=Guid.guid();this.value=b.value;this.kids=[];this.count=0;this.changed=!1;this.recv=function(d,f,e){e===a.id&&
74−(this.changed=f);this.count+=1;2==this.count&&(this.changed&&(this.value=b.value),k(this,d,this.changed),this.count=0,this.changed=!1)};a.kids.push(this);b.kids.push(this)}function h(a,b){this.id=Guid.guid();this.value=a.value;this.kids=[];this.next=null;this.count=0;this.changed=!1;this.recv=function(d,f,e){this.count+=1;f&&(this.changed=!0,e==b.id&&null===this.next&&(this.next=b.value),e==a.id&&(this.next=a.value));2==this.count&&(this.changed&&(this.value=this.next,this.next=null),k(this,d,this.changed),
75−this.changed=!1,this.count=0)};a.kids.push(this);b.kids.push(this)}var k=function(a,b,d){for(var f=a.kids,e=f.length;e--;)f[e].recv(b,d,a.id)},f=function(a){return function(b){return function(f){f=new j(function(a){return function(b){return[a,b]}},[a,f]);f=new d(function(a){return a[0]},[!0,b],f);return new j(function(a){return a[1]},[f])}}};return{constant:function(a){return new e(a)},lift:function(a){return function(b){return new j(a,[b])}},lift2:function(a){return function(b){return function(d){return new j(a,
76−[b,d])}}},lift3:function(a){return function(b){return function(d){return function(f){return new j(a,[b,d,f])}}}},lift4:function(a){return function(b){return function(d){return function(f){return function(e){return new j(a,[b,d,f,e])}}}}},lift5:function(a){return function(b){return function(d){return function(f){return function(e){return function(h){return new j(a,[b,d,f,e,h])}}}}}},lift6:function(a){return function(b){return function(d){return function(f){return function(e){return function(h){return function(i){return new j(a,
77−[b,d,f,e,h,i])}}}}}}},lift7:function(a){return function(b){return function(d){return function(f){return function(e){return function(h){return function(i){return function(k){return new j(a,[b,d,f,e,h,i,k])}}}}}}}},lift8:function(a){return function(b){return function(d){return function(f){return function(e){return function(h){return function(i){return function(k){return function(l){return new j(a,[b,d,f,e,h,i,k,l])}}}}}}}}},foldp:function(b){return function(d){return function(f){return new a(b,d,!1,
78−f)}}},foldp_:function(b){return function(d){return function(f){return new a(b,d,!0,f)}}},foldp1:function(b){return function(d){return new a(b,function(a){return a},!0,d)}},delay:function(a){return function(b){var d=new e(b.value),f=!0,b=new l(d,new j(function(a){return function(){return a}},[d,new j(function(b){f||setTimeout(function(){Dispatcher.notify(d.id,b)},a)},[b])])),f=!1;return b}},merge:function(a){return function(b){return new h(a,b)}},merges:function(a){return Elm.List.foldl1(function(a){return function(b){return new h(a,
79−b)}})(a)},average:function(a){return function(b){for(var d=Array(a),f=a;f--;)d[f]=0;var f=0,e=!1,h=0;return new j(function(b){h+=b-d[f];d[f]=b;b=h/Math.max(1,e?a:f);++f==a&&(e=!0,f=0);return b},[b])}},count:function(b){return new a(function(){return function(a){return a+1}},0,!1,b)},countIf:function(b){return function(d){return new a(function(a){return function(d){return b(a)?d+1:d}},0,!1,d)}},keepIf:function(a){return function(b){return function(f){return new d(function(b){return!a(b)},b,f)}}},dropIf:function(a){return function(b){return function(f){return new d(a,
80−b,f)}}},keepWhen:function(a){return f(new j(function(a){return!a},[a]))},dropWhen:f,dropRepeats:function(a){return new i(a)},sampleOn:function(a){return function(b){return new l(a,b)}},timestamp:function(a){return new b(!0,a)},timeOf:function(a){return new b(!1,a)}}}();
81−var Dispatcher=function(){function e(a){if(!a.hasOwnProperty("defaultNumberOfKids"))return!0;var b=a.kids.length;if(0==b)return!1;if(b>a.defaultNumberOfKids)return!0;for(var d=!1;b--;)d=d||e(a.kids[b]);return d}var j=null,a=[],d=null;return{initialize:function(){j=Elm.main();j.hasOwnProperty("recv")||(j=Elm.Signal.constant(j));d=j.value;for(var i=[],b=a.length;b--;)e(a[b])&&i.push(a[b]);a=i;document.getElementById("content").appendChild(Render.render(d));i=document.getElementById("widthChecker").offsetWidth;
82−i!==window.innerWidth&&Dispatcher.notify(Elm.Window.dimensions.id,Value.Tuple(i,window.innerHeight));j=Elm.Signal.lift(function(a){var b=document.getElementById("content");Render.update(b.firstChild,d,a);return d=a})(j)},notify:function(d,b){for(var e=(new window.Date).getTime(),h=!1,j=a.length;j--;)h=a[j].recv(e,d,b)||h;return h},inputs:a}}();
83−Elm.HTTP=function(){function e(a){return function(d){return function(f){return function(c){return{"0":"Request",length:1,verb:b.castStringToJSString(a),url:b.castStringToJSString(d),data:null===f?null:b.castStringToJSString(f),headers:c}}}}}function j(a){return e("GET")(a)(null)(["Nil"])}function a(a,e){return function(f){if(""!==f.url){var c={value:["Waiting"]};a.push(c);var g=null;window.ActiveXObject&&(g=new ActiveXObject("Microsoft.XMLHTTP"));window.XMLHttpRequest&&(g=new XMLHttpRequest);g.onreadystatechange=
84−function(){4===g.readyState&&(c.value=200===g.status?["Success",l(g.responseText)]:["Failure",g.status,l(g.statusText)],setTimeout(function(){d(a,e)},0))};g.open(f.verb,f.url,!0);Elm.List.map(function(a){g.setRequestHeader(b.castStringToJSString(a[1]),b.castStringToJSString(a[2]))})(f.headers);g.send(f.data)}}}function d(a,b){0<a.length&&(Dispatcher.notify(b.id,a[0].value),"Waiting"!==a[0].value[0]&&(a.shift(),setTimeout(function(){d(a,b)},0)))}function i(b){var d=Elm.Signal.constant(["Waiting"]),
85−b=Elm.Signal.lift(a([],d))(b);return Elm.Signal.lift2(function(a){return function(){return a}})(d)(b)}var b=Elm.JavaScript,l=Elm.JavaScript.castJSStringToString;return{get:j,post:function(a){return function(b){return e("POST")(a)(b)(["Nil"])}},request:e,send:i,sendGet:function(a){return i(Elm.Signal.lift(j)(a))}}}();
86−Elm.Input=function(){var e=Elm.JavaScript,j=Elm.JavaScript.castJSStringToString,a=function(a,d){a.placeholder=e.castStringToJSString(d);var h=Elm.Signal.constant(["Nil"]);Value.addListener(a,"keyup",function(){Dispatcher.notify(h.id,j(a.value));a.focus()});a.style.padding="1px";return Value.Tuple(Value.wrap(a),h)},d=function(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a},i=function(a){for(var e=d("select"),h=[];"Cons"===a[0];){var i=d("option"),f=Value.toText(a[1][1]);
87−i.value=f;i.innerHTML=f;e.appendChild(i);h.push(a[1][2]);a=a[2]}var c=Elm.Signal.constant(h[0]);Value.addListener(e,"change",function(){Dispatcher.notify(c.id,h[e.selectedIndex])});return Value.Tuple(Value.wrap(e),c)};return{textArea:function(b){return function(e){var h=d("textarea");h.rows=e;h.cols=b;return a(h,"")}},textField:function(b){var e=d("input");e.type="text";return a(e,b)},password:function(b){var e=d("input");e.type="password";return a(e,b)},checkbox:function(a){var e=d("input");e.type=
88−"checkbox";e.checked=a;var h=Elm.Signal.constant(a);Value.addListener(e,"change",function(){Dispatcher.notify(h.id,e.checked)});return Value.Tuple(Value.wrap(e),h)},dropDown:i,stringDropDown:function(a){return i(Elm.List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var i=d("input");i.type="button";i.value=e.castStringToJSString(a);var h=Elm.Signal.constant(!1);Value.addListener(i,"click",function(){Dispatcher.notify(h.id,!0);Dispatcher.notify(h.id,!1)});return Value.Tuple(Value.wrap(i),
89−h)}}}();
90−Elm.Keyboard={Raw:function(){function e(a,i){return"Nil"===i[0]?i:i[1]===a?i[2]:["Cons",i[1],e(a,i[2])]}var j=Elm.Signal.constant(["Nil"]),a=Elm.Signal.constant(["Nothing"]);Value.addListener(document,"keydown",function(a){var e;a:{for(e=j.value;"Nil"!==e[0];){if(e[1]===a.keyCode){e=!0;break a}e=e[2]}e=!1}e||Dispatcher.notify(j.id,["Cons",a.keyCode,j.value])||this.removeEventListener("keydown",arguments.callee,!1)});Value.addListener(document,"keyup",function(a){var i=e(a.keyCode,j.value);Dispatcher.notify(j.id,
91−i)||this.removeEventListener("keyup",arguments.callee,!1)});Value.addListener(window,"blur",function(a){Dispatcher.notify(j.id,["Nil"])||this.removeEventListener("blur",arguments.callee,!1)});Value.addListener(document,"keypress",function(d){var e=Dispatcher.notify(a.id,["Just",d.charCode||d.keyCode]);Dispatcher.notify(a.id,["Nothing"]);e||this.removeEventListener("keypress",arguments.callee,!1)});return{keysDown:j,charPressed:a}}()};
92−Elm.Mouse=function(){function e(a){var b=0,d=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,d=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,d=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,d)}var j=Elm.Signal.constant(Value.Tuple(0,0));j.defaultNumberOfKids=2;var a=Elm.Signal.lift(function(a){return a[1]})(j);a.defaultNumberOfKids=0;var d=Elm.Signal.lift(function(a){return a[2]})(j);d.defaultNumberOfKids=
93−0;var i=Elm.Signal.constant(!1),b=Elm.Signal.constant(!1),l=Elm.Signal.constant(Value.Tuple());Value.addListener(document,"click",function(a){var d=Dispatcher.notify(b.id,!0),f=Dispatcher.notify(l.id,Value.Tuple());Dispatcher.notify(b.id,!1);!d&&!f&&this.removeEventListener("click",arguments.callee,!1)});Value.addListener(document,"mousedown",function(a){Dispatcher.notify(i.id,!0)||this.removeEventListener("mousedown",arguments.callee,!1)});Value.addListener(document,"mouseup",function(a){Dispatcher.notify(i.id,
94−!1)||this.removeEventListener("mouseup",arguments.callee,!1)});Value.addListener(document,"mousemove",function(a){Dispatcher.notify(j.id,e(a))||this.removeEventListener("mousemove",arguments.callee,!1)});return{position:j,x:a,y:d,isClicked:b,isDown:i,clicks:l,isClickedOn:function(a){var a=Render.render(a),b=Elm.Signal.constant(!1);Value.addListener(a,"click",function(){Dispatcher.notify(b.id,!0);Dispatcher.notify(b.id,!1)});return Value.Tuple(Value.wrap(a),b)}}}();
95−Elm.Random=function(){return{inRange:function(e){return function(j){return Elm.Signal.constant(Math.floor(Math.random()*(j-e+1))+e)}},randomize:function(e){return function(j){return function(a){return Elm.Signal.lift(function(){return Math.floor(Math.random()*(j-e+1))+e})(a)}}}}}();
96−Elm.Time=function(){function e(){return(new window.Date).getTime()}function j(a){return function(d){var i=1E3/a,b=e(),j=b,h=0,k=!0,f=Elm.Signal.constant(h),c=0;return Elm.Signal.lift2(function(a){return function(d){if(a){var m=!k&&a;c=setTimeout(function(){j=e();h=m?0:j-b;b=j;Dispatcher.notify(f.id,h)},i)}else k&&clearTimeout(c);k=a;return d}})(d)(f)}}Elm.Signal.constant(!0);return{fpsWhen:j,fps:function(a){return j(a)(Elm.Signal.constant(!0))},every:function(a){var d=Elm.Signal.constant(e());setInterval(function(){Dispatcher.notify(d.id,
97−e())},a);return d},delay:Elm.Signal.delay,since:function(a){return function(d){var e=Elm.Signal.count(Elm.Signal.delay(a)(d));return Elm.Signal.lift2(function(a){return function(d){return!Value.eq(a,d)}})(Elm.Signal.count(d))(e)}},after:function(a){var a=1E3*a,d=Elm.Signal.constant(!1);setTimeout(function(){Dispatcher.notify(d.id,!0)},a);return d},before:function(a){var a=1E3*a,d=Elm.Signal.constant(!0);setTimeout(function(){Dispatcher.notify(d.id,!1)},a);return d},hour:36E5,minute:6E4,second:1E3,
98−ms:1,inHours:function(a){return a/36E5},inMinutes:function(a){return a/6E4},inSeconds:function(a){return a/1E3},inMss:function(a){return a},toDate:function(a){return new window.Date(a)},read:function(a){a=window.Date.parse(a);return isNaN(a)?["Nothing"]:["Just",a]}}}();
99−Elm.Window=function(){var e=Elm.Signal.constant(Value.Tuple(window.innerWidth,window.innerHeight));e.defaultNumberOfKids=2;var j=Elm.Signal.lift(function(a){return a[1]})(e);j.defaultNumberOfKids=0;var a=Elm.Signal.lift(function(a){return a[2]})(e);a.defaultNumberOfKids=0;Value.addListener(window,"resize",function(a){var i=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(e.id,Value.Tuple(i,window.innerHeight))||this.removeEventListener("resize",arguments.callee,!1)});return{dimensions:e,
100−width:j,height:a}}();
101−Elm.Date=function(){var e="Sun Mon Tue Wed Thu Fri Sat".split(" "),j="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");return{read:function(a){a=new window.Date(Elm.JavaScript.castStringToJSString(a));return isNaN(a.getTime())?["Nothing"]:["Just",a]},year:function(a){return a.getFullYear()},month:function(a){return[j[a.getMonth()]]},day:function(a){return a.getDate()},hour:function(a){return a.getHours()},minute:function(a){return a.getMinutes()},second:function(a){return a.getSeconds()},dayOfWeek:function(a){return[e[a.getDay()]]},
102−toTime:function(a){return a.getTime()},Mon:["Mon"],Tue:["Tue"],Wed:["Wed"],Thu:["Thu"],Fri:["Fri"],Sat:["Sat"],Sun:["Sun"],Jan:["Jan"],Feb:["Feb"],Mar:["Mar"],Apr:["Apr"],May:["May"],Jun:["Jun"],Jul:["Jul"],Aug:["Aug"],Sep:["Sep"],Oct:["Oct"],Nov:["Nov"],Dec:["Dec"]}}();Value.addListener(document,"elm_log",function(e){console.log(e.value)});Value.addListener(document,"elm_title",function(e){document.title=e.value});
103−Value.addListener(document,"elm_redirect",function(e){0<e.value.length&&(window.location=e.value)});
104−Elm.Prelude=function(){function e(a){return function(d){if(a instanceof Array&&d instanceof Array){var i=a.length;if(i==d.length){for(var b=1;b<i;++b){var j=e(a[b])(d[b]);if("EQ"!==j[0])return j}return["EQ"]}return[1==d.length?"GT":"LT"]}return[a===d?"EQ":a<d?"LT":"GT"]}}var j=function(a){return function(d){var e=a%d,e=0==a?0:0<d?0<=a?e:e+d:-j(-a)(-d);return e==d?0:e}};return{eq:Value.eq,id:function(a){return a},not:function(a){return!a},fst:function(a){return a[1]},snd:function(a){return a[2]},rem:function(a){return function(d){return a%
105−d}},div:function(a){return function(d){return~~(a/d)}},otherwise:!0,compare:e,toFloat:function(a){return a},round:function(a){return Math.round(a)},floor:function(a){return Math.floor(a)},ceiling:function(a){return Math.ceil(a)},truncate:function(a){return~~a},readInt:function(a){var a=Elm.JavaScript.castStringToJSString(a),d=a.length;if(0===d)return["Nothing"];var e=0;if("-"==a[0]){if(1===d)return["Nothing"];e=1}for(;e<d;++e)if(!Elm.Char.isDigit(a[e]))return["Nothing"];return["Just",parseInt(a)]},
106−readFloat:function(a){var a=Elm.JavaScript.castStringToJSString(a),d=a.length;if(0===d)return["Nothing"];var e=0;if("-"==a[0]){if(1===d)return["Nothing"];e=1}for(var b=0;e<d;++e)if(!Elm.Char.isDigit(a[e])){if("."===a[e]&&(b+=1,1>=b))continue;return["Nothing"]}return["Just",parseFloat(a)]},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:function(a){return function(d){return Math.atan2(a,d)}},mod:j,min:function(a){return function(d){return Math.min(a,
107−d)}},max:function(a){return function(d){return Math.max(a,d)}},flip:function(a){return function(d){return function(e){return a(e)(d)}}},clamp:function(a){return function(d){return function(e){return Math.min(d,Math.max(a,e))}}},curry:function(a){return function(d){return function(e){return a(["Tuple2",d,e])}}},uncurry:function(a){return function(d){if("Tuple2"!==d[0])throw"Function was uncurry'd but was not given a pair.";return a(d[1])(d[2])}},logBase:function(a){return function(d){return Math.log(d)/
108−Math.log(a)}},Just:Elm.Maybe.Just,Nothing:Elm.Maybe.Nothing,maybe:Elm.Maybe.maybe,map:Elm.List.map,zip:Elm.List.zip,zipWith:Elm.List.zipWith,filter:Elm.List.filter,head:Elm.List.head,tail:Elm.List.tail,last:Elm.List.last,length:Elm.List.length,reverse:Elm.List.reverse,foldr:Elm.List.foldr,foldr1:Elm.List.foldr1,foldl:Elm.List.foldl,foldl1:Elm.List.foldl1,and:Elm.List.and,or:Elm.List.or,all:Elm.List.all,any:Elm.List.any,sum:Elm.List.sum,product:Elm.List.product,concat:Elm.List.concat,concatMap:Elm.List.concatMap,
109−maximum:Elm.List.maximum,minimum:Elm.List.minimum,scanl:Elm.List.scanl,scanl1:Elm.List.scanl1,take:Elm.List.take,drop:Elm.List.drop,zip:Elm.List.zip,unzip:Elm.List.unzip,lift:Elm.Signal.lift,lift2:Elm.Signal.lift2,lift3:Elm.Signal.lift3,lift4:Elm.Signal.lift4,lift5:Elm.Signal.lift5,lift6:Elm.Signal.lift6,lift7:Elm.Signal.lift7,lift8:Elm.Signal.lift8,foldp:Elm.Signal.foldp,foldp1:Elm.Signal.foldp1,foldp_:Elm.Signal.foldp_,constant:Elm.Signal.constant,merge:Elm.Signal.merge,count:Elm.Signal.count,countIf:Elm.Signal.countIf,
110−average:Elm.Signal.average,keepIf:Elm.Signal.keepIf,dropIf:Elm.Signal.dropIf,keepWhen:Elm.Signal.keepWhen,dropWhen:Elm.Signal.dropWhen,dropRepeats:Elm.Signal.dropRepeats,sampleOn:Elm.Signal.sampleOn,timestamp:Elm.Signal.timestamp,timeOf:Elm.Signal.timeOf}}();(function(){var e=function(e){for(var a in e)Elm.Prelude[a]=e[a]};e(Elm.Color);e(Elm.Text);e(Elm.Graphics);e(Elm.Time);show=Value.show})();
111−Elm.Dict=function(){function e(a){return function(b){return function(c){return function(d){return function(e){return["RBNode",a,b,c,d,e]}}}}}function j(a){a:{switch(a[0]){case "RBEmpty":throw"(min RBEmpty) is not defined";case "RBNode":switch(a[4][0]){case "RBEmpty":a=["Tuple2",a[2],a[3]];break a}a=j(a[4]);break a}throw"Non-exhaustive pattern match in case";}return a}function a(b){return function(c){var d;a:{switch(c[0]){case "RBEmpty":d=v;break a;case "RBNode":d=function(){switch(p(b)(c[2])[0]){case "EQ":return z(c[3]);
112−case "GT":return a(b)(c[5]);case "LT":return a(b)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return d}}function d(a){return function(b){return function(c){var e;a:{switch(c[0]){case "RBEmpty":e=a;break a;case "RBNode":e=function(){switch(p(b)(c[2])[0]){case "EQ":return c[3];case "GT":return d(a)(b)(c[5]);case "LT":return d(a)(b)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";
113−}return e}}}function i(b){return function(c){return E(a(b)(c))}}function b(a){a:{switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":a=e(a[1])(a[5][2])(a[5][3])(e(A)(a[2])(a[3])(a[4])(a[5][4]))(a[5][5]);break a}}throw"rotateLeft of a node without enough children";}return a}function l(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":a=e(a[1])(a[4][2])(a[4][3])(a[4][4])(e(A)(a[2])(a[3])(a[4][5])(a[5]));break a}}throw"rotateRight of a node without enough children";}return a}function h(a){a:{switch(a[0]){case "Black":a=
114−A;break a;case "Red":a=D;break a}throw"Non-exhaustive pattern match in case";}return a}function k(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[5][0]){case "RBNode":a=e(h(a[1]))(a[2])(a[3])(e(h(a[4][1]))(a[4][2])(a[4][3])(a[4][4])(a[4][5]))(e(h(a[5][1]))(a[5][2])(a[5][3])(a[5][4])(a[5][5]));break a}}}throw"color_flip called on a RBEmpty or RBNode with a RBEmpty child";}return a}function f(a){a:switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=
115−b(a);break a}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=l(a);break a}}}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=k(a);break a}}}}}return a}function c(a){a:switch(a[0]){case "RBNode":switch(a[1][0]){case "Red":a=e(D)(a[2])(a[3])(a[4])(a[5]);break a}}return a}function g(a){return function(b){return function(d){var g=
116−function(c){var d;a:{switch(c[0]){case "RBEmpty":d=e(A)(a)(b)(y)(y);break a;case "RBNode":d=function(){switch(p(a)(c[2])[0]){case "EQ":return e(c[1])(c[2])(b)(c[4])(c[5]);case "GT":return e(c[1])(c[2])(c[3])(c[4])(g(c[5]));case "LT":return e(c[1])(c[2])(c[3])(g(c[4]))(c[5])}throw"Non-exhaustive pattern match in case";}();d=f(d);break a}throw"Non-exhaustive pattern match in case";}return d};return c(g(d))}}}function r(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":a=
117−!0;break a}}}a=!1}return a}function m(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=!0;break a}}}}a=!1}return a}function n(a){if(w(r(a))&&w(m(a))){a=k(a);a:switch(a[0]){case "RBNode":b:switch(a[5][0]){case "RBNode":switch(a[5][4][0]){case "RBNode":switch(a[5][4][1][0]){case "Red":a=k(b(e(a[1])(a[2])(a[3])(a[4])(l(a[5]))));break b}}}break a}}return a}function u(a){return function(b){var d=function(b){a:{switch(b[0]){case "RBEmpty":b=
118−y;break a;case "RBNode":if("LT"===p(a)(b[2])[0])b:{b=n(b);switch(b[0]){case "RBEmpty":throw"delLT on RBEmpty";case "RBNode":b=f(e(b[1])(b[2])(b[3])(d(b[4]))(b[5]));break b}break}else{var g=r(b)?l(b):b,h;b:{switch(g[0]){case "RBNode":switch(g[5][0]){case "RBEmpty":h=C(a,g[2]);break b}}h=!1}if(h)b=g[4];else{g=w;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":h=!0;break b}}}h=!1}if(g=g(h)){g=w;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":h=
119−!0;break b}}}}h=!1}g=g(h)}g&&(b=k(b),b=m(b)?k(l(b)):b);b:{switch(b[0]){case "RBNode":g=C(a,b[2]);break b}g=!1}if(g)b:{switch(b[0]){case "RBEmpty":throw"delEQ called on a RBEmpty";case "RBNode":h=j(b[5]);c:{switch(h[0]){case "Tuple2":g=h[1];break c}break}c:{switch(h[0]){case "Tuple2":h=h[2];break c}break}var g=e(b[1])(g)(h)(b[4]),i=function(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBEmpty":a=y;break a}}b:{a=n(a);switch(a[0]){case "RBEmpty":a=y;break b;case "RBNode":a=f(e(a[1])(a[2])(a[3])(i(a[4]))(a[5]));
120−break b}throw"Non-exhaustive pattern match in case";}}return a},b=c(i(b[5])),b=f(g(b));break b}break}else b:{switch(b[0]){case "RBEmpty":throw"delGT called on a RBEmpty";case "RBNode":b=f(e(b[1])(b[2])(b[3])(b[4])(d(b[5])));break b}break}}}break a}throw"Non-exhaustive pattern match in case";}return b};return i(a)(b)?c(d(b)):b}}function x(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=y;break a;case "RBNode":b=e(b[1])(b[2])(a(b[3]))(x(a)(b[4]))(x(a)(b[5]));break a}throw"Non-exhaustive pattern match in case";
121−}return b}}function q(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=q(a)(a(c[2])(c[3])(q(a)(b)(c[4])))(c[5]);break a}throw"Non-exhaustive pattern match in case";}return c}}}function t(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=t(a)(a(c[2])(c[3])(t(a)(b)(c[5])))(c[4]);break a}throw"Non-exhaustive pattern match in case";}return c}}}var p=Elm.Prelude.compare,s=Elm.Prelude.uncurry,v=Elm.Prelude.Nothing,
122−z=Elm.Prelude.Just,w=Elm.Prelude.not,C=Elm.Prelude.eq,E=Elm.Maybe.isJust,A=["Red"],D=["Black"],y=["RBEmpty"],B=y;return{$op:{},empty:B,lookup:a,findWithDefault:d,member:i,insert:g,singleton:function(a){return function(b){return g(a)(b)(y)}},remove:u,map:x,foldl:q,foldr:t,union:function(a){return function(b){return q(g)(b)(a)}},intersect:function(a){return function(b){return q(function(a){return function(c){return function(d){return i(a)(b)?g(a)(c)(d):d}}})(B)(a)}},diff:function(a){return function(b){return q(function(a){return function(){return function(b){return u(a)(b)}}})(a)(b)}},
123−keys:function(a){return t(function(a){return function(){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},values:function(a){return t(function(){return function(a){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},toList:function(a){return t(function(a){return function(b){return function(c){return["Cons",["Tuple2",a,b],c]}}})(["Nil"])(a)},fromList:function(a){return Elm.List.foldl(s(g))(B)(a)}}}();
124−Elm.Set=function(){var e=Elm.Dict.empty,j=Elm.Dict.remove,a=Elm.Dict.member,d=Elm.Dict.union,i=Elm.Dict.intersect,b=Elm.Dict.diff,l=Elm.Dict.keys,h=Elm.List.foldl(function(a){return function(b){return Elm.Dict.insert(a)(["Tuple0"])(b)}})(e);return{empty:e,singleton:function(a){return Elm.Dict.singleton(a)(["Tuple0"])},insert:function(a){return Elm.Dict.insert(a)(["Tuple0"])},remove:j,member:a,union:d,intersect:i,diff:b,toList:l,fromList:h,foldl:function(a){return Elm.Dict.foldl(function(b){return function(){return function(c){return a(b)(c)}}})},
125−foldr:function(a){return Elm.Dict.foldr(function(b){return function(){return function(c){return a(b)(c)}}})},map:function(a){return function(b){b=l(b);return h(Elm.List.map(a)(b))}}}}();
126−(function(){try{var e={};for(this.i in Elm)eval("var "+this.i+"=Elm[this.i];");if(Elm.Automaton)throw"Module name collision, 'Automaton' is already defined.";Elm.Automaton=function(){function a(a){return["Automaton",a]}function d(b){return a(function(a){var c=unzip(map(function(b){a:{switch(b[0]){case "Automaton":b=b[1](a);break a}throw"Non-exhaustive pattern match in case";}return b})(b)),e;a:{switch(c[0]){case "Tuple2":e=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=
127−c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",e,d(c)]})}function i(b){return a(function(a){return["Tuple2",b(a),i(b)]})}function b(c){return function(d){return a(function(a){a=d(a)(c);return["Tuple2",a,b(a)(d)]})}}function j(b){return function(c){return a(function(a){var d=c(a)(b);a:{switch(d[0]){case "Tuple2":a=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=d[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",
128−a,j(d)(c)]})}}function h(a){return function(b){a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":b=["Tuple2",a[1]-b[1],a[2]-b[2]];break b}break}break a}throw"Non-exhaustive pattern match in case";}return b}}function k(a){return function(b){var c;a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":var d=function(a){return["Tuple2",b[2],["Tuple2",a,b[2]]]};c=function(){switch(b[1][0]){case "DragFrom":var c;a[1]?c=["Tuple2",uncurry(move)(h(a[2])(b[1][1]))(b[2]),["Tuple2",["DragFrom",
129−b[1][1]],b[2]]]:(c=uncurry(move)(h(a[2])(b[1][1]))(b[2]),c=["Tuple2",c,["Tuple2",g,c]]);return c;case "Ignore":return d(a[1]?r:g);case "Listen":return d(not(a[1])?g:isWithin(a[2])(b[2])?["DragFrom",a[2]]:r)}throw"Non-exhaustive pattern match in case";}();break b}break}break a}throw"Non-exhaustive pattern match in case";}return c}}try{if(!(Elm.Prelude instanceof Object))throw"module not found";}catch(f){throw"Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file.";
130−}var c={};for(this.i in Elm.Prelude)c[this.i]||eval("var "+this.i+" = Elm.Prelude[this.i];");var g=["Listen"],r=["Ignore"];e[">>>"]=function(b){return function(c){var d;a:{switch(b[0]){case "Automaton":d=b[1];break a}throw"Non-exhaustive pattern match in case";}var f;a:{switch(c[0]){case "Automaton":f=c[1];break a}throw"Non-exhaustive pattern match in case";}return a(function(a){var a=d(a),b;a:{switch(a[0]){case "Tuple2":b=a[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(a[0]){case "Tuple2":a=
131−a[2];break a}throw"Non-exhaustive pattern match in case";}var c=f(b);a:{switch(c[0]){case "Tuple2":b=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",b,e[">>>"](a)(c)]})}};e["<<<"]=function(a){return function(b){return e[">>>"](b)(a)}};e["^>>"]=function(a){return function(b){return e[">>>"](i(a))(b)}};e[">>^"]=function(a){return function(b){return e[">>>"](a)(i(b))}};e["^<<"]=function(a){return function(b){return e[">>>"](b)(i(a))}};
132−e["<<^"]=function(a){return function(b){return e[">>>"](i(b))(a)}};c=b(0)(function(){return function(a){return 1+a}});return{$op:{">>>":e[">>>"],"<<<":e["<<<"],"^>>":e["^>>"],">>^":e[">>^"],"^<<":e["^<<"],"<<^":e["<<^"]},run:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=lift(fst)(foldp_(function(a){return function(b){a:{switch(b[0]){case "Tuple2":switch(b[2][0]){case "Automaton":b=b[2][1](a);break a}}throw"Non-exhaustive pattern match in case";}return b}})(a[1])(b));break a}throw"Non-exhaustive pattern match in case";
133−}return b}},step:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return b}},combine:d,pure:i,init:b,init_:j,count:c,draggable:function(a){return j(["Tuple2",g,a])(k)}}}();Elm.main=function(){return Elm.Automaton.main}}catch(j){Elm.main=function(){document.body.innerHTML=Elm.Text.monospace('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2><br/><span style="color:grey">Runtime Error in Automaton module:<br/>'+
134−j+"</span>");throw j;}}})();
compiler/elm-runtime-0.7.1.1.jsdeleted−142
@@ -1,142 +0,0 @@
1−Elm={};var Guid=function(){var d=0;return{guid:function(){return d+=1}}}();
2−Elm.JavaScript=function(){function d(b){for(var a=["Nil"],c=b.length;c--;)a=["Cons",b[c],a];return a}function f(b){for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return a}function b(b){return b.slice(1)}function c(b){return["Tuple"+b.length].concat(b)}return{castJSBoolToBool:function(b){return b},castBoolToJSBool:function(b){return b},castJSNumberToFloat:function(b){return b},castFloatToJSNumber:function(b){return b},castJSNumberToInt:function(b){return~~b},castIntToJSNumber:function(b){return b},
3−Experimental:{castJSElementToElement:function(b){return function(a){return function(c){return["Element",Guid.guid(),["EExternalHtml",c],b,a,1,["Nothing"],["Nothing"]]}}},castElementToJSElement:function(b){return Render.render(b)}},castJSArrayToList:d,castListToJSArray:f,castJSStringToString:d,castStringToJSString:function(b){return"string"===typeof b?b:f(b).join("")},castTupleToJSTuple2:b,castTupleToJSTuple3:b,castTupleToJSTuple4:b,castTupleToJSTuple5:b,castJSTupleToTuple2:c,castJSTupleToTuple3:c,
4−castJSTupleToTuple4:c,castJSTupleToTuple5:c}}();var JSjson=window.JSON;
5−Elm.JSON=function(){function d(a,b){return function(j){return function(l){var g=c.castStringToJSString(j);return l[1].hasOwnProperty(g)&&(l=l[1][g],l[0]===a)?l[1]:b}}}function f(a){return function(b){function j(a){switch(a[0]){case "JsonNull":return null;case "JsonString":return c.castStringToJSString(a[1]);case "JsonObject":var g={};a=a[1][1];for(var e in a)g[e]=j(a[e]);return g;case "JsonArray":g=c.castListToJSArray(a[1]);for(e=g.length;e--;)g[e]=j(g[e]);return g;default:return a[1]}}return JSjson.stringify(j(["JsonObject",
6−b]),null,c.castStringToJSString(a))}}function b(a){function b(a){switch(typeof a){case "string":return["JsonString",c.castJSStringToString(a)];case "number":return["JsonNumber",c.castJSNumberToFloat(a)];case "boolean":return["JsonBool",c.castJSBoolToBool(a)];case "object":if(null===a)return["JsonNull"];for(var g in a)a[g]=b(a[g]);return a instanceof Array?["JsonArray",c.castJSArrayToList(a)]:["JsonObject",["JSON",a]]}}a=JSjson.parse(a);for(var j in a)a[j]=b(a[j]);return["JSON",a]}var c=Elm.JavaScript,
7−h=["JSON",{}];return{empty:h,singleton:function(a){return function(b){var j={};j[c.castStringToJSString(a)]=b;return["JSON",j]}},insert:function(a){return function(b){return function(j){j=j[1];var l={},g;for(g in j)l[g]=j[g];l[c.castStringToJSString(a)]=b;return["JSON",l]}}},lookup:function(a){return function(b){var j=c.castStringToJSString(a);return b[1].hasOwnProperty(j)?["Just",b[1][j]]:["Nothing"]}},findString:d("JsonString",["Nil"]),findObject:d("JsonObject",h),findArray:d("JsonArray",["Nil"]),
8−findWithDefault:function(a){return function(b){return function(j){var l=c.castStringToJSString(b);return j[1].hasOwnProperty(l)?j[1][l]:a}}},remove:function(a){return function(b){b=b[1];var j={},l;for(l in b)j[l]=b[l];delete j[c.castStringToJSString(a)];return["JSON",j]}},toPrettyJSString:f,toJSString:f(""),fromJSString:b,toPrettyString:function(a){return function(b){return c.castJSStringToString(f(a)(b))}},toString:function(a){return c.castJSStringToString(f("")(a))},fromString:function(a){return b(c.castStringToJSString(a))},
9−toList:function(a){a=a[1];var b=[],j;for(j in a)b.push(Value.Tuple(c.castJSStringToString(j),a[j]));return c.castJSArrayToList(b)},fromList:function(a){a=c.castListToJSArray(a);for(var b={},j=a.length;j--;)b[c.castStringToJSString(a[j][1])]=a[j][2];return["JSON",b]},JsonString:function(a){return["JsonString",a]},JsonNumber:function(a){return["JsonNumber",a]},JsonBool:function(a){return["JsonBool",a]},JsonNull:["JsonNull"],JsonArray:function(a){return["JsonArray",a]},JsonObject:function(a){return["JsonObject",
10−a]}}}();
11−var Value=function(){function d(a){if(0==a.length)return a;a=a.replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\n/g,"<br/>");a=a.split("<br/>");for(var b=a.length;b--;){var c=a,l=b,g;g=a[b];if(0!=g.length){g=g.split("");" "==g[0]&&(g[0]="&nbsp;");for(var e=g.length;--e;)" "==g[e][0]&&" "==g[e-1]&&(g[e-1]+=g[e],g[e]="");for(e=g.length;e--;)if(1<g[e].length&&" "==g[e][0]){for(var k=g[e].split(""),f=k.length-2;0<=f;f-=2)k[f]="&nbsp;";g[e]=k.join("")}g=g.join("");
12−g=" "===g[g.length-1]?g.slice(0,-1)+"&nbsp;":g}c[l]=g}return a.join("<br/>")}var f=function(a,b){if("object"===typeof a){if(a.hasOwnProperty("_")){for(var c in a)if(a[c]!=b[c])return!1;for(c in b)if(a[c]!=b[c])return!1;return!0}if(a===b)return!0;if(a.length!==b.length)return!1;for(c=a.length;c--;)if(!f(a[c],b[c]))return!1;return!0}return a===b},b=function(a){if("function"===typeof a)return"<function>";if("boolean"===typeof a)return a?"True":"False";if("number"!==typeof a){if("string"===typeof a&&
13−2>a.length)return"'"+a+"'";if("object"===typeof a&&a.hasOwnProperty("_")){var c=[],j;for(j in a)if("_"!=j)for(var l=a[j].length;l--;)c.push(j+" = "+b(a[j][l]));return 0===c.length?"{}":"{ "+c.join(", ")+" }"}if(a[0]){if("Tuple"===a[0].substring(0,5)){c=Array(a.length-1);for(l=a.length;--l;)c[l-1]=b(a[l]);return"("+c.join(",")+")"}if("Cons"===a[0]){j="string"===typeof a[1]?'"':"]";var l="string"===typeof a[1]?"":",",g="string"===typeof a[1]?function(a){return a}:b,c=("string"===typeof a[1]?'"':"[")+
14−g(a[1]);for(a=a[2];;)if("Cons"===a[0])c+=l+g(a[1]),a=a[2];else return c+j}else{if("Nil"===a[0])return"[]";if("JSON"===a[0])return"(JSON.fromList "+b(Elm.JSON.toList(a))+")";if("RBNode"===a[0]||"RBEmpty"===a[0])return a=Elm.Dict.foldr(function(a){return function(g){return function(b){return["Cons",["Tuple2",a,g],b]}}})(["Nil"])(a),c="Dict","Cons"===a[0]&&"Tuple0"===a[1][2][0]&&(c="Set",a=Elm.List.map(function(a){return a[1]})(a)),"("+c+".fromList "+b(a)+")";c="";for(l=a.length;--l;)c=" "+b(a[l])+c;
15−c=a[0]+c;return 1<a.length?"("+c+")":c}}}return a+""},c=function(a){for(var b=["Nil"],c=a.length;c--;)b=["Cons",a[c],b];return b},h;h=document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)};return{eq:f,str:c,show:function(a){return c(b(a))},Tuple:function(){var a=arguments.length,b=Array(a+1);for(b[0]="Tuple"+arguments.length;a--;)b[a+1]=arguments[a];return b},append:function(a,b){if("string"===typeof a&&"string"===typeof b)return a.concat(b);
16−if("Nil"===a[0])return b;var c=["Cons",a[1],["Nil"]],l=c;for(a=a[2];"Cons"===a[0];)l[2]=["Cons",a[1],["Nil"]],a=a[2],l=l[2];l[2]=b;return c},listToArray:function(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b},toText:function(a){if("string"===typeof a)return d(a);for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return d(b.join(""))},properEscape:d,getTextSize:function(a,b,c){var l=document.createElement("div");l.innerHTML=c;l.style.textAlign="left";0<a&&(l.style.width=a+"px");l.style.visibility=
17−"hidden";l.style.styleFloat="left";l.style.cssFloat="left";document.body.appendChild(l);c=window.getComputedStyle(l,null);a=c.getPropertyValue("width").slice(0,-2)-0;c=c.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(l);return[Math.ceil(a),Math.ceil(Math.max(b,c))]},getSize:function(a){a=a.cloneNode(!0);a.style.visibility="hidden";a.style.styleFloat="left";a.style.cssFloat="left";document.body.appendChild(a);var b=a.offsetWidth,c=a.offsetHeight;document.body.removeChild(a);return[b,
18−c]},getExcess:function(a){a=a.cloneNode(!0);a.style.visibility="hidden";a.style.styleFloat="left";a.style.cssFloat="left";document.body.appendChild(a);var b=a.offsetWidth,c=a.offsetHeight,l=window.getComputedStyle(a,null),g=l.getPropertyValue("width").slice(0,-2)-0,l=l.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(a);return[b-g,c-l]},groupForms:function(a){a=Elm.JavaScript.castListToJSArray(a);for(var b=[],c=[],l=a.length;l--;){var g=a[l];switch(g[4][0]){case "FElement":0<c.length&&
19−(b.push(c),c=[]);b.push(g);break;default:c.push(g)}}0<c.length&&b.push(c);return b},wrap:function(b){var c=Value.getSize(b);return["Element",Guid.guid(),["EHtml",b],c[0],c[1],1,["Nothing"],["Nothing"]]},addListener:h}}();
20−Elm.List=function(){function d(b){return function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&g("map");var e=["Cons",b(a[1]),["Nil"]],c=e;for(a=a[2];"Cons"===a[0];)c[2]=["Cons",b(a[1]),["Nil"]],a=a[2],c=c[2];return e}}function f(a){return function(b){return function(e){var c=b;if("Nil"===e[0])return c;for("Cons"!==e[0]&&g("foldl");"Cons"===e[0];)c=a(e[1])(c),e=e[2];return c}}}function b(a){return function(b){return function(e){var c=b;if("Nil"===e[0])return c;"Cons"!==e[0]&&g("foldr");for(var k=[];"Cons"===
21−e[0];)k.push(e[1]),e=e[2];for(e=k.length;e--;)c=a(k[e])(c);return c}}}function c(a){return function(b){var g;"Cons"!==b[0]?g=void 0:(g=b[1],b=b[2],g=f(a)(g)(b));return g}}function h(b){return function(a){return function(e){if("Nil"===e[0])return["Cons",a,["Nil"]];"Cons"!==e[0]&&g("scanl");for(var c=[a];"Cons"===e[0];)a=b(e[1])(a),c.push(a),e=e[2];e=["Nil"];for(var k=c.length;k--;)e=["Cons",c[k],e];return e}}}function a(b){return function(e){a:{for(var g=[function(b){return"Nil"!==b[0]?void 0:["Tuple2",
22−["Nil"],["Nil"]]},function(e){if("Cons"===e[0]){var g=e[1];e=e[2];var c=a(b)(e);"Tuple2"!==c[0]?g=void 0:(e=c[1],c=c[2],g=b(g)?["Tuple2",["Cons",g,e],c]:["Tuple2",e,["Cons",g,c]]);return g}}],c=g.length;c--;){var k=g[c](e);if(void 0!==k){e=k;break a}}e=void 0}return e}}function m(b){a:{for(var a=[function(b){return"Nil"!==b[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(b){if("Cons"!==b[0])b=void 0;else if(b=["Tuple2",b[1],m(b[2])],"Tuple2"!==b[0]||"Tuple2"!==b[1][0])b=void 0;else{var a=b[1][1],e=
23−b[1][2];b="Tuple2"!==b[2][0]?void 0:["Tuple2",["Cons",a,b[2][1]],["Cons",e,b[2][2]]]}return b}],e=a.length;e--;){var g=a[e](b);if(void 0!==g){b=g;break a}}b=void 0}return b}function j(b){return function(a){a:{for(var e=[function(b){return"Nil"!==b[0]?void 0:["Nil"]},function(b){if("Cons"===b[0]){var a=b[1];return"Nil"!==b[2][0]?void 0:["Cons",a,["Nil"]]}},function(a){if("Cons"===a[0]){var e=a[1];if("Cons"===a[2][0]){var g=a[2][1];a=a[2][2];return["Cons",e,["Cons",b,j(b)(["Cons",g,a])]]}}}],g=e.length;g--;){var c=
24−e[g](a);if(void 0!==c){a=c;break a}}a=void 0}return a}}function l(b){return function(a){a:{for(var e=[function(b){return"Nil"!==b[0]?void 0:["Nil"]},function(b){if("Cons"===b[0]){var a=b[1];return"Nil"!==b[2][0]?void 0:a}},function(a){if("Cons"===a[0]){var e=a[1];if("Cons"===a[2][0]){var g=a[2][1];a=a[2][2];return Value.append(e,Value.append(b,l(b)(["Cons",g,a])))}}}],g=e.length;g--;){var c=e[g](a);if(void 0!==c){a=c;break a}}a=void 0}return a}}var g=function(b){throw"Function '"+b+"' expecting a list!";
25−},e=f(function(b){return function(a){return["Cons",b,a]}})(["Nil"]),k=b(function(b){return function(a){return Value.append(b,a)}})(["Nil"]),x=f(function(b){return function(a){return b&&a}})(!0),n=f(function(b){return function(a){return b||a}})(!1),p=f(function(b){return function(a){return b+a}})(0),s=f(function(b){return function(a){return b*a}})(1),v=c(function(b){return function(a){return Math.max(b,a)}}),t=c(function(b){return function(a){return Math.min(b,a)}});return{head:function(b){if("Cons"!==
26−b[0])throw"Error: 'head' only accepts lists of length greater than one.";return b[1]},tail:function(b){if("Cons"!==b[0])throw"Error: 'tail' only accepts lists of length greater than one.";return b[2]},last:function(b){if("Cons"!==b[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var a=b[1];"Cons"===b[0];)a=b[1],b=b[2];return a},map:d,foldl:f,foldr:b,foldl1:c,foldr1:function(b){return function(a){if("Nil"===a[0])throw"'foldr1' requires an non-empty list.";"Cons"!==a[0]&&
27−g("foldr1");for(var e=[];"Cons"===a[0];)e.push(a[1]),a=a[2];a=e.pop();for(var c=e.length;c--;)a=b(e[c])(a);return a}},scanl:h,scanl1:function(b){return function(a){if("Cons"!==a[0])throw"Error: 'scanl1' requires a list of at least length 1.";return h(b)(a[1])(a[2])}},filter:function(b){return function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&g("filter");for(var e=[];"Cons"===a[0];)b(a[1])&&e.push(a[1]),a=a[2];a=["Nil"];for(var c=e.length;c--;)a=["Cons",e[c],a];return a}},length:function(b){for(var a=
28−0;"Cons"===b[0];)a+=1,b=b[2];return a},reverse:e,concat:k,concatMap:function(b){return function(a){return k(d(b)(a))}},and:x,or:n,all:function(b){return f(function(a){return function(e){return e&&b(a)}})(!0)},any:function(b){return f(function(a){return function(e){return e||b(a)}})(!1)},sum:p,product:s,maximum:v,minimum:t,partition:a,zipWith:function(b){return function(a){return function(e){if("Nil"===a[0]||"Nil"===e[0])return["Nil"];("Cons"!==a[0]||"Cons"!==e[0])&&g("zipWith");for(var c=[];"Cons"===
29−a[0]&&"Cons"===e[0];)c.push(b(a[1])(e[1])),a=a[2],e=e[2];e=["Nil"];for(var k=c.length;k--;)e=["Cons",c[k],e];return e}}},zip:function(a){return function(b){if("Nil"===a[0]||"Nil"===b[0])return["Nil"];("Cons"!==a[0]||"Cons"!==b[0])&&g("zip");for(var e=[];"Cons"===a[0]&&"Cons"===b[0];)e.push(["Tuple2",a[1],b[1]]),a=a[2],b=b[2];b=["Nil"];for(var c=e.length;c--;)b=["Cons",e[c],b];return b}},unzip:m,intersperse:j,intercalate:l,sort:function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&g("sort");for(var b=
30−[];"Cons"===a[0];)b.push(a[1]),a=a[2];b.sort(function(a,b){return a-b});a=["Nil"];for(var e=b.length;e--;)a=["Cons",b[e],a];return a},take:function(a){return function(b){if(0>=a)return["Nil"];if("Nil"===b[0])return b;"Cons"!==b[0]&&g("take");var e=["Cons",b[1],["Nil"]],c=e;b=b[2];for(--a;"Cons"===b[0]&&0<a;)c[2]=["Cons",b[1],["Nil"]],c=c[2],b=b[2],--a;return e}},drop:function(a){return function(b){if("Nil"===b[0])return b;for("Cons"!==b[0]&&g("drop");"Cons"===b[0]&&0<a;)b=b[2],--a;return b}}}}();
31−Elm.Maybe=function(){function d(f){return function(b){return"Just"===f[0]?["Cons",f[1],b]:b}}return{Just:function(f){return["Just",f]},Nothing:["Nothing"],justs:Elm.List.foldr(d)(["Nil"]),isJust:function(f){return"Just"===f[0]},isNothing:function(f){return"Nothing"===f[0]},cons:d,maybe:function(f){return function(b){return function(c){return"Just"===c[0]?b(c[1]):f}}}}}();
32−Elm.Either=function(){function d(b){return"Left"==b[0]}function f(b){return"Right"==b[0]}function b(b){return Elm.List.map(function(b){return b[1]})(b)}return{Left:function(b){return["Left",b]},Right:function(b){return["Right",b]},either:function(b){return function(f){return function(a){switch(a[0]){case "Left":return b(a[1]);case "Right":return f(a[1])}}}},isLeft:d,isRight:f,lefts:function(c){return b(Elm.List.filter(d)(c))},rights:function(c){return b(Elm.List.filter(f)(c))},partition:function(c){c=
33−Elm.List.partition(d)(c);c[1]=b(c[1]);c[2]=b(c[2]);return c}}}();
34−Elm.Char=function(){function d(b,a){return function(c){c=c.charCodeAt(0);return b<=c&&c<=a}}var f=d(48,57),b=d(97,102),c=d(65,70);return{fromCode:function(b){return String.fromCharCode(b)},toCode:function(b){return b.charCodeAt(0)},toUpper:function(b){return b.toUpperCase()},toLower:function(b){return b.toLowerCase()},toLocaleUpper:function(b){return b.toLocaleUpperCase()},toLocaleLower:function(b){return b.toLocaleLowerCase()},isLower:d(97,122),isUpper:d(65,90),isDigit:f,isOctDigit:d(48,55),isHexDigit:function(d){return f(d)||
35−b(d)||c(d)}}}();
36−Elm.Color=function(){function d(f){var b=f.value*f.saturation,c=f.hue/60,d=b*(1-Math.abs(c%2-1)),a=0,m=0,j=0;0<=c&&1>c?(a=b,m=d,j=0):1<=c&&2>c?(a=d,m=b,j=0):2<=c&&3>c?(a=0,m=b,j=d):3<=c&&4>c?(a=0,m=d,j=b):4<=c&&5>c?(a=d,m=0,j=b):5<=c&&6>c&&(a=b,m=0,j=d);f=f.value-b;return["Color",Math.round(255*(a+f)),Math.round(255*(m+f)),Math.round(255*(j+f)),1]}return{rgba:function(f){return function(b){return function(c){return function(d){return["Color",f,b,c,d]}}}},rgb:function(f){return function(b){return function(c){return["Color",f,
37−b,c,1]}}},hsva:function(f){return function(b){return function(c){return function(h){var a=d({hue:f,saturation:b,value:c});a[4]=h;return a}}}},hsv:function(f){return function(b){return function(c){return d({hue:f,saturation:b,value:c})}}},red:["Color",255,0,0,1],green:["Color",0,255,0,1],blue:["Color",0,0,255,1],yellow:["Color",255,255,0,1],cyan:["Color",0,255,255,1],magenta:["Color",255,0,255,1],black:["Color",0,0,0,1],white:["Color",255,255,255,1],gray:["Color",128,128,128,1],grey:["Color",128,128,
38−128,1],complement:function(f){var b;b=f[1]/255;var c=f[2]/255;f=f[3]/255;var h=Math.max(b,c,f),a=Math.min(b,c,f),a=h-a,m=0;0===a?m=0:h===b?m=(c-f)/a%6:h===c?m=(f-b)/a+2:h===f&&(m=(b-c)/a+4);b={value:h,hue:60*m,saturation:0===h?0:a/h};b.hue=(b.hue+180)%360;return d(b)},extract:function(f){return 1===f[4]?"rgb("+f[1]+","+f[2]+","+f[3]+")":"rgba("+f[1]+","+f[2]+","+f[3]+","+f[4]+")"}}}();
39−var Collage=function(){function d(b,a){var e=a.length-1;if(!(0>=e))for(b.moveTo(a[e][1],a[e][2]);e--;)b.lineTo(a[e][1],a[e][2])}function f(b,a,e,c){0===b.length&&(b=[8,4]);var f=c.length-1;if(!(0>=f)){var n=c[f][1],p=c[f][2],d=0,j=0,h=0,m=0,q=0,u=0,w=b.length,z=!0,y=b[0];for(a.moveTo(n,p);f--;){d=c[f][1];j=c[f][2];h=d-n;m=j-p;for(q=Math.sqrt(h*h+m*m);y<=q;)n+=h*y/q,p+=m*y/q,a[z?"lineTo":"moveTo"](n,p),h=d-n,m=j-p,q=Math.sqrt(h*h+m*m),z=!z,u=(u+1)%w,y=b[u];0<q&&(a[z?"lineTo":"moveTo"](d,j),y-=q);n=
40−d;p=j}}a.strokeStyle=Elm.Color.extract(e);a.stroke()}function b(b,a,e,c,x){a.clearRect(0,0,e,c);for(e=x.length;e--;){var n=x[e],p=b;c=a;var h=n[1],m=n[2],t=n[3][1],r=n[3][2],n=n[4];c.save();(0!==t||0!==r)&&c.translate(t,r);h!==~~h&&c.rotate(2*Math.PI*h);1!==m&&c.scale(m,m);c.beginPath();switch(n[0]){case "FLine":a:switch(p=c,h=n,n=h[3][1],h[1][0]){case "Solid":h=h[2];d(p,n);p.strokeStyle=Elm.Color.extract(h);p.stroke();break;case "Dotted":f([3,3],p,h[2],n);break a;case "Dashed":f([8,4],p,h[2],n);
41−break a;case "Custom":f(h[1][1],p,h[2],n)}break;case "FShape":a:switch(t=p,m=c,p=n[1],h=n[2],n=n[3][1],p[0]){case "Filled":p=m;d(p,n);p.fillStyle=Elm.Color.extract(h);p.fill();break a;case "Outlined":p=m;d(p,n);p.strokeStyle=Elm.Color.extract(h);p.stroke();break a;case "Textured":h=t;p=p[1];t=new Image;t.src=j.castStringToJSString(p);t.onload=h;d(m,n);m.fillStyle=m.createPattern(t,"repeat");m.fill();break a;case "CustomOutline":f(p[1],m,h,n)}break;case "FImage":h=c,m=n[1],t=n[2],n=n[3],r=new Image,
42−r.onload=p,r.src=j.castStringToJSString(n),h.drawImage(r,-m/2,-t/2,m,t)}c.restore()}}function c(a,c,e){var k=Render.newElement("canvas");a=~~a;c=~~c;k.style.width=a+"px";k.style.height=c+"px";k.style.display="block";k.width=a;k.height=c;if(k.getContext){var f=k.getContext("2d");b(function(){b(this,f,a,c,e)},f,a,c,e);return k}k.innerHTML="Your browser does not support the canvas element.";return k}function h(b,a,e,c,f,n,d){b="translate("+(e-f/2)+"px,"+(c-n/2)+"px) "+(1===a?"":"scale("+a+","+a+")")+
43−" "+(b===~~b?"":"rotate("+360*b+"deg)");d.style.transform=b;d.style.msTransform=b;d.style.MozTransform=b;d.style.webkitTransform=b;d.style.OTransform=b}function a(a,g,e){if(!Value.eq(e,g)){var k=a.style.width.slice(0,-2)-0,f=a.style.height.slice(0,-2)-0;if("object"===typeof e[0]){if("object"===typeof g[0]&&a.getContext){var n=a.getContext("2d");return b(function(){b(this,n,k,f,e)},n,k,f,e)}g=c(k,f,e);g.style.position="absolute";return a.parentNode.replaceChild(g,a)}a.style.width=~~k+"px";a.style.height=
44−~~f+"px";var d=e[4][1];Render.update(a.firstChild,g[4][1],d);h(e[1],e[2],e[3][1],e[3][2],d[3],d[4],a.firstChild)}}function m(b,a,e,c,f){var n=0,d,j=(b[1]-c[1])/e;b=(b[2]-c[2])/e;0!==a&&(a*=-2*Math.PI,e=j*Math.cos(a)-b*Math.sin(a),b=j*Math.sin(a)+b*Math.cos(a),j=e);if(0===f.length)return!1;d=f[0];for(e=f.length-1;e--;){a=f[e];c=d[1];d=d[2];var h=a[1],m=a[2];if(d<m)var r=d,q=m;else r=m,q=d;if(c<h)var u=c,w=h;else u=h,w=c;r<b&&b<=q&&j<=w&&(j<=u||j<=(b-d)*(h-c)/(m-d)+c)&&++n;d=a}return 1===n%2}var j=
45−Elm.JavaScript;return{collage:function(b,a,e){if(0===e.length)return c(b,a,[]);for(var k=Array(e.length),d=e.length;d--;){var f=e[d];if("string"===typeof f[0]){var j=k,m=d,v=b,t=a,r=f[1],q=f[2],u=f[3][1],w=f[3][2],z=f[4][1],f=Render.render(z);h(r,q,u,w,z[3],z[4],f);r=Render.newElement("div");Render.addTo(r,f);r.style.width=~~v+"px";r.style.height=~~t+"px";r.style.overflow="hidden";j[m]=r}else k[d]=c(b,a,f)}return 1===e.length?k[0]:Render.flowWith(Render.goIn,function(b){return b},k)},updateCollage:function(b,
46−c,e){if(1===e.length)return a(b,c[0],e[0]);b=b.childNodes;for(var k=b.length,f=k;f--;)a(b[k-f-1],c[f],e[f])},insideForm:function(b){return function(a){var e=b[1],c=b[2];if(6>a.length){var f=a[3][1],d=a[3][2],j=0,h=a[2];switch(a[4][0]){case "FShape":for(var v=a[4][3][1],t=v.length;--t;)var r=v[t],j=Math.max(j,r[1]*r[1]+r[2]*r[2]);j*=h*h;break;case "FImage":v=h*a[4][1]/2;h=h*a[4][2]/2;j=v*v+h*h;break;case "FElement":v=h*a[4][1][3]/2,h=h*a[4][1][4]/2,j=v*v+h*h}a.push(function(b,a){var e=b-f,c=a-d;return e*
47−e+c*c<j+1})}if(!a[5](e,c))return!1;var q,u;switch(a[4][0]){case "FShape":return m(b,a[1],a[2],a[3],a[4][3][1]);case "FLine":return!1;case "FImage":q=a[4][1]/2;u=a[4][2]/2;break;case "FElement":q=a[4][1][3]/2,u=a[4][1][4]/2}return m(b,a[1],a[2],a[3],[[null,q,u],[null,-q,u],[null,-q,-u],[null,q,-u],[null,q,u]])}}}}();
48−Elm.Graphics=function(){function d(b){return function(a){return["Position",b,a]}}function f(b){return function(a){return["EText",b,a]}}function b(b){return function(a){return["EFlow",b,s.castListToJSArray(a)]}}function c(b){return["Line",s.castListToJSArray(b)]}function h(b){return function(a){var e=s.castListToJSArray(b);0<e.length&&e.push(e[0]);return["Shape",e,a]}}function a(b){return function(a){return function(e){return function(c){return["Form",b,a,e,c]}}}}function m(b){return function(a){return function(e){return["FLine",
49−b,a,e]}}}function j(b){return function(a){return function(e){return["FShape",b,a,e]}}}function l(b,a,e,c,g,k){return["Element",Guid.guid(),b,a,e,c,g,k]}function g(b,a,e){return["Element",Guid.guid(),b,a,e,1,["Nothing"],["Nothing"]]}function e(b){return~~b[3]}function k(b){return~~b[4]}function x(b){return function(a){return function(e){return g(["EImage",s.castStringToJSString(e)],b,a)}}}function n(b){return function(a){return g(z,b,a)}}function p(b){return function(a){return function(e){var c=map(function(e){return["Tuple2",
50−b/2*Math.cos(2*(Math.PI/50)*e),a/2*Math.sin(2*(Math.PI/50)*e)]}),g=49,k=["Nil"];if(0<=g){do k=["Cons",g,k];while(0<g--)}return h(c(k))(e)}}}for(this.i in Elm.List)eval("var "+this.i+" = Elm.List[this.i];");var s=Elm.JavaScript,v=["DRight"],t=["DDown"],r=["DOut"],q=["Near"],u=["Mid"],w=["Far"],z=["EEmpty"],y=["Solid"],D=["Dotted"],F=["Dashed"],B=["Filled"],E=["Outlined"],A=d(q)(q),C=d(w)(q),G=d(q)(w),H=d(w)(w),I=d(q)(u),J=d(w)(u),q=d(u)(q),w=d(u)(w),u=d(u)(u);return{left:["DLeft"],right:v,down:t,up:["DUp"],
51−inward:["DIn"],outward:r,topLeft:A,topRight:C,bottomLeft:G,bottomRight:H,midLeft:I,midRight:J,midTop:q,midBottom:w,middle:u,middleAt:function(b){return function(a){return["PositionAt",b,a]}},topLeftAt:function(b){return function(a){return["PositionTL",b,a]}},topRightAt:function(b){return function(a){return["PositionTR",b,a]}},bottomLeftAt:function(b){return function(a){return["PositionBL",b,a]}},bottomRightAt:function(b){return function(a){return["PositionBR",b,a]}},absolute:function(b){return["Absolute",
52−b]},relative:function(b){return["Relative",b]},width:function(b){return function(a){var e=a[2];switch(e[0]){case "EImage":case "EVideo":return l(a[2],b,a[4]*b/a[3],a[5],a[6],a[7]);case "EText":return e=Value.getTextSize(b,a[4],e[2]),l(a[2],b,e[1],a[5],a[6],a[7])}return l(a[2],b,a[4],a[5],a[6],a[7])}},height:function(a){return function(b){switch(b[2][0]){case "EImage":case "EVideo":return l(b[2],b[3]*a/b[4],a,b[5],b[6],b[7])}return l(b[2],b[3],a,b[5],b[6],b[7])}},size:function(b){return function(a){return function(e){return l(e[2],
53−b,a,e[5],e[6],e[7])}}},opacity:function(b){return function(a){return l(a[2],a[3],a[4],b,a[6],a[7])}},color:function(b){return function(a){return l(a[2],a[3],a[4],a[5],["Just",b],a[7])}},link:function(b){return function(a){return l(a[2],a[3],a[4],a[5],a[6],["Just",s.castStringToJSString(b)])}},widthOf:e,heightOf:k,sizeOf:function(a){return["Tuple2",~~a[3],~~a[4]]},text:function(a){var b=Value.getTextSize(0,0,a);return g(f("left")(a),b[0],b[1])},asText:function(a){a=Elm.Text.monospace(Value.toText(Value.show(a)));
54−var b=Value.getTextSize(0,0,a);return g(f("left")(a),b[0],b[1])},plainText:function(a){a=Value.toText(a);var b=Value.getTextSize(0,0,a);return g(f("left")(a),b[0],b[1])},centeredText:function(a){var b=Value.getTextSize(0,0,a);return g(f("center")(a),b[0],b[1])},justifiedText:function(a){var b=Value.getTextSize(0,0,a);return g(f("justify")(a),b[0],b[1])},rightedText:function(a){var b=Value.getTextSize(0,0,a);return g(f("right")(a),b[0],b[1])},image:x,images:function(a){var b=Elm.Signal.constant(n(0)(0));
55−a=Elm.Signal.lift(function(a){a=s.castStringToJSString(a);var e=new Image;e.onload=function(){Dispatcher.notify(b.id,x(this.width)(this.height)(a))};e.src=a})(a);return Elm.Signal.lift2(function(a){return function(){return a}})(b)(a)},video:function(a){return function(b){return function(e){return g(["EVideo",s.castStringToJSString(e)],a,b)}}},fittedImage:function(a){return function(b){return function(e){return g(["EFittedImage",s.castStringToJSString(e)],a,b)}}},flow:function(a){return function(c){var f;
56−f=map(e)(c);a:{switch(a[0]){case "DLeft":f=sum(f);break a;case "DRight":f=sum(f);break a}f=maximum(f)}var d;d=map(k)(c);a:{switch(a[0]){case "DDown":d=sum(d);break a;case "DUp":d=sum(d);break a}d=maximum(d)}return g(b(a)(c),f,d)}},above:function(a){return function(e){return g(b(t)(["Cons",a,["Cons",e,["Nil"]]]),Math.max(~~a[3],~~e[3]),~~a[4]+~~e[4])}},below:function(a){return function(e){return g(b(t)(["Cons",e,["Cons",a,["Nil"]]]),Math.max(~~a[3],~~e[3]),~~a[4]+~~e[4])}},beside:function(a){return function(e){return g(b(v)(["Cons",
57−a,["Cons",e,["Nil"]]]),~~a[3]+~~e[3],Math.max(~~a[4],~~e[4]))}},layers:function(a){return g(b(r)(a),maximum(map(e)(a)),maximum(map(k)(a)))},collage:function(a){return function(b){return function(e){return g(["ECollage",a,b,Value.groupForms(e)],a,b)}}},spacer:n,container:function(a){return function(b){return function(e){return function(c){return g(["EContainer",e,c],a,b)}}}},line:c,segment:function(a){return function(b){return c(["Cons",a,["Cons",b,["Nil"]]])}},polygon:h,rect:function(a){return function(b){return function(e){return h(["Cons",
58−["Tuple2",0-a/2,0-b/2],["Cons",["Tuple2",0-a/2,b/2],["Cons",["Tuple2",a/2,b/2],["Cons",["Tuple2",a/2,0-b/2],["Nil"]]]]])(e)}}},oval:p,circle:function(a){return p(2*a)(2*a)},ngon:function(a){return function(b){return function(e){var c=map(function(e){return["Tuple2",b*Math.cos(2*(Math.PI/a)*e),b*Math.sin(2*(Math.PI/a)*e)]}),g=a-1,k=["Nil"];if(0<=g){do k=["Cons",g,k];while(0<g--)}return h(c(k))(e)}}},solid:function(b){return function(e){return a(0)(1)(["Tuple2",0,0])(m(y)(b)(e))}},dotted:function(b){return function(e){return a(0)(1)(["Tuple2",
59−0,0])(m(D)(b)(e))}},dashed:function(b){return function(e){return a(0)(1)(["Tuple2",0,0])(m(F)(b)(e))}},customLine:function(b){return function(e){return function(c){return a(0)(1)(["Tuple2",0,0])(m(["Custom",s.castListToJSArray(b)])(e)(c))}}},filled:function(b){return function(e){return a(0)(1)(e[2])(j(B)(b)(e))}},outlined:function(b){return function(e){return a(0)(1)(e[2])(j(E)(b)(e))}},customOutline:function(b){return function(e){return function(c){return a(0)(1)(c[2])(j(["CustomOutline",s.castListToJSArray(b)])(e)(c))}}},
60−textured:function(b){return function(e){return a(0)(1)(e[2])(j(["Textured",b])(null)(e))}},sprite:function(b){return function(e){return function(c){return function(g){return a(0)(1)(g)(["FImage",e,c,s.castStringToJSString(b)])}}}},toForm:function(b){return function(e){return a(0)(1)(b)(["FElement",e])}},rotate:function(b){return function(e){a:{switch(e[0]){case "Form":var c=e[2],g=e[3],k=e[4];e=a(b+e[1])(c)(g)(k);break a}throw"Non-exhaustive pattern match in case";}return e}},scale:function(b){return function(e){return a(e[1])(b*
61−e[2])(e[3])(e[4])}},move:function(b){return function(e){return function(c){var g;a:{switch(c[0]){case "Form":g=c[1];var k=c[2],f=c[3];c=c[4];switch(f[0]){case "Tuple2":var d=f[1],f=f[2];g=a(g)(k)(["Tuple2",b+d,e+f])(c);break a}}throw"Non-exhaustive pattern match in case";}return g}}},isWithin:Collage.insideForm}}();
62−Elm.Text=function(){function d(a){return Value.toText(a)}var f=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},b=function(a,b){return function(c){return"<span style='"+a+":"+b+"'>"+c+"</span>"}},c=function(a){a=Elm.JavaScript.castStringToJSString(a);return b("font-family",a)},h=f("h1"),a=b("font-style","italic"),f=f("b"),m=b("text-decoration","underline"),j=b("text-decoration","overline"),l=b("text-decoration","line-through");return{fromString:d,toText:d,header:h,
63−height:function(a){return b("font-size",a+"em")},italic:a,bold:f,underline:m,overline:j,strikeThrough:l,monospace:c("monospace"),typeface:c,color:function(a){return b("color",Elm.Color.extract(a))},link:function(a){return function(b){return"<a href='"+d(a)+"'>"+b+"</a>"}}}}();
64−var Render=function(){function d(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a}function f(a){return a}function b(a){a.style.styleFloat="left";a.style.cssFloat="left";return a}function c(a){a.style.position="absolute";return a}function h(a,b,c){for(var f=d("div"),j=c.length;j--;){var h=a(b(c[j]));f.appendChild(h)}return f}function a(a){switch(a[0]){case "Absolute":return a[1]+"px";case "Relative":return 100*a[1]+"%"}}function m(b,e){e.style.position="absolute";e.style.margin=
65−"auto";switch(b[0]){case "Position":"Far"!==b[1][0]&&(e.style.left=0);"Near"!==b[1][0]&&(e.style.right=0);"Far"!==b[2][0]&&(e.style.top=0);"Near"!==b[2][0]&&(e.style.bottom=0);break;case "PositionAt":e.style.top=a(b[2]);e.style.left=a(b[1]);var c="translate("+~~(-e.style.width.slice(0,-2)/2)+"px,"+~~(-e.style.height.slice(0,-2)/2)+"px)";e.style.transform=c;e.style.msTransform=c;e.style.MozTransform=c;e.style.webkitTransform=c;e.style.OTransform=c;break;default:c=b[0].slice(-2),e.style["T"===c[0]?
66−"top":"bottom"]=a(b[2]),e.style["L"===c[1]?"left":"right"]=a(b[1])}}function j(a){var e={};switch(a[2][0]){case "EText":var e=a[2][1],k=a[2][2],l=d("div");l.innerHTML=k;l.style.textAlign=e;e=l;break;case "EImage":e=a[2][1];k=d("img");k.src=e;k.name=e;k.style.display="block";e=k;break;case "EVideo":l=a[2][1];e=d("video");e.controls="controls";k=d("source");k.src=l;l=l.split(".");k.type="video/"+l[l.length-1];e.appendChild(k);e.style.display="block";break;case "EFittedImage":var n=a[3],p=a[4],e=a[2][1],
67−k=d("div");k.style.width=n+"px";k.style.height=p+"px";k.style.position="relative";k.style.overflow="hidden";var s=d("img");s.onload=function(){s.style.position="absolute";s.style.margin="auto";var a=n,b=p;n/p>this.width/this.height?b=Math.round(this.height*n/this.width):a=Math.round(this.width*p/this.height);s.style.width=a+"px";s.style.height=b+"px";s.style.left=(n-a)/2+"px";s.style.top=(p-b)/2+"px"};s.src=e;s.name=e;k.appendChild(s);e=k;break;case "EFlow":a:{e=a[2][2];switch(a[2][1][0]){case "DDown":e=
68−e.slice(0).reverse();case "DUp":e=h(f,j,e);break a;case "DRight":e=e.slice(0).reverse();case "DLeft":e=h(b,j,e);break a;case "DOut":e=e.slice(0).reverse();case "DIn":e=h(c,j,e);break a}e=void 0}break;case "ECollage":e=Collage.collage(a[2][1],a[2][2],a[2][3]);break;case "EEmpty":e=d("div");break;case "EContainer":k=a[2][1];e=j(a[2][2]);m(k,e);k=d("div");k.style.position="relative";k.style.overflow="hidden";k.appendChild(e);e=k;break;case "EHtml":e=a[2][1];"button"!==e.type&&(k=Value.getExcess(e),a[3]-=
69−k[0],a[4]-=k[1]);break;case "EExternalHtml":e=d("div"),e.appendChild(a[2][1])}e.id=a[1];e.style.width=~~a[3]+"px";e.style.height=~~a[4]+"px";1!==a[5]&&(e.style.opacity=a[5]);"Just"===a[6][0]&&(e.style.backgroundColor=Elm.Color.extract(a[6][1]));return"Just"===a[7][0]?(k=d("a"),k.href=a[7][1],k.appendChild(e),k):e}function l(a,e,k){"A"===a.tagName&&(a=a.firstChild);if(e[1]!==k[1]){if(e[2][0]!==k[2][0])return a.parentNode.replaceChild(j(k),a);var d=k[2],n=e[2];switch(d[0]){case "EText":d[1]!==n[1]&&
70−(a.style.textAlign=d[1]);d[2]!==n[2]&&(a.innerHTML=d[2]);break;case "EImage":d[1]!==n[1]&&(a.src=d[1]);break;case "EVideo":case "EFittedImage":if(!Value.eq(d,n)||k[3]!==e[3]||k[4]!==e[4])return a.parentNode.replaceChild(j(k),a);break;case "ECollage":if(d[1]!==n[1]||d[2]!==n[2]||d[3].length!==n[3].length)return a.parentNode.replaceChild(j(k),a);Collage.updateCollage(a,n[3],d[3]);break;case "EFlow":if(d[1]!==n[1])return a.parentNode.replaceChild(j(k),a);var h=d[2],s=a.childNodes;if(h.length!==s.length)return a.parentNode.replaceChild(j(k),
71−a);var n=n[2],v=function(a){return a};switch(d[1][0]){case "DDown":case "DUp":v=f;break;case "DRight":case "DLeft":v=b;break;case "DOut":case "DIn":v=c}for(d=s.length;d--;)l(s[d],n[d],h[d]),v(s[d]);break;case "EContainer":l(a.childNodes[0],n[2],d[2]);m(d[1],a.childNodes[0]);break;case "EHtml":k[1]!==e[1]&&(h=j(k),a.parentNode.replaceChild(h,a),a=h);"button"!==h.type&&(d=Value.getExcess(a),k[3]-=d[0],k[4]-=d[1]);break;case "EExternalHtml":k[1]!==e[1]&&a.parentNode.replaceChild(j(k),a)}k[3]!==e[3]&&
72−(a.style.width=~~k[3]+"px");k[4]!==e[4]&&(a.style.height=~~k[4]+"px");k[5]!==e[5]&&(a.style.opacity=k[5]);2===k[6].length&&(d=Elm.Color.extract(k[6][1]),d!==a.style.backgroundColor&&(a.style.backgroundColor=d));if(2===k[7].length&&(1===e[7].length||k[7][1]!==e[7][1]))a.parentNode.href=k[7][1];k[1]=e[1]}}return{render:j,update:l,addTo:function(a,b){a.appendChild(b)},newElement:d,flowWith:h,goIn:c}}();
73−Elm.Signal=function(){function d(a){this.id=Guid.guid();this.value=a;this.kids=[];this.defaultNumberOfKids=0;this.recv=function(a,b,e){if(b=b===this.id)this.value=e;l(this,a,b);return b};Dispatcher.inputs.push(this)}function f(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.count=0;this.changed=!1;b.reverse();this.recalc=function(){for(var c=a,d=b.length;d--;)c=c(b[d].value);this.value=c};this.recalc();this.recv=function(a,e){this.count+=1;e&&(this.changed=!0);this.count==b.length&&(this.changed&&
74−this.recalc(),l(this,a,this.changed),this.changed=!1,this.count=0)};for(var c=b.length;c--;)b[c].kids.push(this)}function b(a,b,c,d){this.id=Guid.guid();this.value=c?b(d.value):b;this.kids=[];this.recv=function(b,c){c&&(this.value=a(d.value)(this.value));l(this,b,c)};d.kids.push(this)}function c(a,b,c){this.id=Guid.guid();this.value=a(c.value)?b:c.value;this.kids=[];this.recv=function(b,d){var f=d&&!a(c.value);f&&(this.value=c.value);l(this,b,f)};c.kids.push(this)}function h(a){this.id=Guid.guid();
75−this.value=a.value;this.kids=[];this.recv=function(b,c){var d=c&&!Value.eq(this.value,a.value);d&&(this.value=a.value);l(this,b,d)};a.kids.push(this)}function a(a,b){this.id=Guid.guid();var c=(new window.Date).getTime();this.value=a?Value.Tuple(c,b.value):c;this.kids=[];this.recv=function(c,d){d&&(this.value=a?Value.Tuple(c,b.value):c);l(this,c,d)};b.kids.push(this)}function m(a,b){this.id=Guid.guid();this.value=b.value;this.kids=[];this.count=0;this.changed=!1;this.recv=function(c,d,f){f===a.id&&
76−(this.changed=d);this.count+=1;2==this.count&&(this.changed&&(this.value=b.value),l(this,c,this.changed),this.count=0,this.changed=!1)};a.kids.push(this);b.kids.push(this)}function j(a,b){this.id=Guid.guid();this.value=a.value;this.kids=[];this.next=null;this.count=0;this.changed=!1;this.recv=function(c,d,f){this.count+=1;d&&(this.changed=!0,f==b.id&&null===this.next&&(this.next=b.value),f==a.id&&(this.next=a.value));2==this.count&&(this.changed&&(this.value=this.next,this.next=null),l(this,c,this.changed),
77−this.changed=!1,this.count=0)};a.kids.push(this);b.kids.push(this)}var l=function(a,b,c){for(var d=a.kids,f=d.length;f--;)d[f].recv(b,c,a.id)},g=function(a){return function(b){return function(d){d=new f(function(a){return function(b){return[a,b]}},[a,d]);d=new c(function(a){return a[0]},[!0,b],d);return new f(function(a){return a[1]},[d])}}};return{constant:function(a){return new d(a)},lift:function(a){return function(b){return new f(a,[b])}},lift2:function(a){return function(b){return function(c){return new f(a,
78−[b,c])}}},lift3:function(a){return function(b){return function(c){return function(d){return new f(a,[b,c,d])}}}},lift4:function(a){return function(b){return function(c){return function(d){return function(j){return new f(a,[b,c,d,j])}}}}},lift5:function(a){return function(b){return function(c){return function(d){return function(j){return function(g){return new f(a,[b,c,d,j,g])}}}}}},lift6:function(a){return function(b){return function(c){return function(d){return function(j){return function(g){return function(h){return new f(a,
79−[b,c,d,j,g,h])}}}}}}},lift7:function(a){return function(b){return function(c){return function(d){return function(j){return function(g){return function(h){return function(l){return new f(a,[b,c,d,j,g,h,l])}}}}}}}},lift8:function(a){return function(b){return function(c){return function(d){return function(j){return function(g){return function(h){return function(l){return function(m){return new f(a,[b,c,d,j,g,h,l,m])}}}}}}}}},foldp:function(a){return function(c){return function(d){return new b(a,c,!1,
80−d)}}},foldp$:function(a){return function(c){return function(d){return new b(a,c,!0,d)}}},foldp1:function(a){return function(c){return new b(a,function(a){return a},!0,c)}},delay:function(a){return function(b){var c=new d(b.value),j=!0;b=new m(c,new f(function(a){return function(){return a}},[c,new f(function(b){j||setTimeout(function(){Dispatcher.notify(c.id,b)},a)},[b])]));j=!1;return b}},merge:function(a){return function(b){return new j(a,b)}},merges:function(a){return Elm.List.foldl1(function(a){return function(b){return new j(a,
81−b)}})(a)},mergeEither:function(a){return function(b){function c(a){return function(b){return[a,b]}}return new j(new f(c("Left"),[a]),new f(c("Right"),[b]))}},average:function(a){return function(b){for(var c=Array(a),d=a;d--;)c[d]=0;var d=0,j=!1,g=0;return new f(function(b){g+=b-c[d];c[d]=b;b=g/Math.max(1,j?a:d);++d==a&&(j=!0,d=0);return b},[b])}},count:function(a){return new b(function(){return function(a){return a+1}},0,!1,a)},countIf:function(a){return function(c){return new b(function(b){return function(c){return a(b)?
82−c+1:c}},0,!1,c)}},keepIf:function(a){return function(b){return function(d){return new c(function(b){return!a(b)},b,d)}}},dropIf:function(a){return function(b){return function(d){return new c(a,b,d)}}},keepWhen:function(a){return g(new f(function(a){return!a},[a]))},dropWhen:g,dropRepeats:function(a){return new h(a)},sampleOn:function(a){return function(b){return new m(a,b)}},timestamp:function(b){return new a(!0,b)},timeOf:function(b){return new a(!1,b)}}}();
83−var Dispatcher=function(){function d(b){if(!b.hasOwnProperty("defaultNumberOfKids"))return!0;var a=b.kids.length;if(0==a)return!1;if(a>b.defaultNumberOfKids)return!0;for(var c=!1;a--;)c=c||d(b.kids[a]);return c}var f=null,b=[],c=null;return{initialize:function(){f=Elm.main();f.hasOwnProperty("recv")||(f=Elm.Signal.constant(f));c=f.value;for(var h=[],a=b.length;a--;)d(b[a])&&h.push(b[a]);b=h;document.getElementById("content").appendChild(Render.render(c));h=document.getElementById("widthChecker").offsetWidth;
84−h!==window.innerWidth&&Dispatcher.notify(Elm.Window.dimensions.id,Value.Tuple(h,window.innerHeight));f=Elm.Signal.lift(function(a){var b=document.getElementById("content");Render.update(b.firstChild,c,a);return c=a})(f)},notify:function(c,a){for(var d=(new window.Date).getTime(),f=!1,l=b.length;l--;)f=b[l].recv(d,c,a)||f;return f},inputs:b}}();
85−Elm.HTTP=function(){function d(b){return function(c){return function(d){return function(e){return{"0":"Request",length:1,verb:a.castStringToJSString(b),url:a.castStringToJSString(c),data:null===d?null:a.castStringToJSString(d),headers:e}}}}}function f(a){return d("GET")(a)(null)(["Nil"])}function b(b,d){return function(f){if(""!==f.url){var e={value:["Waiting"]};b.push(e);var h=null;window.ActiveXObject&&(h=new ActiveXObject("Microsoft.XMLHTTP"));window.XMLHttpRequest&&(h=new XMLHttpRequest);h.onreadystatechange=
86−function(){4===h.readyState&&(e.value=200===h.status?["Success",m(h.responseText)]:["Failure",h.status,m(h.statusText)],setTimeout(function(){c(b,d)},0))};h.open(f.verb,f.url,!0);Elm.List.map(function(b){h.setRequestHeader(a.castStringToJSString(b[1]),a.castStringToJSString(b[2]))})(f.headers);h.send(f.data)}}}function c(a,b){0<a.length&&(Dispatcher.notify(b.id,a[0].value),"Waiting"!==a[0].value[0]&&(a.shift(),setTimeout(function(){c(a,b)},0)))}function h(a){var c=Elm.Signal.constant(["Waiting"]);
87−a=Elm.Signal.lift(b([],c))(a);return Elm.Signal.lift2(function(a){return function(){return a}})(c)(a)}var a=Elm.JavaScript,m=Elm.JavaScript.castJSStringToString;return{get:f,post:function(a){return function(b){return d("POST")(a)(b)(["Nil"])}},request:d,send:h,sendGet:function(a){return h(Elm.Signal.lift(f)(a))}}}();
88−Elm.Input=function(){var d=Elm.JavaScript,f=Elm.JavaScript.castJSStringToString,b=function(a,b){a.placeholder=d.castStringToJSString(b);var c=Elm.Signal.constant(["Nil"]);Value.addListener(a,"keyup",function(){Dispatcher.notify(c.id,f(a.value));a.focus()});a.style.padding="1px";return Value.Tuple(Value.wrap(a),c)},c=function(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a},h=function(a){for(var b=c("select"),d=[];"Cons"===a[0];){var f=c("option"),h=Value.toText(a[1][1]);
89−f.value=h;f.innerHTML=h;b.appendChild(f);d.push(a[1][2]);a=a[2]}var e=Elm.Signal.constant(d[0]);Value.addListener(b,"change",function(){Dispatcher.notify(e.id,d[b.selectedIndex])});return Value.Tuple(Value.wrap(b),e)};return{textArea:function(a){return function(d){var f=c("textarea");f.rows=d;f.cols=a;return b(f,"")}},textField:function(a){var d=c("input");d.type="text";return b(d,a)},password:function(a){var d=c("input");d.type="password";return b(d,a)},checkbox:function(a){var b=c("input");b.type=
90−"checkbox";b.checked=a;var d=Elm.Signal.constant(a);Value.addListener(b,"change",function(){Dispatcher.notify(d.id,b.checked)});return Value.Tuple(Value.wrap(b),d)},dropDown:h,stringDropDown:function(a){return h(Elm.List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var b=c("input");b.type="button";b.value=d.castStringToJSString(a);var f=Elm.Signal.constant(!1);Value.addListener(b,"click",function(){Dispatcher.notify(f.id,!0);Dispatcher.notify(f.id,!1)});return Value.Tuple(Value.wrap(b),
91−f)}}}();
92−Elm.Keyboard={Raw:function(){function d(b,f){return"Nil"===f[0]?f:f[1]===b?f[2]:["Cons",f[1],d(b,f[2])]}var f=Elm.Signal.constant(["Nil"]),b=Elm.Signal.constant(["Nothing"]);Value.addListener(document,"keydown",function(b){var d;a:{for(d=f.value;"Nil"!==d[0];){if(d[1]===b.keyCode){d=!0;break a}d=d[2]}d=!1}d||Dispatcher.notify(f.id,["Cons",b.keyCode,f.value])||this.removeEventListener("keydown",arguments.callee,!1)});Value.addListener(document,"keyup",function(b){var h=d(b.keyCode,f.value);Dispatcher.notify(f.id,
93−h)||this.removeEventListener("keyup",arguments.callee,!1)});Value.addListener(window,"blur",function(b){Dispatcher.notify(f.id,["Nil"])||this.removeEventListener("blur",arguments.callee,!1)});Value.addListener(document,"keypress",function(c){var d=Dispatcher.notify(b.id,["Just",c.charCode||c.keyCode]);Dispatcher.notify(b.id,["Nothing"]);d||this.removeEventListener("keypress",arguments.callee,!1)});return{keysDown:f,charPressed:b}}()};
94−(function(){function d(b){b=Elm.Signal.lift(b)(Elm.Keyboard.Raw.keysDown);Elm.Keyboard.Raw.keysDown.defaultNumberOfKids+=1;b.defaultNumberOfKids=0;return b}function f(b,f,a,m){return d(function(d){for(var l=0,g=0;"Cons"==d[0];){switch(d[1]){case b:--l;break;case f:++l;break;case a:++g;break;case m:--g}d=d[2]}return{_:[!0],x:[l],y:[g]}})}function b(b){return d(function(d){for(;"Cons"==d[0];){if(b==d[1])return!0;d=d[2]}return!1})}Elm.Keyboard.arrows=f(37,39,38,40);Elm.Keyboard.wasd=f(65,68,87,83);Elm.Keyboard.shift=
95−b(16);Elm.Keyboard.ctrl=b(17);Elm.Keyboard.space=b(32)})();
96−Elm.Mouse=function(){function d(a){var b=0,c=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,c=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,c=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,c)}var f=Elm.Signal.constant(Value.Tuple(0,0));f.defaultNumberOfKids=2;var b=Elm.Signal.lift(function(a){return a[1]})(f);b.defaultNumberOfKids=0;var c=Elm.Signal.lift(function(a){return a[2]})(f);c.defaultNumberOfKids=
97−0;var h=Elm.Signal.constant(!1),a=Elm.Signal.constant(!1),m=Elm.Signal.constant(Value.Tuple());Value.addListener(document,"click",function(b){var c=Dispatcher.notify(a.id,!0),d=Dispatcher.notify(m.id,Value.Tuple());Dispatcher.notify(a.id,!1);!c&&!d&&this.removeEventListener("click",arguments.callee,!1)});Value.addListener(document,"mousedown",function(a){Dispatcher.notify(h.id,!0)||this.removeEventListener("mousedown",arguments.callee,!1)});Value.addListener(document,"mouseup",function(a){Dispatcher.notify(h.id,
98−!1)||this.removeEventListener("mouseup",arguments.callee,!1)});Value.addListener(document,"mousemove",function(a){Dispatcher.notify(f.id,d(a))||this.removeEventListener("mousemove",arguments.callee,!1)});return{position:f,x:b,y:c,isClicked:a,isDown:h,clicks:m,isClickedOn:function(a){a=Render.render(a);var b=Elm.Signal.constant(!1);Value.addListener(a,"click",function(){Dispatcher.notify(b.id,!0);Dispatcher.notify(b.id,!1)});return Value.Tuple(Value.wrap(a),b)}}}();
99−Elm.Random=function(){return{inRange:function(d){return function(f){return Elm.Signal.constant(Math.floor(Math.random()*(f-d+1))+d)}},randomize:function(d){return function(f){return function(b){return Elm.Signal.lift(function(){return Math.floor(Math.random()*(f-d+1))+d})(b)}}}}}();
100−Elm.Time=function(){function d(){return(new window.Date).getTime()}function f(b){return function(c){var f=1E3/b,a=d(),m=a,j=0,l=!0,g=Elm.Signal.constant(j),e=0;return Elm.Signal.lift2(function(b){return function(c){if(b){var n=!l&&b;e=setTimeout(function(){m=d();j=n?0:m-a;a=m;Dispatcher.notify(g.id,j)},f)}else l&&clearTimeout(e);l=b;return c}})(c)(g)}}Elm.Signal.constant(!0);return{fpsWhen:f,fps:function(b){return f(b)(Elm.Signal.constant(!0))},every:function(b){var c=Elm.Signal.constant(d());setInterval(function(){Dispatcher.notify(c.id,
101−d())},b);return c},delay:Elm.Signal.delay,since:function(b){return function(c){var d=Elm.Signal.count(Elm.Signal.delay(b)(c));return Elm.Signal.lift2(function(a){return function(b){return!Value.eq(a,b)}})(Elm.Signal.count(c))(d)}},after:function(b){b*=1E3;var c=Elm.Signal.constant(!1);setTimeout(function(){Dispatcher.notify(c.id,!0)},b);return c},before:function(b){b*=1E3;var c=Elm.Signal.constant(!0);setTimeout(function(){Dispatcher.notify(c.id,!1)},b);return c},hour:36E5,minute:6E4,second:1E3,ms:1,
102−inHours:function(b){return b/36E5},inMinutes:function(b){return b/6E4},inSeconds:function(b){return b/1E3},inMss:function(b){return b},toDate:function(b){return new window.Date(b)},read:function(b){b=window.Date.parse(b);return isNaN(b)?["Nothing"]:["Just",b]}}}();
103−Elm.Window=function(){var d=Elm.Signal.constant(Value.Tuple(window.innerWidth,window.innerHeight));d.defaultNumberOfKids=2;var f=Elm.Signal.lift(function(b){return b[1]})(d);f.defaultNumberOfKids=0;var b=Elm.Signal.lift(function(b){return b[2]})(d);b.defaultNumberOfKids=0;Value.addListener(window,"resize",function(b){var f=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(d.id,Value.Tuple(f,window.innerHeight))||this.removeEventListener("resize",arguments.callee,!1)});return{dimensions:d,
104−width:f,height:b}}();
105−Elm.Date=function(){var d="Sun Mon Tue Wed Thu Fri Sat".split(" "),f="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");return{read:function(b){b=new window.Date(Elm.JavaScript.castStringToJSString(b));return isNaN(b.getTime())?["Nothing"]:["Just",b]},year:function(b){return b.getFullYear()},month:function(b){return[f[b.getMonth()]]},day:function(b){return b.getDate()},hour:function(b){return b.getHours()},minute:function(b){return b.getMinutes()},second:function(b){return b.getSeconds()},dayOfWeek:function(b){return[d[b.getDay()]]},
106−toTime:function(b){return b.getTime()},Mon:["Mon"],Tue:["Tue"],Wed:["Wed"],Thu:["Thu"],Fri:["Fri"],Sat:["Sat"],Sun:["Sun"],Jan:["Jan"],Feb:["Feb"],Mar:["Mar"],Apr:["Apr"],May:["May"],Jun:["Jun"],Jul:["Jul"],Aug:["Aug"],Sep:["Sep"],Oct:["Oct"],Nov:["Nov"],Dec:["Dec"]}}();Value.addListener(document,"elm_log",function(d){console.log(d.value)});Value.addListener(document,"elm_title",function(d){document.title=d.value});
107−Value.addListener(document,"elm_redirect",function(d){0<d.value.length&&(window.location=d.value)});Value.addListener(document,"elm_viewport",function(d){var f=document.getElementById("elm_viewport");f||(f=document.createElement("meta"),f.id="elm_viewport",f.name="viewport",document.head.appendChild(f));f.content=d.value;Dispatcher.notify(Elm.Window.dimensions.id,Value.Tuple(window.innerWidth,window.innerHeight))});
108−Elm.Prelude=function(){function d(b){return function(c){if(b instanceof Array&&c instanceof Array){var f=b.length;if(f==c.length){for(var a=1;a<f;++a){var m=d(b[a])(c[a]);if("EQ"!==m[0])return m}return["EQ"]}return[1==c.length?"GT":"LT"]}return[b===c?"EQ":b<c?"LT":"GT"]}}var f=function(b){return function(c){var d=b%c,d=0==b?0:0<c?0<=b?d:d+c:-f(-b)(-c);return d==c?0:d}};return{eq:Value.eq,id:function(b){return b},not:function(b){return!b},xor:function(b){return function(c){return b!=c}},fst:function(b){return b[1]},
109−snd:function(b){return b[2]},rem:function(b){return function(c){return b%c}},div:function(b){return function(c){return~~(b/c)}},otherwise:!0,compare:d,toFloat:function(b){return b},round:function(b){return Math.round(b)},floor:function(b){return Math.floor(b)},ceiling:function(b){return Math.ceil(b)},truncate:function(b){return~~b},readInt:function(b){b=Elm.JavaScript.castStringToJSString(b);var c=b.length;if(0===c)return["Nothing"];var d=0;if("-"==b[0]){if(1===c)return["Nothing"];d=1}for(;d<c;++d)if(!Elm.Char.isDigit(b[d]))return["Nothing"];
110−return["Just",parseInt(b)]},readFloat:function(b){b=Elm.JavaScript.castStringToJSString(b);var c=b.length;if(0===c)return["Nothing"];var d=0;if("-"==b[0]){if(1===c)return["Nothing"];d=1}for(var a=0;d<c;++d)if(!Elm.Char.isDigit(b[d])){if("."===b[d]&&(a+=1,1>=a))continue;return["Nothing"]}return["Just",parseFloat(b)]},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:function(b){return function(c){return Math.atan2(b,
111−c)}},mod:f,min:function(b){return function(c){return Math.min(b,c)}},max:function(b){return function(c){return Math.max(b,c)}},flip:function(b){return function(c){return function(d){return b(d)(c)}}},clamp:function(b){return function(c){return function(d){return Math.min(c,Math.max(b,d))}}},curry:function(b){return function(c){return function(d){return b(["Tuple2",c,d])}}},uncurry:function(b){return function(c){if("Tuple2"!==c[0])throw"Function was uncurry'd but was not given a pair.";return b(c[1])(c[2])}},
112−logBase:function(b){return function(c){return Math.log(c)/Math.log(b)}},Just:Elm.Maybe.Just,Nothing:Elm.Maybe.Nothing,maybe:Elm.Maybe.maybe,map:Elm.List.map,zip:Elm.List.zip,zipWith:Elm.List.zipWith,filter:Elm.List.filter,head:Elm.List.head,tail:Elm.List.tail,last:Elm.List.last,length:Elm.List.length,reverse:Elm.List.reverse,foldr:Elm.List.foldr,foldr1:Elm.List.foldr1,foldl:Elm.List.foldl,foldl1:Elm.List.foldl1,and:Elm.List.and,or:Elm.List.or,all:Elm.List.all,any:Elm.List.any,sum:Elm.List.sum,product:Elm.List.product,
113−concat:Elm.List.concat,concatMap:Elm.List.concatMap,maximum:Elm.List.maximum,minimum:Elm.List.minimum,scanl:Elm.List.scanl,scanl1:Elm.List.scanl1,take:Elm.List.take,drop:Elm.List.drop,zip:Elm.List.zip,unzip:Elm.List.unzip,lift:Elm.Signal.lift,lift2:Elm.Signal.lift2,lift3:Elm.Signal.lift3,lift4:Elm.Signal.lift4,lift5:Elm.Signal.lift5,lift6:Elm.Signal.lift6,lift7:Elm.Signal.lift7,lift8:Elm.Signal.lift8,foldp:Elm.Signal.foldp,foldp1:Elm.Signal.foldp1,foldp$:Elm.Signal.foldp$,constant:Elm.Signal.constant,
114−merge:Elm.Signal.merge,merges:Elm.Signal.merges,mergeEither:Elm.Signal.mergeEither,count:Elm.Signal.count,countIf:Elm.Signal.countIf,average:Elm.Signal.average,keepIf:Elm.Signal.keepIf,dropIf:Elm.Signal.dropIf,keepWhen:Elm.Signal.keepWhen,dropWhen:Elm.Signal.dropWhen,dropRepeats:Elm.Signal.dropRepeats,sampleOn:Elm.Signal.sampleOn,timestamp:Elm.Signal.timestamp,timeOf:Elm.Signal.timeOf}}();
115−(function(){var d=function(d){for(var b in d)Elm.Prelude[b]=d[b]};d(Elm.Color);d(Elm.Text);d(Elm.Graphics);d(Elm.Time);show=Value.show})();
116−Elm.Touch=function(){function d(b){b=j.remove(b.identifier);Date.now()-b.t<h&&(a=!0,m={_:[!0],x:[b.x],y:[b.y]})}function f(a,b){function d(f){for(var g=f.changedTouches.length;g--;)b(f.changedTouches[g]);for(var h=Array(f.touches.length),g=f.touches.length;g--;){var l=h,m=g,r=f.touches[g],q=j.lookup(r.identifier);l[m]={_:[!0],id:[r.identifier],x:[r.pageX],y:[r.pageY],x0:[q.x],y0:[q.y],t0:[q.t]}}if(!Dispatcher.notify(c.id,h))return document.removeEventListener(a,d);f.preventDefault()}Value.addListener(document,
117−a,d)}function b(a){a=Elm.Signal.lift(a)(c);c.defaultNumberOfKids+=1;a.defaultNumberOfKids=0;return a}var c=Elm.Signal.constant([]),h=500,a=!1,m={_:[!0],x:[0],y:[0]},j=new function(){this.keys=[];this.values=[];this.insert=function(a,b){this.keys.push(a);this.values.push(b)};this.lookup=function(a){a=this.keys.indexOf(a);return 0<=a?this.values[a]:{x:0,y:0,t:0}};this.remove=function(a){a=this.keys.indexOf(a);if(!(0>a)){var b=this.values[a];this.keys.splice(a,1);this.values.splice(a,1);return b}}};
118−f("touchstart",function(a){j.insert(a.identifier,{x:a.pageX,y:a.pageY,t:Date.now()})});f("touchmove",function(){});f("touchend",d);f("touchcancel",d);f("touchleave",d);var l=b(function(a){return Elm.JavaScript.castJSArrayToList(a)}),g=b(function(){return m});g.defaultNumberOfKids=1;g=Elm.Signal.keepIf(function(){var b=a;a=!1;return b})({_:[!0],x:[0],y:[0]})(g);g.defaultNumberOfKids=0;return{touches:l,taps:g}}();
119−Elm.Dict=function(){function d(a){return function(b){return function(c){return function(d){return function(e){return["RBNode",a,b,c,d,e]}}}}}function f(a){a:{switch(a[0]){case "RBEmpty":throw"(min RBEmpty) is not defined";case "RBNode":switch(a[4][0]){case "RBEmpty":a=["Tuple2",a[2],a[3]];break a}a=f(a[4]);break a}throw"Non-exhaustive pattern match in case";}return a}function b(a){return function(c){var d;a:{switch(c[0]){case "RBEmpty":d=w;break a;case "RBNode":d=function(){switch(q(a)(c[2])[0]){case "EQ":return z(c[3]);
120−case "GT":return b(a)(c[5]);case "LT":return b(a)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return d}}function c(a){return function(b){return function(d){var e;a:{switch(d[0]){case "RBEmpty":e=a;break a;case "RBNode":e=function(){switch(q(b)(d[2])[0]){case "EQ":return d[3];case "GT":return c(a)(b)(d[5]);case "LT":return c(a)(b)(d[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";
121−}return e}}}function h(a){return function(c){return F(b(a)(c))}}function a(a){a:{switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":a=d(a[1])(a[5][2])(a[5][3])(d(B)(a[2])(a[3])(a[4])(a[5][4]))(a[5][5]);break a}}throw"rotateLeft of a node without enough children";}return a}function m(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":a=d(a[1])(a[4][2])(a[4][3])(a[4][4])(d(B)(a[2])(a[3])(a[4][5])(a[5]));break a}}throw"rotateRight of a node without enough children";}return a}function j(a){a:{switch(a[0]){case "Black":a=
122−B;break a;case "Red":a=E;break a}throw"Non-exhaustive pattern match in case";}return a}function l(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[5][0]){case "RBNode":a=d(j(a[1]))(a[2])(a[3])(d(j(a[4][1]))(a[4][2])(a[4][3])(a[4][4])(a[4][5]))(d(j(a[5][1]))(a[5][2])(a[5][3])(a[5][4])(a[5][5]));break a}}}throw"color_flip called on a RBEmpty or RBNode with a RBEmpty child";}return a}function g(b){a:switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":b=
123−a(b);break a}}}a:switch(b[0]){case "RBNode":switch(b[4][0]){case "RBNode":switch(b[4][1][0]){case "Red":switch(b[4][4][0]){case "RBNode":switch(b[4][4][1][0]){case "Red":b=m(b);break a}}}}}a:switch(b[0]){case "RBNode":switch(b[4][0]){case "RBNode":switch(b[4][1][0]){case "Red":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":b=l(b);break a}}}}}return b}function e(a){a:switch(a[0]){case "RBNode":switch(a[1][0]){case "Red":a=d(E)(a[2])(a[3])(a[4])(a[5]);break a}}return a}function k(a){return function(b){return function(c){var f=
124−function(c){var e;a:{switch(c[0]){case "RBEmpty":e=d(B)(a)(b)(A)(A);break a;case "RBNode":e=function(){switch(q(a)(c[2])[0]){case "EQ":return d(c[1])(c[2])(b)(c[4])(c[5]);case "GT":return d(c[1])(c[2])(c[3])(c[4])(f(c[5]));case "LT":return d(c[1])(c[2])(c[3])(f(c[4]))(c[5])}throw"Non-exhaustive pattern match in case";}();e=g(e);break a}throw"Non-exhaustive pattern match in case";}return e};return e(f(c))}}}function x(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":a=
125−!0;break a}}}a=!1}return a}function n(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=!0;break a}}}}a=!1}return a}function p(b){if(y(x(b))&&y(n(b))){b=l(b);a:switch(b[0]){case "RBNode":b:switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":b=l(a(d(b[1])(b[2])(b[3])(b[4])(m(b[5]))));break b}}}break a}}return b}function s(a){return function(b){var c=function(b){a:{switch(b[0]){case "RBEmpty":b=
126−A;break a;case "RBNode":if("LT"===q(a)(b[2])[0])b:{b=p(b);switch(b[0]){case "RBEmpty":throw"delLT on RBEmpty";case "RBNode":b=g(d(b[1])(b[2])(b[3])(c(b[4]))(b[5]));break b}break}else{var h=x(b)?m(b):b,j;b:{switch(h[0]){case "RBNode":switch(h[5][0]){case "RBEmpty":j=D(a,h[2]);break b}}j=!1}if(j)b=h[4];else{h=y;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":j=!0;break b}}}j=!1}if(h=h(j)){h=y;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":j=
127−!0;break b}}}}j=!1}h=h(j)}h&&(b=l(b),b=n(b)?l(m(b)):b);b:{switch(b[0]){case "RBNode":h=D(a,b[2]);break b}h=!1}if(h)b:{switch(b[0]){case "RBEmpty":throw"delEQ called on a RBEmpty";case "RBNode":j=f(b[5]);c:{switch(j[0]){case "Tuple2":h=j[1];break c}break}c:{switch(j[0]){case "Tuple2":j=j[2];break c}break}var h=d(b[1])(h)(j)(b[4]),k=function(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBEmpty":a=A;break a}}b:{a=p(a);switch(a[0]){case "RBEmpty":a=A;break b;case "RBNode":a=g(d(a[1])(a[2])(a[3])(k(a[4]))(a[5]));
128−break b}throw"Non-exhaustive pattern match in case";}}return a};b=e(k(b[5]));b=g(h(b));break b}break}else b:{switch(b[0]){case "RBEmpty":throw"delGT called on a RBEmpty";case "RBNode":b=g(d(b[1])(b[2])(b[3])(b[4])(c(b[5])));break b}break}}}break a}throw"Non-exhaustive pattern match in case";}return b};return h(a)(b)?e(c(b)):b}}function v(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=A;break a;case "RBNode":b=d(b[1])(b[2])(a(b[3]))(v(a)(b[4]))(v(a)(b[5]));break a}throw"Non-exhaustive pattern match in case";
129−}return b}}function t(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=t(a)(a(c[2])(c[3])(t(a)(b)(c[4])))(c[5]);break a}throw"Non-exhaustive pattern match in case";}return c}}}function r(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=r(a)(a(c[2])(c[3])(r(a)(b)(c[5])))(c[4]);break a}throw"Non-exhaustive pattern match in case";}return c}}}var q=Elm.Prelude.compare,u=Elm.Prelude.uncurry,w=Elm.Prelude.Nothing,
130−z=Elm.Prelude.Just,y=Elm.Prelude.not,D=Elm.Prelude.eq,F=Elm.Maybe.isJust,B=["Red"],E=["Black"],A=["RBEmpty"],C=A;return{$op:{},empty:C,lookup:b,findWithDefault:c,member:h,insert:k,singleton:function(a){return function(b){return k(a)(b)(A)}},remove:s,map:v,foldl:t,foldr:r,union:function(a){return function(b){return t(k)(b)(a)}},intersect:function(a){return function(b){return t(function(a){return function(c){return function(d){return h(a)(b)?k(a)(c)(d):d}}})(C)(a)}},diff:function(a){return function(b){return t(function(a){return function(){return function(b){return s(a)(b)}}})(a)(b)}},
131−keys:function(a){return r(function(a){return function(){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},values:function(a){return r(function(){return function(a){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},toList:function(a){return r(function(a){return function(b){return function(c){return["Cons",["Tuple2",a,b],c]}}})(["Nil"])(a)},fromList:function(a){return Elm.List.foldl(u(k))(C)(a)}}}();
132−Elm.Set=function(){var d=Elm.Dict.empty,f=Elm.Dict.remove,b=Elm.Dict.member,c=Elm.Dict.union,h=Elm.Dict.intersect,a=Elm.Dict.diff,m=Elm.Dict.keys,j=Elm.List.foldl(function(a){return function(b){return Elm.Dict.insert(a)(["Tuple0"])(b)}})(d);return{empty:d,singleton:function(a){return Elm.Dict.singleton(a)(["Tuple0"])},insert:function(a){return Elm.Dict.insert(a)(["Tuple0"])},remove:f,member:b,union:c,intersect:h,diff:a,toList:m,fromList:j,foldl:function(a){return Elm.Dict.foldl(function(b){return function(){return function(c){return a(b)(c)}}})},
133−foldr:function(a){return Elm.Dict.foldr(function(b){return function(){return function(c){return a(b)(c)}}})},map:function(a){return function(b){b=m(b);return j(Elm.List.map(a)(b))}}}}();
134−(function(){try{var d={};for(this.i in Elm)eval("var "+this.i+"=Elm[this.i];");if(Elm.Automaton)throw"Module name collision, 'Automaton' is already defined.";Elm.Automaton=function(){function b(a){return["Automaton",a]}function c(a){return b(function(b){var d=unzip(map(function(a){a:{switch(a[0]){case "Automaton":a=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return a})(a)),e;a:{switch(d[0]){case "Tuple2":e=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=
135−d[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",e,c(d)]})}function f(a){return b(function(b){return["Tuple2",a(b),f(a)]})}function a(c){return function(d){return b(function(b){b=d(b)(c);return["Tuple2",b,a(b)(d)]})}}function m(a){return function(c){return b(function(b){var d=c(b)(a);a:{switch(d[0]){case "Tuple2":b=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=d[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",
136−b,m(d)(c)]})}}function j(a){return function(b){a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":b=["Tuple2",a[1]-b[1],a[2]-b[2]];break b}break}break a}throw"Non-exhaustive pattern match in case";}return b}}function l(a){return function(b){var c;a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":var d=function(a){return["Tuple2",b[2],["Tuple2",a,b[2]]]};c=function(){switch(b[1][0]){case "DragFrom":var c;a[1]?c=["Tuple2",uncurry(move)(j(a[2])(b[1][1]))(b[2]),["Tuple2",["DragFrom",
137−b[1][1]],b[2]]]:(c=uncurry(move)(j(a[2])(b[1][1]))(b[2]),c=["Tuple2",c,["Tuple2",k,c]]);return c;case "Ignore":return d(a[1]?x:k);case "Listen":return d(not(a[1])?k:isWithin(a[2])(b[2])?["DragFrom",a[2]]:x)}throw"Non-exhaustive pattern match in case";}();break b}break}break a}throw"Non-exhaustive pattern match in case";}return c}}try{if(!(Elm.Prelude instanceof Object))throw"module not found";}catch(g){throw"Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file.";
138−}var e={};for(this.i in Elm.Prelude)e[this.i]||eval("var "+this.i+" = Elm.Prelude[this.i];");var k=["Listen"],x=["Ignore"];d[">>>"]=function(a){return function(c){var e;a:{switch(a[0]){case "Automaton":e=a[1];break a}throw"Non-exhaustive pattern match in case";}var f;a:{switch(c[0]){case "Automaton":f=c[1];break a}throw"Non-exhaustive pattern match in case";}return b(function(a){a=e(a);var b;a:{switch(a[0]){case "Tuple2":b=a[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(a[0]){case "Tuple2":a=
139−a[2];break a}throw"Non-exhaustive pattern match in case";}var c=f(b);a:{switch(c[0]){case "Tuple2":b=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",b,d[">>>"](a)(c)]})}};d["<<<"]=function(a){return function(b){return d[">>>"](b)(a)}};d["^>>"]=function(a){return function(b){return d[">>>"](f(a))(b)}};d[">>^"]=function(a){return function(b){return d[">>>"](a)(f(b))}};d["^<<"]=function(a){return function(b){return d[">>>"](b)(f(a))}};
140−d["<<^"]=function(a){return function(b){return d[">>>"](f(b))(a)}};e=a(0)(function(){return function(a){return 1+a}});return{$op:{">>>":d[">>>"],"<<<":d["<<<"],"^>>":d["^>>"],">>^":d[">>^"],"^<<":d["^<<"],"<<^":d["<<^"]},run:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=lift(fst)(foldp$(function(a){return function(b){a:{switch(b[0]){case "Tuple2":switch(b[2][0]){case "Automaton":b=b[2][1](a);break a}}throw"Non-exhaustive pattern match in case";}return b}})(a[1])(b));break a}throw"Non-exhaustive pattern match in case";
141−}return b}},step:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return b}},combine:c,pure:f,init:a,init$:m,count:e,draggable:function(a){return m(["Tuple2",k,a])(l)}}}();Elm.main=function(){return Elm.Automaton.main}}catch(f){Elm.main=function(){document.body.innerHTML=Elm.Text.monospace('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2><br/><span style="color:grey">Runtime Error in Automaton module:<br/>'+
142−f+"</span>");throw f;}}})();
compiler/elm-runtime-0.7.2.jsdeleted−4522
@@ -1,4522 +0,0 @@
1−
2−Elm = {};
3−
4−var Guid = function() {
5− var counter = 0;
6− var guid = function() { counter += 1; return counter; };
7− return {guid : guid};
8−}();
9−Elm.JavaScript = function() {
10− function castJSBoolToBool(b) { return b; }
11− function castBoolToJSBool(b) { return b; }
12−
13− function castJSNumberToFloat(n) { return n; }
14− function castFloatToJSNumber(n) { return n; }
15−
16− function castJSNumberToInt(n) { return ~~n; }
17− function castIntToJSNumber(n) { return n; }
18−
19− function castJSElementToElement(w) {
20− return function(h) {
21− return function(node) {
22− return ["Element",Guid.guid(),
23− ["EExternalHtml",node],
24− w,h,1,["Nothing"],["Nothing"]];
25− }
26− }
27− }
28− function castElementToJSElement(elem) { return Render.render(elem); }
29−
30− function castJSArrayToList(arr) {
31− var list = ["Nil"];
32− for (var i = arr.length; i--; ) {
33− list = [ "Cons", arr[i], list ];
34− }
35− return list;
36− }
37− function castListToJSArray(list) {
38− var a = [];
39− while (list[0] === "Cons") {
40− a.push(list[1]);
41− list = list[2];
42− }
43− return a;
44− }
45−
46− var castJSStringToString = castJSArrayToList;
47− function castStringToJSString(str) {
48− if (typeof str === "string") return str;
49− return castListToJSArray(str).join('');
50− }
51−
52− function fromTuple(t) { return t.slice(1); }
53− function toTuple(a) { return ["Tuple" + a.length].concat(a); }
54−
55− return {castJSBoolToBool:castJSBoolToBool,
56− castBoolToJSBool:castBoolToJSBool,
57− castJSNumberToFloat:castJSNumberToFloat,
58− castFloatToJSNumber:castFloatToJSNumber,
59− castJSNumberToInt:castJSNumberToInt,
60− castIntToJSNumber:castIntToJSNumber,
61− Experimental : {castJSElementToElement:castJSElementToElement,
62− castElementToJSElement:castElementToJSElement},
63− castJSArrayToList:castJSArrayToList,
64− castListToJSArray:castListToJSArray,
65− castJSStringToString:castJSStringToString,
66− castStringToJSString:castStringToJSString,
67− castTupleToJSTuple2:fromTuple,
68− castTupleToJSTuple3:fromTuple,
69− castTupleToJSTuple4:fromTuple,
70− castTupleToJSTuple5:fromTuple,
71− castJSTupleToTuple2:toTuple,
72− castJSTupleToTuple3:toTuple,
73− castJSTupleToTuple4:toTuple,
74− castJSTupleToTuple5:toTuple
75− };
76−}();
77−
78−var JSjson = window.JSON;
79−Elm.JSON = function() {
80− var JS = Elm.JavaScript;
81− var empty = ['JSON',{}];
82− function singleton(k) { return function(v) {
83− var obj = {};
84− obj[JS.castStringToJSString(k)] = v;
85− return ['JSON', obj ];
86− };
87− }
88− function insert(k) { return function(v) { return function(inObj) {
89− var obj = inObj[1];
90− var outObj = {};
91− for (var i in obj) {
92− outObj[i] = obj[i];
93− }
94− outObj[JS.castStringToJSString(k)] = v;
95− return ['JSON', outObj ];
96− };
97− };
98− }
99−
100− function lookup(key) { return function(obj) {
101− var k = JS.castStringToJSString(key);
102− return (k in obj[1]) ? ["Just", obj[1][k]] : ["Nothing"] ;
103− };
104− }
105− function find(tipe,base) { return function (key) { return function(obj) {
106− var k = JS.castStringToJSString(key);
107− if (k in obj[1]) {
108− var v = obj[1][k];
109− if (v[0] === tipe) { return v[1]; }
110− }
111− return base;
112− };
113− }
114− }
115− function lookupWithDefault(base) { return function(key) { return function(obj) {
116− var k = JS.castStringToJSString(key);
117− return (k in obj[1]) ? obj[1][k] : base ;
118− };
119− };
120− }
121−
122− function remove(k) { return function(inObj) {
123− var obj = inObj[1];
124− var outObj = {};
125− for (var i in obj) {
126− outObj[i] = obj[i];
127− }
128− delete outObj[JS.castStringToJSString(k)];
129− return ['JSON', outObj];
130− };
131− }
132−
133− function JsonString(v) { return [ "JsonString", v ]; }
134− function JsonNumber(v) { return [ "JsonNumber", v ]; }
135− function JsonBool(v) { return [ "JsonBool", v ]; }
136− var JsonNull = [ "JsonNull" ];
137− function JsonArray(v) { return [ "JsonArray", v ]; }
138− function JsonObject(v) { return [ "JsonObject", v ]; }
139−
140− function toList(json) {
141− var obj = json[1];
142− var arr = [];
143− for (var i in obj) {
144− arr.push(Value.Tuple(JS.castJSStringToString(i), obj[i]));
145− }
146− return JS.castJSArrayToList(arr);
147− }
148− function fromList(list) {
149− var arr = JS.castListToJSArray(list);
150− var obj = {};
151− for (var i = arr.length; i--; ) {
152− obj[JS.castStringToJSString(arr[i][1])] = arr[i][2];
153− }
154− return [ "JSON", obj ];
155− }
156−
157− function toPrettyJSString(sep) { return function (obj) {
158− function fromValue(v) {
159− switch (v[0]) {
160− case 'JsonNull' : return null;
161− case 'JsonString' : return JS.castStringToJSString(v[1]);
162− case 'JsonObject' :
163− var o = {};
164− var from = v[1][1];
165− for (var i in from) {
166− o[i] = fromValue(from[i]);
167− }
168− return o;
169− case 'JsonArray' :
170− var a = JS.castListToJSArray(v[1]);
171− for (var i = a.length; i--; ) {
172− a[i] = fromValue(a[i]);
173− }
174− return a;
175− default :
176− return v[1];
177− }
178− }
179− return JSjson.stringify(fromValue([ 'JsonObject', obj ]), null, JS.castStringToJSString(sep));
180− };
181− }
182− function fromJSString(str) {
183− var obj;
184− try {
185− obj = JSjson.parse(str);
186− } catch (e) {
187− return Elm.Maybe.Nothing;
188− }
189− function toValue(v) {
190− switch (typeof v) {
191− case 'string' : return [ "JsonString", JS.castJSStringToString(v) ];
192− case 'number' : return [ "JsonNumber", JS.castJSNumberToFloat(v) ];
193− case 'boolean' : return [ "JsonBool", JS.castJSBoolToBool(v) ];
194− case 'object' :
195− if (v === null) return [ "JsonNull" ];
196− for (var i in v) {
197− v[i] = toValue(v[i]);
198− }
199− if (v instanceof Array) return [ "JsonArray", JS.castJSArrayToList(v) ];
200− return [ "JsonObject", [ "JSON", v ] ];
201− }
202− }
203− for (var i in obj) {
204− obj[i] = toValue(obj[i]);
205− }
206− return Elm.Maybe.Just( ['JSON',obj] );
207− }
208− return {empty : empty,
209− singleton : singleton,
210− insert : insert,
211− lookup : lookup,
212− findNumber : find("JsonNumber",0),
213− findString : find("JsonString",["Nil"]),
214− findObject : find("JsonObject", empty ),
215− findArray : find("JsonArray" ,["Nil"]),
216− findWithDefault : lookupWithDefault,
217− remove : remove,
218− toPrettyJSString : toPrettyJSString,
219− toJSString : toPrettyJSString(''),
220− fromJSString : fromJSString,
221− toPrettyString : function(sep) { return function(v) {
222− return JS.castJSStringToString(toPrettyJSString(sep)(v)); }; },
223− toString : function(v) { return JS.castJSStringToString(toPrettyJSString('')(v)); },
224− fromString : function(v) { return fromJSString(JS.castStringToJSString(v)); },
225− toList : toList,
226− fromList : fromList,
227− JsonString : JsonString,
228− JsonNumber : JsonNumber,
229− JsonBool : JsonBool,
230− JsonNull : JsonNull,
231− JsonArray : JsonArray,
232− JsonObject : JsonObject
233− };
234−}();
235−
236−var Value = function(){
237−
238− var eq = function(x,y) {
239− if (typeof x === "object") {
240− if (x !== null && '_' in x) {
241− for (var i in x) { if (x[i] != y[i]) return false; }
242− for (var i in y) { if (!(i in x)) return false; }
243− return true;
244− }
245− if (x === y) return true;
246− if (x.length !== y.length) return false;
247− for (var i = x.length; i--; ) {
248− if (!eq(x[i],y[i])) return false;
249− }
250− return true;
251− }
252− return x === y;
253− };
254−
255− var Tuple = function() {
256− var len = arguments.length;
257− var arr = new Array(len+1);
258− arr[0] = "Tuple" + arguments.length;
259− for (var i = len; i--; ) {
260− arr[i+1] = arguments[i];
261− }
262− return arr;
263− };
264−
265− var listToArray = function(list) {
266− var arr = [];
267− while (list[0] === "Cons") {
268− arr.push(list[1]);
269− list = list[2];
270− }
271− return arr;
272− };
273−
274− function makeSpaces(s) {
275− if (s.length == 0) { return s; }
276− var arr = s.split('');
277− if (arr[0] == ' ') { arr[0] = "&nbsp;" }
278− for (var i = arr.length; --i; ) {
279− if (arr[i][0] == ' ' && arr[i-1] == ' ') {
280− arr[i-1] = arr[i-1] + arr[i];
281− arr[i] = '';
282− }
283− }
284− for (var i = arr.length; i--; ) {
285− if (arr[i].length > 1 && arr[i][0] == ' ') {
286− var spaces = arr[i].split('');
287− for (var j = spaces.length - 2; j >= 0; j -= 2) {
288− spaces[j] = '&nbsp;';
289− }
290− arr[i] = spaces.join('');
291− }
292− }
293− arr = arr.join('');
294− if (arr[arr.length-1] === " ") {
295− return arr.slice(0,-1) + '&nbsp;';
296− }
297− return arr;
298− }
299−
300− function properEscape(str) {
301− if (str.length == 0) return str;
302− str = str //.replace(/&/g, "&#38;")
303− .replace(/"/g, /*"*/ "&#34;")
304− .replace(/'/g, /*'*/ "&#39;")
305− .replace(/</g, "&#60;")
306− .replace(/>/g, "&#62;")
307− .replace(/\n/g, "<br/>");
308− var arr = str.split('<br/>');
309− for (var i = arr.length; i--; ) {
310− arr[i] = makeSpaces(arr[i]);
311− }
312− return arr.join('<br/>');
313− }
314−
315− var toText = function(elmList) {
316− if (typeof elmList === "string") return properEscape(elmList);
317− var a = [];
318− while (elmList[0] === "Cons") {
319− a.push(elmList[1]);
320− elmList = elmList[2];
321− }
322− return properEscape(a.join(''));
323− };
324−
325− function getTextSize(w,h,txt) {
326− var t = document.createElement('div');
327− t.innerHTML = txt;
328− t.style.textAlign = 'left';
329− if (w > 0) { t.style.width = w + "px"; }
330−
331− t.style.visibility = "hidden";
332− t.style.styleFloat = "left";
333− t.style.cssFloat = "left";
334−
335− document.body.appendChild(t);
336− var cStyle = window.getComputedStyle(t,null);
337− var realW = cStyle.getPropertyValue("width").slice(0,-2) - 0;
338− var realH = cStyle.getPropertyValue("height").slice(0,-2) - 0;
339− document.body.removeChild(t);
340− //delete t;
341− return [Math.ceil(realW),Math.ceil(Math.max(h,realH))];
342− }
343−
344− function getSize(e) {
345− var t = e.cloneNode(true);
346−
347− t.style.visibility = "hidden";
348− t.style.styleFloat = "left";
349− t.style.cssFloat = "left";
350−
351− document.body.appendChild(t);
352− var w = t.offsetWidth;
353− var h = t.offsetHeight;
354− document.body.removeChild(t);
355− //delete t;
356− return [w,h];
357− }
358−
359− function getExcess(e) {
360− var t = e.cloneNode(true);
361−
362− t.style.visibility = "hidden";
363− t.style.styleFloat = "left";
364− t.style.cssFloat = "left";
365−
366− document.body.appendChild(t);
367− var ow = t.offsetWidth;
368− var oh = t.offsetHeight;
369− var cStyle = window.getComputedStyle(t,null);
370− var w = cStyle.getPropertyValue("width").slice(0,-2) - 0;
371− var h = cStyle.getPropertyValue("height").slice(0,-2) - 0;
372− document.body.removeChild(t);
373− //delete t;
374− return [ow-w,oh-h];
375− }
376−
377−
378− function groupForms(forms) {
379− forms = Elm.JavaScript.castListToJSArray(forms);
380− var groups = [];
381− var arr = [];
382− for (var i = forms.length; i--; ) {
383− var f = forms[i];
384− switch(f[4][0]) {
385− case "FElement":
386− if (arr.length > 0) {
387− groups.push(arr);
388− arr = [];
389− }
390− groups.push(f);
391− break;
392− default:
393− arr.push(f);
394− }
395− }
396− if (arr.length > 0) groups.push(arr);
397− return groups;
398− }
399−
400− var toString = function(v) {
401− if (typeof v === "function") {
402− return "<function>";
403− } else if (typeof v === "boolean") {
404− return v ? "True" : "False";
405− } else if (typeof v === "number") {
406− return v+"";
407− } else if (typeof v === "string" && v.length < 2) {
408− return "'"+v+"'";
409− } else if (typeof v === "object" && ('_' in v)) {
410− var output = [];
411− for (var k in v._) {
412− console.log(k,v._[k]);
413− for (var i = v._[k].length; i--; ) {
414− output.push(k + " = " + toString(v._[k][i]));
415− }
416− }
417− for (var k in v) {
418− if (k === '_') continue;
419− output.push(k + " = " + toString(v[k]));
420− }
421− if (output.length === 0) return "{}";
422− return "{ " + output.join(", ") + " }";
423− } else if (v[0]) {
424− if (v[0].substring(0,5) === "Tuple") {
425− var output = new Array(v.length-1);
426− for (var i = v.length; --i; ) { output[i-1] = toString(v[i]); }
427− return "(" + output.join(",") + ")";
428− } else if (v[0] === "Cons") {
429− var start = (typeof v[1] === "string") ? '"' : "[";
430− var end = (typeof v[1] === "string") ? '"' : "]";
431− var div = (typeof v[1] === "string") ? "" : ",";
432− var f = (typeof v[1] === "string") ? function(x){return x} : toString;
433− var output = start + f(v[1]);
434− v = v[2];
435− while (true) {
436− if (v[0] === "Cons") {
437− output += div + f(v[1]);
438− v = v[2];
439− } else {
440− return output + end;
441− }
442− }
443− } else if (v[0] === "Nil") {
444− return "[]";
445− } else if (v[0] === "JSON") {
446− return "(JSON.fromList " + toString(Elm.JSON.toList(v)) + ")";
447− } else if (v[0] === "RBNode" || v[0] === "RBEmpty") {
448− function cons(k){ return function(v) { return function(acc) { return ["Cons",["Tuple2",k,v],acc]; }; }; }
449− var list = Elm.Dict.foldr(cons)(["Nil"])(v);
450− var name = "Dict";
451− if (list[0] === "Cons" && list[1][2][0] === "Tuple0") {
452− name = "Set";
453− list = Elm.List.map(function(x) { return x[1]; })(list);
454− }
455− return "(" + name + ".fromList " + toString(list) + ")";
456− } else {
457− var output = "";
458− for (var i = v.length; --i; ) { output = ' ' + toString(v[i]) + output; }
459− output = v[0] + output;
460− return (v.length > 1) ? "(" + output + ")" : output;
461− }
462− }
463− return v+"";
464− };
465− var show = function(v) { return str(toString(v)); };
466− var append = function(xs,ys) {
467− if (typeof xs === "string" && typeof ys === "string") {
468− return xs.concat(ys);
469− }
470− if (xs[0] === "Nil") {
471− return ys;
472− }
473− var root = ["Cons", xs[1], ["Nil"]];
474− var curr = root;
475− xs = xs[2];
476− while (xs[0]==="Cons") {
477− curr[2] = ["Cons", xs[1], ["Nil"]];
478− xs = xs[2];
479− curr = curr[2];
480− }
481− curr[2] = ys;
482− return root;
483− };
484−
485− var str = function(s) {
486− var out = ["Nil"];
487− for (var i = s.length; i--; ) {
488− out = ["Cons", s[i], out];
489− }
490− return out;
491− };
492−
493− function wrap(elem) {
494− var p = Value.getSize(elem);
495− return ["Element", Guid.guid(), ["EHtml",elem],
496− p[0], p[1], 1, ["Nothing"], ["Nothing"]];
497− }
498− var addListener = function() {
499− if(document.addEventListener) {
500− return function(element, event, handler) {
501− element.addEventListener(event, handler, false);
502− };
503− } else {
504− return function(element, event, handler) {
505− element.attachEvent('on' + event, handler);
506− };
507− }
508− }();
509−
510− return {eq:eq,
511− str:str,
512− show:show,
513− Tuple:Tuple,
514− append:append,
515− listToArray:listToArray,
516− toText : toText,
517− properEscape : properEscape,
518− getTextSize : getTextSize,
519− getSize : getSize,
520− getExcess : getExcess,
521− groupForms : groupForms,
522− wrap : wrap,
523− addListener : addListener
524− };
525−}();Elm.List = function() {
526−
527− var throwError = function(f) {
528− throw new Error("Function '" + f + "' expecting a list!");
529− }
530−
531− function length(xs) {
532− var out = 0;
533− while (xs[0] === "Cons") {
534− out += 1;
535− xs = xs[2];
536− }
537− return out;
538− };
539− var reverse = foldl(function(x_72) {
540− return function(y_73) {
541− return["Cons", x_72, y_73]
542− }
543− })(["Nil"]);
544− var concat = foldr(function(x_74) {
545− return function(y_75) {
546− return Value.append(x_74, y_75)
547− }
548− })(["Nil"]);
549− var and = foldl(function(x_77) {
550− return function(y_78) {
551− return x_77 && y_78
552− }
553− })(true);
554− var or = foldl(function(x_79) {
555− return function(y_80) {
556− return x_79 || y_80
557− }
558− })(false);
559− var sum = foldl(function(x_89) {
560− return function(y_90) {
561− return x_89 + y_90
562− }
563− })(0);
564− var product = foldl(function(x_91) {
565− return function(y_92) {
566− return x_91 * y_92
567− }
568− })(1);
569− var maximum = foldl1(function(x) { return function(y) { return Math.max(x,y) } });
570− var minimum = foldl1(function(x) { return function(y) { return Math.min(x,y) } });
571− function head(v) {
572− if (v[0] !== "Cons") {
573− throw new Error("Error: 'head' only accepts lists of length greater than one.");
574− }
575− return v[1];
576− }
577− function tail(v) {
578− if (v[0] !== "Cons") {
579− throw new Error("Error: 'tail' only accepts lists of length greater than one.");
580− }
581− return v[2];
582− }
583− function last(v) {
584− if (v[0] !== "Cons") {
585− throw new Error("Error: 'last' only accepts lists of length greater than one.");
586− }
587− var out = v[1];
588− while (v[0] === "Cons") {
589− out = v[1];
590− v = v[2];
591− }
592− return out;
593− }
594− function map(f) {
595− return function(xs) {
596− if (xs[0] === "Nil") { return xs; }
597− if (xs[0] !== "Cons") { throwError('map'); }
598− var root = ["Cons", f(xs[1]), ["Nil"]];
599− var curr = root;
600− xs = xs[2];
601− while (xs[0]==="Cons") {
602− curr[2] = ["Cons", f(xs[1]), ["Nil"]];
603− xs = xs[2];
604− curr = curr[2];
605− }
606− return root;
607− }
608− }
609− function foldl(f) {
610− return function(b) {
611− return function(xs) {
612− var acc = b;
613− if (xs[0] === "Nil") { return acc; }
614− if (xs[0] !== "Cons") { throwError('foldl'); }
615− while (xs[0] === "Cons") {
616− acc = f(xs[1])(acc);
617− xs = xs[2];
618− }
619− return acc;
620− }
621− }
622− }
623− function foldr(f) {
624− return function(b) {
625− return function(xs) {
626− var acc = b;
627− if (xs[0] === "Nil") { return acc; }
628− if (xs[0] !== "Cons") { throwError('foldr'); }
629− var arr = [];
630− while (xs[0] === "Cons") {
631− arr.push(xs[1]);
632− xs = xs[2];
633− }
634− for (var i = arr.length; i--; ) {
635− acc = f(arr[i])(acc);
636− }
637− return acc;
638− }
639− }
640− }
641− function foldl1(f_49) {
642− return function(_temp_50) {
643− return function(v) {
644− if("Cons" !== v[0]) {
645− return undefined
646− }else {
647− var x_51 = v[1];
648− var xs_52 = v[2];
649− return foldl(f_49)(x_51)(xs_52)
650− }
651− }(_temp_50)
652− }
653− }
654− function foldr1(f) {
655− return function(xs) {
656− if (xs[0] === "Nil") { throw new Error("'foldr1' requires an non-empty list.") }
657− if (xs[0] !== "Cons") { throwError('foldr1'); }
658− var arr = [];
659− while (xs[0] === "Cons") {
660− arr.push(xs[1]);
661− xs = xs[2];
662− }
663− var acc = arr.pop();
664− for (var i = arr.length; i--; ) {
665− acc = f(arr[i])(acc);
666− }
667− return acc;
668− }
669− }
670− function scanl(f) {
671− return function(b) {
672− return function(xs) {
673− if (xs[0] === "Nil") { return ["Cons",b,["Nil"]]; }
674− if (xs[0] !== "Cons") { throwError('scanl'); }
675− var arr = [b];
676− while (xs[0] === "Cons") {
677− b = f(xs[1])(b);
678− arr.push(b);
679− xs = xs[2];
680− }
681− var out = ["Nil"];
682− for (var i = arr.length; i--; ) {
683− out = ["Cons", arr[i], out];
684− }
685− return out;
686− }
687− }
688− }
689− function scanl1(f) {
690− return function(xs) {
691− if (xs[0] !== "Cons") {
692− throw new Error("Error: 'scanl1' requires a list of at least length 1.");
693− }
694− return scanl(f)(xs[1])(xs[2]);
695− }
696− }
697− function filter(pred) {
698− return function(xs) {
699− if (xs[0] === "Nil") { return xs; }
700− if (xs[0] !== "Cons") { throwError('filter'); }
701− var arr = [];
702− while (xs[0] === "Cons") {
703− if (pred(xs[1])) { arr.push(xs[1]); }
704− xs = xs[2];
705− }
706− var out = ["Nil"];
707− for (var i = arr.length; i--; ) {
708− out = ["Cons", arr[i], out];
709− }
710− return out;
711− }
712− }
713− function concatMap(f_76) {
714− return function(x) {
715− return concat(map(f_76)(x))
716− }
717− }
718− function all(pred) {
719− return foldl(function(x) { return function(acc) {
720− return acc && pred(x);
721− };})(true);
722− }
723− function any(pred) {
724− return foldl(function(x) { return function(acc) {
725− return acc || pred(x);
726− };})(false);
727− }
728− function partition(pred_93) {
729− return function(lst_94) {
730− return function() {
731− var v = lst_94;
732− var c = [function(v) {
733− if("Nil" !== v[0]) {
734− return undefined
735− }else {
736− return["Tuple2", ["Nil"], ["Nil"]]
737− }
738− }, function(v) {
739− if("Cons" !== v[0]) {
740− return undefined
741− }else {
742− var x_95 = v[1];
743− var xs_96 = v[2];
744− return function(v) {
745− if("Tuple2" !== v[0]) {
746− return undefined
747− }else {
748− var as_97 = v[1];
749− var bs_98 = v[2];
750− return pred_93(x_95) ? ["Tuple2", ["Cons", x_95, as_97], bs_98] : ["Tuple2", as_97, ["Cons", x_95, bs_98]]
751− }
752− }(partition(pred_93)(xs_96))
753− }
754− }];
755− for(var i = c.length;i--;) {
756− var r = c[i](v);
757− if(r !== undefined) {
758− return r
759− }
760− }
761− }()
762− }
763− }
764− function zipWith(f) {
765− return function(listA) {
766− return function(listB) {
767− if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }
768− if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zipWith'); }
769− var arr = [];
770− while (listA[0] === "Cons" && listB[0] === "Cons") {
771− arr.push(f(listA[1])(listB[1]));
772− listA = listA[2];
773− listB = listB[2];
774− }
775− var out = ["Nil"];
776− for (var i = arr.length; i--; ) {
777− out = ["Cons", arr[i], out];
778− }
779− return out;
780− }
781− }
782− }
783− function zip(listA) {
784− return function(listB) {
785− if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }
786− if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zip'); }
787− var arr = [];
788− while (listA[0] === "Cons" && listB[0] === "Cons") {
789− arr.push(["Tuple2", listA[1], listB[1]]);
790− listA = listA[2];
791− listB = listB[2];
792− }
793− var out = ["Nil"];
794− for (var i = arr.length; i--; ) {
795− out = ["Cons", arr[i], out];
796− }
797− return out;
798− }
799− }
800− function unzip(pairs_112) {
801− return function() {
802− var v = pairs_112;
803− var c = [function(v) {
804− if("Nil" !== v[0]) {
805− return undefined
806− }else {
807− return["Tuple2", ["Nil"], ["Nil"]]
808− }
809− }, function(v) {
810− if("Cons" !== v[0]) {
811− return undefined
812− }else {
813− var p_113 = v[1];
814− var ps_114 = v[2];
815− return function(v) {
816− if("Tuple2" !== v[0]) {
817− return undefined
818− }else {
819− if("Tuple2" !== v[1][0]) {
820− return undefined
821− }else {
822− var x_115 = v[1][1];
823− var y_116 = v[1][2];
824− if("Tuple2" !== v[2][0]) {
825− return undefined
826− }else {
827− var xs_117 = v[2][1];
828− var ys_118 = v[2][2];
829− return["Tuple2", ["Cons", x_115, xs_117], ["Cons", y_116, ys_118]]
830− }
831− }
832− }
833− }(["Tuple2", p_113, unzip(ps_114)])
834− }
835− }];
836− for(var i = c.length;i--;) {
837− var r = c[i](v);
838− if(r !== undefined) {
839− return r
840− }
841− }
842− }()
843− }
844− function intersperse(sep_119) {
845− return function(xs_120) {
846− return function() {
847− var v = xs_120;
848− var c = [function(v) {
849− if("Nil" !== v[0]) {
850− return undefined
851− }else {
852− return["Nil"]
853− }
854− }, function(v) {
855− if("Cons" !== v[0]) {
856− return undefined
857− }else {
858− var a_124 = v[1];
859− if("Nil" !== v[2][0]) {
860− return undefined
861− }else {
862− return["Cons", a_124, ["Nil"]]
863− }
864− }
865− }, function(v) {
866− if("Cons" !== v[0]) {
867− return undefined
868− }else {
869− var a_121 = v[1];
870− if("Cons" !== v[2][0]) {
871− return undefined
872− }else {
873− var b_122 = v[2][1];
874− var cs_123 = v[2][2];
875− return["Cons", a_121, ["Cons", sep_119, intersperse(sep_119)(["Cons", b_122, cs_123])]]
876− }
877− }
878− }];
879− for(var i = c.length;i--;) {
880− var r = c[i](v);
881− if(r !== undefined) {
882− return r
883− }
884− }
885− }()
886− }
887− }
888− function intercalate(sep_125) {
889− return function(xs_126) {
890− return function() {
891− var v = xs_126;
892− var c = [function(v) {
893− if("Nil" !== v[0]) {
894− return undefined
895− }else {
896− return["Nil"]
897− }
898− }, function(v) {
899− if("Cons" !== v[0]) {
900− return undefined
901− }else {
902− var a_130 = v[1];
903− if("Nil" !== v[2][0]) {
904− return undefined
905− }else {
906− return a_130
907− }
908− }
909− }, function(v) {
910− if("Cons" !== v[0]) {
911− return undefined
912− }else {
913− var a_127 = v[1];
914− if("Cons" !== v[2][0]) {
915− return undefined
916− }else {
917− var b_128 = v[2][1];
918− var cs_129 = v[2][2];
919− return Value.append(a_127, Value.append(sep_125, intercalate(sep_125)(["Cons", b_128, cs_129])))
920− }
921− }
922− }];
923− for(var i = c.length;i--;) {
924− var r = c[i](v);
925− if(r !== undefined) {
926− return r
927− }
928− }
929− }()
930− }
931− }
932− function sort(xs) {
933− if (xs[0] === "Nil") { return xs; }
934− if (xs[0] !== "Cons") { throwError('sort'); }
935− var arr = [];
936− while (xs[0] === "Cons") {
937− arr.push(xs[1]);
938− xs = xs[2];
939− }
940− arr.sort(function(a,b) { return a - b});
941− var out = ["Nil"];
942− for (var i = arr.length; i--; ) {
943− out = [ "Cons", arr[i], out ];
944− }
945− return out;
946− }
947− function take(n) { return function(xs) {
948− if (n <= 0) { return ["Nil"]; }
949− if (xs[0] === "Nil") { return xs; }
950− if (xs[0] !== "Cons") { throwError('take'); }
951− var out = [ "Cons", xs[1], ["Nil"] ];
952− var temp = out;
953− xs = xs[2];
954− --n;
955− while (xs[0] === "Cons" && n > 0) {
956− temp[2] = [ "Cons", xs[1], ["Nil"] ];
957− temp = temp[2];
958− xs = xs[2];
959− --n;
960− }
961− return out;
962− };
963− }
964− function drop(n) { return function(xs) {
965− if (xs[0] === "Nil") { return xs; }
966− if (xs[0] !== "Cons") { throwError('drop'); }
967− while (xs[0] === "Cons" && n > 0) {
968− xs = xs[2];
969− --n;
970− }
971− return xs;
972− };
973− }
974− return {head:head,
975− tail:tail,
976− last:last,
977− map:map,
978− foldl:foldl,
979− foldr:foldr,
980− foldl1:foldl1,
981− foldr1:foldr1,
982− scanl:scanl,
983− scanl1:scanl1,
984− filter:filter,
985− length:length,
986− reverse:reverse,
987− concat:concat,
988− concatMap:concatMap,
989− and:and,
990− or:or,
991− all:all,
992− any:any,
993− sum:sum,
994− product:product,
995− maximum:maximum,
996− minimum:minimum,
997− partition:partition,
998− zipWith:zipWith,
999− zip:zip,
1000− unzip:unzip,
1001− intersperse:intersperse,
1002− intercalate:intercalate,
1003− sort:sort,
1004− take:take,
1005− drop:drop};
1006−}();/*! Maybe
1007−!*/
1008−
1009−/*[Definition]*/
1010−
1011−/** data Maybe a = Just a | Nothing
1012− The Maybe datatype. Useful when a computation may or may not
1013− result in a value (e.g. logarithm is defined only for positive numbers).
1014−**/
1015−
1016−/*[Basic Utilities]*/
1017−
1018−/** maybe : b -> (a -> b) -> Maybe a -> b
1019− Apply a function to the contents of a `Maybe`.
1020− Return default when given `Nothing`.
1021−**/
1022−/** isJust : Maybe a -> Bool
1023− Check if constructed with `Just`.
1024−**/
1025−/** isNothing : Maybe a -> Bool
1026− Check if constructed with `Nothing`.
1027−**/
1028−
1029−/*[Maybe with Lists]*/
1030−
1031−/** cons : Maybe a -> [a] -> [a]
1032− If `Just`, adds the value to the front of the list.
1033− If `Nothing`, list is unchanged.
1034−**/
1035−/** justs : [Maybe a] -> [a]
1036− Filters out Nothings and extracts the remaining values.
1037−**/
1038−
1039−Elm.Maybe = function() {
1040− function consMaybe(x) { return function(xs) {
1041− if (x[0] === "Just") return ["Cons", x[1], xs];
1042− return xs;
1043− };
1044− }
1045− function mapCons(f) { return function(y) { return function(xs) {
1046− var x = f(y);
1047− if (x[0] === "Just") return ["Cons", x[1], xs];
1048− return xs;
1049− };
1050− };
1051− }
1052− function maybe(b) { return function(f) { return function(m) {
1053− if (m[0] === "Just") return f(m[1]);
1054− return b;
1055− };
1056− };
1057− }
1058−
1059− return {Just : function(x) { return ["Just",x]; },
1060− Nothing : ["Nothing"],
1061− justs : Elm.List.foldr(consMaybe)(["Nil"]),
1062− isJust : function(m) { return m[0] === "Just"; },
1063− isNothing : function(m) { return m[0] === "Nothing"; },
1064− cons : consMaybe,
1065− maybe : maybe
1066− };
1067−}();
1068−/*! Either
1069−!*/
1070−
1071−
1072−Elm.Either = function() {
1073− /*[Definition]*/
1074−
1075− /** data Either a b = Left a | Right b
1076− Represents any data that can take two different types.
1077−
1078− This can also be used for error handling (`Either String a`) where
1079− error messages are stored on the left, and the correct values
1080− ("right" values) are stored on the right.
1081− **/
1082− function Left(a1) { return ['Left',a1]; }
1083− function Right(a1){ return ['Right',a1]; }
1084−
1085− /*[Basics]*/
1086−
1087− /** either : (a -> c) -> (b -> c) -> Either a b -> c
1088− Apply the first function to a `Left` and the second function to a `Right`.
1089− This allows the extraction of a value from an `Either`.
1090− **/
1091− function either(f){ return function(g){ return function(e){
1092− switch(e[0]){
1093− case 'Left': return f(e[1]);
1094− case 'Right': return g(e[1]);
1095− }
1096− };};}
1097−
1098− /** isLeft : Either a b -> Bool
1099− True if the value is a `Left`.
1100− **/
1101− function isLeft(e) { return e[0] == 'Left'; }
1102−
1103− /** isRight : Either a b -> Bool
1104− True if the value is a `Right`.
1105− **/
1106− function isRight(e) { return e[0] == 'Right'; }
1107−
1108− /*[With Lists]*/
1109−
1110− function get(es) { return Elm.List.map(function(x){return x[1];})(es); }
1111−
1112− /** lefts : [Either a b] -> [a]
1113− Keep only the values held in `Left` values.
1114− **/
1115− function lefts(es) { return get(Elm.List.filter(isLeft)(es)); }
1116−
1117− /** rights : [Either a b] -> [a]
1118− Keep only the values held in `Right` values.
1119− **/
1120− function rights(es) { return get(Elm.List.filter(isRight)(es)); }
1121−
1122− /** partition : [Either a b] -> ([a],[b])
1123− Split into two lists, lefts on the left and rights on the right.
1124− So we have the equivalence:
1125−
1126− partition es == (lefts es, rights es)
1127− **/
1128− function partition(es) {
1129− var lrs = Elm.List.partition(isLeft)(es);
1130− lrs[1] = get(lrs[1]);
1131− lrs[2] = get(lrs[2]);
1132− return lrs;
1133− }
1134− return {Left:Left,
1135− Right:Right,
1136− either:either,
1137− isLeft:isLeft,
1138− isRight:isRight,
1139− lefts:lefts,
1140− rights:rights,
1141− partition:partition};
1142−}();
1143−/*! Char !*/
1144−
1145−/*[Classification]*/
1146−
1147−/** isUpper : Char -> Bool
1148− Selects upper case letters.
1149−**/
1150−/** isLower : Char -> Bool
1151− Selects lower case letters.
1152−**/
1153−/** isDigit : Char -> Bool
1154− Selects ASCII digits (0..9).
1155−**/
1156−/** isOctDigit : Char -> Bool
1157− Selects ASCII octal digits (0..7).
1158−**/
1159−/** isHexDigit : Char -> Bool
1160− Selects ASCII hexadecimal digits (0..9a..fA..F).
1161−**/
1162−
1163−/*[Conversion]*/
1164−
1165−/** toUpper : Char -> Char
1166− Convert to upper case.
1167−**/
1168−/** toLower : Char -> Char
1169− Convert to lower case.
1170−**/
1171−/** toLocaleUpper : Char -> Char
1172− Convert to upper case, according to any locale-specific case mappings.
1173−**/
1174−/** toLocaleLower : Char -> Char
1175− Convert to lower case, according to any locale-specific case mappings.
1176−**/
1177−/** toCode : Char -> Int
1178− Convert to unicode.
1179−**/
1180−/** fromCode : Int -> Char
1181− Convert from unicode.
1182−**/
1183−
1184−Elm.Char = function() {
1185− function isBetween(lo,hi) { return function(chr) {
1186− var c = chr.charCodeAt(0);
1187− return lo <= c && c <= hi;
1188− };
1189− }
1190− var isDigit = isBetween('0'.charCodeAt(0),'9'.charCodeAt(0));
1191− var chk1 = isBetween('a'.charCodeAt(0),'f'.charCodeAt(0));
1192− var chk2 = isBetween('A'.charCodeAt(0),'F'.charCodeAt(0));
1193−
1194− return {fromCode : function(c) { return String.fromCharCode(c); },
1195− toCode : function(c) { return c.charCodeAt(0); },
1196− toUpper : function(c) { return c.toUpperCase(); },
1197− toLower : function(c) { return c.toLowerCase(); },
1198− toLocaleUpper : function(c) { return c.toLocaleUpperCase(); },
1199− toLocaleLower : function(c) { return c.toLocaleLowerCase(); },
1200− isLower : isBetween('a'.charCodeAt(0),'z'.charCodeAt(0)),
1201− isUpper : isBetween('A'.charCodeAt(0),'Z'.charCodeAt(0)),
1202− isDigit : isDigit,
1203− isOctDigit : isBetween('0'.charCodeAt(0),'7'.charCodeAt(0)),
1204− isHexDigit : function(c) { return isDigit(c) || chk1(c) || chk2(c); }
1205− };
1206−}();
1207−Elm.Color = function() {
1208−
1209−function Color_0(a1) {
1210− return function(a2) {
1211− return function(a3) {
1212− return function(a4) {
1213− return["Color", a1, a2, a3, a4]
1214− }
1215− }
1216− }
1217−}
1218−var rgba_1 = Color_0;
1219−var red_3 = ["Color",255,0,0,1];
1220−var green_4 = ["Color",0,255,0,1];
1221−var blue_5 = ["Color",0,0,255,1];
1222−var yellow_6 = ["Color",255,255,0,1];
1223−var cyan_7 = ["Color",0,255,255,1];
1224−var magenta_8 = ["Color",255,0,255,1];
1225−var black_9 = ["Color",0,0,0,1];
1226−var white_10 = ["Color",255,255,255,1];
1227−var gray_11 = ["Color",128,128,128,1];
1228−var grey_12 = ["Color",128,128,128,1];
1229−function rgb_2(r_13) {
1230− return function(g_14) {
1231− return function(b_15) {
1232− return ["Color",r_13,g_14,b_15,1]
1233− }
1234− }
1235−}
1236−function extract(c) {
1237− if (c[4] === 1) { return 'rgb(' + c[1] + ',' + c[2] + ',' + c[3] + ')'; }
1238− return 'rgba(' + c[1] + ',' + c[2] + ',' + c[3] + ',' + c[4] + ')';
1239−}
1240−function complement(rgb) {
1241− var hsv = toHSV(rgb);
1242− hsv.hue = (hsv.hue + 180) % 360;
1243− return toRGB(hsv);
1244−}
1245−
1246−function hsva(h) { return function(s) { return function(v) { return function(a) {
1247− var clr = toRGB({hue:h, saturation:s, value:v});
1248− clr[4] = a;
1249− return clr;
1250− }; }; };
1251−}
1252−
1253−function hsv(h) { return function(s) { return function(v) {
1254− return toRGB({hue:h, saturation:s, value:v}); }; }; }
1255−
1256−function toHSV(rgb) {
1257− var hsv = {};
1258− var r = rgb[1] / 255.0, g = rgb[2] / 255.0, b = rgb[3] / 255.0;
1259− var M = Math.max(r,g,b);
1260− var m = Math.min(r,g,b);
1261− var c = M - m;
1262−
1263− var h = 0;
1264− if (c === 0) { h = 0; }
1265− else if (M === r) { h = ((g - b) / c) % 6; }
1266− else if (M === g) { h = ((b - r) / c) + 2; }
1267− else if (M === b) { h = ((r - g) / c) + 4; }
1268− h *= 60;
1269−
1270− return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
1271−}
1272−
1273−function between(lo,hi,x) { return lo <= x && x < hi; }
1274−function norm(n) { return Math.round(n*255); }
1275−
1276−function toRGB(hsv) {
1277− var c = hsv.value * hsv.saturation;
1278− var hue = hsv.hue / 60;
1279− var x = c * (1 - Math.abs((hue % 2) - 1));
1280− var r = 0, g = 0, b = 0;
1281− if (between(0,1,hue)) { r = c; g = x; b = 0; }
1282− else if (between(1,2,hue)) { r = x; g = c; b = 0; }
1283− else if (between(2,3,hue)) { r = 0; g = c; b = x; }
1284− else if (between(3,4,hue)) { r = 0; g = x; b = c; }
1285− else if (between(4,5,hue)) { r = x; g = 0; b = c; }
1286− else if (between(5,6,hue)) { r = c; g = 0; b = x; }
1287−
1288− var m = hsv.value - c;
1289− return ["Color", norm(r+m), norm(g+m), norm(b+m), 1 ];
1290−}
1291− return{rgba:rgba_1, rgb:rgb_2, hsva:hsva, hsv:hsv, red:red_3, green:green_4, blue:blue_5, yellow:yellow_6, cyan:cyan_7, magenta:magenta_8, black:black_9, white:white_10, gray:gray_11, grey:grey_12,complement:complement,extract:extract}
1292−}();
1293−var Collage = function() {
1294−
1295−var JS = Elm.JavaScript;
1296−
1297−function tracePoints(ctx,points) {
1298− var i = points.length - 1;
1299− if (i <= 0) return;
1300− ctx.moveTo(points[i][1], points[i][2]);
1301− while (i--) { ctx.lineTo(points[i][1], points[i][2]); }
1302−}
1303−
1304−function solid(ctx,color,points) {
1305− tracePoints(ctx,points);
1306− ctx.strokeStyle = Elm.Color.extract(color);
1307− ctx.stroke();
1308−};
1309−
1310−function filled(ctx,color,points) {
1311− tracePoints(ctx,points);
1312− ctx.fillStyle = Elm.Color.extract(color);
1313− ctx.fill();
1314−}
1315−
1316−function textured(redo,ctx,src,points) {
1317− var img = new Image();
1318− img.src = JS.castStringToJSString(src);
1319− img.onload = redo;
1320−
1321− tracePoints(ctx,points);
1322− ctx.fillStyle = ctx.createPattern(img,'repeat');
1323− ctx.fill();
1324−}
1325−
1326−function customLine(pattern,ctx,color,points) {
1327− if (pattern.length === 0) { pattern = [8,4]; }
1328− customLineHelp(ctx, pattern, points);
1329− ctx.strokeStyle = Elm.Color.extract(color);
1330− ctx.stroke();
1331−};
1332−
1333−var customLineHelp = function(ctx, pattern, points) {
1334− var i = points.length - 1;
1335− if (i <= 0) return;
1336− var x0 = points[i][1], y0 = points[i][2];
1337− var x1=0, y1=0, dx=0, dy=0, remaining=0, nx=0, ny=0;
1338− var pindex = 0, plen = pattern.length;
1339− var draw = true, segmentLength = pattern[0];
1340− ctx.moveTo(x0,y0);
1341− while (i--) {
1342− x1 = points[i][1]; y1 = points[i][2];
1343− dx = x1 - x0; dy = y1 - y0;
1344− remaining = Math.sqrt(dx * dx + dy * dy);
1345− while (segmentLength <= remaining) {
1346− x0 += dx * segmentLength / remaining;
1347− y0 += dy * segmentLength / remaining;
1348− ctx[draw ? 'lineTo' : 'moveTo'](x0, y0);
1349− // update starting position
1350− dx = x1 - x0; dy = y1 - y0;
1351− remaining = Math.sqrt(dx * dx + dy * dy);
1352− // update pattern
1353− draw = !draw;
1354− pindex = (pindex + 1) % plen;
1355− segmentLength = pattern[pindex];
1356− }
1357− if (remaining > 0) {
1358− ctx[draw ? 'lineTo' : 'moveTo'](x1, y1);
1359− segmentLength -= remaining;
1360− }
1361− x0 = x1; y0 = y1;
1362− }
1363−};
1364−
1365−function drawLine(ctx,form) {
1366− var points = form[3][1];
1367− switch(form[1][0]) {
1368− case "Solid" : return solid(ctx,form[2],points);
1369− case "Dotted": return customLine([3,3],ctx,form[2],points);
1370− case "Dashed": return customLine([8,4],ctx,form[2],points);
1371− case "Custom": return customLine(form[1][1],ctx,form[2],points);
1372− }
1373−};
1374−
1375−function drawShape(redo,ctx,shapeStyle,color,points) {
1376− switch(shapeStyle[0]) {
1377− case "Filled": return filled(ctx,color,points);
1378− case "Outlined": return solid(ctx,color,points);
1379− case "Textured": return textured(redo,ctx,shapeStyle[1],points);
1380− case "CustomOutline":
1381− return customLine(shapeStyle[1],ctx,color,points);
1382− }
1383−};
1384−
1385−function drawImage(redo,ctx,w,h,src) {
1386− var img = new Image();
1387− img.onload = redo;
1388− img.src = JS.castStringToJSString(src);
1389− ctx.drawImage(img,-w/2,-h/2,w,h);
1390−}
1391−
1392−function renderForm(redo,ctx,theta,scale,x,y,form) {
1393− ctx.save();
1394− if (x !== 0 || y !== 0) ctx.translate(x,y);
1395− if (theta !== ~~theta) ctx.rotate(2*Math.PI*theta);
1396− if (scale !== 1) ctx.scale(scale,scale);
1397− ctx.beginPath();
1398− switch(form[0]) {
1399− case "FLine": drawLine(ctx,form); break;
1400− case "FShape": drawShape(redo,ctx,form[1],form[2],form[3][1]); break;
1401− case "FImage": drawImage(redo,ctx,form[1],form[2],form[3]); break;
1402− }
1403− ctx.restore();
1404−};
1405−
1406−function renderForms(redo,ctx,w,h,forms) {
1407− ctx.clearRect(0,0,w,h);
1408− for (var i = forms.length; i--; ) {
1409− var f = forms[i];
1410− renderForm(redo,ctx,f[1],f[2],f[3][1],f[3][2],f[4]);
1411− }
1412−}
1413−
1414−function collageForms(w,h,forms) {
1415− var canvas = Render.newElement('canvas');
1416− w = ~~w;
1417− h = ~~h;
1418− canvas.style.width = w + 'px';
1419− canvas.style.height = h + 'px';
1420− canvas.style.display = "block";
1421− canvas.width = w;
1422− canvas.height = h;
1423− if (canvas.getContext) {
1424− var ctx = canvas.getContext('2d');
1425− function redo() { renderForms(this,ctx,w,h,forms); }
1426− renderForms(redo,ctx,w,h,forms);
1427− return canvas;
1428− }
1429− canvas.innerHTML = "Your browser does not support the canvas element.";
1430− return canvas;
1431−};
1432−
1433−function applyTransforms(theta,scale,x,y,w,h,e) {
1434− var t = "translate(" + (x - w / 2) + "px,"+ (y - h / 2) + "px)";
1435− var r = theta === (~~theta) ? "" : "rotate(" + theta*360 + "deg)";
1436− var s = scale === 1 ? "" : "scale(" + scale + "," + scale + ")";
1437− var transforms = t + " " + s + " " + r;
1438− e.style.transform = transforms;
1439− e.style.msTransform = transforms;
1440− e.style.MozTransform = transforms;
1441− e.style.webkitTransform = transforms;
1442− e.style.OTransform = transforms;
1443−}
1444−
1445−function collageElement(w,h,theta,scale,x,y,elem) {
1446− var e = Render.render(elem);
1447− applyTransforms(theta,scale,x,y,elem[3],elem[4],e);
1448− var div = Render.newElement('div');
1449− Render.addTo(div,e);
1450− div.style.width = (~~w) + "px";
1451− div.style.height = (~~h) + "px";
1452− div.style.overflow = "hidden";
1453− return div;
1454−}
1455−
1456−function collage(w,h,formss) {
1457− if (formss.length === 0) { return collageForms(w,h,[]); }
1458− var elems = new Array(formss.length);
1459− for (var i = formss.length; i--; ) {
1460− var f = formss[i];
1461− if (typeof f[0] === "string") {
1462− elems[i] = collageElement(w,h,f[1],f[2],f[3][1],f[3][2],f[4][1]);
1463− } else {
1464− elems[i] = collageForms(w,h,f);
1465− }
1466− }
1467− if (formss.length === 1) { return elems[0]; }
1468− return Render.flowWith(Render.goIn,function(x){return x},elems);
1469−}
1470−
1471−function updateFormSet(node,currSet,nextSet) {
1472− if (Value.eq(nextSet,currSet)) return;
1473− var w = node.style.width.slice(0,-2) - 0;
1474− var h = node.style.height.slice(0,-2) - 0;
1475− if (typeof nextSet[0] === "object") {
1476− if (typeof currSet[0] === "object") {
1477− if (node.getContext) {
1478− var ctx = node.getContext('2d');
1479− function redo() { renderForms(this,ctx,w,h,nextSet); }
1480− return renderForms(redo,ctx,w,h,nextSet);
1481− }
1482− }
1483− var newNode = collageForms(w,h,nextSet);
1484− newNode.style.position = 'absolute';
1485− return node.parentNode.replaceChild(newNode,node);
1486− }
1487− node.style.width = (~~w) + "px";
1488− node.style.height = (~~h) + "px";
1489− var f = nextSet;
1490− var next = nextSet[4][1];
1491− Render.update(node.firstChild, currSet[4][1], next);
1492− applyTransforms(f[1],f[2],f[3][1],f[3][2],next[3],next[4],node.firstChild);
1493−}
1494−
1495−// assumes that the form sets are the same length.
1496−function updateCollage(node,currs,nexts) {
1497− if (nexts.length === 1) {
1498− return updateFormSet(node,currs[0],nexts[0]);
1499− }
1500− var kids = node.childNodes;
1501− var len = kids.length;
1502− for (var i = len; i--; ) {
1503− updateFormSet(kids[len-i-1], currs[i], nexts[i]);
1504− }
1505−}
1506−
1507−function style(clr,n,list) {
1508− return ["Tuple2",
1509− '<span style="font-size:100%;color:' + clr + ';">' + n + '</span>',
1510− list];
1511−}
1512−
1513−function insideForm(point) { return function(form) {
1514− if (!inBoundsOf(point[1],point[2],form)) return false;
1515− var hw, hh;
1516− switch (form[4][0]) {
1517− case "FShape": return insideShape(point,form[1],form[2],form[3],form[4][3][1]);
1518− case "FLine": return false;
1519− case "FImage":
1520− hw = form[4][1] / 2;
1521− hh = form[4][2] / 2;
1522− break;
1523− case "FElement":
1524− hw = form[4][1][3] / 2;
1525− hh = form[4][1][4] / 2;
1526− break;
1527− }
1528− return insideShape(point,form[1],form[2],form[3],
1529− [ [null, hw, hh],
1530− [null,-hw, hh],
1531− [null,-hw,-hh],
1532− [null, hw,-hh],
1533− [null, hw, hh] ]);
1534− };
1535−}
1536−
1537−function inBoundsOf(px,py,form) {
1538− if (form.length < 6) {
1539− var fx = form[3][1], fy = form[3][2];
1540− var radiusSquared = 0;
1541− var scale = form[2];
1542− switch (form[4][0]) {
1543− case "FShape":
1544− var points = form[4][3][1];
1545− for (var i = points.length; --i; ) {
1546− var p = points[i];
1547− radiusSquared = Math.max(radiusSquared, p[1]*p[1] + p[2]*p[2]);
1548− }
1549− radiusSquared *= scale * scale;
1550− break;
1551− case "FLine":
1552− break;
1553− case "FImage":
1554− var x = scale * form[4][1] / 2;
1555− var y = scale * form[4][2] / 2;
1556− radiusSquared = x*x + y*y;
1557− break;
1558− case "FElement":
1559− var x = scale * form[4][1][3] / 2;
1560− var y = scale * form[4][1][4] / 2;
1561− radiusSquared = x*x + y*y;
1562− break;
1563− }
1564− form.push(function(px,py) {
1565− var dx = px - fx;
1566− var dy = py - fy;
1567− return dx*dx + dy*dy < radiusSquared + 1;
1568− });
1569− }
1570− return form[5](px,py);
1571−}
1572−
1573−function insideShape(point,theta,scale,pos,points) {
1574− var counter = 0;
1575− var list = ["Nil"];
1576− var p1,p2;
1577−
1578− var x = (point[1] - pos[1]) / scale;
1579− var y = (point[2] - pos[2]) / scale;
1580− if (theta !== 0) {
1581− var t = -2 * Math.PI * theta;
1582− var nx = x * Math.cos(t) - y * Math.sin(t);
1583− y = x * Math.sin(t) + y * Math.cos(t);
1584− x = nx;
1585− }
1586−
1587− if (points.length === 0) { return false; }
1588− p1 = points[0];
1589− for (var i = points.length - 1; i--; ) {
1590− p2 = points[i];
1591− var p1x = p1[1], p1y = p1[2], p2x = p2[1], p2y = p2[2];
1592−
1593− if (p1y < p2y) {var ymin=p1y, ymax=p2y;} else {var ymin=p2y, ymax=p1y;}
1594− if (p1x < p2x) {var xmin=p1x, xmax=p2x;} else {var xmin=p2x, xmax=p1x;}
1595−
1596− if (ymin < y && y <= ymax && x <= xmax) {
1597− if (x <= xmin || x <= ((y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x)) {
1598− ++counter;
1599− }
1600− }
1601− p1 = p2;
1602− }
1603− return (counter % 2) === 1;
1604−}
1605−
1606−return {collage:collage, updateCollage:updateCollage, insideForm:insideForm};
1607−
1608−}();Elm.Graphics = function() {
1609− for (this['i'] in Elm.List) {
1610− eval('var ' + this['i'] + ' = Elm.List[this.i];');
1611− }
1612− var JS = Elm.JavaScript;
1613− var DLeft_0 = ["DLeft"];
1614− var DRight_1 = ["DRight"];
1615− var DUp_2 = ["DUp"];
1616− var DDown_3 = ["DDown"];
1617− var DIn_4 = ["DIn"];
1618− var DOut_5 = ["DOut"];
1619− function Absolute_12(a1) {
1620− return["Absolute", a1]
1621− }
1622− function Relative_13(a1) {
1623− return["Relative", a1]
1624− }
1625− var Near_14 = ["Near"];
1626− var Mid_15 = ["Mid"];
1627− var Far_16 = ["Far"];
1628− function Position_17(a1) {
1629− return function(a2) {
1630− return["Position", a1, a2]
1631− }
1632− }
1633− function PositionTL_18(a1) {
1634− return function(a2) {
1635− return["PositionTL", a1, a2]
1636− }
1637− }
1638− function PositionTR_19(a1) {
1639− return function(a2) {
1640− return["PositionTR", a1, a2]
1641− }
1642− }
1643− function PositionBL_20(a1) {
1644− return function(a2) {
1645− return["PositionBL", a1, a2]
1646− }
1647− }
1648− function PositionBR_21(a1) {
1649− return function(a2) {
1650− return["PositionBR", a1, a2]
1651− }
1652− }
1653− function Element_37(id,e,w,h,o,c,l) {
1654− return["Element", id, e, w, h, o, c, l ]
1655− }
1656− function EText_39(a1) {
1657− return function(a2) {
1658− return["EText", a1, a2]
1659− }
1660− }
1661− function EImage_40(a1) {
1662− return["EImage", JS.castStringToJSString(a1)]
1663− }
1664− function EVideo_41(a1) {
1665− return["EVideo", JS.castStringToJSString(a1)]
1666− }
1667− function EFittedImage_42(a1) {
1668− return["EFittedImage", JS.castStringToJSString(a1)]
1669− }
1670− function EFlow_43(a1) {
1671− return function(a2) {
1672− return["EFlow", a1, JS.castListToJSArray(a2)]
1673− }
1674− }
1675− function ECollage_44(a1) {
1676− return function(a2) {
1677− return function(a3) {
1678− return["ECollage", a1, a2, Value.groupForms(a3)]
1679− }
1680− }
1681− }
1682− var EEmpty_45 = ["EEmpty"];
1683− function EContainer_46(a1) {
1684− return function(a2) {
1685− return["EContainer", a1, a2]
1686− }
1687− }
1688− var Solid_68 = ["Solid"];
1689− var Dotted_69 = ["Dotted"];
1690− var Dashed_70 = ["Dashed"];
1691− function Custom_71(a1) {
1692− return["Custom", JS.castListToJSArray(a1)]
1693− }
1694− var Filled_72 = ["Filled"];
1695− var Outlined_73 = ["Outlined"];
1696− function CustomOutline_74(a1) {
1697− return["CustomOutline", JS.castListToJSArray(a1)]
1698− }
1699− function Line_75(a1) {
1700− return["Line", JS.castListToJSArray(a1)]
1701− }
1702− function Shape_78(a1) {
1703− return function(a2) {
1704− var points = JS.castListToJSArray(a1);
1705− if (points.length > 0) { points.push(points[0]); }
1706− return["Shape", points, a2];
1707− }
1708− }
1709− function Form_84(a1) {
1710− return function(a2) {
1711− return function(a3) {
1712− return function(a4) {
1713− return["Form", a1, a2, a3, a4]
1714− }
1715− }
1716− }
1717− }
1718− function FLine_85(a1) {
1719− return function(a2) {
1720− return function(a3) {
1721− return["FLine", a1, a2, a3]
1722− }
1723− }
1724− }
1725− function FShape_86(a1) {
1726− return function(a2) {
1727− return function(a3) {
1728− return["FShape", a1, a2, a3]
1729− }
1730− }
1731− }
1732− function FImage_87(a1) {
1733− return function(a2) {
1734− return function(a3) {
1735− return["FImage", a1, a2, JS.castStringToJSString(a3)]
1736− }
1737− }
1738− }
1739− function FElement_88(a1) {
1740− return["FElement", a1]
1741− }
1742− var left_6 = DLeft_0;
1743− var right_7 = DRight_1;
1744− var down_8 = DDown_3;
1745− var up_9 = DUp_2;
1746− var inward_10 = DIn_4;
1747− var outward_11 = DOut_5;
1748− var topLeft_22 = Position_17(Near_14)(Near_14);
1749− var topRight_23 = Position_17(Far_16)(Near_14);
1750− var bottomLeft_24 = Position_17(Near_14)(Far_16);
1751− var bottomRight_25 = Position_17(Far_16)(Far_16);
1752− var midLeft_26 = Position_17(Near_14)(Mid_15);
1753− var midRight_27 = Position_17(Far_16)(Mid_15);
1754− var midTop_28 = Position_17(Mid_15)(Near_14);
1755− var midBottom_29 = Position_17(Mid_15)(Far_16);
1756− var middle_30 = Position_17(Mid_15)(Mid_15);
1757− function middleAt(a1) {
1758− return function(a2) {
1759− return["PositionAt", a1, a2]
1760− }
1761− }
1762− var topLeftAt_31 = PositionTL_18;
1763− var topRightAt_32 = PositionTR_19;
1764− var bottomLeftAt_33 = PositionBL_20;
1765− var bottomRightAt_34 = PositionBR_21;
1766− var absolute_35 = Absolute_12;
1767− var relative_36 = Relative_13;
1768− function newElement_38(e,w,h,o,c,l) { return Element_37(Guid.guid(),e,w,h,o,c,l); }
1769− function basicNewElement(e,w,h) { return Element_37(Guid.guid(),e,w,h,1,["Nothing"],["Nothing"]); }
1770− var line_76 = Line_75;
1771− var polygon_79 = Shape_78;
1772− function sprite_96(src) {
1773− return function(w) {
1774− return function(h) {
1775− return function(pos) {
1776− return Form_84(0)(1)(pos)(FImage_87(w)(h)(src))
1777− }
1778− }
1779− }
1780− }
1781− function toForm_97(pos) {
1782− return function(e) {
1783− return Form_84(0)(1)(pos)(FElement_88(e))
1784− }
1785− }
1786− function width_47(w__101) {
1787− return function(e) {
1788− var be = e[2];
1789− switch(be[0]) {
1790− case "EImage":
1791− case "EVideo":
1792− return newElement_38(e[2],w__101,e[4] * w__101 / e[3], e[5], e[6], e[7]);
1793− case "EText":
1794− var p = Value.getTextSize(w__101,e[4],be[2]);
1795− return newElement_38(e[2], w__101, p[1], e[5], e[6], e[7]);
1796− }
1797− return newElement_38(e[2], w__101, e[4], e[5], e[6], e[7]);
1798− }
1799− }
1800− function height_48(h__108) {
1801− return function(e) {
1802− var be = e[2];
1803− switch(be[0]) {
1804− case "EImage":
1805− case "EVideo":
1806− return newElement_38(e[2], e[3] * h__108 / e[4], h__108, e[5], e[6], e[7]);
1807− }
1808− return newElement_38(e[2], e[3], h__108, e[5], e[6], e[7]);
1809− }
1810− }
1811− function size_49(w) {
1812− return function(h) {
1813− return function(e) {
1814− return newElement_38(e[2], w, h, e[5], e[6], e[7]);
1815− }
1816− }
1817− }
1818− function opacity_50(o) {
1819− return function(e) {
1820− return newElement_38(e[2], e[3], e[4], o, e[6], e[7]);
1821− }
1822− }
1823− function color_51(c) {
1824− return function(e) {
1825− return newElement_38(e[2], e[3], e[4], e[5], ["Just",c], e[7]);
1826− }
1827− }
1828− function link(lnk) {
1829− return function(e) {
1830− return newElement_38(e[2], e[3], e[4], e[5], e[6], ["Just", JS.castStringToJSString(lnk)]);
1831− }
1832− }
1833− function widthOf_52(e) { return ~~e[3]; }
1834− function heightOf_53(e) { return ~~e[4]; }
1835− function sizeOf_54(e) { return["Tuple2", ~~e[3], ~~e[4]] }
1836− function text_56(txt) {
1837− var p = Value.getTextSize(0,0,txt);
1838− return basicNewElement(EText_39("left")(txt), p[0], p[1])
1839− }
1840− function plainText(str) {
1841− var txt = Value.toText(str);
1842− var p = Value.getTextSize(0,0,txt);
1843− return basicNewElement(EText_39("left")(txt),p[0],p[1])
1844− }
1845− function asText(v) {
1846− var txt = Elm.Text.monospace(Value.toText(Value.show(v)));
1847− var p = Value.getTextSize(0,0,txt);
1848− return basicNewElement(EText_39("left")(txt),p[0],p[1])
1849− }
1850− function centeredText(txt) {
1851− var p = Value.getTextSize(0,0,txt);
1852− return basicNewElement(EText_39("center")(txt),p[0],p[1])
1853− }
1854− function justifiedText(txt) {
1855− var p = Value.getTextSize(0,0,txt);
1856− return basicNewElement(EText_39("justify")(txt),p[0],p[1])
1857− }
1858− function rightedText(txt) {
1859− var p = Value.getTextSize(0,0,txt);
1860− return basicNewElement(EText_39("right")(txt),p[0],p[1])
1861− }
1862− function image_57(w) {
1863− return function(h) {
1864− return function(src) {
1865− return basicNewElement(EImage_40(src),w,h)
1866− }
1867− }
1868− }
1869− function images(srcs) {
1870− var pics = Elm.Signal.constant(spacer_66(0)(0));
1871− var update = Elm.Signal.lift(function(src) {
1872− src = JS.castStringToJSString(src);
1873− var img = new Image();
1874− img.onload = function() {
1875− Dispatcher.notify(pics.id,
1876− image_57(this.width)(this.height)(src));
1877− };
1878− img.src = src;
1879− })(srcs);
1880− function f(x) { return function(y) { return x; } }
1881− var combine = Elm.Signal.lift2(f)(pics)(update);
1882− return combine;
1883− }
1884− function video_58(w) {
1885− return function(h) {
1886− return function(src) {
1887− return basicNewElement(EVideo_41(src),w,h)
1888− }
1889− }
1890− }
1891− function fittedImage_59(w_147) {
1892− return function(h_148) {
1893− return function(s_149) {
1894− return basicNewElement(EFittedImage_42(s_149),w_147,h_148)
1895− }
1896− }
1897− }
1898− function flow_60(dir_150) {
1899− return function(es_151) {
1900− return function() {
1901− var w_152 = function() {
1902− var ws_154 = map(widthOf_52)(es_151);
1903− return function(case1) {
1904− var case0 = case1;
1905− switch(case0[0]) {
1906− case "DLeft":
1907− return sum(ws_154);
1908− case "DRight":
1909− return sum(ws_154)
1910− }
1911− return maximum(ws_154)
1912− }(dir_150)
1913− }();
1914− var h_153 = function() {
1915− var hs_155 = map(heightOf_53)(es_151);
1916− return function(case3) {
1917− var case2 = case3;
1918− switch(case2[0]) {
1919− case "DDown":
1920− return sum(hs_155);
1921− case "DUp":
1922− return sum(hs_155)
1923− }
1924− return maximum(hs_155)
1925− }(dir_150)
1926− }();
1927− return basicNewElement(EFlow_43(dir_150)(es_151), w_152, h_153)
1928− }()
1929− }
1930− }
1931− function above_61(e1_156) {
1932− return function(e2_157) {
1933− return basicNewElement(EFlow_43(DDown_3)(["Cons", e1_156, ["Cons", e2_157, ["Nil"]]]), Math.max(widthOf_52(e1_156),widthOf_52(e2_157)), heightOf_53(e1_156) + heightOf_53(e2_157));
1934− }
1935− }
1936− function below_62(e1_158) {
1937− return function(e2_159) {
1938− return basicNewElement(EFlow_43(DDown_3)(["Cons", e2_159, ["Cons", e1_158, ["Nil"]]]), Math.max(widthOf_52(e1_158),widthOf_52(e2_159)), heightOf_53(e1_158) + heightOf_53(e2_159));
1939− }
1940− }
1941− function beside_63(e1_160) {
1942− return function(e2_161) {
1943− return basicNewElement(EFlow_43(DRight_1)(["Cons", e1_160, ["Cons", e2_161, ["Nil"]]]), widthOf_52(e1_160) + widthOf_52(e2_161), Math.max(heightOf_53(e1_160),heightOf_53(e2_161)));
1944− }
1945− }
1946− function layers_64(es_162) {
1947− return basicNewElement(EFlow_43(DOut_5)(es_162), maximum(map(widthOf_52)(es_162)), maximum(map(heightOf_53)(es_162)))
1948− }
1949− function collage_65(w_163) {
1950− return function(h_164) {
1951− return function(forms_165) {
1952− return basicNewElement(ECollage_44(w_163)(h_164)(forms_165),w_163,h_164)
1953− }
1954− }
1955− }
1956− function spacer_66(w_166) {
1957− return function(h_167) {
1958− return basicNewElement(EEmpty_45,w_166,h_167)
1959− }
1960− }
1961− function container_67(w_169) {
1962− return function(h_170) {
1963− return function(pos_168) {
1964− return function(e_171) {
1965− return basicNewElement(EContainer_46(pos_168)(e_171),w_169,h_170)
1966− }
1967− }
1968− }
1969− }
1970− function segment_77(p1_172) {
1971− return function(p2_173) {
1972− return Line_75(["Cons", p1_172, ["Cons", p2_173, ["Nil"]]])
1973− }
1974− }
1975− function rect_80(w_174) {
1976− return function(h_175) {
1977− return function(pos_176) {
1978− return Shape_78(["Cons", ["Tuple2", 0 - w_174 / 2, 0 - h_175 / 2],
1979− ["Cons", ["Tuple2", 0 - w_174 / 2, h_175 / 2],
1980− ["Cons", ["Tuple2", w_174 / 2, h_175 / 2],
1981− ["Cons", ["Tuple2", w_174 / 2, 0 - h_175 / 2], ["Nil"]]]]])(pos_176)
1982− }
1983− }
1984− }
1985− function oval_81(w_177) {
1986− return function(h_178) {
1987− return function(pos_179) {
1988− return function() {
1989− var n_180 = 50;
1990− return function() {
1991− function f_181(i_182) {
1992− return["Tuple2", w_177 / 2 * Math.cos(2 * (Math.PI / n_180) * i_182), h_178 / 2 * Math.sin(2 * (Math.PI / n_180) * i_182)];
1993− }
1994− return Shape_78(map(f_181)(function() {
1995− var lo = 0;
1996− var hi = n_180 - 1;
1997− var lst = ["Nil"];
1998− if(lo <= hi) {
1999− do {
2000− lst = ["Cons", hi, lst]
2001− }while(hi-- > lo)
2002− }
2003− return lst
2004− }()))(pos_179)
2005− }()
2006− }()
2007− }
2008− }
2009− }
2010− function circle_82(r_183) {
2011− return oval_81(2 * r_183)(2 * r_183)
2012− }
2013− function ngon_83(n_184) {
2014− return function(r_185) {
2015− return function(pos_186) {
2016− return function() {
2017− var m_187 = n_184;
2018− return function() {
2019− function f_188(i_189) {
2020− return["Tuple2", r_185 * Math.cos(2 * (Math.PI / m_187) * i_189), r_185 * Math.sin(2 * (Math.PI / m_187) * i_189)];
2021− }
2022− return Shape_78(map(f_188)(function() {
2023− var lo = 0;
2024− var hi = n_184 - 1;
2025− var lst = ["Nil"];
2026− if(lo <= hi) {
2027− do {
2028− lst = ["Cons", hi, lst]
2029− }while(hi-- > lo)
2030− }
2031− return lst
2032− }()))(pos_186)
2033− }()
2034− }()
2035− }
2036− }
2037− }
2038− function solid_89(clr_190) {
2039− return function(ln_191) {
2040− return Form_84(0)(1)(["Tuple2", 0, 0])(FLine_85(Solid_68)(clr_190)(ln_191))
2041− }
2042− }
2043− function dotted_90(clr_192) {
2044− return function(ln_193) {
2045− return Form_84(0)(1)(["Tuple2", 0, 0])(FLine_85(Dotted_69)(clr_192)(ln_193))
2046− }
2047− }
2048− function dashed_91(clr_194) {
2049− return function(ln_195) {
2050− return Form_84(0)(1)(["Tuple2", 0, 0])(FLine_85(Dashed_70)(clr_194)(ln_195))
2051− }
2052− }
2053− function customLine_92(pattern_196) {
2054− return function(clr_197) {
2055− return function(ln_198) {
2056− return Form_84(0)(1)(["Tuple2", 0, 0])(FLine_85(Custom_71(pattern_196))(clr_197)(ln_198))
2057− }
2058− }
2059− }
2060− function filled_93(clr) {
2061− return function(shape) {
2062− return Form_84(0)(1)(shape[2])(FShape_86(Filled_72)(clr)(shape));
2063− }
2064− }
2065− function outlined_94(clr) {
2066− return function(shape) {
2067− return Form_84(0)(1)(shape[2])(FShape_86(Outlined_73)(clr)(shape));
2068− }
2069− }
2070− function customOutline_95(pattern) {
2071− return function(clr) {
2072− return function(shape) {
2073− return Form_84(0)(1)(shape[2])(FShape_86(CustomOutline_74(pattern))(clr)(shape));
2074− }
2075− }
2076− }
2077− function textured(src) {
2078− return function(shape) {
2079− return Form_84(0)(1)(shape[2])(FShape_86(["Textured",src])(null)(shape));
2080− }
2081− }
2082− function rotate_98(t_212) {
2083− return function(Form$thetascaleposform_213) {
2084− return function(case5) {
2085− var case0 = case5;
2086− switch(case0[0]) {
2087− case "Form":
2088− var case1 = case0[1], case2 = case0[2], case3 = case0[3], case4 = case0[4];
2089− return Form_84(t_212 + case1)(case2)(case3)(case4)
2090− }
2091− throw new Error("Non-exhaustive pattern match in case");
2092− }(Form$thetascaleposform_213)
2093− }
2094− }
2095− function scale_99(s) {
2096− return function(form) {
2097− return Form_84(form[1])(s * form[2])(form[3])(form[4])
2098− }
2099− }
2100− function move_100(x_224) {
2101− return function(y_225) {
2102− return function(Form$thetascaleTuple2$pxpyform_226) {
2103− return function(case7) {
2104− var case0 = case7;
2105− switch(case0[0]) {
2106− case "Form":
2107− var case1 = case0[1], case2 = case0[2], case3 = case0[3], case4 = case0[4];
2108− switch(case3[0]) {
2109− case "Tuple2":
2110− var case5 = case3[1], case6 = case3[2];
2111− return Form_84(case1)(case2)(["Tuple2", x_224 + case5, y_225 + case6])(case4)
2112− }
2113− break
2114− }
2115− throw new Error("Non-exhaustive pattern match in case");
2116− }(Form$thetascaleTuple2$pxpyform_226)
2117− }
2118− }
2119− }
2120− return{left:left_6, right:right_7, down:down_8, up:up_9, inward:inward_10, outward:outward_11, topLeft:topLeft_22, topRight:topRight_23, bottomLeft:bottomLeft_24, bottomRight:bottomRight_25, midLeft:midLeft_26, midRight:midRight_27, midTop:midTop_28, midBottom:midBottom_29, middle:middle_30, middleAt:middleAt, topLeftAt:topLeftAt_31, topRightAt:topRightAt_32, bottomLeftAt:bottomLeftAt_33, bottomRightAt:bottomRightAt_34, absolute:absolute_35, relative:relative_36, width:width_47, height:height_48, size:size_49, opacity:opacity_50,
2121− color:color_51, link:link, widthOf:widthOf_52, heightOf:heightOf_53, sizeOf:sizeOf_54, text:text_56, asText:asText, plainText:plainText, centeredText:centeredText, justifiedText:justifiedText, rightedText:rightedText, image:image_57, images:images, video:video_58, fittedImage:fittedImage_59, flow:flow_60, above:above_61, below:below_62, beside:beside_63, layers:layers_64, collage:collage_65, spacer:spacer_66, container:container_67, line:line_76, segment:segment_77, polygon:polygon_79, rect:rect_80, oval:oval_81, circle:circle_82, ngon:ngon_83, solid:solid_89, dotted:dotted_90, dashed:dashed_91, customLine:customLine_92, filled:filled_93,
2122− outlined:outlined_94, customOutline:customOutline_95, textured:textured, sprite:sprite_96, toForm:toForm_97, rotate:rotate_98, scale:scale_99, move:move_100,
2123− isWithin: Collage.insideForm}
2124−}();
2125−Elm.Text = function() {
2126− function fromString(s) { return Value.toText(s); }
2127−
2128− var addTag = function(tag) { return function(text) {
2129− return '<' + tag + ' style="padding:0;margin:0">' + text + '</' + tag + '>';
2130− };
2131− };
2132− var addStyle = function(style, value) { return function(text) {
2133− return "<span style='" + style + ":" + value + "'>" + text + "</span>";
2134− };
2135− };
2136−
2137− var typeface = function(name) {
2138− name = Elm.JavaScript.castStringToJSString(name);
2139− return addStyle('font-family', name);
2140− };
2141− var size = function(px) {
2142− return addStyle('font-size', px + 'px');
2143− };
2144− var header = addTag('h1');
2145− var height = function(h) { return addStyle('font-size', h+'em'); }
2146− var italic = addStyle('font-style', 'italic');
2147− var bold = addTag('b');
2148− var color = function(c) {
2149− return addStyle('color', Elm.Color.extract(c));
2150− };
2151− var underline = addStyle('text-decoration', 'underline');
2152− var overline = addStyle('text-decoration', 'overline');
2153− var strikeThrough = addStyle('text-decoration', 'line-through');
2154− var link = function(href) { return function(text) {
2155− return "<a href='" + fromString(href) + "'>" + text + "</a>";
2156− };
2157− };
2158−
2159− return {fromString : fromString,
2160− toText: fromString,
2161− header : header,
2162− height : height,
2163− italic : italic,
2164− bold : bold,
2165− underline : underline,
2166− overline : overline,
2167− strikeThrough : strikeThrough,
2168− monospace : typeface('monospace'),
2169− typeface : typeface,
2170− color : color,
2171− link : link };
2172−}();
2173−
2174−var Render = function(){
2175−
2176−function newElement(elementType) {
2177− var e = document.createElement(elementType);
2178− e.style.padding = "0";
2179− e.style.margin = "0";
2180− return e;
2181−};
2182−
2183−function addTo(container, elem) {
2184− container.appendChild(elem);
2185−};
2186−
2187−function makeText(pos,txt) {
2188− var e = newElement('div');
2189− e.innerHTML = txt;
2190− e.style.textAlign = pos;
2191− return e;
2192−};
2193−
2194−function image(src) {
2195− var img = newElement('img');
2196− img.src = src;
2197− img.name = src;
2198− img.style.display = "block";
2199− return img;
2200−}
2201−
2202−function fittedImage(w,h,src) {
2203− var e = newElement('div');
2204− e.style.width = w + 'px';
2205− e.style.height = h + 'px';
2206− e.style.position = "relative";
2207− e.style.overflow = "hidden";
2208−
2209− var img = newElement('img');
2210− img.onload = function() {
2211− img.style.position = 'absolute';
2212− img.style.margin = 'auto';
2213−
2214− var sw = w, sh = h;
2215− if (w / h > this.width / this.height) {
2216− sh = Math.round(this.height * w / this.width);
2217− } else {
2218− sw = Math.round(this.width * h / this.height);
2219− }
2220− img.style.width = sw + 'px';
2221− img.style.height = sh + 'px';
2222− img.style.left = ((w - sw) / 2) + 'px';
2223− img.style.top = ((h - sh) / 2) + 'px';
2224− };
2225− img.src = src;
2226− img.name = src;
2227− addTo(e,img);
2228− return e;
2229−};
2230−
2231−var video = function(src) {
2232− var e = newElement('video');
2233− e.controls = "controls";
2234− var source = newElement('source');
2235− source.src = src;
2236− var segs = src.split('.');
2237− source.type = "video/" + segs[segs.length-1];
2238− addTo(e, source);
2239− e.style.display = "block";
2240− return e;
2241−};
2242−
2243−function divify(e) {
2244− var div = newElement('div');
2245− addTo(div, e);
2246− return div;
2247−};
2248−function goDown(e) {
2249− return e //.tagName === "DIV" ? e : divify(e);
2250−};
2251−function goRight(e) {
2252− e.style.styleFloat = "left";
2253− e.style.cssFloat = "left";
2254− return e;
2255−};
2256−function goIn(e) {
2257− e.style.position = 'absolute';
2258− return e;
2259−};
2260−function flowWith(f, prep, elist) {
2261− var container = newElement('div');
2262− for (var i = elist.length; i--; ) {
2263− addTo(container, f(prep(elist[i])));
2264− }
2265− return container;
2266−};
2267−
2268−function flow(dir,elist) {
2269− switch(dir) {
2270− case "DDown": elist = elist.slice(0).reverse();
2271− case "DUp": return flowWith(goDown,render,elist);
2272− case "DRight": elist = elist.slice(0).reverse();
2273− case "DLeft": return flowWith(goRight,render,elist);
2274− case "DOut": elist = elist.slice(0).reverse();
2275− case "DIn": return flowWith(goIn,render,elist);
2276− };
2277−};
2278−
2279−function toPos(pos) {
2280− switch(pos[0]) {
2281− case "Absolute": return pos[1] + "px";
2282− case "Relative": return (pos[1] * 100) + "%";
2283− }
2284−}
2285−
2286−function setPos(pos,e) {
2287− e.style.position = 'absolute';
2288− e.style.margin = 'auto';
2289− switch(pos[0]) {
2290− case "Position":
2291− if (pos[1][0] !== "Far") e.style.left = 0;
2292− if (pos[1][0] !== "Near") e.style.right = 0;
2293− if (pos[2][0] !== "Far") e.style.top = 0;
2294− if (pos[2][0] !== "Near") e.style.bottom = 0;
2295− break;
2296− case "PositionAt":
2297− e.style.top = toPos(pos[2]);
2298− e.style.left = toPos(pos[1]);
2299− var shift = "translate(" + ~~(-e.style.width.slice(0,-2) / 2) + "px," + ~~(-e.style.height.slice(0,-2) / 2) + "px)";
2300− e.style.transform = shift;
2301− e.style.msTransform = shift;
2302− e.style.MozTransform = shift;
2303− e.style.webkitTransform = shift;
2304− e.style.OTransform = shift;
2305− break;
2306− default:
2307− var p = pos[0].slice(-2);
2308− e.style[p[0] === "T" ? 'top' : 'bottom'] = toPos(pos[2]);
2309− e.style[p[1] === "L" ? 'left' : 'right'] = toPos(pos[1]);
2310− }
2311−}
2312−
2313−function container(pos,elem) {
2314− var e = render(elem);
2315− setPos(pos,e);
2316− var div = newElement('div');
2317− div.style.position = "relative";
2318− div.style.overflow = "hidden";
2319− addTo(div,e);
2320− return div;
2321−};
2322−
2323−function render(elem) {
2324− var e = {};
2325− switch(elem[2][0]) {
2326− case "EText": e = makeText(elem[2][1],elem[2][2]); break;
2327− case "EImage": e = image(elem[2][1]); break;
2328− case "EVideo": e = video(elem[2][1]); break;
2329− case "EFittedImage": e = fittedImage(elem[3],elem[4],elem[2][1]); break;
2330− case "EFlow": e = flow(elem[2][1][0],elem[2][2]); break;
2331− case "ECollage": e = Collage.collage(elem[2][1],elem[2][2],elem[2][3]); break;
2332− case "EEmpty": e = newElement('div'); break;
2333− case "EContainer": e = container(elem[2][1],elem[2][2]); break;
2334− case "EHtml":
2335− e = elem[2][1];
2336− if (e.type !== 'button') {
2337− var p = Value.getExcess(e);
2338− elem[3] -= p[0];
2339− elem[4] -= p[1];
2340− }
2341− break;
2342− case "EExternalHtml":
2343− e = newElement('div');
2344− addTo(e, elem[2][1]);
2345− break;
2346− }
2347− e.id = elem[1];
2348− e.style.width = (~~elem[3]) + 'px';
2349− e.style.height = (~~elem[4]) + 'px';
2350− if (elem[5] !== 1) { e.style.opacity = elem[5]; }
2351− if (elem[6][0] === "Just") {
2352− e.style.backgroundColor = Elm.Color.extract(elem[6][1]);
2353− }
2354− if (elem[7][0] === "Just") {
2355− var a = newElement('a');
2356− a.href = elem[7][1];
2357− addTo(a,e);
2358− return a;
2359− }
2360− return e;
2361−};
2362−
2363−function update(node,curr,next) {
2364− if (node.tagName === 'A') { node = node.firstChild; }
2365− if (curr[1] === next[1]) return;
2366− if (curr[2][0] !== next[2][0]) {
2367− return node.parentNode.replaceChild(render(next),node);
2368− }
2369− var nextE = next[2], currE = curr[2];
2370− switch(nextE[0]) {
2371− case "EText":
2372− if (nextE[1] !== currE[1]) node.style.textAlign = nextE[1];
2373− if (nextE[2] !== currE[2]) node.innerHTML = nextE[2];
2374− break;
2375− case "EImage":
2376− if (nextE[1] !== currE[1]) node.src = nextE[1];
2377− break;
2378− case "EVideo":
2379− case "EFittedImage":
2380− if (!Value.eq(nextE,currE) || next[3]!==curr[3] || next[4]!==curr[4]) {
2381− return node.parentNode.replaceChild(render(next),node);
2382− }
2383− break;
2384− case "ECollage":
2385− if (nextE[1] !== currE[1] || nextE[2] !== currE[2] || nextE[3].length !== currE[3].length) {
2386− return node.parentNode.replaceChild(render(next),node);
2387− }
2388− Collage.updateCollage(node,currE[3],nextE[3]);
2389− break;
2390− case "EFlow":
2391− if (nextE[1] !== currE[1]) {
2392− return node.parentNode.replaceChild(render(next),node);
2393− }
2394− var nexts = nextE[2];
2395− var kids = node.childNodes;
2396− if (nexts.length !== kids.length) {
2397− return node.parentNode.replaceChild(render(next),node);
2398− }
2399− var currs = currE[2];
2400− var goDir = function(x) { return x; };
2401− switch(nextE[1][0]) {
2402− case "DDown": case "DUp": goDir = goDown; break;
2403− case "DRight": case "DLeft": goDir = goRight; break;
2404− case "DOut": case "DIn": goDir = goIn; break;
2405− }
2406− for (var i = kids.length; i-- ;) {
2407− update(kids[i],currs[i],nexts[i]);
2408− goDir(kids[i]);
2409− }
2410− break;
2411− case "EContainer":
2412− update(node.childNodes[0],currE[2],nextE[2]);
2413− setPos(nextE[1],node.childNodes[0]);
2414− break;
2415− case "EEmpty":
2416− break;
2417− case "EHtml":
2418− if (next[1] !== curr[1]) {
2419− var e = render(next);
2420− node.parentNode.replaceChild(e,node);
2421− node = e;
2422− }
2423− if (e.type !== 'button') {
2424− var p = Value.getExcess(node);
2425− next[3] -= p[0];
2426− next[4] -= p[1];
2427− }
2428− break;
2429− case "EExternalHtml":
2430− if (next[1] !== curr[1])
2431− node.parentNode.replaceChild(render(next),node);
2432− break;
2433− }
2434− if (next[3] !== curr[3]) node.style.width = (~~next[3]) + 'px';
2435− if (next[4] !== curr[4]) node.style.height = (~~next[4]) + 'px';
2436− if (next[5] !== curr[5]) node.style.opacity = next[5];
2437− if (next[6].length === 2) {
2438− var clr = Elm.Color.extract(next[6][1]);
2439− if (clr !== node.style.backgroundColor) node.style.backgroundColor = clr;
2440− }
2441− if (next[7].length === 2) {
2442− if (curr[7].length === 1 || next[7][1] !== curr[7][1]) node.parentNode.href = next[7][1];
2443− }
2444− next[1] = curr[1];
2445−}
2446−
2447−return {render:render,update:update,addTo:addTo,newElement:newElement,flowWith:flowWith,goIn:goIn};
2448−
2449−}();
2450−Elm.Signal = function() {
2451− var send = function(node, timestep, changed) {
2452− var kids = node.kids;
2453− for (var i = kids.length; i--; ) {
2454− kids[i].recv(timestep, changed, node.id);
2455− }
2456− };
2457− function input(base) {
2458− this.id = Guid.guid();
2459− this.value = base;
2460− this.kids = [];
2461− this.defaultNumberOfKids = 0;
2462− this.recv = function(timestep, eid, v) {
2463− var changed = eid === this.id;
2464− if (changed) { this.value = v; }
2465− send(this, timestep, changed);
2466− return changed;
2467− };
2468− Dispatcher.inputs.push(this);
2469− };
2470− function lift(func,args) {
2471− this.id = Guid.guid();
2472− this.value = null;
2473− this.kids = [];
2474− this.count = 0;
2475− this.changed = false;
2476−
2477− args.reverse();
2478− this.recalc = function() {
2479− var f = func;
2480− for (var i = args.length; i--; ) {
2481− f = f(args[i].value);
2482− }
2483− this.value = f;
2484− };
2485− this.recalc();
2486−
2487− this.recv = function(timestep, changed, parentID) {
2488− this.count += 1;
2489− if (changed) { this.changed = true; }
2490− if (this.count == args.length) {
2491− if (this.changed) { this.recalc() }
2492− send(this, timestep, this.changed);
2493− this.changed = false;
2494− this.count = 0;
2495− }
2496− };
2497− for (var i = args.length; i--; ) {
2498− args[i].kids.push(this);
2499− }
2500− };
2501− function fold(func,base,baseIsFunc,input) {
2502− this.id = Guid.guid();
2503− this.value = baseIsFunc ? base(input.value) : base;
2504− this.kids = [];
2505− this.recv = function(timestep, changed, parentID) {
2506− if (changed) { this.value = func(input.value)(this.value); }
2507− send(this, timestep, changed);
2508− };
2509− input.kids.push(this);
2510− };
2511−
2512− function dropIf(pred,base,input) {
2513− this.id = Guid.guid();
2514− this.value = pred(input.value) ? base : input.value;
2515− this.kids = [];
2516− this.recv = function(timestep, changed, parentID) {
2517− var chng = changed && !pred(input.value);
2518− if (chng) { this.value = input.value; }
2519− send(this, timestep, chng);
2520− };
2521− input.kids.push(this);
2522− };
2523−
2524− function dropRepeats(input) {
2525− this.id = Guid.guid();
2526− this.value = input.value;
2527− this.kids = [];
2528− this.recv = function(timestep, changed, parentID) {
2529− var chng = changed && !Value.eq(this.value,input.value);
2530− if (chng) { this.value = input.value; }
2531− send(this, timestep, chng);
2532− };
2533− input.kids.push(this);
2534− };
2535−
2536− var dropWhen = function(s1) { return function(b) { return function(s2) {
2537− var pairs = new lift(function(x){return function(y){return [x,y];};},[s1,s2]);
2538− var dropped = new dropIf(function(p){return p[0];},[true,b],pairs);
2539− return new lift(function(p){return p[1];},[dropped]); }; };
2540− };
2541−
2542− function timeIndex(pair,s) {
2543− this.id = Guid.guid();
2544− var t = (new window.Date).getTime();
2545− this.value = pair ? Value.Tuple(t,s.value) : t;
2546− this.kids = [];
2547− this.recv = function(timestep, changed, parentID) {
2548− if (changed) this.value = pair ? Value.Tuple(timestep, s.value) : timestep;
2549− send(this, timestep, changed);
2550− };
2551− s.kids.push(this);
2552− }
2553−
2554− function sampleOn(s1,s2) {
2555− this.id = Guid.guid();
2556− this.value = s2.value;
2557− this.kids = [];
2558− this.count = 0;
2559− this.changed = false;
2560−
2561− this.recv = function(timestep, changed, parentID) {
2562− if (parentID === s1.id) this.changed = changed;
2563− this.count += 1;
2564− if (this.count == 2) {
2565− if (this.changed) { this.value = s2.value; }
2566− send(this, timestep, this.changed);
2567− this.count = 0;
2568− this.changed = false;
2569− }
2570− };
2571− s1.kids.push(this);
2572− s2.kids.push(this);
2573− };
2574−
2575− function delay(t) { return function(s) {
2576− var delayed = new input(s.value);
2577− var firstEvent = true;
2578− function update(v) {
2579− if (firstEvent) return;
2580− setTimeout(function() { Dispatcher.notify(delayed.id,v); },t);
2581− }
2582− function first(a) { return function(b) { return a; }; }
2583− var out = new sampleOn(delayed,new lift(first, [delayed, new lift(update,[s])]));
2584− firstEvent = false;
2585− return out;
2586− };
2587− }
2588−
2589− function merge(s1,s2) {
2590− this.id = Guid.guid();
2591− this.value = s1.value;
2592− this.kids = [];
2593− this.next = null;
2594− this.count = 0;
2595− this.changed = false;
2596−
2597− this.recv = function(timestep, changed, parentID) {
2598− this.count += 1;
2599− if (changed) {
2600− this.changed = true;
2601− if (parentID == s2.id && this.next === null) { this.next = s2.value; }
2602− if (parentID == s1.id) { this.next = s1.value; }
2603− }
2604−
2605− if (this.count == 2) {
2606− if (this.changed) {
2607− this.value = this.next;
2608− this.next = null;
2609− }
2610− send(this, timestep, this.changed);
2611− this.changed = false;
2612− this.count = 0;
2613− }
2614− };
2615− s1.kids.push(this);
2616− s2.kids.push(this);
2617− };
2618−
2619− function merges(ss) {
2620− function mrg(x) { return function(y) { return new merge(x,y); }; }
2621− return Elm.List.foldl1(mrg)(ss);
2622− }
2623−
2624− function mergeEither(s1) { return function(s2) {
2625− function f(s) { return function(x) { return [s,x]; }; }
2626− return new merge(new lift(f('Left'),[s1]), new lift(f('Right'),[s2]));
2627− };
2628− }
2629−
2630− function average(sampleSize) { return function(s) {
2631− var sample = new Array(sampleSize);
2632− var i = sampleSize;
2633− while (i--) sample[i] = 0;
2634− i = 0;
2635− var full = false;
2636− var total = 0;
2637− function f(n) {
2638− total += n - sample[i];
2639− sample[i] = n;
2640− var avg = total / Math.max(1, full ? sampleSize : i);
2641− if (++i == sampleSize) { full = true; i = 0; }
2642− return avg;
2643− }
2644− return new lift(f, [s]);
2645− };
2646− }
2647−
2648− return {
2649− constant : function(v) { return new input(v); },
2650− lift : function(f){return function(e){return new lift(f,[e]);};},
2651− lift2 : function(f) {
2652− return function(e1) { return function(e2) {
2653− return new lift(f, [e1,e2]); };};},
2654− lift3 : function(f) {
2655− return function(e1) { return function(e2) {
2656− return function(e3){return new lift(f,[e1,e2,e3]);};};};},
2657− lift4 : function(f) {
2658− return function(e1) { return function(e2) {
2659− return function(e3) { return function(e4) {
2660− return new lift(f, [e1,e2,e3,e4]);};};};};},
2661− lift5 : function(f) {
2662− return function(e1) { return function(e2) {
2663− return function(e3) { return function(e4) {
2664− return function(e5) {
2665− return new lift(f, [e1,e2,e3,e4,e5]);};};};};};},
2666− lift6 : function(f) { return function(e1) { return function(e2) {
2667− return function(e3) { return function(e4) {
2668− return function(e5) { return function(e6) {
2669− return new lift(f, [e1,e2,e3,e4,e5,e6]); };};};};};};},
2670− lift7 : function(f) { return function(e1) { return function(e2) {
2671− return function(e3) { return function(e4) {
2672− return function(e5) { return function(e6) {
2673− return function(e7) {
2674− return new lift(f, [e1,e2,e3,e4,e5,e6,e7]);};};};};};};};},
2675− lift8 : function(f) { return function(e1) { return function(e2) {
2676− return function(e3) { return function(e4) {
2677− return function(e5) { return function(e6) {
2678− return function(e7) { return function(e8) {
2679− return new lift(f, [e1,e2,e3,e4,e5,e6,e7,e8]);};};};};};};};};},
2680− foldp : function(f) { return function(b) { return function(e) {
2681− return new fold(f,b,false,e); }; }; },
2682− foldp$ : function(f) { return function(b) { return function(e) {
2683− return new fold(f,b,true,e); }; }; },
2684− foldp1 : function(f) { return function(e) {
2685− return new fold(f,function(x){return x;},true,e); }; },
2686− delay : delay,
2687− merge : function(s1) { return function(s2) { return new merge(s1,s2)}; },
2688− merges : merges,
2689− mergeEither : mergeEither,
2690− average : average,
2691− count : function(sig) {
2692− var incr = function(_){return function(c){return c+1;};};
2693− return new fold(incr,0,false,sig) },
2694− countIf : function(pred) { return function(sig) {
2695− var incr = function(x){return function(c){return pred(x) ? c+1 : c;};};
2696− return new fold(incr,0,false,sig) }; },
2697− keepIf : function(pred) { return function(base) { return function(sig) {
2698− return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },
2699− dropIf : function(pred) { return function(base) { return function(sig) {
2700− return new dropIf(pred,base,sig); }; }; },
2701− keepWhen : function(s) { return dropWhen(new lift(function(b){return !b;},[s])); },
2702− dropWhen : dropWhen,
2703− dropRepeats : function(s) { return new dropRepeats(s);},
2704− sampleOn : function(s1){return function(s2){return new sampleOn(s1,s2);};},
2705− timestamp : function(s) { return new timeIndex(true, s); },
2706− timeOf : function(s) { return new timeIndex(false, s); }
2707− };
2708−}();
2709−var Dispatcher = function() {
2710− var program = null;
2711− var inputs = [];
2712− var currentElement = null;
2713−
2714− var initialize = function() {
2715− program = Elm.main();
2716− if (!('recv' in program)) {
2717− program = Elm.Signal.constant(program);
2718− }
2719−
2720− currentElement = program.value;
2721− filterDeadInputs();
2722−
2723− var content = document.getElementById('content');
2724− content.appendChild(Render.render(currentElement));
2725− var w = document.getElementById('widthChecker').offsetWidth;
2726− if (w !== window.innerWidth) {
2727− Dispatcher.notify(Elm.Window.dimensions.id, Value.Tuple(w, window.innerHeight));
2728− }
2729− program = Elm.Signal.lift(function(value) {
2730− var content = document.getElementById('content');
2731− Render.update(content.firstChild,currentElement,value);
2732− currentElement = value;
2733− return value;
2734− })(program);
2735− };
2736− var notify = function(id, v) {
2737− var timestep = (new window.Date).getTime();
2738− var hasListener = false;
2739− for (var i = inputs.length; i--; ) {
2740− hasListener = inputs[i].recv(timestep, id, v) || hasListener;
2741− }
2742− return hasListener;
2743− };
2744−
2745− function isAlive(input) {
2746− if (!('defaultNumberOfKids' in input)) return true;
2747− var len = input.kids.length;
2748− if (len == 0) return false;
2749− if (len > input.defaultNumberOfKids) return true;
2750− var alive = false;
2751− for (var i = len; i--; ) {
2752− alive = alive || isAlive(input.kids[i]);
2753− }
2754− return alive;
2755− }
2756− function filterDeadInputs() {
2757− var temp = [];
2758− for (var i = inputs.length; i--; ) {
2759− if (isAlive(inputs[i])) temp.push(inputs[i]);
2760− }
2761− inputs = temp;
2762− }
2763−
2764− return {initialize:initialize, notify:notify, inputs:inputs};
2765−}();
2766−/*! HTTP
2767−A library for asynchronous HTTP requests (AJAX). See the
2768−[WebSocket](http://elm-lang.org/docs/WebSocket.elm) library if
2769−you have very strict latency requirements.
2770−!*/
2771−
2772−Elm.HTTP = function() {
2773− var JS = Elm.JavaScript;
2774− var toElmString = Elm.JavaScript.castJSStringToString;
2775−
2776− /*[Creating Requests]*/
2777−
2778− /** get : String -> Request String
2779− Create a GET request to the given url.
2780− **/
2781− function get(url) { return request("GET")(url)(null)(["Nil"]); }
2782−
2783− /** post : String -> String -> Request String
2784− Create a POST request to the given url, carrying the given data.
2785− **/
2786− function post(url) { return function(data) {
2787− return request("POST")(url)(data)(["Nil"]); }; }
2788−
2789− /** request : String -> String -> String -> [(String,String)] -> Request String
2790− Create a customized request. Arguments are request type (get, post, put,
2791− delete, etc.), target url, data, and a list of additional headers.
2792− **/
2793− function request(verb) { return function(url) { return function(data) {
2794− return function(headers) {
2795− return {0 : "Request",
2796− length : 1,
2797− verb : JS.castStringToJSString(verb),
2798− url : JS.castStringToJSString(url),
2799− data : data === null ? null : JS.castStringToJSString(data),
2800− headers : headers }; }; }; };
2801− }
2802−
2803− function registerReq(queue,responses) { return function(req) {
2804− if (req.url !== "") { sendReq(queue,responses,req); }
2805− };
2806− }
2807−
2808− function updateQueue(queue,responses) {
2809− if (queue.length > 0) {
2810− Dispatcher.notify(responses.id, queue[0].value);
2811− if (queue[0].value[0] !== "Waiting") {
2812− queue.shift();
2813− setTimeout(function() { updateQueue(queue,responses); }, 0);
2814− }
2815− }
2816− }
2817−
2818− function sendReq(queue,responses,req) {
2819− var response = { value: ["Waiting"] };
2820− queue.push(response);
2821−
2822− var request = null;
2823− if (window.ActiveXObject) { request = new ActiveXObject("Microsoft.XMLHTTP"); }
2824− if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }
2825− request.onreadystatechange = function(e) {
2826− if (request.readyState === 4) {
2827− response.value = (request.status === 200
2828− ? ["Success", toElmString(request.responseText)]
2829− : ["Failure", request.status,
2830− toElmString(request.statusText)]);
2831− setTimeout(function() { updateQueue(queue,responses); }, 0);
2832− }
2833− };
2834− request.open(req.verb, req.url, true);
2835− Elm.List.map(function(pair) {
2836− request.setRequestHeader(
2837− JS.castStringToJSString(pair[1]),
2838− JS.castStringToJSString(pair[2]));
2839− })(req.headers);
2840− request.send(req.data);
2841− return null;
2842− }
2843−
2844− /*[Responses]*/
2845−
2846− /** data Response a = Waiting | Success a | Failure Int String
2847− The datatype for responses. Success contains only the returned message.
2848− Failures contain both an error code and an error message.
2849− **/
2850−
2851− /*[Sending Requests]*/
2852−
2853− /** send : Signal (Request a) -> Signal (Response String)
2854− Performs an HTTP request with the given requests. Produces a signal
2855− that carries the responses.
2856− **/
2857− function send(requests) {
2858− var responses = Elm.Signal.constant(["Waiting"]);
2859− var sender = Elm.Signal.lift(registerReq([],responses))(requests);
2860− function f(x) { return function(y) { return x; } }
2861− return Elm.Signal.lift2(f)(responses)(sender);
2862− }
2863−
2864− /** sendGet : Signal String -> Signal (Response String)
2865− Performs an HTTP GET request with the given urls. Produces a signal
2866− that carries the responses.
2867− **/
2868−
2869− return {get : get,
2870− post : post,
2871− request : request,
2872− send : send,
2873− sendGet : function(urls){return send(Elm.Signal.lift(get)(urls));}
2874− };
2875−}();
2876−/*! WebSocket
2877−A library for low latency HTTP communication. See the HTTP library for standard
2878−requests like GET, POST, etc.
2879−!*/
2880−
2881−Elm.WebSocket = function() {
2882− var JS = Elm.JavaScript;
2883−
2884− /** open : String -> Signal String -> Signal String
2885− Create a web-socket. The first argument is the URL of the desired
2886− web-socket server. The input signal holds the outgoing messages,
2887− and the resulting signal contains the incoming ones.
2888− **/
2889− function open(url) { return function(outgoing) {
2890− var incoming = Elm.Signal.constant(["Nil"]);
2891− var ws = new window.WebSocket(JS.castStringToJSString(url));
2892−
2893− var pending = [];
2894− var ready = false;
2895−
2896− ws.onopen = function(e) {
2897− var len = pending.length;
2898− for (var i = 0; i < len; ++i) { ws.send(pending[i]); }
2899− ready = true;
2900− };
2901− ws.onmessage = function(event) {
2902− Dispatcher.notify(incoming.id, JS.castJSStringToString(event.data));
2903− };
2904−
2905− function send(msg) {
2906− var s = JS.castStringToJSString(msg);
2907− ready ? ws.send(s) : pending.push(s);
2908− }
2909−
2910− function take1(x) { return function(y) { return x; } }
2911− return Elm.Signal.lift2(take1)(incoming)(Elm.Signal.lift(send)(outgoing));
2912− };
2913− }
2914−
2915− return {open:open};
2916−}();
2917−
2918−Elm.Input = function() {
2919− var JS = Elm.JavaScript;
2920− var toElmString = Elm.JavaScript.castJSStringToString;
2921− var newTextInput = function(elem, ghostText) {
2922− elem.placeholder = JS.castStringToJSString(ghostText);
2923− var str = Elm.Signal.constant(["Nil"]);
2924− Value.addListener(elem, 'keyup', function(e) {
2925− Dispatcher.notify(str.id, toElmString(elem.value));
2926− elem.focus();
2927− });
2928− elem.style.padding = "1px";
2929− return Value.Tuple(Value.wrap(elem), str);
2930− };
2931− var newElement = function(name) {
2932− var e = document.createElement(name);
2933− e.style.padding = "0";
2934− e.style.margin = "0";
2935− return e;
2936− };
2937− var textArea = function(cols) { return function(rows) {
2938− var textarea = newElement('textarea');
2939− textarea.rows = rows;
2940− textarea.cols = cols;
2941− return newTextInput(textarea, "");
2942− };
2943− };
2944− var textField = function(ghostText) {
2945− var field = newElement('input');
2946− field.type = 'text';
2947− return newTextInput(field, ghostText);
2948− };
2949− var password = function(ghostText) {
2950− var field = newElement('input');
2951− field.type = 'password';
2952− return newTextInput(field, ghostText);
2953− };
2954− var checkbox = function(checked) {
2955− var box = newElement('input');
2956− box.type = 'checkbox';
2957− box.checked = checked;
2958− var status = Elm.Signal.constant(checked);
2959− Value.addListener(box, 'change', function(e) {
2960− Dispatcher.notify(status.id, box.checked);
2961− });
2962− return Value.Tuple(Value.wrap(box), status);
2963− };
2964− var dropDown = function(options) {
2965− var slct = newElement('select');
2966− var opts = [];
2967− while (options[0] === "Cons") {
2968− var opt = newElement('option');
2969− var str = Value.toText(options[1][1]);
2970− opt.value = str;
2971− opt.innerHTML = str;
2972− slct.appendChild(opt);
2973− opts.push(options[1][2]);
2974− options = options[2];
2975− }
2976− var status = Elm.Signal.constant(opts[0]);
2977− Value.addListener(slct, 'change', function(e) {
2978− Dispatcher.notify(status.id, opts[slct.selectedIndex]);
2979− });
2980− return Value.Tuple(Value.wrap(slct), status);
2981− };
2982− var stringDropDown = function(opts) {
2983− return dropDown(Elm.List.map (function(x) {return Value.Tuple(x,x);}) (opts));
2984− };
2985− var button = function(name) {
2986− var b = newElement('input');
2987− b.type = "button";
2988− b.value = JS.castStringToJSString(name);
2989− var press = Elm.Signal.constant(false);
2990− Value.addListener(b, 'click', function(e) {
2991− Dispatcher.notify(press.id, true);
2992− Dispatcher.notify(press.id, false);
2993− });
2994− return Value.Tuple(Value.wrap(b),press);
2995− };
2996− return {textArea:textArea, textField:textField,
2997− password:password, checkbox:checkbox,
2998− dropDown:dropDown, stringDropDown:stringDropDown,
2999− button:button};
3000−}();
3001−
3002−Elm.Keyboard = { Raw : function() {
3003− var keysDown = Elm.Signal.constant(["Nil"]);
3004− var charPressed = Elm.Signal.constant(["Nothing"]);
3005−
3006− function remove(x,xs) {
3007− if (xs[0] === "Nil") return xs;
3008− if (xs[1] === x) return xs[2];
3009− return ["Cons", xs[1], remove(x,xs[2])];
3010− }
3011− function has(x,xs) {
3012− while (xs[0] !== "Nil") {
3013− if (xs[1] === x) return true;
3014− xs = xs[2];
3015− }
3016− return false;
3017− }
3018− Value.addListener(document, 'keydown', function(e) {
3019− if (has(e.keyCode, keysDown.value)) return;
3020− var hasListener = Dispatcher.notify(keysDown.id, ["Cons", e.keyCode, keysDown.value]);
3021− if (!hasListener)
3022− this.removeEventListener('keydown',arguments.callee,false);
3023− });
3024− Value.addListener(document, 'keyup', function(e) {
3025− var codes = remove(e.keyCode, keysDown.value);
3026− var hasListener = Dispatcher.notify(keysDown.id, codes);
3027− if (!hasListener)
3028− this.removeEventListener('keyup',arguments.callee,false);
3029− });
3030− Value.addListener(window, 'blur', function(e) {
3031− var hasListener = Dispatcher.notify(keysDown.id, ["Nil"]);
3032− if (!hasListener)
3033− this.removeEventListener('blur',arguments.callee,false);
3034− });
3035− Value.addListener(document, 'keypress', function(e) {
3036− var hasListener = Dispatcher.notify(charPressed.id, ["Just",e.charCode || e.keyCode]);
3037− Dispatcher.notify(charPressed.id, ["Nothing"]);
3038− if (!hasListener)
3039− this.removeEventListener('keypress',arguments.callee,false);
3040− });
3041− return {keysDown:keysDown,
3042− charPressed:charPressed};
3043− }()
3044−};
3045−
3046−/*! Keyboard
3047−These are nicely curated inputs from the keyboard. See the
3048−[Keyboard.Raw library](/docs/Signal/KeyboardRaw.elm) for a
3049−lower-level interface that will let you define more complicated behavior.
3050−!*/
3051−
3052−(function() {
3053− function keySignal(f) {
3054− var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
3055− Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
3056− signal.defaultNumberOfKids = 0;
3057− return signal;
3058− }
3059−
3060− function dir(left,right,up,down) {
3061− function f(ks) {
3062− var x = 0, y = 0;
3063− while (ks[0] == "Cons") {
3064− switch (ks[1]) {
3065− case left : --x; break;
3066− case right: ++x; break;
3067− case up : ++y; break;
3068− case down : --y; break;
3069− }
3070− ks = ks[2];
3071− }
3072− return { _:[true], x:[x], y:[y] };
3073− }
3074− return keySignal(f);
3075− }
3076−
3077− function is(key) {
3078− function f(ks) {
3079− while (ks[0] == "Cons") {
3080− if (key == ks[1]) return true;
3081− ks = ks[2];
3082− }
3083− return false;
3084− }
3085− return keySignal(f);
3086− }
3087−
3088− /*[Directions]*/
3089−
3090− /** arrows : Signal { x:Int, y:Int }
3091− A signal of records indicating which arrow keys are pressed.
3092−
3093− `{ x = 0, y = 0 }` when pressing no arrows.
3094− `{ x =-1, y = 0 }` when pressing the left arrow.
3095− `{ x = 1, y = 1 }` when pressing the up and right arrows.
3096− `{ x = 0, y =-1 }` when pressing the down, left, and right arrows.
3097− **/
3098− Elm.Keyboard.arrows = dir(37,39,38,40);
3099−
3100− /** wasd : Signal { x:Int, y:Int }
3101− Just like the arrows signal, but this uses keys w, a, s, and d,
3102− which are common controls for many computer games.
3103− **/
3104− Elm.Keyboard.wasd = dir(65,68,87,83);
3105−
3106− /*[Modifiers]*/
3107−
3108− /** shift : Signal Bool
3109− Whether the shift key is pressed.
3110− **/
3111− Elm.Keyboard.shift = is(16);
3112−
3113− /** ctrl : Signal Bool
3114− Whether the control key is pressed.
3115− **/
3116− Elm.Keyboard.ctrl = is(17);
3117−
3118− /** space : Signal Bool
3119− Whether the space key is pressed.
3120− **/
3121− Elm.Keyboard.space = is(32);
3122−
3123−}());
3124−/*! Mouse
3125− !*/
3126−
3127−Elm.Mouse = function() {
3128− /*[Position]*/
3129−
3130− /** position : Signal (Int,Int)
3131− The current mouse position.
3132− **/
3133− var position = Elm.Signal.constant(Value.Tuple(0,0));
3134− position.defaultNumberOfKids = 2;
3135−
3136− /** x : Signal Int
3137− The current x-coordinate of the mouse.
3138− **/
3139− var x = Elm.Signal.lift(function(p){return p[1];})(position);
3140− x.defaultNumberOfKids = 0;
3141−
3142− /** y : Signal Int
3143− The current y-coordinate of the mouse.
3144− **/
3145− var y = Elm.Signal.lift(function(p){return p[2];})(position);
3146− y.defaultNumberOfKids = 0;
3147−
3148− /*[Button Status]*/
3149−
3150− /** isDown : Signal Bool
3151− The current state of the left mouse-button.
3152− True when the button is down, and false otherwise.
3153− **/
3154− var isDown = Elm.Signal.constant(false);
3155−
3156− /** isClicked : Signal Bool
3157− True immediately after the left mouse-button has been clicked,
3158− and false otherwise.
3159− **/
3160− var isClicked = Elm.Signal.constant(false);
3161−
3162− /** clicks : Signal ()
3163− Always equal to unit. Event triggers on every mouse click.
3164− **/
3165− var clicks = Elm.Signal.constant(Value.Tuple());
3166−
3167− function getXY(e) {
3168− var posx = 0;
3169− var posy = 0;
3170− if (!e) e = window.event;
3171− if (e.pageX || e.pageY) {
3172− posx = e.pageX;
3173− posy = e.pageY;
3174− } else if (e.clientX || e.clientY) {
3175− posx = e.clientX + document.body.scrollLeft +
3176− document.documentElement.scrollLeft;
3177− posy = e.clientY + document.body.scrollTop +
3178− document.documentElement.scrollTop;
3179− }
3180− return Value.Tuple(posx, posy);
3181− }
3182−
3183− Value.addListener(document, 'click', function(e) {
3184− var hasListener1 = Dispatcher.notify(isClicked.id, true);
3185− var hasListener2 = Dispatcher.notify(clicks.id, Value.Tuple());
3186− Dispatcher.notify(isClicked.id, false);
3187− if (!hasListener1 && !hasListener2)
3188− this.removeEventListener('click',arguments.callee,false);
3189− });
3190− Value.addListener(document, 'mousedown', function(e) {
3191− var hasListener = Dispatcher.notify(isDown.id, true);
3192− if (!hasListener)
3193− this.removeEventListener('mousedown',arguments.callee,false);
3194− });
3195− Value.addListener(document, 'mouseup', function(e) {
3196− var hasListener = Dispatcher.notify(isDown.id, false);
3197− if (!hasListener)
3198− this.removeEventListener('mouseup',arguments.callee,false);
3199− });
3200− Value.addListener(document, 'mousemove', function(e) {
3201− var hasListener = Dispatcher.notify(position.id, getXY(e));
3202− if (!hasListener)
3203− this.removeEventListener('mousemove',arguments.callee,false);
3204− });
3205−
3206− /** isClickedOn : Element -> (Element, Signal Bool)
3207− Determine whether an element has been clicked. The resulting pair
3208− is a signal of booleans that is true when its paired element has
3209− been clicked. The signal is True immediately after the left
3210− mouse-button has been clicked, and false otherwise.
3211− **/
3212− var clickedOn = function(elem) {
3213− var node = Render.render(elem);
3214− var click = Elm.Signal.constant(false);
3215− Value.addListener(node, 'click', function(e) {
3216− Dispatcher.notify(click.id, true);
3217− Dispatcher.notify(click.id, false);
3218− });
3219− return Value.Tuple(Value.wrap(node), click);
3220− };
3221− return {position: position,
3222− x:x,
3223− y:y,
3224− isClicked: isClicked,
3225− isDown: isDown,
3226− clicks: clicks,
3227− isClickedOn: clickedOn
3228− };
3229− }();/*! Random
3230− !*/
3231−
3232−Elm.Random = function() {
3233− /*[In a Range]*/
3234−
3235− /** inRange : Int -> Int -> Signal Int
3236− Given a range from low to high, this produces a random number
3237− between 'low' and 'high' inclusive. The value in the signal does
3238− not change after the page has loaded.
3239− **/
3240− var inRange = function(min) { return function(max) {
3241− return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
3242− };
3243− };
3244−
3245− /** randomize : Int -> Int -> Signal a -> Signal Int
3246− Given a range from low to high and a signal of values, this produces
3247− a new signal that changes whenever the input signal changes. The new
3248− values are random number between 'low' and 'high' inclusive.
3249− **/
3250− var randomize = function(min) { return function(max) { return function(signal) {
3251− function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
3252− return Elm.Signal.lift(f)(signal);
3253− };
3254− };
3255− };
3256− return { inRange:inRange, randomize:randomize };
3257−}();/*! Time
3258−Library for working with time. Type `Time` represents some number of
3259−milliseconds.
3260−!*/
3261−
3262−Elm.Time = function() {
3263−
3264− /*[Times]*/
3265−
3266− /** hour, minute, second, ms : Time
3267− Units of time, making it easier to specify things like a
3268− half-second `(second / 2)`.
3269− **/
3270−
3271− function timeNow() { return (new window.Date).getTime(); }
3272−
3273− /*[Tickers]*/
3274−
3275− /** fps : Number -> Signal Time
3276− Takes desired number of frames per second (fps). The resulting signal
3277− gives a sequence of time deltas as quickly as possible until it reaches
3278− the desired FPS. A time delta is the time between the last frame and the
3279− current frame.
3280− **/
3281−
3282− /** fpsWhen : Number -> Signal Bool -> Signal Time
3283− Same as the fps function, but you can turn it on and off. Allows you
3284− to do brief animations based on user input without major ineffeciencies.
3285− The first time delta after a pause is always zero, no matter how long
3286− the pause was. This way summing the deltas will actually give the amount
3287− of time that the output signal has been running.
3288− **/
3289− function fpsWhen(desiredFPS) { return function (isOn) {
3290− var msPerFrame = 1000 / desiredFPS;
3291− var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
3292− var ticker = Elm.Signal.constant(diff);
3293− function tick(zero) { return function() {
3294− curr = timeNow();
3295− diff = zero ? 0 : curr - prev;
3296− prev = curr;
3297− Dispatcher.notify(ticker.id, diff);
3298− };
3299− }
3300− var timeoutID = 0;
3301− function f(isOn) { return function(t) {
3302− if (isOn) {
3303− timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
3304− } else if (wasOn) {
3305− clearTimeout(timeoutID);
3306− }
3307− wasOn = isOn;
3308− return t;
3309− };
3310− }
3311− return Elm.Signal.lift2(f)(isOn)(ticker);
3312− };
3313− }
3314−
3315− /** every : Time -> Signal Time
3316− Takes a time interval t. The resulting signal is the current time,
3317− updated every t.
3318− **/
3319− function everyWhen(isOn) { return function(t) {
3320− var clock = Elm.Signal.constant(timeNow());
3321− function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
3322− setInterval(tellTime, t);
3323− return clock;
3324− };
3325− }
3326−
3327− function since(t) { return function(s) {
3328− function cmp(a) { return function(b) { return !Value.eq(a,b); }; }
3329− var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
3330− return Elm.Signal.lift2(cmp)(Elm.Signal.count(s))(dcount);
3331− };
3332− }
3333− function after(t) {
3334− t *= 1000;
3335− var thread = Elm.Signal.constant(false);
3336− setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);
3337− return thread;
3338− }
3339− function before(t) {
3340− t *= 1000;
3341− var thread = Elm.Signal.constant(true);
3342− setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);
3343− return thread;
3344− }
3345− function read(s) {
3346− var t = window.Date.parse(s);
3347− return isNaN(t) ? ["Nothing"] : ["Just",t];
3348− }
3349− return {fpsWhen : fpsWhen,
3350− fps : function(t) { return fpsWhen(t)(Elm.Signal.constant(true)); },
3351− every : everyWhen(Elm.Signal.constant(true)),
3352− delay : Elm.Signal.delay,
3353− since : since,
3354− after : after,
3355− before : before,
3356− hour : 3600000,
3357− minute : 60000,
3358− second : 1000,
3359− ms : 1,
3360− inHours : function(t) { return t / 3600000; },
3361− inMinutes : function(t) { return t / 60000; },
3362− inSeconds : function(t) { return t / 1000; },
3363− inMss : function(t) { return t; },
3364− toDate : function(t) { return new window.Date(t); },
3365− read : read
3366− };
3367−
3368−}();/*! Window !*/
3369−
3370−Elm.Window = function() {
3371−
3372− /*[Dimensions]*/
3373−
3374− /** dimensions : Signal (Int,Int)
3375− The current dimensions of the window (i.e. the area viewable to the
3376− user, not including scroll bars).
3377− **/
3378− var dimensions = Elm.Signal.constant(Value.Tuple(window.innerWidth,
3379− window.innerHeight));
3380− dimensions.defaultNumberOfKids = 2;
3381−
3382− /** width : Signal Int
3383− The current width of the window.
3384− **/
3385− var width = Elm.Signal.lift(function(p){return p[1];})(dimensions);
3386− width.defaultNumberOfKids = 0;
3387−
3388− /** height : Signal Int
3389− The current height of the window.
3390− **/
3391− var height = Elm.Signal.lift(function(p){return p[2];})(dimensions);
3392− height.defaultNumberOfKids = 0;
3393−
3394− Value.addListener(window, 'resize', function(e) {
3395− var w = document.getElementById('widthChecker').offsetWidth;
3396− var hasListener = Dispatcher.notify(dimensions.id,
3397− Value.Tuple(w, window.innerHeight));
3398− if (!hasListener)
3399− this.removeEventListener('resize',arguments.callee,false);
3400− });
3401− return {dimensions:dimensions,width:width,height:height};
3402−}();
3403−
3404−Elm.Date = function() {
3405−
3406− function dateNow() { return new window.Date; }
3407− function readDate(str) {
3408− var d = new window.Date(Elm.JavaScript.castStringToJSString(str));
3409− if (isNaN(d.getTime())) return ["Nothing"];
3410− return ["Just",d];
3411− }
3412−
3413− var dayTable = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
3414− var monthTable = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
3415− "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
3416−
3417− return {
3418− read : readDate,
3419− year : function(d) { return d.getFullYear(); },
3420− month : function(d) { return [monthTable[d.getMonth()]]; },
3421− day : function(d) { return d.getDate(); },
3422− hour : function(d) { return d.getHours(); },
3423− minute : function(d) { return d.getMinutes(); },
3424− second : function(d) { return d.getSeconds(); },
3425− dayOfWeek : function(d) { return [dayTable[d.getDay()]]; },
3426− toTime : function(d) { return d.getTime(); },
3427− Mon : ["Mon"], Tue : ["Tue"], Wed : ["Wed"],
3428− Thu : ["Thu"], Fri : ["Fri"], Sat : ["Sat"], Sun : ["Sun"],
3429− Jan : ["Jan"], Feb : ["Feb"], Mar : ["Mar"], Apr : ["Apr"],
3430− May : ["May"], Jun : ["Jun"], Jul : ["Jul"], Aug : ["Aug"],
3431− Sep : ["Sep"], Oct : ["Oct"], Nov : ["Nov"], Dec : ["Dec"]
3432− };
3433−
3434−}();
3435−function elmRecordCopy(r) {
3436− var o = {};
3437− for (var i in r) { o[i] = r[i]; }
3438− return o;
3439−}
3440−
3441−function elmRecordRemove(x,r) {
3442− var o = elmRecordCopy(r);
3443− if (x in o._) {
3444− o[x] = o._[x][0];
3445− o._[x] = o._[x].slice(1);
3446− if (o._[x].length === 0) { delete o._[x]; }
3447− } else {
3448− delete o[x];
3449− }
3450− return o;
3451−}
3452−
3453−function elmRecordReplace(kvs,r) {
3454− var o = elmRecordCopy(r);
3455− for (var i = kvs.length; i--; ) {
3456− kvsi = kvs[i];
3457− o[kvsi[0]] = kvsi[1];
3458− }
3459− return o;
3460−}
3461−
3462−function elmRecordInsert(x,v,r) {
3463− var o = elmRecordCopy(r);
3464− if (x in o) o._[x] = [o[x]].concat(x in o._ ? o._[x].slice(0) : []);
3465− o[x] = v;
3466− return o;
3467−}
3468−
3469−Value.addListener(document, 'elm_log', function(e) { console.log(e.value); });
3470−Value.addListener(document, 'elm_title', function(e) {document.title = e.value;});
3471−Value.addListener(document, 'elm_redirect', function(e) {
3472− if (e.value.length > 0) { window.location = e.value; }
3473− });
3474−Value.addListener(document, 'elm_viewport', function(e) {
3475− var node = document.getElementById('elm_viewport');
3476− if (!node) {
3477− node = document.createElement('meta');
3478− node.id = 'elm_viewport';
3479− node.name = 'viewport';
3480− document.head.appendChild(node);
3481− }
3482− node.content = e.value;
3483− Dispatcher.notify(Elm.Window.dimensions.id,
3484− Value.Tuple(window.innerWidth, window.innerHeight));
3485− });
3486−
3487−Elm.Prelude = function() {
3488− var mod = function(x) { return function(y) {
3489− var r = x % y;
3490− var m = x==0 ? 0 : (y>0 ? (x>=0 ? r : r+y) : -mod(-x)(-y));
3491− return m == y ? 0 : m;
3492− }; };
3493−
3494− var min = function(x) { return function(y) { return Math.min(x,y); }; };
3495− var max = function(x) { return function(y) { return Math.max(x,y); }; };
3496−
3497− var flip=function(f){return function(x){return function(y){return f(y)(x);};};};
3498− var clamp = function(lo) { return function(hi) {
3499− return function(x) { return Math.min(hi, Math.max(lo, x)); };
3500− };
3501− };
3502− var curry = function(f) { return function(x) { return function(y) {
3503− return f(["Tuple2",x,y]); }; };
3504− };
3505− var uncurry = function(f) { return function(p) {
3506− if (p[0] !== "Tuple2") {
3507− throw new Error("Function was uncurry'd but was not given a pair.");
3508− }
3509− return f(p[1])(p[2]); };
3510− };
3511−
3512− var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};
3513−
3514− function readInt(str) {
3515− var s = Elm.JavaScript.castStringToJSString(str);
3516− var len = s.length;
3517− if (len === 0) { return ["Nothing"]; }
3518− var start = 0;
3519− if (s[0] == '-') {
3520− if (len === 1) { return ["Nothing"]; }
3521− start = 1;
3522− }
3523− for (var i = start; i < len; ++i) {
3524− if (!Elm.Char.isDigit(s[i])) { return ["Nothing"]; }
3525− }
3526− return ["Just", parseInt(s)];
3527− }
3528−
3529− function readFloat(str) {
3530− var s = Elm.JavaScript.castStringToJSString(str);
3531− var len = s.length;
3532− if (len === 0) { return ["Nothing"]; }
3533− var start = 0;
3534− if (s[0] == '-') {
3535− if (len === 1) { return ["Nothing"]; }
3536− start = 1;
3537− }
3538− var dotCount = 0;
3539− for (var i = start; i < len; ++i) {
3540− if (Elm.Char.isDigit(s[i])) { continue; }
3541− if (s[i] === '.') {
3542− dotCount += 1;
3543− if (dotCount <= 1) { continue; }
3544− }
3545− return ["Nothing"];
3546− }
3547− return ["Just", parseFloat(s)];
3548− }
3549−
3550− function compare(x) { return function (y) {
3551− if (x instanceof Array && y instanceof Array) {
3552− var len = x.length;
3553− if (len == y.length) {
3554− for (var i = 1; i < len; ++i) {
3555− var cmp = compare(x[i])(y[i]);
3556− if (cmp[0] === 'EQ') continue;
3557− return cmp;
3558− }
3559− return ['EQ'];
3560− }
3561− return [ y.length == 1 ? 'GT' : 'LT' ];
3562− }
3563− return [ x === y ? 'EQ' : (x < y ? 'LT' : 'GT') ];
3564− };
3565− }
3566− return {eq : Value.eq,
3567− id : function(x) { return x; },
3568− not : function(b) { return !b; },
3569− xor : function(x) { return function(y) { return x != y; }; },
3570− fst : function(p) { return p[1]; },
3571− snd : function(p) { return p[2]; },
3572− rem : function(x) { return function(y) { return x % y; }; },
3573− div : function(x) { return function(y) { return ~~(x / y); }; },
3574− otherwise : true,
3575− compare : compare,
3576− toFloat : function(x) { return x; },
3577− round : function(n) { return Math.round(n); },
3578− floor : function(n) { return Math.floor(n); },
3579− ceiling : function(n) { return Math.ceil(n); },
3580− truncate : function(n) { return ~~n; },
3581− readInt : readInt,
3582− readFloat : readFloat,
3583− sqrt : Math.sqrt,
3584− abs : Math.abs,
3585− pi : Math.PI,
3586− e : Math.E,
3587− sin : Math.sin,
3588− cos : Math.cos,
3589− tan : Math.tan,
3590− asin : Math.asin,
3591− acos : Math.acos,
3592− atan : Math.atan,
3593− atan2 : function(y) { return function(x) { return Math.atan2(y,x); }; },
3594− mod : mod,
3595− min : min,
3596− max : max,
3597− flip : flip,
3598− clamp : clamp,
3599− curry : curry,
3600− uncurry : uncurry,
3601− logBase : logBase,
3602− Just : Elm.Maybe.Just,
3603− Nothing : Elm.Maybe.Nothing,
3604− maybe : Elm.Maybe.maybe,
3605− map : Elm.List.map,
3606− zip : Elm.List.zip,
3607− zipWith : Elm.List.zipWith,
3608− filter : Elm.List.filter,
3609− head : Elm.List.head,
3610− tail : Elm.List.tail,
3611− last : Elm.List.last,
3612− length : Elm.List.length,
3613− reverse : Elm.List.reverse,
3614− foldr : Elm.List.foldr,
3615− foldr1 : Elm.List.foldr1,
3616− foldl : Elm.List.foldl,
3617− foldl1 : Elm.List.foldl1,
3618− and : Elm.List.and,
3619− or : Elm.List.or,
3620− all : Elm.List.all,
3621− any : Elm.List.any,
3622− sum : Elm.List.sum,
3623− product : Elm.List.product,
3624− concat : Elm.List.concat,
3625− concatMap : Elm.List.concatMap,
3626− maximum : Elm.List.maximum,
3627− minimum : Elm.List.minimum,
3628− scanl : Elm.List.scanl,
3629− scanl1 : Elm.List.scanl1,
3630− take : Elm.List.take,
3631− drop : Elm.List.drop,
3632− zip : Elm.List.zip,
3633− unzip : Elm.List.unzip,
3634− lift : Elm.Signal.lift,
3635− lift2 : Elm.Signal.lift2,
3636− lift3 : Elm.Signal.lift3,
3637− lift4 : Elm.Signal.lift4,
3638− lift5 : Elm.Signal.lift5,
3639− lift6 : Elm.Signal.lift6,
3640− lift7 : Elm.Signal.lift7,
3641− lift8 : Elm.Signal.lift8,
3642− foldp : Elm.Signal.foldp,
3643− foldp1 : Elm.Signal.foldp1,
3644− foldp$ : Elm.Signal.foldp$,
3645− constant : Elm.Signal.constant,
3646− merge : Elm.Signal.merge,
3647− merges : Elm.Signal.merges,
3648− mergeEither : Elm.Signal.mergeEither,
3649− count : Elm.Signal.count,
3650− countIf : Elm.Signal.countIf,
3651− average : Elm.Signal.average,
3652− keepIf : Elm.Signal.keepIf,
3653− dropIf : Elm.Signal.dropIf,
3654− keepWhen : Elm.Signal.keepWhen,
3655− dropWhen : Elm.Signal.dropWhen,
3656− dropRepeats : Elm.Signal.dropRepeats,
3657− sampleOn : Elm.Signal.sampleOn,
3658− timestamp : Elm.Signal.timestamp,
3659− timeOf : Elm.Signal.timeOf
3660− };
3661−
3662−}();
3663−
3664−(function() {
3665− var include = function(library) {
3666− for (var i in library) {
3667− Elm.Prelude[i] = library[i];
3668− }
3669− };
3670− include (Elm.Color);
3671− include (Elm.Text);
3672− include (Elm.Graphics);
3673− include (Elm.Time);
3674−
3675− show = Value.show;
3676−
3677−}());
3678−/*! Touch
3679−This is an early version of the touch library. It will likely grow to
3680−include gestures that would be useful for both games and web-pages.
3681−!*/
3682−
3683−Elm.Touch = function() {
3684−
3685− function Dict() {
3686− this.keys = [];
3687− this.values = [];
3688−
3689− this.insert = function(key,value) {
3690− this.keys.push(key);
3691− this.values.push(value);
3692− };
3693− this.lookup = function(key) {
3694− var i = this.keys.indexOf(key)
3695− return i >= 0 ? this.values[i] : {x:0,y:0,t:0};
3696− };
3697− this.remove = function(key) {
3698− var i = this.keys.indexOf(key);
3699− if (i < 0) return;
3700− var t = this.values[i];
3701− this.keys.splice(i,1);
3702− this.values.splice(i,1);
3703− return t;
3704− };
3705− }
3706−
3707− var root = Elm.Signal.constant([]),
3708− tapTime = 500,
3709− hasTap = false,
3710− tap = {_:[true],x:[0],y:[0]},
3711− dict = new Dict();
3712−
3713− function touch(t) {
3714− var r = dict.lookup(t.identifier);
3715− return {_ : [true], id: [t.identifier],
3716− x: [t.pageX], y: [t.pageY],
3717− x0: [r.x], y0: [r.y],
3718− t0: [r.t] };
3719− }
3720−
3721− function start(e) {
3722− dict.insert(e.identifier,{x:e.pageX,y:e.pageY,t:Date.now()});
3723− }
3724− function end(e) {
3725− var t = dict.remove(e.identifier);
3726− if (Date.now() - t.t < tapTime) {
3727− hasTap = true;
3728− tap = {_:[true], x:[t.x], y:[t.y]};
3729− }
3730− }
3731−
3732− function listen(name, f) {
3733− function update(e) {
3734− for (var i = e.changedTouches.length; i--; ) { f(e.changedTouches[i]); }
3735− var ts = new Array(e.touches.length);
3736− for (var i = e.touches.length; i--; ) { ts[i] = touch(e.touches[i]); }
3737− var hasListener = Dispatcher.notify(root.id, ts);
3738− if (!hasListener) return document.removeEventListener(name, update);
3739− e.preventDefault();
3740− }
3741− Value.addListener(document, name, update);
3742− }
3743−
3744− listen("touchstart", start);
3745− listen("touchmove", function(_){});
3746− listen("touchend", end);
3747− listen("touchcancel", end);
3748− listen("touchleave", end);
3749−
3750− function dependency(f) {
3751− var sig = Elm.Signal.lift(f)(root);
3752− root.defaultNumberOfKids += 1;
3753− sig.defaultNumberOfKids = 0;
3754− return sig;
3755− }
3756−
3757− /*[Touches]*/
3758−
3759− /** touches : Signal [{ x:Int, y:Int, id:Int, x0:Int, y0:Int, t0:Time }]
3760− A list of touches. Each ongoing touch is represented by a set of
3761− coordinates and an identifier id that allows you to distinguish
3762− between different touches. Each touch also contains the coordinates and
3763− time of the initial contact (x0, y0, and t0) which helps compute more
3764− complicated gestures.
3765− **/
3766− var touches = dependency(function(ts) {
3767− return Elm.JavaScript.castJSArrayToList(ts);
3768− });
3769−
3770− /*[Gestures]*/
3771−
3772− /** taps : Signal { x:Int, y:Int }
3773− The last position that was tapped. Default value is `{x=0,y=0}`.
3774− Updates whenever the user taps the screen.
3775− **/
3776− var taps = function() {
3777− var sig = dependency(function(_) { return tap; });
3778− sig.defaultNumberOfKids = 1;
3779− function pred(_) { var b = hasTap; hasTap = false; return b; }
3780− var sig2 = Elm.Signal.keepIf(pred)({_:[true],x:[0],y:[0]})(sig);
3781− sig2.defaultNumberOfKids = 0;
3782− return sig2;
3783− }();
3784−
3785− return { touches: touches, taps: taps };
3786−}();
3787−Elm.Dict=function(){
3788− var compare = Elm.Prelude.compare;
3789− var uncurry = Elm.Prelude.uncurry;
3790− var Nothing = Elm.Prelude.Nothing;
3791− var Just = Elm.Prelude.Just;
3792− var not = Elm.Prelude.not;
3793− var eq = Elm.Prelude.eq;
3794− var isJust=Elm.Maybe.isJust;
3795− var Red_0=['Red'];
3796− var Black_1=['Black'];
3797− function RBNode_2(a1){
3798− return function(a2){
3799− return function(a3){
3800− return function(a4){
3801− return function(a5){
3802− return ['RBNode',a1,a2,a3,a4,a5];};};};};}
3803− var RBEmpty_3=['RBEmpty'];
3804− function min_6(t_42){
3805− return function(){
3806− switch(t_42[0]){
3807− case 'RBEmpty':
3808− throw '(min RBEmpty) is not defined';
3809− case 'RBNode':
3810− switch(t_42[4][0]){
3811− case 'RBEmpty':
3812− return ['Tuple2',t_42[2],t_42[3]];
3813− }
3814− return min_6(t_42[4]);
3815− }
3816− throw new Error("Non-exhaustive pattern match in case");}();}
3817− function lookup_7(k_46){
3818− return function(t_47){
3819− return function(){
3820− switch(t_47[0]){
3821− case 'RBEmpty':
3822− return Nothing;
3823− case 'RBNode':
3824− return function(){
3825− var case12=compare(k_46)(t_47[2]);
3826− switch(case12[0]){
3827− case 'EQ':
3828− return Just(t_47[3]);
3829− case 'GT':
3830− return lookup_7(k_46)(t_47[5]);
3831− case 'LT':
3832− return lookup_7(k_46)(t_47[4]);
3833− }
3834− throw new Error("Non-exhaustive pattern match in case");}();
3835− }
3836− throw new Error("Non-exhaustive pattern match in case");}();};}
3837− function findWithDefault_8(base_52){
3838− return function(k_53){
3839− return function(t_54){
3840− return function(){
3841− switch(t_54[0]){
3842− case 'RBEmpty':
3843− return base_52;
3844− case 'RBNode':
3845− return function(){
3846− var case19=compare(k_53)(t_54[2]);
3847− switch(case19[0]){
3848− case 'EQ':
3849− return t_54[3];
3850− case 'GT':
3851− return findWithDefault_8(base_52)(k_53)(t_54[5]);
3852− case 'LT':
3853− return findWithDefault_8(base_52)(k_53)(t_54[4]);
3854− }
3855− throw new Error("Non-exhaustive pattern match in case");}();
3856− }
3857− throw new Error("Non-exhaustive pattern match in case");}();};};}
3858− function member_9(k_59){
3859− return function(t_60){
3860− return isJust(lookup_7(k_59)(t_60));};}
3861− function rotateLeft_10(t_61){
3862− return function(){
3863− switch(t_61[0]){
3864− case 'RBNode':
3865− switch(t_61[5][0]){
3866− case 'RBNode':
3867− return RBNode_2(t_61[1])(t_61[5][2])(t_61[5][3])(RBNode_2(Red_0)(t_61[2])(t_61[3])(t_61[4])(t_61[5][4]))(t_61[5][5]);
3868− }break;
3869− }
3870− throw 'rotateLeft of a node without enough children';}();}
3871− function rotateRight_11(t_71){
3872− return function(){
3873− switch(t_71[0]){
3874− case 'RBNode':
3875− switch(t_71[4][0]){
3876− case 'RBNode':
3877− return RBNode_2(t_71[1])(t_71[4][2])(t_71[4][3])(t_71[4][4])(RBNode_2(Red_0)(t_71[2])(t_71[3])(t_71[4][5])(t_71[5]));
3878− }break;
3879− }
3880− throw 'rotateRight of a node without enough children';}();}
3881− function rotateLeftIfNeeded_12(t_81){
3882− return function(){
3883− switch(t_81[0]){
3884− case 'RBNode':
3885− switch(t_81[5][0]){
3886− case 'RBNode':
3887− switch(t_81[5][1][0]){
3888− case 'Red':
3889− return rotateLeft_10(t_81);
3890− }break;
3891− }break;
3892− }
3893− return t_81;}();}
3894− function rotateRightIfNeeded_13(t_82){
3895− return function(){
3896− switch(t_82[0]){
3897− case 'RBNode':
3898− switch(t_82[4][0]){
3899− case 'RBNode':
3900− switch(t_82[4][1][0]){
3901− case 'Red':
3902− switch(t_82[4][4][0]){
3903− case 'RBNode':
3904− switch(t_82[4][4][1][0]){
3905− case 'Red':
3906− return rotateRight_11(t_82);
3907− }break;
3908− }break;
3909− }break;
3910− }break;
3911− }
3912− return t_82;}();}
3913− function otherColor_14(c_83){
3914− return function(){
3915− switch(c_83[0]){
3916− case 'Black':
3917− return Red_0;
3918− case 'Red':
3919− return Black_1;
3920− }
3921− throw new Error("Non-exhaustive pattern match in case");}();}
3922− function color_flip_15(t_84){
3923− return function(){
3924− switch(t_84[0]){
3925− case 'RBNode':
3926− switch(t_84[4][0]){
3927− case 'RBNode':
3928− switch(t_84[5][0]){
3929− case 'RBNode':
3930− return RBNode_2(otherColor_14(t_84[1]))(t_84[2])(t_84[3])(RBNode_2(otherColor_14(t_84[4][1]))(t_84[4][2])(t_84[4][3])(t_84[4][4])(t_84[4][5]))(RBNode_2(otherColor_14(t_84[5][1]))(t_84[5][2])(t_84[5][3])(t_84[5][4])(t_84[5][5]));
3931− }break;
3932− }break;
3933− }
3934− throw 'color_flip called on a RBEmpty or RBNode with a RBEmpty child';}();}
3935− function color_flipIfNeeded_16(t_98){
3936− return function(){
3937− switch(t_98[0]){
3938− case 'RBNode':
3939− switch(t_98[4][0]){
3940− case 'RBNode':
3941− switch(t_98[4][1][0]){
3942− case 'Red':
3943− switch(t_98[5][0]){
3944− case 'RBNode':
3945− switch(t_98[5][1][0]){
3946− case 'Red':
3947− return color_flip_15(t_98);
3948− }break;
3949− }break;
3950− }break;
3951− }break;
3952− }
3953− return t_98;}();}
3954− function fixUp_17(t_99){
3955− return color_flipIfNeeded_16(rotateRightIfNeeded_13(rotateLeftIfNeeded_12(t_99)));}
3956− function ensureBlackRoot_18(t_100){
3957− return function(){
3958− switch(t_100[0]){
3959− case 'RBNode':
3960− switch(t_100[1][0]){
3961− case 'Red':
3962− return RBNode_2(Black_1)(t_100[2])(t_100[3])(t_100[4])(t_100[5]);
3963− }break;
3964− }
3965− return t_100;}();}
3966− function insert_19(k_105){
3967− return function(v_106){
3968− return function(t_107){
3969− return function(){
3970− function ins_108(t_109){
3971− return function(){
3972− switch(t_109[0]){
3973− case 'RBEmpty':
3974− return RBNode_2(Red_0)(k_105)(v_106)(RBEmpty_3)(RBEmpty_3);
3975− case 'RBNode':
3976− return function(){
3977− var h_115=function(){
3978− var case114=compare(k_105)(t_109[2]);
3979− switch(case114[0]){
3980− case 'EQ':
3981− return RBNode_2(t_109[1])(t_109[2])(v_106)(t_109[4])(t_109[5]);
3982− case 'GT':
3983− return RBNode_2(t_109[1])(t_109[2])(t_109[3])(t_109[4])(ins_108(t_109[5]));
3984− case 'LT':
3985− return RBNode_2(t_109[1])(t_109[2])(t_109[3])(ins_108(t_109[4]))(t_109[5]);
3986− }
3987− throw new Error("Non-exhaustive pattern match in case");}();
3988− return fixUp_17(h_115);}();
3989− }
3990− throw new Error("Non-exhaustive pattern match in case");}();}
3991− return ensureBlackRoot_18(ins_108(t_107));}();};};}
3992− function singleton_20(k_116){
3993− return function(v_117){
3994− return insert_19(k_116)(v_117)(RBEmpty_3);};}
3995− function isRed_21(t_118){
3996− return function(){
3997− switch(t_118[0]){
3998− case 'RBNode':
3999− switch(t_118[1][0]){
4000− case 'Red':
4001− return true;
4002− }break;
4003− }
4004− return false;}();}
4005− function isRedLeft_22(t_119){
4006− return function(){
4007− switch(t_119[0]){
4008− case 'RBNode':
4009− switch(t_119[4][0]){
4010− case 'RBNode':
4011− switch(t_119[4][1][0]){
4012− case 'Red':
4013− return true;
4014− }break;
4015− }break;
4016− }
4017− return false;}();}
4018− function isRedLeftLeft_23(t_120){
4019− return function(){
4020− switch(t_120[0]){
4021− case 'RBNode':
4022− switch(t_120[4][0]){
4023− case 'RBNode':
4024− switch(t_120[4][4][0]){
4025− case 'RBNode':
4026− switch(t_120[4][4][1][0]){
4027− case 'Red':
4028− return true;
4029− }break;
4030− }break;
4031− }break;
4032− }
4033− return false;}();}
4034− function isRedRight_24(t_121){
4035− return function(){
4036− switch(t_121[0]){
4037− case 'RBNode':
4038− switch(t_121[5][0]){
4039− case 'RBNode':
4040− switch(t_121[5][1][0]){
4041− case 'Red':
4042− return true;
4043− }break;
4044− }break;
4045− }
4046− return false;}();}
4047− function isRedRightLeft_25(t_122){
4048− return function(){
4049− switch(t_122[0]){
4050− case 'RBNode':
4051− switch(t_122[5][0]){
4052− case 'RBNode':
4053− switch(t_122[5][4][0]){
4054− case 'RBNode':
4055− switch(t_122[5][4][1][0]){
4056− case 'Red':
4057− return true;
4058− }break;
4059− }break;
4060− }break;
4061− }
4062− return false;}();}
4063− function moveRedLeft_26(t_123){
4064− return function(){
4065− var t__124=color_flip_15(t_123);
4066− return function(){
4067− switch(t__124[0]){
4068− case 'RBNode':
4069− return function(){
4070− switch(t__124[5][0]){
4071− case 'RBNode':
4072− switch(t__124[5][4][0]){
4073− case 'RBNode':
4074− switch(t__124[5][4][1][0]){
4075− case 'Red':
4076− return color_flip_15(rotateLeft_10(RBNode_2(t__124[1])(t__124[2])(t__124[3])(t__124[4])(rotateRight_11(t__124[5]))));
4077− }break;
4078− }break;
4079− }
4080− return t__124;}();
4081− }
4082− return t__124;}();}();}
4083− function moveRedRight_27(t_130){
4084− return function(){
4085− var t__131=color_flip_15(t_130);
4086− return (isRedLeftLeft_23(t__131)?color_flip_15(rotateRight_11(t__131)):t__131);}();}
4087− function moveRedLeftIfNeeded_28(t_132){
4088− return ((not(isRedLeft_22(t_132))&&not(isRedLeftLeft_23(t_132)))?moveRedLeft_26(t_132):t_132);}
4089− function moveRedRightIfNeeded_29(t_133){
4090− return ((not(isRedRight_24(t_133))&&not(isRedRightLeft_25(t_133)))?moveRedRight_27(t_133):t_133);}
4091− function deleteMin_30(t_134){
4092− return function(){
4093− function del_135(t_136){
4094− return function(){
4095− switch(t_136[0]){
4096− case 'RBNode':
4097− switch(t_136[4][0]){
4098− case 'RBEmpty':
4099− return RBEmpty_3;
4100− }break;
4101− }
4102− return function(){
4103− var case198=moveRedLeftIfNeeded_28(t_136);
4104− switch(case198[0]){
4105− case 'RBEmpty':
4106− return RBEmpty_3;
4107− case 'RBNode':
4108− return fixUp_17(RBNode_2(case198[1])(case198[2])(case198[3])(del_135(case198[4]))(case198[5]));
4109− }
4110− throw new Error("Non-exhaustive pattern match in case");}();}();}
4111− return ensureBlackRoot_18(del_135(t_134));}();}
4112− function remove_31(k_142){
4113− return function(t_143){
4114− return function(){
4115− function eq_and_noRightNode_144(t_150){
4116− return function(){
4117− switch(t_150[0]){
4118− case 'RBNode':
4119− switch(t_150[5][0]){
4120− case 'RBEmpty':
4121− return eq(k_142,t_150[2]);
4122− }break;
4123− }
4124− return false;}();}
4125− function eq_145(t_152){
4126− return function(){
4127− switch(t_152[0]){
4128− case 'RBNode':
4129− return eq(k_142,t_152[2]);
4130− }
4131− return false;}();}
4132− function delLT_146(t_154){
4133− return function(){
4134− var case216=moveRedLeftIfNeeded_28(t_154);
4135− switch(case216[0]){
4136− case 'RBEmpty':
4137− throw 'delLT on RBEmpty';
4138− case 'RBNode':
4139− return fixUp_17(RBNode_2(case216[1])(case216[2])(case216[3])(del_149(case216[4]))(case216[5]));
4140− }
4141− throw new Error("Non-exhaustive pattern match in case");}();}
4142− function delEQ_147(t_160){
4143− return function(){
4144− switch(t_160[0]){
4145− case 'RBEmpty':
4146− throw 'delEQ called on a RBEmpty';
4147− case 'RBNode':
4148− return function(){
4149− var Tuple2$k_v__164=min_6(t_160[5]);
4150− var k__165=function(){
4151− switch(Tuple2$k_v__164[0]){
4152− case 'Tuple2':
4153− return Tuple2$k_v__164[1];
4154− }
4155− throw new Error("Non-exhaustive pattern match in case");}();
4156− var v__166=function(){
4157− switch(Tuple2$k_v__164[0]){
4158− case 'Tuple2':
4159− return Tuple2$k_v__164[2];
4160− }
4161− throw new Error("Non-exhaustive pattern match in case");}();
4162− return fixUp_17(RBNode_2(t_160[1])(k__165)(v__166)(t_160[4])(deleteMin_30(t_160[5])));}();
4163− }
4164− throw new Error("Non-exhaustive pattern match in case");}();}
4165− function delGT_148(t_171){
4166− return function(){
4167− switch(t_171[0]){
4168− case 'RBEmpty':
4169− throw 'delGT called on a RBEmpty';
4170− case 'RBNode':
4171− return fixUp_17(RBNode_2(t_171[1])(t_171[2])(t_171[3])(t_171[4])(del_149(t_171[5])));
4172− }
4173− throw new Error("Non-exhaustive pattern match in case");}();}
4174− function del_149(t_177){
4175− return function(){
4176− switch(t_177[0]){
4177− case 'RBEmpty':
4178− return RBEmpty_3;
4179− case 'RBNode':
4180− return ((compare(k_142)(t_177[2])[0] === 'LT')?delLT_146(t_177):function(){
4181− var u_179=(isRedLeft_22(t_177)?rotateRight_11(t_177):t_177);
4182− return (eq_and_noRightNode_144(u_179)?u_179[4]:function(){
4183− var t__180=moveRedRightIfNeeded_29(t_177);
4184− return (eq_145(t__180)?delEQ_147(t__180):delGT_148(t__180));}());}());
4185− }
4186− throw new Error("Non-exhaustive pattern match in case");}();}
4187− return (member_9(k_142)(t_143)?ensureBlackRoot_18(del_149(t_143)):t_143);}();};}
4188− function map_32(f_181){
4189− return function(t_182){
4190− return function(){
4191− switch(t_182[0]){
4192− case 'RBEmpty':
4193− return RBEmpty_3;
4194− case 'RBNode':
4195− return RBNode_2(t_182[1])(t_182[2])(f_181(t_182[3]))(map_32(f_181)(t_182[4]))(map_32(f_181)(t_182[5]));
4196− }
4197− throw new Error("Non-exhaustive pattern match in case");}();};}
4198− function foldl_33(f_188){
4199− return function(acc_189){
4200− return function(t_190){
4201− return function(){
4202− switch(t_190[0]){
4203− case 'RBEmpty':
4204− return acc_189;
4205− case 'RBNode':
4206− return foldl_33(f_188)(f_188(t_190[2])(t_190[3])(foldl_33(f_188)(acc_189)(t_190[4])))(t_190[5]);
4207− }
4208− throw new Error("Non-exhaustive pattern match in case");}();};};}
4209− function foldr_34(f_195){
4210− return function(acc_196){
4211− return function(t_197){
4212− return function(){
4213− switch(t_197[0]){
4214− case 'RBEmpty':
4215− return acc_196;
4216− case 'RBNode':
4217− return foldr_34(f_195)(f_195(t_197[2])(t_197[3])(foldr_34(f_195)(acc_196)(t_197[5])))(t_197[4]);
4218− }
4219− throw new Error("Non-exhaustive pattern match in case");}();};};}
4220− function union_35(t1_202){
4221− return function(t2_203){
4222− return foldl_33(insert_19)(t2_203)(t1_202);};}
4223− function intersect_36(t1_204){
4224− return function(t2_205){
4225− return foldl_33(function(k_206){
4226− return function(v_207){
4227− return function(t_208){
4228− return (member_9(k_206)(t2_205)?insert_19(k_206)(v_207)(t_208):t_208);};};})(empty_4)(t1_204);};}
4229− function diff_37(t1_209){
4230− return function(t2_210){
4231− return foldl_33(function(k_211){
4232− return function(v_212){
4233− return function(t_213){
4234− return remove_31(k_211)(t_213);};};})(t1_209)(t2_210);};}
4235− function keys_38(t_214){
4236− return foldr_34(function(k_215){
4237− return function(v_216){
4238− return function(acc_217){
4239− return ['Cons',k_215,acc_217];};};})(['Nil'])(t_214);}
4240− function values_39(t_218){
4241− return foldr_34(function(k_219){
4242− return function(v_220){
4243− return function(acc_221){
4244− return ['Cons',v_220,acc_221];};};})(['Nil'])(t_218);}
4245− function toList_40(t_222){
4246− return foldr_34(function(k_223){
4247− return function(v_224){
4248− return function(acc_225){
4249− return ['Cons',['Tuple2',k_223,v_224],acc_225];};};})(['Nil'])(t_222);}
4250− function fromList_41(assocs_226){
4251− return Elm.List.foldl(uncurry(insert_19))(empty_4)(assocs_226);}
4252− var empty_4=RBEmpty_3;
4253− return {$op : {},
4254− empty:empty_4,
4255− lookup:lookup_7,
4256− findWithDefault:findWithDefault_8,
4257− member:member_9,
4258− insert:insert_19,
4259− singleton:singleton_20,
4260− remove:remove_31,
4261− map:map_32,
4262− foldl:foldl_33,
4263− foldr:foldr_34,
4264− union:union_35,
4265− intersect:intersect_36,
4266− diff:diff_37,
4267− keys:keys_38,
4268− values:values_39,
4269− toList:toList_40,
4270− fromList:fromList_41};}();
4271−
4272−Elm.Set=function(){
4273− var empty_0=Elm.Dict.empty;
4274− var remove_3=Elm.Dict.remove;
4275− var member_4=Elm.Dict.member;
4276− var union_5=Elm.Dict.union;
4277− var intersect_6=Elm.Dict.intersect;
4278− var diff_7=Elm.Dict.diff;
4279− var toList_8=Elm.Dict.keys;
4280− var fromList_9=Elm.List.foldl(function(k_15){
4281− return function(t_16){
4282− return Elm.Dict.insert(k_15)(["Tuple0"])(t_16);};})(empty_0);
4283− function singleton_1(k_13){
4284− return Elm.Dict.singleton(k_13)(["Tuple0"]);};
4285− function insert_2(k_14){
4286− return Elm.Dict.insert(k_14)(["Tuple0"]);};
4287− function foldl_10(f_17){
4288− return Elm.Dict.foldl(function(k_18){
4289− return function(v_19){
4290− return function(b_20){
4291− return f_17(k_18)(b_20);};};});};
4292− function foldr_11(f_21){
4293− return Elm.Dict.foldr(function(k_22){
4294− return function(v_23){
4295− return function(b_24){
4296− return f_21(k_22)(b_24);};};});};
4297− function map_12(f_25){
4298− return function(t_26){
4299− return function(x){
4300− return fromList_9(Elm.List.map(f_25)(x));}(toList_8(t_26));};};
4301− return {empty:empty_0,singleton:singleton_1,insert:insert_2,remove:remove_3,member:member_4,union:union_5,intersect:intersect_6,diff:diff_7,toList:toList_8,fromList:fromList_9,foldl:foldl_10,foldr:foldr_11,map:map_12};}();
4302−
4303−(function() {
4304−try{
4305−
4306−var $op={};
4307−for(this['i'] in Elm){eval('var '+this['i']+'=Elm[this.i];');}
4308−if (Elm.Automaton) throw new Error("Module name collision, 'Automaton' is already defined.");
4309−Elm.Automaton=function(){
4310− try{
4311− if (!(Elm.Prelude instanceof Object)) throw 'module not found';
4312− } catch(e) {
4313− throw ("Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file.");
4314− }
4315− var hiddenVars={};
4316− for (this['i'] in Elm.Prelude) {
4317− if (hiddenVars[this['i']]) continue;
4318− eval('var ' + this['i'] + ' = Elm.Prelude[this.i];');}
4319− function Automaton_0(a1){
4320− return ["Automaton",a1];}
4321− var Listen_8=["Listen"];
4322− var Ignore_9=["Ignore"];
4323− function DragFrom_10(a1){
4324− return ["DragFrom",a1];}
4325− $op['>>>'] = function(a1_24){
4326− return function(a2_25){
4327− return function(){
4328− var Automaton$m1_26=a1_24;
4329− var m1_27=function(){
4330− switch(Automaton$m1_26[0]){
4331− case "Automaton":
4332− return Automaton$m1_26[1];
4333− }
4334− throw new Error("Non-exhaustive pattern match in case");}();
4335− var Automaton$m2_28=a2_25;
4336− var m2_29=function(){
4337− switch(Automaton$m2_28[0]){
4338− case "Automaton":
4339− return Automaton$m2_28[1];
4340− }
4341− throw new Error("Non-exhaustive pattern match in case");}();
4342− return Automaton_0(function(a_32){
4343− return function(){
4344− var Tuple2$bm1__33=m1_27(a_32);
4345− var b_34=function(){
4346− switch(Tuple2$bm1__33[0]){
4347− case "Tuple2":
4348− return Tuple2$bm1__33[1];
4349− }
4350− throw new Error("Non-exhaustive pattern match in case");}();
4351− var m1__35=function(){
4352− switch(Tuple2$bm1__33[0]){
4353− case "Tuple2":
4354− return Tuple2$bm1__33[2];
4355− }
4356− throw new Error("Non-exhaustive pattern match in case");}();
4357− return function(){
4358− var Tuple2$cm2__40=m2_29(b_34);
4359− var c_41=function(){
4360− switch(Tuple2$cm2__40[0]){
4361− case "Tuple2":
4362− return Tuple2$cm2__40[1];
4363− }
4364− throw new Error("Non-exhaustive pattern match in case");}();
4365− var m2__42=function(){
4366− switch(Tuple2$cm2__40[0]){
4367− case "Tuple2":
4368− return Tuple2$cm2__40[2];
4369− }
4370− throw new Error("Non-exhaustive pattern match in case");}();
4371− return ["Tuple2",c_41,$op['>>>'](m1__35)(m2__42)];}();}();});}();};};
4372− $op['<<<'] = function(a2_47){
4373− return function(a1_48){
4374− return $op['>>>'](a1_48)(a2_47);};};
4375− $op['^>>'] = function(f_49){
4376− return function(a_50){
4377− return $op['>>>'](pure_4(f_49))(a_50);};};
4378− $op['>>^'] = function(a_51){
4379− return function(f_52){
4380− return $op['>>>'](a_51)(pure_4(f_52));};};
4381− $op['^<<'] = function(f_53){
4382− return function(a_54){
4383− return $op['>>>'](a_54)(pure_4(f_53));};};
4384− $op['<<^'] = function(a_55){
4385− return function(f_56){
4386− return $op['>>>'](pure_4(f_56))(a_55);};};
4387− var count_7=init_5(0)(function(__84){
4388− return function(c_85){
4389− return (1+c_85);};});
4390− function run_1(Automaton$m0_14){
4391− return function(input_15){
4392− return function(){
4393− switch(Automaton$m0_14[0]){
4394− case "Automaton":
4395− return lift(fst)(foldp$(function(a_17){
4396− return function(Tuple2$bAutomaton$m_18){
4397− return function(){
4398− switch(Tuple2$bAutomaton$m_18[0]){
4399− case "Tuple2":
4400− switch(Tuple2$bAutomaton$m_18[2][0]){
4401− case "Automaton":
4402− return Tuple2$bAutomaton$m_18[2][1](a_17);
4403− }break;
4404− }
4405− throw new Error("Non-exhaustive pattern match in case");}();};})(Automaton$m0_14[1])(input_15));
4406− }
4407− throw new Error("Non-exhaustive pattern match in case");}();};}
4408− function step_2(Automaton$m_21){
4409− return function(a_22){
4410− return function(){
4411− switch(Automaton$m_21[0]){
4412− case "Automaton":
4413− return Automaton$m_21[1](a_22);
4414− }
4415− throw new Error("Non-exhaustive pattern match in case");}();};}
4416− function combine_3(autos_57){
4417− return Automaton_0(function(a_58){
4418− return function(){
4419− var Tuple2$bsautos__59=unzip(map(function(Automaton$m_62){
4420− return function(){
4421− switch(Automaton$m_62[0]){
4422− case "Automaton":
4423− return Automaton$m_62[1](a_58);
4424− }
4425− throw new Error("Non-exhaustive pattern match in case");}();})(autos_57));
4426− var bs_60=function(){
4427− switch(Tuple2$bsautos__59[0]){
4428− case "Tuple2":
4429− return Tuple2$bsautos__59[1];
4430− }
4431− throw new Error("Non-exhaustive pattern match in case");}();
4432− var autos__61=function(){
4433− switch(Tuple2$bsautos__59[0]){
4434− case "Tuple2":
4435− return Tuple2$bsautos__59[2];
4436− }
4437− throw new Error("Non-exhaustive pattern match in case");}();
4438− return ["Tuple2",bs_60,combine_3(autos__61)];}();});}
4439− function pure_4(f_68){
4440− return Automaton_0(function(x_69){
4441− return ["Tuple2",f_68(x_69),pure_4(f_68)];});}
4442− function init_5(s_70){
4443− return function(step_71){
4444− return Automaton_0(function(a_72){
4445− return function(){
4446− var s__73=step_71(a_72)(s_70);
4447− return ["Tuple2",s__73,init_5(s__73)(step_71)];}();});};}
4448− function init__6(s_74){
4449− return function(step_75){
4450− return Automaton_0(function(a_76){
4451− return function(){
4452− var Tuple2$bs__77=step_75(a_76)(s_74);
4453− var b_78=function(){
4454− switch(Tuple2$bs__77[0]){
4455− case "Tuple2":
4456− return Tuple2$bs__77[1];
4457− }
4458− throw new Error("Non-exhaustive pattern match in case");}();
4459− var s__79=function(){
4460− switch(Tuple2$bs__77[0]){
4461− case "Tuple2":
4462− return Tuple2$bs__77[2];
4463− }
4464− throw new Error("Non-exhaustive pattern match in case");}();
4465− return ["Tuple2",b_78,init__6(s__79)(step_75)];}();});};}
4466− function vecSub_11(Tuple2$x1y1_86){
4467− return function(Tuple2$x2y2_87){
4468− return function(){
4469− switch(Tuple2$x1y1_86[0]){
4470− case "Tuple2":
4471− return function(){
4472− switch(Tuple2$x2y2_87[0]){
4473− case "Tuple2":
4474− return ["Tuple2",(Tuple2$x1y1_86[1]-Tuple2$x2y2_87[1]),(Tuple2$x1y1_86[2]-Tuple2$x2y2_87[2])];
4475− }
4476− throw new Error("Non-exhaustive pattern match in case");}();
4477− }
4478− throw new Error("Non-exhaustive pattern match in case");}();};}
4479− function stepDrag_12(Tuple2$presspos_92){
4480− return function(Tuple2$dsform_93){
4481− return function(){
4482− switch(Tuple2$presspos_92[0]){
4483− case "Tuple2":
4484− return function(){
4485− switch(Tuple2$dsform_93[0]){
4486− case "Tuple2":
4487− return function(){
4488− function wrap_98(ds__99){
4489− return ["Tuple2",Tuple2$dsform_93[2],["Tuple2",ds__99,Tuple2$dsform_93[2]]];}
4490− return function(){
4491− switch(Tuple2$dsform_93[1][0]){
4492− case "DragFrom":
4493− return (Tuple2$presspos_92[1]?["Tuple2",uncurry(move)(vecSub_11(Tuple2$presspos_92[2])(Tuple2$dsform_93[1][1]))(Tuple2$dsform_93[2]),["Tuple2",DragFrom_10(Tuple2$dsform_93[1][1]),Tuple2$dsform_93[2]]]:function(){
4494− var form__101=uncurry(move)(vecSub_11(Tuple2$presspos_92[2])(Tuple2$dsform_93[1][1]))(Tuple2$dsform_93[2]);
4495− return ["Tuple2",form__101,["Tuple2",Listen_8,form__101]];}());
4496− case "Ignore":
4497− return wrap_98((Tuple2$presspos_92[1]?Ignore_9:Listen_8));
4498− case "Listen":
4499− return wrap_98((not(Tuple2$presspos_92[1])?Listen_8:(isWithin(Tuple2$presspos_92[2])(Tuple2$dsform_93[2])?DragFrom_10(Tuple2$presspos_92[2]):Ignore_9)));
4500− }
4501− throw new Error("Non-exhaustive pattern match in case");}();}();
4502− }
4503− throw new Error("Non-exhaustive pattern match in case");}();
4504− }
4505− throw new Error("Non-exhaustive pattern match in case");}();};}
4506− function draggable_13(form_102){
4507− return init__6(["Tuple2",Listen_8,form_102])(stepDrag_12);}
4508− return {$op : {'>>>' : $op['>>>'], '<<<' : $op['<<<'], '^>>' : $op['^>>'], '>>^' : $op['>>^'], '^<<' : $op['^<<'], '<<^' : $op['<<^']},
4509− run:run_1,
4510− step:step_2,
4511− combine:combine_3,
4512− pure:pure_4,
4513− init:init_5,
4514− init$:init__6,
4515− count:count_7,
4516− draggable:draggable_13};}();
4517−Elm.main=function(){
4518− return Elm.Automaton.main;};
4519−} catch (e) {
4520−Elm.main=function() {
4521−var msg = ('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>' + '<br/><span style="color:grey">Runtime Error in Automaton module:<br/>' + e + '</span>');
4522−document.body.innerHTML = Elm.Text.monospace(msg);throw e;};}}());
compiler/elm-runtime-0.7.jsdeleted−135
@@ -1,135 +0,0 @@
1−Elm={};var Guid=function(){var e=0;return{guid:function(){return e+=1}}}();
2−Elm.JavaScript=function(){function e(b){for(var a=["Nil"],m=b.length;m--;)a=["Cons",b[m],a];return a}function k(b){for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return a}function b(b){return b.slice(1)}function d(b){return["Tuple"+b.length].concat(b)}return{castJSBoolToBool:function(b){return b},castBoolToJSBool:function(b){return b},castJSNumberToFloat:function(b){return b},castFloatToJSNumber:function(b){return b},castJSNumberToInt:function(b){return~~b},castIntToJSNumber:function(b){return b},
3−Experimental:{castJSElementToElement:function(b){return function(a){return function(m){return["Element",Guid.guid(),["EExternalHtml",m],b,a,1,["Nothing"],["Nothing"]]}}},castElementToJSElement:function(b){return Render.render(b)}},castJSArrayToList:e,castListToJSArray:k,castJSStringToString:e,castStringToJSString:function(b){return"string"===typeof b?b:k(b).join("")},castTupleToJSTuple2:b,castTupleToJSTuple3:b,castTupleToJSTuple4:b,castTupleToJSTuple5:b,castJSTupleToTuple2:d,castJSTupleToTuple3:d,
4−castJSTupleToTuple4:d,castJSTupleToTuple5:d}}();var JSjson=window.JSON;
5−Elm.JSON=function(){function e(a,b){return function(g){return function(l){var h=d.castStringToJSString(g);return l[1].hasOwnProperty(h)&&(l=l[1][h],l[0]===a)?l[1]:b}}}function k(a){return function(b){function g(a){switch(a[0]){case "JsonNull":return null;case "JsonString":return d.castStringToJSString(a[1]);case "JsonObject":var h={};a=a[1][1];for(var c in a)h[c]=g(a[c]);return h;case "JsonArray":h=d.castListToJSArray(a[1]);for(c=h.length;c--;)h[c]=g(h[c]);return h;default:return a[1]}}return JSjson.stringify(g(["JsonObject",
6−b]),null,d.castStringToJSString(a))}}function b(a){function b(a){switch(typeof a){case "string":return["JsonString",d.castJSStringToString(a)];case "number":return["JsonNumber",d.castJSNumberToFloat(a)];case "boolean":return["JsonBool",d.castJSBoolToBool(a)];case "object":if(null===a)return["JsonNull"];for(var h in a)a[h]=b(a[h]);return a instanceof Array?["JsonArray",d.castJSArrayToList(a)]:["JsonObject",["JSON",a]]}}a=JSjson.parse(a);for(var g in a)a[g]=b(a[g]);return["JSON",a]}var d=Elm.JavaScript,
7−j=["JSON",{}];return{empty:j,singleton:function(a){return function(b){var g={};g[d.castStringToJSString(a)]=b;return["JSON",g]}},insert:function(a){return function(b){return function(g){g=g[1];var l={},h;for(h in g)l[h]=g[h];l[d.castStringToJSString(a)]=b;return["JSON",l]}}},lookup:function(a){return function(b){var g=d.castStringToJSString(a);return b[1].hasOwnProperty(g)?["Just",b[1][g]]:["Nothing"]}},findString:e("JsonString",["Nil"]),findObject:e("JsonObject",j),findArray:e("JsonArray",["Nil"]),
8−findWithDefault:function(a){return function(b){return function(g){var l=d.castStringToJSString(b);return g[1].hasOwnProperty(l)?g[1][l]:a}}},remove:function(a){return function(b){b=b[1];var g={},l;for(l in b)g[l]=b[l];delete g[d.castStringToJSString(a)];return["JSON",g]}},toPrettyJSString:k,toJSString:k(""),fromJSString:b,toPrettyString:function(a){return function(b){return d.castJSStringToString(k(a)(b))}},toString:function(a){return d.castJSStringToString(k("")(a))},fromString:function(a){return b(d.castStringToJSString(a))},
9−toList:function(a){a=a[1];var b=[],g;for(g in a)b.push(Value.Tuple(d.castJSStringToString(g),a[g]));return d.castJSArrayToList(b)},fromList:function(a){a=d.castListToJSArray(a);for(var b={},g=a.length;g--;)b[d.castStringToJSString(a[g][1])]=a[g][2];return["JSON",b]},JsonString:function(a){return["JsonString",a]},JsonNumber:function(a){return["JsonNumber",a]},JsonBool:function(a){return["JsonBool",a]},JsonNull:["JsonNull"],JsonArray:function(a){return["JsonArray",a]},JsonObject:function(a){return["JsonObject",
10−a]}}}();
11−var Value=function(){function e(a){if(0==a.length)return a;a=a.replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\n/g,"<br/>");a=a.split("<br/>");for(var b=a.length;b--;){var g=a,d=b,h;h=a[b];if(0!=h.length){h=h.split("");" "==h[0]&&(h[0]="&nbsp;");for(var c=h.length;--c;)" "==h[c][0]&&" "==h[c-1]&&(h[c-1]+=h[c],h[c]="");for(c=h.length;c--;)if(1<h[c].length&&" "==h[c][0]){for(var f=h[c].split(""),v=f.length-2;0<=v;v-=2)f[v]="&nbsp;";h[c]=f.join("")}h=h.join("");
12−h=" "===h[h.length-1]?h.slice(0,-1)+"&nbsp;":h}g[d]=h}return a.join("<br/>")}var k=function(a,b){if("object"===typeof a){if(a.hasOwnProperty("_")){for(var g in a)if(a[g]!=b[g])return!1;for(g in b)if(a[g]!=b[g])return!1;return!0}if(a===b)return!0;if(a.length!==b.length)return!1;for(g=a.length;g--;)if(!k(a[g],b[g]))return!1;return!0}return a===b},b=function(a){if("function"===typeof a)return"<function>";if("boolean"===typeof a)return a?"True":"False";if("number"!==typeof a){if("string"===typeof a&&
13−2>a.length)return"'"+a+"'";if("object"===typeof a&&a.hasOwnProperty("_")){var d=[],g;for(g in a)if("_"!=g)for(var l=a[g].length;l--;)d.push(g+" = "+b(a[g][l]));return 0===d.length?"{}":"{ "+d.join(", ")+" }"}if(a[0]){if("Tuple"===a[0].substring(0,5)){d=Array(a.length-1);for(l=a.length;--l;)d[l-1]=b(a[l]);return"("+d.join(",")+")"}if("Cons"===a[0]){g="string"===typeof a[1]?'"':"]";var l="string"===typeof a[1]?"":",",h="string"===typeof a[1]?function(a){return a}:b,d=("string"===typeof a[1]?'"':"[")+
14−h(a[1]);for(a=a[2];;)if("Cons"===a[0])d+=l+h(a[1]),a=a[2];else return d+g}else{if("Nil"===a[0])return"[]";if("JSON"===a[0])return"(JSON.fromList "+b(Elm.JSON.toList(a))+")";if("RBNode"===a[0]||"RBEmpty"===a[0])return a=Elm.Dict.foldr(function(a){return function(b){return function(h){return["Cons",["Tuple2",a,b],h]}}})(["Nil"])(a),d="Dict","Cons"===a[0]&&"Tuple0"===a[1][2][0]&&(d="Set",a=Elm.List.map(function(a){return a[1]})(a)),"("+d+".fromList "+b(a)+")";d=[];for(l=a.length;--l;)d.push(b(a[l]));
15−d=a[0]+" "+d.join(" ");return 1<a.length?"("+d+")":d}}}return a+""},d=function(a){for(var b=["Nil"],d=a.length;d--;)b=["Cons",a[d],b];return b},j;j=document.addEventListener?function(a,b,d){a.addEventListener(b,d,!1)}:function(a,b,d){a.attachEvent("on"+b,d)};return{eq:k,str:d,show:function(a){return d(b(a))},Tuple:function(){var a=arguments.length,b=Array(a+1);for(b[0]="Tuple"+arguments.length;a--;)b[a+1]=arguments[a];return b},append:function(a,b){if("string"===typeof a&&"string"===typeof b)return a.concat(b);
16−if("Nil"===a[0])return b;var d=["Cons",a[1],["Nil"]],l=d;for(a=a[2];"Cons"===a[0];)l[2]=["Cons",a[1],["Nil"]],a=a[2],l=l[2];l[2]=b;return d},listToArray:function(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b},toText:function(a){if("string"===typeof a)return e(a);for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return e(b.join(""))},properEscape:e,getTextSize:function(a,b,d){var l=document.createElement("div");l.innerHTML=d;l.style.textAlign="left";0<a&&(l.style.width=a+"px");l.style.visibility=
17−"hidden";l.style.styleFloat="left";l.style.cssFloat="left";document.body.appendChild(l);d=window.getComputedStyle(l,null);a=d.getPropertyValue("width").slice(0,-2)-0;d=d.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(l);return[Math.ceil(a),Math.ceil(Math.max(b,d))]},getSize:function(a){a=a.cloneNode(!0);a.style.visibility="hidden";a.style.styleFloat="left";a.style.cssFloat="left";document.body.appendChild(a);var b=a.offsetWidth,d=a.offsetHeight;document.body.removeChild(a);return[b,
18−d]},getExcess:function(b){b=b.cloneNode(!0);b.style.visibility="hidden";b.style.styleFloat="left";b.style.cssFloat="left";document.body.appendChild(b);var d=b.offsetWidth,g=b.offsetHeight,l=window.getComputedStyle(b,null),h=l.getPropertyValue("width").slice(0,-2)-0,l=l.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(b);return[d-h,g-l]},groupForms:function(b){b=Elm.JavaScript.castListToJSArray(b);for(var d=[],g=[],l=b.length;l--;){var h=b[l];switch(h[4][0]){case "FElement":0<g.length&&
19−(d.push(g),g=[]);d.push(h);break;default:g.push(h)}}0<g.length&&d.push(g);return d},wrap:function(b){var d=Value.getSize(b);return["Element",Guid.guid(),["EHtml",b],d[0],d[1],1,["Nothing"],["Nothing"]]},addListener:j}}();
20−Elm.List=function(){function e(b){return function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&h("map");var c=["Cons",b(a[1]),["Nil"]],f=c;for(a=a[2];"Cons"===a[0];)f[2]=["Cons",b(a[1]),["Nil"]],a=a[2],f=f[2];return c}}function k(b){return function(a){return function(c){var f=a;if("Nil"===c[0])return f;for("Cons"!==c[0]&&h("foldl");"Cons"===c[0];)f=b(c[1])(f),c=c[2];return f}}}function b(b){return function(a){return function(c){var f=a;if("Nil"===c[0])return f;"Cons"!==c[0]&&h("foldr");for(var d=[];"Cons"===
21−c[0];)d.push(c[1]),c=c[2];for(c=d.length;c--;)f=b(d[c])(f);return f}}}function d(b){return function(a){var h;"Cons"!==a[0]?h=void 0:(h=a[1],a=a[2],h=k(b)(h)(a));return h}}function j(b){return function(a){return function(c){if("Nil"===c[0])return["Cons",a,["Nil"]];"Cons"!==c[0]&&h("scanl");for(var f=[a];"Cons"===c[0];)a=b(c[1])(a),f.push(a),c=c[2];c=["Nil"];for(var d=f.length;d--;)c=["Cons",f[d],c];return c}}}function a(b){return function(h){a:{for(var c=[function(b){return"Nil"!==b[0]?void 0:["Tuple2",
22−["Nil"],["Nil"]]},function(h){if("Cons"===h[0]){var c=h[1];h=h[2];var f=a(b)(h);"Tuple2"!==f[0]?c=void 0:(h=f[1],f=f[2],c=b(c)?["Tuple2",["Cons",c,h],f]:["Tuple2",h,["Cons",c,f]]);return c}}],f=c.length;f--;){var d=c[f](h);if(void 0!==d){h=d;break a}}h=void 0}return h}}function m(b){a:{for(var a=[function(b){return"Nil"!==b[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(b){if("Cons"!==b[0])b=void 0;else if(b=["Tuple2",b[1],m(b[2])],"Tuple2"!==b[0]||"Tuple2"!==b[1][0])b=void 0;else{var a=b[1][1],h=
23−b[1][2];b="Tuple2"!==b[2][0]?void 0:["Tuple2",["Cons",a,b[2][1]],["Cons",h,b[2][2]]]}return b}],h=a.length;h--;){var c=a[h](b);if(void 0!==c){b=c;break a}}b=void 0}return b}function g(b){return function(a){a:{for(var h=[function(b){return"Nil"!==b[0]?void 0:["Nil"]},function(b){if("Cons"===b[0]){var a=b[1];return"Nil"!==b[2][0]?void 0:["Cons",a,["Nil"]]}},function(a){if("Cons"===a[0]){var h=a[1];if("Cons"===a[2][0]){var c=a[2][1];a=a[2][2];return["Cons",h,["Cons",b,g(b)(["Cons",c,a])]]}}}],c=h.length;c--;){var f=
24−h[c](a);if(void 0!==f){a=f;break a}}a=void 0}return a}}function l(b){return function(a){a:{for(var h=[function(b){return"Nil"!==b[0]?void 0:["Nil"]},function(b){if("Cons"===b[0]){var a=b[1];return"Nil"!==b[2][0]?void 0:a}},function(a){if("Cons"===a[0]){var h=a[1];if("Cons"===a[2][0]){var c=a[2][1];a=a[2][2];return Value.append(h,Value.append(b,l(b)(["Cons",c,a])))}}}],c=h.length;c--;){var f=h[c](a);if(void 0!==f){a=f;break a}}a=void 0}return a}}var h=function(b){throw"Function '"+b+"' expecting a list!";
25−},c=k(function(b){return function(a){return["Cons",b,a]}})(["Nil"]),f=b(function(b){return function(a){return Value.append(b,a)}})(["Nil"]),v=k(function(b){return function(a){return b&&a}})(!0),n=k(function(b){return function(a){return b||a}})(!1),p=k(function(b){return function(a){return b+a}})(0),r=k(function(b){return function(a){return b*a}})(1),y=d(function(b){return function(a){return Math.max(b,a)}}),s=d(function(b){return function(a){return Math.min(b,a)}});return{head:function(b){if("Cons"!==
26−b[0])throw"Error: 'head' only accepts lists of length greater than one.";return b[1]},tail:function(b){if("Cons"!==b[0])throw"Error: 'tail' only accepts lists of length greater than one.";return b[2]},last:function(b){if("Cons"!==b[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var a=b[1];"Cons"===b[0];)a=b[1],b=b[2];return a},map:e,foldl:k,foldr:b,foldl1:d,foldr1:function(b){return function(a){if("Nil"===a[0])throw"'foldr1' requires an non-empty list.";"Cons"!==a[0]&&
27−h("foldr1");for(var c=[];"Cons"===a[0];)c.push(a[1]),a=a[2];a=c.pop();for(var f=c.length;f--;)a=b(c[f])(a);return a}},scanl:j,scanl1:function(b){return function(a){if("Cons"!==a[0])throw"Error: 'scanl1' requires a list of at least length 1.";return j(b)(a[1])(a[2])}},filter:function(b){return function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&h("filter");for(var c=[];"Cons"===a[0];)b(a[1])&&c.push(a[1]),a=a[2];a=["Nil"];for(var f=c.length;f--;)a=["Cons",c[f],a];return a}},length:function(b){for(var a=
28−0;"Cons"===b[0];)a+=1,b=b[2];return a},reverse:c,concat:f,concatMap:function(b){return function(a){return f(e(b)(a))}},and:v,or:n,all:function(b){return k(function(a){return function(h){return h&&b(a)}})(!0)},any:function(b){return k(function(a){return function(h){return h||b(a)}})(!1)},sum:p,product:r,maximum:y,minimum:s,partition:a,zipWith:function(b){return function(a){return function(c){if("Nil"===a[0]||"Nil"===c[0])return["Nil"];("Cons"!==a[0]||"Cons"!==c[0])&&h("zipWith");for(var f=[];"Cons"===
29−a[0]&&"Cons"===c[0];)f.push(b(a[1])(c[1])),a=a[2],c=c[2];c=["Nil"];for(var d=f.length;d--;)c=["Cons",f[d],c];return c}}},zip:function(b){return function(a){if("Nil"===b[0]||"Nil"===a[0])return["Nil"];("Cons"!==b[0]||"Cons"!==a[0])&&h("zip");for(var c=[];"Cons"===b[0]&&"Cons"===a[0];)c.push(["Tuple2",b[1],a[1]]),b=b[2],a=a[2];a=["Nil"];for(var f=c.length;f--;)a=["Cons",c[f],a];return a}},unzip:m,intersperse:g,intercalate:l,sort:function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&h("sort");for(var a=
30−[];"Cons"===b[0];)a.push(b[1]),b=b[2];a.sort(function(b,a){return b-a});b=["Nil"];for(var c=a.length;c--;)b=["Cons",a[c],b];return b},take:function(b){return function(a){if(0>=b)return["Nil"];if("Nil"===a[0])return a;"Cons"!==a[0]&&h("take");var c=["Cons",a[1],["Nil"]],f=c;a=a[2];for(--b;"Cons"===a[0]&&0<b;)f[2]=["Cons",a[1],["Nil"]],f=f[2],a=a[2],--b;return c}},drop:function(b){return function(a){if("Nil"===a[0])return a;for("Cons"!==a[0]&&h("drop");"Cons"===a[0]&&0<b;)a=a[2],--b;return a}}}}();
31−Elm.Maybe=function(){function e(b){return function(d){return"Just"===b[0]?["Cons",b[1],d]:d}}function k(b){return function(d){return function(j){var a=b(d);return"Just"===a[0]?["Cons",a[1],j]:j}}}return{Just:function(b){return["Just",b]},Nothing:["Nothing"],catMaybes:Elm.List.foldr(e)(["Nil"]),isJust:function(b){return"Just"===b[0]},isNothing:function(b){return"Nothing"===b[0]},fromMaybe:function(b){return function(d){return"Just"===d[0]?d[1]:b}},consMaybe:e,mapMaybe:function(b){return Elm.List.foldr(k(b))(["Nil"])},
32−maybe:function(b){return function(d){return function(j){return"Just"===j[0]?d(j[1]):b}}}}}();
33−Elm.Char=function(){function e(b,a){return function(d){d=d.charCodeAt(0);return b<=d&&d<=a}}var k=e(48,57),b=e(97,102),d=e(65,70);return{fromCode:function(b){return String.fromCharCode(b)},toCode:function(b){return b.charCodeAt(0)},toUpper:function(b){return b.toUpperCase()},toLower:function(b){return b.toLowerCase()},toLocaleUpper:function(b){return b.toLocaleUpperCase()},toLocaleLower:function(b){return b.toLocaleLowerCase()},isLower:e(97,122),isUpper:e(65,90),isDigit:k,isOctDigit:e(48,55),isHexDigit:function(e){return k(e)||
34−b(e)||d(e)}}}();
35−Elm.Color=function(){function e(e){var b=e.value*e.saturation,d=e.hue/60,j=b*(1-Math.abs(d%2-1)),a=0,m=0,g=0;0<=d&&1>d?(a=b,m=j,g=0):1<=d&&2>d?(a=j,m=b,g=0):2<=d&&3>d?(a=0,m=b,g=j):3<=d&&4>d?(a=0,m=j,g=b):4<=d&&5>d?(a=j,m=0,g=b):5<=d&&6>d&&(a=b,m=0,g=j);e=e.value-b;return["Color",Math.round(255*(a+e)),Math.round(255*(m+e)),Math.round(255*(g+e)),1]}return{rgba:function(e){return function(b){return function(d){return function(j){return["Color",e,b,d,j]}}}},rgb:function(e){return function(b){return function(d){return["Color",e,
36−b,d,1]}}},hsva:function(k){return function(b){return function(d){return function(j){var a=e({hue:k,saturation:b,value:d});a[4]=j;return a}}}},hsv:function(k){return function(b){return function(d){return e({hue:k,saturation:b,value:d})}}},red:["Color",255,0,0,1],green:["Color",0,255,0,1],blue:["Color",0,0,255,1],yellow:["Color",255,255,0,1],cyan:["Color",0,255,255,1],magenta:["Color",255,0,255,1],black:["Color",0,0,0,1],white:["Color",255,255,255,1],gray:["Color",128,128,128,1],grey:["Color",128,128,
37−128,1],complement:function(k){var b;b=k[1]/255;var d=k[2]/255;k=k[3]/255;var j=Math.max(b,d,k),a=Math.min(b,d,k),a=j-a,m=0;0===a?m=0:j===b?m=(d-k)/a%6:j===d?m=(k-b)/a+2:j===k&&(m=(b-d)/a+4);b={value:j,hue:60*m,saturation:0===j?0:a/j};b.hue=(b.hue+180)%360;return e(b)},extract:function(e){return 1===e[4]?"rgb("+e[1]+","+e[2]+","+e[3]+")":"rgba("+e[1]+","+e[2]+","+e[3]+","+e[4]+")"}}}();
38−var Collage=function(){function e(b,a){var c=a.length-1;if(!(0>=c))for(b.moveTo(a[c][1],a[c][2]);c--;)b.lineTo(a[c][1],a[c][2])}function k(b,a,c,f){0===b.length&&(b=[8,4]);var d=f.length-1;if(!(0>=d)){var n=f[d][1],g=f[d][2],e=0,j=0,k=0,m=0,q=0,t=0,w=b.length,A=!0,x=b[0];for(a.moveTo(n,g);d--;){e=f[d][1];j=f[d][2];k=e-n;m=j-g;for(q=Math.sqrt(k*k+m*m);x<=q;)n+=k*x/q,g+=m*x/q,a[A?"lineTo":"moveTo"](n,g),k=e-n,m=j-g,q=Math.sqrt(k*k+m*m),A=!A,t=(t+1)%w,x=b[t];0<q&&(a[A?"lineTo":"moveTo"](e,j),x-=q);n=
39−e;g=j}}a.strokeStyle=Elm.Color.extract(c);a.stroke()}function b(b,a,c,f,d){a.clearRect(0,0,c,f);for(c=d.length;c--;){var n=d[c],p=b;f=a;var j=n[1],m=n[2],s=n[3][1],u=n[3][2],n=n[4];f.save();(0!==s||0!==u)&&f.translate(s,u);j!==~~j&&f.rotate(2*Math.PI*j);1!==m&&f.scale(m,m);f.beginPath();switch(n[0]){case "FLine":a:switch(p=f,j=n,n=j[3][1],j[1][0]){case "Solid":j=j[2];e(p,n);p.strokeStyle=Elm.Color.extract(j);p.stroke();break;case "Dotted":k([3,3],p,j[2],n);break a;case "Dashed":k([8,4],p,j[2],n);
40−break a;case "Custom":k(j[1][1],p,j[2],n)}break;case "FShape":a:switch(s=p,m=f,p=n[1],j=n[2],n=n[3][1],p[0]){case "Filled":p=m;e(p,n);p.fillStyle=Elm.Color.extract(j);p.fill();break a;case "Outlined":p=m;e(p,n);p.strokeStyle=Elm.Color.extract(j);p.stroke();break a;case "Textured":j=s;p=p[1];s=new Image;s.src=g.castStringToJSString(p);s.onload=j;e(m,n);m.fillStyle=m.createPattern(s,"repeat");m.fill();break a;case "CustomOutline":k(p[1],m,j,n)}break;case "FImage":j=f,m=n[1],s=n[2],n=n[3],u=new Image,
41−u.onload=p,u.src=g.castStringToJSString(n),j.drawImage(u,-m/2,-s/2,m,s)}f.restore()}}function d(a,h,c){var f=Render.newElement("canvas");a=~~a;h=~~h;f.style.width=a+"px";f.style.height=h+"px";f.style.display="block";f.width=a;f.height=h;if(f.getContext){var d=f.getContext("2d");b(function(){b(this,d,a,h,c)},d,a,h,c);return f}f.innerHTML="Your browser does not support the canvas element.";return f}function j(b,a,c,f,d,n,g){var e=Render.render(g);c="translate("+(d-g[3]/2)+"px,"+(n-g[4]/2)+"px) "+(1===
42−f?"":"scale("+f+","+f+")")+" "+(c===~~c?"":"rotate("+360*c+"deg)");e.style.transform=c;e.style.msTransform=c;e.style.MozTransform=c;e.style.webkitTransform=c;e.style.OTransform=c;c=Render.newElement("div");Render.addTo(c,e);c.style.width=~~b+"px";c.style.height=~~a+"px";c.style.overflow="hidden";return c}function a(a,h,c){if(!Value.eq(c,h)){var f=a.style.width.slice(0,-2)-0,g=a.style.height.slice(0,-2)-0;if("object"===typeof c[0]){if("object"===typeof h[0]&&a.getContext){var n=a.getContext("2d");
43−return b(function(){b(this,n,f,g,c)},n,f,g,c)}h=d(f,g,c);h.style.position="absolute";return a.parentNode.replaceChild(h,a)}h=j(f,g,c[1],c[2],c[3][1],c[3][2],c[4][1]);h.style.position="absolute";return a.parentNode.replaceChild(h,a)}}function m(b,a,c,f,d){var g=0,e,j=(b[1]-f[1])/c;b=(b[2]-f[2])/c;0!==a&&(a*=-2*Math.PI,c=j*Math.cos(a)-b*Math.sin(a),b=j*Math.sin(a)+b*Math.cos(a),j=c);if(0===d.length)return!1;e=d[0];for(c=d.length-1;c--;){a=d[c];f=e[1];e=e[2];var k=a[1],m=a[2];if(e<m)var u=e,q=m;else u=
44−m,q=e;if(f<k)var t=f,w=k;else t=k,w=f;u<b&&b<=q&&j<=w&&(j<=t||j<=(b-e)*(k-f)/(m-e)+f)&&++g;e=a}return 1===g%2}var g=Elm.JavaScript;return{collage:function(b,a,c){if(0===c.length)return d(b,a,[]);for(var f=Array(c.length),e=c.length;e--;){var g=c[e];f[e]="string"===typeof g[0]?j(b,a,g[1],g[2],g[3][1],g[3][2],g[4][1]):d(b,a,g)}return 1===c.length?f[0]:Render.flowWith(Render.goIn,function(b){return b},f)},updateCollage:function(b,h,c){if(1===c.length)return a(b,h[0],c[0]);b=b.childNodes;for(var f=b.length,
45−d=f;d--;)a(b[f-d-1],h[d],c[d])},insideForm:function(b){return function(a){var c=b[1],f=b[2];if(6>a.length){var d=a[3][1],g=a[3][2],e=0,j=a[2];switch(a[4][0]){case "FShape":for(var k=a[4][3][1],s=k.length;--s;)var u=k[s],e=Math.max(e,u[1]*u[1]+u[2]*u[2]);e*=j*j;break;case "FImage":k=j*a[4][1]/2;j=j*a[4][2]/2;e=k*k+j*j;break;case "FElement":k=j*a[4][1][3]/2,j=j*a[4][1][4]/2,e=k*k+j*j}a.push(function(a,b){var c=a-d,h=b-g;return c*c+h*h<e+1})}if(!a[5](c,f))return!1;var q,t;switch(a[4][0]){case "FShape":return m(b,
46−a[1],a[2],a[3],a[4][3][1]);case "FLine":return!1;case "FImage":q=a[4][1]/2;t=a[4][2]/2;break;case "FElement":q=a[4][1][3]/2,t=a[4][1][4]/2}return m(b,a[1],a[2],a[3],[[null,q,t],[null,-q,t],[null,-q,-t],[null,q,-t],[null,q,t]])}}}}();
47−Elm.Graphics=function(){function e(a){return function(b){return["Position",a,b]}}function k(a){return function(b){return["EText",a,b]}}function b(a){return function(b){return["EFlow",a,r.castListToJSArray(b)]}}function d(a){return["Line",r.castListToJSArray(a)]}function j(a){return function(b){var c=r.castListToJSArray(a);0<c.length&&c.push(c[0]);return["Shape",c,b]}}function a(a){return function(b){return function(c){return function(h){return["Form",a,b,c,h]}}}}function m(a){return function(b){return function(c){return["FLine",
48−a,b,c]}}}function g(a){return function(b){return function(c){return["FShape",a,b,c]}}}function l(a,b,c,h,f,d){return["Element",Guid.guid(),a,b,c,h,f,d]}function h(a,b,c){return["Element",Guid.guid(),a,b,c,1,["Nothing"],["Nothing"]]}function c(a){return~~a[3]}function f(a){return~~a[4]}function v(a){return function(b){return function(c){return h(["EImage",r.castStringToJSString(c)],a,b)}}}function n(a){return function(b){return h(A,a,b)}}function p(a){return function(b){return function(c){var h=map(function(c){return["Tuple2",
49−a/2*Math.cos(2*(Math.PI/50)*c),b/2*Math.sin(2*(Math.PI/50)*c)]}),f=49,d=["Nil"];if(0<=f){do d=["Cons",f,d];while(0<f--)}return j(h(d))(c)}}}for(this.i in Elm.List)eval("var "+this.i+" = Elm.List[this.i];");var r=Elm.JavaScript,y=["DRight"],s=["DDown"],u=["DOut"],q=["Near"],t=["Mid"],w=["Far"],A=["EEmpty"],x=["Solid"],D=["Dotted"],F=["Dashed"],B=["Filled"],E=["Outlined"],z=e(q)(q),C=e(w)(q),G=e(q)(w),H=e(w)(w),I=e(q)(t),J=e(w)(t),q=e(t)(q),w=e(t)(w),t=e(t)(t);return{left:["DLeft"],right:y,down:s,up:["DUp"],
50−inward:["DIn"],outward:u,topLeft:z,topRight:C,bottomLeft:G,bottomRight:H,midLeft:I,midRight:J,midTop:q,midBottom:w,middle:t,middleAt:function(a){return function(b){return["PositionAt",a,b]}},topLeftAt:function(a){return function(b){return["PositionTL",a,b]}},topRightAt:function(a){return function(b){return["PositionTR",a,b]}},bottomLeftAt:function(a){return function(b){return["PositionBL",a,b]}},bottomRightAt:function(a){return function(b){return["PositionBR",a,b]}},absolute:function(a){return["Absolute",
51−a]},relative:function(a){return["Relative",a]},width:function(a){return function(b){var c=b[2];switch(c[0]){case "EImage":case "EVideo":return l(b[2],a,b[4]*a/b[3],b[5],b[6],b[7]);case "EText":return c=Value.getTextSize(a,b[4],c[2]),l(b[2],a,c[1],b[5],b[6],b[7])}return l(b[2],a,b[4],b[5],b[6],b[7])}},height:function(a){return function(b){switch(b[2][0]){case "EImage":case "EVideo":return l(b[2],b[3]*a/b[4],a,b[5],b[6],b[7])}return l(b[2],b[3],a,b[5],b[6],b[7])}},size:function(b){return function(a){return function(c){return l(c[2],
52−b,a,c[5],c[6],c[7])}}},opacity:function(b){return function(a){return l(a[2],a[3],a[4],b,a[6],a[7])}},color:function(a){return function(b){return l(b[2],b[3],b[4],b[5],["Just",a],b[7])}},link:function(b){return function(a){return l(a[2],a[3],a[4],a[5],a[6],["Just",r.castStringToJSString(b)])}},widthOf:c,heightOf:f,sizeOf:function(a){return["Tuple2",~~a[3],~~a[4]]},text:function(a){var b=Value.getTextSize(0,0,a);return h(k("left")(a),b[0],b[1])},asText:function(a){a=Elm.Text.monospace(Value.toText(Value.show(a)));
53−var b=Value.getTextSize(0,0,a);return h(k("left")(a),b[0],b[1])},plainText:function(a){a=Value.toText(a);var b=Value.getTextSize(0,0,a);return h(k("left")(a),b[0],b[1])},centeredText:function(a){var b=Value.getTextSize(0,0,a);return h(k("center")(a),b[0],b[1])},justifiedText:function(a){var b=Value.getTextSize(0,0,a);return h(k("justify")(a),b[0],b[1])},rightedText:function(a){var b=Value.getTextSize(0,0,a);return h(k("right")(a),b[0],b[1])},image:v,images:function(a){var b=Elm.Signal.constant(n(0)(0));
54−a=Elm.Signal.lift(function(a){a=r.castStringToJSString(a);var c=new Image;c.onload=function(){Dispatcher.notify(b.id,v(this.width)(this.height)(a))};c.src=a})(a);return Elm.Signal.lift2(function(a){return function(){return a}})(b)(a)},video:function(a){return function(b){return function(c){return h(["EVideo",r.castStringToJSString(c)],a,b)}}},fittedImage:function(a){return function(b){return function(c){return h(["EFittedImage",r.castStringToJSString(c)],a,b)}}},flow:function(a){return function(d){var e;
55−e=map(c)(d);a:{switch(a[0]){case "DLeft":e=sum(e);break a;case "DRight":e=sum(e);break a}e=maximum(e)}var g;g=map(f)(d);a:{switch(a[0]){case "DDown":g=sum(g);break a;case "DUp":g=sum(g);break a}g=maximum(g)}return h(b(a)(d),e,g)}},above:function(a){return function(c){return h(b(s)(["Cons",a,["Cons",c,["Nil"]]]),Math.max(~~a[3],~~c[3]),~~a[4]+~~c[4])}},below:function(a){return function(c){return h(b(s)(["Cons",c,["Cons",a,["Nil"]]]),Math.max(~~a[3],~~c[3]),~~a[4]+~~c[4])}},beside:function(a){return function(c){return h(b(y)(["Cons",
56−a,["Cons",c,["Nil"]]]),~~a[3]+~~c[3],Math.max(~~a[4],~~c[4]))}},layers:function(a){return h(b(u)(a),maximum(map(c)(a)),maximum(map(f)(a)))},collage:function(a){return function(b){return function(c){return h(["ECollage",a,b,Value.groupForms(c)],a,b)}}},spacer:n,container:function(a){return function(b){return function(c){return function(f){return h(["EContainer",c,f],a,b)}}}},line:d,segment:function(a){return function(b){return d(["Cons",a,["Cons",b,["Nil"]]])}},polygon:j,rect:function(a){return function(b){return function(c){return j(["Cons",
57−["Tuple2",0-a/2,0-b/2],["Cons",["Tuple2",0-a/2,b/2],["Cons",["Tuple2",a/2,b/2],["Cons",["Tuple2",a/2,0-b/2],["Nil"]]]]])(c)}}},oval:p,circle:function(a){return p(2*a)(2*a)},ngon:function(a){return function(b){return function(c){var h=map(function(c){return["Tuple2",b*Math.cos(2*(Math.PI/a)*c),b*Math.sin(2*(Math.PI/a)*c)]}),f=a-1,d=["Nil"];if(0<=f){do d=["Cons",f,d];while(0<f--)}return j(h(d))(c)}}},solid:function(b){return function(c){return a(0)(1)(["Tuple2",0,0])(m(x)(b)(c))}},dotted:function(b){return function(c){return a(0)(1)(["Tuple2",
58−0,0])(m(D)(b)(c))}},dashed:function(b){return function(c){return a(0)(1)(["Tuple2",0,0])(m(F)(b)(c))}},customLine:function(b){return function(c){return function(h){return a(0)(1)(["Tuple2",0,0])(m(["Custom",r.castListToJSArray(b)])(c)(h))}}},filled:function(b){return function(c){return a(0)(1)(c[2])(g(B)(b)(c))}},outlined:function(b){return function(c){return a(0)(1)(c[2])(g(E)(b)(c))}},customOutline:function(b){return function(c){return function(h){return a(0)(1)(h[2])(g(["CustomOutline",r.castListToJSArray(b)])(c)(h))}}},
59−textured:function(b){return function(c){return a(0)(1)(c[2])(g(["Textured",b])(null)(c))}},sprite:function(b){return function(c){return function(h){return function(f){return a(0)(1)(f)(["FImage",c,h,r.castStringToJSString(b)])}}}},toForm:function(b){return function(c){return a(0)(1)(b)(["FElement",c])}},rotate:function(b){return function(c){a:{switch(c[0]){case "Form":var h=c[2],f=c[3],d=c[4];c=a(b+c[1])(h)(f)(d);break a}throw"Non-exhaustive pattern match in case";}return c}},scale:function(b){return function(c){return a(c[1])(b*
60−c[2])(c[3])(c[4])}},move:function(b){return function(c){return function(h){var f;a:{switch(h[0]){case "Form":f=h[1];var d=h[2],e=h[3];h=h[4];switch(e[0]){case "Tuple2":var g=e[1],e=e[2];f=a(f)(d)(["Tuple2",b+g,c+e])(h);break a}}throw"Non-exhaustive pattern match in case";}return f}}},isWithin:Collage.insideForm}}();
61−Elm.Text=function(){function e(a){return Value.toText(a)}var k=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},b=function(a,b){return function(f){return"<span style='"+a+":"+b+"'>"+f+"</span>"}},d=function(a){a=Elm.JavaScript.castStringToJSString(a);return b("font-family",a)},j=k("h1"),a=b("font-style","italic"),k=k("b"),m=b("text-decoration","underline"),g=b("text-decoration","overline"),l=b("text-decoration","line-through");return{fromString:e,toText:e,header:j,
62−height:function(a){return b("font-size",a+"em")},italic:a,bold:k,underline:m,overline:g,strikeThrough:l,monospace:d("monospace"),typeface:d,color:function(a){return b("color",Elm.Color.extract(a))},link:function(a){return function(b){return"<a href='"+e(a)+"'>"+b+"</a>"}}}}();
63−var Render=function(){function e(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a}function k(a){return a}function b(a){a.style.styleFloat="left";a.style.cssFloat="left";return a}function d(a){a.style.position="absolute";return a}function j(a,b,f){for(var d=e("div"),g=f.length;g--;){var j=a(b(f[g]));d.appendChild(j)}return d}function a(a){switch(a[0]){case "Absolute":return a[1]+"px";case "Relative":return 100*a[1]+"%"}}function m(b,c){c.style.position="absolute";c.style.margin=
64−"auto";switch(b[0]){case "Position":"Far"!==b[1][0]&&(c.style.left=0);"Near"!==b[1][0]&&(c.style.right=0);"Far"!==b[2][0]&&(c.style.top=0);"Near"!==b[2][0]&&(c.style.bottom=0);break;case "PositionAt":c.style.top=a(b[2]);c.style.left=a(b[1]);var f="translate("+~~(-c.style.width.slice(0,-2)/2)+"px,"+~~(-c.style.height.slice(0,-2)/2)+"px)";c.style.transform=f;c.style.msTransform=f;c.style.MozTransform=f;c.style.webkitTransform=f;c.style.OTransform=f;break;default:f=b[0].slice(-2),c.style["T"===f[0]?
65−"top":"bottom"]=a(b[2]),c.style["L"===f[1]?"left":"right"]=a(b[1])}}function g(a){var c={};switch(a[2][0]){case "EText":var c=a[2][1],f=a[2][2],l=e("div");l.innerHTML=f;l.style.textAlign=c;c=l;break;case "EImage":c=a[2][1];f=e("img");f.src=c;f.name=c;f.style.display="block";c=f;break;case "EVideo":l=a[2][1];c=e("video");c.controls="controls";f=e("source");f.src=l;l=l.split(".");f.type="video/"+l[l.length-1];c.appendChild(f);c.style.display="block";break;case "EFittedImage":var n=a[3],p=a[4],c=a[2][1],
66−f=e("div");f.style.width=n+"px";f.style.height=p+"px";f.style.position="relative";f.style.overflow="hidden";var r=e("img");r.onload=function(){r.style.position="absolute";r.style.margin="auto";var a=n,b=p;n/p>this.width/this.height?b=Math.round(this.height*n/this.width):a=Math.round(this.width*p/this.height);r.style.width=a+"px";r.style.height=b+"px";r.style.left=(n-a)/2+"px";r.style.top=(p-b)/2+"px"};r.src=c;r.name=c;f.appendChild(r);c=f;break;case "EFlow":a:{c=a[2][2];switch(a[2][1][0]){case "DDown":c=
67−c.slice(0).reverse();case "DUp":c=j(k,g,c);break a;case "DRight":c=c.slice(0).reverse();case "DLeft":c=j(b,g,c);break a;case "DOut":c=c.slice(0).reverse();case "DIn":c=j(d,g,c);break a}c=void 0}break;case "ECollage":c=Collage.collage(a[2][1],a[2][2],a[2][3]);break;case "EEmpty":c=e("div");break;case "EContainer":f=a[2][1];c=g(a[2][2]);m(f,c);f=e("div");f.style.position="relative";f.style.overflow="hidden";f.appendChild(c);c=f;break;case "EHtml":c=a[2][1];"button"!==c.type&&(f=Value.getExcess(c),a[3]-=
68−f[0],a[4]-=f[1]);break;case "EExternalHtml":c=e("div"),c.appendChild(a[2][1])}c.id=a[1];c.style.width=~~a[3]+"px";c.style.height=~~a[4]+"px";1!==a[5]&&(c.style.opacity=a[5]);"Just"===a[6][0]&&(c.style.backgroundColor=Elm.Color.extract(a[6][1]));return"Just"===a[7][0]?(f=e("a"),f.href=a[7][1],f.appendChild(c),f):c}function l(a,c,f){"A"===a.tagName&&(a=a.firstChild);if(c[1]!==f[1]){if(c[2][0]!==f[2][0])return a.parentNode.replaceChild(g(f),a);var e=f[2],j=c[2];switch(e[0]){case "EText":e[1]!==j[1]&&
69−(a.style.textAlign=e[1]);e[2]!==j[2]&&(a.innerHTML=e[2]);break;case "EImage":e[1]!==j[1]&&(a.src=e[1]);break;case "EVideo":case "EFittedImage":if(!Value.eq(e,j)||f[3]!==c[3]||f[4]!==c[4])return a.parentNode.replaceChild(g(f),a);break;case "ECollage":if(e[1]!==j[1]||e[2]!==j[2]||e[3].length!==j[3].length)return a.parentNode.replaceChild(g(f),a);Collage.updateCollage(a,j[3],e[3]);break;case "EFlow":if(e[1]!==j[1])return a.parentNode.replaceChild(g(f),a);var p=e[2],r=a.childNodes;if(p.length!==r.length)return a.parentNode.replaceChild(g(f),
70−a);var j=j[2],y=function(a){return a};switch(e[1][0]){case "DDown":case "DUp":y=k;break;case "DRight":case "DLeft":y=b;break;case "DOut":case "DIn":y=d}for(e=r.length;e--;)l(r[e],j[e],p[e]),y(r[e]);break;case "EContainer":l(a.childNodes[0],j[2],e[2]);m(e[1],a.childNodes[0]);break;case "EHtml":f[1]!==c[1]&&(p=g(f),a.parentNode.replaceChild(p,a),a=p);"button"!==p.type&&(e=Value.getExcess(a),f[3]-=e[0],f[4]-=e[1]);break;case "EExternalHtml":f[1]!==c[1]&&a.parentNode.replaceChild(g(f),a)}f[3]!==c[3]&&
71−(a.style.width=~~f[3]+"px");f[4]!==c[4]&&(a.style.height=~~f[4]+"px");f[5]!==c[5]&&(a.style.opacity=f[5]);2===f[6].length&&(e=Elm.Color.extract(f[6][1]),e!==a.style.backgroundColor&&(a.style.backgroundColor=e));if(2===f[7].length&&(1===c[7].length||f[7][1]!==c[7][1]))a.parentNode.href=f[7][1];f[1]=c[1]}}return{render:g,update:l,addTo:function(a,b){a.appendChild(b)},newElement:e,flowWith:j,goIn:d}}();
72−Elm.Signal=function(){function e(a){this.id=Guid.guid();this.value=a;this.kids=[];this.defaultNumberOfKids=0;this.recv=function(a,b,c){if(b=b===this.id)this.value=c;l(this,a,b);return b};Dispatcher.inputs.push(this)}function k(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.count=0;this.changed=!1;b.reverse();this.recalc=function(){for(var d=a,e=b.length;e--;)d=d(b[e].value);this.value=d};this.recalc();this.recv=function(a,c){this.count+=1;c&&(this.changed=!0);this.count==b.length&&(this.changed&&
73−this.recalc(),l(this,a,this.changed),this.changed=!1,this.count=0)};for(var d=b.length;d--;)b[d].kids.push(this)}function b(a,b,d,e){this.id=Guid.guid();this.value=d?b(e.value):b;this.kids=[];this.recv=function(b,d){d&&(this.value=a(e.value)(this.value));l(this,b,d)};e.kids.push(this)}function d(a,b,d){this.id=Guid.guid();this.value=a(d.value)?b:d.value;this.kids=[];this.recv=function(b,f){var e=f&&!a(d.value);e&&(this.value=d.value);l(this,b,e)};d.kids.push(this)}function j(a){this.id=Guid.guid();
74−this.value=a.value;this.kids=[];this.recv=function(b,d){var e=d&&!Value.eq(this.value,a.value);e&&(this.value=a.value);l(this,b,e)};a.kids.push(this)}function a(a,b){this.id=Guid.guid();var d=(new window.Date).getTime();this.value=a?Value.Tuple(d,b.value):d;this.kids=[];this.recv=function(d,e){e&&(this.value=a?Value.Tuple(d,b.value):d);l(this,d,e)};b.kids.push(this)}function m(a,b){this.id=Guid.guid();this.value=b.value;this.kids=[];this.count=0;this.changed=!1;this.recv=function(d,e,g){g===a.id&&
75−(this.changed=e);this.count+=1;2==this.count&&(this.changed&&(this.value=b.value),l(this,d,this.changed),this.count=0,this.changed=!1)};a.kids.push(this);b.kids.push(this)}function g(a,b){this.id=Guid.guid();this.value=a.value;this.kids=[];this.next=null;this.count=0;this.changed=!1;this.recv=function(d,e,g){this.count+=1;e&&(this.changed=!0,g==b.id&&null===this.next&&(this.next=b.value),g==a.id&&(this.next=a.value));2==this.count&&(this.changed&&(this.value=this.next,this.next=null),l(this,d,this.changed),
76−this.changed=!1,this.count=0)};a.kids.push(this);b.kids.push(this)}var l=function(a,b,d){for(var e=a.kids,g=e.length;g--;)e[g].recv(b,d,a.id)},h=function(a){return function(b){return function(e){e=new k(function(a){return function(b){return[a,b]}},[a,e]);e=new d(function(a){return a[0]},[!0,b],e);return new k(function(a){return a[1]},[e])}}};return{constant:function(a){return new e(a)},lift:function(a){return function(b){return new k(a,[b])}},lift2:function(a){return function(b){return function(d){return new k(a,
77−[b,d])}}},lift3:function(a){return function(b){return function(d){return function(e){return new k(a,[b,d,e])}}}},lift4:function(a){return function(b){return function(d){return function(e){return function(g){return new k(a,[b,d,e,g])}}}}},lift5:function(a){return function(b){return function(d){return function(e){return function(g){return function(h){return new k(a,[b,d,e,g,h])}}}}}},lift6:function(a){return function(b){return function(d){return function(e){return function(g){return function(h){return function(j){return new k(a,
78−[b,d,e,g,h,j])}}}}}}},lift7:function(a){return function(b){return function(d){return function(e){return function(g){return function(h){return function(j){return function(l){return new k(a,[b,d,e,g,h,j,l])}}}}}}}},lift8:function(a){return function(b){return function(d){return function(e){return function(g){return function(h){return function(j){return function(l){return function(m){return new k(a,[b,d,e,g,h,j,l,m])}}}}}}}}},foldp:function(a){return function(d){return function(e){return new b(a,d,!1,
79−e)}}},foldp_:function(a){return function(d){return function(e){return new b(a,d,!0,e)}}},foldp1:function(a){return function(d){return new b(a,function(a){return a},!0,d)}},delay:function(a){return function(b){var d=new e(b.value),g=!0;b=new m(d,new k(function(a){return function(){return a}},[d,new k(function(b){g||setTimeout(function(){Dispatcher.notify(d.id,b)},a)},[b])]));g=!1;return b}},merge:function(a){return function(b){return new g(a,b)}},merges:function(a){return Elm.List.foldl1(function(a){return function(b){return new g(a,
80−b)}})(a)},average:function(a){return function(b){for(var d=Array(a),e=a;e--;)d[e]=0;var e=0,g=!1,h=0;return new k(function(b){h+=b-d[e];d[e]=b;b=h/Math.max(1,g?a:e);++e==a&&(g=!0,e=0);return b},[b])}},count:function(a){return new b(function(){return function(a){return a+1}},0,!1,a)},countIf:function(a){return function(d){return new b(function(b){return function(d){return a(b)?d+1:d}},0,!1,d)}},keepIf:function(a){return function(b){return function(e){return new d(function(b){return!a(b)},b,e)}}},dropIf:function(a){return function(b){return function(e){return new d(a,
81−b,e)}}},keepWhen:function(a){return h(new k(function(a){return!a},[a]))},dropWhen:h,dropRepeats:function(a){return new j(a)},sampleOn:function(a){return function(b){return new m(a,b)}},timestamp:function(b){return new a(!0,b)},timeOf:function(b){return new a(!1,b)}}}();
82−var Dispatcher=function(){function e(b){if(!b.hasOwnProperty("defaultNumberOfKids"))return!0;var a=b.kids.length;if(0==a)return!1;if(a>b.defaultNumberOfKids)return!0;for(var d=!1;a--;)d=d||e(b.kids[a]);return d}var k=null,b=[],d=null;return{initialize:function(){k=Elm.main();k.hasOwnProperty("recv")||(k=Elm.Signal.constant(k));d=k.value;for(var j=[],a=b.length;a--;)e(b[a])&&j.push(b[a]);b=j;document.getElementById("content").appendChild(Render.render(d));j=document.getElementById("widthChecker").offsetWidth;
83−j!==window.innerWidth&&Dispatcher.notify(Elm.Window.dimensions.id,Value.Tuple(j,window.innerHeight));k=Elm.Signal.lift(function(a){var b=document.getElementById("content");Render.update(b.firstChild,d,a);return d=a})(k)},notify:function(d,a){for(var e=(new window.Date).getTime(),g=!1,k=b.length;k--;)g=b[k].recv(e,d,a)||g;return g},inputs:b}}();
84−Elm.HTTP=function(){function e(b){return function(d){return function(e){return function(c){return{"0":"Request",length:1,verb:a.castStringToJSString(b),url:a.castStringToJSString(d),data:null===e?null:a.castStringToJSString(e),headers:c}}}}}function k(a){return e("GET")(a)(null)(["Nil"])}function b(b,e){return function(h){if(""!==h.url){var c={value:["Waiting"]};b.push(c);var f=null;window.ActiveXObject&&(f=new ActiveXObject("Microsoft.XMLHTTP"));window.XMLHttpRequest&&(f=new XMLHttpRequest);f.onreadystatechange=
85−function(){4===f.readyState&&(c.value=200===f.status?["Success",m(f.responseText)]:["Failure",f.status,m(f.statusText)],setTimeout(function(){d(b,e)},0))};f.open(h.verb,h.url,!0);Elm.List.map(function(b){f.setRequestHeader(a.castStringToJSString(b[1]),a.castStringToJSString(b[2]))})(h.headers);f.send(h.data)}}}function d(a,b){0<a.length&&(Dispatcher.notify(b.id,a[0].value),"Waiting"!==a[0].value[0]&&(a.shift(),setTimeout(function(){d(a,b)},0)))}function j(a){var d=Elm.Signal.constant(["Waiting"]);
86−a=Elm.Signal.lift(b([],d))(a);return Elm.Signal.lift2(function(a){return function(){return a}})(d)(a)}var a=Elm.JavaScript,m=Elm.JavaScript.castJSStringToString;return{get:k,post:function(a){return function(b){return e("POST")(a)(b)(["Nil"])}},request:e,send:j,sendGet:function(a){return j(Elm.Signal.lift(k)(a))}}}();
87−Elm.Input=function(){var e=Elm.JavaScript,k=Elm.JavaScript.castJSStringToString,b=function(a,b){a.placeholder=e.castStringToJSString(b);var d=Elm.Signal.constant(["Nil"]);Value.addListener(a,"keyup",function(){Dispatcher.notify(d.id,k(a.value));a.focus()});a.style.padding="1px";return Value.Tuple(Value.wrap(a),d)},d=function(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a},j=function(a){for(var b=d("select"),e=[];"Cons"===a[0];){var j=d("option"),h=Value.toText(a[1][1]);
88−j.value=h;j.innerHTML=h;b.appendChild(j);e.push(a[1][2]);a=a[2]}var c=Elm.Signal.constant(e[0]);Value.addListener(b,"change",function(){Dispatcher.notify(c.id,e[b.selectedIndex])});return Value.Tuple(Value.wrap(b),c)};return{textArea:function(a){return function(e){var g=d("textarea");g.rows=e;g.cols=a;return b(g,"")}},textField:function(a){var e=d("input");e.type="text";return b(e,a)},password:function(a){var e=d("input");e.type="password";return b(e,a)},checkbox:function(a){var b=d("input");b.type=
89−"checkbox";b.checked=a;var e=Elm.Signal.constant(a);Value.addListener(b,"change",function(){Dispatcher.notify(e.id,b.checked)});return Value.Tuple(Value.wrap(b),e)},dropDown:j,stringDropDown:function(a){return j(Elm.List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var b=d("input");b.type="button";b.value=e.castStringToJSString(a);var g=Elm.Signal.constant(!1);Value.addListener(b,"click",function(){Dispatcher.notify(g.id,!0);Dispatcher.notify(g.id,!1)});return Value.Tuple(Value.wrap(b),
90−g)}}}();
91−Elm.Keyboard={Raw:function(){function e(b,j){return"Nil"===j[0]?j:j[1]===b?j[2]:["Cons",j[1],e(b,j[2])]}var k=Elm.Signal.constant(["Nil"]),b=Elm.Signal.constant(["Nothing"]);Value.addListener(document,"keydown",function(b){var e;a:{for(e=k.value;"Nil"!==e[0];){if(e[1]===b.keyCode){e=!0;break a}e=e[2]}e=!1}e||Dispatcher.notify(k.id,["Cons",b.keyCode,k.value])||this.removeEventListener("keydown",arguments.callee,!1)});Value.addListener(document,"keyup",function(b){var j=e(b.keyCode,k.value);Dispatcher.notify(k.id,
92−j)||this.removeEventListener("keyup",arguments.callee,!1)});Value.addListener(window,"blur",function(b){Dispatcher.notify(k.id,["Nil"])||this.removeEventListener("blur",arguments.callee,!1)});Value.addListener(document,"keypress",function(d){var e=Dispatcher.notify(b.id,["Just",d.charCode||d.keyCode]);Dispatcher.notify(b.id,["Nothing"]);e||this.removeEventListener("keypress",arguments.callee,!1)});return{keysDown:k,charPressed:b}}()};
93−Elm.Mouse=function(){function e(a){var b=0,d=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,d=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,d=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,d)}var k=Elm.Signal.constant(Value.Tuple(0,0));k.defaultNumberOfKids=2;var b=Elm.Signal.lift(function(a){return a[1]})(k);b.defaultNumberOfKids=0;var d=Elm.Signal.lift(function(a){return a[2]})(k);d.defaultNumberOfKids=
94−0;var j=Elm.Signal.constant(!1),a=Elm.Signal.constant(!1),m=Elm.Signal.constant(Value.Tuple());Value.addListener(document,"click",function(b){var d=Dispatcher.notify(a.id,!0),e=Dispatcher.notify(m.id,Value.Tuple());Dispatcher.notify(a.id,!1);!d&&!e&&this.removeEventListener("click",arguments.callee,!1)});Value.addListener(document,"mousedown",function(a){Dispatcher.notify(j.id,!0)||this.removeEventListener("mousedown",arguments.callee,!1)});Value.addListener(document,"mouseup",function(a){Dispatcher.notify(j.id,
95−!1)||this.removeEventListener("mouseup",arguments.callee,!1)});Value.addListener(document,"mousemove",function(a){Dispatcher.notify(k.id,e(a))||this.removeEventListener("mousemove",arguments.callee,!1)});return{position:k,x:b,y:d,isClicked:a,isDown:j,clicks:m,isClickedOn:function(a){a=Render.render(a);var b=Elm.Signal.constant(!1);Value.addListener(a,"click",function(){Dispatcher.notify(b.id,!0);Dispatcher.notify(b.id,!1)});return Value.Tuple(Value.wrap(a),b)}}}();
96−Elm.Random=function(){return{inRange:function(e){return function(k){return Elm.Signal.constant(Math.floor(Math.random()*(k-e+1))+e)}},randomize:function(e){return function(k){return function(b){return Elm.Signal.lift(function(){return Math.floor(Math.random()*(k-e+1))+e})(b)}}}}}();
97−Elm.Time=function(){function e(){return(new window.Date).getTime()}function k(b){return function(d){var j=1E3/b,a=e(),k=a,g=0,l=!0,h=Elm.Signal.constant(g),c=0;return Elm.Signal.lift2(function(b){return function(d){if(b){var n=!l&&b;c=setTimeout(function(){k=e();g=n?0:k-a;a=k;Dispatcher.notify(h.id,g)},j)}else l&&clearTimeout(c);l=b;return d}})(d)(h)}}Elm.Signal.constant(!0);return{fpsWhen:k,fps:function(b){return k(b)(Elm.Signal.constant(!0))},every:function(b){var d=Elm.Signal.constant(e());setInterval(function(){Dispatcher.notify(d.id,
98−e())},b);return d},delay:Elm.Signal.delay,since:function(b){return function(d){var e=Elm.Signal.count(Elm.Signal.delay(b)(d));return Elm.Signal.lift2(function(a){return function(b){return!Value.eq(a,b)}})(Elm.Signal.count(d))(e)}},after:function(b){b*=1E3;var d=Elm.Signal.constant(!1);setTimeout(function(){Dispatcher.notify(d.id,!0)},b);return d},before:function(b){b*=1E3;var d=Elm.Signal.constant(!0);setTimeout(function(){Dispatcher.notify(d.id,!1)},b);return d},hour:36E5,minute:6E4,second:1E3,ms:1,
99−inHours:function(b){return b/36E5},inMinutes:function(b){return b/6E4},inSeconds:function(b){return b/1E3},inMss:function(b){return b},toDate:function(b){return new window.Date(b)},read:function(b){b=window.Date.parse(b);return isNaN(b)?["Nothing"]:["Just",b]}}}();
100−Elm.Window=function(){var e=Elm.Signal.constant(Value.Tuple(window.innerWidth,window.innerHeight));e.defaultNumberOfKids=2;var k=Elm.Signal.lift(function(b){return b[1]})(e);k.defaultNumberOfKids=0;var b=Elm.Signal.lift(function(b){return b[2]})(e);b.defaultNumberOfKids=0;Value.addListener(window,"resize",function(b){var j=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(e.id,Value.Tuple(j,window.innerHeight))||this.removeEventListener("resize",arguments.callee,!1)});return{dimensions:e,
101−width:k,height:b}}();
102−Elm.Date=function(){var e="Sun Mon Tue Wed Thu Fri Sat".split(" "),k="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");return{read:function(b){b=new window.Date(Elm.JavaScript.castStringToJSString(b));return isNaN(b.getTime())?["Nothing"]:["Just",b]},year:function(b){return b.getFullYear()},month:function(b){return[k[b.getMonth()]]},day:function(b){return b.getDate()},hour:function(b){return b.getHours()},minute:function(b){return b.getMinutes()},second:function(b){return b.getSeconds()},dayOfWeek:function(b){return[e[b.getDay()]]},
103−toTime:function(b){return b.getTime()},Mon:["Mon"],Tue:["Tue"],Wed:["Wed"],Thu:["Thu"],Fri:["Fri"],Sat:["Sat"],Sun:["Sun"],Jan:["Jan"],Feb:["Feb"],Mar:["Mar"],Apr:["Apr"],May:["May"],Jun:["Jun"],Jul:["Jul"],Aug:["Aug"],Sep:["Sep"],Oct:["Oct"],Nov:["Nov"],Dec:["Dec"]}}();Value.addListener(document,"elm_log",function(e){console.log(e.value)});Value.addListener(document,"elm_title",function(e){document.title=e.value});
104−Value.addListener(document,"elm_redirect",function(e){0<e.value.length&&(window.location=e.value)});
105−Elm.Prelude=function(){function e(b){return function(d){if(b instanceof Array&&d instanceof Array){var j=b.length;if(j==d.length){for(var a=1;a<j;++a){var k=e(b[a])(d[a]);if("EQ"!==k[0])return k}return["EQ"]}return[1==d.length?"GT":"LT"]}return[b===d?"EQ":b<d?"LT":"GT"]}}var k=function(b){return function(d){var e=b%d,e=0==b?0:0<d?0<=b?e:e+d:-k(-b)(-d);return e==d?0:e}};return{eq:Value.eq,id:function(b){return b},not:function(b){return!b},fst:function(b){return b[1]},snd:function(b){return b[2]},rem:function(b){return function(d){return b%
106−d}},div:function(b){return function(d){return~~(b/d)}},otherwise:!0,compare:e,toFloat:function(b){return b},round:function(b){return Math.round(b)},floor:function(b){return Math.floor(b)},ceiling:function(b){return Math.ceil(b)},truncate:function(b){return~~b},readInt:function(b){b=Elm.JavaScript.castStringToJSString(b);var d=b.length;if(0===d)return["Nothing"];var e=0;if("-"==b[0]){if(1===d)return["Nothing"];e=1}for(;e<d;++e)if(!Elm.Char.isDigit(b[e]))return["Nothing"];return["Just",parseInt(b)]},
107−readFloat:function(b){b=Elm.JavaScript.castStringToJSString(b);var d=b.length;if(0===d)return["Nothing"];var e=0;if("-"==b[0]){if(1===d)return["Nothing"];e=1}for(var a=0;e<d;++e)if(!Elm.Char.isDigit(b[e])){if("."===b[e]&&(a+=1,1>=a))continue;return["Nothing"]}return["Just",parseFloat(b)]},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:function(b){return function(d){return Math.atan2(b,d)}},mod:k,min:function(b){return function(d){return Math.min(b,
108−d)}},max:function(b){return function(d){return Math.max(b,d)}},flip:function(b){return function(d){return function(e){return b(e)(d)}}},clamp:function(b){return function(d){return function(e){return Math.min(d,Math.max(b,e))}}},curry:function(b){return function(d){return function(e){return b(["Tuple2",d,e])}}},uncurry:function(b){return function(d){if("Tuple2"!==d[0])throw"Function was uncurry'd but was not given a pair.";return b(d[1])(d[2])}},logBase:function(b){return function(d){return Math.log(d)/
109−Math.log(b)}},Just:Elm.Maybe.Just,Nothing:Elm.Maybe.Nothing,maybe:Elm.Maybe.maybe,map:Elm.List.map,zip:Elm.List.zip,zipWith:Elm.List.zipWith,filter:Elm.List.filter,head:Elm.List.head,tail:Elm.List.tail,last:Elm.List.last,length:Elm.List.length,reverse:Elm.List.reverse,foldr:Elm.List.foldr,foldr1:Elm.List.foldr1,foldl:Elm.List.foldl,foldl1:Elm.List.foldl1,and:Elm.List.and,or:Elm.List.or,all:Elm.List.all,any:Elm.List.any,sum:Elm.List.sum,product:Elm.List.product,concat:Elm.List.concat,concatMap:Elm.List.concatMap,
110−maximum:Elm.List.maximum,minimum:Elm.List.minimum,scanl:Elm.List.scanl,scanl1:Elm.List.scanl1,take:Elm.List.take,drop:Elm.List.drop,zip:Elm.List.zip,unzip:Elm.List.unzip,lift:Elm.Signal.lift,lift2:Elm.Signal.lift2,lift3:Elm.Signal.lift3,lift4:Elm.Signal.lift4,lift5:Elm.Signal.lift5,lift6:Elm.Signal.lift6,lift7:Elm.Signal.lift7,lift8:Elm.Signal.lift8,foldp:Elm.Signal.foldp,foldp1:Elm.Signal.foldp1,foldp_:Elm.Signal.foldp_,constant:Elm.Signal.constant,merge:Elm.Signal.merge,count:Elm.Signal.count,countIf:Elm.Signal.countIf,
111−average:Elm.Signal.average,keepIf:Elm.Signal.keepIf,dropIf:Elm.Signal.dropIf,keepWhen:Elm.Signal.keepWhen,dropWhen:Elm.Signal.dropWhen,dropRepeats:Elm.Signal.dropRepeats,sampleOn:Elm.Signal.sampleOn,timestamp:Elm.Signal.timestamp,timeOf:Elm.Signal.timeOf}}();(function(){var e=function(e){for(var b in e)Elm.Prelude[b]=e[b]};e(Elm.Color);e(Elm.Text);e(Elm.Graphics);e(Elm.Time);show=Value.show})();
112−Elm.Dict=function(){function e(a){return function(b){return function(c){return function(e){return function(d){return["RBNode",a,b,c,e,d]}}}}}function k(a){a:{switch(a[0]){case "RBEmpty":throw"(min RBEmpty) is not defined";case "RBNode":switch(a[4][0]){case "RBEmpty":a=["Tuple2",a[2],a[3]];break a}a=k(a[4]);break a}throw"Non-exhaustive pattern match in case";}return a}function b(a){return function(c){var e;a:{switch(c[0]){case "RBEmpty":e=w;break a;case "RBNode":e=function(){switch(q(a)(c[2])[0]){case "EQ":return A(c[3]);
113−case "GT":return b(a)(c[5]);case "LT":return b(a)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return e}}function d(a){return function(b){return function(c){var e;a:{switch(c[0]){case "RBEmpty":e=a;break a;case "RBNode":e=function(){switch(q(b)(c[2])[0]){case "EQ":return c[3];case "GT":return d(a)(b)(c[5]);case "LT":return d(a)(b)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";
114−}return e}}}function j(a){return function(c){return F(b(a)(c))}}function a(a){a:{switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":a=e(a[1])(a[5][2])(a[5][3])(e(B)(a[2])(a[3])(a[4])(a[5][4]))(a[5][5]);break a}}throw"rotateLeft of a node without enough children";}return a}function m(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":a=e(a[1])(a[4][2])(a[4][3])(a[4][4])(e(B)(a[2])(a[3])(a[4][5])(a[5]));break a}}throw"rotateRight of a node without enough children";}return a}function g(a){a:{switch(a[0]){case "Black":a=
115−B;break a;case "Red":a=E;break a}throw"Non-exhaustive pattern match in case";}return a}function l(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[5][0]){case "RBNode":a=e(g(a[1]))(a[2])(a[3])(e(g(a[4][1]))(a[4][2])(a[4][3])(a[4][4])(a[4][5]))(e(g(a[5][1]))(a[5][2])(a[5][3])(a[5][4])(a[5][5]));break a}}}throw"color_flip called on a RBEmpty or RBNode with a RBEmpty child";}return a}function h(b){a:switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":b=
116−a(b);break a}}}a:switch(b[0]){case "RBNode":switch(b[4][0]){case "RBNode":switch(b[4][1][0]){case "Red":switch(b[4][4][0]){case "RBNode":switch(b[4][4][1][0]){case "Red":b=m(b);break a}}}}}a:switch(b[0]){case "RBNode":switch(b[4][0]){case "RBNode":switch(b[4][1][0]){case "Red":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":b=l(b);break a}}}}}return b}function c(a){a:switch(a[0]){case "RBNode":switch(a[1][0]){case "Red":a=e(E)(a[2])(a[3])(a[4])(a[5]);break a}}return a}function f(a){return function(b){return function(d){var f=
117−function(c){var d;a:{switch(c[0]){case "RBEmpty":d=e(B)(a)(b)(z)(z);break a;case "RBNode":d=function(){switch(q(a)(c[2])[0]){case "EQ":return e(c[1])(c[2])(b)(c[4])(c[5]);case "GT":return e(c[1])(c[2])(c[3])(c[4])(f(c[5]));case "LT":return e(c[1])(c[2])(c[3])(f(c[4]))(c[5])}throw"Non-exhaustive pattern match in case";}();d=h(d);break a}throw"Non-exhaustive pattern match in case";}return d};return c(f(d))}}}function v(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":a=
118−!0;break a}}}a=!1}return a}function n(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=!0;break a}}}}a=!1}return a}function p(b){if(x(v(b))&&x(n(b))){b=l(b);a:switch(b[0]){case "RBNode":b:switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":b=l(a(e(b[1])(b[2])(b[3])(b[4])(m(b[5]))));break b}}}break a}}return b}function r(a){return function(b){var d=function(b){a:{switch(b[0]){case "RBEmpty":b=
119−z;break a;case "RBNode":if("LT"===q(a)(b[2])[0])b:{b=p(b);switch(b[0]){case "RBEmpty":throw"delLT on RBEmpty";case "RBNode":b=h(e(b[1])(b[2])(b[3])(d(b[4]))(b[5]));break b}break}else{var f=v(b)?m(b):b,g;b:{switch(f[0]){case "RBNode":switch(f[5][0]){case "RBEmpty":g=D(a,f[2]);break b}}g=!1}if(g)b=f[4];else{f=x;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][1][0]){case "Red":g=!0;break b}}}g=!1}if(f=f(g)){f=x;b:{switch(b[0]){case "RBNode":switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":g=
120−!0;break b}}}}g=!1}f=f(g)}f&&(b=l(b),b=n(b)?l(m(b)):b);b:{switch(b[0]){case "RBNode":f=D(a,b[2]);break b}f=!1}if(f)b:{switch(b[0]){case "RBEmpty":throw"delEQ called on a RBEmpty";case "RBNode":g=k(b[5]);c:{switch(g[0]){case "Tuple2":f=g[1];break c}break}c:{switch(g[0]){case "Tuple2":g=g[2];break c}break}var f=e(b[1])(f)(g)(b[4]),j=function(a){a:{switch(a[0]){case "RBNode":switch(a[4][0]){case "RBEmpty":a=z;break a}}b:{a=p(a);switch(a[0]){case "RBEmpty":a=z;break b;case "RBNode":a=h(e(a[1])(a[2])(a[3])(j(a[4]))(a[5]));
121−break b}throw"Non-exhaustive pattern match in case";}}return a};b=c(j(b[5]));b=h(f(b));break b}break}else b:{switch(b[0]){case "RBEmpty":throw"delGT called on a RBEmpty";case "RBNode":b=h(e(b[1])(b[2])(b[3])(b[4])(d(b[5])));break b}break}}}break a}throw"Non-exhaustive pattern match in case";}return b};return j(a)(b)?c(d(b)):b}}function y(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=z;break a;case "RBNode":b=e(b[1])(b[2])(a(b[3]))(y(a)(b[4]))(y(a)(b[5]));break a}throw"Non-exhaustive pattern match in case";
122−}return b}}function s(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=s(a)(a(c[2])(c[3])(s(a)(b)(c[4])))(c[5]);break a}throw"Non-exhaustive pattern match in case";}return c}}}function u(a){return function(b){return function(c){a:{switch(c[0]){case "RBEmpty":c=b;break a;case "RBNode":c=u(a)(a(c[2])(c[3])(u(a)(b)(c[5])))(c[4]);break a}throw"Non-exhaustive pattern match in case";}return c}}}var q=Elm.Prelude.compare,t=Elm.Prelude.uncurry,w=Elm.Prelude.Nothing,
123−A=Elm.Prelude.Just,x=Elm.Prelude.not,D=Elm.Prelude.eq,F=Elm.Maybe.isJust,B=["Red"],E=["Black"],z=["RBEmpty"],C=z;return{$op:{},empty:C,lookup:b,findWithDefault:d,member:j,insert:f,singleton:function(a){return function(b){return f(a)(b)(z)}},remove:r,map:y,foldl:s,foldr:u,union:function(a){return function(b){return s(f)(b)(a)}},intersect:function(a){return function(b){return s(function(a){return function(c){return function(d){return j(a)(b)?f(a)(c)(d):d}}})(C)(a)}},diff:function(a){return function(b){return s(function(a){return function(){return function(b){return r(a)(b)}}})(a)(b)}},
124−keys:function(a){return u(function(a){return function(){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},values:function(a){return u(function(){return function(a){return function(b){return["Cons",a,b]}}})(["Nil"])(a)},toList:function(a){return u(function(a){return function(b){return function(c){return["Cons",["Tuple2",a,b],c]}}})(["Nil"])(a)},fromList:function(a){return Elm.List.foldl(t(f))(C)(a)}}}();
125−Elm.Set=function(){var e=Elm.Dict.empty,k=Elm.Dict.remove,b=Elm.Dict.member,d=Elm.Dict.union,j=Elm.Dict.intersect,a=Elm.Dict.diff,m=Elm.Dict.keys,g=Elm.List.foldl(function(a){return function(b){return Elm.Dict.insert(a)(["Tuple0"])(b)}})(e);return{empty:e,singleton:function(a){return Elm.Dict.singleton(a)(["Tuple0"])},insert:function(a){return Elm.Dict.insert(a)(["Tuple0"])},remove:k,member:b,union:d,intersect:j,diff:a,toList:m,fromList:g,foldl:function(a){return Elm.Dict.foldl(function(b){return function(){return function(c){return a(b)(c)}}})},
126−foldr:function(a){return Elm.Dict.foldr(function(b){return function(){return function(c){return a(b)(c)}}})},map:function(a){return function(b){b=m(b);return g(Elm.List.map(a)(b))}}}}();
127−(function(){try{var e={};for(this.i in Elm)eval("var "+this.i+"=Elm[this.i];");if(Elm.Automaton)throw"Module name collision, 'Automaton' is already defined.";Elm.Automaton=function(){function b(a){return["Automaton",a]}function d(a){return b(function(b){var c=unzip(map(function(a){a:{switch(a[0]){case "Automaton":a=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return a})(a)),e;a:{switch(c[0]){case "Tuple2":e=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=
128−c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",e,d(c)]})}function j(a){return b(function(b){return["Tuple2",a(b),j(a)]})}function a(c){return function(d){return b(function(b){b=d(b)(c);return["Tuple2",b,a(b)(d)]})}}function k(a){return function(c){return b(function(b){var d=c(b)(a);a:{switch(d[0]){case "Tuple2":b=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=d[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",
129−b,k(d)(c)]})}}function g(a){return function(b){a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":b=["Tuple2",a[1]-b[1],a[2]-b[2]];break b}break}break a}throw"Non-exhaustive pattern match in case";}return b}}function l(a){return function(b){var c;a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":var d=function(a){return["Tuple2",b[2],["Tuple2",a,b[2]]]};c=function(){switch(b[1][0]){case "DragFrom":var c;a[1]?c=["Tuple2",uncurry(move)(g(a[2])(b[1][1]))(b[2]),["Tuple2",["DragFrom",
130−b[1][1]],b[2]]]:(c=uncurry(move)(g(a[2])(b[1][1]))(b[2]),c=["Tuple2",c,["Tuple2",f,c]]);return c;case "Ignore":return d(a[1]?v:f);case "Listen":return d(not(a[1])?f:isWithin(a[2])(b[2])?["DragFrom",a[2]]:v)}throw"Non-exhaustive pattern match in case";}();break b}break}break a}throw"Non-exhaustive pattern match in case";}return c}}try{if(!(Elm.Prelude instanceof Object))throw"module not found";}catch(h){throw"Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file.";
131−}var c={};for(this.i in Elm.Prelude)c[this.i]||eval("var "+this.i+" = Elm.Prelude[this.i];");var f=["Listen"],v=["Ignore"];e[">>>"]=function(a){return function(c){var d;a:{switch(a[0]){case "Automaton":d=a[1];break a}throw"Non-exhaustive pattern match in case";}var f;a:{switch(c[0]){case "Automaton":f=c[1];break a}throw"Non-exhaustive pattern match in case";}return b(function(a){a=d(a);var b;a:{switch(a[0]){case "Tuple2":b=a[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(a[0]){case "Tuple2":a=
132−a[2];break a}throw"Non-exhaustive pattern match in case";}var c=f(b);a:{switch(c[0]){case "Tuple2":b=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",b,e[">>>"](a)(c)]})}};e["<<<"]=function(a){return function(b){return e[">>>"](b)(a)}};e["^>>"]=function(a){return function(b){return e[">>>"](j(a))(b)}};e[">>^"]=function(a){return function(b){return e[">>>"](a)(j(b))}};e["^<<"]=function(a){return function(b){return e[">>>"](b)(j(a))}};
133−e["<<^"]=function(a){return function(b){return e[">>>"](j(b))(a)}};c=a(0)(function(){return function(a){return 1+a}});return{$op:{">>>":e[">>>"],"<<<":e["<<<"],"^>>":e["^>>"],">>^":e[">>^"],"^<<":e["^<<"],"<<^":e["<<^"]},run:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=lift(fst)(foldp_(function(a){return function(b){a:{switch(b[0]){case "Tuple2":switch(b[2][0]){case "Automaton":b=b[2][1](a);break a}}throw"Non-exhaustive pattern match in case";}return b}})(a[1])(b));break a}throw"Non-exhaustive pattern match in case";
134−}return b}},step:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return b}},combine:d,pure:j,init:a,init_:k,count:c,draggable:function(a){return k(["Tuple2",f,a])(l)}}}();Elm.main=function(){return Elm.Automaton.main}}catch(k){Elm.main=function(){document.body.innerHTML=Elm.Text.monospace('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2><br/><span style="color:grey">Runtime Error in Automaton module:<br/>'+
135−k+"</span>");throw k;}}})();
libraries/Signal.elmnew file+36
@@ -0,0 +1,36 @@
1+
2+module Signal where
3+
4+import Either
5+import Time
6+import Native.Signal
7+
8+constant : a -> Signal a
9+
10+lift : (a -> b) -> Signal a -> Signal b
11+lift2 : (a -> b -> c) -> Signal a -> Signal b -> Signal c
12+lift3 : (a -> b -> c -> d) -> Signal a -> Signal b -> Signal c -> Signal d
13+lift4 : (a -> b -> c -> d -> e) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e
14+lift5 : (a -> b -> c -> d -> e -> f) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e -> Signal f
15+lift6 : (a -> b -> c -> d -> e -> f -> g) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e -> Signal f -> Signal g
16+lift7 : (a -> b -> c -> d -> e -> f -> g -> h) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e -> Signal f -> Signal g -> Signal h
17+lift8 : (a -> b -> c -> d -> e -> f -> g -> h -> i) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e -> Signal f -> Signal g -> Signal h -> Signal i
18+
19+foldp : (a -> b -> b) -> b -> Signal a -> Signal b
20+
21+merge : Signal a -> Signal a -> Signal a
22+merges : [Signal a] -> Signal a
23+mergeEither : Signal a -> Signal b -> Signal (Either a b)
24+
25+count : Signal a -> Signal Int
26+countIf : (a -> Bool) -> Signal a -> Signal Int
27+
28+keepIf : (a -> Bool) -> a -> Signal a -> Signal a
29+dropIf : (a -> Bool) -> a -> Signal a -> Signal a
30+keepWhen : Signal Bool -> a -> Signal a -> Signal a
31+dropWhen : Signal Bool -> a -> Signal a -> Signal a
32+dropRepeats : Signal a -> Signal a
33+
34+sampleOn : Signal a -> Signal b -> Signal b
35+
36+timestamp : Signal a -> Signal (Time, a)