diff --git a/dist/flocking-all.js b/dist/flocking-all.js
index 3679220a..53be0f2a 100644
--- a/dist/flocking-all.js
+++ b/dist/flocking-all.js
@@ -1,4 +1,4 @@
-/*! Flocking 0.1.0 (February 16, 2015), Copyright 2015 Colin Clark | flockingjs.org */
+/*! Flocking 0.1.0 (February 20, 2015), Copyright 2015 Colin Clark | flockingjs.org */
/*!
* jQuery JavaScript Library v2.1.1
@@ -20469,8 +20469,14 @@ var fluid = fluid || require("infusion"),
flock.interpolate.cubic = flock.interpolate.hermite;
- flock.warn = function (msg) {
- fluid.log(fluid.logLevel.WARN, msg);
+ flock.log = {
+ warn: function (msg) {
+ fluid.log(fluid.logLevel.WARN, msg);
+ },
+
+ debug: function (msg) {
+ fluid.log(fluid.logLevel.INFO, msg);
+ }
};
flock.fail = function (msg) {
@@ -20482,7 +20488,7 @@ var fluid = fluid || require("infusion"),
};
flock.pathParseError = function (root, path, token) {
- var msg = "Error parsing path: " + path + ". Segment '" + token +
+ var msg = "Error parsing path '" + path + "'. Segment '" + token +
"' could not be resolved. Root object was: " + fluid.prettyPrintJSON(root);
flock.fail(msg);
@@ -20531,8 +20537,8 @@ var fluid = fluid || require("infusion"),
root = root[prop];
type = typeof root;
if (type !== "object") {
- flock.fail("Error while setting a value at path + " + path +
- ". A non-container object was found at segment " + prop + ". Value: " + root);
+ flock.fail("Error while setting a value at path '" + path +
+ "'. A non-container object was found at segment '" + prop + "'. Value: " + root);
return;
}
@@ -20662,23 +20668,47 @@ var fluid = fluid || require("infusion"),
flock.input.getValuesForPathObject(root, path);
};
+ flock.input.resolveValue = function (root, path, val, target, inputName, previousInput, valueParser) {
+ // Check to see if the value is actually a "get expression"
+ // (i.e. an EL path wrapped in ${}) and resolve it if necessary.
+ if (typeof val === "string") {
+ var extracted = fluid.extractEL(val, flock.input.valueExpressionSpec);
+ if (extracted) {
+ var resolved = flock.input.getValueForPath(root, extracted);
+ if (resolved === undefined) {
+ flock.log.debug("The value expression '" + val + "' resolved to undefined. " +
+ "If this isn't expected, check to ensure that your path is valid.");
+ }
+
+ return resolved;
+ }
+ }
+
+ return flock.input.shouldExpand(inputName, target) && valueParser ?
+ valueParser(val, path, target, previousInput) : val;
+ };
+
+ flock.input.valueExpressionSpec = {
+ ELstyle: "${}"
+ };
+
flock.input.setValueForPath = function (root, path, val, baseTarget, valueParser) {
path = flock.input.expandPath(path);
var previousInput = flock.get(root, path),
lastDotIdx = path.lastIndexOf("."),
inputName = path.slice(lastDotIdx + 1),
- target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) : baseTarget,
- newInput = flock.input.shouldExpand(inputName, target) && valueParser ?
- valueParser(val, path, target, previousInput) : val;
+ target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) :
+ baseTarget,
+ resolvedVal = flock.input.resolveValue(root, path, val, target, inputName, previousInput, valueParser);
- flock.set(root, path, newInput);
+ flock.set(root, path, resolvedVal);
if (target && target.onInputChanged) {
target.onInputChanged(inputName);
}
- return newInput;
+ return resolvedVal;
};
flock.input.setValuesForPaths = function (root, valueMap, baseTarget, valueParser) {
@@ -30082,11 +30112,11 @@ var fluid = fluid || require("infusion"),
// TODO: Remove this warning when Safari and Android
// fix their MediaElementAudioSourceNode implementations.
if (flock.platform.browser.safari) {
- flock.warn("MediaElementSourceNode does not work on Safari. " +
+ flock.log.warn("MediaElementSourceNode does not work on Safari. " +
"For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 " +
"and https://bugs.webkit.org/show_bug.cgi?id=125031");
} else if (flock.platform.isAndroid) {
- flock.warn("MediaElementSourceNode does not work on Android. " +
+ flock.log.warn("MediaElementSourceNode does not work on Android. " +
"For more information, see https://code.google.com/p/chromium/issues/detail?id=419446");
}
};
diff --git a/dist/flocking-all.min.js b/dist/flocking-all.min.js
index 16ae4b6a..2c9305a1 100644
--- a/dist/flocking-all.min.js
+++ b/dist/flocking-all.min.js
@@ -1,4 +1,4 @@
-/*! Flocking 0.1.0 (February 16, 2015), Copyright 2015 Colin Clark | flockingjs.org */
+/*! Flocking 0.1.0 (February 20, 2015), Copyright 2015 Colin Clark | flockingjs.org */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=a.length,c=_.type(a);return"function"===c||_.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(_.isFunction(b))return _.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return _.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(hb.test(b))return _.filter(b,a,c);b=_.filter(b,a)}return _.grep(a,function(a){return U.call(b,a)>=0!==c})}function e(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function f(a){var b=ob[a]={};return _.each(a.match(nb)||[],function(a,c){b[c]=!0}),b}function g(){Z.removeEventListener("DOMContentLoaded",g,!1),a.removeEventListener("load",g,!1),_.ready()}function h(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=_.expando+Math.random()}function i(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(ub,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:tb.test(c)?_.parseJSON(c):c}catch(e){}sb.set(a,b,c)}else c=void 0;return c}function j(){return!0}function k(){return!1}function l(){try{return Z.activeElement}catch(a){}}function m(a,b){return _.nodeName(a,"table")&&_.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function n(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function o(a){var b=Kb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function p(a,b){for(var c=0,d=a.length;d>c;c++)rb.set(a[c],"globalEval",!b||rb.get(b[c],"globalEval"))}function q(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(rb.hasData(a)&&(f=rb.access(a),g=rb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)_.event.add(b,e,j[e][c])}sb.hasData(a)&&(h=sb.access(a),i=_.extend({},h),sb.set(b,i))}}function r(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&_.nodeName(a,b)?_.merge([a],c):c}function s(a,b){var c=b.nodeName.toLowerCase();"input"===c&&yb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function t(b,c){var d,e=_(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:_.css(e[0],"display");return e.detach(),f}function u(a){var b=Z,c=Ob[a];return c||(c=t(a,b),"none"!==c&&c||(Nb=(Nb||_("")).appendTo(b.documentElement),b=Nb[0].contentDocument,b.write(),b.close(),c=t(a,b),Nb.detach()),Ob[a]=c),c}function v(a,b,c){var d,e,f,g,h=a.style;return c=c||Rb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||_.contains(a.ownerDocument,a)||(g=_.style(a,b)),Qb.test(g)&&Pb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function w(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}function x(a,b){if(b in a)return b;for(var c=b[0].toUpperCase()+b.slice(1),d=b,e=Xb.length;e--;)if(b=Xb[e]+c,b in a)return b;return d}function y(a,b,c){var d=Tb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=_.css(a,c+wb[f],!0,e)),d?("content"===c&&(g-=_.css(a,"padding"+wb[f],!0,e)),"margin"!==c&&(g-=_.css(a,"border"+wb[f]+"Width",!0,e))):(g+=_.css(a,"padding"+wb[f],!0,e),"padding"!==c&&(g+=_.css(a,"border"+wb[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Rb(a),g="border-box"===_.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=v(a,b,f),(0>e||null==e)&&(e=a.style[b]),Qb.test(e))return e;d=g&&(Y.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=rb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&xb(d)&&(f[g]=rb.access(d,"olddisplay",u(d.nodeName)))):(e=xb(d),"none"===c&&e||rb.set(d,"olddisplay",e?c:_.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function C(a,b,c,d,e){return new C.prototype.init(a,b,c,d,e)}function D(){return setTimeout(function(){Yb=void 0}),Yb=_.now()}function E(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=wb[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function F(a,b,c){for(var d,e=(cc[b]||[]).concat(cc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function G(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},n=a.style,o=a.nodeType&&xb(a),p=rb.get(a,"fxshow");c.queue||(h=_._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,_.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],j=_.css(a,"display"),k="none"===j?rb.get(a,"olddisplay")||u(a.nodeName):j,"inline"===k&&"none"===_.css(a,"float")&&(n.display="inline-block")),c.overflow&&(n.overflow="hidden",l.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],$b.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(o?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;o=!0}m[d]=p&&p[d]||_.style(a,d)}else j=void 0;if(_.isEmptyObject(m))"inline"===("none"===j?u(a.nodeName):j)&&(n.display=j);else{p?"hidden"in p&&(o=p.hidden):p=rb.access(a,"fxshow",{}),f&&(p.hidden=!o),o?_(a).show():l.done(function(){_(a).hide()}),l.done(function(){var b;rb.remove(a,"fxshow");for(b in m)_.style(a,b,m[b])});for(d in m)g=F(o?p[d]:0,d,l),d in p||(p[d]=g.start,o&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function H(a,b){var c,d,e,f,g;for(c in a)if(d=_.camelCase(c),e=b[d],f=a[c],_.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=_.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function I(a,b,c){var d,e,f=0,g=bc.length,h=_.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Yb||D(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:_.extend({},b),opts:_.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Yb||D(),duration:c.duration,tweens:[],createTween:function(b,c){var d=_.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(H(k,j.opts.specialEasing);g>f;f++)if(d=bc[f].call(j,a,k,j.opts))return d;return _.map(k,F,j),_.isFunction(j.opts.start)&&j.opts.start.call(a,j),_.fx.timer(_.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function J(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(nb)||[];if(_.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function K(a,b,c,d){function e(h){var i;return f[h]=!0,_.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===vc;return e(b.dataTypes[0])||!f["*"]&&e("*")}function L(a,b){var c,d,e=_.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&_.extend(!0,a,d),a}function M(a,b,c){for(var d,e,f,g,h=a.contents,i=a.dataTypes;"*"===i[0];)i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function N(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];for(f=k.shift();f;)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}function O(a,b,c,d){var e;if(_.isArray(b))_.each(b,function(b,e){c||zc.test(a)?d(a,e):O(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==_.type(b))d(a,b);else for(e in b)O(a+"["+e+"]",b[e],c,d)}function P(a){return _.isWindow(a)?a:9===a.nodeType&&a.defaultView}var Q=[],R=Q.slice,S=Q.concat,T=Q.push,U=Q.indexOf,V={},W=V.toString,X=V.hasOwnProperty,Y={},Z=a.document,$="2.1.1",_=function(a,b){return new _.fn.init(a,b)},ab=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bb=/^-ms-/,cb=/-([\da-z])/gi,db=function(a,b){return b.toUpperCase()};_.fn=_.prototype={jquery:$,constructor:_,selector:"",length:0,toArray:function(){return R.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:R.call(this)},pushStack:function(a){var b=_.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return _.each(this,a,b)},map:function(a){return this.pushStack(_.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(R.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:T,sort:Q.sort,splice:Q.splice},_.extend=_.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||_.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(_.isPlainObject(d)||(e=_.isArray(d)))?(e?(e=!1,f=c&&_.isArray(c)?c:[]):f=c&&_.isPlainObject(c)?c:{},g[b]=_.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},_.extend({expando:"jQuery"+($+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===_.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!_.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==_.type(a)||a.nodeType||_.isWindow(a)?!1:a.constructor&&!X.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?V[W.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=_.trim(a),a&&(1===a.indexOf("use strict")?(b=Z.createElement("script"),b.text=a,Z.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(bb,"ms-").replace(cb,db)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(ab,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?_.merge(d,"string"==typeof a?[a]:a):T.call(d,a)),d},inArray:function(a,b,c){return null==b?-1:U.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&i.push(e);else for(f in a)e=b(a[f],f,d),null!=e&&i.push(e);return S.apply([],i)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),_.isFunction(a)?(d=R.call(arguments,2),e=function(){return a.apply(b||this,d.concat(R.call(arguments)))},e.guid=a.guid=a.guid||_.guid++,e):void 0},now:Date.now,support:Y}),_.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){V["[object "+b+"]"]=b.toLowerCase()});var eb=function(a){function b(a,b,c,d){var e,f,g,h,i,j,l,n,o,p;if((b?b.ownerDocument||b:O)!==G&&F(b),b=b||G,c=c||[],!a||"string"!=typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(I&&!d){if(e=sb.exec(a))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&M(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return _.apply(c,b.getElementsByTagName(a)),c;if((g=e[3])&&v.getElementsByClassName&&b.getElementsByClassName)return _.apply(c,b.getElementsByClassName(g)),c}if(v.qsa&&(!J||!J.test(a))){if(n=l=N,o=b,p=9===h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=z(a),(l=b.getAttribute("id"))?n=l.replace(ub,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=tb.test(a)&&k(b.parentNode)||b,p=j.join(",")}if(p)try{return _.apply(c,o.querySelectorAll(p)),c}catch(q){}finally{l||b.removeAttribute("id")}}}return B(a.replace(ib,"$1"),b,c,d)}function c(){function a(c,d){return b.push(c+" ")>w.cacheLength&&delete a[b.shift()],a[c+" "]=d}var b=[];return a}function d(a){return a[N]=!0,a}function e(a){var b=G.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function f(a,b){for(var c=a.split("|"),d=a.length;d--;)w.attrHandle[c[d]]=b}function g(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||W)-(~a.sourceIndex||W);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function h(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function i(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function j(a){return d(function(b){return b=+b,d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function k(a){return a&&typeof a.getElementsByTagName!==V&&a}function l(){}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=Q++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[P,f];if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e){if(i=b[N]||(b[N]={}),(h=i[d])&&h[0]===P&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,c,d){for(var e=0,f=c.length;f>e;e++)b(a,c[e],d);return d}function q(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function r(a,b,c,e,f,g){return e&&!e[N]&&(e=r(e)),f&&!f[N]&&(f=r(f,g)),d(function(d,g,h,i){var j,k,l,m=[],n=[],o=g.length,r=d||p(b||"*",h.nodeType?[h]:h,[]),s=!a||!d&&b?r:q(r,m,a,h,i),t=c?f||(d?a:o||e)?[]:g:s;if(c&&c(s,t,h,i),e)for(j=q(t,n),e(j,[],h,i),k=j.length;k--;)(l=j[k])&&(t[n[k]]=!(s[n[k]]=l));if(d){if(f||a){if(f){for(j=[],k=t.length;k--;)(l=t[k])&&j.push(s[k]=l);f(null,t=[],j,i)}for(k=t.length;k--;)(l=t[k])&&(j=f?bb.call(d,l):m[k])>-1&&(d[j]=!(g[j]=l))}}else t=q(t===g?t.splice(o,t.length):t),f?f(null,g,t,i):_.apply(g,t)})}function s(a){for(var b,c,d,e=a.length,f=w.relative[a[0].type],g=f||w.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return bb.call(b,a)>-1},g,!0),k=[function(a,c,d){return!f&&(d||c!==C)||((b=c).nodeType?i(a,c,d):j(a,c,d))}];e>h;h++)if(c=w.relative[a[h].type])k=[n(o(k),c)];else{if(c=w.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!w.relative[a[d].type];d++);return r(h>1&&o(k),h>1&&m(a.slice(0,h-1).concat({value:" "===a[h-2].type?"*":""})).replace(ib,"$1"),c,d>h&&s(a.slice(h,d)),e>d&&s(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function t(a,c){var e=c.length>0,f=a.length>0,g=function(d,g,h,i,j){var k,l,m,n=0,o="0",p=d&&[],r=[],s=C,t=d||f&&w.find.TAG("*",j),u=P+=null==s?1:Math.random()||.1,v=t.length;for(j&&(C=g!==G&&g);o!==v&&null!=(k=t[o]);o++){if(f&&k){for(l=0;m=a[l++];)if(m(k,g,h)){i.push(k);break}j&&(P=u)}e&&((k=!m&&k)&&n--,d&&p.push(k))}if(n+=o,e&&o!==n){for(l=0;m=c[l++];)m(p,r,g,h);if(d){if(n>0)for(;o--;)p[o]||r[o]||(r[o]=Z.call(i));r=q(r)}_.apply(i,r),j&&!d&&r.length>0&&n+c.length>1&&b.uniqueSort(i)}return j&&(P=u,C=s),p};return e?d(g):g}var u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+-new Date,O=a.document,P=0,Q=0,R=c(),S=c(),T=c(),U=function(a,b){return a===b&&(E=!0),0},V="undefined",W=1<<31,X={}.hasOwnProperty,Y=[],Z=Y.pop,$=Y.push,_=Y.push,ab=Y.slice,bb=Y.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},cb="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",db="[\\x20\\t\\r\\n\\f]",eb="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",fb=eb.replace("w","w#"),gb="\\["+db+"*("+eb+")(?:"+db+"*([*^$|!~]?=)"+db+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+fb+"))|)"+db+"*\\]",hb=":("+eb+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+gb+")*)|.*)\\)|)",ib=new RegExp("^"+db+"+|((?:^|[^\\\\])(?:\\\\.)*)"+db+"+$","g"),jb=new RegExp("^"+db+"*,"+db+"*"),kb=new RegExp("^"+db+"*([>+~]|"+db+")"+db+"*"),lb=new RegExp("="+db+"*([^\\]'\"]*?)"+db+"*\\]","g"),mb=new RegExp(hb),nb=new RegExp("^"+fb+"$"),ob={ID:new RegExp("^#("+eb+")"),CLASS:new RegExp("^\\.("+eb+")"),TAG:new RegExp("^("+eb.replace("w","w*")+")"),ATTR:new RegExp("^"+gb),PSEUDO:new RegExp("^"+hb),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+db+"*(even|odd|(([+-]|)(\\d*)n|)"+db+"*(?:([+-]|)"+db+"*(\\d+)|))"+db+"*\\)|)","i"),bool:new RegExp("^(?:"+cb+")$","i"),needsContext:new RegExp("^"+db+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+db+"*((?:-\\d)?\\d*)"+db+"*\\)|)(?=[^-]|$)","i")},pb=/^(?:input|select|textarea|button)$/i,qb=/^h\d$/i,rb=/^[^{]+\{\s*\[native \w/,sb=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tb=/[+~]/,ub=/'|\\/g,vb=new RegExp("\\\\([\\da-f]{1,6}"+db+"?|("+db+")|.)","ig"),wb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{_.apply(Y=ab.call(O.childNodes),O.childNodes),Y[O.childNodes.length].nodeType}catch(xb){_={apply:Y.length?function(a,b){$.apply(a,ab.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}v=b.support={},y=b.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},F=b.setDocument=function(a){var b,c=a?a.ownerDocument||a:O,d=c.defaultView;return c!==G&&9===c.nodeType&&c.documentElement?(G=c,H=c.documentElement,I=!y(c),d&&d!==d.top&&(d.addEventListener?d.addEventListener("unload",function(){F()},!1):d.attachEvent&&d.attachEvent("onunload",function(){F()})),v.attributes=e(function(a){return a.className="i",!a.getAttribute("className")}),v.getElementsByTagName=e(function(a){return a.appendChild(c.createComment("")),!a.getElementsByTagName("*").length}),v.getElementsByClassName=rb.test(c.getElementsByClassName)&&e(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),v.getById=e(function(a){return H.appendChild(a).id=N,!c.getElementsByName||!c.getElementsByName(N).length}),v.getById?(w.find.ID=function(a,b){if(typeof b.getElementById!==V&&I){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},w.filter.ID=function(a){var b=a.replace(vb,wb);return function(a){return a.getAttribute("id")===b}}):(delete w.find.ID,w.filter.ID=function(a){var b=a.replace(vb,wb);return function(a){var c=typeof a.getAttributeNode!==V&&a.getAttributeNode("id");return c&&c.value===b}}),w.find.TAG=v.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==V?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},w.find.CLASS=v.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==V&&I?b.getElementsByClassName(a):void 0},K=[],J=[],(v.qsa=rb.test(c.querySelectorAll))&&(e(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&J.push("[*^$]="+db+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||J.push("\\["+db+"*(?:value|"+cb+")"),a.querySelectorAll(":checked").length||J.push(":checked")}),e(function(a){var b=c.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&J.push("name"+db+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||J.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),J.push(",.*:")})),(v.matchesSelector=rb.test(L=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&e(function(a){v.disconnectedMatch=L.call(a,"div"),L.call(a,"[s!='']:x"),K.push("!=",hb)}),J=J.length&&new RegExp(J.join("|")),K=K.length&&new RegExp(K.join("|")),b=rb.test(H.compareDocumentPosition),M=b||rb.test(H.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},U=b?function(a,b){if(a===b)return E=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!v.sortDetached&&b.compareDocumentPosition(a)===d?a===c||a.ownerDocument===O&&M(O,a)?-1:b===c||b.ownerDocument===O&&M(O,b)?1:D?bb.call(D,a)-bb.call(D,b):0:4&d?-1:1)}:function(a,b){if(a===b)return E=!0,0;var d,e=0,f=a.parentNode,h=b.parentNode,i=[a],j=[b];if(!f||!h)return a===c?-1:b===c?1:f?-1:h?1:D?bb.call(D,a)-bb.call(D,b):0;if(f===h)return g(a,b);for(d=a;d=d.parentNode;)i.unshift(d);for(d=b;d=d.parentNode;)j.unshift(d);for(;i[e]===j[e];)e++;return e?g(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},c):G},b.matches=function(a,c){return b(a,null,null,c)},b.matchesSelector=function(a,c){if((a.ownerDocument||a)!==G&&F(a),c=c.replace(lb,"='$1']"),!(!v.matchesSelector||!I||K&&K.test(c)||J&&J.test(c)))try{var d=L.call(a,c);if(d||v.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return b(c,G,null,[a]).length>0},b.contains=function(a,b){return(a.ownerDocument||a)!==G&&F(a),M(a,b)},b.attr=function(a,b){(a.ownerDocument||a)!==G&&F(a);var c=w.attrHandle[b.toLowerCase()],d=c&&X.call(w.attrHandle,b.toLowerCase())?c(a,b,!I):void 0;return void 0!==d?d:v.attributes||!I?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null},b.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},b.uniqueSort=function(a){var b,c=[],d=0,e=0;if(E=!v.detectDuplicates,D=!v.sortStable&&a.slice(0),a.sort(U),E){for(;b=a[e++];)b===a[e]&&(d=c.push(e));for(;d--;)a.splice(c[d],1)}return D=null,a},x=b.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=x(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d++];)c+=x(b);return c},w=b.selectors={cacheLength:50,createPseudo:d,match:ob,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(vb,wb),a[3]=(a[3]||a[4]||a[5]||"").replace(vb,wb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return ob.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&mb.test(c)&&(b=z(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(vb,wb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|"+db+")"+a+"("+db+"|$)"))&&R(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==V&&a.getAttribute("class")||"")})},ATTR:function(a,c,d){return function(e){var f=b.attr(e,a);return null==f?"!="===c:c?(f+="","="===c?f===d:"!="===c?f!==d:"^="===c?d&&0===f.indexOf(d):"*="===c?d&&f.indexOf(d)>-1:"$="===c?d&&f.slice(-d.length)===d:"~="===c?(" "+f+" ").indexOf(d)>-1:"|="===c?f===d||f.slice(0,d.length+1)===d+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===P&&j[1],m=j[0]===P&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[P,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===P)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[P,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,c){var e,f=w.pseudos[a]||w.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return f[N]?f(c):f.length>1?(e=[a,a,"",c],w.setFilters.hasOwnProperty(a.toLowerCase())?d(function(a,b){for(var d,e=f(a,c),g=e.length;g--;)d=bb.call(a,e[g]),a[d]=!(b[d]=e[g])}):function(a){return f(a,0,e)}):f}},pseudos:{not:d(function(a){var b=[],c=[],e=A(a.replace(ib,"$1"));return e[N]?d(function(a,b,c,d){for(var f,g=e(a,null,d,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,d,f){return b[0]=a,e(b,null,f,c),!c.pop()}}),has:d(function(a){return function(c){return b(a,c).length>0}}),contains:d(function(a){return function(b){return(b.textContent||b.innerText||x(b)).indexOf(a)>-1}}),lang:d(function(a){return nb.test(a||"")||b.error("unsupported lang: "+a),a=a.replace(vb,wb).toLowerCase(),function(b){var c;do if(c=I?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===H},focus:function(a){return a===G.activeElement&&(!G.hasFocus||G.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return qb.test(a.nodeName)},input:function(a){return pb.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:j(function(){return[0]}),last:j(function(a,b){return[b-1]}),eq:j(function(a,b,c){return[0>c?c+b:c]}),even:j(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:j(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:j(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:j(function(a,b,c){for(var d=0>c?c+b:c;++d2&&"ID"===(g=f[0]).type&&v.getById&&9===b.nodeType&&I&&w.relative[f[1].type]){if(b=(w.find.ID(g.matches[0].replace(vb,wb),b)||[])[0],!b)return c;j&&(b=b.parentNode),a=a.slice(f.shift().value.length)}for(e=ob.needsContext.test(a)?0:f.length;e--&&(g=f[e],!w.relative[h=g.type]);)if((i=w.find[h])&&(d=i(g.matches[0].replace(vb,wb),tb.test(f[0].type)&&k(b.parentNode)||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return _.apply(c,d),c;break}}return(j||A(a,l))(d,b,!I,c,tb.test(a)&&k(b.parentNode)||b),c},v.sortStable=N.split("").sort(U).join("")===N,v.detectDuplicates=!!E,F(),v.sortDetached=e(function(a){return 1&a.compareDocumentPosition(G.createElement("div"))}),e(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||f("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),v.attributes&&e(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||f("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),e(function(a){return null==a.getAttribute("disabled")})||f(cb,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),b}(a);_.find=eb,_.expr=eb.selectors,_.expr[":"]=_.expr.pseudos,_.unique=eb.uniqueSort,_.text=eb.getText,_.isXMLDoc=eb.isXML,_.contains=eb.contains;var fb=_.expr.match.needsContext,gb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,hb=/^.[^:#\[\.,]*$/;_.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?_.find.matchesSelector(d,a)?[d]:[]:_.find.matches(a,_.grep(b,function(a){return 1===a.nodeType}))},_.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(_(a).filter(function(){for(b=0;c>b;b++)if(_.contains(e[b],this))return!0
}));for(b=0;c>b;b++)_.find(a,e[b],d);return d=this.pushStack(c>1?_.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(d(this,a||[],!1))},not:function(a){return this.pushStack(d(this,a||[],!0))},is:function(a){return!!d(this,"string"==typeof a&&fb.test(a)?_(a):a||[],!1).length}});var ib,jb=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,kb=_.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:jb.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||ib).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof _?b[0]:b,_.merge(this,_.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:Z,!0)),gb.test(c[1])&&_.isPlainObject(b))for(c in b)_.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=Z.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=Z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):_.isFunction(a)?"undefined"!=typeof ib.ready?ib.ready(a):a(_):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),_.makeArray(a,this))};kb.prototype=_.fn,ib=_(Z);var lb=/^(?:parents|prev(?:Until|All))/,mb={children:!0,contents:!0,next:!0,prev:!0};_.extend({dir:function(a,b,c){for(var d=[],e=void 0!==c;(a=a[b])&&9!==a.nodeType;)if(1===a.nodeType){if(e&&_(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),_.fn.extend({has:function(a){var b=_(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(_.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=fb.test(a)||"string"!=typeof a?_(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&_.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?_.unique(f):f)},index:function(a){return a?"string"==typeof a?U.call(_(a),this[0]):U.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(_.unique(_.merge(this.get(),_(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),_.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return _.dir(a,"parentNode")},parentsUntil:function(a,b,c){return _.dir(a,"parentNode",c)},next:function(a){return e(a,"nextSibling")},prev:function(a){return e(a,"previousSibling")},nextAll:function(a){return _.dir(a,"nextSibling")},prevAll:function(a){return _.dir(a,"previousSibling")},nextUntil:function(a,b,c){return _.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return _.dir(a,"previousSibling",c)},siblings:function(a){return _.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return _.sibling(a.firstChild)},contents:function(a){return a.contentDocument||_.merge([],a.childNodes)}},function(a,b){_.fn[a]=function(c,d){var e=_.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=_.filter(d,e)),this.length>1&&(mb[a]||_.unique(e),lb.test(a)&&e.reverse()),this.pushStack(e)}});var nb=/\S+/g,ob={};_.Callbacks=function(a){a="string"==typeof a?ob[a]||f(a):_.extend({},a);var b,c,d,e,g,h,i=[],j=!a.once&&[],k=function(f){for(b=a.memory&&f,c=!0,h=e||0,e=0,g=i.length,d=!0;i&&g>h;h++)if(i[h].apply(f[0],f[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,i&&(j?j.length&&k(j.shift()):b?i=[]:l.disable())},l={add:function(){if(i){var c=i.length;!function f(b){_.each(b,function(b,c){var d=_.type(c);"function"===d?a.unique&&l.has(c)||i.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),d?g=i.length:b&&(e=c,k(b))}return this},remove:function(){return i&&_.each(arguments,function(a,b){for(var c;(c=_.inArray(b,i,c))>-1;)i.splice(c,1),d&&(g>=c&&g--,h>=c&&h--)}),this},has:function(a){return a?_.inArray(a,i)>-1:!(!i||!i.length)},empty:function(){return i=[],g=0,this},disable:function(){return i=j=b=void 0,this},disabled:function(){return!i},lock:function(){return j=void 0,b||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return!i||c&&!j||(b=b||[],b=[a,b.slice?b.slice():b],d?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!c}};return l},_.extend({Deferred:function(a){var b=[["resolve","done",_.Callbacks("once memory"),"resolved"],["reject","fail",_.Callbacks("once memory"),"rejected"],["notify","progress",_.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return _.Deferred(function(c){_.each(b,function(b,f){var g=_.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&_.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?_.extend(a,d):d}},e={};return d.pipe=d.then,_.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=R.call(arguments),g=f.length,h=1!==g||a&&_.isFunction(a.promise)?g:0,i=1===h?a:_.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?R.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&_.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}});var pb;_.fn.ready=function(a){return _.ready.promise().done(a),this},_.extend({isReady:!1,readyWait:1,holdReady:function(a){a?_.readyWait++:_.ready(!0)},ready:function(a){(a===!0?--_.readyWait:_.isReady)||(_.isReady=!0,a!==!0&&--_.readyWait>0||(pb.resolveWith(Z,[_]),_.fn.triggerHandler&&(_(Z).triggerHandler("ready"),_(Z).off("ready"))))}}),_.ready.promise=function(b){return pb||(pb=_.Deferred(),"complete"===Z.readyState?setTimeout(_.ready):(Z.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1))),pb.promise(b)},_.ready.promise();var qb=_.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===_.type(c)){e=!0;for(h in c)_.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,_.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(_(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};_.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType},h.uid=1,h.accepts=_.acceptData,h.prototype={key:function(a){if(!h.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=h.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,_.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(_.isEmptyObject(f))_.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,_.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{_.isArray(b)?d=b.concat(b.map(_.camelCase)):(e=_.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(nb)||[])),c=d.length;for(;c--;)delete g[d[c]]}},hasData:function(a){return!_.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var rb=new h,sb=new h,tb=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ub=/([A-Z])/g;_.extend({hasData:function(a){return sb.hasData(a)||rb.hasData(a)},data:function(a,b,c){return sb.access(a,b,c)},removeData:function(a,b){sb.remove(a,b)},_data:function(a,b,c){return rb.access(a,b,c)},_removeData:function(a,b){rb.remove(a,b)}}),_.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=sb.get(f),1===f.nodeType&&!rb.get(f,"hasDataAttrs"))){for(c=g.length;c--;)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=_.camelCase(d.slice(5)),i(f,d,e[d])));rb.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){sb.set(this,a)}):qb(this,function(b){var c,d=_.camelCase(a);if(f&&void 0===b){if(c=sb.get(f,a),void 0!==c)return c;if(c=sb.get(f,d),void 0!==c)return c;if(c=i(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=sb.get(this,d);sb.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&sb.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){sb.remove(this,a)})}}),_.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=rb.get(a,b),c&&(!d||_.isArray(c)?d=rb.access(a,b,_.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=_.queue(a,b),d=c.length,e=c.shift(),f=_._queueHooks(a,b),g=function(){_.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return rb.get(a,c)||rb.access(a,c,{empty:_.Callbacks("once memory").add(function(){rb.remove(a,[b+"queue",c])})})}}),_.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",Y.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var zb="undefined";Y.focusinBubbles="onfocusin"in a;var Ab=/^key/,Bb=/^(?:mouse|pointer|contextmenu)|click/,Cb=/^(?:focusinfocus|focusoutblur)$/,Db=/^([^.]*)(?:\.(.+)|)$/;_.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=rb.get(a);if(q)for(c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=_.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return typeof _!==zb&&_.event.triggered!==b.type?_.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(nb)||[""],j=b.length;j--;)h=Db.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=_.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=_.event.special[n]||{},k=_.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&_.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),_.event.global[n]=!0)},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=rb.hasData(a)&&rb.get(a);if(q&&(i=q.events)){for(b=(b||"").match(nb)||[""],j=b.length;j--;)if(h=Db.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=_.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;f--;)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||_.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)_.event.remove(a,n+b[j],c,d,!0);_.isEmptyObject(i)&&(delete q.handle,rb.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,j,k,l,m=[d||Z],n=X.call(b,"type")?b.type:b,o=X.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||Z,3!==d.nodeType&&8!==d.nodeType&&!Cb.test(n+_.event.triggered)&&(n.indexOf(".")>=0&&(o=n.split("."),n=o.shift(),o.sort()),j=n.indexOf(":")<0&&"on"+n,b=b[_.expando]?b:new _.Event(n,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=o.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:_.makeArray(c,[b]),l=_.event.special[n]||{},e||!l.trigger||l.trigger.apply(d,c)!==!1)){if(!e&&!l.noBubble&&!_.isWindow(d)){for(i=l.delegateType||n,Cb.test(i+n)||(g=g.parentNode);g;g=g.parentNode)m.push(g),h=g;h===(d.ownerDocument||Z)&&m.push(h.defaultView||h.parentWindow||a)}for(f=0;(g=m[f++])&&!b.isPropagationStopped();)b.type=f>1?i:l.bindType||n,k=(rb.get(g,"events")||{})[b.type]&&rb.get(g,"handle"),k&&k.apply(g,c),k=j&&g[j],k&&k.apply&&_.acceptData(g)&&(b.result=k.apply(g,c),b.result===!1&&b.preventDefault());return b.type=n,e||b.isDefaultPrevented()||l._default&&l._default.apply(m.pop(),c)!==!1||!_.acceptData(d)||j&&_.isFunction(d[n])&&!_.isWindow(d)&&(h=d[j],h&&(d[j]=null),_.event.triggered=n,d[n](),_.event.triggered=void 0,h&&(d[j]=h)),b.result}},dispatch:function(a){a=_.event.fix(a);var b,c,d,e,f,g=[],h=R.call(arguments),i=(rb.get(this,"events")||{})[a.type]||[],j=_.event.special[a.type]||{};if(h[0]=a,a.delegateTarget=this,!j.preDispatch||j.preDispatch.call(this,a)!==!1){for(g=_.event.handlers.call(this,a,i),b=0;(e=g[b++])&&!a.isPropagationStopped();)for(a.currentTarget=e.elem,c=0;(f=e.handlers[c++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(f.namespace))&&(a.handleObj=f,a.data=f.data,d=((_.event.special[f.origType]||{}).handle||f.handler).apply(e.elem,h),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return j.postDispatch&&j.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?_(e,this).index(i)>=0:_.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,Fb=/<([\w:]+)/,Gb=/<|?\w+;/,Hb=/<(?:script|style|link)/i,Ib=/checked\s*(?:[^=]|=\s*.checked.)/i,Jb=/^$|\/(?:java|ecma)script/i,Kb=/^true\/(.*)/,Lb=/^\s*\s*$/g,Mb={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};Mb.optgroup=Mb.option,Mb.tbody=Mb.tfoot=Mb.colgroup=Mb.caption=Mb.thead,Mb.th=Mb.td,_.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=_.contains(a.ownerDocument,a);if(!(Y.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||_.isXMLDoc(a)))for(g=r(h),f=r(a),d=0,e=f.length;e>d;d++)s(f[d],g[d]);if(b)if(c)for(f=f||r(a),g=g||r(h),d=0,e=f.length;e>d;d++)q(f[d],g[d]);else q(a,h);return g=r(h,"script"),g.length>0&&p(g,!i&&r(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===_.type(e))_.merge(l,e.nodeType?[e]:e);else if(Gb.test(e)){for(f=f||k.appendChild(b.createElement("div")),g=(Fb.exec(e)||["",""])[1].toLowerCase(),h=Mb[g]||Mb._default,f.innerHTML=h[1]+e.replace(Eb,"<$1>$2>")+h[2],j=h[0];j--;)f=f.lastChild;_.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));for(k.textContent="",m=0;e=l[m++];)if((!d||-1===_.inArray(e,d))&&(i=_.contains(e.ownerDocument,e),f=r(k.appendChild(e),"script"),i&&p(f),c))for(j=0;e=f[j++];)Jb.test(e.type||"")&&c.push(e);return k},cleanData:function(a){for(var b,c,d,e,f=_.event.special,g=0;void 0!==(c=a[g]);g++){if(_.acceptData(c)&&(e=c[rb.expando],e&&(b=rb.cache[e]))){if(b.events)for(d in b.events)f[d]?_.event.remove(c,d):_.removeEvent(c,d,b.handle);rb.cache[e]&&delete rb.cache[e]}delete sb.cache[c[sb.expando]]}}}),_.fn.extend({text:function(a){return qb(this,function(a){return void 0===a?_.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?_.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||_.cleanData(r(c)),c.parentNode&&(b&&_.contains(c.ownerDocument,c)&&p(r(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(_.cleanData(r(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return _.clone(this,a,b)})},html:function(a){return qb(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Hb.test(a)&&!Mb[(Fb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Eb,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(_.cleanData(r(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,_.cleanData(r(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=S.apply([],a);var c,d,e,f,g,h,i=0,j=this.length,k=this,l=j-1,m=a[0],p=_.isFunction(m);if(p||j>1&&"string"==typeof m&&!Y.checkClone&&Ib.test(m))return this.each(function(c){var d=k.eq(c);p&&(a[0]=m.call(this,c,d.html())),d.domManip(a,b)});if(j&&(c=_.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(e=_.map(r(c,"script"),n),f=e.length;j>i;i++)g=c,i!==l&&(g=_.clone(g,!0,!0),f&&_.merge(e,r(g,"script"))),b.call(this[i],g,i);if(f)for(h=e[e.length-1].ownerDocument,_.map(e,o),i=0;f>i;i++)g=e[i],Jb.test(g.type||"")&&!rb.access(g,"globalEval")&&_.contains(h,g)&&(g.src?_._evalUrl&&_._evalUrl(g.src):_.globalEval(g.textContent.replace(Lb,"")))}return this}}),_.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){_.fn[a]=function(a){for(var c,d=[],e=_(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),_(e[g])[b](c),T.apply(d,c.get());return this.pushStack(d)}});var Nb,Ob={},Pb=/^margin/,Qb=new RegExp("^("+vb+")(?!px)[a-z%]+$","i"),Rb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};!function(){function b(){g.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",g.innerHTML="",e.appendChild(f);var b=a.getComputedStyle(g,null);c="1%"!==b.top,d="4px"===b.width,e.removeChild(f)}var c,d,e=Z.documentElement,f=Z.createElement("div"),g=Z.createElement("div");g.style&&(g.style.backgroundClip="content-box",g.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===g.style.backgroundClip,f.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",f.appendChild(g),a.getComputedStyle&&_.extend(Y,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return null==d&&b(),d},reliableMarginRight:function(){var b,c=g.appendChild(Z.createElement("div"));return c.style.cssText=g.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",g.style.width="1px",e.appendChild(f),b=!parseFloat(a.getComputedStyle(c,null).marginRight),e.removeChild(f),b}}))}(),_.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Sb=/^(none|table(?!-c[ea]).+)/,Tb=new RegExp("^("+vb+")(.*)$","i"),Ub=new RegExp("^([+-])=("+vb+")","i"),Vb={position:"absolute",visibility:"hidden",display:"block"},Wb={letterSpacing:"0",fontWeight:"400"},Xb=["Webkit","O","Moz","ms"];_.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=v(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=_.camelCase(b),i=a.style;return b=_.cssProps[h]||(_.cssProps[h]=x(i,h)),g=_.cssHooks[b]||_.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ub.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(_.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||_.cssNumber[h]||(c+="px"),Y.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=_.camelCase(b);return b=_.cssProps[h]||(_.cssProps[h]=x(a.style,h)),g=_.cssHooks[b]||_.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=v(a,b,d)),"normal"===e&&b in Wb&&(e=Wb[b]),""===c||c?(f=parseFloat(e),c===!0||_.isNumeric(f)?f||0:e):e}}),_.each(["height","width"],function(a,b){_.cssHooks[b]={get:function(a,c,d){return c?Sb.test(_.css(a,"display"))&&0===a.offsetWidth?_.swap(a,Vb,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&Rb(a);return y(a,c,d?z(a,b,d,"border-box"===_.css(a,"boxSizing",!1,e),e):0)}}}),_.cssHooks.marginRight=w(Y.reliableMarginRight,function(a,b){return b?_.swap(a,{display:"inline-block"},v,[a,"marginRight"]):void 0}),_.each({margin:"",padding:"",border:"Width"},function(a,b){_.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+wb[d]+b]=f[d]||f[d-2]||f[0];return e}},Pb.test(a)||(_.cssHooks[a+b].set=y)}),_.fn.extend({css:function(a,b){return qb(this,function(a,b,c){var d,e,f={},g=0;if(_.isArray(b)){for(d=Rb(a),e=b.length;e>g;g++)f[b[g]]=_.css(a,b[g],!1,d);return f}return void 0!==c?_.style(a,b,c):_.css(a,b)},a,b,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){xb(this)?_(this).show():_(this).hide()})}}),_.Tween=C,C.prototype={constructor:C,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(_.cssNumber[c]?"":"px")},cur:function(){var a=C.propHooks[this.prop];return a&&a.get?a.get(this):C.propHooks._default.get(this)},run:function(a){var b,c=C.propHooks[this.prop];return this.pos=b=this.options.duration?_.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):C.propHooks._default.set(this),this}},C.prototype.init.prototype=C.prototype,C.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=_.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){_.fx.step[a.prop]?_.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[_.cssProps[a.prop]]||_.cssHooks[a.prop])?_.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},C.propHooks.scrollTop=C.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},_.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},_.fx=C.prototype.init,_.fx.step={};var Yb,Zb,$b=/^(?:toggle|show|hide)$/,_b=new RegExp("^(?:([+-])=|)("+vb+")([a-z%]*)$","i"),ac=/queueHooks$/,bc=[G],cc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=_b.exec(b),f=e&&e[3]||(_.cssNumber[a]?"":"px"),g=(_.cssNumber[a]||"px"!==f&&+d)&&_b.exec(_.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,_.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};_.Animation=_.extend(I,{tweener:function(a,b){_.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],cc[c]=cc[c]||[],cc[c].unshift(b)},prefilter:function(a,b){b?bc.unshift(a):bc.push(a)}}),_.speed=function(a,b,c){var d=a&&"object"==typeof a?_.extend({},a):{complete:c||!c&&b||_.isFunction(a)&&a,duration:a,easing:c&&b||b&&!_.isFunction(b)&&b};return d.duration=_.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in _.fx.speeds?_.fx.speeds[d.duration]:_.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){_.isFunction(d.old)&&d.old.call(this),d.queue&&_.dequeue(this,d.queue)},d},_.fn.extend({fadeTo:function(a,b,c,d){return this.filter(xb).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=_.isEmptyObject(a),f=_.speed(b,c,d),g=function(){var b=I(this,_.extend({},a),f);(e||rb.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=_.timers,g=rb.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ac.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&_.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=rb.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=_.timers,g=d?d.length:0;for(c.finish=!0,_.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),_.each(["toggle","show","hide"],function(a,b){var c=_.fn[b];
@@ -7,8 +7,8 @@ var f=g.byId[d],i=f&&f.softNamespace;c=c||f&&f.namespace||d,delete g.byId[d],i?b
var i=b.remove_if(e,function(a){return"{"===a.charAt(0)&&!b.contains(f,a)},[]);return f.push.apply(f,i),i=b.expandDynamicGrades(a,c,e,i),g.push.apply(g,i),i},b.computeDynamicGrades=function(a,c,d){delete a.options.gradeNames;var e=b.driveStrategy(a.options,"gradeNames",d),f=b.findMergeBlocks(c.mergeOptions.mergeBlocks,"defaults")[0],g=b.remove_if(e,function(a){return"{"===a.charAt(0)||!b.hasGrade(f.target,a)},[]),h=b.expandDynamicGrades(a,c,e,g);if(0!==h.length){var i;do i=b.collectDynamicGrades(a,c,f,e,g,h);while(0!==i.length)}c.collectedClearer&&(c.collectedClearer(),delete c.collectedClearer)},b.computeDynamicComponentKey=function(a,b){return a+(0===b?"":"-"+b)},b.registerDynamicRecord=function(a,c,d,e,f){var g=b.computeDynamicComponentKey(c,d),h=b.copy(e);return delete h[f],b.set(a.options,["components",g],h),g},b.computeDynamicComponents=function(a,c){var d=b.shadowForComponent(a),e=d.subcomponentLocal={},f=b.driveStrategy(a.options,"dynamicComponents",c.strategy);b.each(f,function(c,f){if(c.sources||c.createOnEvent||b.fail("Cannot process dynamicComponents record ",c,' without a "sources" or "createOnEvent" entry'),c.sources){var g=b.expandOptions(c.sources,a);b.each(g,function(d,g){var h=b.registerDynamicRecord(a,f,g,c,"sources");e[h]={source:d,sourcePath:g}})}else if(c.createOnEvent){var h=b.event.expandOneEvent(a,c.createOnEvent);b.set(d,["dynamicComponentCount",f],0);var i=function(){var g=b.registerDynamicRecord(a,f,d.dynamicComponentCount[f]++,c,"createOnEvent");e[g]={arguments:b.makeArray(arguments)},b.initDependent(a,g)};h.addListener(i),b.recordListener(h,i,d)}})},b.computeComponentAccessor=function(a){var c=b.shadowForComponent(a),d=a.options,e=c.mergeOptions.strategy,f=b.mountStrategy(["options"],d,e);c.invokerStrategy=b.recordStrategy(a,d,e,"invokers",b.invokerFromRecord),c.eventStrategyBlock=b.recordStrategy(a,d,e,"events",b.eventFromRecord,["events"]);var g=b.mountStrategy(["events"],a,c.eventStrategyBlock.strategy,["events"]);return c.memberStrategy=b.recordStrategy(a,d,e,"members",b.memberFromRecord),c.getConfig={strategies:[b.model.funcResolverStrategy,b.makeGingerStrategy(a),f,c.invokerStrategy.strategy,c.memberStrategy.strategy,g]},b.computeDynamicGrades(a,c,e,c.mergeOptions.mergeBlocks),b.distributeOptions(a,e),c.getConfig},b.shadowForComponent=function(a){var c=b.getInstantiator(a);return c&&a?c.idToShadow[a.id]:null},b.getForComponent=function(a,c){var d=b.shadowForComponent(a),e=d?d.getConfig:void 0;return b.get(a,c,e)},b.makeGingerStrategy=function(a){var c=b.getInstantiator(a);return function(a,d,e,f){var g=a[d];if(g===b.inEvaluationMarker&&e===f.length&&b.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+d+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application'),e>1)return g;if(void 0===g&&a.hasOwnProperty(d))return b.NO_VALUE;if(void 0===g){var h=c.idToShadow[a.id].path,i=b.composePath(h,d);g=c.pathToComponent[i]}return void 0===g&&b.getForComponent(a,["options","components",d])&&(b.initDependent(a,d),g=a[d]),g}},b.filterBuiltinGrades=function(a){return b.remove_if(b.makeArray(a),function(a){return/^(autoInit|fluid.littleComponent|fluid.modelComponent|fluid.eventedComponent|fluid.viewComponent|fluid.typeFount)$/.test(a)})},b.dumpGradeNames=function(a){return a.options&&a.options.gradeNames?" gradeNames: "+JSON.stringify(b.filterBuiltinGrades(a.options.gradeNames)):""},b.dumpThat=function(a){return'{ typeName: "'+a.typeName+'"'+b.dumpGradeNames(a)+" id: "+a.id+"}"},b.dumpThatStack=function(a,c){var d=b.transform(a,function(a){var d=c.idToPath(a.id);return b.dumpThat(a)+(d?" - path: "+d:"")});return d.join("\n")},b.resolveContext=function(a,c){var d=b.getInstantiator(c);if("instantiator"===a)return d;if("that"===a)return c;var f,g=d.getFullStack(c);return e(d,g,function(c,d){var e=b.shadowForComponent(c);return a===d||e&&e.contextHash&&e.contextHash[a]||a===c.typeName||a===c.nickName?(f=c,!0):b.getForComponent(c,["options","components",a,"type"])&&!c[a]?(f=b.getForComponent(c,a),!0):void 0}),f};var f=/^(arguments|options|container|source|sourcePath|change)$/;b.makeStackFetcher=function(a,c){var d=function(d){a&&a.destroy===b.destroyedMarker&&b.fail("Cannot resolve reference "+b.renderContextReference(d)+" from component "+b.dumpThat(a)+" which has been destroyed");var e=d.context;if(c&&f.test(e)){var g=b.get(c[e],d.path);return"arguments"===e||"source"===e||"sourcePath"===e||"change"===e?g:{marker:"options"===e?b.EXPAND:b.EXPAND_NOW,value:g}}var h=b.resolveContext(e,a);if(!h&&""!==d.path){var i=b.renderContextReference(d);b.fail("Failed to resolve reference "+i+" - could not match context with name "+e+" from component "+b.dumpThat(a),a)}return b.getForComponent(h,d.path)};return d},b.makeStackResolverOptions=function(c,d){return a.extend(b.copy(b.rawDefaults("fluid.makeExpandOptions")),{fetcher:b.makeStackFetcher(c,d),contextThat:c})},b.clearListeners=function(a){b.each(a.listeners,function(a){a.event.removeListener(a.listener)}),delete a.listeners},b.recordListener=function(a,b,c){if(a.ownerId!==c.that.id){var d=c.listeners;d||(d=c.listeners=[]),d.push({event:a,listener:b})}};var g={};b.instantiator=function(a){function c(a,c,e){if(e){g[a.id]=d;var f=d.idToShadow[a.id]={};f.that=a,f.path=c}d.pathToComponent[c]&&b.fail("Error during instantiation - path "+c+" which has just created component "+b.dumpThat(a)+" has already been used for component "+b.dumpThat(d.pathToComponent[c])+" - this is a circular instantiation or other oversight. Please clear the component using instantiator.clearComponent() before reusing the path."),d.pathToComponent[c]=a}var d={id:b.allocateGuid(),free:a,nickName:"instantiator",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:b.composePath};return d.idToPath=function(a){var b=d.idToShadow[a];return b?b.path:""},d.getThatStack=function(a){var c=d.idToShadow[a.id];if(c){var e=c.path,f=b.model.parseEL(e),g=b.transform(f,function(a,c){var e=b.model.composeSegments.apply(null,f.slice(0,c+1));return d.pathToComponent[e]}),h=d.pathToComponent[""];return h&&g.unshift(h),g}return[a]},d.getEnvironmentalStack=function(){var c=[b.staticEnvironment];return a||c.push(b.globalThreadLocal()),c},d.getFullStack=function(a){var b=a?d.getThatStack(a):[];return d.getEnvironmentalStack().concat(b)},d.recordRoot=function(a){a&&a.id&&!d.pathToComponent[""]&&c(a,"",!0)},d.recordKnownComponent=function(a,b,e,f){var g=d.idToShadow[a.id].path,h=d.composePath(g,e);c(b,h,f)},d.clearComponent=function(a,c,e,f,h,i){var j=d.idToShadow[a.id].path;f=f||{flat:!0,instantiator:d},e=e||a[c],i=i||j,void 0===i&&b.fail("Cannot clear component "+c+" from component ",a," which was not created by this instantiator"),b.fireEvent(e,"events.onClear",[e,c,a]);var k=d.composePath(i,c),l=d.idToShadow[e.id];l&&l.path===k&&(b.doDestroy(e,c,a),b.clearListeners(l),b.visitComponentChildren(e,function(a,b,c,g){d.clearComponent(e,b,null,f,!0,g)},f,k),b.fireEvent(e,"events.afterDestroy",[e,c,a]),delete d.idToShadow[e.id],delete g[e.id]),delete d.pathToComponent[k],h||delete a[c]},d},b.freeInstantiator=b.instantiator(!0),b.getInstantiator=function(a){return a&&g[a.id]||b.freeInstantiator},b.expandOptions=function(a,c,d,e,f){if(!a)return a;b.pushActivity("expandOptions","expanding options %args for component %that ",{that:c,args:a});var g=b.makeStackResolverOptions(c,e);g.mergePolicy=d,g.freeRoot=f&&f.freeRoot;var h=f&&f.defer?b.makeExpandOptions(a,g):b.expand(a,g);return b.popActivity(),h},b.localRecordExpected=["type","options","args","mergeOptions","createOnEvent","priority","recordType"],b.checkComponentRecord=function(a,c){var d=b.arrayToHash(b.localRecordExpected);b.each(a&&a.argumentMap,function(a,b){d[b]=!0}),b.each(c,function(a,c){d[c]||b.fail('Probable error in subcomponent record - key "'+c+'" found, where the only legal options are '+b.keys(d).join(", "))})},b.pushDemands=function(a,c){function d(b){b.recordType="demands",b.priority=f++,a.push(b)}function e(a){d({options:a})}c=b.makeArray(c);for(var f=b.mergeRecordTypes.demands,g=0;g0&&(p[b]=p.arguments[a]),void 0!==d[b]&&void 0===p[b]&&(p[b]=d[b]),"options"!==b)for(var c=0;c0&&(r.user={options:p.options}),u[q]={marker:b.EXPAND,localRecord:o,mergeRecords:r,instantiator:b.getInstantiator(c),parentThat:c,memberName:f.memberName}):u[q]=b.expand(v,s),u[q]&&b.isMarker(u[q].marker,b.EXPAND_NOW)&&(u[q]=b.expand(u[q].value,s))}else u=e?e:[];var x={args:u,preExpand:g,funcName:d.funcName};return x},b.fabricateDestroyMethod=function(a,b,c,d){return function(){c.clearComponent(a,b,d)}},b.initDependent=function(a,c,d){if(!a[c]){d=d||[];var e=a.options.components[c];b.pushActivity("initDependent",'instantiating dependent component with name "%name" with record %record as child of %parent',{name:c,record:e,parent:a});var f,h=g[a.id];if("string"==typeof e)f=b.expandOptions(e,a),h.recordKnownComponent(a,f,c,!1);else if(e.type){var i=b.expandOptions(e.type,a);i||b.fail("Error in subcomponent record: ",e.type," could not be resolved to a type for component ",c," of parent ",a);var j=b.resolveDemands(a,[i,c],d,{componentRecord:e,memberName:c});f=b.initSubcomponentImpl(a,{type:j.funcName},j.args);var k=h.composePath(h.idToPath(a.id),c),l=h.pathToComponent[k];l&&l!==f&&h.clearComponent(a,c,l),f&&f.typeName&&f.id&&f!==l&&h.recordKnownComponent(a,f,c,!0),f.destroy=b.fabricateDestroyMethod(a,c,h,f)}else b.fail("Unrecognised material in place of subcomponent "+c+' - no "type" field found');return a[c]=f,b.fireEvent(f,"events.onAttach",[f,c,a]),b.popActivity(),f}},b.bindDeferredComponent=function(a,c,d){var e=b.makeArray(d.createOnEvent);b.each(e,function(e){var f="{"===e.charAt(0)?b.expandOptions(e,a):a.events[e];f&&f.addListener||b.fail("Error instantiating createOnEvent component with name "+c+" of parent ",a," since event specification "+e+" could not be expanded to an event - got ",f),f.addListener(function(){if(b.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:c,that:a,eventName:e}),a[c]){var d=g[a.id];d.clearComponent(a,c)}b.initDependent(a,c),b.popActivity()},null,null,d.priority)})},b.priorityForComponent=function(a){return a.priority?a.priority:"fluid.typeFount"===a.type||b.hasGrade(b.defaults(a.type),"fluid.typeFount")?"first":void 0},b.initDependents=function(a){b.pushActivity("initDependents","instantiating dependent components for component %that",{that:a});var c=b.shadowForComponent(a);c.memberStrategy.initter();var d=a.options,e=d.components||{},f={};b.each(e,function(c,d){if(c.createOnEvent)b.bindDeferredComponent(a,d,c);else{var e=b.priorityForComponent(c);f[d]={key:d,priority:b.event.mapPriority(e,0)}}});var g=b.event.sortListeners(f);b.each(g,function(c){b.initDependent(a,c.key)}),c.invokerStrategy.initter(),b.popActivity()};var j={},k=!1;b.setDemandLogging=function(a){k=a},b.isDemandLogging=function(){return k&&b.isLogging()},b.demands=function(a,d,e){var f=b.makeArray(d).sort();if(!e)return c(a,f);if(e.length&&(e={args:e}),b.getCallerInfo&&b.isDemandLogging()){var g=b.getCallerInfo(5);g&&(e.registeredFrom=g)}e.demandId=b.allocateGuid();var h=j[a];h||(h=[],j[a]=h),h.push({contexts:f,spec:e})},b.compareDemands=function(a,b){return b.intersect-a.intersect},b.locateAllDemands=function(a,c){var d=b.isDemandLogging(c);d&&b.log("Resolving demands for function names ",c," in context of "+(a?"component "+a.typeName:"no component"));var f={},g=[],h=b.getInstantiator(a),i=h.getFullStack(a);e(h,i,function(a,c,d,e,h){f[a.typeName]=h;var i=b.makeArray(b.get(a,["options","gradeNames"]));b.each(i,function(a){f[a]=h}),g.push(a)}),d&&b.log("Components in scope for resolution:\n"+b.dumpThatStack(g,h));for(var k=[],l=0;l=p?"intersect":"uncess"]+=2}0===o.contexts.length&&q.intersect++,0===q.uncess&&k.push(q)}return k.sort(b.compareDemands),k},b.locateDemands=function(a,c){var d=b.locateAllDemands(a,c),e=b.getMembers(d,["spec","spec"]);return b.isDemandLogging(c)&&(e.length?b.log("Located "+d.length+" potential match"+(1===d.length?"":"es")+", selected best match with "+d[0].intersect+" matched context names: ",e):b.log("No matches found for demands, using direct implementation")),e},b.determineDemands=function(c,d){d=b.makeArray(d);var e=d[0],f=b.locateDemands(c,d);return f.length&&f[0].funcName&&(e=f[0].funcName),a.extend(!0,{funcName:e,args:f[0]?b.makeArray(f[0].args):[]},{backSpecs:f.slice(1)},b.censorKeys(f[0],["funcName","args"]))},b.resolveDemands=function(a,c,d,e){var f=b.determineDemands(a,c);return b.embodyDemands(a,f,d,e)},b.thisistToApplicable=function(a,c,d){return{apply:function(e,f){var g=b.expandOptions(c,d);"string"==typeof g&&(g=b.getGlobalValue(g)),g||b.fail("Could not resolve reference "+c+" to a value");var h=g[a.method];return"function"!=typeof h&&b.fail("Object ",g," at reference "+c+" has no member named "+a.method+" which is a function "),b.log("Applying arguments ",f," to method "+a.method+" of instance ",g),h.apply(g,f)}}},b.changeToApplicable=function(a,c){return{apply:function(d,e){var f=b.parseValidModelReference(c,"changePath listener record",a.changePath),g=b.expandOptions(a.value,c,{},{arguments:e});b.fireSourcedChange(f.applier,f.path,g,a.source)}}},b.recordToApplicable=function(a,c){if(a.changePath)return b.changeToApplicable(a,c);var d=a["this"];return a.method^d&&b.fail("Record ",c,' must contain both entries "method" and "this" if it contains either'),a.method?b.thisistToApplicable(a,d,c):null},b.invoke=function(a,c,d,e){b.pushActivity("invokeFunc",'invoking function with name "%functionName" from component %that',{functionName:a,that:d});var f=b.resolveDemands(d,a,b.makeArray(c),{passArgs:!0}),g=b.invokeGlobalFunction(f.funcName,f.args,e);return b.popActivity(),g},b.makeFreeInvoker=function(a,c){var d=b.determineDemands(null,a);return function(){var a=b.embodyDemands(null,d,b.makeArray(arguments),{passArgs:!0});return b.invokeGlobalFunction(a.funcName,a.args,c)}};var l="{arguments}.";b.parseInteger=function(a){return isFinite(a)&&a%1===0?Number(a):0/0},b.makeFastInvoker=function(a,c){var d;if(a.preExpand){d={};for(var e=0;ef)&&b.fail("Badly-formed compact "+d+" record without matching parentheses: ",c),-1!==e&&-1!==f){var g=c.substring(0,e),h=c.substring(e+1,f),i=b.transform(h.split(","),a.trim,b.coerceToPrimitive),j={args:i};return"invoker"===d&&"!"===g.charAt(e-1)&&(g=c.substring(0,e-1),j.dynamic=!0),j["{"===g.charAt(0)?"func":"funcName"]=g,j}return"expander"===d&&b.fail("Badly-formed compact expander record without parentheses: ",c),c},b.expandPrefix="@expand:",b.expandCompactString=function(a,c){var d=a;if(0===a.indexOf(b.expandPrefix)){var e=a.substring(b.expandPrefix.length);d={expander:b.compactStringToRec(e,"expander")}}else c&&(d=b.compactStringToRec(a,c));return d};var m={listeners:"listener",modelListeners:"modelListener"},n=a.extend({invokers:"invoker"},m);b.expandCompactRec=function(a,c,d,e){var f=a.length>0?a[a.length-1]:"",g=n[f];!g&&a.length>1&&(g=m[a[a.length-2]]),b.each(d,function(d,f){return!b.isPlainObject(d)||b.isDOMish(d)||e&&"model"===f&&0===a.length?("string"==typeof d&&(d=b.expandCompactString(d,g)),void(c[f]=d)):(c[f]=b.freshContainer(d),a.push(f),b.expandCompactRec(a,c[f],d),void a.pop())})},b.expandCompact=function(a,c){var d={};return b.expandCompactRec([],d,a,c),d},b.extractEL=function(a,b){if("ALL"===b.ELstyle)return a;if(1===b.ELstyle.length){if(a.charAt(0)===b.ELstyle)return a.substring(1)}else if("${}"===b.ELstyle){var c=a.indexOf("${"),d=a.lastIndexOf("}");if(0===c&&-1!==d)return a.substring(2,d)}},b.extractELWithContext=function(a,c){var d=b.extractEL(a,c);return d&&"{"===d.charAt(0)&&d.indexOf("}")>0?b.parseContextReference(d):d?{path:d}:d},b.parseContextReference=function(a,c,d){c=c||0;var e=a.indexOf("}",c+1);-1===e&&b.fail('Cannot parse context reference "'+a+'": Malformed context reference without }');var f=a.substring(c+1,e),g=d?a.indexOf(d,e+1):a.length,h=a.substring(e+1,g);return"."===h.charAt(0)&&(h=h.substring(1)),{context:f,path:h,endpos:g}},b.renderContextReference=function(a){return"{"+a.context+"}"+(a.path?"."+a.path:"")},b.resolveContextValue=function(a,c){function d(d){b.pushActivity("resolveContextValue","resolving context value %string",{string:a});var e=c.fetcher(d);return b.pushActivity("resolvedContextValue","resolved value %string to value %value",{string:a,value:e}),b.popActivity(2),e}var e;if(c.bareContextRefs&&"{"===a.charAt(0)&&a.indexOf("}")>0)return e=b.parseContextReference(a),d(e);if(c.ELstyle&&"${}"!==c.ELstyle&&(e=b.extractELWithContext(a,c)))return d(e);for(;"string"==typeof a;){var f=a.indexOf("${"),g=a.indexOf("}",f+2);if(-1===f||-1===g)break;"{"===a.charAt(f+2)?(e=b.parseContextReference(a,f+2,"}"),g=e.endpos):e={path:a.substring(f+2,g)};var h=d(e),i=0===f&&g===a.length-1;if(void 0===h||null===h)return h;a=i?h:a.substring(0,f)+h+a.substring(g+1)}return a},b.expandExpander=function(a,c,d){var e=b.getGlobalValue(c.expander.type||"fluid.deferredInvokeCall");return e?e.call(null,a,c,d):void 0},b.fetchExpandChildren=function(c,d,e,f,g,h,i){if(f.expander){var j=b.expandExpander(c,f,i);if(i.freeRoot||b.isPrimitive(j)||b.isDOMish(j)||!b.isPlainObject(j)||b.isArrayable(j)^b.isArrayable(c))return j;a.extend(!0,c,j)}return b.each(f,function(a,b){void 0===a?c[b]=void 0:"expander"!==b&&(e[d]=b,i.strategy(c,b,d+1,e,f,g,h))}),c},b.isUnexpandable=function(a){return b.isPrimitive(a)||b.isComponent(a)||void 0!==a.nodeType||a.jquery||!b.isPlainObject(a)},b.expandSource=function(a,c,d,e,f,g,h,i,j){var k,l,m,n=b.derefMergePolicy(h);return"string"!=typeof g||n.noexpand?n.noexpand||b.isUnexpandable(g)?k=g:g.expander?k=b.expandExpander(f,g,a):(n.preserve?(k=g,m=!0):k=b.freshContainer(g),l=!0):a.defaultEL&&"{"!==g.charAt(0)?k=g:(b.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:g,path:b.path.apply(null,e.slice(0,d))}),k=b.resolveContextValue(g,a),b.popActivity(1)),m||k===b.NO_VALUE||f(k),l&&j(k,g,d,e,h,i||m),m&&k!==b.NO_VALUE&&f(k),k},b.makeExpandStrategy=function(a){var c=function(c,d,e,f,g,h){return b.fetchExpandChildren(c,e||0,f||[],d,g,h,a)},e=function(e,f,g,h,i,j,k){function l(a){e[f]=a}if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options expansion, current path is ",h," at depth ",g,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander'),e){if(!k&&e.hasOwnProperty(f))return e[f];void 0===i&&(i=d(a.source,h,g-1,a.sourceStrategy),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var m=a.sourceStrategy(i,f,g,h),n=b.concreteTrundler(j,f);return b.expandSource(a,e,g,h,l,m,n,k,c)}};return a.recurse=c,a.strategy=e,e},b.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:!0,target:b.inCreationMarker}),b.makeExpandOptions=function(c,d){return d=a.extend({},b.rawDefaults("fluid.makeExpandOptions"),d),d.defaultEL="${}"===d.ELStyle&&d.bareContextRefs,d.expandSource=function(a){return b.expandSource(d,null,0,[],b.identity,a,d.mergePolicy,!1)},b.isUnexpandable(c)?(d.strategy=b.concreteTrundler,d.initter=b.identity,d.target="string"==typeof c?d.expandSource(c):c):(d.source=c,d.target=b.freshContainer(c),d.sourceStrategy=d.sourceStrategy||b.concreteTrundler,b.makeExpandStrategy(d),d.initter=function(){d.target=b.fetchExpandChildren(d.target,0,[],d.source,d.mergePolicy,!1,d)}),d},b.expand=function(a,c){var d=b.makeExpandOptions(a,c);return d.initter(),d.target},b.registerNamespace("fluid.expander"),b.expander.deferredCall=function(a,c,d){var e=c.expander,f=!e.args||b.isArrayable(e.args)?e.args:b.makeArray(e.args);return f=d.recurse([],f),b.invokeGlobalFunction(e.func,f)},b.deferredCall=b.expander.deferredCall,b.deferredInvokeCall=function(a,c,d){var e=c.expander,f=b.makeArray(e.args);f=d.recurse([],f);var g=e.func||e.funcName,h=d.expandSource(g)||b.recordToApplicable(e,d.contextThat);return h||b.fail("Error in expander record - "+g+" could not be resolved to a function for component ",d.contextThat),h.apply?h.apply(null,f):b.invoke(h,f,d.contextThat)},b.expander.noexpand=function(a,b){return b.expander.value?b.expander.value:b.expander.tree},b.noexpand=b.expander.noexpand}(jQuery,fluid_2_0);var fluid_2_0=fluid_2_0||{};!function(a,b){"use strict";function c(a){return a.lastIndexOf(".")}function d(a,c){return function(d){var e=c().sources,f=arguments,g=d.source||"";b.tryCatch(function(){void 0===e[g]&&(e[g]=0),++e[g],a.apply(null,f)},null,function(){--e[g]})}}b.model.makeEnvironmentStrategy=function(a){return function(b,c,d){return 0===d&&a[c]?a[c]:void 0}},b.model.defaultCreatorStrategy=function(a,b){return void 0===a[b]?(a[b]={},a[b]):void 0},b.model.defaultFetchStrategy=function(a,b){return a[b]},b.model.funcResolverStrategy=function(a,b){return a.resolvePathSegment?a.resolvePathSegment(b):void 0},b.model.traverseWithStrategy=function(a,c,d,e,f){for(var g=e.strategies,h=c.length-f,i=d;h>i;++i){if(!a)return a;for(var j,k=0;kc;++c){var g=b.charAt(c);if(e)e=!1,null!==d&&(d+=g);else{if("."===g)break;"\\"===g?e=!0:null!==d&&(d+=g)}}return null!==d&&(a[0]=d),c},f=[];b.pathUtil.parseEL=function(a){for(var b=[],c=0,d=a.length;d>c;){var g=e(f,a,c);
b.push(f[0]),c=g+1}return b},b.pathUtil.composeSegment=function(a,b){b=b.toString();for(var c=0;c0&&a.options.relayCount<2&&a.options.update&&(a.options.relayCount++,b.clearLinkCounts(d),a.options.update(a.transaction,d),++e)}),e},b.establishModelRelay=function(a,c,d,e,f){function g(a){for(;b.model.updateRelays(l,a.id)>0;);}function h(a,c,d){"relay"!==d&&b.model.commitRelays(l,a.id)}function i(a,c,d){"relay"!==d&&(b.model.notifyExternal(l.modelTransactions[a.id]),delete l.modelTransactions[a.id])}b.mergeModelListeners(a,d);var j=b.enlistModelComponent(a);b.each(e,function(c){b.parseModelRelay(a,c)});var k=b.transform(c,function(c){return b.parseImplicitRelay(a,c,[],{refCount:0})});j.initModels=k;var l=b.getInstantiator(a);return f.preCommit.addListener(g),f.preCommit.addListener(h),f.postCommit.addListener(i),b.deenlistModelComponent(a),f.holder.model},b.defaults("fluid.commonModelComponent",{gradeNames:["fluid.littleComponent","autoInit"],mergePolicy:{modelListeners:b.makeMergeListenersPolicy(b.arrayConcatPolicy)}}),b.defaults("fluid.modelComponent",{gradeNames:["fluid.commonModelComponent","autoInit"],members:{model:"@expand:fluid.initSimpleModel({that}, {that}.options.model)",applier:"@expand:fluid.makeChangeApplier({that}.model, {that}.options.changeApplierOptions)",modelListeners:"@expand:fluid.mergeModelListeners({that}, {that}.options.modelListeners)"},mergePolicy:{model:"preserve"}}),b.defaults("fluid.modelRelayComponent",{gradeNames:["fluid.commonModelComponent","fluid.eventedComponent","autoInit"],changeApplierOptions:{relayStyle:!0,cullUnchanged:!0},members:{model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeNewChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:!0,func:b.arrayConcatPolicy},modelRelay:{noexpand:!0,func:b.arrayConcatPolicy}}}),b.defaults("fluid.standardComponent",{gradeNames:["fluid.modelComponent","fluid.eventedComponent","autoInit"]}),b.defaults("fluid.standardRelayComponent",{gradeNames:["fluid.modelRelayComponent","autoInit"]}),b.modelChangedToChange=function(a,c){var d=c[0],e=c[1],f=c[3];return a?{value:c[0],oldValue:c[1],path:c[2]}:{value:b.get(d,f),oldValue:b.get(e,f),path:f}},b.resolveModelListener=function(a,c,d){var e=function(){var e=b.modelChangedToChange(d,arguments),f=[e],g={change:e,arguments:f};c.args&&(f=b.expandOptions(c.args,a,{},g)),b.event.invokeListener(c.listener,b.makeArray(f))};return b.event.impersonateListener(c.listener,e),e},b.mergeModelListeners=function(a,c){var d=0;b.each(c,function(c,e){"string"==typeof c&&(c={funcName:c});var f=b.event.resolveListenerRecord(c,a,"modelListeners",null,!1),g=b.parseValidModelReference(a,"modelListeners entry",e),h=g.applier.preCommit;b.each(f.records,function(c){function e(){if(h&&b.isModelComplete(g.that)){var c=g.applier.initiate("init");b.initModelEvent(a,c,[i]),c.commit()}}var f=b.resolveModelListener(a,c,h),i={listener:f,listenerIndex:d,segs:g.modelSegs,path:g.path,includeSource:c.includeSource,excludeSource:c.excludeSource,priority:c.priority,guardSource:c.guardSource,transactional:!0};++d,c.guardSource?b.addSourceGuardedListener(g.applier,i,c.guardSource,f,"modelChanged",c.namespace,c.softNamespace):g.applier.modelChanged.addListener(i,f,c.namespace,c.softNamespace),b.recordChangeListener(a,g.applier,f),a===g.that||b.isModelComplete(a)||a.events.onCreate.addListener(e)})})},b.addSourceGuardedListener=function(a,c,d,e,f,g,h){f=f||"modelChanged";var i=function(b,c,f,g){return a.hasChangeSource(d,g)?void 0:e.apply(null,arguments)};b.event.impersonateListener(e,i),a[f].addListener(c,i,g,h)},b.fireSourcedChange=function(a,b,c,d){a.fireChangeRequest({path:b,value:c,source:d})},b.requestChanges=function(a,b){for(var c=0;cc},b.model.applyChangeStrategy=function(a,c,d,e,f,g){var h=a[c],i=b.typeCode(f),j=b.typeCode(h),k=b.NO_VALUE;"primitive"===i?b.model.isSameValue(h,f)||(k=f):(j!==i||"array"===i&&f.length!==h.length)&&(k=b.freshContainer(f)),k!==b.NO_VALUE&&(a[c]=k,g.changeMap&&b.model.setChangedPath(g,e,g.inverse?"DELETE":"ADD")),"primitive"!==i&&b.model.fetchChangeChildren(a[c],d+1,e,f,g)},b.model.stepTargetAccess=function(a,c,d,e,f,g){for(var h=e;f>h;++h){var i=a[d[h]];a=b.model.traverseWithStrategy(a,d,h,g["ADD"===c?"resolverSetConfig":"resolverGetConfig"],d.length-h-1),i!==a&&g.changeMap&&b.model.setChangedPath(g,d.slice(0,h+1),"ADD")}return{root:a,last:d[f]}},b.model.defaultAccessorConfig=function(a){return a=a||{},a.resolverSetConfig=a.resolverSetConfig||b.model.defaultSetConfig,a.resolverGetConfig=a.resolverGetConfig||b.model.defaultGetConfig,a},b.model.applyHolderChangeRequest=function(a,c,d){d=b.model.defaultAccessorConfig(d),d.deltaMap=d.changeMap?{}:null,d.deltas=0;var e,f=c.segs.length,g=0===f;if(g?e={root:a,last:"model"}:(a.model||(a.model={},b.model.setChangedPath(d,[],d.inverse?"DELETE":"ADD")),e=b.model.stepTargetAccess(a.model,c.type,c.segs,0,f-1,d)),"ADD"===c.type){var h=c.value,i=b.makeArray(c.segs);b.model.applyChangeStrategy(e.root,e.last,f-1,i,h,d,g)}else"DELETE"===c.type?e.root&&void 0!==e.root[e.last]&&(delete e.root[e.last],d.changeMap&&b.model.setChangedPath(d,c.segs,"DELETE")):b.fail("Unrecognised change type of "+c.type);return d.deltas?d.deltaMap:null},b.model.diff=function(a,c,d){d=d||{changeMap:{},changes:0};var e,f=b.typeCode(a),g=b.typeCode(c);if("primitive"===f&&"primitive"===g)e=b.model.isSameValue(a,c);else if("primitive"===f^"primitive"===g)e=!1;else{var h={model:b.copy(a)};b.model.applyHolderChangeRequest(h,{value:c,segs:[],type:"ADD"},d);var i={model:b.copy(c)};d.inverse=!0,b.model.applyHolderChangeRequest(i,{value:a,segs:[],type:"ADD"},d),e=0===d.changes}return e===!1&&0===d.changes&&(d.changes=1,d.changeMap=void 0===c?"DELETE":"ADD"),e},b.matchChanges=function(a,c,d){for(var e=d.model,f=a,g=["model"],h=!1,i=[],j=0;j0){var d={model:a.model};a.model=i.newHolder.model,b.notifyModelChanges(f.changeListeners.transListeners,i.changeRecord.changeMap,a,d,null,i,f,a)}h||f.postCommit.fire(i,f,c)},fireChangeRequest:function(c){d(c),c.transactionId=i.id;var e=b.model.applyHolderChangeRequest(i.newHolder,c,i.changeRecord);b.notifyModelChanges(f.changeListeners.listeners,e,i.newHolder,a,c,i,f,a)}};return i.sources[e]=!0,i.reset(),b.bindRequestChange(i),i},f.hasChangeSource=function(a,b){return b?b[a]:!1},b.bindRequestChange(f),b.bindELMethods(f),f},b.pathUtil.getPathSegment=function(a,b){return e(f,a,b),f[0]},b.pathUtil.getHeadPath=function(a){return b.pathUtil.getPathSegment(a,0)},b.pathUtil.getFromHeadPath=function(a){var b=e(null,a,0);return b===a.length?"":a.substring(b+1)},b.pathUtil.getToTailPath=function(a){var b=c(a);return-1===b?"":a.substring(0,b)},b.pathUtil.getTailPath=function(a){var d=c(a);return b.pathUtil.getPathSegment(a,d+1)},b.pathUtil.matchSegments=function(a,b,c,d){if(d-c!==a.length)return!1;for(var e=c;d>e;++e)if(b[e]!==a[e-c])return!1;return!0},b.pathUtil.getExcessPath=function(a,c){var d=c.indexOf(a);return 0!==d&&b.fail("Path "+a+" is not a prefix of path "+c),a.length===c.length?"":("."!==c[a.length]&&b.fail("Path "+a+" is not properly nested in path "+c),c.substring(a.length+1))},b.pathUtil.matchPath=function(a,c,d){for(var e=[];;){if(""===c^""===a&&d)return null;if(!a||!c)break;var f=b.pathUtil.getHeadPath(a),g=b.pathUtil.getHeadPath(c);if("*"!==f&&f!==g)return null;e.push(g),a=b.pathUtil.getFromHeadPath(a),c=b.pathUtil.getFromHeadPath(c)}return e},b.model.isNullChange=function(a,c,d){if("ADD"===c.type&&!c.forceChange){var e=b.get(a,c.segs,d);if(e===c.value)return!0}},b.model.applyChangeRequest=function(c,d,e){var f=b.model.accessWithStrategy(c,d.path,b.VALUE,e||b.model.defaultSetConfig,null,!0),g=f.segs[f.segs.length-1];"ADD"===d.type||"MERGE"===d.type?0===f.segs.length||"MERGE"===d.type&&f.root[g]?("ADD"===d.type&&b.clear(f.root),a.extend(!0,0===f.segs.length?f.root:f.root[g],d.value)):f.root[g]=d.value:"DELETE"===d.type&&(0===f.segs.length?b.clear(f.root):delete f.root[g])},b.makeChangeApplier=function(a,c){return b.makeHolderChangeApplier({model:a},c)},b.makeHolderChangeApplier=function(a,c){function e(a){if(!a)return null;var c=function(a){return function(d,e,f){var g=a(d,e,f);return g===!1?!1:b.model.isNullChange(d,e)?(c.culled=!0,!1):void 0}};return c}function f(a,c){var d=c,e=!1,f=Number.MAX_VALUE;"string"==typeof c&&(c={path:c}),d=c.path,e=c.transactional,void 0!==c.priority&&(f=c.priority),"!"===d.charAt(0)&&(e=!0,d=d.substring(1));var g=function(c,g,h){var i=b.event.identifyListener(a),j=g.guids[i];if(j&&h)h&&(j.accumulate||(j.accumulate=[]),j.accumulate.push(h));else{var k=b.pathUtil.matchPath(d,c);if(null!==k){var l={match:k,pathSpec:d,listener:a,priority:f,transactional:e};h&&(l.accumulate=[h]),g.guids[i]=l;var m=e?"transListeners":"listeners";g[m].push(l),g.all.push(l)}}};return b.event.impersonateListener(a,g),g}function g(a,b,c,d,e){return p[a].fireToListeners(b[d],c,e)}function h(a,b){return a.priority-b.priority}function i(a,b,c,d){p[a].fire(b,c,d),c.all.sort(h),c.listeners.sort(h),c.transListeners.sort(h)}function j(){return{guids:{},all:[],listeners:[],transListeners:[]}}function k(a,b){var c=j();return i(a,b,c),c}function l(a,b,c,d){var e=k(a,b);return g(a,e,c,"all",d)}function m(a,b){a[b]={addListener:function(a,c,d,e){p[b].addListener(f(c,a),d,null,null,e)},removeListener:function(a){p[b].removeListener(a)}}}function n(a){a.type||(a.type="ADD"),a.segs=r.parseEL(a.path)}function o(a,b,c,d,e,f){for(var g=j(),h=0;h0},r},b.makeSuperApplier=function(){var a=[],c={};return c.addSubApplier=function(b,c){a.push({path:b,subApplier:c})},c.fireChangeRequest=function(c){for(var d=0;d0&&(h.typeStack=[],h.pathOp=b.model.makePathStack(h,"path"),b.model.transform.expandWildcards(h,c)),b.model.fireSortedChanges(h.queuedChanges,h.finalApplier),h.target.model},a.extend(b.model.transformWithRules,b.model.transform),b.model.transform=b.model.transformWithRules,b.transformOne=function(a){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:a}}},b.transformMany=function(a){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:a}}}}(jQuery,fluid_2_0);var fluid_2_0=fluid_2_0||{},fluid=fluid||fluid_2_0;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.registerNamespace("fluid.transforms"),b.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.transforms.value.invert"}),b.transforms.value=b.identity,b.transforms.value.invert=function(a,c){var d=b.copy(a);return d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d},b.transforms.identity=b.transforms.value,b.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"}),b.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"}),b.transforms.literalValue=function(a){return a.value},b.defaults("fluid.transforms.arrayValue",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.arrayValue=b.makeArray,b.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.count=function(a){return b.makeArray(a).length},b.defaults("fluid.transforms.round",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.round=function(a){return Math.round(a)},b.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"}),b.transforms["delete"]=function(a,c){var d=b.model.composePaths(c.outputPrefix,a.outputPath);c.applier.requestChange(d,null,"DELETE")},b.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.transformFunction"}),b.transforms.firstValue=function(a,c){a.values&&a.values.length||b.fail('firstValue transformer requires an array of values at path named "values", supplied',a);for(var d=0;d=a},"<":function(a,b){return b>a},">=":function(a,b){return a>=b},">":function(a,b){return a>b},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}},b.transforms.binaryOp=function(a,c,d){var e=a.left(),f=a.right(),g=b.model.transform.getValue(void 0,c.operator,d),h=b.transforms.binaryLookup[g];return void 0===h||void 0===e||void 0===f?void 0:h(e,f)},b.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{"true":null,"false":null,condition:null}}),b.transforms.condition=function(a){var b=a.condition();return null===b?void 0:a[b?"true":"false"]()},b.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.transformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"}),b.model.transform.matchValueMapperFull=function(a,c,d){var e=c.options;if(0===e.length&&b.fail("valueMapper supplied empty list of options: ",c),1===e.length)return 0;for(var f=[],g=0;ga&&(a=c)}var e=b.max;if(void 0!==e){var f=b.excludeMax||0;e-=f,a>e&&(a=e)}return a},b.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"}),b.transforms.free=function(a){var c=b.makeArray(a.args);return b.invokeGlobalFunction(a.func,c)}}(jQuery,fluid_2_0);var fluid_2_0=fluid_2_0||{};!function(a,b){"use strict";b.defaults("fluid.commonViewComponent",{gradeNames:["fluid.littleComponent","autoInit"],initFunction:"fluid.initView",argumentMap:{container:0,options:1},members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors)"}}),b.defaults("fluid.viewComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardComponent","autoInit"]}),b.defaults("fluid.viewRelayComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardRelayComponent","autoInit"]}),b.dumpSelector=function(a){return"string"==typeof a?a:a.selector?a.selector:""},b.diagnoseFailedView=function(a,c,d,e){if(!c&&(b.hasGrade(d,"fluid.viewComponent")||b.hasGrade(d,"fluid.viewRelayComponent"))){var f=b.wrap(e[1]),g="Instantiation of autoInit component with type "+a+" failed, since ";f?0===f.length?b.fail(g+'selector "',b.dumpSelector(e[1]),'" did not match any markup in the document'):b.fail(g+" component creator function did not return a value"):b.fail(g+" container argument is empty")}},b.checkTryCatchParameter=function(){var a=window.location||{search:"",protocol:"file:"},c=a.search.slice(1).split("&");return b.find(c,function(a){return 0===a.indexOf("notrycatch")?!0:void 0})===!0},b.notrycatch=b.checkTryCatchParameter(),b.wrap=function(b,c){return c=c||a,!b||b.jquery?b:c(b)},b.unwrap=function(a){return a&&a.jquery&&1===a.length?a[0]:a},b.container=function(a,c,d){d&&(a=b.unwrap(a));var e=b.wrap(a,d);if(c&&(!e||0===e.length))return null;if(!e||!e.jquery||1!==e.length){"string"!=typeof a&&(a=e.selector);var f=void 0!==e.length?e.length:0;b.fail((f>1?"More than one ("+f+") container elements were":"No container element was")+" found for selector "+a)}return b.isDOMNode(e[0])||b.fail("fluid.container was supplied a non-jQueryable element"),e},b.createDomBinder=function(a,c){function d(a,c){return b.allocateSimpleId(c)+"-"+a}function e(a,b,c){f[d(a,b)]=c}var f={},g={id:b.allocateGuid()},h=a.constructor;return g.locate=function(d,f){var g,i,j;return g=c[d],i=f?f:a,i||b.fail("DOM binder invoked for selector "+d+" without container"),g?(j="function"==typeof g?h(g.call(null,b.unwrap(i))):h(g,i),j.get(0)===document&&(j=[]),j.selector||(j.selector=g,j.context=i),j.selectorName=d,e(d,i,j),j):i},g.fastLocate=function(b,c){var e=c?c:a,h=d(b,e),i=f[h];return i?i:g.locate(b,c)},g.clear=function(){f={}},g.refresh=function(b,c){var d=c?c:a;"string"==typeof b&&(b=[b]),void 0===d.length&&(d=[d]);for(var e=0;e1&&(e=e[0],f=!0),"input"!==e.nodeName.toLowerCase()||!/radio|checkbox/.test(e.type))return void 0===d?a(e).val():a(e).val(d);var g=e.name;void 0===g&&b.fail("Cannot acquire value from node "+b.dumpEl(e)+" which does not have name attribute set");var h;if(f)h=c;else{h=e.ownerDocument.getElementsByName(g);var i=b.findForm(e);h=a.grep(h,function(a){return a.name!==g?!1:!i||b.dom.isContainer(i,a)})}if(void 0===d){var j=a.map(h,function(a){return a.checked?a.value:null});return"radio"===e.type?j[0]:j}"boolean"==typeof d&&(d=d?"true":"false"),a.each(h,function(){this.checked=d instanceof Array?-1!==a.inArray(this.value,d):d===this.value})},b.BINDING_ROOT_KEY="fluid-binding-root",b.findData=function(b,c){for(;b;){var d=a.data(b,c);if(d)return d;b=b.parentNode}},b.bindFossils=function(c,d,e){a.data(c,b.BINDING_ROOT_KEY,{data:d,fossils:e})},b.boundPathForNode=function(a,c){a=b.unwrap(a);var d=a.name||a.id,e=c[d];return e?e.EL:null},b.applyBoundChange=function(a,c,d){a=b.unwrap(a),void 0===c&&(c=b.value(a)),void 0===a.nodeType&&a.length>0&&(a=a[0]);var e=b.findData(a,b.BINDING_ROOT_KEY);e||b.fail("Bound data could not be discovered in any node above "+b.dumpEl(a));var f=a.name,g=e.fossils[f];g||b.fail("No fossil discovered for name "+f+" in fossil record above "+b.dumpEl(a)),"boolean"==typeof g.oldvalue&&(c=c[0]?!0:!1);var h=e.fossils[f].EL;d?d.fireChangeRequest({path:h,value:c,source:"DOM:"+a.id}):b.set(e.data,h,c)},b.jById=function(c,d){d=d&&9===d.nodeType?d:document;var e=b.byId(c,d),f=e?a(e):[];return f.selector="#"+c,f.context=d,f},b.byId=function(a,c){c=c&&9===c.nodeType?c:document;var d=c.getElementById(a);return d?(d.id!==a&&b.fail("Problem in document structure - picked up element "+b.dumpEl(d)+" for id "+a+" without this id - most likely the element has a name which conflicts with this id"),d):null},b.getId=function(a){return b.unwrap(a).id},b.allocateSimpleId=function(a){var c="fluid-id-"+b.allocateGuid();return!a||b.isPrimitive(a)?c:(a=b.unwrap(a),a.id||(a.id=c),a.id)},b.defaults("fluid.ariaLabeller",{labelAttribute:"aria-label",liveRegionMarkup:'',liveRegionId:"fluid-ariaLabeller-liveRegion",events:{generateLiveElement:"unicast"},listeners:{generateLiveElement:"fluid.ariaLabeller.generateLiveElement"}}),b.ariaLabeller=function(a,c){var d=b.initView("fluid.ariaLabeller",a,c);return d.update=function(a){if(a=a||d.options,d.container.attr(d.options.labelAttribute,a.text),a.dynamicLabel){var c=b.jById(d.options.liveRegionId);0===c.length&&(c=d.events.generateLiveElement.fire(d)),c.text(a.text)}},d.update(),d},b.ariaLabeller.generateLiveElement=function(b){var c=a(b.options.liveRegionMarkup);return c.prop("id",b.options.liveRegionId),a("body").append(c),c};var c="aria-labelling";b.getAriaLabeller=function(d){d=a(d);var e=b.getScopedData(d,c);return e},b.updateAriaLabel=function(d,e,f){f=a.extend({},f||{},{text:e});var g=b.getAriaLabeller(d);return g?g.update(f):(g=b.ariaLabeller(d,f),b.setScopedData(d,c,g)),g};var d={};a(document).click(function(a){for(var c=b.resolveEventTarget(a);c;){if(d[c.id])return;c=c.parentNode}b.each(d,function(b,c){b(a),delete d[c]})}),b.globalDismissal=function(a,c){b.each(a,function(a){var e=b.unwrap(a).ownerDocument===document?b.allocateSimpleId(a):b.allocateGuid();c?d[e]=c:delete d[e]})},b.now=function(){return Date.now?Date.now():(new Date).getTime()},b.deadMansBlur=function(c,d){var e={options:a.extend(!0,{},b.defaults("fluid.deadMansBlur"),d)};return e.blurPending=!1,e.lastCancel=0,e.canceller=function(a){b.log("Cancellation through "+a.type+" on "+b.dumpEl(a.target)),e.lastCancel=b.now(),e.blurPending=!1},e.noteProceeded=function(){b.globalDismissal(e.options.exclusions)},e.reArm=function(){b.globalDismissal(e.options.exclusions,e.proceed)},e.addExclusion=function(a){b.globalDismissal(a,e.proceed)},e.proceed=function(a){b.log("Direct proceed through "+a.type+" on "+b.dumpEl(a.target)),e.blurPending=!1,e.options.handler(c)},b.each(e.options.exclusions,function(c){c=a(c),b.each(c,function(b){a(b).bind("focusin",e.canceller).bind("fluid-focus",e.canceller).click(e.canceller).mousedown(e.canceller)})}),e.options.cancelByDefault?e.reArm():a(c).bind("focusout",function(a){b.log("Starting blur timer for element "+b.dumpEl(a.target));var d=b.now();b.log("back delay: "+(d-e.lastCancel)),d-e.lastCancel>e.options.backDelay&&(e.blurPending=!0),setTimeout(function(){e.blurPending&&e.options.handler(c)},e.options.delay)}),e},b.defaults("fluid.deadMansBlur",{delay:150,backDelay:100})}(jQuery,fluid_2_0);var fluid_2_0=fluid_2_0||{};!function(a,b){"use strict";function c(a){return a}var d={},e={};b.fetchResources=function(a,c,d){var e=b.initLittleComponent("fluid.fetchResources",d);return e.resourceSpecs=a,e.callback=c,e.operate=function(){b.fetchResources.fetchResourcesImpl(e)},b.each(a,function(a,c){a.recurseFirer=b.event.getEventFirer(null,null,'I/O completion for resource "'+c+'"'),a.recurseFirer.addListener(e.operate),a.url&&!a.href&&(a.href=a.url)}),e.options.amalgamateClasses&&b.fetchResources.amalgamateClasses(a,e.options.amalgamateClasses,e.operate),e.operate(),e},b.fetchResources.amalgamateClasses=function(a,c,d){b.each(c,function(c){var f=e[c];b.each(f,function(b,e){a[c+"!"+e]=b,b.recurseFirer.addListener(d)})})},b.fetchResources.timeSuccessCallback=function(a){if(a.timeSuccess&&a.options&&a.options.success){var c=a.options.success;a.options.success=function(){var d=new Date,e=c.apply(null,arguments);return b.log("External callback for URL "+a.href+" completed - callback time: "+((new Date).getTime()-d.getTime())+"ms"),e}}},b.fetchResources.clearResourceCache=function(a){a?delete d[c(a)]:b.clear(d)},b.fetchResources.handleCachedRequest=function(a,f){var g=c(a.href),h=d[g];if(h.$$firer$$){b.log("Handling request for "+g+" from cache");var i=a.fetchClass;i&&e[i]&&(b.log("Clearing pendingClass entry for class "+i),delete e[i][g]),d[g]=f,h.fire(f)}},b.fetchResources.completeRequest=function(a){a.queued=!1,a.completeTime=new Date,b.log("Request to URL "+a.href+" completed - total elapsed time: "+(a.completeTime.getTime()-a.initTime.getTime())+"ms"),a.recurseFirer.fire()},b.fetchResources.makeResourceCallback=function(a){return{success:function(c){a.resourceText=c,a.resourceKey=a.href,a.forceCache&&b.fetchResources.handleCachedRequest(a,c),b.fetchResources.completeRequest(a)},error:function(c,d,e){a.fetchError={status:c.status,textStatus:c.textStatus,errorThrown:e},b.fetchResources.completeRequest(a)}}},b.fetchResources.issueCachedRequest=function(f,g){var h=c(f.href),i=d[h];if(i)i.$$firer$$?(b.log("Request for cached resource which is in flight: url "+h),i.addListener(function(a){g.success(a)})):g.success(i);else{b.log("First request for cached resource with url "+h),i=b.event.getEventFirer(null,null,"cache notifier for resource URL "+h),i.$$firer$$=!0,d[h]=i;var j=f.fetchClass;j&&(e[j]||(e[j]={}),e[j][h]=f),g.cache=!1,a.ajax(g)}},b.fetchResources.composeCallbacks=function(a,c){return c?a?function(){try{c.apply(null,arguments)}catch(d){b.log("Exception applying external fetchResources callback: "+d)}a.apply(null,arguments)}:c:a},b.fetchResources.composePolicy=function(a,c){return b.fetchResources.composeCallbacks(a,c)},b.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:b.fetchResources.composePolicy,error:b.fetchResources.composePolicy,url:"reverse"}}),b.fetchResources.issueRequest=function(c,d){var e=b.fetchResources.makeResourceCallback(c),f={url:c.href,success:e.success,error:e.error,dataType:c.dataType||"text"};b.fetchResources.timeSuccessCallback(c),f=b.merge(b.defaults("fluid.fetchResources.issueRequest").mergePolicy,f,c.options),c.queued=!0,c.initTime=new Date,b.log("Request with key "+d+" queued for "+c.href),c.forceCache?b.fetchResources.issueCachedRequest(c,f):a.ajax(f)},b.fetchResources.fetchResourcesImpl=function(c){var d=!0,e=!0,f=c.resourceSpecs;for(var g in f){var h=f[g];if((!h.options||h.options.async)&&(e=!1),h.href&&!h.completeTime)h.queued||b.fetchResources.issueRequest(h,g),h.queued&&(d=!1);else if(h.nodeId&&!h.resourceText){var i=document.getElementById(h.nodeId);h.resourceText=b.dom.getElementText(i),h.resourceKey=h.nodeId}}d&&c.callback&&!c.callbackCalled&&(c.callbackCalled=!0,a.browser.mozilla&&!e?setTimeout(function(){c.callback(f)},1):c.callback(f))},b.fetchResources.primeCacheFromResources=function(a){var c=b.defaults(a).resources,d=(b.expandOptions?b.expandOptions:b.identity)(b.copy(c));b.fetchResources(d)},b.registerNamespace("fluid.expander"),b.expander.makeDefaultFetchOptions=function(c,d,e){return a.extend(!0,{dataType:"text"},e,{success:function(a,b){var d=JSON.parse(a);b(c(d))},error:function(a,c){b.log("Error fetching "+d+": "+c)}})},b.expander.makeFetchExpander=function(a){return{expander:{type:"fluid.expander.deferredFetcher",href:a.url,options:b.expander.makeDefaultFetchOptions(a.disposer,a.url,a.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:a.fetchKey}}},b.expander.deferredFetcher=function(a,c,d){var e=c.expander,f=b.copy(e),g=b.expand(e.resourceSpecCollector,d);delete f.type,delete f.resourceSpecCollector,delete f.fetchKey;var h=function(b){a(b)};f.options.success=function(a){e.options.success(a,h)};var i=e.fetchKey||b.allocateGuid();return g[i]=f,b.NO_VALUE}}(jQuery,fluid_2_0),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:global;!function(){if(!a.DSP){var b={};b.add=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]+c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]+c},b.sub=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]-c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]-c},b.mul=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]*c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]*c},b.mulCplx=function(a,b,c,d,e,f){var g,h,i,j,k;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],a[g]=h*j-i*k,b[g]=h*k+i*j;else for(g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=h*e-i*f,b[g]=h*f+i*e},b.div=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]/c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]/c},b.divCplx=function(a,b,c,d,e,f){var g,h,i,j,k,l;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(h*j+i*k)*l,b[g]=(i*j-h*k)*l;else for(l=1/(e*e+f*f),g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=(h*e+i*f)*l,b[g]=(i*e-h*f)*l},b.madd=function(a,b,c,d){var e;if(d instanceof Float32Array)for(e=Math.min(a.length,b.length,c.length,d.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d[e];else for(e=Math.min(a.length,b.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d},b.abs=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.abs(b[c])},b.absCplx=function(a,b,c){for(var d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.sqrt(b[d]*b[d]+c[d]*c[d])},b.acos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.acos(b[c])},b.asin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.asin(b[c])},b.atan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.atan(b[c])},b.atan2=function(a,b,c){for(var d=Math.min(a.length,c.length,b.length)-1;d>=0;--d)a[d]=Math.atan2(b[d],c[d])},b.ceil=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.ceil(b[c])},b.cos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.cos(b[c])},b.exp=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.exp(b[c])},b.floor=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.floor(b[c])},b.log=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.log(b[c])},b.max=function(a){for(var b=-1/0,c=a.length-1;c>=0;--c){var d=a[c];d>b&&(b=d)}return b},b.min=function(a){for(var b=1/0,c=a.length-1;c>=0;--c){var d=a[c];b>d&&(b=d)}return b},b.pow=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c[d]);else if(2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e}else if(3==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e*e}else if(4==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];e*=e,a[d]=e*e}else if(-1==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=1/b[d];else if(-2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=1/b[d];a[d]=e*e}else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c)},b.random=function(a,b,c){b||(b=0),isNaN(parseFloat(c))&&(c=1);for(var d=c-b,e=a.length-1;e>=0;--e)a[e]=Math.random()*d+b},b.round=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.round(b[c])},b.sin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sin(b[c])},b.sqrt=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sqrt(b[c])},b.tan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.tan(b[c])},b.clamp=function(a,b,c,d){for(var e=Math.min(a.length,b.length)-1;e>=0;--e){var f=b[e];a[e]=c>f?c:f>d?d:f}},b.fract=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c){var d=b[c];a[c]=d-Math.floor(d)}},b.ramp=function(a,b,c){var d=a.length-1;if(d>=0&&(a[0]=b),d>0)for(var e=(c-b)/d,f=1;d>=f;++f)a[f]=b+e*f},b.sign=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=b[c]<0?-1:1},b.sum=function(a){for(var b=0,c=a.length-1;c>=0;--c)b+=a[c];return b},b.sampleLinear=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:0];a[g]=k+j*(l-k)}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:f];a[g]=k+j*(l-k)}},b.sampleCubic=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:f],r=b[i],s=b[f>i?i+1:0],t=b[f-1>i?i+2:i+2-Math.floor((i+2)/e)*e];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:0],r=b[i],s=b[f>i?i+1:f],t=b[f-1>i?i+2:f];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}},b.pack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],a[b+3]=g[j],b+=c;
-else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.DSP=b}}(),function(){if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this.b=new Float32Array(a),this.b[0]=1,this.a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this.a,e=d.length,f=this.b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},a.Filter=b}}(),function(){if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=q+g;s>q;)j=.5*a[q],k=.5*b[q],l=.5*a[r],m=.5*b[r],n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=1/3,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.25,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,ab=c+2*g,bb=c+3*g,cb=c+4*g,db=e[d*g],eb=f[d*g],fb=e[2*d*g],gb=f[2*d*g],hb=.2,ib=$+g;ib>$;)H=a[$]*hb,I=b[$]*hb,J=a[_]*hb,K=b[_]*hb,L=a[ab]*hb,M=b[ab]*hb,N=a[bb]*hb,O=b[bb]*hb,P=a[cb]*hb,Q=b[cb]*hb,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*db+x*fb,s=i+w*db+y*fb,t=C*eb+A*gb,u=-B*eb-z*gb,a[_]=r-t,b[_]=s-u,a[cb]=r+t,b[cb]=s+u,D=h+v*fb+x*db,E=i+w*fb+y*db,F=-C*gb+A*eb,G=B*gb-z*eb,a[ab]=D+F,b[ab]=E+G,a[bb]=D-F,b[bb]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++ab,++bb,++cb},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=1/h;for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),this.size=a,this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}()}();var Random=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};Random.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},Random.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},Random.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c>>1^b[1&a];for(;c>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},Random.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},Random.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},Random.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},Random.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},Random.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},Random.prototype.LOG4=Math.log(4),Random.prototype.SG_MAGICCONST=1+Math.log(4.5),Random.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},Random.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},Random.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=0/0,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},Random.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},Random.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},Random.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},Random.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)};var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");flock.fluid=fluid,flock.init=function(a){var b=a?{audioSettings:a}:void 0,c=flock.enviro.shared=flock.enviro(b);return c},flock.OUT_UGEN_ID="flocking-out",flock.MAX_CHANNELS=32,flock.MIN_BUSES=2,flock.MAX_INPUT_BUSES=32,flock.MIN_INPUT_BUSES=1,flock.ALL_CHANNELS=flock.MAX_INPUT_BUSES,flock.PI=Math.PI,flock.TWOPI=2*Math.PI,flock.HALFPI=Math.PI/2,flock.LOG01=Math.log(.1),flock.LOG001=Math.log(.001),flock.ROOT2=Math.sqrt(2),flock.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},flock.sampleFormats={FLOAT32NE:"float32NE"},fluid.registerNamespace("flock.debug"),flock.debug.failHard=!0,flock.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},fluid.registerNamespace("flock.platform"),flock.platform.isBrowser="undefined"!=typeof window,flock.platform.hasRequire="undefined"!=typeof require,flock.platform.os=flock.platform.isBrowser?window.navigator.platform:fluid.require("os").platform(),flock.platform.isLinux=flock.platform.os.indexOf("Linux")>-1,flock.platform.isAndroid=flock.platform.isLinux&&flock.platform.os.indexOf("arm")>-1,flock.platform.isIOS="iPhone"===flock.platform.os||"iPad"===flock.platform.os||"iPod"===flock.platform.os,flock.platform.isMobile=flock.platform.isAndroid||flock.platform.isIOS,flock.platform.browser=flock.browser(),flock.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,flock.platform.audioEngine=flock.platform.isBrowser?flock.platform.isWebAudio?"webAudio":"moz":"nodejs",fluid.staticEnvironment.audioEngine=fluid.typeTag("flock.platform."+flock.platform.audioEngine),flock.defaultBufferSizeForPlatform=function(){return flock.platform.isMobile?8192:1024},flock.shim={URL:flock.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},flock.requireModule=function(a,b){return b||(b=a),flock.platform.isBrowser?window[a]:flock.platform.hasRequire?require(b)[a]:void 0},flock.noOp=function(){},flock.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},flock.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},flock.generate=function(a,b){var c,d="number"==typeof a?new Float32Array(a):a,e="function"==typeof b;for(c=0;cg&&(g=e);if(g>0)for(d=0;df;f++)g=e?e[f]:1,h=(f+1)*a*b,i+=g*Math.cos(h+d);return i})},flock.generateNormalizedFourierTable=function(a,b,c,d,e){var f=flock.generate(c,function(a){return e(a+1)}),g=flock.generateFourierTable(a,b,c,d,f);return flock.normalize(g)},flock.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,flock.TWOPI/c)},flock.tableGenerators={sin:function(a,b){return flock.generate(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return flock.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return flock.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return flock.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return flock.generate(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return flock.generate(a,function(b){return Math.sin(Math.PI*b/a)})}},flock.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;bd.max&&(d.max=c),cd;d++,e++)g[e]=a[d];return g},flock.parseMidiString=function(a){if(!a||a.length<2)return 0/0;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),f=flock.midiFreq.noteNames[d],g=12*e+f;return g},flock.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=flock.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},flock.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},flock.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},flock.interpolate.cubic=flock.interpolate.hermite,flock.warn=function(a){fluid.log(fluid.logLevel.WARN,a)},flock.fail=function(a){if(flock.debug.failHard)throw new Error(a);fluid.log(fluid.logLevel.FAIL,a)},flock.pathParseError=function(a,b,c){var d="Error parsing path: "+b+". Segment '"+c+"' could not be resolved. Root object was: "+fluid.prettyPrintJSON(a);flock.fail(d)},flock.get=function(a,b){if(!a)return fluid.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return fluid.getGlobalValue(a);if(b&&""!==b){var c,d=""===b?[]:String(b).split("."),e=a[d[0]];for(c=1;cd;d++){if(a=a[h],e=typeof a,"object"!==e)return void flock.fail("Error while setting a value at path + "+b+". A non-container object was found at segment "+h+". Value: "+a);h=f[d],void 0===a[h]&&(a[h]={})}return a[h]=c,c}},flock.invoke=function(a,b,c){var d="function"==typeof a?a:flock.get(a,b);return"function"!=typeof d?void flock.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},flock.input={},flock.input.shouldExpand=function(a,b){var c=flock.parse.specialInputs;return b&&b.options&&b.options.noExpand&&(c=c.concat(b.options.noExpand)),c.indexOf(a)<0},flock.input.pathExpander=function(a){var b,c=fluid.model.parseEL(a),d="inputs",e=c.length,f=e-1,g=[];for(b=0;f>b;b++){var h=c[b],i=c[b+1];if(g.push(h),"model"===i||"options"===i){g=g.concat(c.slice(b+1,f));break}isNaN(Number(i))&&g.push(d)}return g.push(c[f]),g.join(".")},flock.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=flock.input.pathExpander(b),d=a[b],e[c]=d;return e},flock.input.expandPath=function(a){return"string"==typeof a?flock.input.pathExpander(a):flock.input.expandPaths(a)},flock.input.getValueForPath=function(a,b){b=flock.input.expandPath(b);var c=flock.get(a,b);return flock.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},flock.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c-1?flock.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,j=flock.input.shouldExpand(h,i)&&e?e(c,b,i,f):c;return flock.set(a,b,j),i&&i.onInputChanged&&i.onInputChanged(h),j},flock.input.setValuesForPaths=function(a,b,c,d){var e,f,g,h={};for(e in b)f=b[e],g=flock.input.set(a,e,f,c,d),h[e]=g;return h},flock.input.set=function(a,b,c,d,e){return"string"==typeof b?flock.input.setValueForPath(a,b,c,d,e):flock.input.setValuesForPaths(a,b,d,e)},fluid.defaults("flock.nodeList",{gradeNames:["fluid.littleComponent","autoInit"],members:{nodes:[],namedNodes:{}}}),flock.nodeList.preInit=function(a){a.head=function(b){return a.nodes.unshift(b),b.nickName&&(a.namedNodes[b.nickName]=b),0},a.before=function(b,c){var d=a.nodes.indexOf(b);return a.insert(d,c),d},a.after=function(b,c){var d=a.nodes.indexOf(b),e=d+1;return a.insert(e,c),e},a.insert=function(b,c){return 0>b?a.head(c):(a.nodes.splice(b,0,c),c.nickName&&(a.namedNodes[c.nickName]=c),b)},a.tail=function(b){return a.nodes.push(b),b.nickName&&(a.namedNodes[b.nickName]=b),a.nodes.length},a.remove=function(b){var c=a.nodes.indexOf(b);return 0>c?c:(a.nodes.splice(c,1),delete a.namedNodes[b.nickName],c)},a.replace=function(b,c){var d=a.nodes.indexOf(c);return 0>d?a.head(b):(a.nodes[d]=b,delete a.namedNodes[c.nickName],b.nickName&&(a.namedNodes[b.nickName]=b),d)},a.clearAll=function(){for(;a.nodes.length>0;)a.nodes.pop()}},fluid.defaults("flock.enviro",{gradeNames:["fluid.standardRelayComponent","flock.nodeList","autoInit"],members:{audioSettings:"@expand:flock.enviro.clampAudioSettings({that}.options.audioSettings)",buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{that}.audioSettings.numBuses","{that}.audioSettings.blockSize"]}},buffers:{},bufferSources:{}},model:{isPlaying:!1,nextAvailableBus:{input:0,interconnect:0}},audioSettings:{rates:{audio:48e3,control:void 0,scheduled:void 0,demand:0,constant:0},blockSize:64,chans:2,numInputBuses:2,numBuses:8,bufferSize:flock.defaultBufferSizeForPlatform()},components:{asyncScheduler:{type:"flock.scheduler.async"},audioStrategy:{type:"flock.audioStrategy.platform",options:{audioSettings:"{enviro}.audioSettings"}}},invokers:{acquireNextBus:{funcName:"flock.enviro.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{that}.audioSettings"]}},listeners:{onCreate:{funcName:"flock.enviro.calculateControlRate",args:["{that}.audioSettings"]}}}),flock.enviro.clampAudioSettings=function(a){return a.numInputBuses=Math.min(a.numInputBuses,flock.MAX_INPUT_BUSES),a.numInputBuses=Math.max(a.numInputBuses,flock.MIN_INPUT_BUSES),a.chans=Math.min(a.chans,flock.MAX_CHANNELS),a.numBuses=Math.max(a.numBuses,a.chans),a.numBuses=Math.max(a.numBuses,flock.MIN_BUSES),a},flock.enviro.calculateControlRate=function(a){return a.rates.control=a.rates.audio/a.blockSize,a},flock.enviro.acquireNextBus=function(a,b,c,d,e){var f=d.nextAvailableBus[a];if(void 0===f)return void flock.fail("An invalid bus type was specified when invoking flock.enviro.acquireNextBus(). Type was: "+a);var g=f+e.chans,h=e.chans+e.numInputBuses;return"interconnect"===a&&(g+=e.numInputBuses,h=b.length),g>=h?void flock.fail("Unable to aquire a bus. There are insufficient buses available. Please use an existing bus or configure additional buses using the enviroment's numBuses and numInputBuses parameters."):(c.change("nextAvailableBus."+a,++f),g)},flock.enviro.preInit=function(a){a.play=function(){a.audioStrategy.start(),a.model.isPlaying=!0},a.stop=function(){a.audioStrategy.stop(),a.model.isPlaying=!1},a.reset=function(){a.stop(),a.asyncScheduler.clearAll(),a.applier.change("nextAvailableBus.input",[]),a.applier.change("nextAvailableBus.interconnect",[]),a.audioStrategy.reset(),a.clearAll()},a.registerBuffer=function(b){b.id&&(a.buffers[b.id]=b)},a.releaseBuffer=function(b){if(b){var c="string"==typeof b?b:b.id;delete a.buffers[c]}}},flock.enviro.finalInit=function(a){a.gen=function(){var b=a.audioStrategy.nodeEvaluator;b.clearBuses(),b.gen()}},flock.enviro.createAudioBuffers=function(a,b){var c,d=[];for(c=0;a>c;c++)d[c]=new Float32Array(b);return d},fluid.defaults("flock.audioStrategy",{gradeNames:["fluid.standardRelayComponent"],components:{nodeEvaluator:{type:"flock.enviro.nodeEvaluator",options:{numBuses:"{enviro}.options.audioSettings.numBuses",blockSize:"{enviro}.options.audioSettings.blockSize",members:{buses:"{enviro}.buses",nodes:"{enviro}.nodes"}}}}}),fluid.defaults("flock.enviro.nodeEvaluator",{gradeNames:["fluid.littleComponent","autoInit"]}),flock.enviro.nodeEvaluator.finalInit=function(a){a.clearBuses=function(){var b,c,d,e=a.options.numBuses,f=a.options.blockSize;for(b=0;e>b;b++)for(c=a.buses[b],d=0;f>d;d++)c[d]=0},a.gen=function(){var b,c,d=a.nodes;for(b=0;be;e++)f=l(i[e],j[e]);for(g=e;g1?b.freeVoices.pop():Object.keys(b.activeVoices).length>b.options.maxVoices?null:b.createVoice()},b.init=function(){if(b.options.initVoicesLazily)b.nextFreeVoice=b.lazyVoiceAllocator;else{var a;for(a=0;aj;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.DSP=b}}(),function(){if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this.b=new Float32Array(a),this.b[0]=1,this.a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this.a,e=d.length,f=this.b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},a.Filter=b}}(),function(){if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=q+g;s>q;)j=.5*a[q],k=.5*b[q],l=.5*a[r],m=.5*b[r],n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=1/3,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.25,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,ab=c+2*g,bb=c+3*g,cb=c+4*g,db=e[d*g],eb=f[d*g],fb=e[2*d*g],gb=f[2*d*g],hb=.2,ib=$+g;ib>$;)H=a[$]*hb,I=b[$]*hb,J=a[_]*hb,K=b[_]*hb,L=a[ab]*hb,M=b[ab]*hb,N=a[bb]*hb,O=b[bb]*hb,P=a[cb]*hb,Q=b[cb]*hb,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*db+x*fb,s=i+w*db+y*fb,t=C*eb+A*gb,u=-B*eb-z*gb,a[_]=r-t,b[_]=s-u,a[cb]=r+t,b[cb]=s+u,D=h+v*fb+x*db,E=i+w*fb+y*db,F=-C*gb+A*eb,G=B*gb-z*eb,a[ab]=D+F,b[ab]=E+G,a[bb]=D-F,b[bb]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++ab,++bb,++cb},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=1/h;for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),this.size=a,this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}()}();var Random=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};Random.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},Random.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},Random.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c>>1^b[1&a];for(;c>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},Random.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},Random.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},Random.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},Random.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},Random.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},Random.prototype.LOG4=Math.log(4),Random.prototype.SG_MAGICCONST=1+Math.log(4.5),Random.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},Random.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},Random.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=0/0,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},Random.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},Random.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},Random.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},Random.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)};var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");flock.fluid=fluid,flock.init=function(a){var b=a?{audioSettings:a}:void 0,c=flock.enviro.shared=flock.enviro(b);return c},flock.OUT_UGEN_ID="flocking-out",flock.MAX_CHANNELS=32,flock.MIN_BUSES=2,flock.MAX_INPUT_BUSES=32,flock.MIN_INPUT_BUSES=1,flock.ALL_CHANNELS=flock.MAX_INPUT_BUSES,flock.PI=Math.PI,flock.TWOPI=2*Math.PI,flock.HALFPI=Math.PI/2,flock.LOG01=Math.log(.1),flock.LOG001=Math.log(.001),flock.ROOT2=Math.sqrt(2),flock.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},flock.sampleFormats={FLOAT32NE:"float32NE"},fluid.registerNamespace("flock.debug"),flock.debug.failHard=!0,flock.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},fluid.registerNamespace("flock.platform"),flock.platform.isBrowser="undefined"!=typeof window,flock.platform.hasRequire="undefined"!=typeof require,flock.platform.os=flock.platform.isBrowser?window.navigator.platform:fluid.require("os").platform(),flock.platform.isLinux=flock.platform.os.indexOf("Linux")>-1,flock.platform.isAndroid=flock.platform.isLinux&&flock.platform.os.indexOf("arm")>-1,flock.platform.isIOS="iPhone"===flock.platform.os||"iPad"===flock.platform.os||"iPod"===flock.platform.os,flock.platform.isMobile=flock.platform.isAndroid||flock.platform.isIOS,flock.platform.browser=flock.browser(),flock.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,flock.platform.audioEngine=flock.platform.isBrowser?flock.platform.isWebAudio?"webAudio":"moz":"nodejs",fluid.staticEnvironment.audioEngine=fluid.typeTag("flock.platform."+flock.platform.audioEngine),flock.defaultBufferSizeForPlatform=function(){return flock.platform.isMobile?8192:1024},flock.shim={URL:flock.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},flock.requireModule=function(a,b){return b||(b=a),flock.platform.isBrowser?window[a]:flock.platform.hasRequire?require(b)[a]:void 0},flock.noOp=function(){},flock.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},flock.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},flock.generate=function(a,b){var c,d="number"==typeof a?new Float32Array(a):a,e="function"==typeof b;for(c=0;cg&&(g=e);if(g>0)for(d=0;df;f++)g=e?e[f]:1,h=(f+1)*a*b,i+=g*Math.cos(h+d);return i})},flock.generateNormalizedFourierTable=function(a,b,c,d,e){var f=flock.generate(c,function(a){return e(a+1)}),g=flock.generateFourierTable(a,b,c,d,f);return flock.normalize(g)},flock.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,flock.TWOPI/c)},flock.tableGenerators={sin:function(a,b){return flock.generate(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return flock.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return flock.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return flock.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return flock.generate(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return flock.generate(a,function(b){return Math.sin(Math.PI*b/a)})}},flock.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;bd.max&&(d.max=c),cd;d++,e++)g[e]=a[d];return g},flock.parseMidiString=function(a){if(!a||a.length<2)return 0/0;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),f=flock.midiFreq.noteNames[d],g=12*e+f;return g},flock.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=flock.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},flock.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},flock.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},flock.interpolate.cubic=flock.interpolate.hermite,flock.log={warn:function(a){fluid.log(fluid.logLevel.WARN,a)},debug:function(a){fluid.log(fluid.logLevel.INFO,a)}},flock.fail=function(a){if(flock.debug.failHard)throw new Error(a);fluid.log(fluid.logLevel.FAIL,a)},flock.pathParseError=function(a,b,c){var d="Error parsing path '"+b+"'. Segment '"+c+"' could not be resolved. Root object was: "+fluid.prettyPrintJSON(a);flock.fail(d)},flock.get=function(a,b){if(!a)return fluid.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return fluid.getGlobalValue(a);if(b&&""!==b){var c,d=""===b?[]:String(b).split("."),e=a[d[0]];for(c=1;cd;d++){if(a=a[h],e=typeof a,"object"!==e)return void flock.fail("Error while setting a value at path '"+b+"'. A non-container object was found at segment '"+h+"'. Value: "+a);h=f[d],void 0===a[h]&&(a[h]={})}return a[h]=c,c}},flock.invoke=function(a,b,c){var d="function"==typeof a?a:flock.get(a,b);return"function"!=typeof d?void flock.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},flock.input={},flock.input.shouldExpand=function(a,b){var c=flock.parse.specialInputs;return b&&b.options&&b.options.noExpand&&(c=c.concat(b.options.noExpand)),c.indexOf(a)<0},flock.input.pathExpander=function(a){var b,c=fluid.model.parseEL(a),d="inputs",e=c.length,f=e-1,g=[];for(b=0;f>b;b++){var h=c[b],i=c[b+1];if(g.push(h),"model"===i||"options"===i){g=g.concat(c.slice(b+1,f));break}isNaN(Number(i))&&g.push(d)}return g.push(c[f]),g.join(".")},flock.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=flock.input.pathExpander(b),d=a[b],e[c]=d;return e},flock.input.expandPath=function(a){return"string"==typeof a?flock.input.pathExpander(a):flock.input.expandPaths(a)},flock.input.getValueForPath=function(a,b){b=flock.input.expandPath(b);var c=flock.get(a,b);return flock.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},flock.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c-1?flock.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,j=flock.input.resolveValue(a,b,c,i,h,f,e);return flock.set(a,b,j),i&&i.onInputChanged&&i.onInputChanged(h),j},flock.input.setValuesForPaths=function(a,b,c,d){var e,f,g,h={};for(e in b)f=b[e],g=flock.input.set(a,e,f,c,d),h[e]=g;return h},flock.input.set=function(a,b,c,d,e){return"string"==typeof b?flock.input.setValueForPath(a,b,c,d,e):flock.input.setValuesForPaths(a,b,d,e)},fluid.defaults("flock.nodeList",{gradeNames:["fluid.littleComponent","autoInit"],members:{nodes:[],namedNodes:{}}}),flock.nodeList.preInit=function(a){a.head=function(b){return a.nodes.unshift(b),b.nickName&&(a.namedNodes[b.nickName]=b),0},a.before=function(b,c){var d=a.nodes.indexOf(b);return a.insert(d,c),d},a.after=function(b,c){var d=a.nodes.indexOf(b),e=d+1;return a.insert(e,c),e},a.insert=function(b,c){return 0>b?a.head(c):(a.nodes.splice(b,0,c),c.nickName&&(a.namedNodes[c.nickName]=c),b)},a.tail=function(b){return a.nodes.push(b),b.nickName&&(a.namedNodes[b.nickName]=b),a.nodes.length},a.remove=function(b){var c=a.nodes.indexOf(b);return 0>c?c:(a.nodes.splice(c,1),delete a.namedNodes[b.nickName],c)},a.replace=function(b,c){var d=a.nodes.indexOf(c);return 0>d?a.head(b):(a.nodes[d]=b,delete a.namedNodes[c.nickName],b.nickName&&(a.namedNodes[b.nickName]=b),d)},a.clearAll=function(){for(;a.nodes.length>0;)a.nodes.pop()}},fluid.defaults("flock.enviro",{gradeNames:["fluid.standardRelayComponent","flock.nodeList","autoInit"],members:{audioSettings:"@expand:flock.enviro.clampAudioSettings({that}.options.audioSettings)",buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{that}.audioSettings.numBuses","{that}.audioSettings.blockSize"]}},buffers:{},bufferSources:{}},model:{isPlaying:!1,nextAvailableBus:{input:0,interconnect:0}},audioSettings:{rates:{audio:48e3,control:void 0,scheduled:void 0,demand:0,constant:0},blockSize:64,chans:2,numInputBuses:2,numBuses:8,bufferSize:flock.defaultBufferSizeForPlatform()},components:{asyncScheduler:{type:"flock.scheduler.async"},audioStrategy:{type:"flock.audioStrategy.platform",options:{audioSettings:"{enviro}.audioSettings"}}},invokers:{acquireNextBus:{funcName:"flock.enviro.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{that}.audioSettings"]}},listeners:{onCreate:{funcName:"flock.enviro.calculateControlRate",args:["{that}.audioSettings"]}}}),flock.enviro.clampAudioSettings=function(a){return a.numInputBuses=Math.min(a.numInputBuses,flock.MAX_INPUT_BUSES),a.numInputBuses=Math.max(a.numInputBuses,flock.MIN_INPUT_BUSES),a.chans=Math.min(a.chans,flock.MAX_CHANNELS),a.numBuses=Math.max(a.numBuses,a.chans),a.numBuses=Math.max(a.numBuses,flock.MIN_BUSES),a},flock.enviro.calculateControlRate=function(a){return a.rates.control=a.rates.audio/a.blockSize,a},flock.enviro.acquireNextBus=function(a,b,c,d,e){var f=d.nextAvailableBus[a];if(void 0===f)return void flock.fail("An invalid bus type was specified when invoking flock.enviro.acquireNextBus(). Type was: "+a);var g=f+e.chans,h=e.chans+e.numInputBuses;return"interconnect"===a&&(g+=e.numInputBuses,h=b.length),g>=h?void flock.fail("Unable to aquire a bus. There are insufficient buses available. Please use an existing bus or configure additional buses using the enviroment's numBuses and numInputBuses parameters."):(c.change("nextAvailableBus."+a,++f),g)},flock.enviro.preInit=function(a){a.play=function(){a.audioStrategy.start(),a.model.isPlaying=!0},a.stop=function(){a.audioStrategy.stop(),a.model.isPlaying=!1},a.reset=function(){a.stop(),a.asyncScheduler.clearAll(),a.applier.change("nextAvailableBus.input",[]),a.applier.change("nextAvailableBus.interconnect",[]),a.audioStrategy.reset(),a.clearAll()},a.registerBuffer=function(b){b.id&&(a.buffers[b.id]=b)},a.releaseBuffer=function(b){if(b){var c="string"==typeof b?b:b.id;delete a.buffers[c]}}},flock.enviro.finalInit=function(a){a.gen=function(){var b=a.audioStrategy.nodeEvaluator;b.clearBuses(),b.gen()}},flock.enviro.createAudioBuffers=function(a,b){var c,d=[];for(c=0;a>c;c++)d[c]=new Float32Array(b);return d},fluid.defaults("flock.audioStrategy",{gradeNames:["fluid.standardRelayComponent"],components:{nodeEvaluator:{type:"flock.enviro.nodeEvaluator",options:{numBuses:"{enviro}.options.audioSettings.numBuses",blockSize:"{enviro}.options.audioSettings.blockSize",members:{buses:"{enviro}.buses",nodes:"{enviro}.nodes"}}}}}),fluid.defaults("flock.enviro.nodeEvaluator",{gradeNames:["fluid.littleComponent","autoInit"]}),flock.enviro.nodeEvaluator.finalInit=function(a){a.clearBuses=function(){var b,c,d,e=a.options.numBuses,f=a.options.blockSize;for(b=0;e>b;b++)for(c=a.buses[b],d=0;f>d;d++)c[d]=0},a.gen=function(){var b,c,d=a.nodes;for(b=0;be;e++)f=l(i[e],j[e]);for(g=e;g1?b.freeVoices.pop():Object.keys(b.activeVoices).length>b.options.maxVoices?null:b.createVoice()},b.init=function(){if(b.options.initVoicesLazily)b.nextFreeVoice=b.lazyVoiceAllocator;else{var a;for(a=0;ak;k++)h.push(new Float32Array(i))}else h=new Float32Array(i);return flock.invoke(void 0,b.ugen,[c,h,b.options])},flock.parse.reservedWords=["id","ugen","rate","inputs","options"],flock.parse.specialInputs=["value","buffer","table","envelope"],flock.parse.expandUGenDef=function(a){var b,c={};for(b in a)-1===flock.parse.reservedWords.indexOf(b)&&(c[b]=a[b],delete a[b]);return a.inputs=c,a},flock.parse.ugenDefForConstantValue=function(a){return{ugen:"flock.ugen.value",rate:flock.rates.CONSTANT,inputs:{value:a}}},flock.parse.expandValueDef=function(a){var b=typeof a;if("number"===b)return flock.parse.ugenDefForConstantValue(a);if("object"===b)return a;throw new Error("Invalid value type found in ugen definition. UGenDef was: "+fluid.prettyPrintJSON(a))},flock.parse.rateMap={ar:flock.rates.AUDIO,kr:flock.rates.CONTROL,sr:flock.rates.SCHEDULED,dr:flock.rates.DEMAND,cr:flock.rates.CONSTANT},flock.parse.expandRate=function(a,b){return a.rate=flock.parse.rateMap[a.rate]||a.rate,b.overrideRate&&a.rate!==flock.rates.CONSTANT&&(a.rate=b.rate),a},flock.parse.ugenDef=function(a,b){var c=flock.isIterable(a)?flock.parse.ugensForDefs:flock.parse.ugenForDef,d=c(a,b);return d},flock.parse.ugenDef.mergeOptions=function(b){var c=fluid.defaults(b.ugen)||{};return c=fluid.copy(c),c.options=c.ugenOptions,delete c.ugenOptions,a.extend(!0,{},c,b)},flock.parse.ugensForDefs=function(a,b){var c,d=[];for(c=0;cd?void 0:(b=a.substring(d+1),b=b.toLowerCase(),c=flock.file.typeAliases[b],c||b)},flock.file.parseMIMEType=function(a){return flock.file.mimeTypes[a]},flock.file.stringToBuffer=function(a){var b,c=a.length,d=new ArrayBuffer(c),e=new Uint8Array(d);for(b=0;c>b;b++)e[b]=a.charCodeAt(b);return e.buffer},flock.file.readBufferFromDataUrl=function(a){var b=a.src,c=b.indexOf(","),d=b.substring(0,c),e=b.substring(c+1),f=d.indexOf(";base64"),g=f>-1,h=b.indexOf("data:")+5,i=g?f:c,j=b.substring(h,i);g&&(e=atob(e)),flock.applyDeferred(function(){var b=flock.file.stringToBuffer(e);a.success(b,flock.file.parseMIMEType(j))})},flock.file.readBufferFromFile=function(a){var b=new FileReader;return b.onload=function(b){a.success(b.target.result,flock.file.parseFileExtension(a.src.name))},b.readAsArrayBuffer(a.src),b},fluid.registerNamespace("flock.audio"),flock.audio.loadBuffer=function(a){var b=a.src||a.url;if(b){b instanceof ArrayBuffer&&flock.applyDeferred(a.success,[b,a.type]);var c=flock.audio.loadBuffer.readerForSource(b);c(a)}},flock.audio.loadBuffer.readerForSource=function(a){return"undefined"!=typeof File&&a instanceof File?flock.file.readBufferFromFile:0===a.indexOf("data:")?flock.file.readBufferFromDataUrl:flock.net.readBufferFromUrl},flock.audio.decode=function(a){var b=a.success,c=function(c,d){var e=flock.audio.decoderStrategies,f=e[d]||e["default"];a.decoder&&(f="string"==typeof a.decoder?fluid.getGlobalValue(a.decoder):a.decoder),f({rawData:c,type:d,success:b,error:a.error,sampleRate:a.sampleRate||(flock.enviro.shared?flock.enviro.shared.audioSettings.rates.audio:void 0)})};a.success=c,flock.audio.loadBuffer(a)},flock.audio.decode.webAudio=function(a){var b=flock.enviro.shared.audioStrategy.context,c=function(b){var c=flock.bufferDesc.fromAudioBuffer(b);a.success(c)};b.decodeAudioData(a.rawData,c,a.error)},flock.audio.decoderStrategies={"default":flock.audio.decode.webAudio},flock.audio.registerDecoderStrategy=function(a,b){if(a)if("object"!=typeof a)"string"==typeof b&&(b=fluid.getGlobalValue(b)),flock.audio.decoderStrategies[a]=b;else for(var c in a)flock.audio.decoderStrategies[c]=a[c]}}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";flock.shim={URL:"undefined"!=typeof window?window.URL||window.webkitURL||window.msURL:void 0},flock.worker=function(a){var b,c,d=typeof a;if("function"===d)a="("+a.toString()+")();";else if("string"!==d)throw new Error("A flock.worker must be initialized with a String or a Function.");return window.Blob?(c=new Blob([a],{type:"text/javascript"}),b=flock.shim.URL.createObjectURL(c)):b="data:text/javascript;base64,"+window.btoa(a),new Worker(b)},fluid.registerNamespace("flock.scheduler"),fluid.defaults("flock.scheduler.intervalClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),flock.scheduler.intervalClock.finalInit=function(a){a.scheduled={},a.schedule=function(b){var c=setInterval(function(){a.events.tick.fire(b)},b);a.scheduled[b]=c},a.clear=function(b){var c=a.scheduled[b];clearInterval(c),delete a.scheduled[b]},a.clearAll=function(){for(var b in a.scheduled)a.clear(b)},a.end=a.clearAll},fluid.defaults("flock.scheduler.scheduleClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),flock.scheduler.scheduleClock.finalInit=function(a){a.scheduled=[],a.schedule=function(b){var c;c=setTimeout(function(){a.clear(c),a.events.tick.fire(b)},b),a.scheduled.push(c)},a.clear=function(b,c){c=void 0===c?a.scheduled.indexOf(b):c,c>-1&&a.scheduled.splice(c,1),clearTimeout(b)},a.clearAll=function(){for(var b=0;b-1&&b.scheduled.splice(c,1),clearTimeout(a)},b.clearAll=function(){for(var a=0;a-1)return a.scheduleClock.events.tick.removeListener(b),void a.scheduleListeners.splice(d,1);a.intervalClock.events.tick.removeListener(b);for(c in a.intervalListeners)d=a.intervalListeners[c].indexOf(b),d>-1&&a.intervalListeners[c].splice(d,1)}},a.clearRepeat=function(b){a.intervalClock.clear(b);var c,d,e=a.intervalListeners[b];if(e){for(c=0;c=c?0:b/c*6e4}}}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";fluid.registerNamespace("flock.webAudio"),flock.webAudio.createNode=function(a,b,c,d){"string"!=typeof b&&(c=b.args,d=b.params,b=b.node),c=void 0===c||null===c?[]:fluid.isArrayable(c)?c:[c];var e="create"+b,f=e.indexOf("Node");f>-1&&(e=e.substring(0,f));var g=a[e].apply(a,c);return flock.webAudio.initializeNodeInputs(g,d),g},flock.webAudio.initializeNodeInputs=function(a,b){if(a&&b){for(var c in b)a[c].value=b[c];return a}},fluid.registerNamespace("flock.webAudio.chrome"),flock.webAudio.chrome.getSources=function(a){return MediaStreamTrack.getSources(function(b){var c=fluid.transform(b,function(a){return a.deviceId=a.id,a});a(c)})},flock.webAudio.mediaStreamFailure=function(){flock.fail("Media Capture and Streams are not supported on this browser.")};var a={AudioContext:window.AudioContext||window.webkitAudioContext,getUserMediaImpl:navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||flock.webAudio.mediaStreamFailure,getUserMedia:function(){flock.shim.getUserMediaImpl.apply(navigator,arguments)},getMediaDevicesImpl:navigator.getMediaDevices?navigator.getMediaDevices:"undefined"!=typeof window.MediaStreamTrack?flock.webAudio.chrome.getSources:flock.webAudio.mediaStreamFailure,getMediaDevice:function(){flock.shim.getMediaDevicesImpl.apply(navigator,arguments)}};jQuery.extend(flock.shim,a),fluid.defaults("flock.audioStrategy.web",{gradeNames:["flock.audioStrategy","autoInit"],members:{context:"{contextWrapper}.context",sampleRate:"{that}.context.sampleRate",chans:{expander:{funcName:"flock.audioStrategy.web.calculateChannels",args:["{contextWrapper}.context","{enviro}.options.audioSettings.chans"]}},jsNode:{expander:{funcName:"flock.audioStrategy.web.createScriptProcessor",args:["{contextWrapper}.context","{enviro}.options.audioSettings.bufferSize","{enviro}.options.audioSettings.numInputBuses","{that}.chans"]}}},model:{isGenerating:!1,shouldInitIOS:flock.platform.isIOS,krPeriods:{expander:{funcName:"flock.audioStrategy.web.calcNumKrPeriods",args:"{enviro}.options.audioSettings"}}},invokers:{start:{func:"{that}.events.onStart.fire"},stop:{func:"{that}.events.onStop.fire"},reset:{func:"{that}.events.onReset.fire"}},components:{contextWrapper:{type:"flock.webAudio.contextWrapper"},nativeNodeManager:{type:"flock.webAudio.nativeNodeManager"},inputDeviceManager:{type:"flock.webAudio.inputDeviceManager"}},events:{onStart:null,onStop:null,onReset:null},listeners:{onCreate:[{funcName:"flock.audioStrategy.web.setChannelState",args:["{that}.chans","{contextWrapper}.context.destination"]},{funcName:"flock.audioStrategy.web.pushAudioSettings",args:["{that}.sampleRate","{that}.chans","{enviro}.options.audioSettings"]},{funcName:"flock.audioStrategy.web.bindWriter",args:["{that}.jsNode","{nodeEvaluator}","{nativeNodeManager}","{that}.model","{enviro}.options.audioSettings"]}],onStart:[{func:"{that}.applier.change",args:["isGenerating",!0]},{funcName:"flock.audioStrategy.web.iOSStart",args:["{that}.model","{that}.applier","{contextWrapper}.context","{that}.jsNode"]},{func:"{nativeNodeManager}.connect"}],onStop:[{func:"{that}.applier.change",args:["isGenerating",!1]},{func:"{nativeNodeManager}.disconnect"}],onReset:[{func:"{that}.stop"},{func:"{nativeNodeManager}.removeAllInputs"},{func:"{that}.applier.change",args:["playState.written",0]}]}}),flock.audioStrategy.web.calculateChannels=function(a,b){return flock.platform.browser.safari?a.destination.channelCount:Math.min(b,a.destination.maxChannelCount)},flock.audioStrategy.web.pushAudioSettings=function(a,b,c){c.rates.audio=a,c.chans=b},flock.audioStrategy.web.setChannelState=function(a,b){flock.platform.browser.safari||(b.channelCount=a,b.channelCountMode="explicit",b.channelInterpretation="discrete")},flock.audioStrategy.web.calcNumKrPeriods=function(a){return a.bufferSize/a.blockSize},flock.audioStrategy.web.createScriptProcessor=function(a,b,c,d){var e=a.createScriptProcessor?"createScriptProcessor":"createJavaScriptNode",f=a[e](b,c,d);return f.channelCountMode="explicit",f},flock.audioStrategy.web.bindWriter=function(a,b,c,d,e){a.model=d,a.evaluator=b,a.audioSettings=e,a.inputNodes=c.inputNodes,a.onaudioprocess=flock.audioStrategy.web.writeSamples},flock.audioStrategy.web.writeSamples=function(a){var b,c,d,e=this.model,f=this.inputNodes.length,g=this.evaluator,h=this.audioSettings,i=a.inputBuffer,j=a.outputBuffer,k=e.krPeriods,l=g.buses,m=h.blockSize,n=h.chans,o=i.numberOfChannels;if(g.nodes.length<1)for(b=0;n>b;b++)flock.generate.silence(j.getChannelData(b));else for(c=0;k>c;c++){var p=c*m;if(g.clearBuses(),f>0)for(b=0;o>b;b++){var q=i.getChannelData(b),r=n+b,s=l[r];for(d=0;m>d;d++)s[d]=q[d+p]}for(g.gen(),b=0;n>b;b++){var t=l[b],u=j.getChannelData(b);for(d=0;m>d;d++)u[d+p]=t[d]}}},flock.audioStrategy.web.iOSStart=function(a,b,c,d){if(a.shouldInitIOS){var e=c.createBufferSource();e.connect(d),e.start(0),e.stop(0),e.disconnect(0),b.change("shouldInitIOS",!1)}},fluid.defaults("flock.webAudio.contextWrapper",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"@expand:flock.webAudio.contextWrapper.create()"},listeners:{onCreate:[{funcName:"flock.webAudio.contextWrapper.registerSingleton",args:["{that}"]}]}}),flock.webAudio.contextWrapper.create=function(){var a=fluid.staticEnvironment.webAudioContextWrapper;return a?a.context:new flock.shim.AudioContext},flock.webAudio.contextWrapper.registerSingleton=function(a){fluid.staticEnvironment.webAudioContextWrapper=a},fluid.defaults("flock.webAudio.nativeNodeManager",{gradeNames:["fluid.eventedComponent","autoInit"],audioSettings:"{enviro}.options.audioSettings",members:{outputNode:void 0,inputNodes:[],merger:{expander:{funcName:"flock.webAudio.nativeNodeManager.createInputMerger",args:["{contextWrapper}.context","{enviro}.options.audioSettings.numInputBuses","{web}.jsNode"]}}},invokers:{connect:{funcName:"flock.webAudio.nativeNodeManager.connect",args:["{that}.merger","{web}.jsNode","{that}.outputNode","{contextWrapper}.context.destination"]},createNode:{funcName:"flock.webAudio.createNode",args:["{contextWrapper}.context","{arguments}.0","{arguments}.1","{arguments}.2"]},createInputNode:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2","{arguments}.3"]},createMediaStreamInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaStreamSource","{arguments}.0",void 0,"{arguments}.1"]},createMediaElementInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaElementSource","{arguments}.0",void 0,"{arguments}.1"]},createOutputNode:{funcName:"flock.webAudio.nativeNodeManager.createOutputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},disconnect:{funcName:"flock.webAudio.nativeNodeManager.disconnect",args:["{that}.merger","{web}.jsNode","{that}.outputNode"]},insertInput:{funcName:"flock.webAudio.nativeNodeManager.insertInput",args:["{that}","{enviro}","{arguments}.0","{arguments}.1"]},removeInput:{funcName:"flock.webAudio.nativeNodeManager.removeInput",args:["{arguments}.0","{that}.inputNodes"]},removeAllInputs:{funcName:"flock.webAudio.nativeNodeManager.removeAllInputs",args:"{that}.inputNodes"},insertOutput:{funcName:"flock.webAudio.nativeNodeManager.insertOutput",args:["{that}","{arguments}.0"]},removeOutput:{funcName:"flock.webAudio.nativeNodeManager.removeOutput",args:["{web}.jsNode"]}},listeners:{onCreate:{func:"{that}.insertOutput",args:"{web}.jsNode"}}}),flock.webAudio.nativeNodeManager.createInputNode=function(a,b,c,d,e){var f=a.createNode(b,c,d);return a.insertInput(f,e)},flock.webAudio.nativeNodeManager.createOutputNode=function(a,b,c,d){var e=a.createNode(b,c,d);return a.insertOutput(e)},flock.webAudio.nativeNodeManager.createInputMerger=function(a,b,c){var d=a.createChannelMerger(b);return d.channelInterpretation="discrete",d.connect(c),d},flock.webAudio.nativeNodeManager.connect=function(a,b,c,d){a.connect(b),c.connect(d),b!==c&&b.connect(c)},flock.webAudio.nativeNodeManager.disconnect=function(a,b,c){a.disconnect(0),b.disconnect(0),c.disconnect(0)},flock.webAudio.nativeNodeManager.removeAllInputs=function(a){for(var b=0;b=e)return void flock.fail("There are too many input nodes connected to Flocking. The maximum number of input buses is currently set to "+e+". Either remove an existing input node or increase Flockings numInputBuses option.");d=void 0===d?b.acquireNextBus("input"):d;var f=d-b.audioSettings.chans;return a.inputNodes.push(c),c.connect(a.merger,0,f),d},flock.webAudio.nativeNodeManager.removeInput=function(a,b){var c=b.indexOf(a);c>-1&&b.splice(c,1),a.disconnect(0)},flock.webAudio.nativeNodeManager.insertOutput=function(a,b){return a.outputNode&&a.outputNode.disconnect(0),a.outputNode=b,b},flock.webAudio.nativeNodeManager.removeOutput=function(a){flock.webAudio.nativeNodeManager.insertOutput(a)},fluid.defaults("flock.webAudio.inputDeviceManager",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"{contextWrapper}.context"},invokers:{openAudioDevice:{funcName:"flock.webAudio.inputDeviceManager.openAudioDevice",args:["{arguments}.0","{that}.openAudioDeviceWithId","{that}.openFirstAudioDeviceWithLabel","{that}.openAudioDeviceWithConstraints"]},openAudioDeviceWithConstraints:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithConstraints",args:["{that}.context","{enviro}","{nativeNodeManager}.createMediaStreamInput","{arguments}.0"]},openAudioDeviceWithId:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithId",args:["{arguments}.0","{that}.openAudioDeviceWithConstraints"]},openFirstAudioDeviceWithLabel:{funcName:"flock.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel",args:["{arguments}.0","{that}.openAudioDeviceWithId"]}}}),flock.webAudio.inputDeviceManager.openAudioDevice=function(a,b,c,d){if(a){if(a.id)return b(a.id);if(a.label)return c(a.label)}return d()},flock.webAudio.inputDeviceManager.openAudioDeviceWithId=function(a,b){var c={audio:{optional:[{sourceId:a}]}};b(c)},flock.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel=function(a,b){a&&flock.shim.getMediaDevices(function(c){var d=c.filter(function(b){return b.label.toLowerCase()===a.toLowerCase()?!0:void 0});d.length>0?b(d[0].deviceId):fluid.log(fluid.logLevel.IMPORTANT,"An audio device named '"+a+"' could not be found.")})},flock.webAudio.inputDeviceManager.openAudioDeviceWithConstraints=function(a,b,c,d){function e(a){fluid.log(fluid.logLevel.IMPORTANT,"An error occurred while trying to access the user's microphone. "+a)}function f(a){c(a,g)}d=d||{audio:!0};var g=b.acquireNextBus("input");return flock.shim.getUserMedia(d,f,e),g},fluid.demands("flock.audioStrategy.platform","flock.platform.webAudio",{funcName:"flock.audioStrategy.web"})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery"),b=flock.requireModule("DSP","dspapi"),c=flock.requireModule("Filter","dspapi");flock.aliasUGen=function(b,c,d,e){var f=flock.get(b);flock.set(f,c,function(b,c,d){return d=a.extend(!0,{},e,d),f(b,c,d)}),fluid.defaults(b+"."+c,d)},flock.aliasUGens=function(a,b){var c,d;for(c in b)d=b[c],flock.aliasUGen(a,c,{inputs:d.inputDefaults},d.options)},flock.krMul=function(a,b,c){var d,e=c.output[0];for(d=0;a>d;d++)b[d]=b[d]*e},flock.mul=function(a,b,c){var d,e=c.output;for(d=0;a>d;d++)b[d]=b[d]*e[d]},flock.krAdd=function(a,b,c,d){var e,f=d.output[0];for(e=0;a>e;e++)b[e]=b[e]+f},flock.add=function(a,b,c,d){var e,f=d.output;for(e=0;a>e;e++)b[e]=b[e]+f[e]},flock.krMulAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f+g[e]},flock.mulKrAdd=function(a,b,c,d){var e,f=c.output,g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f[e]+g},flock.krMulKrAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f+g},flock.mulAdd=function(a,b,c,d){var e,f=c.output,g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f[e]+g[e]},flock.onMulAddInputChanged=function(a){var b,c=a.inputs.mul,d=a.inputs.add;return c||d?(b=c?d?c.rate!==flock.rates.AUDIO?d.rate!==flock.rates.AUDIO?flock.krMulKrAdd:flock.krMulAdd:d.rate!==flock.rates.AUDIO?flock.mulKrAdd:flock.mulAdd:c.rate!==flock.rates.AUDIO?flock.krMul:flock.mul:d.rate!==flock.rates.AUDIO?flock.krAdd:flock.add,void(a.mulAdd=function(e){b(e,a.output,c,d)})):void(a.mulAdd=flock.noOp)},flock.ugen=function(a,b,c){c=c||{};var d={rate:c.rate||flock.rates.AUDIO,inputs:a,output:b,options:c,model:c.model||{value:0},multiInputs:{},tags:["flock.ugen"]};return d.lastOutputIdx=d.output.length-1,d.get=function(a){return flock.input.get(d.inputs,a)},d.set=function(a,b){return flock.input.set(d.inputs,a,b,d,function(a){return null!==a&&void 0!==a?flock.parse.ugenDef(a,{audioSettings:d.options.audioSettings,buses:d.options.audioSettings.buses,buffers:d.options.audioSettings.buffers}):void 0})},d.input=function(a,b){return a?"string"==typeof a?arguments.length<2?d.get(a):d.set(a,b):flock.isIterable(a)?d.get(a):d.set(a,b):void 0},d.calculateStrides=function(){var a,b,c,e=d.model,f=d.options.strideInputs,g=d.inputs;if(e.strides=e.strides||{},f)for(a=0;ae;e++)b[e]=c.unscaled;d.mulAdd(a),c.value=b[a-1]},d.onInputChanged=function(){var a=d.inputs,b=d.model;b.unscaled=a.value,d.gen="constant"!==d.rate?d.dynamicGen:void 0,flock.onMulAddInputChanged(d),d.dynamicGen(1)},d.onInputChanged(),d},fluid.defaults("flock.ugen.value",{rate:"control",inputs:{value:1,mul:null,add:null},ugenOptions:{model:{unscaled:1,value:1},tags:["flock.ugen.valueType"]}}),flock.ugen.silence=function(a,b,c){var d=flock.ugen(a,b,c);return d.onInputChanged=function(){for(var a=0;ab;b++)e[b]=0;d.mulAdd(a),d.model.value=e[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.passThrough",{rate:"audio",inputs:{source:null,mul:null,add:null}}),flock.ugen.change=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){for(var b,c=d.model,e=d.inputs.initial.output,f=c.strides.initial,g=d.inputs.target.output,h=c.strides.target,i=d.output,j=c.samplesLeft,k=c.crossfadeLevel,l=0,m=0,n=0;a>l;l++,m+=f,n+=h)j>0?(b=e[m],j--):k>0?(b=e[m]*k+g[n]*(1-k),k-=c.crossfadeStepSize):b=g[n],i[l]=b;
c.samplesLeft=j,c.crossfadeLevel=k,c.value=b},d.onInputChanged=function(a){var b=d.model,c=d.inputs;"time"!==a&&a||(b.samplesLeft=Math.round(c.time.output[0]*b.sampleRate)),"crossfade"!==a&&a||(b.crossfadeStepSize=1/Math.round(c.crossfade.output[0]*b.sampleRate),b.crossfadeLevel=c.crossfade.output[0]>0?1:0),d.calculateStrides()},d.onInputChanged(),d},fluid.defaults("flock.ugen.change",{rate:"audio",inputs:{initial:0,target:0,time:0,crossfade:0},ugenOptions:{model:{samplesLeft:0,crossfadeStepSize:0,crossfadeLevel:0,value:0},strideInputs:["initial","target"]}}),flock.ugen.valueChangeTrigger=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.source.output,h=d.output;for(b=0,c=0;a>b;b++,c+=f.strides.source)e=g[c],h[b]=e!==f.prevVal?1:0,f.prevVal=e;f.value=e},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevVal=null)},d.calculateStrides(),d},fluid.defaults("flock.ugen.valueChangeTrigger",{rate:"control",inputs:{source:0},ugenOptions:{model:{value:0,prevVal:0},strideInputs:["source"]}}),flock.ugen.inputChangeTrigger=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h=d.model,i=d.inputs.source.output,j=h.strides.source,k=d.inputs.duration.output,l=h.strides.duration,m=h.prevDur,n=d.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)f=i[c],g=k[e],g!==m&&(h.prevDur=g,h.remainingOpenSamples=f>0?g>0?h.sampleRate*g:1:0),h.remainingOpenSamples>0?(n[b]=f,h.remainingOpenSamples--):n[b]=0;h.value=n[a-1]},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevDur=null)},d.calculateStrides(),d},fluid.defaults("flock.ugen.inputChangeTrigger",{rate:"control",inputs:{source:0,duration:0},ugenOptions:{model:{value:0,prevDuration:0,remainingOpenSamples:0},strideInputs:["source","duration"]}}),flock.ugen.triggerCallback=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h=d.model,i=d.options,j=d.output,k=d.inputs,l=h.strides.trigger,m=h.strides.source,n=k.trigger.output,o=k.source.output,p=i.callback,q=p.func,r=p.args,s=p.this,t=h.lastArgIdx,u=h.prevTrig;for(b=c=e=0;a>b;b++,c+=l,e+=m)f=n[c],g=o[e],f>0&&0>=u&&q&&(r[t]=g,q.apply(s,r)),j[b]=g,u=f;h.prevTrig=u,h.value=g},d.onInputChanged=function(){var a=d.options,b=d.model,c=a.callback,e=c.funcName;if(e)c.func=fluid.getGlobalValue(e);else if(c.this&&c.method){if("string"!=typeof c.this)throw new Error("flock.ugen.triggerCallback doesn't support raw 'this' objects.Use a global key path instead.");c.this="string"==typeof c.this?fluid.getGlobalValue(c.this):c.this,c.func=fluid.get(c.this,c.method)}b.lastArgIdx=c.args.length,d.calculateStrides()},d.onInputChanged(),d},fluid.defaults("flock.ugen.triggerCallback",{rate:"audio",inputs:{source:0,trigger:0},ugenOptions:{model:{value:0,funcName:void 0,lastArgIdx:0},callback:{"this":void 0,method:void 0,func:void 0,args:[]},strideInputs:["source","trigger"]}}),flock.ugen.math=function(a,c,d){var e=flock.ugen(a,c,d);return e.expandedSource=new Float32Array(e.options.audioSettings.blockSize),e.krSourceKrInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,f=flock.generate(e.expandedSource,e.inputs.source.output[0]);b[a](d,f,c.output[0]),e.model.value=d[d.length-1]},e.krSourceArInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,f=flock.generate(e.expandedSource,e.inputs.source.output[0]);b[a](d,f,c.output),e.model.value=d[d.length-1]},e.arSourceKrInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,f=e.inputs.source.output;b[a](d,f,c.output[0]),e.model.value=d[d.length-1]},e.arSourceArInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output;b[a](e.output,e.inputs.source.output,c.output),e.model.value=d[d.length-1]},e.onInputChanged=function(){var a,b,c,d=Object.keys(e.inputs);for(a=0;ab;b++)c[b]=e[b]},d.sumGen=function(a){var b,c,e,f=d.inputs.sources,g=d.output;for(b=0;a>b;b++){for(e=0,c=0;cb;b++,c+=g.strides.phase,e+=g.strides.freq)f=p+j[c]*n,f>=l?f-=l:0>f&&(f+=l),o[b]=d.interpolate(f,k),p+=i[e]*m,p>=l?p-=l:0>p&&(p+=l);g.phase=p,d.mulAdd(a),g.value=o[a-1]},d.onInputChanged=function(a){if(flock.ugen.osc.onInputChanged(d),!a||"table"===a){var b=d.model,c=d.inputs.table;c.length<1&&(c=d.inputs.table=flock.ugen.osc.emptyTable),b.tableLen=c.length,b.tableIncHz=b.tableLen/b.sampleRate,b.tableIncRad=b.tableLen/flock.TWOPI}},d.onInputChanged(),d},flock.ugen.osc.emptyTable=new Float32Array([0,0,0]),flock.ugen.osc.onInputChanged=function(a){a.calculateStrides(),flock.onMulAddInputChanged(a)},fluid.defaults("flock.ugen.osc",{rate:"audio",inputs:{freq:440,phase:0,table:[],mul:null,add:null},ugenOptions:{interpolation:"linear",model:{phase:0,value:0},strideInputs:["freq","phase"]},tableSize:8192}),flock.ugen.osc.define=function(a,b){var c=a.lastIndexOf("."),d=a.substring(0,c),e=a.substring(c+1),f=flock.get(d);f[e]=function(a,c,d){var e=fluid.defaults("flock.ugen.osc"),f=fluid.merge(null,e,d),g=f.tableSize;return a.table=flock.fillTable(g,b),flock.ugen.osc(a,c,d)},fluid.defaults(a,fluid.defaults("flock.ugen.osc"))},flock.ugen.osc.define("flock.ugen.sinOsc",flock.tableGenerators.sin),flock.ugen.osc.define("flock.ugen.triOsc",flock.tableGenerators.tri),flock.ugen.osc.define("flock.ugen.sawOsc",flock.tableGenerators.saw),flock.ugen.osc.define("flock.ugen.squareOsc",flock.tableGenerators.square),flock.ugen.sin=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.freq.output,h=d.inputs.phase.output,i=d.output,j=f.phase,k=f.sampleRate;for(b=0,c=0,e=0;a>b;b++,c+=f.strides.phase,e+=f.strides.freq)i[b]=Math.sin(j+h[c]),j+=g[e]/k*flock.TWOPI;f.phase=j,d.mulAdd(a),f.value=i[a-1]},d.onInputChanged=function(){flock.ugen.osc.onInputChanged(d)},d.onInputChanged(),d},fluid.defaults("flock.ugen.sin",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,value:0},strideInputs:["freq","phase"]}}),flock.ugen.lfSaw=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.inputs.freq.output,g=d.output,h=e.scale,i=d.inputs.phase.output[0],j=e.phase;for(b=0,c=0;a>b;b++,c+=e.strides.freq)g[b]=j+i,j+=f[c]*h,j>=1?j-=2:-1>=j&&(j+=2);e.phase=j,d.mulAdd(a),e.value=g[a-1]},d.onInputChanged=function(){var a=d.model;a.freqInc=d.inputs.freq.rate===flock.rates.AUDIO?1:0,a.phase=0,d.calculateStrides(),flock.onMulAddInputChanged(d)},d.init=function(){d.model.scale=2*(1/d.options.sampleRate),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.lfSaw",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,value:0},strideInputs:["freq"]}}),flock.ugen.lfPulse=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.inputs,f=d.model,g=e.freq.output,h=f.freqInc,i=e.width.output[0],j=d.output,k=f.scale,l=void 0!==f.phase?f.phase:e.phase.output[0];for(b=0,c=0;a>b;b++,c+=h)l>=1?(l-=1,j[b]=.5>i?1:-1):j[b]=i>l?1:-1,l+=g[c]*k;f.phase=l,d.mulAdd(a),f.value=j[a-1]},d.onInputChanged=function(){d.model.freqInc=d.inputs.freq.rate===flock.rates.AUDIO?1:0,flock.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.options.sampleRate,d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.lfPulse",{rate:"audio",inputs:{freq:440,phase:0,width:.5,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,value:0}}}),flock.ugen.impulse=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.inputs,g=d.model,h=d.output,i=f.freq.output,j=g.strides.freq,k=f.phase.output[0],l=g.phase,m=g.scale;for(l+=k,b=0,c=0;a>b;b++,c+=j)l>=1?(l-=1,e=1):e=0,h[b]=e,l+=i[c]*m;g.phase=l-k,d.mulAdd(a),g.value=h[a-1]},d.onInputChanged=function(){d.calculateStrides(),flock.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.model.sampleRate,d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.impulse",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,scale:0,value:0},strideInputs:["freq"]}}),flock.ugen.t2a=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(){for(var a=d.model,b=d.inputs.source.output[0],c=0|d.inputs.offset.output[0],e=d.output,f=0;f0&&a.prevTrig<=0&&(e[c]=b),a.prevTrig=b,a.value=e[e.length-1]},d},fluid.defaults("flock.ugen.t2a",{rate:"audio",inputs:{source:null,offset:0},ugenOptions:{model:{prevTrig:0,value:0}}}),flock.ugen.latch=function(a,b,c){var d=flock.ugen(a,b,c);return d.arGen=function(a){var b,c,e,f=d.model,g=d.inputs,h=g.source.output,i=g.trigger,j=f.strides.source,k=d.output;for(void 0===f.holdVal&&(f.holdVal=h[0]),b=0,c=0;a>b;b++,c+=j)e=i.output[b],k[b]=e>0&&f.prevTrig<=0?f.holdVal=h[c]:f.holdVal,f.prevTrig=e;d.mulAdd(a),f.value=k[a-1]},d.krGen=function(a){var b,c=d.model,e=d.output,f=d.inputs.trigger.output[0];for((void 0===c.holdVal||f>0&&c.prevTrig<=0)&&(c.holdVal=d.inputs.source.output[0]),c.prevTrig=f,b=0;a>b;b++)e[b]=c.holdVal;d.mulAdd(a),c.value=e[a-1]},d.onInputChanged=function(){d.calculateStrides(),d.gen=d.inputs.trigger.rate===flock.rates.AUDIO?d.arGen:d.krGen,flock.onMulAddInputChanged(d)},d.onInputChanged(),d},fluid.defaults("flock.ugen.latch",{rate:"audio",inputs:{source:null,trigger:0,mul:null,add:null},ugenOptions:{strideInputs:["source"],model:{prevTrig:0,value:0}}}),flock.ugen.buffer=function(a){a.onBufferInputChanged=function(b){var c=a.model,d=a.inputs;(c.bufDef!==d.buffer||"buffer"===b)&&(c.bufDef=d.buffer,flock.parse.bufferForDef(c.bufDef,a,flock.enviro.shared))},a.setBuffer=function(b){a.buffer=b,a.onBufferReady&&a.onBufferReady(b)},a.initBuffer=function(){a.buffer=a.model.bufDef=flock.bufferDesc({format:{sampleRate:a.options.audioSettings.rates.audio},data:{channels:[new Float32Array(a.output.length)]}})}},flock.ugen.playBuffer=function(a,b,c){var d=flock.ugen(a,b,c);return d.crRegularSpeedGen=function(b){var c,e,f,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.buffer.data.channels[i],k=a.trigger.output,l=g.idx,m=j.length,n=d.inputs.loop.output[0],o=d.inputs.start.output[0]*m|0,p=d.inputs.end.output[0]*m|0;for(c=0,e=0;b>c;c++,e+=g.strides.trigger){if(k[e]>0&&g.prevTrig<=0)l=o;else if(l>=p){if(!(n>0)){h[c]=0;continue}l=o}g.prevTrig=k[e],f=d.interpolate(l,j),h[c]=f,l+=g.stepSize}g.idx=l,d.mulAdd(b),g.value=h[b-1]},d.krSpeedGen=function(b){var c,e,f,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.inputs.speed.output[0],k=d.buffer.data.channels[i],l=a.trigger.output,m=g.idx,n=k.length,o=d.inputs.loop.output[0],p=d.inputs.start.output[0]*n|0,q=d.inputs.end.output[0]*n|0;for(c=0,e=0;b>c;c++,e+=g.strides.trigger){if(l[e]>0&&g.prevTrig<=0)m=p;else if(m>=q){if(!(o>0)){h[c]=0;continue}m=p}g.prevTrig=l[e],f=d.interpolate(m,k),h[c]=f,m+=g.stepSize*j}g.idx=m,d.mulAdd(b),g.value=h[b-1]},d.onInputChanged=function(a){var b=d.inputs,c=b.speed;d.onBufferInputChanged(a),d.gen=c.rate===flock.rates.CONSTANT&&1===c.output[0]?d.crRegularSpeedGen:d.krSpeedGen,d.calculateStrides(),flock.onMulAddInputChanged(d)},d.onBufferReady=function(){var a=d.model,b=d.inputs.end.output[0],c=d.inputs.channel.output[0],e=d.buffer.data.channels[c];a.idx=b*e.length|0,a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.init=function(){flock.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.playBuffer",{rate:"audio",inputs:{channel:0,loop:0,speed:1,start:0,end:1,trigger:1,buffer:null,mul:null,add:null},ugenOptions:{model:{value:0,idx:0,stepSize:0,prevTrig:0,channel:void 0},strideInputs:["trigger"],interpolation:"linear"}}),flock.ugen.readBuffer=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g=d.model,h=g.strides.phase,i=d.output,j=d.inputs.channel.output[0],k=d.inputs.phase.output,l=d.buffer.data.channels[j],m=l.length;for(b=e=0;a>b;b++,e+=h)c=k[e]*m,f=d.interpolate(c,l),i[b]=f;d.mulAdd(a),g.value=i[a-1]},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),flock.onMulAddInputChanged(d)},d.init=function(){flock.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.readBuffer",{rate:"audio",inputs:{buffer:null,channel:0,phase:0,mul:null,add:null},ugenOptions:{model:{channel:void 0,value:0},strideInputs:["phase"],interpolation:"linear"}}),flock.ugen.bufferDuration=function(a,b,c){var d=flock.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.inputs.channel.output[0],f=d.buffer.data.channels[e],g=d.buffer.format.sampleRate;for(b=0;a>b;b++)d.output[b]=c.value=f.length/g},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===flock.rates.CONTROL||a===flock.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,flock.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.bufferDuration",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{value:0}}}),flock.ugen.bufferLength=function(a,b,c){var d=flock.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.inputs.channel.output[0],f=d.buffer.data.channels[e];for(b=0;a>b;b++)d.output[b]=c.value=f.length},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===flock.rates.CONTROL||a===flock.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,flock.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.bufferLength",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{value:0}}}),flock.ugen.bufferPhaseStep=function(a,b,c){var d=flock.ugen(a,b,c);return d.krGen=function(a){var b,c=d.output,e=d.model.value;for(b=0;a>b;b++)c[b]=e;d.mulAdd(a)},d.onInputChanged=function(a){d.onBufferInputChanged(a),flock.onMulAddInputChanged(d)},d.onBufferReady=function(a){var b=d.model,c=d.inputs.channel.output[0],e=a.data.channels[c],f=d.options.audioSettings.rates.audio,g=d.buffer.format.sampleRate||f;b.scale=g/f,d.output[0]=b.value=1/(e.length*b.scale)},d.init=function(){var a=d.rate;d.gen=a===flock.rates.CONTROL||a===flock.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,flock.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.bufferPhaseStep",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{scale:1,value:0}}}),flock.ugen.sampleRate=function(a,b,c){var d=flock.ugen(a,b,c);return d.output[0]=d.options.audioSettings.rates.audio,d},fluid.defaults("flock.ugen.sampleRate",{rate:"constant",inputs:{}}),flock.ugen.dust=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(b){var c,e,f,g,h=d.model,i=d.output,j=a.density.output[0];for(j!==h.density?(h.density=j,c=h.threshold=j*h.sampleDur,e=h.scale=c>0?1/c:0):(c=h.threshold,e=h.scale),g=0;b>g;g++)f=Math.random(),i[g]=c>f?f*e:0;d.mulAdd(b),h.value=i[b-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.dust",{rate:"audio",inputs:{density:1,mul:null,add:null},ugenOptions:{model:{density:0,scale:0,threshold:0,value:0}}}),flock.ugen.whiteNoise=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.output;for(b=0;a>b;b++)c[b]=Math.random();d.mulAdd(a),d.model.value=c[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.whiteNoise",{rate:"audio",inputs:{mul:null,add:null}}),flock.ugen.pinkNoise=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g=d.model,h=g.state,i=d.a,j=d.p,k=g.offset,l=d.output;for(b=0;a>b;b++){for(f=0,c=0;c.001?g:.001;do for(f.counter<=0&&(f.counter=f.sampleRate/g,f.counter=f.counter>1?f.counter:1,"linear"===d.options.interpolation?(f.start=f.unscaled=f.end,f.end=Math.random(),f.ramp=f.ramp=(f.end-f.start)/f.counter):(f.start=f.unscaled=Math.random(),f.ramp=0)),c=he;e++)i[j]=f.unscaled,f.unscaled+=f.ramp,j++;while(h);d.mulAdd(b),f.value=i[b-1]},d.input=function(){d.model.end=Math.random(),d.onInputChanged()},d.input(),d},fluid.defaults("flock.ugen.lfNoise",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{counter:0,level:0,unscaled:0,value:0}}}),flock.ugen.random=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.generator,e=d.output;for(b=0;a>b;b++)e[b]=c.uniform(-1,1);d.mulAdd(a),d.model.value=e[a-1]},d.onInputChanged=function(a){"seed"===a&&d.initGenerator(),flock.onMulAddInputChanged(d)},d.initGenerator=function(){var a=d.inputs.seed;d.generator=a?new Random(a):new Random},d.init=function(){d.initGenerator(),d.calculateStrides(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.random",{rate:"audio",inputs:{seed:null,mul:null,add:null}}),flock.ugen.random.exponential=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.inputs.lambda.output,h=d.model.strides.lambda;for(b=c=0;a>b;b++,c+=h)f[b]=e.exponential(g[c]);d.mulAdd(a),d.model.value=f[a-1]},d},fluid.defaults("flock.ugen.random.exponential",{rate:"audio",inputs:{seed:null,lambda:1,mul:null,add:null},ugenOptions:{strideInputs:["lambda"]}}),flock.ugen.random.gamma=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.generator,i=d.output,j=f.strides.alpha,k=g.alpha.output,l=f.strides.beta,m=g.beta.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)i[b]=h.gamma(k[c],m[e]);d.mulAdd(a),f.value=i[a-1]},d},fluid.defaults("flock.ugen.random.gamma",{rate:"audio",inputs:{seed:null,alpha:1,beta:2,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),flock.ugen.random.normal=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.output,h=d.inputs,i=d.generator,j=f.strides.mu,k=h.mu.output,l=f.strides.sigma,m=h.sigma.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)g[b]=i.normal(k[c],m[e]);d.mulAdd(a),f.value=g[a-1]},d},fluid.defaults("flock.ugen.random.normal",{rate:"audio",inputs:{seed:null,mu:0,sigma:1,mul:null,add:null},ugenOptions:{strideInputs:["mu","sigma"]}}),flock.ugen.random.pareto=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.model.strides.alpha,h=d.inputs.alpha.output;for(b=c=0;a>b;b++,c+=g)f[b]=e.pareto(h[c]);d.mulAdd(a),d.model.value=f[a-1]},d},fluid.defaults("flock.ugen.random.pareto",{rate:"audio",inputs:{seed:null,alpha:5,mul:null,add:null},ugenOptions:{strideInputs:["alpha"]}}),flock.ugen.random.triangular=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.model.strides.mode,h=d.inputs.mode.output;for(b=c=0;a>b;b++,c+=g)f[b]=e.triangular(-1,1,h[c]);d.mulAdd(a),d.model.value=f[a-1]},d},fluid.defaults("flock.ugen.random.triangular",{rate:"audio",inputs:{seed:null,mode:.5,mul:null,add:null},ugenOptions:{strideInputs:["mode"]}}),flock.ugen.random.weibull=function(a,b,c){var d=flock.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.generator,i=d.output,j=f.strides.alpha,k=g.alpha.output,l=f.strides.beta,m=g.beta.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)i[b]=h.weibull(k[c],m[e]);d.mulAdd(a),f.value=i[a-1]},d},fluid.defaults("flock.ugen.random.weibull",{rate:"audio",inputs:{seed:null,alpha:1,beta:1,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),flock.ugen.phasor=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.output,i=g.step.output,j=g.trigger.output;for(void 0===f.unscaled&&(f.unscaled=g.start.output[0]),b=0,c=0,e=0;a>b;b++,c+=f.strides.trigger,e+=f.strides.step)j[c]>0&&f.prevTrig<=0&&(f.unscaled=g.reset.output[0]),f.prevTrig=j[c],f.unscaled>=g.end.output[0]&&(f.unscaled=g.start.output[0]),h[b]=f.unscaled,f.unscaled+=i[e];d.mulAdd(a),f.value=h[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.phasor",{rate:"control",inputs:{start:0,end:1,reset:0,step:.1,trigger:0,mul:null,add:null},ugenOptions:{model:{unscaled:void 0,value:0},strideInputs:["trigger","step"]}}),flock.ugen.amplitude=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.source.output,h=d.output,i=f.attackTime,j=d.inputs.attack.output[0],k=f.releaseTime,l=d.inputs.release.output[0],m=f.prevVal,n=f.attackCoef,o=f.releaseCoef;for(j!==i&&(f.attackTime=j,n=f.attackCoef=0===j?0:Math.exp(flock.LOG01/(j*f.sampleRate))),l!==k&&(f.releaseTime=l,o=f.releaseCoef=0===l?0:Math.exp(flock.LOG01/(l*f.sampleRate))),b=0;a>b;b++)c=Math.abs(g[b]),e=m>c?o:n,h[b]=m=c+(m-c)*e;f.prevVal=m,d.mulAdd(a),f.value=h[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.amplitude",{rate:"audio",inputs:{source:null,attack:.01,release:.01,mul:null,add:null},ugenOptions:{model:{prevVal:0,value:0}}}),flock.ugen.normalize=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(){var a=d.output,b=d.inputs.max.output[0],c=d.inputs.source.output;flock.normalize(c,b,a),d.model.value=a[a.length-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.normalize",{rate:"audio",inputs:{max:1,source:null}}),flock.ugen.gate=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=f.strides,h=d.output,i=d.inputs,j=i.source.output,k=i.sideChain.output,l=g.sideChain,m=i.threshold.output,n=g.threshold,o=d.options.holdLastValue,p=f.lastValue;for(b=c=e=0;a>b;b++,c+=l,e+=n)h[b]=k[c]>=m[e]?p=j[b]:o?p:0;f.lastValue=p,d.mulAdd(a),f.value=h[a-1]},d.onInputChanged=function(){d.inputs.sideChain||(d.inputs.sideChain=d.inputs.source),flock.onMulAddInputChanged(d),d.calculateStrides()},d.onInputChanged(),d},fluid.defaults("flock.ugen.gate",{rate:"audio",inputs:{source:null,sideChain:null,threshold:Number.MIN_VALUE,mul:null,add:null},ugenOptions:{model:{value:0,lastValue:0},holdLastValue:!1,strideInputs:["sideChain","threshold"]}}),flock.ugen.pan2=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g=d.model,h=d.output,i=h[0],j=h[1],k=d.inputs,l=k.source.output,m=k.pan.output;for(b=0,c=0;a>b;b++,c+=g.strides.pan)e=l[b],f=.5*m[c]+.5,j[b]=e*Math.sin(f*flock.HALFPI),i[b]=e*Math.cos(f*flock.HALFPI);var n=a-1;g.value[0]=h[0][n],g.value[1]=h[1][n]},d.onInputChanged(),d},fluid.defaults("flock.ugen.pan2",{rate:"audio",inputs:{source:null,pan:0},ugenOptions:{model:{value:[]},tags:["flock.ugen.multiChannelOutput"],strideInputs:["pan"],numOutputs:2}}),flock.ugen.out=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k,l=d.multiInputs.sources,m=d.options.audioSettings.buses,n=d.inputs.bus.output[0],o=d.inputs.expand.output[0];if(b=l.length,c=Math.max(o,b),!(1>b)){for(e=0;c>e;e++)for(g=l[e%b],h=g.rate,i=m[n+e],j=h===flock.rates.AUDIO?1:0,k=0,f=0;a>f;f++,k+=j)i[f]=i[f]+g.output[k];d.mulAdd(a),d.model.value=g.output[k]}},d.init=function(){d.sourceBuffers=[],d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.out",{rate:"audio",inputs:{sources:null,bus:0,expand:2},ugenOptions:{tags:["flock.ugen.outputType"],multiInputNames:["sources"]}}),flock.ugen.valueOut=function(a,b,c){var d=flock.ugen(a,b,c);return d.arraySourceGen=function(){var a,b=d.inputs.sources;for(a=0;ab;b++)for(h[b]=0,c=0;ce;e++)b[e]=g[e]},fluid.defaults("flock.ugen.in",{rate:"audio",inputs:{bus:0,mul:null,add:null}}),flock.ugen.audioIn=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.bus;for(b=0;a>b;b++)c[b]=e[b];d.mulAdd(a),d.model.value=c[a-1]},d.onInputChanged=function(){flock.onMulAddInputChanged(d)},d.init=function(){var a=flock.enviro.shared.audioStrategy.inputDeviceManager.openAudioDevice(c);d.bus=d.options.audioSettings.buses[a],d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.audioIn",{rate:"audio",inputs:{mul:null,add:null}}),flock.ugen.filter=function(a,b,d){var e=flock.ugen(a,b,d);return e.gen=function(){var a=e.model,b=e.output,c=e.inputs,d=c.q.output[0],f=c.freq.output[0];(a.prevFreq!==f||a.prevQ!==d)&&e.updateCoefficients(a,f,d),e.filterEngine.filter(b,e.inputs.source.output),a.prevQ=d,a.prevFreq=f,a.value=b[b.length-1]},e.init=function(){var a=e.options.recipe,b="string"==typeof a?flock.get(a):a;if(!b)throw new Error("Can't instantiate a flock.ugen.filter() without specifying a filter coefficient recipe.");e.filterEngine=new c(b.sizes.b,b.sizes.a),e.model.coeffs={a:e.filterEngine.a,b:e.filterEngine.b},e.updateCoefficients=flock.get(b,e.options.type),e.onInputChanged()},e.init(),e},fluid.defaults("flock.ugen.filter",{rate:"audio",inputs:{freq:440,q:1,source:null}}),flock.ugen.filter.biquad=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.inputs,g=d.output,h=e.coeffs,i=f.freq.output[0],j=f.q.output[0],k=f.source.output;for((e.prevFreq!==i||e.prevQ!==j)&&d.updateCoefficients(e,i,j),b=0;a>b;b++)c=k[b]-h.a[0]*e.d0-h.a[1]*e.d1,g[b]=h.b[0]*c+h.b[1]*e.d0+h.b[2]*e.d1,e.d1=e.d0,e.d0=c;e.prevQ=j,e.prevFreq=i},d.onInputChanged=function(){var a=d.options.type;d.updateCoefficients="string"==typeof a?flock.get(a):a},d.init=function(){d.model.d0=0,d.model.d1=0,d.model.coeffs={a:new Float32Array(2),b:new Float32Array(3)},d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.filter.biquad",{inputs:{freq:440,q:1,source:null}}),flock.ugen.filter.biquad.types={hp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.highPass"}},rhp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.highPass"}},lp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.lowPass"}},rlp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.lowPass"}},bp:{inputDefaults:{freq:440,q:4},options:{type:"flock.coefficients.butterworth.bandPass"}},br:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.bandReject"}}},flock.aliasUGens("flock.ugen.filter.biquad",flock.ugen.filter.biquad.types),flock.coefficients={butterworth:{sizes:{a:2,b:3},lowPass:function(a,b){var c=a.coeffs,d=1/Math.tan(Math.PI*b/a.sampleRate),e=d*d,f=flock.ROOT2*d,g=1/(1+f+e);c.b[0]=g,c.b[1]=2*g,c.b[2]=g,c.a[0]=2*(1-e)*g,c.a[1]=(1-f+e)*g},highPass:function(a,b){var c=a.coeffs,d=Math.tan(Math.PI*b/a.sampleRate);1/0===d&&(d=0);var e=d*d,f=flock.ROOT2*d,g=1/(1+f+e);c.b[0]=g,c.b[1]=-2*g,c.b[2]=g,c.a[0]=2*(e-1)*g,c.a[1]=(1-f+e)*g},bandPass:function(a,b,c){var d=a.coeffs,e=b/c,f=1/Math.tan(Math.PI*e/a.sampleRate),g=2*Math.cos(flock.TWOPI*b/a.sampleRate),h=1/(1+f);d.b[0]=h,d.b[1]=0,d.b[2]=-h,d.a[0]=-(f*g*h),d.a[1]=h*(f-1)},bandReject:function(a,b,c){var d=a.coeffs,e=b/c,f=Math.tan(Math.PI*e/a.sampleRate),g=2*Math.cos(flock.TWOPI*b/a.sampleRate),h=1/(1+f),i=-g*h;d.b[0]=h,d.b[1]=i,d.b[2]=h,d.a[0]=i,d.a[1]=(1-f)*h}},rbj:{sizes:{a:2,b:3},lowPass:function(a,b,c){var d=a.coeffs,e=flock.TWOPI*b/a.sampleRate,f=Math.cos(e),g=Math.sin(e),h=g/(2*c),i=1-f,j=1+h,k=i/2/j;d.b[0]=k,d.b[1]=i/j,d.b[2]=k,d.a[0]=-2*f/j,d.a[1]=(1-h)/j},highPass:function(a,b,c){var d=a.coeffs,e=flock.TWOPI*b/a.sampleRate,f=Math.cos(e),g=Math.sin(e),h=g/(2*c),i=1+f,j=1+h,k=i/2/j;d.b[0]=k,d.b[1]=-i/j,d.b[2]=k,d.a[0]=-2*f/j,d.a[1]=(1-h)/j},bandPass:function(a,b,c){var d=a.coeffs,e=flock.TWOPI*b/a.sampleRate,f=Math.cos(e),g=Math.sin(e),h=g/(2*c),i=1+h,j=c*h;d.b[0]=j/i,d.b[1]=0,d.b[2]=-j/i,d.a[0]=-2*f/i,d.a[1]=(1-h)/i},bandReject:function(a,b,c){var d=a.coeffs,e=flock.TWOPI*b/a.sampleRate,f=Math.cos(e),g=Math.sin(e),h=g/(2*c),i=1+h,j=1/i,k=-2*f/i;d.b[0]=j,d.b[1]=k,d.b[2]=j,d.a[0]=k,d.a[1]=(1-h)/i}}},flock.ugen.filter.moog=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.inputs,l=d.output,m=k.source.output,n=j.strides.source,o=k.resonance.output,p=j.strides.resonance,q=k.cutoff.output,r=j.strides.cutoff,s=j.f,t=j.fSq,u=j.fSqSq,v=j.oneMinusF,w=j.fb;for(b=c=e=f=0;a>b;b++,c+=n,e+=p,f+=r)g=q[f],h=o[e],g!==j.prevCutoff&&(g>j.nyquistRate&&(g=j.nyquistRate),s=j.f=g/j.nyquistRate*1.16,t=j.fSq=s*s,u=j.fSqSq=t*t,v=j.oneMinusF=1-s,j.prevRes=void 0),h!==j.prevRes&&(h>4?h=4:0>h&&(h=0),w=j.fb=h*(1-.15*t)),i=m[c]-j.out4*w,i*=.35013*u,j.out1=i+.3*j.in1+v*j.out1,j.in1=i,j.out2=j.out1+.3*j.in2+v*j.out2,j.in2=j.out1,j.out3=j.out2+.3*j.in3+v*j.out3,j.in3=j.out2,j.out4=j.out3+.3*j.in4+v*j.out4,j.in4=j.out3,l[b]=j.out4;d.mulAdd(a),j.value=l[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.filter.moog",{rate:"audio",inputs:{cutoff:3e3,resonance:3.99,source:null},ugenOptions:{model:{in1:0,in2:0,in3:0,in4:0,out1:0,out2:0,out3:0,out4:0,prevCutoff:void 0,prevResonance:void 0,f:void 0,fSq:void 0,fSqSq:void 0,oneMinusF:void 0,fb:void 0,value:0},strideInputs:["source","cutoff","resonance"]}}),flock.ugen.delay=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output,h=e.time.output[0],i=d.delayBuffer;for(h!==c.time&&(c.time=h,c.delaySamps=h*d.model.sampleRate),b=0;a>b;b++)c.pos>=c.delaySamps&&(c.pos=0),f[b]=i[c.pos],i[c.pos]=g[b],c.pos++;d.mulAdd(a),c.value=f[a-1]},d.onInputChanged=function(a){if(flock.onMulAddInputChanged(d),!a||"maxTime"===a){var b=d.model.sampleRate*d.inputs.maxTime.output[0];d.delayBuffer=new Float32Array(b)}},d.onInputChanged(),d},fluid.defaults("flock.ugen.delay",{rate:"audio",inputs:{maxTime:1,time:1,source:null},ugenOptions:{model:{pos:0,value:0}}}),flock.ugen.delay1=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output;for(b=0;a>b;b++)f[b]=c.prevVal,c.prevVal=g[b];d.mulAdd(a),c.value=f[a-1]},d.onInputChanged=function(){flock.onMulAddInputChanged(d)
-},d.onInputChanged(),d},fluid.defaults("flock.ugen.delay1",{rate:"audio",inputs:{source:null},ugenOptions:{model:{prevVal:0,value:0}}}),flock.ugen.freeverb=function(a,b,c){var d=flock.ugen(a,b,c);return d.tunings=d.options.tunings,d.allpassTunings=d.options.allpassTunings,d.gen=function(a){var b,c,e=d.inputs,f=d.output,g=e.source.output,h=e.mix.output[0],i=1-h,j=e.room.output[0],k=.28*j+.7,l=e.damp.output[0],m=.4*l,n=1-m;for(b=0;a>b;b++){var o=g[b],p=.015*o;for(c=0;ce;e++,f+=k,g+=m)b=j[f]*l[g],c=1.5*b-.5*b*b*b,i[e]=c;d.mulAdd(a),h.value=i[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),flock.ugen.distortion.deJonge=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(g=h=i=0;a>g;g++,h+=m,i+=o)b=l[h],c=n[i],e=Math.abs(b),f=b*(e+c)/(b*b+(c-1)*e+1),k[g]=f;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.deJonge",{rate:"audio",inputs:{source:null,amount:2},ugenOptions:{strideInputs:["source","amount"]}}),flock.ugen.distortion.tarrabiaDeJonge=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(f=g=h=0;a>f;f++,g+=m,h+=o)b=l[g],c=n[h],c>=1?c=.9999999999999999:-1>c&&(c=-1),i=2*c/(1-c),e=(1+i)*b/(1+i*Math.abs(b)),k[f]=e;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.tarrabiaDeJonge",{rate:"audio",inputs:{source:null,amount:10},ugenOptions:{strideInputs:["source","amount"]}}),flock.ugen.distortion.gloubiBoulga=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.gain.output,p=k.strides.gain;for(e=f=g=0;a>e;e++,f+=n,g+=p)b=m[f]*o[g],h=.686306*b,i=1+Math.exp(Math.sqrt(Math.abs(h))*-.75),j=Math.exp(h),c=(j-Math.exp(-h*i))/(j+Math.exp(-h)),l[e]=c;d.mulAdd(a),k.value=l[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.gloubiBoulga",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),flock.ugen.decay=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output,h=e.time.output[0];if(h!==c.time&&(c.time=h,c.coeff=0===h?0:Math.exp(flock.LOG001/(h*d.model.sampleRate))),0===c.coeff)for(b=0;a>b;b++)f[b]=g[b];else for(b=0;a>b;b++)c.lastSamp=g[b]+c.coeff*c.lastSamp,f[b]=c.lastSamp;d.mulAdd(a),c.value=f[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.decay",{rate:"audio",inputs:{source:null,time:1},ugenOptions:{model:{time:0,lastSamp:0,coeff:0,value:0}}}),flock.ugen.triggerGrains=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.inputs,l=d.output,m=k.channel.output[0],n=d.buffer.data.channels[m],o=d.buffer.format.sampleRate,p=k.dur.output[0],q=k.amp.output,r=k.centerPos.output,s=k.trigger.output,t=k.speed.output,u=d.options.grainEnv,v=0,w=0,x=0,y=0;for(b=0;a>b;b++){if(s[w]>0&&j.prevTrigger<=0&&j.activeGrains.lengthg;)g+=n.length;f.readPos=g,f.writePos=b,f.speed=t[y],j.activeGrains.push(f)}j.prevTrigger=s[w],l[b]=0,v+=j.strides.centerPos,w+=j.strides.trigger,x+=j.strides.amp,y+=j.strides.speed}for(c=0;c=f.numSamps?(j.freeGrains.push(f),j.activeGrains.splice(c,1)):(c++,f.writePos=e%a)}d.mulAdd(a),j.value=l[a-1]},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),flock.onMulAddInputChanged(d)},d.allocateGrains=function(a){a=a||d.model.maxNumGrains;for(var b=0;a>b;b++)d.model.freeGrains.push({numSamps:0,centerIdx:0,envScale:0,sampIdx:0,amp:0,readPos:0,writePos:0,speed:0})},d.init=function(){flock.ugen.buffer(d),d.allocateGrains(),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.triggerGrains",{rate:"audio",inputs:{centerPos:0,channel:0,amp:1,dur:.1,speed:1,trigger:0,buffer:null,mul:null,add:null},ugenOptions:{grainEnv:flock.fillTable(8192,flock.tableGenerators.hann),model:{value:0,maxNumGrains:512,activeGrains:[],freeGrains:[],env:null,strides:{}},strideInputs:["centerPos","trigger","amp","speed"],interpolation:"cubic"}}),flock.ugen.granulator=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k=d.model,l=d.options,m=d.inputs,n=d.output,o=d.delayLine,p=m.grainDur.output[0],q=m.delayDur.output[0],r=m.numGrains.output[0],s=m.source.output,t=l.maxDelayDur,u=l.grainEnv;for(k.delayDur!==q&&(k.delayDur=q,q>t&&(q=t),k.delayLength=q*k.sampleRate|0,k.writePos=k.writePos%k.delayLength),k.grainDur!==p&&(k.grainDur=p,k.grainLength=k.sampleRate*k.grainDur|0,k.envScale=u.length/k.grainLength),r=r>l.maxNumGrains?l.maxNumGrains:Math.round(r),b=0;a>b;b++){for(o[k.writePos]=s[b],k.writePos=++k.writePos%k.delayLength,e=0,c=0;r>c;c++)f=k.grainIdx[c],g=k.delayLineIdx[c],f>k.grainLength&&(f=0,g=Math.random()*k.delayLength|0),h=o[g],i=f*k.envScale,j=flock.interpolate.linear(i,u),e+=h*j,k.delayLineIdx[c]=++g%k.delayLength,k.grainIdx[c]=++f;n[b]=e/r}d.mulAdd(a),k.value=n[a-1]},d.initGrains=function(){for(var a=d.model,b=0;b0&&g.prevTrig<=0&&fluid.log(fluid.logLevel.IMPORTANT,h+j),g.freq!==l&&(g.sampInterval=Math.round(g.sampleRate/l),g.freq=l,g.counter=g.sampInterval),b=0,c=0;a>b;b++,c+=g.strides.source)g.counter>=g.sampInterval&&(fluid.log(fluid.logLevel.IMPORTANT,h+j[c]),g.counter=0),g.counter++,f[b]=j[b];g.value=f[a-1]},d.init=function(){var a=d.options;d.model.label=a.label?a.label+": ":"",d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.print",{rate:"audio",inputs:{source:null,trigger:0,freq:1},ugenOptions:{model:{value:0,counter:0},strideInputs:["source"]}}),flock.ugen.sequence=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.inputs.list,g=d.inputs,h=g.freq.output,i=g.loop.output[0],j=d.model,k=j.scale,l=d.output,m=g.start?Math.round(g.start.output[0]):0,n=g.end?Math.round(g.end.output[0]):f.length;for(void 0===j.unscaled&&(b=f[m],j.unscaled=void 0===b?0:b),void 0===j.nextIdx&&(j.nextIdx=m),c=0,e=0;a>c;c++,e+=j.strides.freq){if(j.nextIdx>=n){if(!(i>0)){l[c]=j.unscaled;continue}j.nextIdx=m}l[c]=j.unscaled=f[j.nextIdx],j.phase+=h[e]*k,j.phase>=1&&(j.phase=0,j.nextIdx++)}d.mulAdd(a),j.value=l[a-1]},d.onInputChanged=function(){d.model.scale=d.rate!==flock.rates.DEMAND?d.model.sampleDur:1,d.inputs.list||(d.inputs.list=[]),d.calculateStrides(),flock.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.sequence",{rate:"control",inputs:{start:0,freq:1,loop:0,list:[]},ugenOptions:{model:{unscaled:void 0,value:0,phase:0},strideInputs:["freq"],noExpand:["list"]}}),flock.ugen.midiFreq=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=e.a4,g=f.freq,h=f.noteNum,i=e.notesPerOctave,j=d.inputs.source.output,k=d.output;for(b=0,c=0;a>b;b++,c+=e.strides.source)k[b]=flock.midiFreq(j[c],g,h,i);d.mulAdd(a),e.value=k[a-1]},d.init=function(){d.model.octaveScale=1/d.model.notesPerOctave,d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.midiFreq",{rate:"control",inputs:{source:null},ugenOptions:{model:{value:0,a4:{noteNum:69,freq:440},notesPerOctave:12},strideInputs:["source"]}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";flock.blit=function(a){var b,c;return a>=2?b=0:a>=1?(c=2-a,b=.16666666666666666*c*c*c):a>=0?(c=a*a,b=.6666666666666666-c+.5*c*a):a>=-1?(c=a*a,b=.6666666666666666-c-.5*c*a):a>=-2?(c=2+a,b=.16666666666666666*c*c*c):b=0,b},flock.blit.period=function(a,b){var c=a/b;return 1>c?1:c},flock.blit.updatePeriodState=function(a,b){a.freq=1e-6>b?1e-6:b,a.d0=flock.blit.period(a.sampleRate,a.freq)},flock.ugen.blit=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=c.phase;for(b=0;a>b;b++)g-=1,-2>g&&(flock.blit.updatePeriodState(c,f),g+=c.d0),e[b]=flock.blit(g);c.phase=g,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.blit",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{phase:-2,value:0}}}),flock.ugen.saw=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=1-d.inputs.leakRate.output[0],h=c.phase,i=c.prevVal;for(void 0===h&&(flock.ugen.saw.updatePeriodState(c,f),h=c.d0/2),b=0;a>b;b++)h-=1,-2>h&&(flock.ugen.saw.updatePeriodState(c,f),h+=c.d0),e[b]=i=flock.blit(h)-c.dcOffset+g*i;c.phase=h,c.prevVal=i,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.saw.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.dcOffset=1/a.d0},fluid.defaults("flock.ugen.saw",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,dcOffset:void 0,prevVal:0,value:0}}}),flock.ugen.square=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=1-d.inputs.leakRate.output[0],h=c.phase,i=c.prevVal;for(void 0===h&&(flock.ugen.square.updatePeriodState(c,f),h=c.phaseResetValue),b=0;a>b;b++)e[b]=i=flock.blit(h)*c.sign+g*i,-2>h&&(flock.ugen.square.updatePeriodState(c,f),h+=c.phaseResetValue),h-=1;c.phase=h,c.prevVal=i,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.square.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.sign*=-1},fluid.defaults("flock.ugen.square",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,prevVal:.5,value:0,sign:1}}}),flock.ugen.tri=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.output,h=d.inputs.freq.output[0],i=1-d.inputs.leakRate.output[0],j=f.phase,k=f.prevVal,l=f.secondPrevVal;for(void 0===j&&(flock.ugen.tri.updatePeriodState(f,h),j=f.d0/4),b=0;a>b;b++)c=flock.blit(j)*f.sign+i*k,k=c,e=c+i*l,l=e,g[b]=e*f.ampScale,j-=1,-2>j&&(flock.ugen.tri.updatePeriodState(f,h),j+=f.phaseResetValue);f.phase=j,f.prevVal=k,f.secondPrevVal=l,d.mulAdd(a),f.value=g[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.tri.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.ampScale=2/a.d0,a.sign*=-1},fluid.defaults("flock.ugen.tri",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,value:0,prevVal:.5,secondPrevVal:0,sign:1,ampScale:void 0,phaseResetValue:void 0}}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");flock.envelope={},flock.envelope.makeCreator=function(b,c){return function(d){var e=fluid.defaults(b),f=a.extend(!0,{},e,d);return c(f)}},flock.envelope.registerCreators=function(a,b){var c,d;for(var e in b)c=fluid.pathUtil.composePath(a,e),d=b[e],fluid.defaults(c,d.defaults),fluid.setGlobalValue(c,flock.envelope.makeCreator(c,d.transformer))},flock.envelope.creatorSpecs={line:{transformer:function(a){return{levels:[a.start,a.end],times:[a.duration]}},defaults:{start:0,end:1,duration:1}},linear:{transformer:function(a){return{levels:[0,a.level,a.level,0],times:[a.attack,a.sustain,a.release]}},defaults:{level:1,attack:.01,sustain:1,release:1}},tri:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration]}},defaults:{level:1,duration:1}},sin:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration],curve:"sin"}},defaults:{level:1,duration:1}},asr:{transformer:function(a){return{levels:[0,a.sustain,0],times:[a.attack,a.release],sustainPoint:1,curve:-4}},defaults:{sustain:1,attack:.01,release:1}},dadsr:{transformer:function(a){var b=[0,0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.delay,a.attack,a.decay,a.release],sustainPoint:3,curve:-4}},defaults:{delay:.1,attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}},adsr:{transformer:function(a){var b=[0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.attack,a.decay,a.release],sustainPoint:2,curve:-4}},defaults:{attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}}},flock.envelope.registerCreators("flock.envelope",flock.envelope.creatorSpecs),flock.envelope.validate=function(a,b){var c=a.levels,d={};if(a.times?!c||c.length<2?d.levels="An array containing at least two levels must be specified.":(flock.envelope.validate.times(a.times,c,d),flock.envelope.validate.levels(c,d),flock.envelope.validate.curves(a.curve,c,d),flock.envelope.validate.sustainPoint(a.sustainPoint,c,d)):d.times="An array containing at least one time value must be specified.",b!==!1)for(var e in d)flock.fail(d[e]);return d},flock.envelope.validate.times=function(a,b,c){a.length!==b.length-1&&(c.times="The envelope specification should provide one fewer time value than the number of level values. times: "+a+" levels: "+b);for(var d=0;de&&(c.times="All times should be positive values. times: "+a)}},flock.envelope.validate.levels=function(a,b){for(var c=0;ca||a>=b.length)&&(c.sustainPoint="The specified sustainPoint index is out range for the levels array. sustainPoint: "+a+" levels: "+b)},flock.envelope.expand=function(a){var b="string"==typeof a?fluid.invokeGlobalFunction(a):a.type?fluid.invokeGlobalFunction(a.type,[a]):a;if(b.curves&&!b.curve&&(b.curve=b.curves),!flock.isIterable(b.curve)){var c=b.levels.length-1;b.curve=flock.generate(new Array(c),b.curve)}return flock.envelope.validate(b,!0),b},flock.line={fill:function(a,b,c,d,e,f){e=void 0===e?0:e,f=void 0===f?b.length:f;var g=f-e,h=flock.line.fill.model;h.unscaled=c,h.destination=d,h.numSegmentSamps=g-1,"number"==typeof a&&(h.currentCurve=a,a="curve");var i=flock.line[a];return i||flock.fail("No line generator could be found for type "+a),i.init(h),i.gen(g,e,b,h)},generator:function(a){var b=typeof a;return"string"===b?flock.line[a]:"number"===b?flock.line.curve:flock.line.linear},constant:{init:function(a){a.stepSize=0},gen:function(a,b,c,d){for(var e=d.unscaled,f=b;a+b>f;f++)c[f]=e;return c}},step:{init:function(a){a.arrived=!1},gen:function(a,b,c,d){for(var e=b;a+b>e;e++)c[e]=d.unscaled,d.arrived||(d.arrived=!0,d.unscaled=d.destination);return c}},linear:{init:function(a){a.stepSize=(a.destination-a.unscaled)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e+=f;return d.unscaled=e,d.stepSize=f,c}},exponential:{init:function(a){0===a.unscaled&&(a.unscaled=1e-16),a.stepSize=0===a.numSegmentSamps?0:Math.pow(a.destination/a.unscaled,1/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e*=f;return d.unscaled=e,d.stepSize=f,c}},curve:{init:function(a){if(Math.abs(a.currentCurve)<.001)return flock.line.linear.init(a);var b=(a.destination-a.unscaled)/(1-Math.exp(a.currentCurve));a.a2=a.unscaled+b,a.b1=b,a.stepSize=Math.exp(a.currentCurve/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.b1,g=b;a+b>g;g++)c[g]=e,f*=d.stepSize,e=d.a2-f;return d.unscaled=e,d.b1=f,c}},sin:{init:function(a){var b=Math.PI/a.numSegmentSamps;a.a2=.5*(a.destination+a.unscaled),a.b1=2*Math.cos(b),a.y1=.5*(a.destination-a.unscaled),a.y2=a.y1*Math.sin(flock.HALFPI-b),a.unscaled=a.a2-a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,f=d.a2-e,h=g,g=e;return d.unscaled=f,d.y1=g,d.y2=h,c}},welsh:{init:function(a){var b=flock.HALFPI/a.numSegmentSamps,c=Math.cos(b);a.b1=2*c,a.destination>=a.unscaled?(a.a2=a.unscaled,a.y1=0,a.y2=-Math.sin(b)*(a.destination-a.unscaled)):(a.a2=a.destination,a.y1=a.unscaled-a.destination,a.y2=c*(a.unscaled-a.destination)),a.unscaled=a.a2+a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,h=g,g=e,f=d.a2+e;return d.unscaled=f,d.y1=g,d.y2=h,c}},squared:{init:function(a){a.y1=Math.sqrt(a.unscaled),a.y2=Math.sqrt(a.destination),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f;return d.y1=f,d.unscaled=e,c}},cubed:{init:function(a){var b=.3333333333333333;a.y1=Math.pow(a.unscaled,b),a.y2=Math.pow(a.destination,b),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f*f;return d.y1=f,d.unscaled=e,c}}},flock.line.fill.model={value:0,destination:1},flock.ugen.line=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.stepSize,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i+=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;a.start=d.inputs.start.output[0],a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),0===a.numSteps?(a.stepSize=0,a.level=a.end):(a.stepSize=(a.end-a.start)/a.numSteps,a.level=a.start),flock.onMulAddInputChanged(d)},d.onInputChanged(),d},fluid.defaults("flock.ugen.line",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,stepSize:0,level:0,value:0}}}),flock.ugen.xLine=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.multiplier,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i*=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;flock.onMulAddInputChanged(d),a.start=d.inputs.start.output[0],0===a.start&&(a.start=Number.MIN_VALUE),a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),a.multiplier=Math.pow(a.end/a.start,1/a.numSteps),a.level=a.start},d.onInputChanged(),d},fluid.defaults("flock.ugen.xLine",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,multiplier:0,level:0,value:0}}}),flock.ugen.asr=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.output,g=e.previousGate,h=d.inputs.gate.output[0],i=e.level,j=e.stage,k=j.currentStep,l=j.stepInc,m=j.numSteps,n=e.targetLevel,o=!1;for(0>=g&&h>0?(n=d.inputs.sustain.output[0],b=d.inputs.attack.output[0],o=!0):0>=h&&k>=m&&(n=d.inputs.start.output[0],b=d.inputs.release.output[0],o=!0),o&&(m=Math.round(b*e.sampleRate),l=(n-i)/m,k=0),c=0;a>c;c++)f[c]=i,k++,i=m>k?i+l:k===m?n:i;e.level=i,e.targetLevel=n,e.previousGate=h,j.currentStep=k,j.stepInc=l,j.numSteps=m,d.mulAdd(a),e.value=f[a-1]},d.init=function(){var a=d.model;a.level=d.inputs.start.output[0],a.targetLevel=d.inputs.sustain.output[0],d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.asr",{rate:"control",inputs:{start:0,attack:.01,sustain:1,release:1,gate:0,mul:null,add:null},ugenOptions:{model:{level:0,targetLevel:0,previousGate:0,value:0,stage:{currentStep:0,stepInc:0,numSteps:0}}}}),flock.ugen.env={},flock.ugen.env.simpleASR=flock.ugen.asr,fluid.defaults("flock.ugen.env.simpleASR",fluid.copy(fluid.defaults("flock.ugen.asr"))),flock.ugen.envGen=function(a,b,c){var d=flock.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,f=d.inputs,g=f.gate.output[0],h=f.timeScale.output[0],i=0;for(flock.ugen.envGen.checkGate(d,g,h);a>i;)b=Math.min(a-i,c.numSegmentSamps),d.lineGen.gen(b,i,e,c),i+=b,c.numSegmentSamps-=b,0===c.numSegmentSamps&&flock.ugen.envGen.nextStage(d,h);d.mulAdd(a),c.value=e[a-1]},d.arGen=function(a){var b,c=d.model,e=d.output,f=d.inputs,g=f.gate.output,h=f.timeScale.output[0];for(b=0;a>b;b++)flock.ugen.envGen.checkGate(d,g[b],h),d.lineGen.gen(1,b,e,c),c.numSegmentSamps--,0===c.numSegmentSamps&&flock.ugen.envGen.nextStage(d,h);d.mulAdd(a),c.value=e[a-1]},d.onInputChanged=function(a){a&&"envelope"!==a||(d.envelope=flock.ugen.envGen.initEnvelope(d,d.inputs.envelope)),a&&"gate"!==a||(d.gen=d.inputs.gate.rate===flock.rates.AUDIO?d.arGen:d.krGen),flock.onMulAddInputChanged(d)},d.onInputChanged(),d},flock.ugen.envGen.initEnvelope=function(a,b){var c=a.model,d=flock.envelope.expand(b);return c.stage=0,c.numStages=d.times.length,a.lineGen=flock.line.constant,flock.ugen.envGen.lineGenForStage(a.inputs.timeScale.output[0],d,c),c.unscaled=d.levels[c.stage],d},flock.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=flock.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=flock.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},flock.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=flock.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaled):(c.stage++,a.lineGen=flock.ugen.envGen.lineGenForStage(b,d,c))},flock.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,d*c.sampleRate)),c.numSegmentSamps=e,c.destination=f},flock.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,f=b.curve;return 0===c.stage||c.stage>c.numStages?d=flock.line.constant:(e=f[c.stage-1],c.currentCurve=e,d=flock.line.generator(e)),flock.ugen.envGen.setupStage(a,b,c),d.init(c),d},fluid.defaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,value:0,stage:0,numStages:0}}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");fluid.registerNamespace("flock.ugen"),flock.ugen.scope=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.spf,f=c.bufIdx,g=c.scope.values;for(b=0;a>b;b++)g[f]=d.inputs.source.output[b],e>f?f+=1:(f=0,d.scopeView.refreshView());c.bufIdx=f,c.value=d.inputs.source.output[a-1]},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=flock.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},fluid.defaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),flock.ugen.mouse={},flock.ugen.mouse.cursor=function(b,c,d){var e=flock.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,f=flock.ugen.mouse.cursor.normalize(e.target,d),g=d.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=d.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(flock.LOG001/(h*d.sampleRate)),d.lagCoef=k),b=0;a>b;b++)c=j+i,f=Math.pow(c/i,f)*i,g=f+k*(g-f),l[b]=g;d.movingAvg=g,d.value=l[a-1]},e.linearGen=function(a){var b,c=e.model,d=flock.ugen.mouse.cursor.normalize(e.target,c),f=c.movingAvg,g=e.inputs.lag.output[0],h=e.inputs.add.output[0],i=e.inputs.mul.output[0],j=c.lagCoef,k=e.output;for(g!==j&&(j=0===g?0:Math.exp(flock.LOG001/(g*c.sampleRate)),c.lagCoef=j),b=0;a>b;b++)f=d+j*(f-d),k[b]=f*i+h;c.movingAvg=f,c.value=k[a-1]},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,f=flock.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=f*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=d[a-1]},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){flock.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},flock.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},fluid.defaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),flock.ugen.mouse.click=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.model;for(b=0;a>b;b++)c[b]=e.unscaled;d.mulAdd(a),e.value=c[a-1]},d.mouseDownListener=function(){d.model.unscaled=1},d.mouseUpListener=function(){d.model.unscaled=0},d.init=function(){var a=d.model;a.target="string"==typeof d.options.target?document.querySelector(d.options.target):d.options.target||window,a.unscaled=0,a.target.addEventListener("mousedown",d.mouseDownListener,!1),a.target.addEventListener("mouseup",d.mouseUpListener,!1),d.onInputChanged()},d.onInputChanged=function(){flock.onMulAddInputChanged(d)},d.init(),d},fluid.defaults("flock.ugen.mouse.click",{rate:"control"}),flock.ugen.mediaIn=function(b,c,d){var e=flock.ugen(b,c,d);return e.gen=function(a){for(var b=e.output,c=e.bus,d=0;a>d;d++)b[d]=c[d];e.mulAdd(a),e.model.value=b[a-1]},e.onInputChanged=function(){flock.onMulAddInputChanged(e)},e.init=function(){var b=flock.enviro.shared,c=a(e.options.element),d=b.audioStrategy.nativeNodeManager.createMediaElementInput(c[0]);e.bus=e.options.audioSettings.buses[d],e.onInputChanged(),flock.platform.browser.safari?flock.warn("MediaElementSourceNode does not work on Safari. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):flock.platform.isAndroid&&flock.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},fluid.defaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";fluid.registerNamespace("flock.view"),flock.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()
+},d.onInputChanged(),d},fluid.defaults("flock.ugen.delay1",{rate:"audio",inputs:{source:null},ugenOptions:{model:{prevVal:0,value:0}}}),flock.ugen.freeverb=function(a,b,c){var d=flock.ugen(a,b,c);return d.tunings=d.options.tunings,d.allpassTunings=d.options.allpassTunings,d.gen=function(a){var b,c,e=d.inputs,f=d.output,g=e.source.output,h=e.mix.output[0],i=1-h,j=e.room.output[0],k=.28*j+.7,l=e.damp.output[0],m=.4*l,n=1-m;for(b=0;a>b;b++){var o=g[b],p=.015*o;for(c=0;ce;e++,f+=k,g+=m)b=j[f]*l[g],c=1.5*b-.5*b*b*b,i[e]=c;d.mulAdd(a),h.value=i[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),flock.ugen.distortion.deJonge=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(g=h=i=0;a>g;g++,h+=m,i+=o)b=l[h],c=n[i],e=Math.abs(b),f=b*(e+c)/(b*b+(c-1)*e+1),k[g]=f;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.deJonge",{rate:"audio",inputs:{source:null,amount:2},ugenOptions:{strideInputs:["source","amount"]}}),flock.ugen.distortion.tarrabiaDeJonge=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(f=g=h=0;a>f;f++,g+=m,h+=o)b=l[g],c=n[h],c>=1?c=.9999999999999999:-1>c&&(c=-1),i=2*c/(1-c),e=(1+i)*b/(1+i*Math.abs(b)),k[f]=e;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.tarrabiaDeJonge",{rate:"audio",inputs:{source:null,amount:10},ugenOptions:{strideInputs:["source","amount"]}}),flock.ugen.distortion.gloubiBoulga=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.gain.output,p=k.strides.gain;for(e=f=g=0;a>e;e++,f+=n,g+=p)b=m[f]*o[g],h=.686306*b,i=1+Math.exp(Math.sqrt(Math.abs(h))*-.75),j=Math.exp(h),c=(j-Math.exp(-h*i))/(j+Math.exp(-h)),l[e]=c;d.mulAdd(a),k.value=l[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.distortion.gloubiBoulga",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),flock.ugen.decay=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output,h=e.time.output[0];if(h!==c.time&&(c.time=h,c.coeff=0===h?0:Math.exp(flock.LOG001/(h*d.model.sampleRate))),0===c.coeff)for(b=0;a>b;b++)f[b]=g[b];else for(b=0;a>b;b++)c.lastSamp=g[b]+c.coeff*c.lastSamp,f[b]=c.lastSamp;d.mulAdd(a),c.value=f[a-1]},d.onInputChanged(),d},fluid.defaults("flock.ugen.decay",{rate:"audio",inputs:{source:null,time:1},ugenOptions:{model:{time:0,lastSamp:0,coeff:0,value:0}}}),flock.ugen.triggerGrains=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.inputs,l=d.output,m=k.channel.output[0],n=d.buffer.data.channels[m],o=d.buffer.format.sampleRate,p=k.dur.output[0],q=k.amp.output,r=k.centerPos.output,s=k.trigger.output,t=k.speed.output,u=d.options.grainEnv,v=0,w=0,x=0,y=0;for(b=0;a>b;b++){if(s[w]>0&&j.prevTrigger<=0&&j.activeGrains.lengthg;)g+=n.length;f.readPos=g,f.writePos=b,f.speed=t[y],j.activeGrains.push(f)}j.prevTrigger=s[w],l[b]=0,v+=j.strides.centerPos,w+=j.strides.trigger,x+=j.strides.amp,y+=j.strides.speed}for(c=0;c=f.numSamps?(j.freeGrains.push(f),j.activeGrains.splice(c,1)):(c++,f.writePos=e%a)}d.mulAdd(a),j.value=l[a-1]},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),flock.onMulAddInputChanged(d)},d.allocateGrains=function(a){a=a||d.model.maxNumGrains;for(var b=0;a>b;b++)d.model.freeGrains.push({numSamps:0,centerIdx:0,envScale:0,sampIdx:0,amp:0,readPos:0,writePos:0,speed:0})},d.init=function(){flock.ugen.buffer(d),d.allocateGrains(),d.initBuffer(),d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.triggerGrains",{rate:"audio",inputs:{centerPos:0,channel:0,amp:1,dur:.1,speed:1,trigger:0,buffer:null,mul:null,add:null},ugenOptions:{grainEnv:flock.fillTable(8192,flock.tableGenerators.hann),model:{value:0,maxNumGrains:512,activeGrains:[],freeGrains:[],env:null,strides:{}},strideInputs:["centerPos","trigger","amp","speed"],interpolation:"cubic"}}),flock.ugen.granulator=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k=d.model,l=d.options,m=d.inputs,n=d.output,o=d.delayLine,p=m.grainDur.output[0],q=m.delayDur.output[0],r=m.numGrains.output[0],s=m.source.output,t=l.maxDelayDur,u=l.grainEnv;for(k.delayDur!==q&&(k.delayDur=q,q>t&&(q=t),k.delayLength=q*k.sampleRate|0,k.writePos=k.writePos%k.delayLength),k.grainDur!==p&&(k.grainDur=p,k.grainLength=k.sampleRate*k.grainDur|0,k.envScale=u.length/k.grainLength),r=r>l.maxNumGrains?l.maxNumGrains:Math.round(r),b=0;a>b;b++){for(o[k.writePos]=s[b],k.writePos=++k.writePos%k.delayLength,e=0,c=0;r>c;c++)f=k.grainIdx[c],g=k.delayLineIdx[c],f>k.grainLength&&(f=0,g=Math.random()*k.delayLength|0),h=o[g],i=f*k.envScale,j=flock.interpolate.linear(i,u),e+=h*j,k.delayLineIdx[c]=++g%k.delayLength,k.grainIdx[c]=++f;n[b]=e/r}d.mulAdd(a),k.value=n[a-1]},d.initGrains=function(){for(var a=d.model,b=0;b0&&g.prevTrig<=0&&fluid.log(fluid.logLevel.IMPORTANT,h+j),g.freq!==l&&(g.sampInterval=Math.round(g.sampleRate/l),g.freq=l,g.counter=g.sampInterval),b=0,c=0;a>b;b++,c+=g.strides.source)g.counter>=g.sampInterval&&(fluid.log(fluid.logLevel.IMPORTANT,h+j[c]),g.counter=0),g.counter++,f[b]=j[b];g.value=f[a-1]},d.init=function(){var a=d.options;d.model.label=a.label?a.label+": ":"",d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.print",{rate:"audio",inputs:{source:null,trigger:0,freq:1},ugenOptions:{model:{value:0,counter:0},strideInputs:["source"]}}),flock.ugen.sequence=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.inputs.list,g=d.inputs,h=g.freq.output,i=g.loop.output[0],j=d.model,k=j.scale,l=d.output,m=g.start?Math.round(g.start.output[0]):0,n=g.end?Math.round(g.end.output[0]):f.length;for(void 0===j.unscaled&&(b=f[m],j.unscaled=void 0===b?0:b),void 0===j.nextIdx&&(j.nextIdx=m),c=0,e=0;a>c;c++,e+=j.strides.freq){if(j.nextIdx>=n){if(!(i>0)){l[c]=j.unscaled;continue}j.nextIdx=m}l[c]=j.unscaled=f[j.nextIdx],j.phase+=h[e]*k,j.phase>=1&&(j.phase=0,j.nextIdx++)}d.mulAdd(a),j.value=l[a-1]},d.onInputChanged=function(){d.model.scale=d.rate!==flock.rates.DEMAND?d.model.sampleDur:1,d.inputs.list||(d.inputs.list=[]),d.calculateStrides(),flock.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.sequence",{rate:"control",inputs:{start:0,freq:1,loop:0,list:[]},ugenOptions:{model:{unscaled:void 0,value:0,phase:0},strideInputs:["freq"],noExpand:["list"]}}),flock.ugen.midiFreq=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=e.a4,g=f.freq,h=f.noteNum,i=e.notesPerOctave,j=d.inputs.source.output,k=d.output;for(b=0,c=0;a>b;b++,c+=e.strides.source)k[b]=flock.midiFreq(j[c],g,h,i);d.mulAdd(a),e.value=k[a-1]},d.init=function(){d.model.octaveScale=1/d.model.notesPerOctave,d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.midiFreq",{rate:"control",inputs:{source:null},ugenOptions:{model:{value:0,a4:{noteNum:69,freq:440},notesPerOctave:12},strideInputs:["source"]}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";flock.blit=function(a){var b,c;return a>=2?b=0:a>=1?(c=2-a,b=.16666666666666666*c*c*c):a>=0?(c=a*a,b=.6666666666666666-c+.5*c*a):a>=-1?(c=a*a,b=.6666666666666666-c-.5*c*a):a>=-2?(c=2+a,b=.16666666666666666*c*c*c):b=0,b},flock.blit.period=function(a,b){var c=a/b;return 1>c?1:c},flock.blit.updatePeriodState=function(a,b){a.freq=1e-6>b?1e-6:b,a.d0=flock.blit.period(a.sampleRate,a.freq)},flock.ugen.blit=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=c.phase;for(b=0;a>b;b++)g-=1,-2>g&&(flock.blit.updatePeriodState(c,f),g+=c.d0),e[b]=flock.blit(g);c.phase=g,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.blit",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{phase:-2,value:0}}}),flock.ugen.saw=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=1-d.inputs.leakRate.output[0],h=c.phase,i=c.prevVal;for(void 0===h&&(flock.ugen.saw.updatePeriodState(c,f),h=c.d0/2),b=0;a>b;b++)h-=1,-2>h&&(flock.ugen.saw.updatePeriodState(c,f),h+=c.d0),e[b]=i=flock.blit(h)-c.dcOffset+g*i;c.phase=h,c.prevVal=i,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.saw.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.dcOffset=1/a.d0},fluid.defaults("flock.ugen.saw",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,dcOffset:void 0,prevVal:0,value:0}}}),flock.ugen.square=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,f=d.inputs.freq.output[0],g=1-d.inputs.leakRate.output[0],h=c.phase,i=c.prevVal;for(void 0===h&&(flock.ugen.square.updatePeriodState(c,f),h=c.phaseResetValue),b=0;a>b;b++)e[b]=i=flock.blit(h)*c.sign+g*i,-2>h&&(flock.ugen.square.updatePeriodState(c,f),h+=c.phaseResetValue),h-=1;c.phase=h,c.prevVal=i,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.square.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.sign*=-1},fluid.defaults("flock.ugen.square",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,prevVal:.5,value:0,sign:1}}}),flock.ugen.tri=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.output,h=d.inputs.freq.output[0],i=1-d.inputs.leakRate.output[0],j=f.phase,k=f.prevVal,l=f.secondPrevVal;for(void 0===j&&(flock.ugen.tri.updatePeriodState(f,h),j=f.d0/4),b=0;a>b;b++)c=flock.blit(j)*f.sign+i*k,k=c,e=c+i*l,l=e,g[b]=e*f.ampScale,j-=1,-2>j&&(flock.ugen.tri.updatePeriodState(f,h),j+=f.phaseResetValue);f.phase=j,f.prevVal=k,f.secondPrevVal=l,d.mulAdd(a),f.value=g[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},flock.ugen.tri.updatePeriodState=function(a,b){flock.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.ampScale=2/a.d0,a.sign*=-1},fluid.defaults("flock.ugen.tri",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,value:0,prevVal:.5,secondPrevVal:0,sign:1,ampScale:void 0,phaseResetValue:void 0}}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");flock.envelope={},flock.envelope.makeCreator=function(b,c){return function(d){var e=fluid.defaults(b),f=a.extend(!0,{},e,d);return c(f)}},flock.envelope.registerCreators=function(a,b){var c,d;for(var e in b)c=fluid.pathUtil.composePath(a,e),d=b[e],fluid.defaults(c,d.defaults),fluid.setGlobalValue(c,flock.envelope.makeCreator(c,d.transformer))},flock.envelope.creatorSpecs={line:{transformer:function(a){return{levels:[a.start,a.end],times:[a.duration]}},defaults:{start:0,end:1,duration:1}},linear:{transformer:function(a){return{levels:[0,a.level,a.level,0],times:[a.attack,a.sustain,a.release]}},defaults:{level:1,attack:.01,sustain:1,release:1}},tri:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration]}},defaults:{level:1,duration:1}},sin:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration],curve:"sin"}},defaults:{level:1,duration:1}},asr:{transformer:function(a){return{levels:[0,a.sustain,0],times:[a.attack,a.release],sustainPoint:1,curve:-4}},defaults:{sustain:1,attack:.01,release:1}},dadsr:{transformer:function(a){var b=[0,0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.delay,a.attack,a.decay,a.release],sustainPoint:3,curve:-4}},defaults:{delay:.1,attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}},adsr:{transformer:function(a){var b=[0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.attack,a.decay,a.release],sustainPoint:2,curve:-4}},defaults:{attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}}},flock.envelope.registerCreators("flock.envelope",flock.envelope.creatorSpecs),flock.envelope.validate=function(a,b){var c=a.levels,d={};if(a.times?!c||c.length<2?d.levels="An array containing at least two levels must be specified.":(flock.envelope.validate.times(a.times,c,d),flock.envelope.validate.levels(c,d),flock.envelope.validate.curves(a.curve,c,d),flock.envelope.validate.sustainPoint(a.sustainPoint,c,d)):d.times="An array containing at least one time value must be specified.",b!==!1)for(var e in d)flock.fail(d[e]);return d},flock.envelope.validate.times=function(a,b,c){a.length!==b.length-1&&(c.times="The envelope specification should provide one fewer time value than the number of level values. times: "+a+" levels: "+b);for(var d=0;de&&(c.times="All times should be positive values. times: "+a)}},flock.envelope.validate.levels=function(a,b){for(var c=0;ca||a>=b.length)&&(c.sustainPoint="The specified sustainPoint index is out range for the levels array. sustainPoint: "+a+" levels: "+b)},flock.envelope.expand=function(a){var b="string"==typeof a?fluid.invokeGlobalFunction(a):a.type?fluid.invokeGlobalFunction(a.type,[a]):a;if(b.curves&&!b.curve&&(b.curve=b.curves),!flock.isIterable(b.curve)){var c=b.levels.length-1;b.curve=flock.generate(new Array(c),b.curve)}return flock.envelope.validate(b,!0),b},flock.line={fill:function(a,b,c,d,e,f){e=void 0===e?0:e,f=void 0===f?b.length:f;var g=f-e,h=flock.line.fill.model;h.unscaled=c,h.destination=d,h.numSegmentSamps=g-1,"number"==typeof a&&(h.currentCurve=a,a="curve");var i=flock.line[a];return i||flock.fail("No line generator could be found for type "+a),i.init(h),i.gen(g,e,b,h)},generator:function(a){var b=typeof a;return"string"===b?flock.line[a]:"number"===b?flock.line.curve:flock.line.linear},constant:{init:function(a){a.stepSize=0},gen:function(a,b,c,d){for(var e=d.unscaled,f=b;a+b>f;f++)c[f]=e;return c}},step:{init:function(a){a.arrived=!1},gen:function(a,b,c,d){for(var e=b;a+b>e;e++)c[e]=d.unscaled,d.arrived||(d.arrived=!0,d.unscaled=d.destination);return c}},linear:{init:function(a){a.stepSize=(a.destination-a.unscaled)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e+=f;return d.unscaled=e,d.stepSize=f,c}},exponential:{init:function(a){0===a.unscaled&&(a.unscaled=1e-16),a.stepSize=0===a.numSegmentSamps?0:Math.pow(a.destination/a.unscaled,1/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e*=f;return d.unscaled=e,d.stepSize=f,c}},curve:{init:function(a){if(Math.abs(a.currentCurve)<.001)return flock.line.linear.init(a);var b=(a.destination-a.unscaled)/(1-Math.exp(a.currentCurve));a.a2=a.unscaled+b,a.b1=b,a.stepSize=Math.exp(a.currentCurve/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.b1,g=b;a+b>g;g++)c[g]=e,f*=d.stepSize,e=d.a2-f;return d.unscaled=e,d.b1=f,c}},sin:{init:function(a){var b=Math.PI/a.numSegmentSamps;a.a2=.5*(a.destination+a.unscaled),a.b1=2*Math.cos(b),a.y1=.5*(a.destination-a.unscaled),a.y2=a.y1*Math.sin(flock.HALFPI-b),a.unscaled=a.a2-a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,f=d.a2-e,h=g,g=e;return d.unscaled=f,d.y1=g,d.y2=h,c}},welsh:{init:function(a){var b=flock.HALFPI/a.numSegmentSamps,c=Math.cos(b);a.b1=2*c,a.destination>=a.unscaled?(a.a2=a.unscaled,a.y1=0,a.y2=-Math.sin(b)*(a.destination-a.unscaled)):(a.a2=a.destination,a.y1=a.unscaled-a.destination,a.y2=c*(a.unscaled-a.destination)),a.unscaled=a.a2+a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,h=g,g=e,f=d.a2+e;return d.unscaled=f,d.y1=g,d.y2=h,c}},squared:{init:function(a){a.y1=Math.sqrt(a.unscaled),a.y2=Math.sqrt(a.destination),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f;return d.y1=f,d.unscaled=e,c}},cubed:{init:function(a){var b=.3333333333333333;a.y1=Math.pow(a.unscaled,b),a.y2=Math.pow(a.destination,b),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f*f;return d.y1=f,d.unscaled=e,c}}},flock.line.fill.model={value:0,destination:1},flock.ugen.line=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.stepSize,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i+=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;a.start=d.inputs.start.output[0],a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),0===a.numSteps?(a.stepSize=0,a.level=a.end):(a.stepSize=(a.end-a.start)/a.numSteps,a.level=a.start),flock.onMulAddInputChanged(d)},d.onInputChanged(),d},fluid.defaults("flock.ugen.line",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,stepSize:0,level:0,value:0}}}),flock.ugen.xLine=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.multiplier,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i*=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;flock.onMulAddInputChanged(d),a.start=d.inputs.start.output[0],0===a.start&&(a.start=Number.MIN_VALUE),a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),a.multiplier=Math.pow(a.end/a.start,1/a.numSteps),a.level=a.start},d.onInputChanged(),d},fluid.defaults("flock.ugen.xLine",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,multiplier:0,level:0,value:0}}}),flock.ugen.asr=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.output,g=e.previousGate,h=d.inputs.gate.output[0],i=e.level,j=e.stage,k=j.currentStep,l=j.stepInc,m=j.numSteps,n=e.targetLevel,o=!1;for(0>=g&&h>0?(n=d.inputs.sustain.output[0],b=d.inputs.attack.output[0],o=!0):0>=h&&k>=m&&(n=d.inputs.start.output[0],b=d.inputs.release.output[0],o=!0),o&&(m=Math.round(b*e.sampleRate),l=(n-i)/m,k=0),c=0;a>c;c++)f[c]=i,k++,i=m>k?i+l:k===m?n:i;e.level=i,e.targetLevel=n,e.previousGate=h,j.currentStep=k,j.stepInc=l,j.numSteps=m,d.mulAdd(a),e.value=f[a-1]},d.init=function(){var a=d.model;a.level=d.inputs.start.output[0],a.targetLevel=d.inputs.sustain.output[0],d.onInputChanged()},d.init(),d},fluid.defaults("flock.ugen.asr",{rate:"control",inputs:{start:0,attack:.01,sustain:1,release:1,gate:0,mul:null,add:null},ugenOptions:{model:{level:0,targetLevel:0,previousGate:0,value:0,stage:{currentStep:0,stepInc:0,numSteps:0}}}}),flock.ugen.env={},flock.ugen.env.simpleASR=flock.ugen.asr,fluid.defaults("flock.ugen.env.simpleASR",fluid.copy(fluid.defaults("flock.ugen.asr"))),flock.ugen.envGen=function(a,b,c){var d=flock.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,f=d.inputs,g=f.gate.output[0],h=f.timeScale.output[0],i=0;for(flock.ugen.envGen.checkGate(d,g,h);a>i;)b=Math.min(a-i,c.numSegmentSamps),d.lineGen.gen(b,i,e,c),i+=b,c.numSegmentSamps-=b,0===c.numSegmentSamps&&flock.ugen.envGen.nextStage(d,h);d.mulAdd(a),c.value=e[a-1]},d.arGen=function(a){var b,c=d.model,e=d.output,f=d.inputs,g=f.gate.output,h=f.timeScale.output[0];for(b=0;a>b;b++)flock.ugen.envGen.checkGate(d,g[b],h),d.lineGen.gen(1,b,e,c),c.numSegmentSamps--,0===c.numSegmentSamps&&flock.ugen.envGen.nextStage(d,h);d.mulAdd(a),c.value=e[a-1]},d.onInputChanged=function(a){a&&"envelope"!==a||(d.envelope=flock.ugen.envGen.initEnvelope(d,d.inputs.envelope)),a&&"gate"!==a||(d.gen=d.inputs.gate.rate===flock.rates.AUDIO?d.arGen:d.krGen),flock.onMulAddInputChanged(d)},d.onInputChanged(),d},flock.ugen.envGen.initEnvelope=function(a,b){var c=a.model,d=flock.envelope.expand(b);return c.stage=0,c.numStages=d.times.length,a.lineGen=flock.line.constant,flock.ugen.envGen.lineGenForStage(a.inputs.timeScale.output[0],d,c),c.unscaled=d.levels[c.stage],d},flock.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=flock.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=flock.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},flock.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=flock.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaled):(c.stage++,a.lineGen=flock.ugen.envGen.lineGenForStage(b,d,c))},flock.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,d*c.sampleRate)),c.numSegmentSamps=e,c.destination=f},flock.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,f=b.curve;return 0===c.stage||c.stage>c.numStages?d=flock.line.constant:(e=f[c.stage-1],c.currentCurve=e,d=flock.line.generator(e)),flock.ugen.envGen.setupStage(a,b,c),d.init(c),d},fluid.defaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,value:0,stage:0,numStages:0}}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";var a=fluid.registerNamespace("jQuery");fluid.registerNamespace("flock.ugen"),flock.ugen.scope=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.spf,f=c.bufIdx,g=c.scope.values;for(b=0;a>b;b++)g[f]=d.inputs.source.output[b],e>f?f+=1:(f=0,d.scopeView.refreshView());c.bufIdx=f,c.value=d.inputs.source.output[a-1]},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=flock.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},fluid.defaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),flock.ugen.mouse={},flock.ugen.mouse.cursor=function(b,c,d){var e=flock.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,f=flock.ugen.mouse.cursor.normalize(e.target,d),g=d.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=d.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(flock.LOG001/(h*d.sampleRate)),d.lagCoef=k),b=0;a>b;b++)c=j+i,f=Math.pow(c/i,f)*i,g=f+k*(g-f),l[b]=g;d.movingAvg=g,d.value=l[a-1]},e.linearGen=function(a){var b,c=e.model,d=flock.ugen.mouse.cursor.normalize(e.target,c),f=c.movingAvg,g=e.inputs.lag.output[0],h=e.inputs.add.output[0],i=e.inputs.mul.output[0],j=c.lagCoef,k=e.output;for(g!==j&&(j=0===g?0:Math.exp(flock.LOG001/(g*c.sampleRate)),c.lagCoef=j),b=0;a>b;b++)f=d+j*(f-d),k[b]=f*i+h;c.movingAvg=f,c.value=k[a-1]},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,f=flock.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=f*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=d[a-1]},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){flock.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},flock.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},fluid.defaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),flock.ugen.mouse.click=function(a,b,c){var d=flock.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.model;for(b=0;a>b;b++)c[b]=e.unscaled;d.mulAdd(a),e.value=c[a-1]},d.mouseDownListener=function(){d.model.unscaled=1},d.mouseUpListener=function(){d.model.unscaled=0},d.init=function(){var a=d.model;a.target="string"==typeof d.options.target?document.querySelector(d.options.target):d.options.target||window,a.unscaled=0,a.target.addEventListener("mousedown",d.mouseDownListener,!1),a.target.addEventListener("mouseup",d.mouseUpListener,!1),d.onInputChanged()},d.onInputChanged=function(){flock.onMulAddInputChanged(d)},d.init(),d},fluid.defaults("flock.ugen.mouse.click",{rate:"control"}),flock.ugen.mediaIn=function(b,c,d){var e=flock.ugen(b,c,d);return e.gen=function(a){for(var b=e.output,c=e.bus,d=0;a>d;d++)b[d]=c[d];e.mulAdd(a),e.model.value=b[a-1]},e.onInputChanged=function(){flock.onMulAddInputChanged(e)},e.init=function(){var b=flock.enviro.shared,c=a(e.options.element),d=b.audioStrategy.nativeNodeManager.createMediaElementInput(c[0]);e.bus=e.options.audioSettings.buses[d],e.onInputChanged(),flock.platform.browser.safari?flock.log.warn("MediaElementSourceNode does not work on Safari. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):flock.platform.isAndroid&&flock.log.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},fluid.defaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";fluid.registerNamespace("flock.view"),flock.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()
},c.init(),c}}();var fluid=fluid||require("infusion"),flock=fluid.registerNamespace("flock");!function(){"use strict";fluid.registerNamespace("flock.midi"),flock.midi.requestAccess=function(a,b,c){if(!navigator.requestMIDIAccess){var d="The Web MIDI API is not available. You may need to enable it in your browser's settings.";return fluid.log(fluid.logLevel.WARN,d),void c(d)}var e=navigator.requestMIDIAccess({sysex:a});e.then(b,c)},flock.midi.getPorts=function(a){var b={},c="function"==typeof a.inputs?flock.midi.collectPortsLegacy:flock.midi.collectPorts;return c("inputs",a,b),c("outputs",a,b),b},flock.midi.collectPorts=function(a,b,c){for(var d=c[a]=c[a]||[],e=b[a].values(),f=e.next();!f.done;)d.push(f.value),f=e.next();return c},flock.midi.collectPortsLegacy=function(a,b,c){return b[a]&&(c[a]=b[a]()),c},flock.midi.read=function(a){var b,c=a[0],d=c>>4,e=15&c;switch(d){case 8:b=flock.midi.read.noteOff;break;case 9:b=a[2]>0?flock.midi.read.noteOn:flock.midi.read.noteOff;break;case 10:b=flock.midi.read.polyAftertouch;break;case 11:b=flock.midi.read.controlChange;break;case 12:b=flock.midi.read.programChange;break;case 13:b=flock.midi.read.channelAftertouch;break;case 14:b=flock.midi.read.pitchbend;break;case 15:b=flock.midi.read.sysex;break;default:throw new Error("Recieved an unrecognized MIDI message: "+a)}return b(e,a)},flock.midi.read.note=function(a,b,c){return{type:a,chan:b,note:c[1],velocity:c[2]}},flock.midi.read.noteOn=function(a,b){return flock.midi.read.note("noteOn",a,b)},flock.midi.read.noteOff=function(a,b){return flock.midi.read.note("noteOff",a,b)},flock.midi.read.polyAftertouch=function(a,b){return{type:"aftertouch",chan:a,note:b[1],pressure:b[2]}},flock.midi.read.controlChange=function(a,b){return{type:"control",chan:a,number:b[1],value:b[2]}},flock.midi.read.programChange=function(a,b){return{type:"program",chan:a,program:b[1]}},flock.midi.read.channelAftertouch=function(a,b){return{type:"aftertouch",chan:a,pressure:b[1]}},flock.midi.read.pitchbend=function(a,b){return{type:"pitchbend",chan:a,value:b[1]<<7|b[2]}},flock.midi.read.sysex=function(a,b){return{type:"system",chan:a,data:b.subarray(1)}},fluid.defaults("flock.midi.system",{gradeNames:["fluid.eventedComponent","autoInit"],sysex:!1,members:{access:void 0,ports:void 0},invokers:{requestAccess:{funcName:"flock.midi.requestAccess",args:["{that}.options.sysex","{that}.events.onAccessGranted.fire","{that}.events.onAccessError.fire"]},refreshPorts:{funcName:"flock.midi.system.refreshPorts",args:["{that}","{that}.access"]}},events:{onAccessGranted:null,onAccessError:null,onReady:null},listeners:{onCreate:{func:"{that}.requestAccess"},onAccessGranted:[{funcName:"flock.midi.system.setAccess",args:["{that}","{arguments}.0"]},{func:"{that}.refreshPorts"},{func:"{that}.events.onReady.fire",args:"{that}.ports"}],onAccessError:{funcName:"fluid.log",args:[fluid.logLevel.WARN,"{arguments}.0"]}}}),flock.midi.system.setAccess=function(a,b){a.access=b},flock.midi.system.refreshPorts=function(a,b){a.ports=flock.midi.getPorts(b)},fluid.defaults("flock.midi.connection",{gradeNames:["fluid.eventedComponent","autoInit"],openImmediately:!1,sysex:!1,distributeOptions:{source:"{that}.options.sysex",target:"{that > system}.options.sysex"},ports:0,invokers:{send:{func:"{that}.events.onSendMessage.fire"},open:{funcName:"flock.midi.connection.bind",args:["{system}.ports","{that}.options.ports","{that}.events.raw.fire","{that}.events.onSendMessage"]},close:{funcName:"flock.midi.connection.close",args:["{system}.ports","{that}.events.raw.fire"]}},components:{system:{type:"flock.midi.system",options:{listeners:{onReady:{funcName:"flock.midi.connection.autoOpen",args:["{connection}.options.openImmediately","{connection}.open"]}}}}},events:{onReady:"{system}.events.onReady",onError:null,onSendMessage:null,raw:null,message:null,note:null,noteOn:null,noteOff:null,control:null,program:null,aftertouch:null,pitchbend:null},listeners:{onError:{funcName:"fluid.log",args:[fluid.logLevel.WARN,"{arguments}.0"]},raw:{funcName:"flock.midi.connection.fireEvent",args:["{arguments}.0","{that}.events"]}}}),flock.midi.connection.autoOpen=function(a,b){a&&b()},flock.midi.findPorts=function(a,b){b=fluid.makeArray(b);var c=[];return fluid.each(b,function(b){var d=flock.midi.findPorts.portFinder(b),e=d(a);c=c.concat(e)}),c},flock.midi.findPorts.portFinder=function(a){if("number"==typeof a)return flock.midi.findPorts.byIndex(a);if("string"==typeof a&&(a={name:a}),a.id)return function(b){b.find(flock.midi.findPorts.idMatcher(a.id))};var b=a.manufacturer&&a.name?flock.midi.findPorts.bothMatcher(a.manufacturer,a.name):a.manufacturer?flock.midi.findPorts.manufacturerMatcher(a.manufacturer):flock.midi.findPorts.nameMatcher(a.name);return function(a){return a.filter(b)}},flock.midi.findPorts.byIndex=function(a){return function(b){var c=b[a];return c?[c]:[]}},flock.midi.findPorts.lowerCaseContainsMatcher=function(a){return function(b){var c;for(var d in a){var e=b[d],f=a[d];if(c="*"===f?!0:e&&e.toLowerCase().indexOf(f.toLowerCase())>-1,!c)break}return c}},flock.midi.findPorts.idMatcher=function(a){return function(b){return b.id===a}},flock.midi.findPorts.bothMatcher=function(a,b){return flock.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a,name:b})},flock.midi.findPorts.manufacturerMatcher=function(a){return flock.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a})},flock.midi.findPorts.nameMatcher=function(a){return flock.midi.findPorts.lowerCaseContainsMatcher({name:a})},flock.midi.findPorts.eachPortOfType=function(a,b,c){var d=fluid.makeArray(a);fluid.each(d,function(a){a.type===b&&c(a)})},flock.midi.connection.listen=function(a,b){flock.midi.findPorts.eachPortOfType(a,"input",function(a){a.addEventListener("midimessage",b,!1)})},flock.midi.connection.stopListening=function(a,b){flock.midi.findPorts.eachPortOfType(a,"input",function(a){a.removeEventListener("midimessage",b,!1)})},flock.midi.connection.bindSender=function(a,b){var c=fluid.makeArray(a);fluid.each(c,function(a){b.addListener(a.send.bind(a))})},flock.midi.connection.bind=function(a,b,c,d){b=flock.midi.connection.expandPortSpec(b);var e=flock.midi.findPorts(a.inputs,b.input),f=flock.midi.findPorts(a.outputs,b.output);e&&e.length>0?flock.midi.connection.listen(e,c):void 0!==b.input&&flock.midi.connection.logNoMatchedPorts("input",b),f&&f.length>0?flock.midi.connection.bindSender(f,d):void 0!==b.output&&flock.midi.connection.logNoMatchedPorts("output",b)},flock.midi.connection.close=function(a,b){flock.midi.connection.stopListening(a.inputs,b)},flock.midi.connection.logNoMatchedPorts=function(a,b){fluid.log(fluid.logLevel.WARN,"No matching "+a+" ports were found for port specification: ",b[a])},flock.midi.connection.expandPortSpec=function(a){if(void 0!==a.input||void 0!==a.output)return a;var b={input:{},output:{}};return"number"==typeof a?b.input=b.output=a:(flock.midi.connection.expandPortSpecProperty("manufacturer",a,b),flock.midi.connection.expandPortSpecProperty("name",a,b)),b},flock.midi.connection.expandPortSpecProperty=function(a,b,c){return c.input[a]=c.output[a]=b[a],c},flock.midi.connection.fireEvent=function(a,b){var c=flock.midi.read(a.data),d=c.type?b[c.type]:void 0;b.message.fire(c),("noteOn"===c.type||"noteOff"===c.type)&&b.note.fire(c),d&&d.fire(c)}}();
\ No newline at end of file
diff --git a/dist/flocking-no-jquery.js b/dist/flocking-no-jquery.js
index f0cc4416..0845727c 100644
--- a/dist/flocking-no-jquery.js
+++ b/dist/flocking-no-jquery.js
@@ -1,4 +1,4 @@
-/*! Flocking 0.1.0 (February 16, 2015), Copyright 2015 Colin Clark | flockingjs.org */
+/*! Flocking 0.1.0 (February 20, 2015), Copyright 2015 Colin Clark | flockingjs.org */
(function (root, factory) {
if (typeof exports === "object") {
@@ -11298,8 +11298,14 @@ var fluid = fluid || require("infusion"),
flock.interpolate.cubic = flock.interpolate.hermite;
- flock.warn = function (msg) {
- fluid.log(fluid.logLevel.WARN, msg);
+ flock.log = {
+ warn: function (msg) {
+ fluid.log(fluid.logLevel.WARN, msg);
+ },
+
+ debug: function (msg) {
+ fluid.log(fluid.logLevel.INFO, msg);
+ }
};
flock.fail = function (msg) {
@@ -11311,7 +11317,7 @@ var fluid = fluid || require("infusion"),
};
flock.pathParseError = function (root, path, token) {
- var msg = "Error parsing path: " + path + ". Segment '" + token +
+ var msg = "Error parsing path '" + path + "'. Segment '" + token +
"' could not be resolved. Root object was: " + fluid.prettyPrintJSON(root);
flock.fail(msg);
@@ -11360,8 +11366,8 @@ var fluid = fluid || require("infusion"),
root = root[prop];
type = typeof root;
if (type !== "object") {
- flock.fail("Error while setting a value at path + " + path +
- ". A non-container object was found at segment " + prop + ". Value: " + root);
+ flock.fail("Error while setting a value at path '" + path +
+ "'. A non-container object was found at segment '" + prop + "'. Value: " + root);
return;
}
@@ -11491,23 +11497,47 @@ var fluid = fluid || require("infusion"),
flock.input.getValuesForPathObject(root, path);
};
+ flock.input.resolveValue = function (root, path, val, target, inputName, previousInput, valueParser) {
+ // Check to see if the value is actually a "get expression"
+ // (i.e. an EL path wrapped in ${}) and resolve it if necessary.
+ if (typeof val === "string") {
+ var extracted = fluid.extractEL(val, flock.input.valueExpressionSpec);
+ if (extracted) {
+ var resolved = flock.input.getValueForPath(root, extracted);
+ if (resolved === undefined) {
+ flock.log.debug("The value expression '" + val + "' resolved to undefined. " +
+ "If this isn't expected, check to ensure that your path is valid.");
+ }
+
+ return resolved;
+ }
+ }
+
+ return flock.input.shouldExpand(inputName, target) && valueParser ?
+ valueParser(val, path, target, previousInput) : val;
+ };
+
+ flock.input.valueExpressionSpec = {
+ ELstyle: "${}"
+ };
+
flock.input.setValueForPath = function (root, path, val, baseTarget, valueParser) {
path = flock.input.expandPath(path);
var previousInput = flock.get(root, path),
lastDotIdx = path.lastIndexOf("."),
inputName = path.slice(lastDotIdx + 1),
- target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) : baseTarget,
- newInput = flock.input.shouldExpand(inputName, target) && valueParser ?
- valueParser(val, path, target, previousInput) : val;
+ target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) :
+ baseTarget,
+ resolvedVal = flock.input.resolveValue(root, path, val, target, inputName, previousInput, valueParser);
- flock.set(root, path, newInput);
+ flock.set(root, path, resolvedVal);
if (target && target.onInputChanged) {
target.onInputChanged(inputName);
}
- return newInput;
+ return resolvedVal;
};
flock.input.setValuesForPaths = function (root, valueMap, baseTarget, valueParser) {
@@ -20911,11 +20941,11 @@ var fluid = fluid || require("infusion"),
// TODO: Remove this warning when Safari and Android
// fix their MediaElementAudioSourceNode implementations.
if (flock.platform.browser.safari) {
- flock.warn("MediaElementSourceNode does not work on Safari. " +
+ flock.log.warn("MediaElementSourceNode does not work on Safari. " +
"For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 " +
"and https://bugs.webkit.org/show_bug.cgi?id=125031");
} else if (flock.platform.isAndroid) {
- flock.warn("MediaElementSourceNode does not work on Android. " +
+ flock.log.warn("MediaElementSourceNode does not work on Android. " +
"For more information, see https://code.google.com/p/chromium/issues/detail?id=419446");
}
};
diff --git a/dist/flocking-no-jquery.min.js b/dist/flocking-no-jquery.min.js
index f153baa5..de9ca4b4 100644
--- a/dist/flocking-no-jquery.min.js
+++ b/dist/flocking-no-jquery.min.js
@@ -1,11 +1,11 @@
-/*! Flocking 0.1.0 (February 16, 2015), Copyright 2015 Colin Clark | flockingjs.org */
+/*! Flocking 0.1.0 (February 20, 2015), Copyright 2015 Colin Clark | flockingjs.org */
!function(a,b){"object"==typeof exports?(a.flock=exports,b(exports,require("jquery"))):"function"==typeof define&&define.amd?define(["exports","jquery"],function(c,d){return a.flock=c,a.flock,b(c,d)}):(a.flock={},b(a.flock,jQuery))}(this,function(a,b){window.jQuery=b;var c=c||{},d=d||c;!function(a,b){"use strict";function c(a,b,c,d){for(var e=a[c],f=0;ff;++f)a=e(a,c[f],f,b.makeArray(c));return a}function e(a,b,c,e){for(var f=[],g=0;gd?0:d},b.FluidError=function(a){this.message=a,this.stack=(new Error).stack},b.FluidError.prototype=new Error,b.builtinFail=function(a,c,d){b.log.apply(null,[b.logLevel.FAIL,"ASSERTION FAILED: "].concat(c)),b.logActivity(d);var e=c.join("");if(a)throw new b.FluidError(e);e["Assertion failure - check console for details"]()};var g=[!1];b.fail=function(){var a=b.makeArray(arguments),c=b.makeArray(b.describeActivity());b.popActivity(c.length);var d=g[0];"boolean"==typeof d?b.builtinFail(d,a,c):"function"==typeof d&&d(a,c)},b.pushSoftFailure=function(a){"boolean"==typeof a||"function"==typeof a?g.unshift(a):-1===a&&g.shift()},b.notrycatch=!0,b.tryCatch=function(a,c,d){if(d=d||b.identity,b.notrycatch){var e=a();return d(),e}try{return a()}catch(f){if(!c)throw f;c(f)}finally{d()}},b.expect=function(a,c,d){b.transform(b.makeArray(c),function(c){"undefined"==typeof d[c]&&b.fail(a+" missing required parameter "+c)})},b.isLogging=function(){return h[0].priority>b.logLevel.IMPORTANT.priority},b.isLogLevel=function(a){return b.isMarker(a)&&void 0!==a.priority},b.passLogLevel=function(a){return a.priority<=h[0].priority},b.setLogging=function(a){var c;"boolean"==typeof a?c=b.logLevel[a?"INFO":"IMPORTANT"]:b.isLogLevel(a)?c=a:b.fail("Unrecognised fluid logging level ",a),h.unshift(c)},b.setLogLevel=b.setLogging,b.popLogging=function(){return 1===h.length?h[0]:h.shift()},b.doLog=function(a){var b=a.join("");"undefined"!=typeof console?console.debug?console.debug.apply(console,a):"function"==typeof console.log?console.log.apply(console,a):console.log(b):"undefined"!=typeof YAHOO?YAHOO.log(b):"undefined"!=typeof opera&&opera.postError(b)},b.log=function(){var a=b.makeArray(arguments),c=b.logLevel.INFO;if(b.isLogLevel(a[0])&&(c=a.shift()),b.passLogLevel(c)){var d=b.renderTimestamp(new Date)+": ",e=[d].concat(a);b.doLog(e)}},b.identity=function(a){return a},b.isValue=function(a){return void 0!==a&&null!==a},b.isPrimitive=function(a){var b=typeof a;return!a||"string"===b||"boolean"===b||"number"===b||"function"===b},b.isArrayable=function(a){return a&&(a.jquery||"[object Array]"===Object.prototype.toString.call(a))},b.isPlainObject=function(a){if(!a)return!1;var b=Object.prototype.toString.call(a);return"[object Array]"===b||"[object Object]"===b},b.isDOMNode=function(a){return a&&"number"==typeof a.nodeType},b.isDOMish=function(a){return b.isDOMNode(a)||a.jquery},b.isComponent=function(a){return a&&a.typeName&&a.id},b.freshContainer=function(a){return b.isArrayable(a)?[]:{}},b.copy=function(c){return b.isPrimitive(c)?c:a.extend(!0,b.freshContainer(c),c)},b.makeArray=function(a){var c=[];if(null!==a&&void 0!==a)if(b.isPrimitive(a)||"number"!=typeof a.length)c.push(a);else for(var d=0;de;++e)d[e]=c?b(e):b;return d},b.iota=function(a,b){b=b||0;for(var c=[],d=0;a>d;++d)c[c.length]=b++;return c},b.getMembers=function(a,c){return b.transform(a,function(a){return b.get(a,c)})},b.filterKeys=function(c,d,e){return b.remove_if(a.extend({},c),function(b,c){return e^-1===a.inArray(c,d)})},b.censorKeys=function(a,c){return b.filterKeys(a,c,!0)},b.makeFlatten=function(a){return function(c){var d=[];return b.each(c,function(){d.push(arguments[a])}),d}},b.keys=b.makeFlatten(1),b.values=b.makeFlatten(0),b.contains=function(c,d){return c?b.isArrayable(c)?-1!==a.inArray(d,c):b.find(c,function(a){return d===a?!0:void 0}):void 0},b.keyForValue=function(a,c){return b.find(a,function(a,b){return c===a?b:void 0})},b.findKeyInObject=b.keyForValue,b.arrayToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0}),c},b.clear=function(a){if(b.isArrayable(a))a.length=0;else for(var c in a)delete a[c]},b.compareStringLength=function(a){return a?function(a,b){return a.length-b.length}:function(a,b){return b.length-a.length}},b.logLevelsSpec={FATAL:0,FAIL:5,WARN:10,IMPORTANT:12,INFO:15,TRACE:20},b.logLevel=b.transform(b.logLevelsSpec,function(a,b){return{type:"fluid.marker",value:b,priority:a}});var h=[b.logLevel.IMPORTANT];b.VALUE={type:"fluid.marker",value:"VALUE"},b.NO_VALUE={type:"fluid.marker",value:"NO_VALUE"},b.EXPAND={type:"fluid.marker",value:"EXPAND"},b.EXPAND_NOW={type:"fluid.marker",value:"EXPAND_NOW"},b.isMarker=function(a,b){return a&&"object"==typeof a&&"fluid.marker"===a.type?b?a.value===b.value:!0:!1},b.model={},b.model.copyModel=function(c,d){b.clear(c),a.extend(!0,c,d)},b.model.parseEL=function(a){return""===a?[]:String(a).split(".")},b.model.composePath=function(a,b){return""===a?b:""===b?a:a+"."+b},b.model.composeSegments=function(){return b.makeArray(arguments).join(".")},b.path=b.model.composeSegments,b.composePath=b.model.composePath,b.requireDataBinding=function(){b.fail("Please include DataBinding.js in order to operate complex model accessor configuration")},b.model.setWithStrategy=b.model.getWithStrategy=b.requireDataBinding,b.model.resolvePathSegment=function(a,b,c,d){return!d&&a.resolvePathSegment?a.resolvePathSegment(b):c&&void 0===a[b]?a[b]={}:a[b]},b.model.pathToSegments=function(a,c){var d=c&&c.parser?c.parser.parse:b.model.parseEL,e="number"==typeof a||"string"==typeof a?d(a):a;return e},b.model.accessImpl=function(a,c,d,e,f,g,h){var i=b.model.pathToSegments(c,e),j=0;f&&(j=f.length,i=f.concat(i));var k=d===b.NO_VALUE?0:1;return a=h(a,i,j,e,k),d===b.NO_VALUE||d===b.VALUE?g?{root:a,segs:i}:a:void(a[i[i.length-1]]=d)},b.model.accessSimple=function(a,c,d,e,f,g){return b.model.accessImpl(a,c,d,e,f,g,b.model.traverseSimple)},b.model.traverseSimple=function(a,c,d,e,f){for(var g=e,h=c.length-f,i=0;h>i;++i){if(!a)return a;var j=c[i];a=e&&e[j]?e[j]:b.model.resolvePathSegment(a,j,1===f,g),e=null}return a},b.model.setSimple=function(a,c,d,e,f){b.model.accessSimple(a,c,d,e,f,!1)},b.model.getSimple=function(a,c,d,e){return null===c||void 0===c||0===c.length?a:b.model.accessSimple(a,c,b.NO_VALUE,d,e,!1)},b.decodeAccessorArg=function(a){return a&&a!==b.model.defaultGetConfig&&a!==b.model.defaultSetConfig?"environment"===a.type?a.value:void 0:null},b.set=function(a,c,d,e,f){var g=b.decodeAccessorArg(e);void 0===g?b.model.setWithStrategy(a,c,d,e,f):b.model.setSimple(a,c,d,g,f)},b.get=function(a,c,d,e){var f=b.decodeAccessorArg(d);return void 0===f?b.model.getWithStrategy(a,c,d,e):b.model.accessImpl(a,c,b.NO_VALUE,f,null,!1,b.model.traverseSimple)},b.model.setBeanValue=b.set,b.model.getBeanValue=b.get,b.getGlobalValue=function(a,c){return a?(c=c||b.environment,b.get(b.global,a,{type:"environment",value:c})):void 0},b.bind=function(a,c,d){return a[c].apply(a,b.makeArray(d))},b.invokeGlobalFunction=function(a,c,d){var e=b.getGlobalValue(a,d);return e?e.apply(null,c||[]):void b.fail("Error invoking global function: "+a+" could not be located")},b.registerGlobalFunction=function(a,c,d){d=d||b.environment,b.set(b.global,a,c,{type:"environment",value:d})},b.setGlobalValue=b.registerGlobalFunction,b.registerNamespace=function(a,c){c=c||b.environment;var d=b.getGlobalValue(a,c);return d||(d={},b.setGlobalValue(a,d,c)),d},b.dumpEl=b.identity,b.renderTimestamp=b.identity,b.registerNamespace("fluid.event"),b.generateUniquePrefix=function(){return Math.floor(1e12*Math.random()).toString(36)+"-"};var i=b.generateUniquePrefix();b.fluidInstance=i;var j=1;b.allocateGuid=function(){return i+j++},b.event.identifyListener=function(a){return"string"==typeof a||a.$$fluid_guid||(a.$$fluid_guid=b.allocateGuid()),a.$$fluid_guid},b.event.impersonateListener=function(a,c){b.event.identifyListener(a),c.$$fluid_guid=a.$$fluid_guid},b.event.mapPriority=function(a,b){return null===a||void 0===a?b:"last"===a?Number.MAX_VALUE:"first"===a?-Number.MAX_VALUE:-a},b.priorityComparator=function(a,b){return a.priority-b.priority},b.event.sortListeners=function(a){var c=[];return b.each(a,function(a){void 0!==a.length?c=c.concat(a):c.push(a)}),c.sort(b.priorityComparator)},b.event.invokeListener=function(a,c){return"string"==typeof a&&(a=b.event.resolveListener({globalName:a})),a.apply(null,c)},b.event.resolveListener=function(a){if(a.globalName){var c=b.getGlobalValue(a.globalName);c?a=c:b.fail("Unable to look up name "+a.globalName+" as a global function")}return a},b.nameComponent=function(a){return a?"component with typename "+a.typeName+" and id "+a.id:"[unknown component]"},b.event.nameEvent=function(a,c){return c+" of "+b.nameComponent(a)},b.makeEventFirer=function(a,c,d,e){function f(e,f,h){if(e&&!g.destroyed){b.log(b.logLevel.TRACE,"Firing event "+d+" to list of "+e.length+" listeners");for(var i=0;i0&&b===a[c-1]})},b.arrayConcatPolicy=function(a,c){return b.makeArray(a).concat(b.makeArray(c))},b.typeTag=function(a){return a?{typeName:a,id:b.allocateGuid()}:null},b.staticEnvironment=b.typeTag("fluid.staticEnvironment"),b.singleThreadLocal=function(a){var b=a();return function(a){return void 0===a?b:b=a}},b.threadLocal=b.singleThreadLocal,b.globalThreadLocal=b.threadLocal(function(){return b.typeTag("fluid.dynamicEnvironment")});var k=1,l={},m={},n=function(a,c,d){var e=!0;return d?e=1===c.length:c=b.makeArray(c),b.each(c,function(c){if(c&&!a.gradeHash[c]){var d="{"===c.charAt(0),f=(d?null:e?b.rawDefaults(c):b.getGradedDefaults(c))||{},g=l[c]||k-1;a.lastTick=Math.max(a.lastTick,g),a.gradeHash[c]=!0,a.gradeChain.push(c),a.optionsChain.push(f);for(var h=b.makeArray(f.gradeNames),i=0;ie.lastTick&&(b.log("Clearing cache for component "+a+" with gradeNames ",g),e=null)}if(!e){var i=b.rawDefaults(a);if(!i)return i;e=o[d]=b.resolveGrade(i,a,c)}return e.defaults},b.annotateListeners=function(a,c){c.listeners&&(c.listeners=b.transform(c.listeners,function(c){var d=b.makeArray(c);return b.transform(d,function(c){return b.isPrimitive(c)||(c.componentSource=a),c})}))},b.rawDefaults=function(a,c){if(void 0===c)return m[a];b.pushActivity("registerDefaults","registering defaults for grade %componentName with options %options",{componentName:a,options:c});var d=b.expandCompact?b.expandCompact(c):b.copy(c);b.annotateListeners(a,d),m[a]=d,l[a]=k++,b.popActivity()},b.doIndexDefaults=function(a,c,d,e){for(var f=b.makeArray(e.gradeNames),g=0;g=0;--i){var j=e[i];if(void 0!==j&&(b.each(j,function(b,h){a.hasOwnProperty(h)||(d[c]=h,g.strategy(a,h,c+1,d,e,f))}),h.replace))break}return a},b.inEvaluationMarker={__CURRENTLY_IN_EVALUATION__:!0},b.destroyedMarker={__COMPONENT_DESTROYED__:!0},b.strategyRecursionBailout=50,b.makeMergeStrategy=function(a){var c=function(c,f,g,h,i,j){if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options merging, current path is ",h," at depth ",g,' - please protect components from merging using the "nomerge" merge policy'),b.isPrimitive(c))return void 0;b.isTracing&&b.tracing.pathCount.push(b.path(h.slice(0,g)));var k;if(c.hasOwnProperty(f)){if(k=c[f],!a.evaluateFully)return k}else c[f]=b.inEvaluationMarker;void 0===i&&(h=b.makeArray(h),i=e(a.sources,h,g-1,a.sourceStrategies),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var l,m,n,o=b.concreteTrundler(j,f),p=b.derefMergePolicy(o);p.replace?(l=1-i.length,m=0,n=-1):(l=0,m=i.length-1,n=1);for(var q,r=[],s=l;m>=s;++s){var t=n*s,u=a.sourceStrategies[t](i[t],f,g,h);if(void 0!==u&&(r[t]=u,void 0===k)){if(-1===n){q=c[f]=u;break}q=c[f]=b.mergeOneImpl(q,u,s,r,p,g,h,a)}}return void 0!==k&&(q=k),r.length>0&&(b.isPrimitive(q)||b.fetchMergeChildren(q,g,h,r,o,a)),void 0===k&&0===r.length&&delete c[f],q};return a.strategy=c,c},b.driveStrategy=function(a,c,d){c=b.makeArray(c);for(var e=0;e=0;--g)"autoInit"!==c[g]&&(f=b.updateWithDefaultLifecycle(e,f,c[g]));f&&(a.options[e]=b.makeEventFirer(null,null,e,a.id),b.event.addListenerToFirer(a.options[e],f))})},b.clearLifecycleFunctions=function(a){b.each(b.lifecycleFunctions,function(b,c){delete a[c]}),delete a.initFunction},b.diagnoseFailedView=b.identity,b.makeRootDestroy=function(a){return function(){b.fireEvent(a,"events.onClear",[a,"",null]),b.doDestroy(a),b.fireEvent(a,"events.afterDestroy",[a,"",null])}},b.isDestroyed=function(a){return a.destroy===b.destroyedMarker},b.doDestroy=function(a,c,d){b.fireEvent(a,"events.onDestroy",[a,c||"",d]),a.destroy=b.destroyedMarker;for(var e in a.events)"afterDestroy"!==e&&"function"==typeof a.events[e].destroy&&a.events[e].destroy()},b.resolveReturnedPath=b.identity,b.initComponent=function(a,c){var d=b.defaults(a);d.gradeNames||b.fail("Cannot initialise component "+a+" which has no gradeName registered");var e,f=[a].concat(b.makeArray(c));return b.pushActivity("initComponent","constructing component of type %componentName with arguments %initArgs",{componentName:a,initArgs:c}),e=b.invokeGlobalFunction(d.initFunction,f),b.diagnoseFailedView(a,e,d,f),b.fireEvent(e.options,"postInitFunction",e),b.initDependents&&b.initDependents(e),b.fireEvent(e.options,"finalInitFunction",e),b.clearLifecycleFunctions(e.options),b.fireEvent(e,"events.onCreate",e),b.popActivity(),b.resolveReturnedPath(e.options.returnedPath,e)?b.get(e,e.options.returnedPath):e},b.initSubcomponentImpl=function(a,c,d){var e;if("function"!=typeof c){var f="string"==typeof c?c:c.type;e="fluid.emptySubcomponent"===f?b.emptySubcomponent(c.options):b.invokeGlobalFunction(f,d)}else e=c.apply(null,d);return e},b.initSubcomponents=function(a,c,d){var e=a.options[c];if(e){var f=b.makeArray(e),g=-1,h=[];d=b.makeArray(d);for(var i=0;i)?\\s*","g");b.parseSelector=function(c,d){var e=[];c=a.trim(c);var f=d.regexp;f.lastIndex=0;for(var g=0;;){for(var h=[],i=!0;;){var j=f.exec(c);if(!j)break;if(j.index!==g){if(!i)break;b.fail("Error in selector string - cannot match child selector expression starting at "+c.substring(g))}var k={},l=j[2],m=d.charToTag[j[1]];m&&(k[m]=l),h[h.length]=k,g=f.lastIndex,i=!1}r.lastIndex=g;var n={predList:h},o=r.exec(c);if(o&&o.index===g||b.fail("Error in selector string - can not match child selector expression at "+c.substring(g)),">"===o[1]&&(n.child=!0),e[e.length]=n,r.lastIndex>=c.length)break;g=r.lastIndex,f.lastIndex=r.lastIndex}return e},b.stringToRegExp=function(a,b){return new RegExp(a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),b)},b.stringTemplate=function(a,c){var d=b.keys(c);d=d.sort(b.compareStringLength());for(var e=0;e=0&&g.depthd;++d)c+=a;return c},b.SYNTHETIC_PROPERTY={},b.getSafeProperty=function(a,c){var d=Object.getOwnPropertyDescriptor(a,c);return d&&!d.get?a[c]:b.SYNTHETIC_PROPERTY},b.prettyPrintJSON=function(d,e){return e=a.extend({indent:4,stack:[]},e),e.indentChars=b.generatePadding(" ",e.indent),c(d,"",e)},b.dumpEl=function(c){var d;if(!c)return"null";if(3===c.nodeType||8===c.nodeType)return"[data: "+c.data+"]";if(9===c.nodeType)return"[document: location "+c.location+"]";if(!c.nodeType&&b.isArrayable(c)){d="[";for(var e=0;ef;++f)a=e(a,c[f],f,b.makeArray(c));return a}b.visitComponentChildren=function(a,c,d,e,f){var g=b.getInstantiator(a);for(var h in a){var i=g.composePath(e,h),j=a[h];if(!(!b.isComponent(j)||d.visited&&d.visited[j.id])){if(d.visited&&(d.visited[j.id]=!0),c(j,h,i,e,f))return!0;d.flat||b.visitComponentChildren(j,c,d,i)}}},b.getMemberNames=function(a,c){var d=a.idToPath(c[c.length-1].id),e=b.model.parseEL(d);return e.unshift.apply(e,b.generate(c.length-e.length,"")),e};var e=function(a,c,d,e){e=e||{visited:{},flat:!0,instantiator:a};for(var f=b.getMemberNames(a,c),g=c.length-1;g>=0;--g){var h,i=c[g];if(i.typeName&&(e.visited[i.id]=!0,h=a.idToPath[i.id],d(i,f[g],h,h,g)))return;if(b.visitComponentChildren(i,d,e,h,g))return}};b.mountStrategy=function(a,b,c){var d=a.length;return function(b,e,f,g){if(!(f<=a.length)){for(var h=0;he&&h&&(k=!1),k){if(0===g)return!0;--f,--g}else{if(h)return!1;--f}if(e>f)return!1}},b.noteCollectedDistribution=function(a,c,d){b.model.setSimple(a,["collectedDistributions",c,d.id],!0)},b.isCollectedDistribution=function(a,c,d){return b.model.getSimple(a,["collectedDistributions",c,d.id])},b.clearCollectedDistributions=function(a,c){b.model.applyChangeRequest(a,{path:["collectedDistributions",c],type:"DELETE"})},b.collectDistributions=function(a,c,d,e,f,g,h){var i=g[g.length-1];!b.isCollectedDistribution(c,i,d)&&b.matchIoCSelector(d.selector,e,f,g,h)&&(a.push.apply(a,d.blocks),b.noteCollectedDistribution(c,i,d))},b.registerCollectedClearer=function(a,c,d){!a.collectedClearer&&c&&(a.collectedClearer=function(){b.clearCollectedDistributions(c,d)})},b.receiveDistributions=function(a,c,d,e){var f=b.getInstantiator(a||e),g=f.getThatStack(a||e),h=b.getMemberNames(f,g),i=[],j=b.transform(g,function(a){return f.idToShadow[a.id]}),k=j[j.length-(a?1:2)],l=b.getMembers(j,"contextHash");a?(h.push(d),l.push(b.gradeNamesToHash(c)),g.push(e)):b.registerCollectedClearer(j[j.length-1],k,h[h.length-1]);for(var m=0;m1&&"options"!==d[0]&&b.fail("Error in options distribution path ",a," - only "+c+' paths beginning with "options" are supported'),d.slice(1)},b.isIoCSSSelector=function(a){return-1!==a.indexOf(" ")},b.pushDistributions=function(a,c,d){var e=b.shadowForComponent(a),f=b.allocateGuid(),g=e.distributions=e.distributions||[];return g.push({id:f,selector:c,blocks:d}),f},b.clearDistributions=function(a,c){var d=b.shadowForComponent(a);b.remove_if(d.distributions,function(a){return a.id===c})},b.extractSelectorHead=function(a){var b=a[0].predList,c=b[0].context;return b.length=0,c},b.undistributableOptions=["gradeNames","distributeOptions","returnedPath","argumentMap","initFunction","mergePolicy","progressiveCheckerOptions"],b.distributeOptions=function(a,c){var d=b.makeArray(b.driveStrategy(a.options,"distributeOptions",c));b.each(d,function(c){var d,e,f=b.parseContextReference(c.target);if(b.isIoCSSSelector(f.context)){e=b.parseSelector(f.context,b.IoCSSMatcher);var g=b.extractSelectorHead(e);"that"!==g&&b.fail('Downwards options distribution not supported from component other than "that"'),d=a}else d=b.resolveContext(f.context,a),d||b.fail("Error in options distribution record ",c," - could not resolve context selector {"+f.context+"} to a root component");var h,i=b.model.parseEL(f.path);if(void 0!==c.record)h=[b.makeDistributionRecord(a,c.record,[],i,[],0)];else{var j=b.shadowForComponent(a),k=b.parseContextReference(c.source||"{that}.options");"that"!==k.context&&b.fail("Error in options distribution record ",c," only a context of {that} is supported");var l=b.parseExpectedOptionsPath(k.path,"source"),m=b.makeArray(c.exclusions).concat(0===l.length?b.undistributableOptions:[]),n=b.transform(m,function(a){return b.model.parseEL(a)});h=b.filterBlocks(a,j.mergeOptions.mergeBlocks,l,i,n,c.removeSource),j.mergeOptions.updateBlocks()}if(e)b.pushDistributions(d,e,h);else{var o=b.shadowForComponent(d);b.applyDistributions(a,h,o)}})},b.gradeNamesToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0,c[b.computeNickName(a)]=!0}),c},b.cacheShadowGrades=function(a,c){var d=b.gradeNamesToHash(a.options.gradeNames);d[a.nickName]=!0,c.contextHash=d},b.deliverOptionsStrategy=function(a,c,d){var e=b.shadowForComponent(a,e);b.cacheShadowGrades(a,e),e.mergeOptions=d},b.resolveReturnedPath=function(a,c){var d=b.shadowForComponent(c);return d&&""!==d.path?null:a},b.defaults("fluid.gradeLinkageRecord",{gradeNames:["fluid.littleComponent"]}),b.defaults("fluid.applyGradeLinkage",{}),b.gradeLinkageIndexer=function(a){return a.contextGrades&&a.resultGrades?["*"]:void 0},b.getLinkedGrades=function(a){var c=[],d=b.indexDefaults("gradeLinkages",{gradeNames:"fluid.gradeLinkageRecord",indexFunc:b.gradeLinkageIndexer});return b.each(d["*"],function(d){var e=b.defaults(d),f=b.find(b.makeArray(e.contextGrades),function(c){return b.contains(a,c)?void 0:!0});f||c.push.apply(c,b.makeArray(e.resultGrades))}),c},b.expandDynamicGrades=function(a,c,d,e){var f=[];b.each(e,function(c){var d=b.expandOptions(c,a);"function"==typeof d&&(d=d()),d&&(f=f.concat(d))});var g=b.makeArray(d).concat(f);if(b.contains(g,"fluid.applyGradeLinkage")){var h=b.getLinkedGrades(g);b.remove_if(h,function(a){return b.contains(g,a)}),f=f.concat(h)}var i=b.receiveDistributions(null,null,null,a);if(i.length>0){var j=b.applyDistributions(a,i,c),k=b.transform(b.getMembers(j,["source","gradeNames"]),b.makeArray);f=f.concat.apply(f,k)}return f},b.collectDynamicGrades=function(a,c,d,e,f,g){var h=b.copy(b.getGradedDefaults(a.typeName,g));e.length=0,e.push.apply(e,h.gradeNames),b.cacheShadowGrades(a,c),c.mergeOptions.destroyValue("mergePolicy"),c.mergeOptions.destroyValue("components"),c.mergeOptions.destroyValue("invokers"),d.source=h,c.mergeOptions.updateBlocks();var i=b.remove_if(e,function(a){return"{"===a.charAt(0)&&!b.contains(f,a)},[]);return f.push.apply(f,i),i=b.expandDynamicGrades(a,c,e,i),g.push.apply(g,i),i},b.computeDynamicGrades=function(a,c,d){delete a.options.gradeNames;var e=b.driveStrategy(a.options,"gradeNames",d),f=b.findMergeBlocks(c.mergeOptions.mergeBlocks,"defaults")[0],g=b.remove_if(e,function(a){return"{"===a.charAt(0)||!b.hasGrade(f.target,a)},[]),h=b.expandDynamicGrades(a,c,e,g);if(0!==h.length){var i;do i=b.collectDynamicGrades(a,c,f,e,g,h);while(0!==i.length)}c.collectedClearer&&(c.collectedClearer(),delete c.collectedClearer)},b.computeDynamicComponentKey=function(a,b){return a+(0===b?"":"-"+b)},b.registerDynamicRecord=function(a,c,d,e,f){var g=b.computeDynamicComponentKey(c,d),h=b.copy(e);return delete h[f],b.set(a.options,["components",g],h),g},b.computeDynamicComponents=function(a,c){var d=b.shadowForComponent(a),e=d.subcomponentLocal={},f=b.driveStrategy(a.options,"dynamicComponents",c.strategy);b.each(f,function(c,f){if(c.sources||c.createOnEvent||b.fail("Cannot process dynamicComponents record ",c,' without a "sources" or "createOnEvent" entry'),c.sources){var g=b.expandOptions(c.sources,a);b.each(g,function(d,g){var h=b.registerDynamicRecord(a,f,g,c,"sources");e[h]={source:d,sourcePath:g}})}else if(c.createOnEvent){var h=b.event.expandOneEvent(a,c.createOnEvent);b.set(d,["dynamicComponentCount",f],0);var i=function(){var g=b.registerDynamicRecord(a,f,d.dynamicComponentCount[f]++,c,"createOnEvent");e[g]={arguments:b.makeArray(arguments)},b.initDependent(a,g)};h.addListener(i),b.recordListener(h,i,d)}})},b.computeComponentAccessor=function(a){var c=b.shadowForComponent(a),d=a.options,e=c.mergeOptions.strategy,f=b.mountStrategy(["options"],d,e);c.invokerStrategy=b.recordStrategy(a,d,e,"invokers",b.invokerFromRecord),c.eventStrategyBlock=b.recordStrategy(a,d,e,"events",b.eventFromRecord,["events"]);var g=b.mountStrategy(["events"],a,c.eventStrategyBlock.strategy,["events"]);return c.memberStrategy=b.recordStrategy(a,d,e,"members",b.memberFromRecord),c.getConfig={strategies:[b.model.funcResolverStrategy,b.makeGingerStrategy(a),f,c.invokerStrategy.strategy,c.memberStrategy.strategy,g]},b.computeDynamicGrades(a,c,e,c.mergeOptions.mergeBlocks),b.distributeOptions(a,e),c.getConfig},b.shadowForComponent=function(a){var c=b.getInstantiator(a);return c&&a?c.idToShadow[a.id]:null},b.getForComponent=function(a,c){var d=b.shadowForComponent(a),e=d?d.getConfig:void 0;return b.get(a,c,e)},b.makeGingerStrategy=function(a){var c=b.getInstantiator(a);return function(a,d,e,f){var g=a[d];if(g===b.inEvaluationMarker&&e===f.length&&b.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+d+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application'),e>1)return g;if(void 0===g&&a.hasOwnProperty(d))return b.NO_VALUE;if(void 0===g){var h=c.idToShadow[a.id].path,i=b.composePath(h,d);g=c.pathToComponent[i]}return void 0===g&&b.getForComponent(a,["options","components",d])&&(b.initDependent(a,d),g=a[d]),g}},b.filterBuiltinGrades=function(a){return b.remove_if(b.makeArray(a),function(a){return/^(autoInit|fluid.littleComponent|fluid.modelComponent|fluid.eventedComponent|fluid.viewComponent|fluid.typeFount)$/.test(a)})},b.dumpGradeNames=function(a){return a.options&&a.options.gradeNames?" gradeNames: "+JSON.stringify(b.filterBuiltinGrades(a.options.gradeNames)):""},b.dumpThat=function(a){return'{ typeName: "'+a.typeName+'"'+b.dumpGradeNames(a)+" id: "+a.id+"}"},b.dumpThatStack=function(a,c){var d=b.transform(a,function(a){var d=c.idToPath(a.id);return b.dumpThat(a)+(d?" - path: "+d:"")});return d.join("\n")},b.resolveContext=function(a,c){var d=b.getInstantiator(c);if("instantiator"===a)return d;if("that"===a)return c;var f,g=d.getFullStack(c);return e(d,g,function(c,d){var e=b.shadowForComponent(c);return a===d||e&&e.contextHash&&e.contextHash[a]||a===c.typeName||a===c.nickName?(f=c,!0):b.getForComponent(c,["options","components",a,"type"])&&!c[a]?(f=b.getForComponent(c,a),!0):void 0}),f};var f=/^(arguments|options|container|source|sourcePath|change)$/;b.makeStackFetcher=function(a,c){var d=function(d){a&&a.destroy===b.destroyedMarker&&b.fail("Cannot resolve reference "+b.renderContextReference(d)+" from component "+b.dumpThat(a)+" which has been destroyed");var e=d.context;if(c&&f.test(e)){var g=b.get(c[e],d.path);return"arguments"===e||"source"===e||"sourcePath"===e||"change"===e?g:{marker:"options"===e?b.EXPAND:b.EXPAND_NOW,value:g}}var h=b.resolveContext(e,a);if(!h&&""!==d.path){var i=b.renderContextReference(d);b.fail("Failed to resolve reference "+i+" - could not match context with name "+e+" from component "+b.dumpThat(a),a)}return b.getForComponent(h,d.path)};return d},b.makeStackResolverOptions=function(c,d){return a.extend(b.copy(b.rawDefaults("fluid.makeExpandOptions")),{fetcher:b.makeStackFetcher(c,d),contextThat:c})},b.clearListeners=function(a){b.each(a.listeners,function(a){a.event.removeListener(a.listener)}),delete a.listeners},b.recordListener=function(a,b,c){if(a.ownerId!==c.that.id){var d=c.listeners;d||(d=c.listeners=[]),d.push({event:a,listener:b})}};var g={};b.instantiator=function(a){function c(a,c,e){if(e){g[a.id]=d;var f=d.idToShadow[a.id]={};f.that=a,f.path=c}d.pathToComponent[c]&&b.fail("Error during instantiation - path "+c+" which has just created component "+b.dumpThat(a)+" has already been used for component "+b.dumpThat(d.pathToComponent[c])+" - this is a circular instantiation or other oversight. Please clear the component using instantiator.clearComponent() before reusing the path."),d.pathToComponent[c]=a}var d={id:b.allocateGuid(),free:a,nickName:"instantiator",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:b.composePath};return d.idToPath=function(a){var b=d.idToShadow[a];return b?b.path:""},d.getThatStack=function(a){var c=d.idToShadow[a.id];if(c){var e=c.path,f=b.model.parseEL(e),g=b.transform(f,function(a,c){var e=b.model.composeSegments.apply(null,f.slice(0,c+1));return d.pathToComponent[e]}),h=d.pathToComponent[""];return h&&g.unshift(h),g}return[a]},d.getEnvironmentalStack=function(){var c=[b.staticEnvironment];return a||c.push(b.globalThreadLocal()),c},d.getFullStack=function(a){var b=a?d.getThatStack(a):[];return d.getEnvironmentalStack().concat(b)},d.recordRoot=function(a){a&&a.id&&!d.pathToComponent[""]&&c(a,"",!0)},d.recordKnownComponent=function(a,b,e,f){var g=d.idToShadow[a.id].path,h=d.composePath(g,e);c(b,h,f)},d.clearComponent=function(a,c,e,f,h,i){var j=d.idToShadow[a.id].path;f=f||{flat:!0,instantiator:d},e=e||a[c],i=i||j,void 0===i&&b.fail("Cannot clear component "+c+" from component ",a," which was not created by this instantiator"),b.fireEvent(e,"events.onClear",[e,c,a]);var k=d.composePath(i,c),l=d.idToShadow[e.id];l&&l.path===k&&(b.doDestroy(e,c,a),b.clearListeners(l),b.visitComponentChildren(e,function(a,b,c,g){d.clearComponent(e,b,null,f,!0,g)},f,k),b.fireEvent(e,"events.afterDestroy",[e,c,a]),delete d.idToShadow[e.id],delete g[e.id]),delete d.pathToComponent[k],h||delete a[c]},d},b.freeInstantiator=b.instantiator(!0),b.getInstantiator=function(a){return a&&g[a.id]||b.freeInstantiator},b.expandOptions=function(a,c,d,e,f){if(!a)return a;b.pushActivity("expandOptions","expanding options %args for component %that ",{that:c,args:a});var g=b.makeStackResolverOptions(c,e);g.mergePolicy=d,g.freeRoot=f&&f.freeRoot;var h=f&&f.defer?b.makeExpandOptions(a,g):b.expand(a,g);return b.popActivity(),h},b.localRecordExpected=["type","options","args","mergeOptions","createOnEvent","priority","recordType"],b.checkComponentRecord=function(a,c){var d=b.arrayToHash(b.localRecordExpected);b.each(a&&a.argumentMap,function(a,b){d[b]=!0}),b.each(c,function(a,c){d[c]||b.fail('Probable error in subcomponent record - key "'+c+'" found, where the only legal options are '+b.keys(d).join(", "))})},b.pushDemands=function(a,c){function d(b){b.recordType="demands",b.priority=f++,a.push(b)}function e(a){d({options:a})}c=b.makeArray(c);for(var f=b.mergeRecordTypes.demands,g=0;g0&&(p[b]=p.arguments[a]),void 0!==d[b]&&void 0===p[b]&&(p[b]=d[b]),"options"!==b)for(var c=0;c0&&(r.user={options:p.options}),u[q]={marker:b.EXPAND,localRecord:o,mergeRecords:r,instantiator:b.getInstantiator(c),parentThat:c,memberName:f.memberName}):u[q]=b.expand(v,s),u[q]&&b.isMarker(u[q].marker,b.EXPAND_NOW)&&(u[q]=b.expand(u[q].value,s))}else u=e?e:[];var x={args:u,preExpand:g,funcName:d.funcName};return x},b.fabricateDestroyMethod=function(a,b,c,d){return function(){c.clearComponent(a,b,d)}},b.initDependent=function(a,c,d){if(!a[c]){d=d||[];var e=a.options.components[c];b.pushActivity("initDependent",'instantiating dependent component with name "%name" with record %record as child of %parent',{name:c,record:e,parent:a});var f,h=g[a.id];if("string"==typeof e)f=b.expandOptions(e,a),h.recordKnownComponent(a,f,c,!1);else if(e.type){var i=b.expandOptions(e.type,a);i||b.fail("Error in subcomponent record: ",e.type," could not be resolved to a type for component ",c," of parent ",a);var j=b.resolveDemands(a,[i,c],d,{componentRecord:e,memberName:c});f=b.initSubcomponentImpl(a,{type:j.funcName},j.args);var k=h.composePath(h.idToPath(a.id),c),l=h.pathToComponent[k];l&&l!==f&&h.clearComponent(a,c,l),f&&f.typeName&&f.id&&f!==l&&h.recordKnownComponent(a,f,c,!0),f.destroy=b.fabricateDestroyMethod(a,c,h,f)}else b.fail("Unrecognised material in place of subcomponent "+c+' - no "type" field found');return a[c]=f,b.fireEvent(f,"events.onAttach",[f,c,a]),b.popActivity(),f}},b.bindDeferredComponent=function(a,c,d){var e=b.makeArray(d.createOnEvent);b.each(e,function(e){var f="{"===e.charAt(0)?b.expandOptions(e,a):a.events[e];f&&f.addListener||b.fail("Error instantiating createOnEvent component with name "+c+" of parent ",a," since event specification "+e+" could not be expanded to an event - got ",f),f.addListener(function(){if(b.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:c,that:a,eventName:e}),a[c]){var d=g[a.id];d.clearComponent(a,c)}b.initDependent(a,c),b.popActivity()},null,null,d.priority)})},b.priorityForComponent=function(a){return a.priority?a.priority:"fluid.typeFount"===a.type||b.hasGrade(b.defaults(a.type),"fluid.typeFount")?"first":void 0},b.initDependents=function(a){b.pushActivity("initDependents","instantiating dependent components for component %that",{that:a});var c=b.shadowForComponent(a);c.memberStrategy.initter();var d=a.options,e=d.components||{},f={};b.each(e,function(c,d){if(c.createOnEvent)b.bindDeferredComponent(a,d,c);else{var e=b.priorityForComponent(c);f[d]={key:d,priority:b.event.mapPriority(e,0)}}});var g=b.event.sortListeners(f);b.each(g,function(c){b.initDependent(a,c.key)}),c.invokerStrategy.initter(),b.popActivity()};var j={},k=!1;b.setDemandLogging=function(a){k=a},b.isDemandLogging=function(){return k&&b.isLogging()},b.demands=function(a,d,e){var f=b.makeArray(d).sort();if(!e)return c(a,f);if(e.length&&(e={args:e}),b.getCallerInfo&&b.isDemandLogging()){var g=b.getCallerInfo(5);g&&(e.registeredFrom=g)}e.demandId=b.allocateGuid();var h=j[a];h||(h=[],j[a]=h),h.push({contexts:f,spec:e})},b.compareDemands=function(a,b){return b.intersect-a.intersect},b.locateAllDemands=function(a,c){var d=b.isDemandLogging(c);d&&b.log("Resolving demands for function names ",c," in context of "+(a?"component "+a.typeName:"no component"));var f={},g=[],h=b.getInstantiator(a),i=h.getFullStack(a);e(h,i,function(a,c,d,e,h){f[a.typeName]=h;var i=b.makeArray(b.get(a,["options","gradeNames"]));b.each(i,function(a){f[a]=h}),g.push(a)}),d&&b.log("Components in scope for resolution:\n"+b.dumpThatStack(g,h));for(var k=[],l=0;l=p?"intersect":"uncess"]+=2}0===o.contexts.length&&q.intersect++,0===q.uncess&&k.push(q)}return k.sort(b.compareDemands),k},b.locateDemands=function(a,c){var d=b.locateAllDemands(a,c),e=b.getMembers(d,["spec","spec"]);return b.isDemandLogging(c)&&(e.length?b.log("Located "+d.length+" potential match"+(1===d.length?"":"es")+", selected best match with "+d[0].intersect+" matched context names: ",e):b.log("No matches found for demands, using direct implementation")),e},b.determineDemands=function(c,d){d=b.makeArray(d);var e=d[0],f=b.locateDemands(c,d);return f.length&&f[0].funcName&&(e=f[0].funcName),a.extend(!0,{funcName:e,args:f[0]?b.makeArray(f[0].args):[]},{backSpecs:f.slice(1)},b.censorKeys(f[0],["funcName","args"]))},b.resolveDemands=function(a,c,d,e){var f=b.determineDemands(a,c);return b.embodyDemands(a,f,d,e)},b.thisistToApplicable=function(a,c,d){return{apply:function(e,f){var g=b.expandOptions(c,d);"string"==typeof g&&(g=b.getGlobalValue(g)),g||b.fail("Could not resolve reference "+c+" to a value");var h=g[a.method];return"function"!=typeof h&&b.fail("Object ",g," at reference "+c+" has no member named "+a.method+" which is a function "),b.log("Applying arguments ",f," to method "+a.method+" of instance ",g),h.apply(g,f)}}},b.changeToApplicable=function(a,c){return{apply:function(d,e){var f=b.parseValidModelReference(c,"changePath listener record",a.changePath),g=b.expandOptions(a.value,c,{},{arguments:e});b.fireSourcedChange(f.applier,f.path,g,a.source)}}},b.recordToApplicable=function(a,c){if(a.changePath)return b.changeToApplicable(a,c);var d=a["this"];return a.method^d&&b.fail("Record ",c,' must contain both entries "method" and "this" if it contains either'),a.method?b.thisistToApplicable(a,d,c):null},b.invoke=function(a,c,d,e){b.pushActivity("invokeFunc",'invoking function with name "%functionName" from component %that',{functionName:a,that:d});var f=b.resolveDemands(d,a,b.makeArray(c),{passArgs:!0}),g=b.invokeGlobalFunction(f.funcName,f.args,e);return b.popActivity(),g},b.makeFreeInvoker=function(a,c){var d=b.determineDemands(null,a);return function(){var a=b.embodyDemands(null,d,b.makeArray(arguments),{passArgs:!0});return b.invokeGlobalFunction(a.funcName,a.args,c)}};var l="{arguments}.";b.parseInteger=function(a){return isFinite(a)&&a%1===0?Number(a):0/0},b.makeFastInvoker=function(a,c){var d;if(a.preExpand){d={};for(var e=0;ef)&&b.fail("Badly-formed compact "+d+" record without matching parentheses: ",c),-1!==e&&-1!==f){var g=c.substring(0,e),h=c.substring(e+1,f),i=b.transform(h.split(","),a.trim,b.coerceToPrimitive),j={args:i};return"invoker"===d&&"!"===g.charAt(e-1)&&(g=c.substring(0,e-1),j.dynamic=!0),j["{"===g.charAt(0)?"func":"funcName"]=g,j}return"expander"===d&&b.fail("Badly-formed compact expander record without parentheses: ",c),c},b.expandPrefix="@expand:",b.expandCompactString=function(a,c){var d=a;if(0===a.indexOf(b.expandPrefix)){var e=a.substring(b.expandPrefix.length);d={expander:b.compactStringToRec(e,"expander")}}else c&&(d=b.compactStringToRec(a,c));return d};var m={listeners:"listener",modelListeners:"modelListener"},n=a.extend({invokers:"invoker"},m);b.expandCompactRec=function(a,c,d,e){var f=a.length>0?a[a.length-1]:"",g=n[f];!g&&a.length>1&&(g=m[a[a.length-2]]),b.each(d,function(d,f){return!b.isPlainObject(d)||b.isDOMish(d)||e&&"model"===f&&0===a.length?("string"==typeof d&&(d=b.expandCompactString(d,g)),void(c[f]=d)):(c[f]=b.freshContainer(d),a.push(f),b.expandCompactRec(a,c[f],d),void a.pop())})},b.expandCompact=function(a,c){var d={};return b.expandCompactRec([],d,a,c),d},b.extractEL=function(a,b){if("ALL"===b.ELstyle)return a;if(1===b.ELstyle.length){if(a.charAt(0)===b.ELstyle)return a.substring(1)}else if("${}"===b.ELstyle){var c=a.indexOf("${"),d=a.lastIndexOf("}");if(0===c&&-1!==d)return a.substring(2,d)}},b.extractELWithContext=function(a,c){var d=b.extractEL(a,c);return d&&"{"===d.charAt(0)&&d.indexOf("}")>0?b.parseContextReference(d):d?{path:d}:d},b.parseContextReference=function(a,c,d){c=c||0;var e=a.indexOf("}",c+1);-1===e&&b.fail('Cannot parse context reference "'+a+'": Malformed context reference without }');var f=a.substring(c+1,e),g=d?a.indexOf(d,e+1):a.length,h=a.substring(e+1,g);return"."===h.charAt(0)&&(h=h.substring(1)),{context:f,path:h,endpos:g}},b.renderContextReference=function(a){return"{"+a.context+"}"+(a.path?"."+a.path:"")},b.resolveContextValue=function(a,c){function d(d){b.pushActivity("resolveContextValue","resolving context value %string",{string:a});var e=c.fetcher(d);return b.pushActivity("resolvedContextValue","resolved value %string to value %value",{string:a,value:e}),b.popActivity(2),e}var e;if(c.bareContextRefs&&"{"===a.charAt(0)&&a.indexOf("}")>0)return e=b.parseContextReference(a),d(e);if(c.ELstyle&&"${}"!==c.ELstyle&&(e=b.extractELWithContext(a,c)))return d(e);for(;"string"==typeof a;){var f=a.indexOf("${"),g=a.indexOf("}",f+2);if(-1===f||-1===g)break;"{"===a.charAt(f+2)?(e=b.parseContextReference(a,f+2,"}"),g=e.endpos):e={path:a.substring(f+2,g)};var h=d(e),i=0===f&&g===a.length-1;if(void 0===h||null===h)return h;a=i?h:a.substring(0,f)+h+a.substring(g+1)}return a},b.expandExpander=function(a,c,d){var e=b.getGlobalValue(c.expander.type||"fluid.deferredInvokeCall");return e?e.call(null,a,c,d):void 0},b.fetchExpandChildren=function(c,d,e,f,g,h,i){if(f.expander){var j=b.expandExpander(c,f,i);if(i.freeRoot||b.isPrimitive(j)||b.isDOMish(j)||!b.isPlainObject(j)||b.isArrayable(j)^b.isArrayable(c))return j;a.extend(!0,c,j)}return b.each(f,function(a,b){void 0===a?c[b]=void 0:"expander"!==b&&(e[d]=b,i.strategy(c,b,d+1,e,f,g,h))}),c},b.isUnexpandable=function(a){return b.isPrimitive(a)||b.isComponent(a)||void 0!==a.nodeType||a.jquery||!b.isPlainObject(a)},b.expandSource=function(a,c,d,e,f,g,h,i,j){var k,l,m,n=b.derefMergePolicy(h);return"string"!=typeof g||n.noexpand?n.noexpand||b.isUnexpandable(g)?k=g:g.expander?k=b.expandExpander(f,g,a):(n.preserve?(k=g,m=!0):k=b.freshContainer(g),l=!0):a.defaultEL&&"{"!==g.charAt(0)?k=g:(b.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:g,path:b.path.apply(null,e.slice(0,d))}),k=b.resolveContextValue(g,a),b.popActivity(1)),m||k===b.NO_VALUE||f(k),l&&j(k,g,d,e,h,i||m),m&&k!==b.NO_VALUE&&f(k),k},b.makeExpandStrategy=function(a){var c=function(c,d,e,f,g,h){return b.fetchExpandChildren(c,e||0,f||[],d,g,h,a)},e=function(e,f,g,h,i,j,k){function l(a){e[f]=a}if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options expansion, current path is ",h," at depth ",g,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander'),e){if(!k&&e.hasOwnProperty(f))return e[f];void 0===i&&(i=d(a.source,h,g-1,a.sourceStrategy),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var m=a.sourceStrategy(i,f,g,h),n=b.concreteTrundler(j,f);return b.expandSource(a,e,g,h,l,m,n,k,c)}};return a.recurse=c,a.strategy=e,e},b.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:!0,target:b.inCreationMarker}),b.makeExpandOptions=function(c,d){return d=a.extend({},b.rawDefaults("fluid.makeExpandOptions"),d),d.defaultEL="${}"===d.ELStyle&&d.bareContextRefs,d.expandSource=function(a){return b.expandSource(d,null,0,[],b.identity,a,d.mergePolicy,!1)},b.isUnexpandable(c)?(d.strategy=b.concreteTrundler,d.initter=b.identity,d.target="string"==typeof c?d.expandSource(c):c):(d.source=c,d.target=b.freshContainer(c),d.sourceStrategy=d.sourceStrategy||b.concreteTrundler,b.makeExpandStrategy(d),d.initter=function(){d.target=b.fetchExpandChildren(d.target,0,[],d.source,d.mergePolicy,!1,d)}),d},b.expand=function(a,c){var d=b.makeExpandOptions(a,c);return d.initter(),d.target},b.registerNamespace("fluid.expander"),b.expander.deferredCall=function(a,c,d){var e=c.expander,f=!e.args||b.isArrayable(e.args)?e.args:b.makeArray(e.args);return f=d.recurse([],f),b.invokeGlobalFunction(e.func,f)},b.deferredCall=b.expander.deferredCall,b.deferredInvokeCall=function(a,c,d){var e=c.expander,f=b.makeArray(e.args);f=d.recurse([],f);var g=e.func||e.funcName,h=d.expandSource(g)||b.recordToApplicable(e,d.contextThat);return h||b.fail("Error in expander record - "+g+" could not be resolved to a function for component ",d.contextThat),h.apply?h.apply(null,f):b.invoke(h,f,d.contextThat)},b.expander.noexpand=function(a,b){return b.expander.value?b.expander.value:b.expander.tree},b.noexpand=b.expander.noexpand}(b,c);var c=c||{};!function(a,b){"use strict";function c(a){return a.lastIndexOf(".")}function d(a,c){return function(d){var e=c().sources,f=arguments,g=d.source||"";b.tryCatch(function(){void 0===e[g]&&(e[g]=0),++e[g],a.apply(null,f)},null,function(){--e[g]})}}b.model.makeEnvironmentStrategy=function(a){return function(b,c,d){return 0===d&&a[c]?a[c]:void 0}},b.model.defaultCreatorStrategy=function(a,b){return void 0===a[b]?(a[b]={},a[b]):void 0},b.model.defaultFetchStrategy=function(a,b){return a[b]},b.model.funcResolverStrategy=function(a,b){return a.resolvePathSegment?a.resolvePathSegment(b):void 0},b.model.traverseWithStrategy=function(a,c,d,e,f){for(var g=e.strategies,h=c.length-f,i=d;h>i;++i){if(!a)return a;for(var j,k=0;kc;++c){var g=b.charAt(c);if(e)e=!1,null!==d&&(d+=g);else{if("."===g)break;"\\"===g?e=!0:null!==d&&(d+=g)}}return null!==d&&(a[0]=d),c},f=[];b.pathUtil.parseEL=function(a){for(var b=[],c=0,d=a.length;d>c;){var g=e(f,a,c);b.push(f[0]),c=g+1}return b},b.pathUtil.composeSegment=function(a,b){b=b.toString();for(var c=0;c0&&a.options.relayCount<2&&a.options.update&&(a.options.relayCount++,b.clearLinkCounts(d),a.options.update(a.transaction,d),++e)}),e},b.establishModelRelay=function(a,c,d,e,f){function g(a){for(;b.model.updateRelays(l,a.id)>0;);}function h(a,c,d){"relay"!==d&&b.model.commitRelays(l,a.id)}function i(a,c,d){"relay"!==d&&(b.model.notifyExternal(l.modelTransactions[a.id]),delete l.modelTransactions[a.id])}b.mergeModelListeners(a,d);var j=b.enlistModelComponent(a);b.each(e,function(c){b.parseModelRelay(a,c)});var k=b.transform(c,function(c){return b.parseImplicitRelay(a,c,[],{refCount:0})});j.initModels=k;var l=b.getInstantiator(a);return f.preCommit.addListener(g),f.preCommit.addListener(h),f.postCommit.addListener(i),b.deenlistModelComponent(a),f.holder.model},b.defaults("fluid.commonModelComponent",{gradeNames:["fluid.littleComponent","autoInit"],mergePolicy:{modelListeners:b.makeMergeListenersPolicy(b.arrayConcatPolicy)}}),b.defaults("fluid.modelComponent",{gradeNames:["fluid.commonModelComponent","autoInit"],members:{model:"@expand:fluid.initSimpleModel({that}, {that}.options.model)",applier:"@expand:fluid.makeChangeApplier({that}.model, {that}.options.changeApplierOptions)",modelListeners:"@expand:fluid.mergeModelListeners({that}, {that}.options.modelListeners)"},mergePolicy:{model:"preserve"}}),b.defaults("fluid.modelRelayComponent",{gradeNames:["fluid.commonModelComponent","fluid.eventedComponent","autoInit"],changeApplierOptions:{relayStyle:!0,cullUnchanged:!0},members:{model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeNewChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:!0,func:b.arrayConcatPolicy},modelRelay:{noexpand:!0,func:b.arrayConcatPolicy}}}),b.defaults("fluid.standardComponent",{gradeNames:["fluid.modelComponent","fluid.eventedComponent","autoInit"]}),b.defaults("fluid.standardRelayComponent",{gradeNames:["fluid.modelRelayComponent","autoInit"]}),b.modelChangedToChange=function(a,c){var d=c[0],e=c[1],f=c[3];return a?{value:c[0],oldValue:c[1],path:c[2]}:{value:b.get(d,f),oldValue:b.get(e,f),path:f}},b.resolveModelListener=function(a,c,d){var e=function(){var e=b.modelChangedToChange(d,arguments),f=[e],g={change:e,arguments:f};c.args&&(f=b.expandOptions(c.args,a,{},g)),b.event.invokeListener(c.listener,b.makeArray(f))};return b.event.impersonateListener(c.listener,e),e},b.mergeModelListeners=function(a,c){var d=0;b.each(c,function(c,e){"string"==typeof c&&(c={funcName:c});var f=b.event.resolveListenerRecord(c,a,"modelListeners",null,!1),g=b.parseValidModelReference(a,"modelListeners entry",e),h=g.applier.preCommit;b.each(f.records,function(c){function e(){if(h&&b.isModelComplete(g.that)){var c=g.applier.initiate("init");b.initModelEvent(a,c,[i]),c.commit()}}var f=b.resolveModelListener(a,c,h),i={listener:f,listenerIndex:d,segs:g.modelSegs,path:g.path,includeSource:c.includeSource,excludeSource:c.excludeSource,priority:c.priority,guardSource:c.guardSource,transactional:!0};++d,c.guardSource?b.addSourceGuardedListener(g.applier,i,c.guardSource,f,"modelChanged",c.namespace,c.softNamespace):g.applier.modelChanged.addListener(i,f,c.namespace,c.softNamespace),b.recordChangeListener(a,g.applier,f),a===g.that||b.isModelComplete(a)||a.events.onCreate.addListener(e)})})},b.addSourceGuardedListener=function(a,c,d,e,f,g,h){f=f||"modelChanged";var i=function(b,c,f,g){return a.hasChangeSource(d,g)?void 0:e.apply(null,arguments)};b.event.impersonateListener(e,i),a[f].addListener(c,i,g,h)},b.fireSourcedChange=function(a,b,c,d){a.fireChangeRequest({path:b,value:c,source:d})},b.requestChanges=function(a,b){for(var c=0;cc},b.model.applyChangeStrategy=function(a,c,d,e,f,g){var h=a[c],i=b.typeCode(f),j=b.typeCode(h),k=b.NO_VALUE;"primitive"===i?b.model.isSameValue(h,f)||(k=f):(j!==i||"array"===i&&f.length!==h.length)&&(k=b.freshContainer(f)),k!==b.NO_VALUE&&(a[c]=k,g.changeMap&&b.model.setChangedPath(g,e,g.inverse?"DELETE":"ADD")),"primitive"!==i&&b.model.fetchChangeChildren(a[c],d+1,e,f,g)},b.model.stepTargetAccess=function(a,c,d,e,f,g){for(var h=e;f>h;++h){var i=a[d[h]];a=b.model.traverseWithStrategy(a,d,h,g["ADD"===c?"resolverSetConfig":"resolverGetConfig"],d.length-h-1),i!==a&&g.changeMap&&b.model.setChangedPath(g,d.slice(0,h+1),"ADD")}return{root:a,last:d[f]}},b.model.defaultAccessorConfig=function(a){return a=a||{},a.resolverSetConfig=a.resolverSetConfig||b.model.defaultSetConfig,a.resolverGetConfig=a.resolverGetConfig||b.model.defaultGetConfig,a},b.model.applyHolderChangeRequest=function(a,c,d){d=b.model.defaultAccessorConfig(d),d.deltaMap=d.changeMap?{}:null,d.deltas=0;var e,f=c.segs.length,g=0===f;if(g?e={root:a,last:"model"}:(a.model||(a.model={},b.model.setChangedPath(d,[],d.inverse?"DELETE":"ADD")),e=b.model.stepTargetAccess(a.model,c.type,c.segs,0,f-1,d)),"ADD"===c.type){var h=c.value,i=b.makeArray(c.segs);b.model.applyChangeStrategy(e.root,e.last,f-1,i,h,d,g)}else"DELETE"===c.type?e.root&&void 0!==e.root[e.last]&&(delete e.root[e.last],d.changeMap&&b.model.setChangedPath(d,c.segs,"DELETE")):b.fail("Unrecognised change type of "+c.type);return d.deltas?d.deltaMap:null},b.model.diff=function(a,c,d){d=d||{changeMap:{},changes:0};var e,f=b.typeCode(a),g=b.typeCode(c);if("primitive"===f&&"primitive"===g)e=b.model.isSameValue(a,c);else if("primitive"===f^"primitive"===g)e=!1;else{var h={model:b.copy(a)};b.model.applyHolderChangeRequest(h,{value:c,segs:[],type:"ADD"},d);var i={model:b.copy(c)};d.inverse=!0,b.model.applyHolderChangeRequest(i,{value:a,segs:[],type:"ADD"},d),e=0===d.changes}return e===!1&&0===d.changes&&(d.changes=1,d.changeMap=void 0===c?"DELETE":"ADD"),e},b.matchChanges=function(a,c,d){for(var e=d.model,f=a,g=["model"],h=!1,i=[],j=0;j0){var d={model:a.model};a.model=i.newHolder.model,b.notifyModelChanges(f.changeListeners.transListeners,i.changeRecord.changeMap,a,d,null,i,f,a)}h||f.postCommit.fire(i,f,c)},fireChangeRequest:function(c){d(c),c.transactionId=i.id;var e=b.model.applyHolderChangeRequest(i.newHolder,c,i.changeRecord);b.notifyModelChanges(f.changeListeners.listeners,e,i.newHolder,a,c,i,f,a)}};return i.sources[e]=!0,i.reset(),b.bindRequestChange(i),i},f.hasChangeSource=function(a,b){return b?b[a]:!1},b.bindRequestChange(f),b.bindELMethods(f),f},b.pathUtil.getPathSegment=function(a,b){return e(f,a,b),f[0]},b.pathUtil.getHeadPath=function(a){return b.pathUtil.getPathSegment(a,0)},b.pathUtil.getFromHeadPath=function(a){var b=e(null,a,0);return b===a.length?"":a.substring(b+1)},b.pathUtil.getToTailPath=function(a){var b=c(a);return-1===b?"":a.substring(0,b)},b.pathUtil.getTailPath=function(a){var d=c(a);
return b.pathUtil.getPathSegment(a,d+1)},b.pathUtil.matchSegments=function(a,b,c,d){if(d-c!==a.length)return!1;for(var e=c;d>e;++e)if(b[e]!==a[e-c])return!1;return!0},b.pathUtil.getExcessPath=function(a,c){var d=c.indexOf(a);return 0!==d&&b.fail("Path "+a+" is not a prefix of path "+c),a.length===c.length?"":("."!==c[a.length]&&b.fail("Path "+a+" is not properly nested in path "+c),c.substring(a.length+1))},b.pathUtil.matchPath=function(a,c,d){for(var e=[];;){if(""===c^""===a&&d)return null;if(!a||!c)break;var f=b.pathUtil.getHeadPath(a),g=b.pathUtil.getHeadPath(c);if("*"!==f&&f!==g)return null;e.push(g),a=b.pathUtil.getFromHeadPath(a),c=b.pathUtil.getFromHeadPath(c)}return e},b.model.isNullChange=function(a,c,d){if("ADD"===c.type&&!c.forceChange){var e=b.get(a,c.segs,d);if(e===c.value)return!0}},b.model.applyChangeRequest=function(c,d,e){var f=b.model.accessWithStrategy(c,d.path,b.VALUE,e||b.model.defaultSetConfig,null,!0),g=f.segs[f.segs.length-1];"ADD"===d.type||"MERGE"===d.type?0===f.segs.length||"MERGE"===d.type&&f.root[g]?("ADD"===d.type&&b.clear(f.root),a.extend(!0,0===f.segs.length?f.root:f.root[g],d.value)):f.root[g]=d.value:"DELETE"===d.type&&(0===f.segs.length?b.clear(f.root):delete f.root[g])},b.makeChangeApplier=function(a,c){return b.makeHolderChangeApplier({model:a},c)},b.makeHolderChangeApplier=function(a,c){function e(a){if(!a)return null;var c=function(a){return function(d,e,f){var g=a(d,e,f);return g===!1?!1:b.model.isNullChange(d,e)?(c.culled=!0,!1):void 0}};return c}function f(a,c){var d=c,e=!1,f=Number.MAX_VALUE;"string"==typeof c&&(c={path:c}),d=c.path,e=c.transactional,void 0!==c.priority&&(f=c.priority),"!"===d.charAt(0)&&(e=!0,d=d.substring(1));var g=function(c,g,h){var i=b.event.identifyListener(a),j=g.guids[i];if(j&&h)h&&(j.accumulate||(j.accumulate=[]),j.accumulate.push(h));else{var k=b.pathUtil.matchPath(d,c);if(null!==k){var l={match:k,pathSpec:d,listener:a,priority:f,transactional:e};h&&(l.accumulate=[h]),g.guids[i]=l;var m=e?"transListeners":"listeners";g[m].push(l),g.all.push(l)}}};return b.event.impersonateListener(a,g),g}function g(a,b,c,d,e){return p[a].fireToListeners(b[d],c,e)}function h(a,b){return a.priority-b.priority}function i(a,b,c,d){p[a].fire(b,c,d),c.all.sort(h),c.listeners.sort(h),c.transListeners.sort(h)}function j(){return{guids:{},all:[],listeners:[],transListeners:[]}}function k(a,b){var c=j();return i(a,b,c),c}function l(a,b,c,d){var e=k(a,b);return g(a,e,c,"all",d)}function m(a,b){a[b]={addListener:function(a,c,d,e){p[b].addListener(f(c,a),d,null,null,e)},removeListener:function(a){p[b].removeListener(a)}}}function n(a){a.type||(a.type="ADD"),a.segs=r.parseEL(a.path)}function o(a,b,c,d,e,f){for(var g=j(),h=0;h0},r},b.makeSuperApplier=function(){var a=[],c={};return c.addSubApplier=function(b,c){a.push({path:b,subApplier:c})},c.fireChangeRequest=function(c){for(var d=0;d0&&(h.typeStack=[],h.pathOp=b.model.makePathStack(h,"path"),b.model.transform.expandWildcards(h,c)),b.model.fireSortedChanges(h.queuedChanges,h.finalApplier),h.target.model},a.extend(b.model.transformWithRules,b.model.transform),b.model.transform=b.model.transformWithRules,b.transformOne=function(a){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:a}}},b.transformMany=function(a){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:a}}}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.registerNamespace("fluid.transforms"),b.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.transforms.value.invert"}),b.transforms.value=b.identity,b.transforms.value.invert=function(a,c){var d=b.copy(a);return d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d},b.transforms.identity=b.transforms.value,b.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"}),b.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"}),b.transforms.literalValue=function(a){return a.value},b.defaults("fluid.transforms.arrayValue",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.arrayValue=b.makeArray,b.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.count=function(a){return b.makeArray(a).length},b.defaults("fluid.transforms.round",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.round=function(a){return Math.round(a)},b.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"}),b.transforms["delete"]=function(a,c){var d=b.model.composePaths(c.outputPrefix,a.outputPath);c.applier.requestChange(d,null,"DELETE")},b.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.transformFunction"}),b.transforms.firstValue=function(a,c){a.values&&a.values.length||b.fail('firstValue transformer requires an array of values at path named "values", supplied',a);for(var d=0;d=a},"<":function(a,b){return b>a},">=":function(a,b){return a>=b},">":function(a,b){return a>b},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}},b.transforms.binaryOp=function(a,c,d){var e=a.left(),f=a.right(),g=b.model.transform.getValue(void 0,c.operator,d),h=b.transforms.binaryLookup[g];return void 0===h||void 0===e||void 0===f?void 0:h(e,f)},b.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{"true":null,"false":null,condition:null}}),b.transforms.condition=function(a){var b=a.condition();return null===b?void 0:a[b?"true":"false"]()},b.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.transformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"}),b.model.transform.matchValueMapperFull=function(a,c,d){var e=c.options;if(0===e.length&&b.fail("valueMapper supplied empty list of options: ",c),1===e.length)return 0;for(var f=[],g=0;ga&&(a=c)}var e=b.max;if(void 0!==e){var f=b.excludeMax||0;e-=f,a>e&&(a=e)}return a},b.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"}),b.transforms.free=function(a){var c=b.makeArray(a.args);return b.invokeGlobalFunction(a.func,c)}}(b,c);var c=c||{};!function(a,b){"use strict";b.defaults("fluid.commonViewComponent",{gradeNames:["fluid.littleComponent","autoInit"],initFunction:"fluid.initView",argumentMap:{container:0,options:1},members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors)"}}),b.defaults("fluid.viewComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardComponent","autoInit"]}),b.defaults("fluid.viewRelayComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardRelayComponent","autoInit"]}),b.dumpSelector=function(a){return"string"==typeof a?a:a.selector?a.selector:""},b.diagnoseFailedView=function(a,c,d,e){if(!c&&(b.hasGrade(d,"fluid.viewComponent")||b.hasGrade(d,"fluid.viewRelayComponent"))){var f=b.wrap(e[1]),g="Instantiation of autoInit component with type "+a+" failed, since ";f?0===f.length?b.fail(g+'selector "',b.dumpSelector(e[1]),'" did not match any markup in the document'):b.fail(g+" component creator function did not return a value"):b.fail(g+" container argument is empty")}},b.checkTryCatchParameter=function(){var a=window.location||{search:"",protocol:"file:"},c=a.search.slice(1).split("&");return b.find(c,function(a){return 0===a.indexOf("notrycatch")?!0:void 0})===!0},b.notrycatch=b.checkTryCatchParameter(),b.wrap=function(b,c){return c=c||a,!b||b.jquery?b:c(b)},b.unwrap=function(a){return a&&a.jquery&&1===a.length?a[0]:a},b.container=function(a,c,d){d&&(a=b.unwrap(a));var e=b.wrap(a,d);if(c&&(!e||0===e.length))return null;if(!e||!e.jquery||1!==e.length){"string"!=typeof a&&(a=e.selector);var f=void 0!==e.length?e.length:0;b.fail((f>1?"More than one ("+f+") container elements were":"No container element was")+" found for selector "+a)}return b.isDOMNode(e[0])||b.fail("fluid.container was supplied a non-jQueryable element"),e},b.createDomBinder=function(a,c){function d(a,c){return b.allocateSimpleId(c)+"-"+a}function e(a,b,c){f[d(a,b)]=c}var f={},g={id:b.allocateGuid()},h=a.constructor;return g.locate=function(d,f){var g,i,j;return g=c[d],i=f?f:a,i||b.fail("DOM binder invoked for selector "+d+" without container"),g?(j="function"==typeof g?h(g.call(null,b.unwrap(i))):h(g,i),j.get(0)===document&&(j=[]),j.selector||(j.selector=g,j.context=i),j.selectorName=d,e(d,i,j),j):i},g.fastLocate=function(b,c){var e=c?c:a,h=d(b,e),i=f[h];return i?i:g.locate(b,c)},g.clear=function(){f={}},g.refresh=function(b,c){var d=c?c:a;"string"==typeof b&&(b=[b]),void 0===d.length&&(d=[d]);for(var e=0;e1&&(e=e[0],f=!0),"input"!==e.nodeName.toLowerCase()||!/radio|checkbox/.test(e.type))return void 0===d?a(e).val():a(e).val(d);var g=e.name;void 0===g&&b.fail("Cannot acquire value from node "+b.dumpEl(e)+" which does not have name attribute set");var h;if(f)h=c;else{h=e.ownerDocument.getElementsByName(g);var i=b.findForm(e);h=a.grep(h,function(a){return a.name!==g?!1:!i||b.dom.isContainer(i,a)})}if(void 0===d){var j=a.map(h,function(a){return a.checked?a.value:null});return"radio"===e.type?j[0]:j}"boolean"==typeof d&&(d=d?"true":"false"),a.each(h,function(){this.checked=d instanceof Array?-1!==a.inArray(this.value,d):d===this.value})},b.BINDING_ROOT_KEY="fluid-binding-root",b.findData=function(b,c){for(;b;){var d=a.data(b,c);if(d)return d;b=b.parentNode}},b.bindFossils=function(c,d,e){a.data(c,b.BINDING_ROOT_KEY,{data:d,fossils:e})},b.boundPathForNode=function(a,c){a=b.unwrap(a);var d=a.name||a.id,e=c[d];return e?e.EL:null},b.applyBoundChange=function(a,c,d){a=b.unwrap(a),void 0===c&&(c=b.value(a)),void 0===a.nodeType&&a.length>0&&(a=a[0]);var e=b.findData(a,b.BINDING_ROOT_KEY);e||b.fail("Bound data could not be discovered in any node above "+b.dumpEl(a));var f=a.name,g=e.fossils[f];g||b.fail("No fossil discovered for name "+f+" in fossil record above "+b.dumpEl(a)),"boolean"==typeof g.oldvalue&&(c=c[0]?!0:!1);var h=e.fossils[f].EL;d?d.fireChangeRequest({path:h,value:c,source:"DOM:"+a.id}):b.set(e.data,h,c)},b.jById=function(c,d){d=d&&9===d.nodeType?d:document;var e=b.byId(c,d),f=e?a(e):[];return f.selector="#"+c,f.context=d,f},b.byId=function(a,c){c=c&&9===c.nodeType?c:document;var d=c.getElementById(a);return d?(d.id!==a&&b.fail("Problem in document structure - picked up element "+b.dumpEl(d)+" for id "+a+" without this id - most likely the element has a name which conflicts with this id"),d):null},b.getId=function(a){return b.unwrap(a).id},b.allocateSimpleId=function(a){var c="fluid-id-"+b.allocateGuid();return!a||b.isPrimitive(a)?c:(a=b.unwrap(a),a.id||(a.id=c),a.id)},b.defaults("fluid.ariaLabeller",{labelAttribute:"aria-label",liveRegionMarkup:'',liveRegionId:"fluid-ariaLabeller-liveRegion",events:{generateLiveElement:"unicast"},listeners:{generateLiveElement:"fluid.ariaLabeller.generateLiveElement"}}),b.ariaLabeller=function(a,c){var d=b.initView("fluid.ariaLabeller",a,c);return d.update=function(a){if(a=a||d.options,d.container.attr(d.options.labelAttribute,a.text),a.dynamicLabel){var c=b.jById(d.options.liveRegionId);0===c.length&&(c=d.events.generateLiveElement.fire(d)),c.text(a.text)}},d.update(),d},b.ariaLabeller.generateLiveElement=function(b){var c=a(b.options.liveRegionMarkup);return c.prop("id",b.options.liveRegionId),a("body").append(c),c
-};var c="aria-labelling";b.getAriaLabeller=function(d){d=a(d);var e=b.getScopedData(d,c);return e},b.updateAriaLabel=function(d,e,f){f=a.extend({},f||{},{text:e});var g=b.getAriaLabeller(d);return g?g.update(f):(g=b.ariaLabeller(d,f),b.setScopedData(d,c,g)),g};var d={};a(document).click(function(a){for(var c=b.resolveEventTarget(a);c;){if(d[c.id])return;c=c.parentNode}b.each(d,function(b,c){b(a),delete d[c]})}),b.globalDismissal=function(a,c){b.each(a,function(a){var e=b.unwrap(a).ownerDocument===document?b.allocateSimpleId(a):b.allocateGuid();c?d[e]=c:delete d[e]})},b.now=function(){return Date.now?Date.now():(new Date).getTime()},b.deadMansBlur=function(c,d){var e={options:a.extend(!0,{},b.defaults("fluid.deadMansBlur"),d)};return e.blurPending=!1,e.lastCancel=0,e.canceller=function(a){b.log("Cancellation through "+a.type+" on "+b.dumpEl(a.target)),e.lastCancel=b.now(),e.blurPending=!1},e.noteProceeded=function(){b.globalDismissal(e.options.exclusions)},e.reArm=function(){b.globalDismissal(e.options.exclusions,e.proceed)},e.addExclusion=function(a){b.globalDismissal(a,e.proceed)},e.proceed=function(a){b.log("Direct proceed through "+a.type+" on "+b.dumpEl(a.target)),e.blurPending=!1,e.options.handler(c)},b.each(e.options.exclusions,function(c){c=a(c),b.each(c,function(b){a(b).bind("focusin",e.canceller).bind("fluid-focus",e.canceller).click(e.canceller).mousedown(e.canceller)})}),e.options.cancelByDefault?e.reArm():a(c).bind("focusout",function(a){b.log("Starting blur timer for element "+b.dumpEl(a.target));var d=b.now();b.log("back delay: "+(d-e.lastCancel)),d-e.lastCancel>e.options.backDelay&&(e.blurPending=!0),setTimeout(function(){e.blurPending&&e.options.handler(c)},e.options.delay)}),e},b.defaults("fluid.deadMansBlur",{delay:150,backDelay:100})}(b,c);var c=c||{};!function(a,b){"use strict";function c(a){return a}var d={},e={};b.fetchResources=function(a,c,d){var e=b.initLittleComponent("fluid.fetchResources",d);return e.resourceSpecs=a,e.callback=c,e.operate=function(){b.fetchResources.fetchResourcesImpl(e)},b.each(a,function(a,c){a.recurseFirer=b.event.getEventFirer(null,null,'I/O completion for resource "'+c+'"'),a.recurseFirer.addListener(e.operate),a.url&&!a.href&&(a.href=a.url)}),e.options.amalgamateClasses&&b.fetchResources.amalgamateClasses(a,e.options.amalgamateClasses,e.operate),e.operate(),e},b.fetchResources.amalgamateClasses=function(a,c,d){b.each(c,function(c){var f=e[c];b.each(f,function(b,e){a[c+"!"+e]=b,b.recurseFirer.addListener(d)})})},b.fetchResources.timeSuccessCallback=function(a){if(a.timeSuccess&&a.options&&a.options.success){var c=a.options.success;a.options.success=function(){var d=new Date,e=c.apply(null,arguments);return b.log("External callback for URL "+a.href+" completed - callback time: "+((new Date).getTime()-d.getTime())+"ms"),e}}},b.fetchResources.clearResourceCache=function(a){a?delete d[c(a)]:b.clear(d)},b.fetchResources.handleCachedRequest=function(a,f){var g=c(a.href),h=d[g];if(h.$$firer$$){b.log("Handling request for "+g+" from cache");var i=a.fetchClass;i&&e[i]&&(b.log("Clearing pendingClass entry for class "+i),delete e[i][g]),d[g]=f,h.fire(f)}},b.fetchResources.completeRequest=function(a){a.queued=!1,a.completeTime=new Date,b.log("Request to URL "+a.href+" completed - total elapsed time: "+(a.completeTime.getTime()-a.initTime.getTime())+"ms"),a.recurseFirer.fire()},b.fetchResources.makeResourceCallback=function(a){return{success:function(c){a.resourceText=c,a.resourceKey=a.href,a.forceCache&&b.fetchResources.handleCachedRequest(a,c),b.fetchResources.completeRequest(a)},error:function(c,d,e){a.fetchError={status:c.status,textStatus:c.textStatus,errorThrown:e},b.fetchResources.completeRequest(a)}}},b.fetchResources.issueCachedRequest=function(f,g){var h=c(f.href),i=d[h];if(i)i.$$firer$$?(b.log("Request for cached resource which is in flight: url "+h),i.addListener(function(a){g.success(a)})):g.success(i);else{b.log("First request for cached resource with url "+h),i=b.event.getEventFirer(null,null,"cache notifier for resource URL "+h),i.$$firer$$=!0,d[h]=i;var j=f.fetchClass;j&&(e[j]||(e[j]={}),e[j][h]=f),g.cache=!1,a.ajax(g)}},b.fetchResources.composeCallbacks=function(a,c){return c?a?function(){try{c.apply(null,arguments)}catch(d){b.log("Exception applying external fetchResources callback: "+d)}a.apply(null,arguments)}:c:a},b.fetchResources.composePolicy=function(a,c){return b.fetchResources.composeCallbacks(a,c)},b.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:b.fetchResources.composePolicy,error:b.fetchResources.composePolicy,url:"reverse"}}),b.fetchResources.issueRequest=function(c,d){var e=b.fetchResources.makeResourceCallback(c),f={url:c.href,success:e.success,error:e.error,dataType:c.dataType||"text"};b.fetchResources.timeSuccessCallback(c),f=b.merge(b.defaults("fluid.fetchResources.issueRequest").mergePolicy,f,c.options),c.queued=!0,c.initTime=new Date,b.log("Request with key "+d+" queued for "+c.href),c.forceCache?b.fetchResources.issueCachedRequest(c,f):a.ajax(f)},b.fetchResources.fetchResourcesImpl=function(c){var d=!0,e=!0,f=c.resourceSpecs;for(var g in f){var h=f[g];if((!h.options||h.options.async)&&(e=!1),h.href&&!h.completeTime)h.queued||b.fetchResources.issueRequest(h,g),h.queued&&(d=!1);else if(h.nodeId&&!h.resourceText){var i=document.getElementById(h.nodeId);h.resourceText=b.dom.getElementText(i),h.resourceKey=h.nodeId}}d&&c.callback&&!c.callbackCalled&&(c.callbackCalled=!0,a.browser.mozilla&&!e?setTimeout(function(){c.callback(f)},1):c.callback(f))},b.fetchResources.primeCacheFromResources=function(a){var c=b.defaults(a).resources,d=(b.expandOptions?b.expandOptions:b.identity)(b.copy(c));b.fetchResources(d)},b.registerNamespace("fluid.expander"),b.expander.makeDefaultFetchOptions=function(c,d,e){return a.extend(!0,{dataType:"text"},e,{success:function(a,b){var d=JSON.parse(a);b(c(d))},error:function(a,c){b.log("Error fetching "+d+": "+c)}})},b.expander.makeFetchExpander=function(a){return{expander:{type:"fluid.expander.deferredFetcher",href:a.url,options:b.expander.makeDefaultFetchOptions(a.disposer,a.url,a.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:a.fetchKey}}},b.expander.deferredFetcher=function(a,c,d){var e=c.expander,f=b.copy(e),g=b.expand(e.resourceSpecCollector,d);delete f.type,delete f.resourceSpecCollector,delete f.fetchKey;var h=function(b){a(b)};f.options.success=function(a){e.options.success(a,h)};var i=e.fetchKey||b.allocateGuid();return g[i]=f,b.NO_VALUE}}(b,c),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:global;!function(){if(!a.DSP){var b={};b.add=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]+c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]+c},b.sub=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]-c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]-c},b.mul=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]*c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]*c},b.mulCplx=function(a,b,c,d,e,f){var g,h,i,j,k;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],a[g]=h*j-i*k,b[g]=h*k+i*j;else for(g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=h*e-i*f,b[g]=h*f+i*e},b.div=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]/c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]/c},b.divCplx=function(a,b,c,d,e,f){var g,h,i,j,k,l;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(h*j+i*k)*l,b[g]=(i*j-h*k)*l;else for(l=1/(e*e+f*f),g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=(h*e+i*f)*l,b[g]=(i*e-h*f)*l},b.madd=function(a,b,c,d){var e;if(d instanceof Float32Array)for(e=Math.min(a.length,b.length,c.length,d.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d[e];else for(e=Math.min(a.length,b.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d},b.abs=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.abs(b[c])},b.absCplx=function(a,b,c){for(var d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.sqrt(b[d]*b[d]+c[d]*c[d])},b.acos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.acos(b[c])},b.asin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.asin(b[c])},b.atan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.atan(b[c])},b.atan2=function(a,b,c){for(var d=Math.min(a.length,c.length,b.length)-1;d>=0;--d)a[d]=Math.atan2(b[d],c[d])},b.ceil=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.ceil(b[c])},b.cos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.cos(b[c])},b.exp=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.exp(b[c])},b.floor=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.floor(b[c])},b.log=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.log(b[c])},b.max=function(a){for(var b=-1/0,c=a.length-1;c>=0;--c){var d=a[c];d>b&&(b=d)}return b},b.min=function(a){for(var b=1/0,c=a.length-1;c>=0;--c){var d=a[c];b>d&&(b=d)}return b},b.pow=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c[d]);else if(2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e}else if(3==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e*e}else if(4==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];e*=e,a[d]=e*e}else if(-1==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=1/b[d];else if(-2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=1/b[d];a[d]=e*e}else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c)},b.random=function(a,b,c){b||(b=0),isNaN(parseFloat(c))&&(c=1);for(var d=c-b,e=a.length-1;e>=0;--e)a[e]=Math.random()*d+b},b.round=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.round(b[c])},b.sin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sin(b[c])},b.sqrt=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sqrt(b[c])},b.tan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.tan(b[c])},b.clamp=function(a,b,c,d){for(var e=Math.min(a.length,b.length)-1;e>=0;--e){var f=b[e];a[e]=c>f?c:f>d?d:f}},b.fract=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c){var d=b[c];a[c]=d-Math.floor(d)}},b.ramp=function(a,b,c){var d=a.length-1;if(d>=0&&(a[0]=b),d>0)for(var e=(c-b)/d,f=1;d>=f;++f)a[f]=b+e*f},b.sign=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=b[c]<0?-1:1},b.sum=function(a){for(var b=0,c=a.length-1;c>=0;--c)b+=a[c];return b},b.sampleLinear=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:0];a[g]=k+j*(l-k)}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:f];a[g]=k+j*(l-k)}},b.sampleCubic=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:f],r=b[i],s=b[f>i?i+1:0],t=b[f-1>i?i+2:i+2-Math.floor((i+2)/e)*e];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:0],r=b[i],s=b[f>i?i+1:f],t=b[f-1>i?i+2:f];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}},b.pack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],a[b+3]=g[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.DSP=b}}(),function(){if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this.b=new Float32Array(a),this.b[0]=1,this.a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this.a,e=d.length,f=this.b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},a.Filter=b}}(),function(){if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=q+g;s>q;)j=.5*a[q],k=.5*b[q],l=.5*a[r],m=.5*b[r],n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=1/3,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.25,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,ab=c+2*g,bb=c+3*g,cb=c+4*g,db=e[d*g],eb=f[d*g],fb=e[2*d*g],gb=f[2*d*g],hb=.2,ib=$+g;ib>$;)H=a[$]*hb,I=b[$]*hb,J=a[_]*hb,K=b[_]*hb,L=a[ab]*hb,M=b[ab]*hb,N=a[bb]*hb,O=b[bb]*hb,P=a[cb]*hb,Q=b[cb]*hb,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*db+x*fb,s=i+w*db+y*fb,t=C*eb+A*gb,u=-B*eb-z*gb,a[_]=r-t,b[_]=s-u,a[cb]=r+t,b[cb]=s+u,D=h+v*fb+x*db,E=i+w*fb+y*db,F=-C*gb+A*eb,G=B*gb-z*eb,a[ab]=D+F,b[ab]=E+G,a[bb]=D-F,b[bb]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++ab,++bb,++cb},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=1/h;for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),this.size=a,this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}()}();var e=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};e.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},e.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c>>1^b[1&a];for(;c>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},e.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},e.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},e.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},e.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},e.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},e.prototype.LOG4=Math.log(4),e.prototype.SG_MAGICCONST=1+Math.log(4.5),e.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},e.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},e.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=0/0,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},e.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},e.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},e.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},e.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)};var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.fluid=d,f.init=function(a){var b=a?{audioSettings:a}:void 0,c=f.enviro.shared=f.enviro(b);return c},f.OUT_UGEN_ID="flocking-out",f.MAX_CHANNELS=32,f.MIN_BUSES=2,f.MAX_INPUT_BUSES=32,f.MIN_INPUT_BUSES=1,f.ALL_CHANNELS=f.MAX_INPUT_BUSES,f.PI=Math.PI,f.TWOPI=2*Math.PI,f.HALFPI=Math.PI/2,f.LOG01=Math.log(.1),f.LOG001=Math.log(.001),f.ROOT2=Math.sqrt(2),f.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},f.sampleFormats={FLOAT32NE:"float32NE"},d.registerNamespace("flock.debug"),f.debug.failHard=!0,f.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},d.registerNamespace("flock.platform"),f.platform.isBrowser="undefined"!=typeof window,f.platform.hasRequire="undefined"!=typeof require,f.platform.os=f.platform.isBrowser?window.navigator.platform:d.require("os").platform(),f.platform.isLinux=f.platform.os.indexOf("Linux")>-1,f.platform.isAndroid=f.platform.isLinux&&f.platform.os.indexOf("arm")>-1,f.platform.isIOS="iPhone"===f.platform.os||"iPad"===f.platform.os||"iPod"===f.platform.os,f.platform.isMobile=f.platform.isAndroid||f.platform.isIOS,f.platform.browser=f.browser(),f.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,f.platform.audioEngine=f.platform.isBrowser?f.platform.isWebAudio?"webAudio":"moz":"nodejs",d.staticEnvironment.audioEngine=d.typeTag("flock.platform."+f.platform.audioEngine),f.defaultBufferSizeForPlatform=function(){return f.platform.isMobile?8192:1024},f.shim={URL:f.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},f.requireModule=function(a,b){return b||(b=a),f.platform.isBrowser?window[a]:f.platform.hasRequire?require(b)[a]:void 0},f.noOp=function(){},f.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},f.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},f.generate=function(a,b){var c,d="number"==typeof a?new Float32Array(a):a,e="function"==typeof b;for(c=0;cg&&(g=e);if(g>0)for(d=0;df;f++)g=e?e[f]:1,h=(f+1)*a*b,i+=g*Math.cos(h+d);return i})},f.generateNormalizedFourierTable=function(a,b,c,d,e){var g=f.generate(c,function(a){return e(a+1)}),h=f.generateFourierTable(a,b,c,d,g);return f.normalize(h)},f.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,f.TWOPI/c)},f.tableGenerators={sin:function(a,b){return f.generate(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return f.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return f.generate(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return f.generate(a,function(b){return Math.sin(Math.PI*b/a)})}},f.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;bd.max&&(d.max=c),cd;d++,e++)g[e]=a[d];return g},f.parseMidiString=function(a){if(!a||a.length<2)return 0/0;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),g=f.midiFreq.noteNames[d],h=12*e+g;return h},f.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=f.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},f.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},f.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},f.interpolate.cubic=f.interpolate.hermite,f.warn=function(a){d.log(d.logLevel.WARN,a)},f.fail=function(a){if(f.debug.failHard)throw new Error(a);d.log(d.logLevel.FAIL,a)},f.pathParseError=function(a,b,c){var e="Error parsing path: "+b+". Segment '"+c+"' could not be resolved. Root object was: "+d.prettyPrintJSON(a);f.fail(e)},f.get=function(a,b){if(!a)return d.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return d.getGlobalValue(a);if(b&&""!==b){var c,e=""===b?[]:String(b).split("."),g=a[e[0]];for(c=1;cd;d++){if(a=a[i],e=typeof a,"object"!==e)return void f.fail("Error while setting a value at path + "+b+". A non-container object was found at segment "+i+". Value: "+a);i=g[d],void 0===a[i]&&(a[i]={})}return a[i]=c,c}},f.invoke=function(a,b,c){var d="function"==typeof a?a:f.get(a,b);return"function"!=typeof d?void f.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},f.input={},f.input.shouldExpand=function(a,b){var c=f.parse.specialInputs;return b&&b.options&&b.options.noExpand&&(c=c.concat(b.options.noExpand)),c.indexOf(a)<0},f.input.pathExpander=function(a){var b,c=d.model.parseEL(a),e="inputs",f=c.length,g=f-1,h=[];for(b=0;g>b;b++){var i=c[b],j=c[b+1];if(h.push(i),"model"===j||"options"===j){h=h.concat(c.slice(b+1,g));break}isNaN(Number(j))&&h.push(e)}return h.push(c[g]),h.join(".")},f.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=f.input.pathExpander(b),d=a[b],e[c]=d;return e},f.input.expandPath=function(a){return"string"==typeof a?f.input.pathExpander(a):f.input.expandPaths(a)},f.input.getValueForPath=function(a,b){b=f.input.expandPath(b);var c=f.get(a,b);return f.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},f.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c-1?f.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,k=f.input.shouldExpand(i,j)&&e?e(c,b,j,g):c;return f.set(a,b,k),j&&j.onInputChanged&&j.onInputChanged(i),k},f.input.setValuesForPaths=function(a,b,c,d){var e,g,h,i={};for(e in b)g=b[e],h=f.input.set(a,e,g,c,d),i[e]=h;return i},f.input.set=function(a,b,c,d,e){return"string"==typeof b?f.input.setValueForPath(a,b,c,d,e):f.input.setValuesForPaths(a,b,d,e)},d.defaults("flock.nodeList",{gradeNames:["fluid.littleComponent","autoInit"],members:{nodes:[],namedNodes:{}}}),f.nodeList.preInit=function(a){a.head=function(b){return a.nodes.unshift(b),b.nickName&&(a.namedNodes[b.nickName]=b),0},a.before=function(b,c){var d=a.nodes.indexOf(b);return a.insert(d,c),d},a.after=function(b,c){var d=a.nodes.indexOf(b),e=d+1;return a.insert(e,c),e},a.insert=function(b,c){return 0>b?a.head(c):(a.nodes.splice(b,0,c),c.nickName&&(a.namedNodes[c.nickName]=c),b)},a.tail=function(b){return a.nodes.push(b),b.nickName&&(a.namedNodes[b.nickName]=b),a.nodes.length},a.remove=function(b){var c=a.nodes.indexOf(b);return 0>c?c:(a.nodes.splice(c,1),delete a.namedNodes[b.nickName],c)},a.replace=function(b,c){var d=a.nodes.indexOf(c);return 0>d?a.head(b):(a.nodes[d]=b,delete a.namedNodes[c.nickName],b.nickName&&(a.namedNodes[b.nickName]=b),d)},a.clearAll=function(){for(;a.nodes.length>0;)a.nodes.pop()}},d.defaults("flock.enviro",{gradeNames:["fluid.standardRelayComponent","flock.nodeList","autoInit"],members:{audioSettings:"@expand:flock.enviro.clampAudioSettings({that}.options.audioSettings)",buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{that}.audioSettings.numBuses","{that}.audioSettings.blockSize"]}},buffers:{},bufferSources:{}},model:{isPlaying:!1,nextAvailableBus:{input:0,interconnect:0}},audioSettings:{rates:{audio:48e3,control:void 0,scheduled:void 0,demand:0,constant:0},blockSize:64,chans:2,numInputBuses:2,numBuses:8,bufferSize:f.defaultBufferSizeForPlatform()},components:{asyncScheduler:{type:"flock.scheduler.async"},audioStrategy:{type:"flock.audioStrategy.platform",options:{audioSettings:"{enviro}.audioSettings"}}},invokers:{acquireNextBus:{funcName:"flock.enviro.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{that}.audioSettings"]}},listeners:{onCreate:{funcName:"flock.enviro.calculateControlRate",args:["{that}.audioSettings"]}}}),f.enviro.clampAudioSettings=function(a){return a.numInputBuses=Math.min(a.numInputBuses,f.MAX_INPUT_BUSES),a.numInputBuses=Math.max(a.numInputBuses,f.MIN_INPUT_BUSES),a.chans=Math.min(a.chans,f.MAX_CHANNELS),a.numBuses=Math.max(a.numBuses,a.chans),a.numBuses=Math.max(a.numBuses,f.MIN_BUSES),a
+};var c="aria-labelling";b.getAriaLabeller=function(d){d=a(d);var e=b.getScopedData(d,c);return e},b.updateAriaLabel=function(d,e,f){f=a.extend({},f||{},{text:e});var g=b.getAriaLabeller(d);return g?g.update(f):(g=b.ariaLabeller(d,f),b.setScopedData(d,c,g)),g};var d={};a(document).click(function(a){for(var c=b.resolveEventTarget(a);c;){if(d[c.id])return;c=c.parentNode}b.each(d,function(b,c){b(a),delete d[c]})}),b.globalDismissal=function(a,c){b.each(a,function(a){var e=b.unwrap(a).ownerDocument===document?b.allocateSimpleId(a):b.allocateGuid();c?d[e]=c:delete d[e]})},b.now=function(){return Date.now?Date.now():(new Date).getTime()},b.deadMansBlur=function(c,d){var e={options:a.extend(!0,{},b.defaults("fluid.deadMansBlur"),d)};return e.blurPending=!1,e.lastCancel=0,e.canceller=function(a){b.log("Cancellation through "+a.type+" on "+b.dumpEl(a.target)),e.lastCancel=b.now(),e.blurPending=!1},e.noteProceeded=function(){b.globalDismissal(e.options.exclusions)},e.reArm=function(){b.globalDismissal(e.options.exclusions,e.proceed)},e.addExclusion=function(a){b.globalDismissal(a,e.proceed)},e.proceed=function(a){b.log("Direct proceed through "+a.type+" on "+b.dumpEl(a.target)),e.blurPending=!1,e.options.handler(c)},b.each(e.options.exclusions,function(c){c=a(c),b.each(c,function(b){a(b).bind("focusin",e.canceller).bind("fluid-focus",e.canceller).click(e.canceller).mousedown(e.canceller)})}),e.options.cancelByDefault?e.reArm():a(c).bind("focusout",function(a){b.log("Starting blur timer for element "+b.dumpEl(a.target));var d=b.now();b.log("back delay: "+(d-e.lastCancel)),d-e.lastCancel>e.options.backDelay&&(e.blurPending=!0),setTimeout(function(){e.blurPending&&e.options.handler(c)},e.options.delay)}),e},b.defaults("fluid.deadMansBlur",{delay:150,backDelay:100})}(b,c);var c=c||{};!function(a,b){"use strict";function c(a){return a}var d={},e={};b.fetchResources=function(a,c,d){var e=b.initLittleComponent("fluid.fetchResources",d);return e.resourceSpecs=a,e.callback=c,e.operate=function(){b.fetchResources.fetchResourcesImpl(e)},b.each(a,function(a,c){a.recurseFirer=b.event.getEventFirer(null,null,'I/O completion for resource "'+c+'"'),a.recurseFirer.addListener(e.operate),a.url&&!a.href&&(a.href=a.url)}),e.options.amalgamateClasses&&b.fetchResources.amalgamateClasses(a,e.options.amalgamateClasses,e.operate),e.operate(),e},b.fetchResources.amalgamateClasses=function(a,c,d){b.each(c,function(c){var f=e[c];b.each(f,function(b,e){a[c+"!"+e]=b,b.recurseFirer.addListener(d)})})},b.fetchResources.timeSuccessCallback=function(a){if(a.timeSuccess&&a.options&&a.options.success){var c=a.options.success;a.options.success=function(){var d=new Date,e=c.apply(null,arguments);return b.log("External callback for URL "+a.href+" completed - callback time: "+((new Date).getTime()-d.getTime())+"ms"),e}}},b.fetchResources.clearResourceCache=function(a){a?delete d[c(a)]:b.clear(d)},b.fetchResources.handleCachedRequest=function(a,f){var g=c(a.href),h=d[g];if(h.$$firer$$){b.log("Handling request for "+g+" from cache");var i=a.fetchClass;i&&e[i]&&(b.log("Clearing pendingClass entry for class "+i),delete e[i][g]),d[g]=f,h.fire(f)}},b.fetchResources.completeRequest=function(a){a.queued=!1,a.completeTime=new Date,b.log("Request to URL "+a.href+" completed - total elapsed time: "+(a.completeTime.getTime()-a.initTime.getTime())+"ms"),a.recurseFirer.fire()},b.fetchResources.makeResourceCallback=function(a){return{success:function(c){a.resourceText=c,a.resourceKey=a.href,a.forceCache&&b.fetchResources.handleCachedRequest(a,c),b.fetchResources.completeRequest(a)},error:function(c,d,e){a.fetchError={status:c.status,textStatus:c.textStatus,errorThrown:e},b.fetchResources.completeRequest(a)}}},b.fetchResources.issueCachedRequest=function(f,g){var h=c(f.href),i=d[h];if(i)i.$$firer$$?(b.log("Request for cached resource which is in flight: url "+h),i.addListener(function(a){g.success(a)})):g.success(i);else{b.log("First request for cached resource with url "+h),i=b.event.getEventFirer(null,null,"cache notifier for resource URL "+h),i.$$firer$$=!0,d[h]=i;var j=f.fetchClass;j&&(e[j]||(e[j]={}),e[j][h]=f),g.cache=!1,a.ajax(g)}},b.fetchResources.composeCallbacks=function(a,c){return c?a?function(){try{c.apply(null,arguments)}catch(d){b.log("Exception applying external fetchResources callback: "+d)}a.apply(null,arguments)}:c:a},b.fetchResources.composePolicy=function(a,c){return b.fetchResources.composeCallbacks(a,c)},b.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:b.fetchResources.composePolicy,error:b.fetchResources.composePolicy,url:"reverse"}}),b.fetchResources.issueRequest=function(c,d){var e=b.fetchResources.makeResourceCallback(c),f={url:c.href,success:e.success,error:e.error,dataType:c.dataType||"text"};b.fetchResources.timeSuccessCallback(c),f=b.merge(b.defaults("fluid.fetchResources.issueRequest").mergePolicy,f,c.options),c.queued=!0,c.initTime=new Date,b.log("Request with key "+d+" queued for "+c.href),c.forceCache?b.fetchResources.issueCachedRequest(c,f):a.ajax(f)},b.fetchResources.fetchResourcesImpl=function(c){var d=!0,e=!0,f=c.resourceSpecs;for(var g in f){var h=f[g];if((!h.options||h.options.async)&&(e=!1),h.href&&!h.completeTime)h.queued||b.fetchResources.issueRequest(h,g),h.queued&&(d=!1);else if(h.nodeId&&!h.resourceText){var i=document.getElementById(h.nodeId);h.resourceText=b.dom.getElementText(i),h.resourceKey=h.nodeId}}d&&c.callback&&!c.callbackCalled&&(c.callbackCalled=!0,a.browser.mozilla&&!e?setTimeout(function(){c.callback(f)},1):c.callback(f))},b.fetchResources.primeCacheFromResources=function(a){var c=b.defaults(a).resources,d=(b.expandOptions?b.expandOptions:b.identity)(b.copy(c));b.fetchResources(d)},b.registerNamespace("fluid.expander"),b.expander.makeDefaultFetchOptions=function(c,d,e){return a.extend(!0,{dataType:"text"},e,{success:function(a,b){var d=JSON.parse(a);b(c(d))},error:function(a,c){b.log("Error fetching "+d+": "+c)}})},b.expander.makeFetchExpander=function(a){return{expander:{type:"fluid.expander.deferredFetcher",href:a.url,options:b.expander.makeDefaultFetchOptions(a.disposer,a.url,a.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:a.fetchKey}}},b.expander.deferredFetcher=function(a,c,d){var e=c.expander,f=b.copy(e),g=b.expand(e.resourceSpecCollector,d);delete f.type,delete f.resourceSpecCollector,delete f.fetchKey;var h=function(b){a(b)};f.options.success=function(a){e.options.success(a,h)};var i=e.fetchKey||b.allocateGuid();return g[i]=f,b.NO_VALUE}}(b,c),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:global;!function(){if(!a.DSP){var b={};b.add=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]+c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]+c},b.sub=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]-c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]-c},b.mul=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]*c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]*c},b.mulCplx=function(a,b,c,d,e,f){var g,h,i,j,k;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],a[g]=h*j-i*k,b[g]=h*k+i*j;else for(g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=h*e-i*f,b[g]=h*f+i*e},b.div=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]/c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]/c},b.divCplx=function(a,b,c,d,e,f){var g,h,i,j,k,l;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(h*j+i*k)*l,b[g]=(i*j-h*k)*l;else for(l=1/(e*e+f*f),g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=(h*e+i*f)*l,b[g]=(i*e-h*f)*l},b.madd=function(a,b,c,d){var e;if(d instanceof Float32Array)for(e=Math.min(a.length,b.length,c.length,d.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d[e];else for(e=Math.min(a.length,b.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d},b.abs=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.abs(b[c])},b.absCplx=function(a,b,c){for(var d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.sqrt(b[d]*b[d]+c[d]*c[d])},b.acos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.acos(b[c])},b.asin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.asin(b[c])},b.atan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.atan(b[c])},b.atan2=function(a,b,c){for(var d=Math.min(a.length,c.length,b.length)-1;d>=0;--d)a[d]=Math.atan2(b[d],c[d])},b.ceil=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.ceil(b[c])},b.cos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.cos(b[c])},b.exp=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.exp(b[c])},b.floor=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.floor(b[c])},b.log=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.log(b[c])},b.max=function(a){for(var b=-1/0,c=a.length-1;c>=0;--c){var d=a[c];d>b&&(b=d)}return b},b.min=function(a){for(var b=1/0,c=a.length-1;c>=0;--c){var d=a[c];b>d&&(b=d)}return b},b.pow=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c[d]);else if(2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e}else if(3==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e*e}else if(4==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];e*=e,a[d]=e*e}else if(-1==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=1/b[d];else if(-2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=1/b[d];a[d]=e*e}else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c)},b.random=function(a,b,c){b||(b=0),isNaN(parseFloat(c))&&(c=1);for(var d=c-b,e=a.length-1;e>=0;--e)a[e]=Math.random()*d+b},b.round=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.round(b[c])},b.sin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sin(b[c])},b.sqrt=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sqrt(b[c])},b.tan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.tan(b[c])},b.clamp=function(a,b,c,d){for(var e=Math.min(a.length,b.length)-1;e>=0;--e){var f=b[e];a[e]=c>f?c:f>d?d:f}},b.fract=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c){var d=b[c];a[c]=d-Math.floor(d)}},b.ramp=function(a,b,c){var d=a.length-1;if(d>=0&&(a[0]=b),d>0)for(var e=(c-b)/d,f=1;d>=f;++f)a[f]=b+e*f},b.sign=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=b[c]<0?-1:1},b.sum=function(a){for(var b=0,c=a.length-1;c>=0;--c)b+=a[c];return b},b.sampleLinear=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:0];a[g]=k+j*(l-k)}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:f];a[g]=k+j*(l-k)}},b.sampleCubic=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:f],r=b[i],s=b[f>i?i+1:0],t=b[f-1>i?i+2:i+2-Math.floor((i+2)/e)*e];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:0],r=b[i],s=b[f>i?i+1:f],t=b[f-1>i?i+2:f];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}},b.pack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],a[b+3]=g[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.DSP=b}}(),function(){if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this.b=new Float32Array(a),this.b[0]=1,this.a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this.a,e=d.length,f=this.b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},a.Filter=b}}(),function(){if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=q+g;s>q;)j=.5*a[q],k=.5*b[q],l=.5*a[r],m=.5*b[r],n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=1/3,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.25,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,ab=c+2*g,bb=c+3*g,cb=c+4*g,db=e[d*g],eb=f[d*g],fb=e[2*d*g],gb=f[2*d*g],hb=.2,ib=$+g;ib>$;)H=a[$]*hb,I=b[$]*hb,J=a[_]*hb,K=b[_]*hb,L=a[ab]*hb,M=b[ab]*hb,N=a[bb]*hb,O=b[bb]*hb,P=a[cb]*hb,Q=b[cb]*hb,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*db+x*fb,s=i+w*db+y*fb,t=C*eb+A*gb,u=-B*eb-z*gb,a[_]=r-t,b[_]=s-u,a[cb]=r+t,b[cb]=s+u,D=h+v*fb+x*db,E=i+w*fb+y*db,F=-C*gb+A*eb,G=B*gb-z*eb,a[ab]=D+F,b[ab]=E+G,a[bb]=D-F,b[bb]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++ab,++bb,++cb},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=1/h;for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),this.size=a,this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}()}();var e=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};e.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},e.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c>>1^b[1&a];for(;c>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},e.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},e.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},e.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},e.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},e.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},e.prototype.LOG4=Math.log(4),e.prototype.SG_MAGICCONST=1+Math.log(4.5),e.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},e.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},e.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=0/0,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},e.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},e.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},e.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},e.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)};var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.fluid=d,f.init=function(a){var b=a?{audioSettings:a}:void 0,c=f.enviro.shared=f.enviro(b);return c},f.OUT_UGEN_ID="flocking-out",f.MAX_CHANNELS=32,f.MIN_BUSES=2,f.MAX_INPUT_BUSES=32,f.MIN_INPUT_BUSES=1,f.ALL_CHANNELS=f.MAX_INPUT_BUSES,f.PI=Math.PI,f.TWOPI=2*Math.PI,f.HALFPI=Math.PI/2,f.LOG01=Math.log(.1),f.LOG001=Math.log(.001),f.ROOT2=Math.sqrt(2),f.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},f.sampleFormats={FLOAT32NE:"float32NE"},d.registerNamespace("flock.debug"),f.debug.failHard=!0,f.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},d.registerNamespace("flock.platform"),f.platform.isBrowser="undefined"!=typeof window,f.platform.hasRequire="undefined"!=typeof require,f.platform.os=f.platform.isBrowser?window.navigator.platform:d.require("os").platform(),f.platform.isLinux=f.platform.os.indexOf("Linux")>-1,f.platform.isAndroid=f.platform.isLinux&&f.platform.os.indexOf("arm")>-1,f.platform.isIOS="iPhone"===f.platform.os||"iPad"===f.platform.os||"iPod"===f.platform.os,f.platform.isMobile=f.platform.isAndroid||f.platform.isIOS,f.platform.browser=f.browser(),f.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,f.platform.audioEngine=f.platform.isBrowser?f.platform.isWebAudio?"webAudio":"moz":"nodejs",d.staticEnvironment.audioEngine=d.typeTag("flock.platform."+f.platform.audioEngine),f.defaultBufferSizeForPlatform=function(){return f.platform.isMobile?8192:1024},f.shim={URL:f.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},f.requireModule=function(a,b){return b||(b=a),f.platform.isBrowser?window[a]:f.platform.hasRequire?require(b)[a]:void 0},f.noOp=function(){},f.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},f.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},f.generate=function(a,b){var c,d="number"==typeof a?new Float32Array(a):a,e="function"==typeof b;for(c=0;cg&&(g=e);if(g>0)for(d=0;df;f++)g=e?e[f]:1,h=(f+1)*a*b,i+=g*Math.cos(h+d);return i})},f.generateNormalizedFourierTable=function(a,b,c,d,e){var g=f.generate(c,function(a){return e(a+1)}),h=f.generateFourierTable(a,b,c,d,g);return f.normalize(h)},f.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,f.TWOPI/c)},f.tableGenerators={sin:function(a,b){return f.generate(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return f.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return f.generate(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return f.generate(a,function(b){return Math.sin(Math.PI*b/a)})}},f.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;bd.max&&(d.max=c),cd;d++,e++)g[e]=a[d];return g},f.parseMidiString=function(a){if(!a||a.length<2)return 0/0;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),g=f.midiFreq.noteNames[d],h=12*e+g;return h},f.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=f.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},f.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},f.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},f.interpolate.cubic=f.interpolate.hermite,f.log={warn:function(a){d.log(d.logLevel.WARN,a)},debug:function(a){d.log(d.logLevel.INFO,a)}},f.fail=function(a){if(f.debug.failHard)throw new Error(a);d.log(d.logLevel.FAIL,a)},f.pathParseError=function(a,b,c){var e="Error parsing path '"+b+"'. Segment '"+c+"' could not be resolved. Root object was: "+d.prettyPrintJSON(a);f.fail(e)},f.get=function(a,b){if(!a)return d.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return d.getGlobalValue(a);if(b&&""!==b){var c,e=""===b?[]:String(b).split("."),g=a[e[0]];for(c=1;cd;d++){if(a=a[i],e=typeof a,"object"!==e)return void f.fail("Error while setting a value at path '"+b+"'. A non-container object was found at segment '"+i+"'. Value: "+a);i=g[d],void 0===a[i]&&(a[i]={})}return a[i]=c,c}},f.invoke=function(a,b,c){var d="function"==typeof a?a:f.get(a,b);return"function"!=typeof d?void f.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},f.input={},f.input.shouldExpand=function(a,b){var c=f.parse.specialInputs;return b&&b.options&&b.options.noExpand&&(c=c.concat(b.options.noExpand)),c.indexOf(a)<0},f.input.pathExpander=function(a){var b,c=d.model.parseEL(a),e="inputs",f=c.length,g=f-1,h=[];for(b=0;g>b;b++){var i=c[b],j=c[b+1];if(h.push(i),"model"===j||"options"===j){h=h.concat(c.slice(b+1,g));break}isNaN(Number(j))&&h.push(e)}return h.push(c[g]),h.join(".")},f.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=f.input.pathExpander(b),d=a[b],e[c]=d;return e},f.input.expandPath=function(a){return"string"==typeof a?f.input.pathExpander(a):f.input.expandPaths(a)},f.input.getValueForPath=function(a,b){b=f.input.expandPath(b);var c=f.get(a,b);return f.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},f.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c-1?f.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,k=f.input.resolveValue(a,b,c,j,i,g,e);return f.set(a,b,k),j&&j.onInputChanged&&j.onInputChanged(i),k},f.input.setValuesForPaths=function(a,b,c,d){var e,g,h,i={};for(e in b)g=b[e],h=f.input.set(a,e,g,c,d),i[e]=h;return i},f.input.set=function(a,b,c,d,e){return"string"==typeof b?f.input.setValueForPath(a,b,c,d,e):f.input.setValuesForPaths(a,b,d,e)},d.defaults("flock.nodeList",{gradeNames:["fluid.littleComponent","autoInit"],members:{nodes:[],namedNodes:{}}}),f.nodeList.preInit=function(a){a.head=function(b){return a.nodes.unshift(b),b.nickName&&(a.namedNodes[b.nickName]=b),0},a.before=function(b,c){var d=a.nodes.indexOf(b);return a.insert(d,c),d},a.after=function(b,c){var d=a.nodes.indexOf(b),e=d+1;return a.insert(e,c),e},a.insert=function(b,c){return 0>b?a.head(c):(a.nodes.splice(b,0,c),c.nickName&&(a.namedNodes[c.nickName]=c),b)},a.tail=function(b){return a.nodes.push(b),b.nickName&&(a.namedNodes[b.nickName]=b),a.nodes.length},a.remove=function(b){var c=a.nodes.indexOf(b);return 0>c?c:(a.nodes.splice(c,1),delete a.namedNodes[b.nickName],c)},a.replace=function(b,c){var d=a.nodes.indexOf(c);return 0>d?a.head(b):(a.nodes[d]=b,delete a.namedNodes[c.nickName],b.nickName&&(a.namedNodes[b.nickName]=b),d)},a.clearAll=function(){for(;a.nodes.length>0;)a.nodes.pop()}},d.defaults("flock.enviro",{gradeNames:["fluid.standardRelayComponent","flock.nodeList","autoInit"],members:{audioSettings:"@expand:flock.enviro.clampAudioSettings({that}.options.audioSettings)",buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{that}.audioSettings.numBuses","{that}.audioSettings.blockSize"]}},buffers:{},bufferSources:{}},model:{isPlaying:!1,nextAvailableBus:{input:0,interconnect:0}},audioSettings:{rates:{audio:48e3,control:void 0,scheduled:void 0,demand:0,constant:0},blockSize:64,chans:2,numInputBuses:2,numBuses:8,bufferSize:f.defaultBufferSizeForPlatform()},components:{asyncScheduler:{type:"flock.scheduler.async"},audioStrategy:{type:"flock.audioStrategy.platform",options:{audioSettings:"{enviro}.audioSettings"}}},invokers:{acquireNextBus:{funcName:"flock.enviro.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{that}.audioSettings"]}},listeners:{onCreate:{funcName:"flock.enviro.calculateControlRate",args:["{that}.audioSettings"]}}}),f.enviro.clampAudioSettings=function(a){return a.numInputBuses=Math.min(a.numInputBuses,f.MAX_INPUT_BUSES),a.numInputBuses=Math.max(a.numInputBuses,f.MIN_INPUT_BUSES),a.chans=Math.min(a.chans,f.MAX_CHANNELS),a.numBuses=Math.max(a.numBuses,a.chans),a.numBuses=Math.max(a.numBuses,f.MIN_BUSES),a
},f.enviro.calculateControlRate=function(a){return a.rates.control=a.rates.audio/a.blockSize,a},f.enviro.acquireNextBus=function(a,b,c,d,e){var g=d.nextAvailableBus[a];if(void 0===g)return void f.fail("An invalid bus type was specified when invoking flock.enviro.acquireNextBus(). Type was: "+a);var h=g+e.chans,i=e.chans+e.numInputBuses;return"interconnect"===a&&(h+=e.numInputBuses,i=b.length),h>=i?void f.fail("Unable to aquire a bus. There are insufficient buses available. Please use an existing bus or configure additional buses using the enviroment's numBuses and numInputBuses parameters."):(c.change("nextAvailableBus."+a,++g),h)},f.enviro.preInit=function(a){a.play=function(){a.audioStrategy.start(),a.model.isPlaying=!0},a.stop=function(){a.audioStrategy.stop(),a.model.isPlaying=!1},a.reset=function(){a.stop(),a.asyncScheduler.clearAll(),a.applier.change("nextAvailableBus.input",[]),a.applier.change("nextAvailableBus.interconnect",[]),a.audioStrategy.reset(),a.clearAll()},a.registerBuffer=function(b){b.id&&(a.buffers[b.id]=b)},a.releaseBuffer=function(b){if(b){var c="string"==typeof b?b:b.id;delete a.buffers[c]}}},f.enviro.finalInit=function(a){a.gen=function(){var b=a.audioStrategy.nodeEvaluator;b.clearBuses(),b.gen()}},f.enviro.createAudioBuffers=function(a,b){var c,d=[];for(c=0;a>c;c++)d[c]=new Float32Array(b);return d},d.defaults("flock.audioStrategy",{gradeNames:["fluid.standardRelayComponent"],components:{nodeEvaluator:{type:"flock.enviro.nodeEvaluator",options:{numBuses:"{enviro}.options.audioSettings.numBuses",blockSize:"{enviro}.options.audioSettings.blockSize",members:{buses:"{enviro}.buses",nodes:"{enviro}.nodes"}}}}}),d.defaults("flock.enviro.nodeEvaluator",{gradeNames:["fluid.littleComponent","autoInit"]}),f.enviro.nodeEvaluator.finalInit=function(a){a.clearBuses=function(){var b,c,d,e=a.options.numBuses,f=a.options.blockSize;for(b=0;e>b;b++)for(c=a.buses[b],d=0;f>d;d++)c[d]=0},a.gen=function(){var b,c,d=a.nodes;for(b=0;be;e++)g=m(j[e],k[e]);for(h=e;h1?b.freeVoices.pop():Object.keys(b.activeVoices).length>b.options.maxVoices?null:b.createVoice()},b.init=function(){if(b.options.initVoicesLazily)b.nextFreeVoice=b.lazyVoiceAllocator;else{var a;for(a=0;al;l++)i.push(new Float32Array(j))}else i=new Float32Array(j);return f.invoke(void 0,b.ugen,[c,i,b.options])},f.parse.reservedWords=["id","ugen","rate","inputs","options"],f.parse.specialInputs=["value","buffer","table","envelope"],f.parse.expandUGenDef=function(a){var b,c={};for(b in a)-1===f.parse.reservedWords.indexOf(b)&&(c[b]=a[b],delete a[b]);return a.inputs=c,a},f.parse.ugenDefForConstantValue=function(a){return{ugen:"flock.ugen.value",rate:f.rates.CONSTANT,inputs:{value:a}}},f.parse.expandValueDef=function(a){var b=typeof a;if("number"===b)return f.parse.ugenDefForConstantValue(a);if("object"===b)return a;throw new Error("Invalid value type found in ugen definition. UGenDef was: "+d.prettyPrintJSON(a))},f.parse.rateMap={ar:f.rates.AUDIO,kr:f.rates.CONTROL,sr:f.rates.SCHEDULED,dr:f.rates.DEMAND,cr:f.rates.CONSTANT},f.parse.expandRate=function(a,b){return a.rate=f.parse.rateMap[a.rate]||a.rate,b.overrideRate&&a.rate!==f.rates.CONSTANT&&(a.rate=b.rate),a},f.parse.ugenDef=function(a,b){var c=f.isIterable(a)?f.parse.ugensForDefs:f.parse.ugenForDef,d=c(a,b);return d},f.parse.ugenDef.mergeOptions=function(b){var c=d.defaults(b.ugen)||{};return c=d.copy(c),c.options=c.ugenOptions,delete c.ugenOptions,a.extend(!0,{},c,b)},f.parse.ugensForDefs=function(a,b){var c,d=[];for(c=0;cd?void 0:(b=a.substring(d+1),b=b.toLowerCase(),c=f.file.typeAliases[b],c||b)},f.file.parseMIMEType=function(a){return f.file.mimeTypes[a]},f.file.stringToBuffer=function(a){var b,c=a.length,d=new ArrayBuffer(c),e=new Uint8Array(d);for(b=0;c>b;b++)e[b]=a.charCodeAt(b);return e.buffer},f.file.readBufferFromDataUrl=function(a){var b=a.src,c=b.indexOf(","),d=b.substring(0,c),e=b.substring(c+1),g=d.indexOf(";base64"),h=g>-1,i=b.indexOf("data:")+5,j=h?g:c,k=b.substring(i,j);h&&(e=atob(e)),f.applyDeferred(function(){var b=f.file.stringToBuffer(e);a.success(b,f.file.parseMIMEType(k))})},f.file.readBufferFromFile=function(a){var b=new FileReader;return b.onload=function(b){a.success(b.target.result,f.file.parseFileExtension(a.src.name))},b.readAsArrayBuffer(a.src),b},d.registerNamespace("flock.audio"),f.audio.loadBuffer=function(a){var b=a.src||a.url;if(b){b instanceof ArrayBuffer&&f.applyDeferred(a.success,[b,a.type]);var c=f.audio.loadBuffer.readerForSource(b);c(a)}},f.audio.loadBuffer.readerForSource=function(a){return"undefined"!=typeof File&&a instanceof File?f.file.readBufferFromFile:0===a.indexOf("data:")?f.file.readBufferFromDataUrl:f.net.readBufferFromUrl},f.audio.decode=function(a){var b=a.success,c=function(c,e){var g=f.audio.decoderStrategies,h=g[e]||g["default"];a.decoder&&(h="string"==typeof a.decoder?d.getGlobalValue(a.decoder):a.decoder),h({rawData:c,type:e,success:b,error:a.error,sampleRate:a.sampleRate||(f.enviro.shared?f.enviro.shared.audioSettings.rates.audio:void 0)})};a.success=c,f.audio.loadBuffer(a)},f.audio.decode.webAudio=function(a){var b=f.enviro.shared.audioStrategy.context,c=function(b){var c=f.bufferDesc.fromAudioBuffer(b);a.success(c)};b.decodeAudioData(a.rawData,c,a.error)},f.audio.decoderStrategies={"default":f.audio.decode.webAudio},f.audio.registerDecoderStrategy=function(a,b){if(a)if("object"!=typeof a)"string"==typeof b&&(b=d.getGlobalValue(b)),f.audio.decoderStrategies[a]=b;else for(var c in a)f.audio.decoderStrategies[c]=a[c]}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.shim={URL:"undefined"!=typeof window?window.URL||window.webkitURL||window.msURL:void 0},f.worker=function(a){var b,c,d=typeof a;if("function"===d)a="("+a.toString()+")();";else if("string"!==d)throw new Error("A flock.worker must be initialized with a String or a Function.");return window.Blob?(c=new Blob([a],{type:"text/javascript"}),b=f.shim.URL.createObjectURL(c)):b="data:text/javascript;base64,"+window.btoa(a),new Worker(b)},d.registerNamespace("flock.scheduler"),d.defaults("flock.scheduler.intervalClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),f.scheduler.intervalClock.finalInit=function(a){a.scheduled={},a.schedule=function(b){var c=setInterval(function(){a.events.tick.fire(b)},b);a.scheduled[b]=c},a.clear=function(b){var c=a.scheduled[b];clearInterval(c),delete a.scheduled[b]},a.clearAll=function(){for(var b in a.scheduled)a.clear(b)},a.end=a.clearAll},d.defaults("flock.scheduler.scheduleClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),f.scheduler.scheduleClock.finalInit=function(a){a.scheduled=[],a.schedule=function(b){var c;c=setTimeout(function(){a.clear(c),a.events.tick.fire(b)},b),a.scheduled.push(c)},a.clear=function(b,c){c=void 0===c?a.scheduled.indexOf(b):c,c>-1&&a.scheduled.splice(c,1),clearTimeout(b)},a.clearAll=function(){for(var b=0;b-1&&b.scheduled.splice(c,1),clearTimeout(a)},b.clearAll=function(){for(var a=0;a-1)return a.scheduleClock.events.tick.removeListener(b),void a.scheduleListeners.splice(d,1);a.intervalClock.events.tick.removeListener(b);for(c in a.intervalListeners)d=a.intervalListeners[c].indexOf(b),d>-1&&a.intervalListeners[c].splice(d,1)}},a.clearRepeat=function(b){a.intervalClock.clear(b);var c,d,e=a.intervalListeners[b];if(e){for(c=0;c=c?0:b/c*6e4}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.webAudio"),f.webAudio.createNode=function(a,b,c,e){"string"!=typeof b&&(c=b.args,e=b.params,b=b.node),c=void 0===c||null===c?[]:d.isArrayable(c)?c:[c];var g="create"+b,h=g.indexOf("Node");h>-1&&(g=g.substring(0,h));var i=a[g].apply(a,c);return f.webAudio.initializeNodeInputs(i,e),i},f.webAudio.initializeNodeInputs=function(a,b){if(a&&b){for(var c in b)a[c].value=b[c];return a}},d.registerNamespace("flock.webAudio.chrome"),f.webAudio.chrome.getSources=function(a){return MediaStreamTrack.getSources(function(b){var c=d.transform(b,function(a){return a.deviceId=a.id,a});a(c)})},f.webAudio.mediaStreamFailure=function(){f.fail("Media Capture and Streams are not supported on this browser.")};var a={AudioContext:window.AudioContext||window.webkitAudioContext,getUserMediaImpl:navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||f.webAudio.mediaStreamFailure,getUserMedia:function(){f.shim.getUserMediaImpl.apply(navigator,arguments)},getMediaDevicesImpl:navigator.getMediaDevices?navigator.getMediaDevices:"undefined"!=typeof window.MediaStreamTrack?f.webAudio.chrome.getSources:f.webAudio.mediaStreamFailure,getMediaDevice:function(){f.shim.getMediaDevicesImpl.apply(navigator,arguments)}};b.extend(f.shim,a),d.defaults("flock.audioStrategy.web",{gradeNames:["flock.audioStrategy","autoInit"],members:{context:"{contextWrapper}.context",sampleRate:"{that}.context.sampleRate",chans:{expander:{funcName:"flock.audioStrategy.web.calculateChannels",args:["{contextWrapper}.context","{enviro}.options.audioSettings.chans"]}},jsNode:{expander:{funcName:"flock.audioStrategy.web.createScriptProcessor",args:["{contextWrapper}.context","{enviro}.options.audioSettings.bufferSize","{enviro}.options.audioSettings.numInputBuses","{that}.chans"]}}},model:{isGenerating:!1,shouldInitIOS:f.platform.isIOS,krPeriods:{expander:{funcName:"flock.audioStrategy.web.calcNumKrPeriods",args:"{enviro}.options.audioSettings"}}},invokers:{start:{func:"{that}.events.onStart.fire"},stop:{func:"{that}.events.onStop.fire"},reset:{func:"{that}.events.onReset.fire"}},components:{contextWrapper:{type:"flock.webAudio.contextWrapper"},nativeNodeManager:{type:"flock.webAudio.nativeNodeManager"},inputDeviceManager:{type:"flock.webAudio.inputDeviceManager"}},events:{onStart:null,onStop:null,onReset:null},listeners:{onCreate:[{funcName:"flock.audioStrategy.web.setChannelState",args:["{that}.chans","{contextWrapper}.context.destination"]},{funcName:"flock.audioStrategy.web.pushAudioSettings",args:["{that}.sampleRate","{that}.chans","{enviro}.options.audioSettings"]},{funcName:"flock.audioStrategy.web.bindWriter",args:["{that}.jsNode","{nodeEvaluator}","{nativeNodeManager}","{that}.model","{enviro}.options.audioSettings"]}],onStart:[{func:"{that}.applier.change",args:["isGenerating",!0]},{funcName:"flock.audioStrategy.web.iOSStart",args:["{that}.model","{that}.applier","{contextWrapper}.context","{that}.jsNode"]},{func:"{nativeNodeManager}.connect"}],onStop:[{func:"{that}.applier.change",args:["isGenerating",!1]},{func:"{nativeNodeManager}.disconnect"}],onReset:[{func:"{that}.stop"},{func:"{nativeNodeManager}.removeAllInputs"},{func:"{that}.applier.change",args:["playState.written",0]}]}}),f.audioStrategy.web.calculateChannels=function(a,b){return f.platform.browser.safari?a.destination.channelCount:Math.min(b,a.destination.maxChannelCount)},f.audioStrategy.web.pushAudioSettings=function(a,b,c){c.rates.audio=a,c.chans=b},f.audioStrategy.web.setChannelState=function(a,b){f.platform.browser.safari||(b.channelCount=a,b.channelCountMode="explicit",b.channelInterpretation="discrete")},f.audioStrategy.web.calcNumKrPeriods=function(a){return a.bufferSize/a.blockSize},f.audioStrategy.web.createScriptProcessor=function(a,b,c,d){var e=a.createScriptProcessor?"createScriptProcessor":"createJavaScriptNode",f=a[e](b,c,d);return f.channelCountMode="explicit",f},f.audioStrategy.web.bindWriter=function(a,b,c,d,e){a.model=d,a.evaluator=b,a.audioSettings=e,a.inputNodes=c.inputNodes,a.onaudioprocess=f.audioStrategy.web.writeSamples},f.audioStrategy.web.writeSamples=function(a){var b,c,d,e=this.model,g=this.inputNodes.length,h=this.evaluator,i=this.audioSettings,j=a.inputBuffer,k=a.outputBuffer,l=e.krPeriods,m=h.buses,n=i.blockSize,o=i.chans,p=j.numberOfChannels;if(h.nodes.length<1)for(b=0;o>b;b++)f.generate.silence(k.getChannelData(b));else for(c=0;l>c;c++){var q=c*n;if(h.clearBuses(),g>0)for(b=0;p>b;b++){var r=j.getChannelData(b),s=o+b,t=m[s];for(d=0;n>d;d++)t[d]=r[d+q]}for(h.gen(),b=0;o>b;b++){var u=m[b],v=k.getChannelData(b);for(d=0;n>d;d++)v[d+q]=u[d]}}},f.audioStrategy.web.iOSStart=function(a,b,c,d){if(a.shouldInitIOS){var e=c.createBufferSource();e.connect(d),e.start(0),e.stop(0),e.disconnect(0),b.change("shouldInitIOS",!1)}},d.defaults("flock.webAudio.contextWrapper",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"@expand:flock.webAudio.contextWrapper.create()"},listeners:{onCreate:[{funcName:"flock.webAudio.contextWrapper.registerSingleton",args:["{that}"]}]}}),f.webAudio.contextWrapper.create=function(){var a=d.staticEnvironment.webAudioContextWrapper;return a?a.context:new f.shim.AudioContext},f.webAudio.contextWrapper.registerSingleton=function(a){d.staticEnvironment.webAudioContextWrapper=a},d.defaults("flock.webAudio.nativeNodeManager",{gradeNames:["fluid.eventedComponent","autoInit"],audioSettings:"{enviro}.options.audioSettings",members:{outputNode:void 0,inputNodes:[],merger:{expander:{funcName:"flock.webAudio.nativeNodeManager.createInputMerger",args:["{contextWrapper}.context","{enviro}.options.audioSettings.numInputBuses","{web}.jsNode"]}}},invokers:{connect:{funcName:"flock.webAudio.nativeNodeManager.connect",args:["{that}.merger","{web}.jsNode","{that}.outputNode","{contextWrapper}.context.destination"]},createNode:{funcName:"flock.webAudio.createNode",args:["{contextWrapper}.context","{arguments}.0","{arguments}.1","{arguments}.2"]},createInputNode:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2","{arguments}.3"]},createMediaStreamInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaStreamSource","{arguments}.0",void 0,"{arguments}.1"]},createMediaElementInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaElementSource","{arguments}.0",void 0,"{arguments}.1"]},createOutputNode:{funcName:"flock.webAudio.nativeNodeManager.createOutputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},disconnect:{funcName:"flock.webAudio.nativeNodeManager.disconnect",args:["{that}.merger","{web}.jsNode","{that}.outputNode"]},insertInput:{funcName:"flock.webAudio.nativeNodeManager.insertInput",args:["{that}","{enviro}","{arguments}.0","{arguments}.1"]},removeInput:{funcName:"flock.webAudio.nativeNodeManager.removeInput",args:["{arguments}.0","{that}.inputNodes"]},removeAllInputs:{funcName:"flock.webAudio.nativeNodeManager.removeAllInputs",args:"{that}.inputNodes"},insertOutput:{funcName:"flock.webAudio.nativeNodeManager.insertOutput",args:["{that}","{arguments}.0"]},removeOutput:{funcName:"flock.webAudio.nativeNodeManager.removeOutput",args:["{web}.jsNode"]}},listeners:{onCreate:{func:"{that}.insertOutput",args:"{web}.jsNode"}}}),f.webAudio.nativeNodeManager.createInputNode=function(a,b,c,d,e){var f=a.createNode(b,c,d);
return a.insertInput(f,e)},f.webAudio.nativeNodeManager.createOutputNode=function(a,b,c,d){var e=a.createNode(b,c,d);return a.insertOutput(e)},f.webAudio.nativeNodeManager.createInputMerger=function(a,b,c){var d=a.createChannelMerger(b);return d.channelInterpretation="discrete",d.connect(c),d},f.webAudio.nativeNodeManager.connect=function(a,b,c,d){a.connect(b),c.connect(d),b!==c&&b.connect(c)},f.webAudio.nativeNodeManager.disconnect=function(a,b,c){a.disconnect(0),b.disconnect(0),c.disconnect(0)},f.webAudio.nativeNodeManager.removeAllInputs=function(a){for(var b=0;b=e)return void f.fail("There are too many input nodes connected to Flocking. The maximum number of input buses is currently set to "+e+". Either remove an existing input node or increase Flockings numInputBuses option.");d=void 0===d?b.acquireNextBus("input"):d;var g=d-b.audioSettings.chans;return a.inputNodes.push(c),c.connect(a.merger,0,g),d},f.webAudio.nativeNodeManager.removeInput=function(a,b){var c=b.indexOf(a);c>-1&&b.splice(c,1),a.disconnect(0)},f.webAudio.nativeNodeManager.insertOutput=function(a,b){return a.outputNode&&a.outputNode.disconnect(0),a.outputNode=b,b},f.webAudio.nativeNodeManager.removeOutput=function(a){f.webAudio.nativeNodeManager.insertOutput(a)},d.defaults("flock.webAudio.inputDeviceManager",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"{contextWrapper}.context"},invokers:{openAudioDevice:{funcName:"flock.webAudio.inputDeviceManager.openAudioDevice",args:["{arguments}.0","{that}.openAudioDeviceWithId","{that}.openFirstAudioDeviceWithLabel","{that}.openAudioDeviceWithConstraints"]},openAudioDeviceWithConstraints:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithConstraints",args:["{that}.context","{enviro}","{nativeNodeManager}.createMediaStreamInput","{arguments}.0"]},openAudioDeviceWithId:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithId",args:["{arguments}.0","{that}.openAudioDeviceWithConstraints"]},openFirstAudioDeviceWithLabel:{funcName:"flock.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel",args:["{arguments}.0","{that}.openAudioDeviceWithId"]}}}),f.webAudio.inputDeviceManager.openAudioDevice=function(a,b,c,d){if(a){if(a.id)return b(a.id);if(a.label)return c(a.label)}return d()},f.webAudio.inputDeviceManager.openAudioDeviceWithId=function(a,b){var c={audio:{optional:[{sourceId:a}]}};b(c)},f.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel=function(a,b){a&&f.shim.getMediaDevices(function(c){var e=c.filter(function(b){return b.label.toLowerCase()===a.toLowerCase()?!0:void 0});e.length>0?b(e[0].deviceId):d.log(d.logLevel.IMPORTANT,"An audio device named '"+a+"' could not be found.")})},f.webAudio.inputDeviceManager.openAudioDeviceWithConstraints=function(a,b,c,e){function g(a){d.log(d.logLevel.IMPORTANT,"An error occurred while trying to access the user's microphone. "+a)}function h(a){c(a,i)}e=e||{audio:!0};var i=b.acquireNextBus("input");return f.shim.getUserMedia(e,h,g),i},d.demands("flock.audioStrategy.platform","flock.platform.webAudio",{funcName:"flock.audioStrategy.web"})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery"),b=f.requireModule("DSP","dspapi"),c=f.requireModule("Filter","dspapi");f.aliasUGen=function(b,c,e,g){var h=f.get(b);f.set(h,c,function(b,c,d){return d=a.extend(!0,{},g,d),h(b,c,d)}),d.defaults(b+"."+c,e)},f.aliasUGens=function(a,b){var c,d;for(c in b)d=b[c],f.aliasUGen(a,c,{inputs:d.inputDefaults},d.options)},f.krMul=function(a,b,c){var d,e=c.output[0];for(d=0;a>d;d++)b[d]=b[d]*e},f.mul=function(a,b,c){var d,e=c.output;for(d=0;a>d;d++)b[d]=b[d]*e[d]},f.krAdd=function(a,b,c,d){var e,f=d.output[0];for(e=0;a>e;e++)b[e]=b[e]+f},f.add=function(a,b,c,d){var e,f=d.output;for(e=0;a>e;e++)b[e]=b[e]+f[e]},f.krMulAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f+g[e]},f.mulKrAdd=function(a,b,c,d){var e,f=c.output,g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f[e]+g},f.krMulKrAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f+g},f.mulAdd=function(a,b,c,d){var e,f=c.output,g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f[e]+g[e]},f.onMulAddInputChanged=function(a){var b,c=a.inputs.mul,d=a.inputs.add;return c||d?(b=c?d?c.rate!==f.rates.AUDIO?d.rate!==f.rates.AUDIO?f.krMulKrAdd:f.krMulAdd:d.rate!==f.rates.AUDIO?f.mulKrAdd:f.mulAdd:c.rate!==f.rates.AUDIO?f.krMul:f.mul:d.rate!==f.rates.AUDIO?f.krAdd:f.add,void(a.mulAdd=function(e){b(e,a.output,c,d)})):void(a.mulAdd=f.noOp)},f.ugen=function(a,b,c){c=c||{};var e={rate:c.rate||f.rates.AUDIO,inputs:a,output:b,options:c,model:c.model||{value:0},multiInputs:{},tags:["flock.ugen"]};return e.lastOutputIdx=e.output.length-1,e.get=function(a){return f.input.get(e.inputs,a)},e.set=function(a,b){return f.input.set(e.inputs,a,b,e,function(a){return null!==a&&void 0!==a?f.parse.ugenDef(a,{audioSettings:e.options.audioSettings,buses:e.options.audioSettings.buses,buffers:e.options.audioSettings.buffers}):void 0})},e.input=function(a,b){return a?"string"==typeof a?arguments.length<2?e.get(a):e.set(a,b):f.isIterable(a)?e.get(a):e.set(a,b):void 0},e.calculateStrides=function(){var a,b,c,g=e.model,h=e.options.strideInputs,i=e.inputs;if(g.strides=g.strides||{},h)for(a=0;ae;e++)b[e]=c.unscaled;d.mulAdd(a),c.value=b[a-1]},d.onInputChanged=function(){var a=d.inputs,b=d.model;b.unscaled=a.value,d.gen="constant"!==d.rate?d.dynamicGen:void 0,f.onMulAddInputChanged(d),d.dynamicGen(1)},d.onInputChanged(),d},d.defaults("flock.ugen.value",{rate:"control",inputs:{value:1,mul:null,add:null},ugenOptions:{model:{unscaled:1,value:1},tags:["flock.ugen.valueType"]}}),f.ugen.silence=function(a,b,c){var d=f.ugen(a,b,c);return d.onInputChanged=function(){for(var a=0;ab;b++)e[b]=0;d.mulAdd(a),d.model.value=e[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.passThrough",{rate:"audio",inputs:{source:null,mul:null,add:null}}),f.ugen.change=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){for(var b,c=d.model,e=d.inputs.initial.output,f=c.strides.initial,g=d.inputs.target.output,h=c.strides.target,i=d.output,j=c.samplesLeft,k=c.crossfadeLevel,l=0,m=0,n=0;a>l;l++,m+=f,n+=h)j>0?(b=e[m],j--):k>0?(b=e[m]*k+g[n]*(1-k),k-=c.crossfadeStepSize):b=g[n],i[l]=b;c.samplesLeft=j,c.crossfadeLevel=k,c.value=b},d.onInputChanged=function(a){var b=d.model,c=d.inputs;"time"!==a&&a||(b.samplesLeft=Math.round(c.time.output[0]*b.sampleRate)),"crossfade"!==a&&a||(b.crossfadeStepSize=1/Math.round(c.crossfade.output[0]*b.sampleRate),b.crossfadeLevel=c.crossfade.output[0]>0?1:0),d.calculateStrides()},d.onInputChanged(),d},d.defaults("flock.ugen.change",{rate:"audio",inputs:{initial:0,target:0,time:0,crossfade:0},ugenOptions:{model:{samplesLeft:0,crossfadeStepSize:0,crossfadeLevel:0,value:0},strideInputs:["initial","target"]}}),f.ugen.valueChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.source.output,h=d.output;for(b=0,c=0;a>b;b++,c+=f.strides.source)e=g[c],h[b]=e!==f.prevVal?1:0,f.prevVal=e;f.value=e},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevVal=null)},d.calculateStrides(),d},d.defaults("flock.ugen.valueChangeTrigger",{rate:"control",inputs:{source:0},ugenOptions:{model:{value:0,prevVal:0},strideInputs:["source"]}}),f.ugen.inputChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h=d.model,i=d.inputs.source.output,j=h.strides.source,k=d.inputs.duration.output,l=h.strides.duration,m=h.prevDur,n=d.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)f=i[c],g=k[e],g!==m&&(h.prevDur=g,h.remainingOpenSamples=f>0?g>0?h.sampleRate*g:1:0),h.remainingOpenSamples>0?(n[b]=f,h.remainingOpenSamples--):n[b]=0;h.value=n[a-1]},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevDur=null)},d.calculateStrides(),d},d.defaults("flock.ugen.inputChangeTrigger",{rate:"control",inputs:{source:0,duration:0},ugenOptions:{model:{value:0,prevDuration:0,remainingOpenSamples:0},strideInputs:["source","duration"]}}),f.ugen.triggerCallback=function(a,b,c){var e=f.ugen(a,b,c);return e.gen=function(a){var b,c,d,f,g,h=e.model,i=e.options,j=e.output,k=e.inputs,l=h.strides.trigger,m=h.strides.source,n=k.trigger.output,o=k.source.output,p=i.callback,q=p.func,r=p.args,s=p.this,t=h.lastArgIdx,u=h.prevTrig;for(b=c=d=0;a>b;b++,c+=l,d+=m)f=n[c],g=o[d],f>0&&0>=u&&q&&(r[t]=g,q.apply(s,r)),j[b]=g,u=f;h.prevTrig=u,h.value=g},e.onInputChanged=function(){var a=e.options,b=e.model,c=a.callback,f=c.funcName;if(f)c.func=d.getGlobalValue(f);else if(c.this&&c.method){if("string"!=typeof c.this)throw new Error("flock.ugen.triggerCallback doesn't support raw 'this' objects.Use a global key path instead.");c.this="string"==typeof c.this?d.getGlobalValue(c.this):c.this,c.func=d.get(c.this,c.method)}b.lastArgIdx=c.args.length,e.calculateStrides()},e.onInputChanged(),e},d.defaults("flock.ugen.triggerCallback",{rate:"audio",inputs:{source:0,trigger:0},ugenOptions:{model:{value:0,funcName:void 0,lastArgIdx:0},callback:{"this":void 0,method:void 0,func:void 0,args:[]},strideInputs:["source","trigger"]}}),f.ugen.math=function(a,c,d){var e=f.ugen(a,c,d);return e.expandedSource=new Float32Array(e.options.audioSettings.blockSize),e.krSourceKrInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,g=f.generate(e.expandedSource,e.inputs.source.output[0]);b[a](d,g,c.output[0]),e.model.value=d[d.length-1]},e.krSourceArInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,g=f.generate(e.expandedSource,e.inputs.source.output[0]);b[a](d,g,c.output),e.model.value=d[d.length-1]},e.arSourceKrInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output,f=e.inputs.source.output;b[a](d,f,c.output[0]),e.model.value=d[d.length-1]},e.arSourceArInputGen=function(){var a=e.activeInput,c=e.inputs[a],d=e.output;b[a](e.output,e.inputs.source.output,c.output),e.model.value=d[d.length-1]},e.onInputChanged=function(){var a,b,c,d=Object.keys(e.inputs);for(a=0;ab;b++)c[b]=e[b]},d.sumGen=function(a){var b,c,e,f=d.inputs.sources,g=d.output;for(b=0;a>b;b++){for(e=0,c=0;cb;b++,c+=g.strides.phase,e+=g.strides.freq)f=p+j[c]*n,f>=l?f-=l:0>f&&(f+=l),o[b]=d.interpolate(f,k),p+=i[e]*m,p>=l?p-=l:0>p&&(p+=l);g.phase=p,d.mulAdd(a),g.value=o[a-1]},d.onInputChanged=function(a){if(f.ugen.osc.onInputChanged(d),!a||"table"===a){var b=d.model,c=d.inputs.table;c.length<1&&(c=d.inputs.table=f.ugen.osc.emptyTable),b.tableLen=c.length,b.tableIncHz=b.tableLen/b.sampleRate,b.tableIncRad=b.tableLen/f.TWOPI}},d.onInputChanged(),d},f.ugen.osc.emptyTable=new Float32Array([0,0,0]),f.ugen.osc.onInputChanged=function(a){a.calculateStrides(),f.onMulAddInputChanged(a)},d.defaults("flock.ugen.osc",{rate:"audio",inputs:{freq:440,phase:0,table:[],mul:null,add:null},ugenOptions:{interpolation:"linear",model:{phase:0,value:0},strideInputs:["freq","phase"]},tableSize:8192}),f.ugen.osc.define=function(a,b){var c=a.lastIndexOf("."),e=a.substring(0,c),g=a.substring(c+1),h=f.get(e);h[g]=function(a,c,e){var g=d.defaults("flock.ugen.osc"),h=d.merge(null,g,e),i=h.tableSize;return a.table=f.fillTable(i,b),f.ugen.osc(a,c,e)},d.defaults(a,d.defaults("flock.ugen.osc"))},f.ugen.osc.define("flock.ugen.sinOsc",f.tableGenerators.sin),f.ugen.osc.define("flock.ugen.triOsc",f.tableGenerators.tri),f.ugen.osc.define("flock.ugen.sawOsc",f.tableGenerators.saw),f.ugen.osc.define("flock.ugen.squareOsc",f.tableGenerators.square),f.ugen.sin=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.freq.output,i=d.inputs.phase.output,j=d.output,k=g.phase,l=g.sampleRate;for(b=0,c=0,e=0;a>b;b++,c+=g.strides.phase,e+=g.strides.freq)j[b]=Math.sin(k+i[c]),k+=h[e]/l*f.TWOPI;g.phase=k,d.mulAdd(a),g.value=j[a-1]},d.onInputChanged=function(){f.ugen.osc.onInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.sin",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,value:0},strideInputs:["freq","phase"]}}),f.ugen.lfSaw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.inputs.freq.output,g=d.output,h=e.scale,i=d.inputs.phase.output[0],j=e.phase;for(b=0,c=0;a>b;b++,c+=e.strides.freq)g[b]=j+i,j+=f[c]*h,j>=1?j-=2:-1>=j&&(j+=2);e.phase=j,d.mulAdd(a),e.value=g[a-1]},d.onInputChanged=function(){var a=d.model;a.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,a.phase=0,d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=2*(1/d.options.sampleRate),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.lfSaw",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,value:0},strideInputs:["freq"]}}),f.ugen.lfPulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.inputs,f=d.model,g=e.freq.output,h=f.freqInc,i=e.width.output[0],j=d.output,k=f.scale,l=void 0!==f.phase?f.phase:e.phase.output[0];for(b=0,c=0;a>b;b++,c+=h)l>=1?(l-=1,j[b]=.5>i?1:-1):j[b]=i>l?1:-1,l+=g[c]*k;f.phase=l,d.mulAdd(a),f.value=j[a-1]},d.onInputChanged=function(){d.model.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.options.sampleRate,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.lfPulse",{rate:"audio",inputs:{freq:440,phase:0,width:.5,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,value:0}}}),f.ugen.impulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.inputs,g=d.model,h=d.output,i=f.freq.output,j=g.strides.freq,k=f.phase.output[0],l=g.phase,m=g.scale;for(l+=k,b=0,c=0;a>b;b++,c+=j)l>=1?(l-=1,e=1):e=0,h[b]=e,l+=i[c]*m;g.phase=l-k,d.mulAdd(a),g.value=h[a-1]},d.onInputChanged=function(){d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.model.sampleRate,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.impulse",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,scale:0,value:0},strideInputs:["freq"]}}),f.ugen.t2a=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){for(var a=d.model,b=d.inputs.source.output[0],c=0|d.inputs.offset.output[0],e=d.output,f=0;f0&&a.prevTrig<=0&&(e[c]=b),a.prevTrig=b,a.value=e[e.length-1]},d},d.defaults("flock.ugen.t2a",{rate:"audio",inputs:{source:null,offset:0},ugenOptions:{model:{prevTrig:0,value:0}}}),f.ugen.latch=function(a,b,c){var d=f.ugen(a,b,c);return d.arGen=function(a){var b,c,e,f=d.model,g=d.inputs,h=g.source.output,i=g.trigger,j=f.strides.source,k=d.output;for(void 0===f.holdVal&&(f.holdVal=h[0]),b=0,c=0;a>b;b++,c+=j)e=i.output[b],k[b]=e>0&&f.prevTrig<=0?f.holdVal=h[c]:f.holdVal,f.prevTrig=e;d.mulAdd(a),f.value=k[a-1]},d.krGen=function(a){var b,c=d.model,e=d.output,f=d.inputs.trigger.output[0];for((void 0===c.holdVal||f>0&&c.prevTrig<=0)&&(c.holdVal=d.inputs.source.output[0]),c.prevTrig=f,b=0;a>b;b++)e[b]=c.holdVal;d.mulAdd(a),c.value=e[a-1]},d.onInputChanged=function(){d.calculateStrides(),d.gen=d.inputs.trigger.rate===f.rates.AUDIO?d.arGen:d.krGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.latch",{rate:"audio",inputs:{source:null,trigger:0,mul:null,add:null},ugenOptions:{strideInputs:["source"],model:{prevTrig:0,value:0}}}),f.ugen.buffer=function(a){a.onBufferInputChanged=function(b){var c=a.model,d=a.inputs;(c.bufDef!==d.buffer||"buffer"===b)&&(c.bufDef=d.buffer,f.parse.bufferForDef(c.bufDef,a,f.enviro.shared))},a.setBuffer=function(b){a.buffer=b,a.onBufferReady&&a.onBufferReady(b)},a.initBuffer=function(){a.buffer=a.model.bufDef=f.bufferDesc({format:{sampleRate:a.options.audioSettings.rates.audio},data:{channels:[new Float32Array(a.output.length)]}})}},f.ugen.playBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.crRegularSpeedGen=function(b){var c,e,f,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.buffer.data.channels[i],k=a.trigger.output,l=g.idx,m=j.length,n=d.inputs.loop.output[0],o=d.inputs.start.output[0]*m|0,p=d.inputs.end.output[0]*m|0;for(c=0,e=0;b>c;c++,e+=g.strides.trigger){if(k[e]>0&&g.prevTrig<=0)l=o;else if(l>=p){if(!(n>0)){h[c]=0;continue}l=o}g.prevTrig=k[e],f=d.interpolate(l,j),h[c]=f,l+=g.stepSize}g.idx=l,d.mulAdd(b),g.value=h[b-1]},d.krSpeedGen=function(b){var c,e,f,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.inputs.speed.output[0],k=d.buffer.data.channels[i],l=a.trigger.output,m=g.idx,n=k.length,o=d.inputs.loop.output[0],p=d.inputs.start.output[0]*n|0,q=d.inputs.end.output[0]*n|0;for(c=0,e=0;b>c;c++,e+=g.strides.trigger){if(l[e]>0&&g.prevTrig<=0)m=p;else if(m>=q){if(!(o>0)){h[c]=0;continue}m=p}g.prevTrig=l[e],f=d.interpolate(m,k),h[c]=f,m+=g.stepSize*j}g.idx=m,d.mulAdd(b),g.value=h[b-1]},d.onInputChanged=function(a){var b=d.inputs,c=b.speed;d.onBufferInputChanged(a),d.gen=c.rate===f.rates.CONSTANT&&1===c.output[0]?d.crRegularSpeedGen:d.krSpeedGen,d.calculateStrides(),f.onMulAddInputChanged(d)},d.onBufferReady=function(){var a=d.model,b=d.inputs.end.output[0],c=d.inputs.channel.output[0],e=d.buffer.data.channels[c];a.idx=b*e.length|0,a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.playBuffer",{rate:"audio",inputs:{channel:0,loop:0,speed:1,start:0,end:1,trigger:1,buffer:null,mul:null,add:null},ugenOptions:{model:{value:0,idx:0,stepSize:0,prevTrig:0,channel:void 0},strideInputs:["trigger"],interpolation:"linear"}}),f.ugen.readBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g=d.model,h=g.strides.phase,i=d.output,j=d.inputs.channel.output[0],k=d.inputs.phase.output,l=d.buffer.data.channels[j],m=l.length;for(b=e=0;a>b;b++,e+=h)c=k[e]*m,f=d.interpolate(c,l),i[b]=f;d.mulAdd(a),g.value=i[a-1]},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.readBuffer",{rate:"audio",inputs:{buffer:null,channel:0,phase:0,mul:null,add:null},ugenOptions:{model:{channel:void 0,value:0},strideInputs:["phase"],interpolation:"linear"}}),f.ugen.bufferDuration=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.inputs.channel.output[0],f=d.buffer.data.channels[e],g=d.buffer.format.sampleRate;for(b=0;a>b;b++)d.output[b]=c.value=f.length/g},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferDuration",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{value:0}}}),f.ugen.bufferLength=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.inputs.channel.output[0],f=d.buffer.data.channels[e];for(b=0;a>b;b++)d.output[b]=c.value=f.length},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferLength",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{value:0}}}),f.ugen.bufferPhaseStep=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.output,e=d.model.value;for(b=0;a>b;b++)c[b]=e;d.mulAdd(a)},d.onInputChanged=function(a){d.onBufferInputChanged(a),f.onMulAddInputChanged(d)},d.onBufferReady=function(a){var b=d.model,c=d.inputs.channel.output[0],e=a.data.channels[c],f=d.options.audioSettings.rates.audio,g=d.buffer.format.sampleRate||f;b.scale=g/f,d.output[0]=b.value=1/(e.length*b.scale)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=d.model.value=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferPhaseStep",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{scale:1,value:0}}}),f.ugen.sampleRate=function(a,b,c){var d=f.ugen(a,b,c);return d.output[0]=d.options.audioSettings.rates.audio,d},d.defaults("flock.ugen.sampleRate",{rate:"constant",inputs:{}}),f.ugen.dust=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(b){var c,e,f,g,h=d.model,i=d.output,j=a.density.output[0];for(j!==h.density?(h.density=j,c=h.threshold=j*h.sampleDur,e=h.scale=c>0?1/c:0):(c=h.threshold,e=h.scale),g=0;b>g;g++)f=Math.random(),i[g]=c>f?f*e:0;d.mulAdd(b),h.value=i[b-1]},d.onInputChanged(),d},d.defaults("flock.ugen.dust",{rate:"audio",inputs:{density:1,mul:null,add:null},ugenOptions:{model:{density:0,scale:0,threshold:0,value:0}}}),f.ugen.whiteNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.output;for(b=0;a>b;b++)c[b]=Math.random();d.mulAdd(a),d.model.value=c[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.whiteNoise",{rate:"audio",inputs:{mul:null,add:null}}),f.ugen.pinkNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g=d.model,h=g.state,i=d.a,j=d.p,k=g.offset,l=d.output;for(b=0;a>b;b++){for(f=0,c=0;c.001?g:.001;do for(f.counter<=0&&(f.counter=f.sampleRate/g,f.counter=f.counter>1?f.counter:1,"linear"===d.options.interpolation?(f.start=f.unscaled=f.end,f.end=Math.random(),f.ramp=f.ramp=(f.end-f.start)/f.counter):(f.start=f.unscaled=Math.random(),f.ramp=0)),c=he;e++)i[j]=f.unscaled,f.unscaled+=f.ramp,j++;while(h);d.mulAdd(b),f.value=i[b-1]},d.input=function(){d.model.end=Math.random(),d.onInputChanged()},d.input(),d},d.defaults("flock.ugen.lfNoise",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{counter:0,level:0,unscaled:0,value:0}}}),f.ugen.random=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.generator,e=d.output;for(b=0;a>b;b++)e[b]=c.uniform(-1,1);d.mulAdd(a),d.model.value=e[a-1]},d.onInputChanged=function(a){"seed"===a&&d.initGenerator(),f.onMulAddInputChanged(d)},d.initGenerator=function(){var a=d.inputs.seed;d.generator=a?new e(a):new e},d.init=function(){d.initGenerator(),d.calculateStrides(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.random",{rate:"audio",inputs:{seed:null,mul:null,add:null}}),f.ugen.random.exponential=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.inputs.lambda.output,h=d.model.strides.lambda;for(b=c=0;a>b;b++,c+=h)f[b]=e.exponential(g[c]);d.mulAdd(a),d.model.value=f[a-1]},d},d.defaults("flock.ugen.random.exponential",{rate:"audio",inputs:{seed:null,lambda:1,mul:null,add:null},ugenOptions:{strideInputs:["lambda"]}}),f.ugen.random.gamma=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.generator,i=d.output,j=f.strides.alpha,k=g.alpha.output,l=f.strides.beta,m=g.beta.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)i[b]=h.gamma(k[c],m[e]);d.mulAdd(a),f.value=i[a-1]},d},d.defaults("flock.ugen.random.gamma",{rate:"audio",inputs:{seed:null,alpha:1,beta:2,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),f.ugen.random.normal=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.output,h=d.inputs,i=d.generator,j=f.strides.mu,k=h.mu.output,l=f.strides.sigma,m=h.sigma.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)g[b]=i.normal(k[c],m[e]);d.mulAdd(a),f.value=g[a-1]},d},d.defaults("flock.ugen.random.normal",{rate:"audio",inputs:{seed:null,mu:0,sigma:1,mul:null,add:null},ugenOptions:{strideInputs:["mu","sigma"]}}),f.ugen.random.pareto=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.model.strides.alpha,h=d.inputs.alpha.output;for(b=c=0;a>b;b++,c+=g)f[b]=e.pareto(h[c]);d.mulAdd(a),d.model.value=f[a-1]},d},d.defaults("flock.ugen.random.pareto",{rate:"audio",inputs:{seed:null,alpha:5,mul:null,add:null},ugenOptions:{strideInputs:["alpha"]}}),f.ugen.random.triangular=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e=d.generator,f=d.output,g=d.model.strides.mode,h=d.inputs.mode.output;for(b=c=0;a>b;b++,c+=g)f[b]=e.triangular(-1,1,h[c]);d.mulAdd(a),d.model.value=f[a-1]},d},d.defaults("flock.ugen.random.triangular",{rate:"audio",inputs:{seed:null,mode:.5,mul:null,add:null},ugenOptions:{strideInputs:["mode"]}}),f.ugen.random.weibull=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.generator,i=d.output,j=f.strides.alpha,k=g.alpha.output,l=f.strides.beta,m=g.beta.output;for(b=c=e=0;a>b;b++,c+=j,e+=l)i[b]=h.weibull(k[c],m[e]);d.mulAdd(a),f.value=i[a-1]},d},d.defaults("flock.ugen.random.weibull",{rate:"audio",inputs:{seed:null,alpha:1,beta:1,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),f.ugen.phasor=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs,h=d.output,i=g.step.output,j=g.trigger.output;for(void 0===f.unscaled&&(f.unscaled=g.start.output[0]),b=0,c=0,e=0;a>b;b++,c+=f.strides.trigger,e+=f.strides.step)j[c]>0&&f.prevTrig<=0&&(f.unscaled=g.reset.output[0]),f.prevTrig=j[c],f.unscaled>=g.end.output[0]&&(f.unscaled=g.start.output[0]),h[b]=f.unscaled,f.unscaled+=i[e];d.mulAdd(a),f.value=h[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.phasor",{rate:"control",inputs:{start:0,end:1,reset:0,step:.1,trigger:0,mul:null,add:null},ugenOptions:{model:{unscaled:void 0,value:0},strideInputs:["trigger","step"]}}),f.ugen.amplitude=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.source.output,i=d.output,j=g.attackTime,k=d.inputs.attack.output[0],l=g.releaseTime,m=d.inputs.release.output[0],n=g.prevVal,o=g.attackCoef,p=g.releaseCoef;for(k!==j&&(g.attackTime=k,o=g.attackCoef=0===k?0:Math.exp(f.LOG01/(k*g.sampleRate))),m!==l&&(g.releaseTime=m,p=g.releaseCoef=0===m?0:Math.exp(f.LOG01/(m*g.sampleRate))),b=0;a>b;b++)c=Math.abs(h[b]),e=n>c?p:o,i[b]=n=c+(n-c)*e;g.prevVal=n,d.mulAdd(a),g.value=i[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.amplitude",{rate:"audio",inputs:{source:null,attack:.01,release:.01,mul:null,add:null},ugenOptions:{model:{prevVal:0,value:0}}}),f.ugen.normalize=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){var a=d.output,b=d.inputs.max.output[0],c=d.inputs.source.output;f.normalize(c,b,a),d.model.value=a[a.length-1]},d.onInputChanged(),d},d.defaults("flock.ugen.normalize",{rate:"audio",inputs:{max:1,source:null}}),f.ugen.gate=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=f.strides,h=d.output,i=d.inputs,j=i.source.output,k=i.sideChain.output,l=g.sideChain,m=i.threshold.output,n=g.threshold,o=d.options.holdLastValue,p=f.lastValue;for(b=c=e=0;a>b;b++,c+=l,e+=n)h[b]=k[c]>=m[e]?p=j[b]:o?p:0;f.lastValue=p,d.mulAdd(a),f.value=h[a-1]},d.onInputChanged=function(){d.inputs.sideChain||(d.inputs.sideChain=d.inputs.source),f.onMulAddInputChanged(d),d.calculateStrides()},d.onInputChanged(),d},d.defaults("flock.ugen.gate",{rate:"audio",inputs:{source:null,sideChain:null,threshold:Number.MIN_VALUE,mul:null,add:null},ugenOptions:{model:{value:0,lastValue:0},holdLastValue:!1,strideInputs:["sideChain","threshold"]}}),f.ugen.pan2=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=i[0],k=i[1],l=d.inputs,m=l.source.output,n=l.pan.output;for(b=0,c=0;a>b;b++,c+=h.strides.pan)e=m[b],g=.5*n[c]+.5,k[b]=e*Math.sin(g*f.HALFPI),j[b]=e*Math.cos(g*f.HALFPI);var o=a-1;h.value[0]=i[0][o],h.value[1]=i[1][o]},d.onInputChanged(),d},d.defaults("flock.ugen.pan2",{rate:"audio",inputs:{source:null,pan:0},ugenOptions:{model:{value:[]},tags:["flock.ugen.multiChannelOutput"],strideInputs:["pan"],numOutputs:2}}),f.ugen.out=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l,m=d.multiInputs.sources,n=d.options.audioSettings.buses,o=d.inputs.bus.output[0],p=d.inputs.expand.output[0];if(b=m.length,c=Math.max(p,b),!(1>b)){for(e=0;c>e;e++)for(h=m[e%b],i=h.rate,j=n[o+e],k=i===f.rates.AUDIO?1:0,l=0,g=0;a>g;g++,l+=k)j[g]=j[g]+h.output[l];d.mulAdd(a),d.model.value=h.output[l]
}},d.init=function(){d.sourceBuffers=[],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.out",{rate:"audio",inputs:{sources:null,bus:0,expand:2},ugenOptions:{tags:["flock.ugen.outputType"],multiInputNames:["sources"]}}),f.ugen.valueOut=function(a,b,c){var d=f.ugen(a,b,c);return d.arraySourceGen=function(){var a,b=d.inputs.sources;for(a=0;ab;b++)for(h[b]=0,c=0;ce;e++)b[e]=g[e]},d.defaults("flock.ugen.in",{rate:"audio",inputs:{bus:0,mul:null,add:null}}),f.ugen.audioIn=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.bus;for(b=0;a>b;b++)c[b]=e[b];d.mulAdd(a),d.model.value=c[a-1]},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.init=function(){var a=f.enviro.shared.audioStrategy.inputDeviceManager.openAudioDevice(c);d.bus=d.options.audioSettings.buses[a],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.audioIn",{rate:"audio",inputs:{mul:null,add:null}}),f.ugen.filter=function(a,b,d){var e=f.ugen(a,b,d);return e.gen=function(){var a=e.model,b=e.output,c=e.inputs,d=c.q.output[0],f=c.freq.output[0];(a.prevFreq!==f||a.prevQ!==d)&&e.updateCoefficients(a,f,d),e.filterEngine.filter(b,e.inputs.source.output),a.prevQ=d,a.prevFreq=f,a.value=b[b.length-1]},e.init=function(){var a=e.options.recipe,b="string"==typeof a?f.get(a):a;if(!b)throw new Error("Can't instantiate a flock.ugen.filter() without specifying a filter coefficient recipe.");e.filterEngine=new c(b.sizes.b,b.sizes.a),e.model.coeffs={a:e.filterEngine.a,b:e.filterEngine.b},e.updateCoefficients=f.get(b,e.options.type),e.onInputChanged()},e.init(),e},d.defaults("flock.ugen.filter",{rate:"audio",inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.inputs,g=d.output,h=e.coeffs,i=f.freq.output[0],j=f.q.output[0],k=f.source.output;for((e.prevFreq!==i||e.prevQ!==j)&&d.updateCoefficients(e,i,j),b=0;a>b;b++)c=k[b]-h.a[0]*e.d0-h.a[1]*e.d1,g[b]=h.b[0]*c+h.b[1]*e.d0+h.b[2]*e.d1,e.d1=e.d0,e.d0=c;e.prevQ=j,e.prevFreq=i},d.onInputChanged=function(){var a=d.options.type;d.updateCoefficients="string"==typeof a?f.get(a):a},d.init=function(){d.model.d0=0,d.model.d1=0,d.model.coeffs={a:new Float32Array(2),b:new Float32Array(3)},d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.filter.biquad",{inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad.types={hp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.highPass"}},rhp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.highPass"}},lp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.lowPass"}},rlp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.lowPass"}},bp:{inputDefaults:{freq:440,q:4},options:{type:"flock.coefficients.butterworth.bandPass"}},br:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.bandReject"}}},f.aliasUGens("flock.ugen.filter.biquad",f.ugen.filter.biquad.types),f.coefficients={butterworth:{sizes:{a:2,b:3},lowPass:function(a,b){var c=a.coeffs,d=1/Math.tan(Math.PI*b/a.sampleRate),e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=2*h,c.b[2]=h,c.a[0]=2*(1-e)*h,c.a[1]=(1-g+e)*h},highPass:function(a,b){var c=a.coeffs,d=Math.tan(Math.PI*b/a.sampleRate);1/0===d&&(d=0);var e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=-2*h,c.b[2]=h,c.a[0]=2*(e-1)*h,c.a[1]=(1-g+e)*h},bandPass:function(a,b,c){var d=a.coeffs,e=b/c,g=1/Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g);d.b[0]=i,d.b[1]=0,d.b[2]=-i,d.a[0]=-(g*h*i),d.a[1]=i*(g-1)},bandReject:function(a,b,c){var d=a.coeffs,e=b/c,g=Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g),j=-h*i;d.b[0]=i,d.b[1]=j,d.b[2]=i,d.a[0]=j,d.a[1]=(1-g)*i}},rbj:{sizes:{a:2,b:3},lowPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1-g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},highPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=-j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},bandPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=c*i;d.b[0]=k/j,d.b[1]=0,d.b[2]=-k/j,d.a[0]=-2*g/j,d.a[1]=(1-i)/j},bandReject:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=1/j,l=-2*g/j;d.b[0]=k,d.b[1]=l,d.b[2]=k,d.a[0]=l,d.a[1]=(1-i)/j}}},f.ugen.filter.moog=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.inputs,l=d.output,m=k.source.output,n=j.strides.source,o=k.resonance.output,p=j.strides.resonance,q=k.cutoff.output,r=j.strides.cutoff,s=j.f,t=j.fSq,u=j.fSqSq,v=j.oneMinusF,w=j.fb;for(b=c=e=f=0;a>b;b++,c+=n,e+=p,f+=r)g=q[f],h=o[e],g!==j.prevCutoff&&(g>j.nyquistRate&&(g=j.nyquistRate),s=j.f=g/j.nyquistRate*1.16,t=j.fSq=s*s,u=j.fSqSq=t*t,v=j.oneMinusF=1-s,j.prevRes=void 0),h!==j.prevRes&&(h>4?h=4:0>h&&(h=0),w=j.fb=h*(1-.15*t)),i=m[c]-j.out4*w,i*=.35013*u,j.out1=i+.3*j.in1+v*j.out1,j.in1=i,j.out2=j.out1+.3*j.in2+v*j.out2,j.in2=j.out1,j.out3=j.out2+.3*j.in3+v*j.out3,j.in3=j.out2,j.out4=j.out3+.3*j.in4+v*j.out4,j.in4=j.out3,l[b]=j.out4;d.mulAdd(a),j.value=l[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.filter.moog",{rate:"audio",inputs:{cutoff:3e3,resonance:3.99,source:null},ugenOptions:{model:{in1:0,in2:0,in3:0,in4:0,out1:0,out2:0,out3:0,out4:0,prevCutoff:void 0,prevResonance:void 0,f:void 0,fSq:void 0,fSqSq:void 0,oneMinusF:void 0,fb:void 0,value:0},strideInputs:["source","cutoff","resonance"]}}),f.ugen.delay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output,h=e.time.output[0],i=d.delayBuffer;for(h!==c.time&&(c.time=h,c.delaySamps=h*d.model.sampleRate),b=0;a>b;b++)c.pos>=c.delaySamps&&(c.pos=0),f[b]=i[c.pos],i[c.pos]=g[b],c.pos++;d.mulAdd(a),c.value=f[a-1]},d.onInputChanged=function(a){if(f.onMulAddInputChanged(d),!a||"maxTime"===a){var b=d.model.sampleRate*d.inputs.maxTime.output[0];d.delayBuffer=new Float32Array(b)}},d.onInputChanged(),d},d.defaults("flock.ugen.delay",{rate:"audio",inputs:{maxTime:1,time:1,source:null},ugenOptions:{model:{pos:0,value:0}}}),f.ugen.delay1=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,f=d.output,g=e.source.output;for(b=0;a>b;b++)f[b]=c.prevVal,c.prevVal=g[b];d.mulAdd(a),c.value=f[a-1]},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.delay1",{rate:"audio",inputs:{source:null},ugenOptions:{model:{prevVal:0,value:0}}}),f.ugen.freeverb=function(a,b,c){var d=f.ugen(a,b,c);return d.tunings=d.options.tunings,d.allpassTunings=d.options.allpassTunings,d.gen=function(a){var b,c,e=d.inputs,f=d.output,g=e.source.output,h=e.mix.output[0],i=1-h,j=e.room.output[0],k=.28*j+.7,l=e.damp.output[0],m=.4*l,n=1-m;for(b=0;a>b;b++){var o=g[b],p=.015*o;for(c=0;ce;e++,f+=k,g+=m)b=j[f]*l[g],c=1.5*b-.5*b*b*b,i[e]=c;d.mulAdd(a),h.value=i[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.distortion",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),f.ugen.distortion.deJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(g=h=i=0;a>g;g++,h+=m,i+=o)b=l[h],c=n[i],e=Math.abs(b),f=b*(e+c)/(b*b+(c-1)*e+1),k[g]=f;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.deJonge",{rate:"audio",inputs:{source:null,amount:2},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.tarrabiaDeJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j=d.model,k=d.output,l=d.inputs.source.output,m=j.strides.source,n=d.inputs.amount.output,o=j.strides.amount;for(f=g=h=0;a>f;f++,g+=m,h+=o)b=l[g],c=n[h],c>=1?c=.9999999999999999:-1>c&&(c=-1),i=2*c/(1-c),e=(1+i)*b/(1+i*Math.abs(b)),k[f]=e;d.mulAdd(a),j.value=k[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.tarrabiaDeJonge",{rate:"audio",inputs:{source:null,amount:10},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.gloubiBoulga=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.gain.output,p=k.strides.gain;for(e=f=g=0;a>e;e++,f+=n,g+=p)b=m[f]*o[g],h=.686306*b,i=1+Math.exp(Math.sqrt(Math.abs(h))*-.75),j=Math.exp(h),c=(j-Math.exp(-h*i))/(j+Math.exp(-h)),l[e]=c;d.mulAdd(a),k.value=l[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.gloubiBoulga",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),f.ugen.decay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs,g=d.output,h=e.source.output,i=e.time.output[0];if(i!==c.time&&(c.time=i,c.coeff=0===i?0:Math.exp(f.LOG001/(i*d.model.sampleRate))),0===c.coeff)for(b=0;a>b;b++)g[b]=h[b];else for(b=0;a>b;b++)c.lastSamp=h[b]+c.coeff*c.lastSamp,g[b]=c.lastSamp;d.mulAdd(a),c.value=g[a-1]},d.onInputChanged(),d},d.defaults("flock.ugen.decay",{rate:"audio",inputs:{source:null,time:1},ugenOptions:{model:{time:0,lastSamp:0,coeff:0,value:0}}}),f.ugen.triggerGrains=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.inputs,m=d.output,n=l.channel.output[0],o=d.buffer.data.channels[n],p=d.buffer.format.sampleRate,q=l.dur.output[0],r=l.amp.output,s=l.centerPos.output,t=l.trigger.output,u=l.speed.output,v=d.options.grainEnv,w=0,x=0,y=0,z=0;for(b=0;a>b;b++){if(t[x]>0&&k.prevTrigger<=0&&k.activeGrains.lengthh;)h+=o.length;g.readPos=h,g.writePos=b,g.speed=u[z],k.activeGrains.push(g)}k.prevTrigger=t[x],m[b]=0,w+=k.strides.centerPos,x+=k.strides.trigger,y+=k.strides.amp,z+=k.strides.speed}for(c=0;c=g.numSamps?(k.freeGrains.push(g),k.activeGrains.splice(c,1)):(c++,g.writePos=e%a)}d.mulAdd(a),k.value=m[a-1]},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.allocateGrains=function(a){a=a||d.model.maxNumGrains;for(var b=0;a>b;b++)d.model.freeGrains.push({numSamps:0,centerIdx:0,envScale:0,sampIdx:0,amp:0,readPos:0,writePos:0,speed:0})},d.init=function(){f.ugen.buffer(d),d.allocateGrains(),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.triggerGrains",{rate:"audio",inputs:{centerPos:0,channel:0,amp:1,dur:.1,speed:1,trigger:0,buffer:null,mul:null,add:null},ugenOptions:{grainEnv:f.fillTable(8192,f.tableGenerators.hann),model:{value:0,maxNumGrains:512,activeGrains:[],freeGrains:[],env:null,strides:{}},strideInputs:["centerPos","trigger","amp","speed"],interpolation:"cubic"}}),f.ugen.granulator=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l=d.model,m=d.options,n=d.inputs,o=d.output,p=d.delayLine,q=n.grainDur.output[0],r=n.delayDur.output[0],s=n.numGrains.output[0],t=n.source.output,u=m.maxDelayDur,v=m.grainEnv;for(l.delayDur!==r&&(l.delayDur=r,r>u&&(r=u),l.delayLength=r*l.sampleRate|0,l.writePos=l.writePos%l.delayLength),l.grainDur!==q&&(l.grainDur=q,l.grainLength=l.sampleRate*l.grainDur|0,l.envScale=v.length/l.grainLength),s=s>m.maxNumGrains?m.maxNumGrains:Math.round(s),b=0;a>b;b++){for(p[l.writePos]=t[b],l.writePos=++l.writePos%l.delayLength,e=0,c=0;s>c;c++)g=l.grainIdx[c],h=l.delayLineIdx[c],g>l.grainLength&&(g=0,h=Math.random()*l.delayLength|0),i=p[h],j=g*l.envScale,k=f.interpolate.linear(j,v),e+=i*k,l.delayLineIdx[c]=++h%l.delayLength,l.grainIdx[c]=++g;o[b]=e/s}d.mulAdd(a),l.value=o[a-1]},d.initGrains=function(){for(var a=d.model,b=0;b0&&h.prevTrig<=0&&d.log(d.logLevel.IMPORTANT,i+k),h.freq!==m&&(h.sampInterval=Math.round(h.sampleRate/m),h.freq=m,h.counter=h.sampInterval),b=0,c=0;a>b;b++,c+=h.strides.source)h.counter>=h.sampInterval&&(d.log(d.logLevel.IMPORTANT,i+k[c]),h.counter=0),h.counter++,g[b]=k[b];h.value=g[a-1]},e.init=function(){var a=e.options;e.model.label=a.label?a.label+": ":"",e.onInputChanged()},e.init(),e},d.defaults("flock.ugen.print",{rate:"audio",inputs:{source:null,trigger:0,freq:1},ugenOptions:{model:{value:0,counter:0},strideInputs:["source"]}}),f.ugen.sequence=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.inputs.list,g=d.inputs,h=g.freq.output,i=g.loop.output[0],j=d.model,k=j.scale,l=d.output,m=g.start?Math.round(g.start.output[0]):0,n=g.end?Math.round(g.end.output[0]):f.length;for(void 0===j.unscaled&&(b=f[m],j.unscaled=void 0===b?0:b),void 0===j.nextIdx&&(j.nextIdx=m),c=0,e=0;a>c;c++,e+=j.strides.freq){if(j.nextIdx>=n){if(!(i>0)){l[c]=j.unscaled;continue}j.nextIdx=m}l[c]=j.unscaled=f[j.nextIdx],j.phase+=h[e]*k,j.phase>=1&&(j.phase=0,j.nextIdx++)}d.mulAdd(a),j.value=l[a-1]},d.onInputChanged=function(){d.model.scale=d.rate!==f.rates.DEMAND?d.model.sampleDur:1,d.inputs.list||(d.inputs.list=[]),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.sequence",{rate:"control",inputs:{start:0,freq:1,loop:0,list:[]},ugenOptions:{model:{unscaled:void 0,value:0,phase:0},strideInputs:["freq"],noExpand:["list"]}}),f.ugen.midiFreq=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=e.a4,h=g.freq,i=g.noteNum,j=e.notesPerOctave,k=d.inputs.source.output,l=d.output;for(b=0,c=0;a>b;b++,c+=e.strides.source)l[b]=f.midiFreq(k[c],h,i,j);d.mulAdd(a),e.value=l[a-1]},d.init=function(){d.model.octaveScale=1/d.model.notesPerOctave,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.midiFreq",{rate:"control",inputs:{source:null},ugenOptions:{model:{value:0,a4:{noteNum:69,freq:440},notesPerOctave:12},strideInputs:["source"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.blit=function(a){var b,c;return a>=2?b=0:a>=1?(c=2-a,b=.16666666666666666*c*c*c):a>=0?(c=a*a,b=.6666666666666666-c+.5*c*a):a>=-1?(c=a*a,b=.6666666666666666-c-.5*c*a):a>=-2?(c=2+a,b=.16666666666666666*c*c*c):b=0,b},f.blit.period=function(a,b){var c=a/b;return 1>c?1:c},f.blit.updatePeriodState=function(a,b){a.freq=1e-6>b?1e-6:b,a.d0=f.blit.period(a.sampleRate,a.freq)},f.ugen.blit=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=c.phase;for(b=0;a>b;b++)h-=1,-2>h&&(f.blit.updatePeriodState(c,g),h+=c.d0),e[b]=f.blit(h);c.phase=h,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.blit",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{phase:-2,value:0}}}),f.ugen.saw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.prevVal;for(void 0===i&&(f.ugen.saw.updatePeriodState(c,g),i=c.d0/2),b=0;a>b;b++)i-=1,-2>i&&(f.ugen.saw.updatePeriodState(c,g),i+=c.d0),e[b]=j=f.blit(i)-c.dcOffset+h*j;c.phase=i,c.prevVal=j,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.saw.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.dcOffset=1/a.d0},d.defaults("flock.ugen.saw",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,dcOffset:void 0,prevVal:0,value:0}}}),f.ugen.square=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.prevVal;for(void 0===i&&(f.ugen.square.updatePeriodState(c,g),i=c.phaseResetValue),b=0;a>b;b++)e[b]=j=f.blit(i)*c.sign+h*j,-2>i&&(f.ugen.square.updatePeriodState(c,g),i+=c.phaseResetValue),i-=1;c.phase=i,c.prevVal=j,d.mulAdd(a),c.value=e[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.square.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.sign*=-1},d.defaults("flock.ugen.square",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,prevVal:.5,value:0,sign:1}}}),f.ugen.tri=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.output,i=d.inputs.freq.output[0],j=1-d.inputs.leakRate.output[0],k=g.phase,l=g.prevVal,m=g.secondPrevVal;for(void 0===k&&(f.ugen.tri.updatePeriodState(g,i),k=g.d0/4),b=0;a>b;b++)c=f.blit(k)*g.sign+j*l,l=c,e=c+j*m,m=e,h[b]=e*g.ampScale,k-=1,-2>k&&(f.ugen.tri.updatePeriodState(g,i),k+=g.phaseResetValue);g.phase=k,g.prevVal=l,g.secondPrevVal=m,d.mulAdd(a),g.value=h[a-1]},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.tri.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.ampScale=2/a.d0,a.sign*=-1},d.defaults("flock.ugen.tri",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,value:0,prevVal:.5,secondPrevVal:0,sign:1,ampScale:void 0,phaseResetValue:void 0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.envelope={},f.envelope.makeCreator=function(b,c){return function(e){var f=d.defaults(b),g=a.extend(!0,{},f,e);return c(g)}},f.envelope.registerCreators=function(a,b){var c,e;for(var g in b)c=d.pathUtil.composePath(a,g),e=b[g],d.defaults(c,e.defaults),d.setGlobalValue(c,f.envelope.makeCreator(c,e.transformer))},f.envelope.creatorSpecs={line:{transformer:function(a){return{levels:[a.start,a.end],times:[a.duration]}},defaults:{start:0,end:1,duration:1}},linear:{transformer:function(a){return{levels:[0,a.level,a.level,0],times:[a.attack,a.sustain,a.release]}},defaults:{level:1,attack:.01,sustain:1,release:1}},tri:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration]}},defaults:{level:1,duration:1}},sin:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration],curve:"sin"}},defaults:{level:1,duration:1}},asr:{transformer:function(a){return{levels:[0,a.sustain,0],times:[a.attack,a.release],sustainPoint:1,curve:-4}},defaults:{sustain:1,attack:.01,release:1}},dadsr:{transformer:function(a){var b=[0,0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.delay,a.attack,a.decay,a.release],sustainPoint:3,curve:-4}},defaults:{delay:.1,attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}},adsr:{transformer:function(a){var b=[0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.attack,a.decay,a.release],sustainPoint:2,curve:-4}},defaults:{attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}}},f.envelope.registerCreators("flock.envelope",f.envelope.creatorSpecs),f.envelope.validate=function(a,b){var c=a.levels,d={};if(a.times?!c||c.length<2?d.levels="An array containing at least two levels must be specified.":(f.envelope.validate.times(a.times,c,d),f.envelope.validate.levels(c,d),f.envelope.validate.curves(a.curve,c,d),f.envelope.validate.sustainPoint(a.sustainPoint,c,d)):d.times="An array containing at least one time value must be specified.",b!==!1)for(var e in d)f.fail(d[e]);return d},f.envelope.validate.times=function(a,b,c){a.length!==b.length-1&&(c.times="The envelope specification should provide one fewer time value than the number of level values. times: "+a+" levels: "+b);for(var d=0;de&&(c.times="All times should be positive values. times: "+a)}},f.envelope.validate.levels=function(a,b){for(var c=0;ca||a>=b.length)&&(c.sustainPoint="The specified sustainPoint index is out range for the levels array. sustainPoint: "+a+" levels: "+b)},f.envelope.expand=function(a){var b="string"==typeof a?d.invokeGlobalFunction(a):a.type?d.invokeGlobalFunction(a.type,[a]):a;if(b.curves&&!b.curve&&(b.curve=b.curves),!f.isIterable(b.curve)){var c=b.levels.length-1;b.curve=f.generate(new Array(c),b.curve)}return f.envelope.validate(b,!0),b},f.line={fill:function(a,b,c,d,e,g){e=void 0===e?0:e,g=void 0===g?b.length:g;var h=g-e,i=f.line.fill.model;i.unscaled=c,i.destination=d,i.numSegmentSamps=h-1,"number"==typeof a&&(i.currentCurve=a,a="curve");var j=f.line[a];return j||f.fail("No line generator could be found for type "+a),j.init(i),j.gen(h,e,b,i)},generator:function(a){var b=typeof a;return"string"===b?f.line[a]:"number"===b?f.line.curve:f.line.linear},constant:{init:function(a){a.stepSize=0},gen:function(a,b,c,d){for(var e=d.unscaled,f=b;a+b>f;f++)c[f]=e;return c}},step:{init:function(a){a.arrived=!1},gen:function(a,b,c,d){for(var e=b;a+b>e;e++)c[e]=d.unscaled,d.arrived||(d.arrived=!0,d.unscaled=d.destination);return c}},linear:{init:function(a){a.stepSize=(a.destination-a.unscaled)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e+=f;return d.unscaled=e,d.stepSize=f,c}},exponential:{init:function(a){0===a.unscaled&&(a.unscaled=1e-16),a.stepSize=0===a.numSegmentSamps?0:Math.pow(a.destination/a.unscaled,1/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e*=f;return d.unscaled=e,d.stepSize=f,c}},curve:{init:function(a){if(Math.abs(a.currentCurve)<.001)return f.line.linear.init(a);var b=(a.destination-a.unscaled)/(1-Math.exp(a.currentCurve));a.a2=a.unscaled+b,a.b1=b,a.stepSize=Math.exp(a.currentCurve/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.b1,g=b;a+b>g;g++)c[g]=e,f*=d.stepSize,e=d.a2-f;return d.unscaled=e,d.b1=f,c}},sin:{init:function(a){var b=Math.PI/a.numSegmentSamps;a.a2=.5*(a.destination+a.unscaled),a.b1=2*Math.cos(b),a.y1=.5*(a.destination-a.unscaled),a.y2=a.y1*Math.sin(f.HALFPI-b),a.unscaled=a.a2-a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,f=d.a2-e,h=g,g=e;return d.unscaled=f,d.y1=g,d.y2=h,c}},welsh:{init:function(a){var b=f.HALFPI/a.numSegmentSamps,c=Math.cos(b);a.b1=2*c,a.destination>=a.unscaled?(a.a2=a.unscaled,a.y1=0,a.y2=-Math.sin(b)*(a.destination-a.unscaled)):(a.a2=a.destination,a.y1=a.unscaled-a.destination,a.y2=c*(a.unscaled-a.destination)),a.unscaled=a.a2+a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaled,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,h=g,g=e,f=d.a2+e;return d.unscaled=f,d.y1=g,d.y2=h,c}},squared:{init:function(a){a.y1=Math.sqrt(a.unscaled),a.y2=Math.sqrt(a.destination),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f;return d.y1=f,d.unscaled=e,c}},cubed:{init:function(a){var b=.3333333333333333;a.y1=Math.pow(a.unscaled,b),a.y2=Math.pow(a.destination,b),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaled,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f*f;return d.y1=f,d.unscaled=e,c}}},f.line.fill.model={value:0,destination:1},f.ugen.line=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.stepSize,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i+=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;a.start=d.inputs.start.output[0],a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),0===a.numSteps?(a.stepSize=0,a.level=a.end):(a.stepSize=(a.end-a.start)/a.numSteps,a.level=a.start),f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.line",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,stepSize:0,level:0,value:0}}}),f.ugen.xLine=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.multiplier,f=c.numSteps,g=f>=a?a:f,h=a-g,i=c.level,j=d.output;for(b=0;g>b;b++)j[b]=i,f--,i*=e;if(h>0)for(b=0;h>b;b++)j[b]=i;c.level=i,c.numSteps=f,d.mulAdd(a),c.value=j[a-1]},d.onInputChanged=function(){var a=d.model;f.onMulAddInputChanged(d),a.start=d.inputs.start.output[0],0===a.start&&(a.start=Number.MIN_VALUE),a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),a.multiplier=Math.pow(a.end/a.start,1/a.numSteps),a.level=a.start},d.onInputChanged(),d},d.defaults("flock.ugen.xLine",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,multiplier:0,level:0,value:0}}}),f.ugen.asr=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,f=d.output,g=e.previousGate,h=d.inputs.gate.output[0],i=e.level,j=e.stage,k=j.currentStep,l=j.stepInc,m=j.numSteps,n=e.targetLevel,o=!1;for(0>=g&&h>0?(n=d.inputs.sustain.output[0],b=d.inputs.attack.output[0],o=!0):0>=h&&k>=m&&(n=d.inputs.start.output[0],b=d.inputs.release.output[0],o=!0),o&&(m=Math.round(b*e.sampleRate),l=(n-i)/m,k=0),c=0;a>c;c++)f[c]=i,k++,i=m>k?i+l:k===m?n:i;e.level=i,e.targetLevel=n,e.previousGate=h,j.currentStep=k,j.stepInc=l,j.numSteps=m,d.mulAdd(a),e.value=f[a-1]},d.init=function(){var a=d.model;a.level=d.inputs.start.output[0],a.targetLevel=d.inputs.sustain.output[0],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.asr",{rate:"control",inputs:{start:0,attack:.01,sustain:1,release:1,gate:0,mul:null,add:null},ugenOptions:{model:{level:0,targetLevel:0,previousGate:0,value:0,stage:{currentStep:0,stepInc:0,numSteps:0}}}}),f.ugen.env={},f.ugen.env.simpleASR=f.ugen.asr,d.defaults("flock.ugen.env.simpleASR",d.copy(d.defaults("flock.ugen.asr"))),f.ugen.envGen=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output[0],i=g.timeScale.output[0],j=0;for(f.ugen.envGen.checkGate(d,h,i);a>j;)b=Math.min(a-j,c.numSegmentSamps),d.lineGen.gen(b,j,e,c),j+=b,c.numSegmentSamps-=b,0===c.numSegmentSamps&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=e[a-1]},d.arGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output,i=g.timeScale.output[0];for(b=0;a>b;b++)f.ugen.envGen.checkGate(d,h[b],i),d.lineGen.gen(1,b,e,c),c.numSegmentSamps--,0===c.numSegmentSamps&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=e[a-1]},d.onInputChanged=function(a){a&&"envelope"!==a||(d.envelope=f.ugen.envGen.initEnvelope(d,d.inputs.envelope)),a&&"gate"!==a||(d.gen=d.inputs.gate.rate===f.rates.AUDIO?d.arGen:d.krGen),f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugen.envGen.initEnvelope=function(a,b){var c=a.model,d=f.envelope.expand(b);return c.stage=0,c.numStages=d.times.length,a.lineGen=f.line.constant,f.ugen.envGen.lineGenForStage(a.inputs.timeScale.output[0],d,c),c.unscaled=d.levels[c.stage],d
-},f.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},f.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=f.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaled):(c.stage++,a.lineGen=f.ugen.envGen.lineGenForStage(b,d,c))},f.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,d*c.sampleRate)),c.numSegmentSamps=e,c.destination=f},f.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,g=b.curve;return 0===c.stage||c.stage>c.numStages?d=f.line.constant:(e=g[c.stage-1],c.currentCurve=e,d=f.line.generator(e)),f.ugen.envGen.setupStage(a,b,c),d.init(c),d},d.defaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,value:0,stage:0,numStages:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.ugen"),f.ugen.scope=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.spf,f=c.bufIdx,g=c.scope.values;for(b=0;a>b;b++)g[f]=d.inputs.source.output[b],e>f?f+=1:(f=0,d.scopeView.refreshView());c.bufIdx=f,c.value=d.inputs.source.output[a-1]},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=f.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},d.defaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),f.ugen.mouse={},f.ugen.mouse.cursor=function(b,c,d){var e=f.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,g=f.ugen.mouse.cursor.normalize(e.target,d),h=d.movingAvg,i=e.inputs.lag.output[0],j=e.inputs.add.output[0],k=e.inputs.mul.output[0],l=d.lagCoef,m=e.output;for(i!==l&&(l=0===i?0:Math.exp(f.LOG001/(i*d.sampleRate)),d.lagCoef=l),b=0;a>b;b++)c=k+j,g=Math.pow(c/j,g)*j,h=g+l*(h-g),m[b]=h;d.movingAvg=h,d.value=m[a-1]},e.linearGen=function(a){var b,c=e.model,d=f.ugen.mouse.cursor.normalize(e.target,c),g=c.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=c.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(f.LOG001/(h*c.sampleRate)),c.lagCoef=k),b=0;a>b;b++)g=d+k*(g-d),l[b]=g*j+i;c.movingAvg=g,c.value=l[a-1]},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,g=f.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=g*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=d[a-1]},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){f.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},f.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},d.defaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),f.ugen.mouse.click=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.model;for(b=0;a>b;b++)c[b]=e.unscaled;d.mulAdd(a),e.value=c[a-1]},d.mouseDownListener=function(){d.model.unscaled=1},d.mouseUpListener=function(){d.model.unscaled=0},d.init=function(){var a=d.model;a.target="string"==typeof d.options.target?document.querySelector(d.options.target):d.options.target||window,a.unscaled=0,a.target.addEventListener("mousedown",d.mouseDownListener,!1),a.target.addEventListener("mouseup",d.mouseUpListener,!1),d.onInputChanged()},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.init(),d},d.defaults("flock.ugen.mouse.click",{rate:"control"}),f.ugen.mediaIn=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){for(var b=e.output,c=e.bus,d=0;a>d;d++)b[d]=c[d];e.mulAdd(a),e.model.value=b[a-1]},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init=function(){var b=f.enviro.shared,c=a(e.options.element),d=b.audioStrategy.nativeNodeManager.createMediaElementInput(c[0]);e.bus=e.options.audioSettings.buses[d],e.onInputChanged(),f.platform.browser.safari?f.warn("MediaElementSourceNode does not work on Safari. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):f.platform.isAndroid&&f.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},d.defaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.view"),f.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()},c.init(),c}}();var d=d||require("infusion"),f=d.registerNamespace("flock");return function(){"use strict";d.registerNamespace("flock.midi"),f.midi.requestAccess=function(a,b,c){if(!navigator.requestMIDIAccess){var e="The Web MIDI API is not available. You may need to enable it in your browser's settings.";return d.log(d.logLevel.WARN,e),void c(e)}var f=navigator.requestMIDIAccess({sysex:a});f.then(b,c)},f.midi.getPorts=function(a){var b={},c="function"==typeof a.inputs?f.midi.collectPortsLegacy:f.midi.collectPorts;return c("inputs",a,b),c("outputs",a,b),b},f.midi.collectPorts=function(a,b,c){for(var d=c[a]=c[a]||[],e=b[a].values(),f=e.next();!f.done;)d.push(f.value),f=e.next();return c},f.midi.collectPortsLegacy=function(a,b,c){return b[a]&&(c[a]=b[a]()),c},f.midi.read=function(a){var b,c=a[0],d=c>>4,e=15&c;switch(d){case 8:b=f.midi.read.noteOff;break;case 9:b=a[2]>0?f.midi.read.noteOn:f.midi.read.noteOff;break;case 10:b=f.midi.read.polyAftertouch;break;case 11:b=f.midi.read.controlChange;break;case 12:b=f.midi.read.programChange;break;case 13:b=f.midi.read.channelAftertouch;break;case 14:b=f.midi.read.pitchbend;break;case 15:b=f.midi.read.sysex;break;default:throw new Error("Recieved an unrecognized MIDI message: "+a)}return b(e,a)},f.midi.read.note=function(a,b,c){return{type:a,chan:b,note:c[1],velocity:c[2]}},f.midi.read.noteOn=function(a,b){return f.midi.read.note("noteOn",a,b)},f.midi.read.noteOff=function(a,b){return f.midi.read.note("noteOff",a,b)},f.midi.read.polyAftertouch=function(a,b){return{type:"aftertouch",chan:a,note:b[1],pressure:b[2]}},f.midi.read.controlChange=function(a,b){return{type:"control",chan:a,number:b[1],value:b[2]}},f.midi.read.programChange=function(a,b){return{type:"program",chan:a,program:b[1]}},f.midi.read.channelAftertouch=function(a,b){return{type:"aftertouch",chan:a,pressure:b[1]}},f.midi.read.pitchbend=function(a,b){return{type:"pitchbend",chan:a,value:b[1]<<7|b[2]}},f.midi.read.sysex=function(a,b){return{type:"system",chan:a,data:b.subarray(1)}},d.defaults("flock.midi.system",{gradeNames:["fluid.eventedComponent","autoInit"],sysex:!1,members:{access:void 0,ports:void 0},invokers:{requestAccess:{funcName:"flock.midi.requestAccess",args:["{that}.options.sysex","{that}.events.onAccessGranted.fire","{that}.events.onAccessError.fire"]},refreshPorts:{funcName:"flock.midi.system.refreshPorts",args:["{that}","{that}.access"]}},events:{onAccessGranted:null,onAccessError:null,onReady:null},listeners:{onCreate:{func:"{that}.requestAccess"},onAccessGranted:[{funcName:"flock.midi.system.setAccess",args:["{that}","{arguments}.0"]},{func:"{that}.refreshPorts"},{func:"{that}.events.onReady.fire",args:"{that}.ports"}],onAccessError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]}}}),f.midi.system.setAccess=function(a,b){a.access=b},f.midi.system.refreshPorts=function(a,b){a.ports=f.midi.getPorts(b)},d.defaults("flock.midi.connection",{gradeNames:["fluid.eventedComponent","autoInit"],openImmediately:!1,sysex:!1,distributeOptions:{source:"{that}.options.sysex",target:"{that > system}.options.sysex"},ports:0,invokers:{send:{func:"{that}.events.onSendMessage.fire"},open:{funcName:"flock.midi.connection.bind",args:["{system}.ports","{that}.options.ports","{that}.events.raw.fire","{that}.events.onSendMessage"]},close:{funcName:"flock.midi.connection.close",args:["{system}.ports","{that}.events.raw.fire"]}},components:{system:{type:"flock.midi.system",options:{listeners:{onReady:{funcName:"flock.midi.connection.autoOpen",args:["{connection}.options.openImmediately","{connection}.open"]}}}}},events:{onReady:"{system}.events.onReady",onError:null,onSendMessage:null,raw:null,message:null,note:null,noteOn:null,noteOff:null,control:null,program:null,aftertouch:null,pitchbend:null},listeners:{onError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]},raw:{funcName:"flock.midi.connection.fireEvent",args:["{arguments}.0","{that}.events"]}}}),f.midi.connection.autoOpen=function(a,b){a&&b()},f.midi.findPorts=function(a,b){b=d.makeArray(b);var c=[];return d.each(b,function(b){var d=f.midi.findPorts.portFinder(b),e=d(a);c=c.concat(e)}),c},f.midi.findPorts.portFinder=function(a){if("number"==typeof a)return f.midi.findPorts.byIndex(a);if("string"==typeof a&&(a={name:a}),a.id)return function(b){b.find(f.midi.findPorts.idMatcher(a.id))};var b=a.manufacturer&&a.name?f.midi.findPorts.bothMatcher(a.manufacturer,a.name):a.manufacturer?f.midi.findPorts.manufacturerMatcher(a.manufacturer):f.midi.findPorts.nameMatcher(a.name);return function(a){return a.filter(b)}},f.midi.findPorts.byIndex=function(a){return function(b){var c=b[a];return c?[c]:[]}},f.midi.findPorts.lowerCaseContainsMatcher=function(a){return function(b){var c;for(var d in a){var e=b[d],f=a[d];if(c="*"===f?!0:e&&e.toLowerCase().indexOf(f.toLowerCase())>-1,!c)break}return c}},f.midi.findPorts.idMatcher=function(a){return function(b){return b.id===a}},f.midi.findPorts.bothMatcher=function(a,b){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a,name:b})},f.midi.findPorts.manufacturerMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a})},f.midi.findPorts.nameMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({name:a})},f.midi.findPorts.eachPortOfType=function(a,b,c){var e=d.makeArray(a);d.each(e,function(a){a.type===b&&c(a)})},f.midi.connection.listen=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.addEventListener("midimessage",b,!1)})},f.midi.connection.stopListening=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.removeEventListener("midimessage",b,!1)})},f.midi.connection.bindSender=function(a,b){var c=d.makeArray(a);d.each(c,function(a){b.addListener(a.send.bind(a))})},f.midi.connection.bind=function(a,b,c,d){b=f.midi.connection.expandPortSpec(b);var e=f.midi.findPorts(a.inputs,b.input),g=f.midi.findPorts(a.outputs,b.output);e&&e.length>0?f.midi.connection.listen(e,c):void 0!==b.input&&f.midi.connection.logNoMatchedPorts("input",b),g&&g.length>0?f.midi.connection.bindSender(g,d):void 0!==b.output&&f.midi.connection.logNoMatchedPorts("output",b)},f.midi.connection.close=function(a,b){f.midi.connection.stopListening(a.inputs,b)},f.midi.connection.logNoMatchedPorts=function(a,b){d.log(d.logLevel.WARN,"No matching "+a+" ports were found for port specification: ",b[a])},f.midi.connection.expandPortSpec=function(a){if(void 0!==a.input||void 0!==a.output)return a;var b={input:{},output:{}};return"number"==typeof a?b.input=b.output=a:(f.midi.connection.expandPortSpecProperty("manufacturer",a,b),f.midi.connection.expandPortSpecProperty("name",a,b)),b},f.midi.connection.expandPortSpecProperty=function(a,b,c){return c.input[a]=c.output[a]=b[a],c},f.midi.connection.fireEvent=function(a,b){var c=f.midi.read(a.data),d=c.type?b[c.type]:void 0;b.message.fire(c),("noteOn"===c.type||"noteOff"===c.type)&&b.note.fire(c),d&&d.fire(c)}}(),window.fluid=d,f});
\ No newline at end of file
+},f.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},f.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=f.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaled):(c.stage++,a.lineGen=f.ugen.envGen.lineGenForStage(b,d,c))},f.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,d*c.sampleRate)),c.numSegmentSamps=e,c.destination=f},f.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,g=b.curve;return 0===c.stage||c.stage>c.numStages?d=f.line.constant:(e=g[c.stage-1],c.currentCurve=e,d=f.line.generator(e)),f.ugen.envGen.setupStage(a,b,c),d.init(c),d},d.defaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,value:0,stage:0,numStages:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.ugen"),f.ugen.scope=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.spf,f=c.bufIdx,g=c.scope.values;for(b=0;a>b;b++)g[f]=d.inputs.source.output[b],e>f?f+=1:(f=0,d.scopeView.refreshView());c.bufIdx=f,c.value=d.inputs.source.output[a-1]},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=f.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},d.defaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),f.ugen.mouse={},f.ugen.mouse.cursor=function(b,c,d){var e=f.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,g=f.ugen.mouse.cursor.normalize(e.target,d),h=d.movingAvg,i=e.inputs.lag.output[0],j=e.inputs.add.output[0],k=e.inputs.mul.output[0],l=d.lagCoef,m=e.output;for(i!==l&&(l=0===i?0:Math.exp(f.LOG001/(i*d.sampleRate)),d.lagCoef=l),b=0;a>b;b++)c=k+j,g=Math.pow(c/j,g)*j,h=g+l*(h-g),m[b]=h;d.movingAvg=h,d.value=m[a-1]},e.linearGen=function(a){var b,c=e.model,d=f.ugen.mouse.cursor.normalize(e.target,c),g=c.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=c.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(f.LOG001/(h*c.sampleRate)),c.lagCoef=k),b=0;a>b;b++)g=d+k*(g-d),l[b]=g*j+i;c.movingAvg=g,c.value=l[a-1]},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,g=f.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=g*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=d[a-1]},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){f.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},f.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},d.defaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),f.ugen.mouse.click=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.output,e=d.model;for(b=0;a>b;b++)c[b]=e.unscaled;d.mulAdd(a),e.value=c[a-1]},d.mouseDownListener=function(){d.model.unscaled=1},d.mouseUpListener=function(){d.model.unscaled=0},d.init=function(){var a=d.model;a.target="string"==typeof d.options.target?document.querySelector(d.options.target):d.options.target||window,a.unscaled=0,a.target.addEventListener("mousedown",d.mouseDownListener,!1),a.target.addEventListener("mouseup",d.mouseUpListener,!1),d.onInputChanged()},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.init(),d},d.defaults("flock.ugen.mouse.click",{rate:"control"}),f.ugen.mediaIn=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){for(var b=e.output,c=e.bus,d=0;a>d;d++)b[d]=c[d];e.mulAdd(a),e.model.value=b[a-1]},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init=function(){var b=f.enviro.shared,c=a(e.options.element),d=b.audioStrategy.nativeNodeManager.createMediaElementInput(c[0]);e.bus=e.options.audioSettings.buses[d],e.onInputChanged(),f.platform.browser.safari?f.log.warn("MediaElementSourceNode does not work on Safari. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):f.platform.isAndroid&&f.log.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},d.defaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.view"),f.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()},c.init(),c}}();var d=d||require("infusion"),f=d.registerNamespace("flock");return function(){"use strict";d.registerNamespace("flock.midi"),f.midi.requestAccess=function(a,b,c){if(!navigator.requestMIDIAccess){var e="The Web MIDI API is not available. You may need to enable it in your browser's settings.";return d.log(d.logLevel.WARN,e),void c(e)}var f=navigator.requestMIDIAccess({sysex:a});f.then(b,c)},f.midi.getPorts=function(a){var b={},c="function"==typeof a.inputs?f.midi.collectPortsLegacy:f.midi.collectPorts;return c("inputs",a,b),c("outputs",a,b),b},f.midi.collectPorts=function(a,b,c){for(var d=c[a]=c[a]||[],e=b[a].values(),f=e.next();!f.done;)d.push(f.value),f=e.next();return c},f.midi.collectPortsLegacy=function(a,b,c){return b[a]&&(c[a]=b[a]()),c},f.midi.read=function(a){var b,c=a[0],d=c>>4,e=15&c;switch(d){case 8:b=f.midi.read.noteOff;break;case 9:b=a[2]>0?f.midi.read.noteOn:f.midi.read.noteOff;break;case 10:b=f.midi.read.polyAftertouch;break;case 11:b=f.midi.read.controlChange;break;case 12:b=f.midi.read.programChange;break;case 13:b=f.midi.read.channelAftertouch;break;case 14:b=f.midi.read.pitchbend;break;case 15:b=f.midi.read.sysex;break;default:throw new Error("Recieved an unrecognized MIDI message: "+a)}return b(e,a)},f.midi.read.note=function(a,b,c){return{type:a,chan:b,note:c[1],velocity:c[2]}},f.midi.read.noteOn=function(a,b){return f.midi.read.note("noteOn",a,b)},f.midi.read.noteOff=function(a,b){return f.midi.read.note("noteOff",a,b)},f.midi.read.polyAftertouch=function(a,b){return{type:"aftertouch",chan:a,note:b[1],pressure:b[2]}},f.midi.read.controlChange=function(a,b){return{type:"control",chan:a,number:b[1],value:b[2]}},f.midi.read.programChange=function(a,b){return{type:"program",chan:a,program:b[1]}},f.midi.read.channelAftertouch=function(a,b){return{type:"aftertouch",chan:a,pressure:b[1]}},f.midi.read.pitchbend=function(a,b){return{type:"pitchbend",chan:a,value:b[1]<<7|b[2]}},f.midi.read.sysex=function(a,b){return{type:"system",chan:a,data:b.subarray(1)}},d.defaults("flock.midi.system",{gradeNames:["fluid.eventedComponent","autoInit"],sysex:!1,members:{access:void 0,ports:void 0},invokers:{requestAccess:{funcName:"flock.midi.requestAccess",args:["{that}.options.sysex","{that}.events.onAccessGranted.fire","{that}.events.onAccessError.fire"]},refreshPorts:{funcName:"flock.midi.system.refreshPorts",args:["{that}","{that}.access"]}},events:{onAccessGranted:null,onAccessError:null,onReady:null},listeners:{onCreate:{func:"{that}.requestAccess"},onAccessGranted:[{funcName:"flock.midi.system.setAccess",args:["{that}","{arguments}.0"]},{func:"{that}.refreshPorts"},{func:"{that}.events.onReady.fire",args:"{that}.ports"}],onAccessError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]}}}),f.midi.system.setAccess=function(a,b){a.access=b},f.midi.system.refreshPorts=function(a,b){a.ports=f.midi.getPorts(b)},d.defaults("flock.midi.connection",{gradeNames:["fluid.eventedComponent","autoInit"],openImmediately:!1,sysex:!1,distributeOptions:{source:"{that}.options.sysex",target:"{that > system}.options.sysex"},ports:0,invokers:{send:{func:"{that}.events.onSendMessage.fire"},open:{funcName:"flock.midi.connection.bind",args:["{system}.ports","{that}.options.ports","{that}.events.raw.fire","{that}.events.onSendMessage"]},close:{funcName:"flock.midi.connection.close",args:["{system}.ports","{that}.events.raw.fire"]}},components:{system:{type:"flock.midi.system",options:{listeners:{onReady:{funcName:"flock.midi.connection.autoOpen",args:["{connection}.options.openImmediately","{connection}.open"]}}}}},events:{onReady:"{system}.events.onReady",onError:null,onSendMessage:null,raw:null,message:null,note:null,noteOn:null,noteOff:null,control:null,program:null,aftertouch:null,pitchbend:null},listeners:{onError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]},raw:{funcName:"flock.midi.connection.fireEvent",args:["{arguments}.0","{that}.events"]}}}),f.midi.connection.autoOpen=function(a,b){a&&b()},f.midi.findPorts=function(a,b){b=d.makeArray(b);var c=[];return d.each(b,function(b){var d=f.midi.findPorts.portFinder(b),e=d(a);c=c.concat(e)}),c},f.midi.findPorts.portFinder=function(a){if("number"==typeof a)return f.midi.findPorts.byIndex(a);if("string"==typeof a&&(a={name:a}),a.id)return function(b){b.find(f.midi.findPorts.idMatcher(a.id))};var b=a.manufacturer&&a.name?f.midi.findPorts.bothMatcher(a.manufacturer,a.name):a.manufacturer?f.midi.findPorts.manufacturerMatcher(a.manufacturer):f.midi.findPorts.nameMatcher(a.name);return function(a){return a.filter(b)}},f.midi.findPorts.byIndex=function(a){return function(b){var c=b[a];return c?[c]:[]}},f.midi.findPorts.lowerCaseContainsMatcher=function(a){return function(b){var c;for(var d in a){var e=b[d],f=a[d];if(c="*"===f?!0:e&&e.toLowerCase().indexOf(f.toLowerCase())>-1,!c)break}return c}},f.midi.findPorts.idMatcher=function(a){return function(b){return b.id===a}},f.midi.findPorts.bothMatcher=function(a,b){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a,name:b})},f.midi.findPorts.manufacturerMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a})},f.midi.findPorts.nameMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({name:a})},f.midi.findPorts.eachPortOfType=function(a,b,c){var e=d.makeArray(a);d.each(e,function(a){a.type===b&&c(a)})},f.midi.connection.listen=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.addEventListener("midimessage",b,!1)})},f.midi.connection.stopListening=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.removeEventListener("midimessage",b,!1)})},f.midi.connection.bindSender=function(a,b){var c=d.makeArray(a);d.each(c,function(a){b.addListener(a.send.bind(a))})},f.midi.connection.bind=function(a,b,c,d){b=f.midi.connection.expandPortSpec(b);var e=f.midi.findPorts(a.inputs,b.input),g=f.midi.findPorts(a.outputs,b.output);e&&e.length>0?f.midi.connection.listen(e,c):void 0!==b.input&&f.midi.connection.logNoMatchedPorts("input",b),g&&g.length>0?f.midi.connection.bindSender(g,d):void 0!==b.output&&f.midi.connection.logNoMatchedPorts("output",b)},f.midi.connection.close=function(a,b){f.midi.connection.stopListening(a.inputs,b)},f.midi.connection.logNoMatchedPorts=function(a,b){d.log(d.logLevel.WARN,"No matching "+a+" ports were found for port specification: ",b[a])},f.midi.connection.expandPortSpec=function(a){if(void 0!==a.input||void 0!==a.output)return a;var b={input:{},output:{}};return"number"==typeof a?b.input=b.output=a:(f.midi.connection.expandPortSpecProperty("manufacturer",a,b),f.midi.connection.expandPortSpecProperty("name",a,b)),b},f.midi.connection.expandPortSpecProperty=function(a,b,c){return c.input[a]=c.output[a]=b[a],c},f.midi.connection.fireEvent=function(a,b){var c=f.midi.read(a.data),d=c.type?b[c.type]:void 0;b.message.fire(c),("noteOn"===c.type||"noteOff"===c.type)&&b.note.fire(c),d&&d.fire(c)}}(),window.fluid=d,f});
\ No newline at end of file
diff --git a/flocking/flocking-core.js b/flocking/flocking-core.js
index 293c66c9..319bf343 100644
--- a/flocking/flocking-core.js
+++ b/flocking/flocking-core.js
@@ -507,8 +507,14 @@ var fluid = fluid || require("infusion"),
flock.interpolate.cubic = flock.interpolate.hermite;
- flock.warn = function (msg) {
- fluid.log(fluid.logLevel.WARN, msg);
+ flock.log = {
+ warn: function (msg) {
+ fluid.log(fluid.logLevel.WARN, msg);
+ },
+
+ debug: function (msg) {
+ fluid.log(fluid.logLevel.INFO, msg);
+ }
};
flock.fail = function (msg) {
@@ -520,7 +526,7 @@ var fluid = fluid || require("infusion"),
};
flock.pathParseError = function (root, path, token) {
- var msg = "Error parsing path: " + path + ". Segment '" + token +
+ var msg = "Error parsing path '" + path + "'. Segment '" + token +
"' could not be resolved. Root object was: " + fluid.prettyPrintJSON(root);
flock.fail(msg);
@@ -569,8 +575,8 @@ var fluid = fluid || require("infusion"),
root = root[prop];
type = typeof root;
if (type !== "object") {
- flock.fail("Error while setting a value at path + " + path +
- ". A non-container object was found at segment " + prop + ". Value: " + root);
+ flock.fail("Error while setting a value at path '" + path +
+ "'. A non-container object was found at segment '" + prop + "'. Value: " + root);
return;
}
@@ -700,23 +706,47 @@ var fluid = fluid || require("infusion"),
flock.input.getValuesForPathObject(root, path);
};
+ flock.input.resolveValue = function (root, path, val, target, inputName, previousInput, valueParser) {
+ // Check to see if the value is actually a "get expression"
+ // (i.e. an EL path wrapped in ${}) and resolve it if necessary.
+ if (typeof val === "string") {
+ var extracted = fluid.extractEL(val, flock.input.valueExpressionSpec);
+ if (extracted) {
+ var resolved = flock.input.getValueForPath(root, extracted);
+ if (resolved === undefined) {
+ flock.log.debug("The value expression '" + val + "' resolved to undefined. " +
+ "If this isn't expected, check to ensure that your path is valid.");
+ }
+
+ return resolved;
+ }
+ }
+
+ return flock.input.shouldExpand(inputName, target) && valueParser ?
+ valueParser(val, path, target, previousInput) : val;
+ };
+
+ flock.input.valueExpressionSpec = {
+ ELstyle: "${}"
+ };
+
flock.input.setValueForPath = function (root, path, val, baseTarget, valueParser) {
path = flock.input.expandPath(path);
var previousInput = flock.get(root, path),
lastDotIdx = path.lastIndexOf("."),
inputName = path.slice(lastDotIdx + 1),
- target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) : baseTarget,
- newInput = flock.input.shouldExpand(inputName, target) && valueParser ?
- valueParser(val, path, target, previousInput) : val;
+ target = lastDotIdx > -1 ? flock.get(root, path.slice(0, path.lastIndexOf(".inputs"))) :
+ baseTarget,
+ resolvedVal = flock.input.resolveValue(root, path, val, target, inputName, previousInput, valueParser);
- flock.set(root, path, newInput);
+ flock.set(root, path, resolvedVal);
if (target && target.onInputChanged) {
target.onInputChanged(inputName);
}
- return newInput;
+ return resolvedVal;
};
flock.input.setValuesForPaths = function (root, valueMap, baseTarget, valueParser) {
diff --git a/flocking/flocking-ugens-browser.js b/flocking/flocking-ugens-browser.js
index 094bb646..6ab1e436 100644
--- a/flocking/flocking-ugens-browser.js
+++ b/flocking/flocking-ugens-browser.js
@@ -366,11 +366,11 @@ var fluid = fluid || require("infusion"),
// TODO: Remove this warning when Safari and Android
// fix their MediaElementAudioSourceNode implementations.
if (flock.platform.browser.safari) {
- flock.warn("MediaElementSourceNode does not work on Safari. " +
+ flock.log.warn("MediaElementSourceNode does not work on Safari. " +
"For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 " +
"and https://bugs.webkit.org/show_bug.cgi?id=125031");
} else if (flock.platform.isAndroid) {
- flock.warn("MediaElementSourceNode does not work on Android. " +
+ flock.log.warn("MediaElementSourceNode does not work on Android. " +
"For more information, see https://code.google.com/p/chromium/issues/detail?id=419446");
}
};
diff --git a/tests/flocking/js/core-tests.js b/tests/flocking/js/core-tests.js
index 291f9c60..a1384452 100644
--- a/tests/flocking/js/core-tests.js
+++ b/tests/flocking/js/core-tests.js
@@ -879,6 +879,45 @@ var fluid = fluid || require("infusion"),
testSetMultiple("input");
});
+ var valueExpressionTestSpecs = [
+ {
+ name: "Value expression resolving into the model",
+ change: {
+ "sine.freq": "${mod.freq.model.value}"
+ },
+ targetUGenName: "mod",
+ expectedPath: "inputs.freq.model.value"
+ },
+ {
+ name: "Value expression resolving to a unit generator instance",
+ change: {
+ "sine.freq": "${mod}"
+ },
+ targetUGenName: "mod"
+ }
+ ];
+
+ var testValueExpressions = function (testSpecs) {
+ fluid.each(testSpecs, function (testSpec) {
+ test(testSpec.name, function () {
+ var synth = createSynth(simpleSynthDef);
+ synth.set(testSpec.change);
+
+ var actual = synth.get(Object.keys(testSpec.change)[0]),
+ expected = synth.get(testSpec.targetUGenName);
+
+ if (testSpec.expectedPath) {
+ expected = fluid.get(expected, testSpec.expectedPath);
+ }
+
+ equal(actual, expected,
+ "The value expression should have been resolved and set at the specified path.");
+ });
+ });
+ };
+
+ testValueExpressions(valueExpressionTestSpecs);
+
test("Synth.set(): correct node evaluation order", function () {
var synth = flock.synth({
synthDef: {