/*! p5.js v0.5.11 June 01, 2017 */ !(function (a) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = a(); else if ("function" == typeof define && define.amd) define([], a); else { var b; (b = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this), (b.p5 = a()); } }) (function () { var a; return (function a(b, c, d) { function e(g, h) { if (!c[g]) { if (!b[g]) { var i = "function" == typeof require && require; if (!h && i) return i(g, !0); if (f) return f(g, !0); var j = new Error("Cannot find module '" + g + "'"); throw ((j.code = "MODULE_NOT_FOUND"), j); } var k = (c[g] = { exports: {} }); b[g][0].call( k.exports, function (a) { var c = b[g][1][a]; return e(c ? c : a); }, k, k.exports, a, b, c, d ); } return c[g].exports; } for ( var f = "function" == typeof require && require, g = 0; g < d.length; g++ ) e(d[g]); return e; })( { 1: [function (a, b, c) {}, {}], 2: [ function (b, c, d) { (function (e, f) { !(function (b, e) { "object" == typeof d && void 0 !== c ? (c.exports = e()) : "function" == typeof a && a.amd ? a(e) : (b.ES6Promise = e()); })(this, function () { "use strict"; function a(a) { return ( "function" == typeof a || ("object" == typeof a && null !== a) ); } function c(a) { return "function" == typeof a; } function d(a) { X = a; } function g(a) { Y = a; } function h() { return function () { return e.nextTick(m); }; } function i() { return void 0 !== W ? function () { W(m); } : l(); } function j() { var a = 0, b = new _(m), c = document.createTextNode(""); return ( b.observe(c, { characterData: !0 }), function () { c.data = a = ++a % 2; } ); } function k() { var a = new MessageChannel(); return ( (a.port1.onmessage = m), function () { return a.port2.postMessage(0); } ); } function l() { var a = setTimeout; return function () { return a(m, 1); }; } function m() { for (var a = 0; a < V; a += 2) { (0, ca[a])(ca[a + 1]), (ca[a] = void 0), (ca[a + 1] = void 0); } V = 0; } function n() { try { var a = b, c = a("vertx"); return ( (W = c.runOnLoop || c.runOnContext), i() ); } catch (a) { return l(); } } function o(a, b) { var c = arguments, d = this, e = new this.constructor(q); void 0 === e[ea] && J(e); var f = d._state; return ( f ? (function () { var a = c[f - 1]; Y(function () { return G(f, e, a, d._result); }); })() : C(d, e, a, b), e ); } function p(a) { var b = this; if ( a && "object" == typeof a && a.constructor === b ) return a; var c = new b(q); return y(c, a), c; } function q() {} function r() { return new TypeError( "You cannot resolve a promise with itself" ); } function s() { return new TypeError( "A promises callback cannot return that same promise." ); } function t(a) { try { return a.then; } catch (a) { return (ia.error = a), ia; } } function u(a, b, c, d) { try { a.call(b, c, d); } catch (a) { return a; } } function v(a, b, c) { Y(function (a) { var d = !1, e = u( c, b, function (c) { d || ((d = !0), b !== c ? y(a, c) : A(a, c)); }, function (b) { d || ((d = !0), B(a, b)); }, "Settle: " + (a._label || " unknown promise") ); !d && e && ((d = !0), B(a, e)); }, a); } function w(a, b) { b._state === ga ? A(a, b._result) : b._state === ha ? B(a, b._result) : C( b, void 0, function (b) { return y(a, b); }, function (b) { return B(a, b); } ); } function x(a, b, d) { b.constructor === a.constructor && d === o && b.constructor.resolve === p ? w(a, b) : d === ia ? B(a, ia.error) : void 0 === d ? A(a, b) : c(d) ? v(a, b, d) : A(a, b); } function y(b, c) { b === c ? B(b, r()) : a(c) ? x(b, c, t(c)) : A(b, c); } function z(a) { a._onerror && a._onerror(a._result), D(a); } function A(a, b) { a._state === fa && ((a._result = b), (a._state = ga), 0 !== a._subscribers.length && Y(D, a)); } function B(a, b) { a._state === fa && ((a._state = ha), (a._result = b), Y(z, a)); } function C(a, b, c, d) { var e = a._subscribers, f = e.length; (a._onerror = null), (e[f] = b), (e[f + ga] = c), (e[f + ha] = d), 0 === f && a._state && Y(D, a); } function D(a) { var b = a._subscribers, c = a._state; if (0 !== b.length) { for ( var d = void 0, e = void 0, f = a._result, g = 0; g < b.length; g += 3 ) (d = b[g]), (e = b[g + c]), d ? G(c, d, e, f) : e(f); a._subscribers.length = 0; } } function E() { this.error = null; } function F(a, b) { try { return a(b); } catch (a) { return (ja.error = a), ja; } } function G(a, b, d, e) { var f = c(d), g = void 0, h = void 0, i = void 0, j = void 0; if (f) { if ( ((g = F(d, e)), g === ja ? ((j = !0), (h = g.error), (g = null)) : (i = !0), b === g) ) return void B(b, s()); } else (g = e), (i = !0); b._state !== fa || (f && i ? y(b, g) : j ? B(b, h) : a === ga ? A(b, g) : a === ha && B(b, g)); } function H(a, b) { try { b( function (b) { y(a, b); }, function (b) { B(a, b); } ); } catch (b) { B(a, b); } } function I() { return ka++; } function J(a) { (a[ea] = ka++), (a._state = void 0), (a._result = void 0), (a._subscribers = []); } function K(a, b) { (this._instanceConstructor = a), (this.promise = new a(q)), this.promise[ea] || J(this.promise), U(b) ? ((this._input = b), (this.length = b.length), (this._remaining = b.length), (this._result = new Array( this.length )), 0 === this.length ? A(this.promise, this._result) : ((this.length = this.length || 0), this._enumerate(), 0 === this._remaining && A( this.promise, this._result ))) : B(this.promise, L()); } function L() { return new Error( "Array Methods must be provided an Array" ); } function M(a) { return new K(this, a).promise; } function N(a) { var b = this; return new b( U(a) ? function (c, d) { for ( var e = a.length, f = 0; f < e; f++ ) b.resolve(a[f]).then(c, d); } : function (a, b) { return b( new TypeError( "You must pass an array to race." ) ); } ); } function O(a) { var b = this, c = new b(q); return B(c, a), c; } function P() { throw new TypeError( "You must pass a resolver function as the first argument to the promise constructor" ); } function Q() { throw new TypeError( "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function." ); } function R(a) { (this[ea] = I()), (this._result = this._state = void 0), (this._subscribers = []), q !== a && ("function" != typeof a && P(), this instanceof R ? H(this, a) : Q()); } function S() { var a = void 0; if (void 0 !== f) a = f; else if ("undefined" != typeof self) a = self; else try { a = Function("return this")(); } catch (a) { throw new Error( "polyfill failed because global object is unavailable in this environment" ); } var b = a.Promise; if (b) { var c = null; try { c = Object.prototype.toString.call( b.resolve() ); } catch (a) {} if ("[object Promise]" === c && !b.cast) return; } a.Promise = R; } var T = void 0; T = Array.isArray ? Array.isArray : function (a) { return ( "[object Array]" === Object.prototype.toString.call(a) ); }; var U = T, V = 0, W = void 0, X = void 0, Y = function (a, b) { (ca[V] = a), (ca[V + 1] = b), 2 === (V += 2) && (X ? X(m) : da()); }, Z = "undefined" != typeof window ? window : void 0, $ = Z || {}, _ = $.MutationObserver || $.WebKitMutationObserver, aa = "undefined" == typeof self && void 0 !== e && "[object process]" === {}.toString.call(e), ba = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel, ca = new Array(1e3), da = void 0; da = aa ? h() : _ ? j() : ba ? k() : void 0 === Z && "function" == typeof b ? n() : l(); var ea = Math.random().toString(36).substring(16), fa = void 0, ga = 1, ha = 2, ia = new E(), ja = new E(), ka = 0; return ( (K.prototype._enumerate = function () { for ( var a = this.length, b = this._input, c = 0; this._state === fa && c < a; c++ ) this._eachEntry(b[c], c); }), (K.prototype._eachEntry = function (a, b) { var c = this._instanceConstructor, d = c.resolve; if (d === p) { var e = t(a); if (e === o && a._state !== fa) this._settledAt( a._state, b, a._result ); else if ("function" != typeof e) this._remaining--, (this._result[b] = a); else if (c === R) { var f = new c(q); x(f, a, e), this._willSettleAt(f, b); } else this._willSettleAt( new c(function (b) { return b(a); }), b ); } else this._willSettleAt(d(a), b); }), (K.prototype._settledAt = function (a, b, c) { var d = this.promise; d._state === fa && (this._remaining--, a === ha ? B(d, c) : (this._result[b] = c)), 0 === this._remaining && A(d, this._result); }), (K.prototype._willSettleAt = function (a, b) { var c = this; C( a, void 0, function (a) { return c._settledAt(ga, b, a); }, function (a) { return c._settledAt(ha, b, a); } ); }), (R.all = M), (R.race = N), (R.resolve = p), (R.reject = O), (R._setScheduler = d), (R._setAsap = g), (R._asap = Y), (R.prototype = { constructor: R, then: o, catch: function (a) { return this.then(null, a); }, }), (R.polyfill = S), (R.Promise = R), R ); }); }.call( this, b("_process"), "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {} )); }, { _process: 31 }, ], 3: [ function (b, c, d) { !(function (b, e) { if ("function" == typeof a && a.amd) a(["exports", "module"], e); else if (void 0 !== d && void 0 !== c) e(d, c); else { var f = { exports: {} }; e(f.exports, f), (b.fetchJsonp = f.exports); } })(this, function (a, b) { "use strict"; function c() { return ( "jsonp_" + Date.now() + "_" + Math.ceil(1e5 * Math.random()) ); } function d(a) { try { delete window[a]; } catch (b) { window[a] = void 0; } } function e(a) { var b = document.getElementById(a); document .getElementsByTagName("head")[0] .removeChild(b); } function f(a) { var b = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], f = a, h = b.timeout || g.timeout, i = b.jsonpCallback || g.jsonpCallback, j = void 0; return new Promise(function (g, k) { var l = b.jsonpCallbackFunction || c(), m = i + "_" + l; (window[l] = function (a) { g({ ok: !0, json: function () { return Promise.resolve(a); }, }), j && clearTimeout(j), e(m), d(l); }), (f += f.indexOf("?") === -1 ? "?" : "&"); var n = document.createElement("script"); n.setAttribute("src", "" + f + i + "=" + l), (n.id = m), document .getElementsByTagName("head")[0] .appendChild(n), (j = setTimeout(function () { k( new Error( "JSONP request to " + a + " timed out" ) ), d(l), e(m); }, h)); }); } var g = { timeout: 5e3, jsonpCallback: "callback", jsonpCallbackFunction: null, }; b.exports = f; }); }, {}, ], 4: [ function (a, b, c) { "use strict"; (c.argument = function (a, b) { if (!a) throw new Error(b); }), (c.assert = c.argument); }, {}, ], 5: [ function (a, b, c) { "use strict"; function d(a, b, c, d, e) { a.beginPath(), a.moveTo(b, c), a.lineTo(d, e), a.stroke(); } c.line = d; }, {}, ], 6: [ function (a, b, c) { "use strict"; function d(a) { this.font = a; } function e(a) { this.cmap = a; } function f(a, b) { (this.encoding = a), (this.charset = b); } function g(a) { var b; switch (a.version) { case 1: this.names = c.standardNames.slice(); break; case 2: for ( this.names = new Array(a.numberOfGlyphs), b = 0; b < a.numberOfGlyphs; b++ ) a.glyphNameIndex[b] < c.standardNames.length ? (this.names[b] = c.standardNames[ a.glyphNameIndex[b] ]) : (this.names[b] = a.names[ a.glyphNameIndex[b] - c.standardNames.length ]); break; case 2.5: for ( this.names = new Array(a.numberOfGlyphs), b = 0; b < a.numberOfGlyphs; b++ ) this.names[b] = c.standardNames[ b + a.glyphNameIndex[b] ]; break; case 3: this.names = []; } } function h(a) { for ( var b, c = a.tables.cmap.glyphIndexMap, d = Object.keys(c), e = 0; e < d.length; e += 1 ) { var f = d[e], g = c[f]; (b = a.glyphs.get(g)), b.addUnicode(parseInt(f)); } for (e = 0; e < a.glyphs.length; e += 1) (b = a.glyphs.get(e)), a.cffEncoding ? (b.name = a.cffEncoding.charset[e]) : (b.name = a.glyphNames.glyphIndexToName(e)); } var i = [ ".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "266 ff", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold", ], j = [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", ], k = [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", ], l = [ ".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat", ]; (d.prototype.charToGlyphIndex = function (a) { var b = a.charCodeAt(0), c = this.font.glyphs; if (!c) return null; for (var d = 0; d < c.length; d += 1) for ( var e = c.get(d), f = 0; f < e.unicodes.length; f += 1 ) if (e.unicodes[f] === b) return d; }), (e.prototype.charToGlyphIndex = function (a) { return ( this.cmap.glyphIndexMap[a.charCodeAt(0)] || 0 ); }), (f.prototype.charToGlyphIndex = function (a) { var b = a.charCodeAt(0), c = this.encoding[b]; return this.charset.indexOf(c); }), (g.prototype.nameToGlyphIndex = function (a) { return this.names.indexOf(a); }), (g.prototype.glyphIndexToName = function (a) { return this.names[a]; }), (c.cffStandardStrings = i), (c.cffStandardEncoding = j), (c.cffExpertEncoding = k), (c.standardNames = l), (c.DefaultEncoding = d), (c.CmapEncoding = e), (c.CffEncoding = f), (c.GlyphNames = g), (c.addGlyphNames = h); }, {}, ], 7: [ function (a, b, c) { "use strict"; function d(a) { (a = a || {}), (this.names = { fontFamily: { en: a.familyName || " " }, fontSubfamily: { en: a.styleName || " " }, designer: { en: a.designer || " " }, designerURL: { en: a.designerURL || " " }, manufacturer: { en: a.manufacturer || " " }, manufacturerURL: { en: a.manufacturerURL || " ", }, license: { en: a.license || " " }, licenseURL: { en: a.licenseURL || " " }, version: { en: a.version || "Version 0.1" }, description: { en: a.description || " " }, copyright: { en: a.copyright || " " }, trademark: { en: a.trademark || " " }, }), (this.unitsPerEm = a.unitsPerEm || 1e3), (this.ascender = a.ascender), (this.descender = a.descender), (this.supported = !0), (this.glyphs = new h.GlyphSet( this, a.glyphs || [] )), (this.encoding = new g.DefaultEncoding(this)), (this.tables = {}); } var e = a("./path"), f = a("./tables/sfnt"), g = a("./encoding"), h = a("./glyphset"); (d.prototype.hasChar = function (a) { return null !== this.encoding.charToGlyphIndex(a); }), (d.prototype.charToGlyphIndex = function (a) { return this.encoding.charToGlyphIndex(a); }), (d.prototype.charToGlyph = function (a) { var b = this.charToGlyphIndex(a), c = this.glyphs.get(b); return c || (c = this.glyphs.get(0)), c; }), (d.prototype.stringToGlyphs = function (a) { for (var b = [], c = 0; c < a.length; c += 1) { var d = a[c]; b.push(this.charToGlyph(d)); } return b; }), (d.prototype.nameToGlyphIndex = function (a) { return this.glyphNames.nameToGlyphIndex(a); }), (d.prototype.nameToGlyph = function (a) { var b = this.nametoGlyphIndex(a), c = this.glyphs.get(b); return c || (c = this.glyphs.get(0)), c; }), (d.prototype.glyphIndexToName = function (a) { return this.glyphNames.glyphIndexToName ? this.glyphNames.glyphIndexToName(a) : ""; }), (d.prototype.getKerningValue = function (a, b) { (a = a.index || a), (b = b.index || b); var c = this.getGposKerningValue; return c ? c(a, b) : this.kerningPairs[a + "," + b] || 0; }), (d.prototype.forEachGlyph = function ( a, b, c, d, e, f ) { (b = void 0 !== b ? b : 0), (c = void 0 !== c ? c : 0), (d = void 0 !== d ? d : 72), (e = e || {}); for ( var g = void 0 === e.kerning || e.kerning, h = (1 / this.unitsPerEm) * d, i = this.stringToGlyphs(a), j = 0; j < i.length; j += 1 ) { var k = i[j]; if ( (f(k, b, c, d, e), k.advanceWidth && (b += k.advanceWidth * h), g && j < i.length - 1) ) { b += this.getKerningValue(k, i[j + 1]) * h; } } }), (d.prototype.getPath = function (a, b, c, d, f) { var g = new e.Path(); return ( this.forEachGlyph( a, b, c, d, f, function (a, b, c, d) { var e = a.getPath(b, c, d); g.extend(e); } ), g ); }), (d.prototype.draw = function (a, b, c, d, e, f) { this.getPath(b, c, d, e, f).draw(a); }), (d.prototype.drawPoints = function (a, b, c, d, e, f) { this.forEachGlyph( b, c, d, e, f, function (b, c, d, e) { b.drawPoints(a, c, d, e); } ); }), (d.prototype.drawMetrics = function (a, b, c, d, e, f) { this.forEachGlyph( b, c, d, e, f, function (b, c, d, e) { b.drawMetrics(a, c, d, e); } ); }), (d.prototype.getEnglishName = function (a) { var b = this.names[a]; if (b) return b.en; }), (d.prototype.validate = function () { function a(a, b) { a || c.push(b); } function b(b) { var c = d.getEnglishName(b); a( c && c.trim().length > 0, "No English " + b + " specified." ); } var c = [], d = this; b("fontFamily"), b("weightName"), b("manufacturer"), b("copyright"), b("version"), a( this.unitsPerEm > 0, "No unitsPerEm specified." ); }), (d.prototype.toTables = function () { return f.fontToTable(this); }), (d.prototype.toBuffer = function () { for ( var a = this.toTables(), b = a.encode(), c = new ArrayBuffer(b.length), d = new Uint8Array(c), e = 0; e < b.length; e++ ) d[e] = b[e]; return c; }), (d.prototype.download = function () { var a = this.getEnglishName("fontFamily"), b = this.getEnglishName("fontSubfamily"), c = a.replace(/\s/g, "") + "-" + b + ".otf", d = this.toBuffer(); (window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem), window.requestFileSystem( window.TEMPORARY, d.byteLength, function (a) { a.root.getFile( c, { create: !0 }, function (a) { a.createWriter(function (b) { var c = new DataView(d), e = new Blob([c], { type: "font/opentype", }); b.write(e), b.addEventListener( "writeend", function () { location.href = a.toURL(); }, !1 ); }); } ); }, function (a) { throw a; } ); }), (c.Font = d); }, { "./encoding": 6, "./glyphset": 9, "./path": 12, "./tables/sfnt": 29, }, ], 8: [ function (a, b, c) { "use strict"; function d(a, b) { var c = b || { commands: [] }; return { configurable: !0, get: function () { return "function" == typeof c && (c = c()), c; }, set: function (a) { c = a; }, }; } function e(a) { this.bindConstructorValues(a); } var f = a("./check"), g = a("./draw"), h = a("./path"); (e.prototype.bindConstructorValues = function (a) { (this.index = a.index || 0), (this.name = a.name || null), (this.unicode = a.unicode || void 0), (this.unicodes = a.unicodes || void 0 !== a.unicode ? [a.unicode] : []), a.xMin && (this.xMin = a.xMin), a.yMin && (this.yMin = a.yMin), a.xMax && (this.xMax = a.xMax), a.yMax && (this.yMax = a.yMax), a.advanceWidth && (this.advanceWidth = a.advanceWidth), Object.defineProperty( this, "path", d(this, a.path) ); }), (e.prototype.addUnicode = function (a) { 0 === this.unicodes.length && (this.unicode = a), this.unicodes.push(a); }), (e.prototype.getPath = function (a, b, c) { (a = void 0 !== a ? a : 0), (b = void 0 !== b ? b : 0), (c = void 0 !== c ? c : 72); for ( var d = (1 / this.path.unitsPerEm) * c, e = new h.Path(), f = this.path.commands, g = 0; g < f.length; g += 1 ) { var i = f[g]; "M" === i.type ? e.moveTo(a + i.x * d, b + -i.y * d) : "L" === i.type ? e.lineTo(a + i.x * d, b + -i.y * d) : "Q" === i.type ? e.quadraticCurveTo( a + i.x1 * d, b + -i.y1 * d, a + i.x * d, b + -i.y * d ) : "C" === i.type ? e.curveTo( a + i.x1 * d, b + -i.y1 * d, a + i.x2 * d, b + -i.y2 * d, a + i.x * d, b + -i.y * d ) : "Z" === i.type && e.closePath(); } return e; }), (e.prototype.getContours = function () { if (void 0 === this.points) return []; for ( var a = [], b = [], c = 0; c < this.points.length; c += 1 ) { var d = this.points[c]; b.push(d), d.lastPointOfContour && (a.push(b), (b = [])); } return ( f.argument( 0 === b.length, "There are still points left in the current contour." ), a ); }), (e.prototype.getMetrics = function () { for ( var a = this.path.commands, b = [], c = [], d = 0; d < a.length; d += 1 ) { var e = a[d]; "Z" !== e.type && (b.push(e.x), c.push(e.y)), ("Q" !== e.type && "C" !== e.type) || (b.push(e.x1), c.push(e.y1)), "C" === e.type && (b.push(e.x2), c.push(e.y2)); } var f = { xMin: Math.min.apply(null, b), yMin: Math.min.apply(null, c), xMax: Math.max.apply(null, b), yMax: Math.max.apply(null, c), leftSideBearing: 0, }; return ( isFinite(f.xMin) || (f.xMin = 0), isFinite(f.xMax) || (f.xMax = this.advanceWidth), isFinite(f.yMin) || (f.yMin = 0), isFinite(f.yMax) || (f.yMax = 0), (f.rightSideBearing = this.advanceWidth - f.leftSideBearing - (f.xMax - f.xMin)), f ); }), (e.prototype.draw = function (a, b, c, d) { this.getPath(b, c, d).draw(a); }), (e.prototype.drawPoints = function (a, b, c, d) { function e(b, c, d, e) { var f = 2 * Math.PI; a.beginPath(); for (var g = 0; g < b.length; g += 1) a.moveTo(c + b[g].x * e, d + b[g].y * e), a.arc( c + b[g].x * e, d + b[g].y * e, 2, 0, f, !1 ); a.closePath(), a.fill(); } (b = void 0 !== b ? b : 0), (c = void 0 !== c ? c : 0), (d = void 0 !== d ? d : 24); for ( var f = (1 / this.path.unitsPerEm) * d, g = [], h = [], i = this.path, j = 0; j < i.commands.length; j += 1 ) { var k = i.commands[j]; void 0 !== k.x && g.push({ x: k.x, y: -k.y }), void 0 !== k.x1 && h.push({ x: k.x1, y: -k.y1 }), void 0 !== k.x2 && h.push({ x: k.x2, y: -k.y2 }); } (a.fillStyle = "blue"), e(g, b, c, f), (a.fillStyle = "red"), e(h, b, c, f); }), (e.prototype.drawMetrics = function (a, b, c, d) { var e; (b = void 0 !== b ? b : 0), (c = void 0 !== c ? c : 0), (d = void 0 !== d ? d : 24), (e = (1 / this.path.unitsPerEm) * d), (a.lineWidth = 1), (a.strokeStyle = "black"), g.line(a, b, -1e4, b, 1e4), g.line(a, -1e4, c, 1e4, c); var f = this.xMin || 0, h = this.yMin || 0, i = this.xMax || 0, j = this.yMax || 0, k = this.advanceWidth || 0; (a.strokeStyle = "blue"), g.line(a, b + f * e, -1e4, b + f * e, 1e4), g.line(a, b + i * e, -1e4, b + i * e, 1e4), g.line(a, -1e4, c + -h * e, 1e4, c + -h * e), g.line(a, -1e4, c + -j * e, 1e4, c + -j * e), (a.strokeStyle = "green"), g.line(a, b + k * e, -1e4, b + k * e, 1e4); }), (c.Glyph = e); }, { "./check": 4, "./draw": 5, "./path": 12 }, ], 9: [ function (a, b, c) { "use strict"; function d(a, b) { if ( ((this.font = a), (this.glyphs = {}), Array.isArray(b)) ) for (var c = 0; c < b.length; c++) this.glyphs[c] = b[c]; this.length = (b && b.length) || 0; } function e(a, b) { return new h.Glyph({ index: b, font: a }); } function f(a, b, c, d, e, f) { return function () { var g = new h.Glyph({ index: b, font: a }); return ( (g.path = function () { c(g, d, e); var b = f(a.glyphs, g); return (b.unitsPerEm = a.unitsPerEm), b; }), g ); }; } function g(a, b, c, d) { return function () { var e = new h.Glyph({ index: b, font: a }); return ( (e.path = function () { var b = c(a, e, d); return (b.unitsPerEm = a.unitsPerEm), b; }), e ); }; } var h = a("./glyph"); (d.prototype.get = function (a) { return ( "function" == typeof this.glyphs[a] && (this.glyphs[a] = this.glyphs[a]()), this.glyphs[a] ); }), (d.prototype.push = function (a, b) { (this.glyphs[a] = b), this.length++; }), (c.GlyphSet = d), (c.glyphLoader = e), (c.ttfGlyphLoader = f), (c.cffGlyphLoader = g); }, { "./glyph": 8 }, ], 10: [ function (a, b, c) { "use strict"; function d(a) { for ( var b = new ArrayBuffer(a.length), c = new Uint8Array(b), d = 0; d < a.length; d += 1 ) c[d] = a[d]; return b; } function e(b, c) { a("fs").readFile(b, function (a, b) { if (a) return c(a.message); c(null, d(b)); }); } function f(a, b) { var c = new XMLHttpRequest(); c.open("get", a, !0), (c.responseType = "arraybuffer"), (c.onload = function () { return 200 !== c.status ? b( "Font could not be loaded: " + c.statusText ) : b(null, c.response); }), c.send(); } function g(a) { var b, c, d, e, f, g, h, i, l, n, D = new k.Font(), E = new DataView(a, 0), F = m.getFixed(E, 0); if (1 === F) D.outlinesFormat = "truetype"; else { if ("OTTO" !== (F = m.getTag(E, 0))) throw new Error( "Unsupported OpenType version " + F ); D.outlinesFormat = "cff"; } for ( var G = m.getUShort(E, 4), H = 12, I = 0; I < G; I += 1 ) { var J = m.getTag(E, H), K = m.getULong(E, H + 8); switch (J) { case "cmap": (D.tables.cmap = o.parse(E, K)), (D.encoding = new j.CmapEncoding( D.tables.cmap )); break; case "fvar": e = K; break; case "head": (D.tables.head = t.parse(E, K)), (D.unitsPerEm = D.tables.head.unitsPerEm), (b = D.tables.head.indexToLocFormat); break; case "hhea": (D.tables.hhea = u.parse(E, K)), (D.ascender = D.tables.hhea.ascender), (D.descender = D.tables.hhea.descender), (D.numberOfHMetrics = D.tables.hhea.numberOfHMetrics); break; case "hmtx": h = K; break; case "ltag": c = x.parse(E, K); break; case "maxp": (D.tables.maxp = z.parse(E, K)), (D.numGlyphs = D.tables.maxp.numGlyphs); break; case "name": n = K; break; case "OS/2": D.tables.os2 = B.parse(E, K); break; case "post": (D.tables.post = C.parse(E, K)), (D.glyphNames = new j.GlyphNames( D.tables.post )); break; case "glyf": f = K; break; case "loca": l = K; break; case "CFF ": d = K; break; case "kern": i = K; break; case "GPOS": g = K; } H += 16; } if ( ((D.tables.name = A.parse(E, n, c)), (D.names = D.tables.name), f && l) ) { var L = 0 === b, M = y.parse(E, l, D.numGlyphs, L); D.glyphs = r.parse(E, f, M, D); } else { if (!d) throw new Error( "Font doesn't contain TrueType or CFF outlines." ); p.parse(E, d, D); } return ( v.parse( E, h, D.numberOfHMetrics, D.numGlyphs, D.glyphs ), j.addGlyphNames(D), (D.kerningPairs = i ? w.parse(E, i) : {}), g && s.parse(E, g, D), e && (D.tables.fvar = q.parse(E, e, D.names)), D ); } function h(a, b) { ("undefined" == typeof window ? e : f)( a, function (a, c) { return a ? b(a) : b(null, g(c)); } ); } function i(b) { return g(d(a("fs").readFileSync(b))); } var j = a("./encoding"), k = a("./font"), l = a("./glyph"), m = a("./parse"), n = a("./path"), o = a("./tables/cmap"), p = a("./tables/cff"), q = a("./tables/fvar"), r = a("./tables/glyf"), s = a("./tables/gpos"), t = a("./tables/head"), u = a("./tables/hhea"), v = a("./tables/hmtx"), w = a("./tables/kern"), x = a("./tables/ltag"), y = a("./tables/loca"), z = a("./tables/maxp"), A = a("./tables/name"), B = a("./tables/os2"), C = a("./tables/post"); (c._parse = m), (c.Font = k.Font), (c.Glyph = l.Glyph), (c.Path = n.Path), (c.parse = g), (c.load = h), (c.loadSync = i); }, { "./encoding": 6, "./font": 7, "./glyph": 8, "./parse": 11, "./path": 12, "./tables/cff": 14, "./tables/cmap": 15, "./tables/fvar": 16, "./tables/glyf": 17, "./tables/gpos": 18, "./tables/head": 19, "./tables/hhea": 20, "./tables/hmtx": 21, "./tables/kern": 22, "./tables/loca": 23, "./tables/ltag": 24, "./tables/maxp": 25, "./tables/name": 26, "./tables/os2": 27, "./tables/post": 28, fs: 1, }, ], 11: [ function (a, b, c) { "use strict"; function d(a, b) { (this.data = a), (this.offset = b), (this.relativeOffset = 0); } (c.getByte = function (a, b) { return a.getUint8(b); }), (c.getCard8 = c.getByte), (c.getUShort = function (a, b) { return a.getUint16(b, !1); }), (c.getCard16 = c.getUShort), (c.getShort = function (a, b) { return a.getInt16(b, !1); }), (c.getULong = function (a, b) { return a.getUint32(b, !1); }), (c.getFixed = function (a, b) { return ( a.getInt16(b, !1) + a.getUint16(b + 2, !1) / 65535 ); }), (c.getTag = function (a, b) { for (var c = "", d = b; d < b + 4; d += 1) c += String.fromCharCode(a.getInt8(d)); return c; }), (c.getOffset = function (a, b, c) { for (var d = 0, e = 0; e < c; e += 1) (d <<= 8), (d += a.getUint8(b + e)); return d; }), (c.getBytes = function (a, b, c) { for (var d = [], e = b; e < c; e += 1) d.push(a.getUint8(e)); return d; }), (c.bytesToString = function (a) { for (var b = "", c = 0; c < a.length; c += 1) b += String.fromCharCode(a[c]); return b; }); var e = { byte: 1, uShort: 2, short: 2, uLong: 4, fixed: 4, longDateTime: 8, tag: 4, }; (d.prototype.parseByte = function () { var a = this.data.getUint8( this.offset + this.relativeOffset ); return (this.relativeOffset += 1), a; }), (d.prototype.parseChar = function () { var a = this.data.getInt8( this.offset + this.relativeOffset ); return (this.relativeOffset += 1), a; }), (d.prototype.parseCard8 = d.prototype.parseByte), (d.prototype.parseUShort = function () { var a = this.data.getUint16( this.offset + this.relativeOffset ); return (this.relativeOffset += 2), a; }), (d.prototype.parseCard16 = d.prototype.parseUShort), (d.prototype.parseSID = d.prototype.parseUShort), (d.prototype.parseOffset16 = d.prototype.parseUShort), (d.prototype.parseShort = function () { var a = this.data.getInt16( this.offset + this.relativeOffset ); return (this.relativeOffset += 2), a; }), (d.prototype.parseF2Dot14 = function () { var a = this.data.getInt16( this.offset + this.relativeOffset ) / 16384; return (this.relativeOffset += 2), a; }), (d.prototype.parseULong = function () { var a = c.getULong( this.data, this.offset + this.relativeOffset ); return (this.relativeOffset += 4), a; }), (d.prototype.parseFixed = function () { var a = c.getFixed( this.data, this.offset + this.relativeOffset ); return (this.relativeOffset += 4), a; }), (d.prototype.parseOffset16List = d.prototype.parseUShortList = function (a) { for ( var b = new Array(a), d = this.data, e = this.offset + this.relativeOffset, f = 0; f < a; f++ ) (b[f] = c.getUShort(d, e)), (e += 2); return (this.relativeOffset += 2 * a), b; }), (d.prototype.parseString = function (a) { var b = this.data, c = this.offset + this.relativeOffset, d = ""; this.relativeOffset += a; for (var e = 0; e < a; e++) d += String.fromCharCode(b.getUint8(c + e)); return d; }), (d.prototype.parseTag = function () { return this.parseString(4); }), (d.prototype.parseLongDateTime = function () { var a = c.getULong( this.data, this.offset + this.relativeOffset + 4 ); return (this.relativeOffset += 8), a; }), (d.prototype.parseFixed = function () { var a = c.getULong( this.data, this.offset + this.relativeOffset ); return (this.relativeOffset += 4), a / 65536; }), (d.prototype.parseVersion = function () { var a = c.getUShort( this.data, this.offset + this.relativeOffset ), b = c.getUShort( this.data, this.offset + this.relativeOffset + 2 ); return ( (this.relativeOffset += 4), a + b / 4096 / 10 ); }), (d.prototype.skip = function (a, b) { void 0 === b && (b = 1), (this.relativeOffset += e[a] * b); }), (c.Parser = d); }, {}, ], 12: [ function (a, b, c) { "use strict"; function d() { (this.commands = []), (this.fill = "black"), (this.stroke = null), (this.strokeWidth = 1); } (d.prototype.moveTo = function (a, b) { this.commands.push({ type: "M", x: a, y: b }); }), (d.prototype.lineTo = function (a, b) { this.commands.push({ type: "L", x: a, y: b }); }), (d.prototype.curveTo = d.prototype.bezierCurveTo = function (a, b, c, d, e, f) { this.commands.push({ type: "C", x1: a, y1: b, x2: c, y2: d, x: e, y: f, }); }), (d.prototype.quadTo = d.prototype.quadraticCurveTo = function (a, b, c, d) { this.commands.push({ type: "Q", x1: a, y1: b, x: c, y: d, }); }), (d.prototype.close = d.prototype.closePath = function () { this.commands.push({ type: "Z" }); }), (d.prototype.extend = function (a) { a.commands && (a = a.commands), Array.prototype.push.apply(this.commands, a); }), (d.prototype.draw = function (a) { a.beginPath(); for (var b = 0; b < this.commands.length; b += 1) { var c = this.commands[b]; "M" === c.type ? a.moveTo(c.x, c.y) : "L" === c.type ? a.lineTo(c.x, c.y) : "C" === c.type ? a.bezierCurveTo( c.x1, c.y1, c.x2, c.y2, c.x, c.y ) : "Q" === c.type ? a.quadraticCurveTo(c.x1, c.y1, c.x, c.y) : "Z" === c.type && a.closePath(); } this.fill && ((a.fillStyle = this.fill), a.fill()), this.stroke && ((a.strokeStyle = this.stroke), (a.lineWidth = this.strokeWidth), a.stroke()); }), (d.prototype.toPathData = function (a) { function b(b) { return Math.round(b) === b ? "" + Math.round(b) : b.toFixed(a); } function c() { for ( var a = "", c = 0; c < arguments.length; c += 1 ) { var d = arguments[c]; d >= 0 && c > 0 && (a += " "), (a += b(d)); } return a; } a = void 0 !== a ? a : 2; for ( var d = "", e = 0; e < this.commands.length; e += 1 ) { var f = this.commands[e]; "M" === f.type ? (d += "M" + c(f.x, f.y)) : "L" === f.type ? (d += "L" + c(f.x, f.y)) : "C" === f.type ? (d += "C" + c(f.x1, f.y1, f.x2, f.y2, f.x, f.y)) : "Q" === f.type ? (d += "Q" + c(f.x1, f.y1, f.x, f.y)) : "Z" === f.type && (d += "Z"); } return d; }), (d.prototype.toSVG = function (a) { var b = '> 4, g = 15 & e; if (f === c) break; if (((b += d[f]), g === c)) break; b += d[g]; } return parseFloat(b); } function g(a, b) { var c, d, e, g; if (28 === b) return ( (c = a.parseByte()), (d = a.parseByte()), (c << 8) | d ); if (29 === b) return ( (c = a.parseByte()), (d = a.parseByte()), (e = a.parseByte()), (g = a.parseByte()), (c << 24) | (d << 16) | (e << 8) | g ); if (30 === b) return f(a); if (b >= 32 && b <= 246) return b - 139; if (b >= 247 && b <= 250) return ( (c = a.parseByte()), 256 * (b - 247) + c + 108 ); if (b >= 251 && b <= 254) return ( (c = a.parseByte()), 256 * -(b - 251) - c - 108 ); throw new Error("Invalid b0 " + b); } function h(a) { for (var b = {}, c = 0; c < a.length; c += 1) { var d, e = a[c][0], f = a[c][1]; if ( ((d = 1 === f.length ? f[0] : f), b.hasOwnProperty(e)) ) throw new Error( "Object " + b + " already has key " + e ); b[e] = d; } return b; } function i(a, b, c) { b = void 0 !== b ? b : 0; var d = new J.Parser(a, b), e = [], f = []; for ( c = void 0 !== c ? c : a.length; d.relativeOffset < c; ) { var i = d.parseByte(); i <= 21 ? (12 === i && (i = 1200 + d.parseByte()), e.push([i, f]), (f = [])) : f.push(g(d, i)); } return h(e); } function j(a, b) { return (b = b <= 390 ? H.cffStandardStrings[b] : a[b - 391]); } function k(a, b, c) { for (var d = {}, e = 0; e < b.length; e += 1) { var f = b[e], g = a[f.op]; void 0 === g && (g = void 0 !== f.value ? f.value : null), "SID" === f.type && (g = j(c, g)), (d[f.name] = g); } return d; } function l(a, b) { var c = {}; return ( (c.formatMajor = J.getCard8(a, b)), (c.formatMinor = J.getCard8(a, b + 1)), (c.size = J.getCard8(a, b + 2)), (c.offsetSize = J.getCard8(a, b + 3)), (c.startOffset = b), (c.endOffset = b + 4), c ); } function m(a, b) { return k(i(a, 0, a.byteLength), M, b); } function n(a, b, c, d) { return k(i(a, b, c), N, d); } function o(a, b, c, d) { var e, f, g, h = new J.Parser(a, b); c -= 1; var i = [".notdef"], k = h.parseCard8(); if (0 === k) for (e = 0; e < c; e += 1) (f = h.parseSID()), i.push(j(d, f)); else if (1 === k) for (; i.length <= c; ) for ( f = h.parseSID(), g = h.parseCard8(), e = 0; e <= g; e += 1 ) i.push(j(d, f)), (f += 1); else { if (2 !== k) throw new Error("Unknown charset format " + k); for (; i.length <= c; ) for ( f = h.parseSID(), g = h.parseCard16(), e = 0; e <= g; e += 1 ) i.push(j(d, f)), (f += 1); } return i; } function p(a, b, c) { var d, e, f = {}, g = new J.Parser(a, b), h = g.parseCard8(); if (0 === h) { var i = g.parseCard8(); for (d = 0; d < i; d += 1) (e = g.parseCard8()), (f[e] = d); } else { if (1 !== h) throw new Error("Unknown encoding format " + h); var j = g.parseCard8(); for (e = 1, d = 0; d < j; d += 1) for ( var k = g.parseCard8(), l = g.parseCard8(), m = k; m <= k + l; m += 1 ) (f[m] = e), (e += 1); } return new H.CffEncoding(f, c); } function q(a, b, c) { function d(a, b) { p && k.closePath(), k.moveTo(a, b), (p = !0); } function e() { var b; (b = l.length % 2 != 0), b && !n && (o = l.shift() + a.nominalWidthX), (m += l.length >> 1), (l.length = 0), (n = !0); } function f(c) { for ( var s, t, u, v, w, x, y, z, A, B, C, D, E = 0; E < c.length; ) { var F = c[E]; switch (((E += 1), F)) { case 1: e(); break; case 3: e(); break; case 4: l.length > 1 && !n && ((o = l.shift() + a.nominalWidthX), (n = !0)), (r += l.pop()), d(q, r); break; case 5: for (; l.length > 0; ) (q += l.shift()), (r += l.shift()), k.lineTo(q, r); break; case 6: for ( ; l.length > 0 && ((q += l.shift()), k.lineTo(q, r), 0 !== l.length); ) (r += l.shift()), k.lineTo(q, r); break; case 7: for ( ; l.length > 0 && ((r += l.shift()), k.lineTo(q, r), 0 !== l.length); ) (q += l.shift()), k.lineTo(q, r); break; case 8: for (; l.length > 0; ) (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j + l.shift()), k.curveTo(g, h, i, j, q, r); break; case 10: (w = l.pop() + a.subrsBias), (x = a.subrs[w]), x && f(x); break; case 11: return; case 12: switch (((F = c[E]), (E += 1), F)) { case 35: (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (y = i + l.shift()), (z = j + l.shift()), (A = y + l.shift()), (B = z + l.shift()), (C = A + l.shift()), (D = B + l.shift()), (q = C + l.shift()), (r = D + l.shift()), l.shift(), k.curveTo(g, h, i, j, y, z), k.curveTo(A, B, C, D, q, r); break; case 34: (g = q + l.shift()), (h = r), (i = g + l.shift()), (j = h + l.shift()), (y = i + l.shift()), (z = j), (A = y + l.shift()), (B = j), (C = A + l.shift()), (D = r), (q = C + l.shift()), k.curveTo(g, h, i, j, y, z), k.curveTo(A, B, C, D, q, r); break; case 36: (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (y = i + l.shift()), (z = j), (A = y + l.shift()), (B = j), (C = A + l.shift()), (D = B + l.shift()), (q = C + l.shift()), k.curveTo(g, h, i, j, y, z), k.curveTo(A, B, C, D, q, r); break; case 37: (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (y = i + l.shift()), (z = j + l.shift()), (A = y + l.shift()), (B = z + l.shift()), (C = A + l.shift()), (D = B + l.shift()), Math.abs(C - q) > Math.abs(D - r) ? (q = C + l.shift()) : (r = D + l.shift()), k.curveTo(g, h, i, j, y, z), k.curveTo(A, B, C, D, q, r); break; default: console.log( "Glyph " + b.index + ": unknown operator 1200" + F ), (l.length = 0); } break; case 14: l.length > 0 && !n && ((o = l.shift() + a.nominalWidthX), (n = !0)), p && (k.closePath(), (p = !1)); break; case 18: e(); break; case 19: case 20: e(), (E += (m + 7) >> 3); break; case 21: l.length > 2 && !n && ((o = l.shift() + a.nominalWidthX), (n = !0)), (r += l.pop()), (q += l.pop()), d(q, r); break; case 22: l.length > 1 && !n && ((o = l.shift() + a.nominalWidthX), (n = !0)), (q += l.pop()), d(q, r); break; case 23: e(); break; case 24: for (; l.length > 2; ) (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j + l.shift()), k.curveTo(g, h, i, j, q, r); (q += l.shift()), (r += l.shift()), k.lineTo(q, r); break; case 25: for (; l.length > 6; ) (q += l.shift()), (r += l.shift()), k.lineTo(q, r); (g = q + l.shift()), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j + l.shift()), k.curveTo(g, h, i, j, q, r); break; case 26: for ( l.length % 2 && (q += l.shift()); l.length > 0; ) (g = q), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i), (r = j + l.shift()), k.curveTo(g, h, i, j, q, r); break; case 27: for ( l.length % 2 && (r += l.shift()); l.length > 0; ) (g = q + l.shift()), (h = r), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j), k.curveTo(g, h, i, j, q, r); break; case 28: (s = c[E]), (t = c[E + 1]), l.push( ((s << 24) | (t << 16)) >> 16 ), (E += 2); break; case 29: (w = l.pop() + a.gsubrsBias), (x = a.gsubrs[w]), x && f(x); break; case 30: for ( ; l.length > 0 && ((g = q), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j + (1 === l.length ? l.shift() : 0)), k.curveTo(g, h, i, j, q, r), 0 !== l.length); ) (g = q + l.shift()), (h = r), (i = g + l.shift()), (j = h + l.shift()), (r = j + l.shift()), (q = i + (1 === l.length ? l.shift() : 0)), k.curveTo(g, h, i, j, q, r); break; case 31: for ( ; l.length > 0 && ((g = q + l.shift()), (h = r), (i = g + l.shift()), (j = h + l.shift()), (r = j + l.shift()), (q = i + (1 === l.length ? l.shift() : 0)), k.curveTo(g, h, i, j, q, r), 0 !== l.length); ) (g = q), (h = r + l.shift()), (i = g + l.shift()), (j = h + l.shift()), (q = i + l.shift()), (r = j + (1 === l.length ? l.shift() : 0)), k.curveTo(g, h, i, j, q, r); break; default: F < 32 ? console.log( "Glyph " + b.index + ": unknown operator " + F ) : F < 247 ? l.push(F - 139) : F < 251 ? ((s = c[E]), (E += 1), l.push(256 * (F - 247) + s + 108)) : F < 255 ? ((s = c[E]), (E += 1), l.push( 256 * -(F - 251) - s - 108 )) : ((s = c[E]), (t = c[E + 1]), (u = c[E + 2]), (v = c[E + 3]), (E += 4), l.push( ((s << 24) | (t << 16) | (u << 8) | v) / 65536 )); } } } var g, h, i, j, k = new K.Path(), l = [], m = 0, n = !1, o = a.defaultWidthX, p = !1, q = 0, r = 0; return f(c), (b.advanceWidth = o), k; } function r(a) { return a.length < 1240 ? 107 : a.length < 33900 ? 1131 : 32768; } function s(a, b, c) { c.tables.cff = {}; var d = l(a, b), f = e(a, d.endOffset, J.bytesToString), g = e(a, f.endOffset), h = e(a, g.endOffset, J.bytesToString), i = e(a, h.endOffset); (c.gsubrs = i.objects), (c.gsubrsBias = r(c.gsubrs)); var j = new DataView( new Uint8Array(g.objects[0]).buffer ), k = m(j, h.objects); c.tables.cff.topDict = k; var s = b + k.private[1], t = n(a, s, k.private[0], h.objects); if ( ((c.defaultWidthX = t.defaultWidthX), (c.nominalWidthX = t.nominalWidthX), 0 !== t.subrs) ) { var u = s + t.subrs, v = e(a, u); (c.subrs = v.objects), (c.subrsBias = r(c.subrs)); } else (c.subrs = []), (c.subrsBias = 0); var w = e(a, b + k.charStrings); c.nGlyphs = w.objects.length; var x = o(a, b + k.charset, c.nGlyphs, h.objects); 0 === k.encoding ? (c.cffEncoding = new H.CffEncoding( H.cffStandardEncoding, x )) : 1 === k.encoding ? (c.cffEncoding = new H.CffEncoding( H.cffExpertEncoding, x )) : (c.cffEncoding = p(a, b + k.encoding, x)), (c.encoding = c.encoding || c.cffEncoding), (c.glyphs = new I.GlyphSet(c)); for (var y = 0; y < c.nGlyphs; y += 1) { var z = w.objects[y]; c.glyphs.push(y, I.cffGlyphLoader(c, y, q, z)); } } function t(a, b) { var c, d = H.cffStandardStrings.indexOf(a); return ( d >= 0 && (c = d), (d = b.indexOf(a)), d >= 0 ? (c = d + H.cffStandardStrings.length) : ((c = H.cffStandardStrings.length + b.length), b.push(a)), c ); } function u() { return new L.Table("Header", [ { name: "major", type: "Card8", value: 1 }, { name: "minor", type: "Card8", value: 0 }, { name: "hdrSize", type: "Card8", value: 4 }, { name: "major", type: "Card8", value: 1 }, ]); } function v(a) { var b = new L.Table("Name INDEX", [ { name: "names", type: "INDEX", value: [] }, ]); b.names = []; for (var c = 0; c < a.length; c += 1) b.names.push({ name: "name_" + c, type: "NAME", value: a[c], }); return b; } function w(a, b, c) { for (var e = {}, f = 0; f < a.length; f += 1) { var g = a[f], h = b[g.name]; void 0 === h || d(h, g.value) || ("SID" === g.type && (h = t(h, c)), (e[g.op] = { name: g.name, type: g.type, value: h, })); } return e; } function x(a, b) { var c = new L.Table("Top DICT", [ { name: "dict", type: "DICT", value: {} }, ]); return (c.dict = w(M, a, b)), c; } function y(a) { var b = new L.Table("Top DICT INDEX", [ { name: "topDicts", type: "INDEX", value: [] }, ]); return ( (b.topDicts = [ { name: "topDict_0", type: "TABLE", value: a }, ]), b ); } function z(a) { var b = new L.Table("String INDEX", [ { name: "strings", type: "INDEX", value: [] }, ]); b.strings = []; for (var c = 0; c < a.length; c += 1) b.strings.push({ name: "string_" + c, type: "STRING", value: a[c], }); return b; } function A() { return new L.Table("Global Subr INDEX", [ { name: "subrs", type: "INDEX", value: [] }, ]); } function B(a, b) { for ( var c = new L.Table("Charsets", [ { name: "format", type: "Card8", value: 0 }, ]), d = 0; d < a.length; d += 1 ) { var e = a[d], f = t(e, b); c.fields.push({ name: "glyph_" + d, type: "SID", value: f, }); } return c; } function C(a) { var b = [], c = a.path; b.push({ name: "width", type: "NUMBER", value: a.advanceWidth, }); for ( var d = 0, e = 0, f = 0; f < c.commands.length; f += 1 ) { var g, h, i = c.commands[f]; if ("Q" === i.type) { var j = 1 / 3, k = 2 / 3; i = { type: "C", x: i.x, y: i.y, x1: j * d + k * i.x1, y1: j * e + k * i.y1, x2: j * i.x + k * i.x1, y2: j * i.y + k * i.y1, }; } if ("M" === i.type) (g = Math.round(i.x - d)), (h = Math.round(i.y - e)), b.push({ name: "dx", type: "NUMBER", value: g, }), b.push({ name: "dy", type: "NUMBER", value: h, }), b.push({ name: "rmoveto", type: "OP", value: 21, }), (d = Math.round(i.x)), (e = Math.round(i.y)); else if ("L" === i.type) (g = Math.round(i.x - d)), (h = Math.round(i.y - e)), b.push({ name: "dx", type: "NUMBER", value: g, }), b.push({ name: "dy", type: "NUMBER", value: h, }), b.push({ name: "rlineto", type: "OP", value: 5, }), (d = Math.round(i.x)), (e = Math.round(i.y)); else if ("C" === i.type) { var l = Math.round(i.x1 - d), m = Math.round(i.y1 - e), n = Math.round(i.x2 - i.x1), o = Math.round(i.y2 - i.y1); (g = Math.round(i.x - i.x2)), (h = Math.round(i.y - i.y2)), b.push({ name: "dx1", type: "NUMBER", value: l, }), b.push({ name: "dy1", type: "NUMBER", value: m, }), b.push({ name: "dx2", type: "NUMBER", value: n, }), b.push({ name: "dy2", type: "NUMBER", value: o, }), b.push({ name: "dx", type: "NUMBER", value: g, }), b.push({ name: "dy", type: "NUMBER", value: h, }), b.push({ name: "rrcurveto", type: "OP", value: 8, }), (d = Math.round(i.x)), (e = Math.round(i.y)); } } return ( b.push({ name: "endchar", type: "OP", value: 14 }), b ); } function D(a) { for ( var b = new L.Table("CharStrings INDEX", [ { name: "charStrings", type: "INDEX", value: [], }, ]), c = 0; c < a.length; c += 1 ) { var d = a.get(c), e = C(d); b.charStrings.push({ name: d.name, type: "CHARSTRING", value: e, }); } return b; } function E(a, b) { var c = new L.Table("Private DICT", [ { name: "dict", type: "DICT", value: {} }, ]); return (c.dict = w(N, a, b)), c; } function F(a) { var b = new L.Table("Private DICT INDEX", [ { name: "privateDicts", type: "INDEX", value: [] }, ]); return ( (b.privateDicts = [ { name: "privateDict_0", type: "TABLE", value: a, }, ]), b ); } function G(a, b) { for ( var c, d = new L.Table("CFF ", [ { name: "header", type: "TABLE" }, { name: "nameIndex", type: "TABLE" }, { name: "topDictIndex", type: "TABLE" }, { name: "stringIndex", type: "TABLE" }, { name: "globalSubrIndex", type: "TABLE" }, { name: "charsets", type: "TABLE" }, { name: "charStringsIndex", type: "TABLE" }, { name: "privateDictIndex", type: "TABLE" }, ]), e = 1 / b.unitsPerEm, f = { version: b.version, fullName: b.fullName, familyName: b.familyName, weight: b.weightName, fontMatrix: [e, 0, 0, e, 0, 0], charset: 999, encoding: 0, charStrings: 999, private: [0, 999], }, g = {}, h = [], i = 1; i < a.length; i += 1 ) (c = a.get(i)), h.push(c.name); var j = []; (d.header = u()), (d.nameIndex = v([b.postScriptName])); var k = x(f, j); (d.topDictIndex = y(k)), (d.globalSubrIndex = A()), (d.charsets = B(h, j)), (d.charStringsIndex = D(a)); var l = E(g, j); (d.privateDictIndex = F(l)), (d.stringIndex = z(j)); var m = d.header.sizeOf() + d.nameIndex.sizeOf() + d.topDictIndex.sizeOf() + d.stringIndex.sizeOf() + d.globalSubrIndex.sizeOf(); return ( (f.charset = m), (f.encoding = 0), (f.charStrings = f.charset + d.charsets.sizeOf()), (f.private[1] = f.charStrings + d.charStringsIndex.sizeOf()), (k = x(f, j)), (d.topDictIndex = y(k)), d ); } var H = a("../encoding"), I = a("../glyphset"), J = a("../parse"), K = a("../path"), L = a("../table"), M = [ { name: "version", op: 0, type: "SID" }, { name: "notice", op: 1, type: "SID" }, { name: "copyright", op: 1200, type: "SID" }, { name: "fullName", op: 2, type: "SID" }, { name: "familyName", op: 3, type: "SID" }, { name: "weight", op: 4, type: "SID" }, { name: "isFixedPitch", op: 1201, type: "number", value: 0, }, { name: "italicAngle", op: 1202, type: "number", value: 0, }, { name: "underlinePosition", op: 1203, type: "number", value: -100, }, { name: "underlineThickness", op: 1204, type: "number", value: 50, }, { name: "paintType", op: 1205, type: "number", value: 0, }, { name: "charstringType", op: 1206, type: "number", value: 2, }, { name: "fontMatrix", op: 1207, type: [ "real", "real", "real", "real", "real", "real", ], value: [0.001, 0, 0, 0.001, 0, 0], }, { name: "uniqueId", op: 13, type: "number" }, { name: "fontBBox", op: 5, type: ["number", "number", "number", "number"], value: [0, 0, 0, 0], }, { name: "strokeWidth", op: 1208, type: "number", value: 0, }, { name: "xuid", op: 14, type: [], value: null }, { name: "charset", op: 15, type: "offset", value: 0, }, { name: "encoding", op: 16, type: "offset", value: 0, }, { name: "charStrings", op: 17, type: "offset", value: 0, }, { name: "private", op: 18, type: ["number", "offset"], value: [0, 0], }, ], N = [ { name: "subrs", op: 19, type: "offset", value: 0 }, { name: "defaultWidthX", op: 20, type: "number", value: 0, }, { name: "nominalWidthX", op: 21, type: "number", value: 0, }, ]; (c.parse = s), (c.make = G); }, { "../encoding": 6, "../glyphset": 9, "../parse": 11, "../path": 12, "../table": 13, }, ], 15: [ function (a, b, c) { "use strict"; function d(a, b) { var c, d = {}; (d.version = i.getUShort(a, b)), h.argument( 0 === d.version, "cmap table version should be 0." ), (d.numTables = i.getUShort(a, b + 2)); var e = -1; for (c = 0; c < d.numTables; c += 1) { var f = i.getUShort(a, b + 4 + 8 * c), g = i.getUShort(a, b + 4 + 8 * c + 2); if (3 === f && (1 === g || 0 === g)) { e = i.getULong(a, b + 4 + 8 * c + 4); break; } } if (e === -1) return null; var j = new i.Parser(a, b + e); (d.format = j.parseUShort()), h.argument( 4 === d.format, "Only format 4 cmap tables are supported." ), (d.length = j.parseUShort()), (d.language = j.parseUShort()); var k; (d.segCount = k = j.parseUShort() >> 1), j.skip("uShort", 3), (d.glyphIndexMap = {}); var l = new i.Parser(a, b + e + 14), m = new i.Parser(a, b + e + 16 + 2 * k), n = new i.Parser(a, b + e + 16 + 4 * k), o = new i.Parser(a, b + e + 16 + 6 * k), p = b + e + 16 + 8 * k; for (c = 0; c < k - 1; c += 1) for ( var q, r = l.parseUShort(), s = m.parseUShort(), t = n.parseShort(), u = o.parseUShort(), v = s; v <= r; v += 1 ) 0 !== u ? ((p = o.offset + o.relativeOffset - 2), (p += u), (p += 2 * (v - s)), 0 !== (q = i.getUShort(a, p)) && (q = (q + t) & 65535)) : (q = (v + t) & 65535), (d.glyphIndexMap[v] = q); return d; } function e(a, b, c) { a.segments.push({ end: b, start: b, delta: -(b - c), offset: 0, }); } function f(a) { a.segments.push({ end: 65535, start: 65535, delta: 1, offset: 0, }); } function g(a) { var b, c = new j.Table("cmap", [ { name: "version", type: "USHORT", value: 0 }, { name: "numTables", type: "USHORT", value: 1 }, { name: "platformID", type: "USHORT", value: 3, }, { name: "encodingID", type: "USHORT", value: 1, }, { name: "offset", type: "ULONG", value: 12 }, { name: "format", type: "USHORT", value: 4 }, { name: "length", type: "USHORT", value: 0 }, { name: "language", type: "USHORT", value: 0 }, { name: "segCountX2", type: "USHORT", value: 0, }, { name: "searchRange", type: "USHORT", value: 0, }, { name: "entrySelector", type: "USHORT", value: 0, }, { name: "rangeShift", type: "USHORT", value: 0, }, ]); for (c.segments = [], b = 0; b < a.length; b += 1) { for ( var d = a.get(b), g = 0; g < d.unicodes.length; g += 1 ) e(c, d.unicodes[g], b); c.segments = c.segments.sort(function (a, b) { return a.start - b.start; }); } f(c); var h; (h = c.segments.length), (c.segCountX2 = 2 * h), (c.searchRange = 2 * Math.pow( 2, Math.floor(Math.log(h) / Math.log(2)) )), (c.entrySelector = Math.log(c.searchRange / 2) / Math.log(2)), (c.rangeShift = c.segCountX2 - c.searchRange); var i = [], k = [], l = [], m = [], n = []; for (b = 0; b < h; b += 1) { var o = c.segments[b]; (i = i.concat({ name: "end_" + b, type: "USHORT", value: o.end, })), (k = k.concat({ name: "start_" + b, type: "USHORT", value: o.start, })), (l = l.concat({ name: "idDelta_" + b, type: "SHORT", value: o.delta, })), (m = m.concat({ name: "idRangeOffset_" + b, type: "USHORT", value: o.offset, })), void 0 !== o.glyphId && (n = n.concat({ name: "glyph_" + b, type: "USHORT", value: o.glyphId, })); } return ( (c.fields = c.fields.concat(i)), c.fields.push({ name: "reservedPad", type: "USHORT", value: 0, }), (c.fields = c.fields.concat(k)), (c.fields = c.fields.concat(l)), (c.fields = c.fields.concat(m)), (c.fields = c.fields.concat(n)), (c.length = 14 + 2 * i.length + 2 + 2 * k.length + 2 * l.length + 2 * m.length + 2 * n.length), c ); } var h = a("../check"), i = a("../parse"), j = a("../table"); (c.parse = d), (c.make = g); }, { "../check": 4, "../parse": 11, "../table": 13 }, ], 16: [ function (a, b, c) { "use strict"; function d(a, b) { var c = JSON.stringify(a), d = 256; for (var e in b) { var f = parseInt(e); if (f && !(f < 256)) { if (JSON.stringify(b[e]) === c) return f; d <= f && (d = f + 1); } } return (b[d] = a), d; } function e(a, b) { var c = d(a.name, b); return new m.Table("fvarAxis", [ { name: "tag", type: "TAG", value: a.tag }, { name: "minValue", type: "FIXED", value: a.minValue << 16, }, { name: "defaultValue", type: "FIXED", value: a.defaultValue << 16, }, { name: "maxValue", type: "FIXED", value: a.maxValue << 16, }, { name: "flags", type: "USHORT", value: 0 }, { name: "nameID", type: "USHORT", value: c }, ]); } function f(a, b, c) { var d = {}, e = new l.Parser(a, b); return ( (d.tag = e.parseTag()), (d.minValue = e.parseFixed()), (d.defaultValue = e.parseFixed()), (d.maxValue = e.parseFixed()), e.skip("uShort", 1), (d.name = c[e.parseUShort()] || {}), d ); } function g(a, b, c) { for ( var e = d(a.name, c), f = [ { name: "nameID", type: "USHORT", value: e, }, { name: "flags", type: "USHORT", value: 0 }, ], g = 0; g < b.length; ++g ) { var h = b[g].tag; f.push({ name: "axis " + h, type: "FIXED", value: a.coordinates[h] << 16, }); } return new m.Table("fvarInstance", f); } function h(a, b, c, d) { var e = {}, f = new l.Parser(a, b); (e.name = d[f.parseUShort()] || {}), f.skip("uShort", 1), (e.coordinates = {}); for (var g = 0; g < c.length; ++g) e.coordinates[c[g].tag] = f.parseFixed(); return e; } function i(a, b) { var c = new m.Table("fvar", [ { name: "version", type: "ULONG", value: 65536 }, { name: "offsetToData", type: "USHORT", value: 0 }, { name: "countSizePairs", type: "USHORT", value: 2, }, { name: "axisCount", type: "USHORT", value: a.axes.length, }, { name: "axisSize", type: "USHORT", value: 20 }, { name: "instanceCount", type: "USHORT", value: a.instances.length, }, { name: "instanceSize", type: "USHORT", value: 4 + 4 * a.axes.length, }, ]); c.offsetToData = c.sizeOf(); for (var d = 0; d < a.axes.length; d++) c.fields.push({ name: "axis " + d, type: "TABLE", value: e(a.axes[d], b), }); for (var f = 0; f < a.instances.length; f++) c.fields.push({ name: "instance " + f, type: "TABLE", value: g(a.instances[f], a.axes, b), }); return c; } function j(a, b, c) { var d = new l.Parser(a, b), e = d.parseULong(); k.argument( 65536 === e, "Unsupported fvar table version." ); var g = d.parseOffset16(); d.skip("uShort", 1); for ( var i = d.parseUShort(), j = d.parseUShort(), m = d.parseUShort(), n = d.parseUShort(), o = [], p = 0; p < i; p++ ) o.push(f(a, b + g + p * j, c)); for (var q = [], r = b + g + i * j, s = 0; s < m; s++) q.push(h(a, r + s * n, o, c)); return { axes: o, instances: q }; } var k = a("../check"), l = a("../parse"), m = a("../table"); (c.make = i), (c.parse = j); }, { "../check": 4, "../parse": 11, "../table": 13 }, ], 17: [ function (a, b, c) { "use strict"; function d(a, b, c, d, e) { var f; return ( (b & d) > 0 ? ((f = a.parseByte()), 0 == (b & e) && (f = -f), (f = c + f)) : (f = (b & e) > 0 ? c : c + a.parseShort()), f ); } function e(a, b, c) { var e = new m.Parser(b, c); (a.numberOfContours = e.parseShort()), (a.xMin = e.parseShort()), (a.yMin = e.parseShort()), (a.xMax = e.parseShort()), (a.yMax = e.parseShort()); var f, g; if (a.numberOfContours > 0) { var h, i = (a.endPointIndices = []); for (h = 0; h < a.numberOfContours; h += 1) i.push(e.parseUShort()); for ( a.instructionLength = e.parseUShort(), a.instructions = [], h = 0; h < a.instructionLength; h += 1 ) a.instructions.push(e.parseByte()); var j = i[i.length - 1] + 1; for (f = [], h = 0; h < j; h += 1) if ( ((g = e.parseByte()), f.push(g), (8 & g) > 0) ) for ( var l = e.parseByte(), n = 0; n < l; n += 1 ) f.push(g), (h += 1); if ( (k.argument(f.length === j, "Bad flags."), i.length > 0) ) { var o, p = []; if (j > 0) { for (h = 0; h < j; h += 1) (g = f[h]), (o = {}), (o.onCurve = !!(1 & g)), (o.lastPointOfContour = i.indexOf(h) >= 0), p.push(o); var q = 0; for (h = 0; h < j; h += 1) (g = f[h]), (o = p[h]), (o.x = d(e, g, q, 2, 16)), (q = o.x); var r = 0; for (h = 0; h < j; h += 1) (g = f[h]), (o = p[h]), (o.y = d(e, g, r, 4, 32)), (r = o.y); } a.points = p; } else a.points = []; } else if (0 === a.numberOfContours) a.points = []; else { (a.isComposite = !0), (a.points = []), (a.components = []); for (var s = !0; s; ) { f = e.parseUShort(); var t = { glyphIndex: e.parseUShort(), xScale: 1, scale01: 0, scale10: 0, yScale: 1, dx: 0, dy: 0, }; (1 & f) > 0 ? ((t.dx = e.parseShort()), (t.dy = e.parseShort())) : ((t.dx = e.parseChar()), (t.dy = e.parseChar())), (8 & f) > 0 ? (t.xScale = t.yScale = e.parseF2Dot14()) : (64 & f) > 0 ? ((t.xScale = e.parseF2Dot14()), (t.yScale = e.parseF2Dot14())) : (128 & f) > 0 && ((t.xScale = e.parseF2Dot14()), (t.scale01 = e.parseF2Dot14()), (t.scale10 = e.parseF2Dot14()), (t.yScale = e.parseF2Dot14())), a.components.push(t), (s = !!(32 & f)); } } } function f(a, b) { for (var c = [], d = 0; d < a.length; d += 1) { var e = a[d], f = { x: b.xScale * e.x + b.scale01 * e.y + b.dx, y: b.scale10 * e.x + b.yScale * e.y + b.dy, onCurve: e.onCurve, lastPointOfContour: e.lastPointOfContour, }; c.push(f); } return c; } function g(a) { for (var b = [], c = [], d = 0; d < a.length; d += 1) { var e = a[d]; c.push(e), e.lastPointOfContour && (b.push(c), (c = [])); } return ( k.argument( 0 === c.length, "There are still points left in the current contour." ), b ); } function h(a) { var b = new n.Path(); if (!a) return b; for (var c = g(a), d = 0; d < c.length; d += 1) { var e, f, h = c[d], i = h[0], j = h[h.length - 1]; i.onCurve ? ((e = null), (f = !0)) : ((i = j.onCurve ? j : { x: (i.x + j.x) / 2, y: (i.y + j.y) / 2, }), (e = i), (f = !1)), b.moveTo(i.x, i.y); for (var k = f ? 1 : 0; k < h.length; k += 1) { var l = h[k], m = 0 === k ? i : h[k - 1]; if (m.onCurve && l.onCurve) b.lineTo(l.x, l.y); else if (m.onCurve && !l.onCurve) e = l; else if (m.onCurve || l.onCurve) { if (m.onCurve || !l.onCurve) throw new Error("Invalid state."); b.quadraticCurveTo(e.x, e.y, l.x, l.y), (e = null); } else { var o = { x: (m.x + l.x) / 2, y: (m.y + l.y) / 2, }; b.quadraticCurveTo(m.x, m.y, o.x, o.y), (e = l); } } i !== j && (e ? b.quadraticCurveTo(e.x, e.y, i.x, i.y) : b.lineTo(i.x, i.y)); } return b.closePath(), b; } function i(a, b) { if (b.isComposite) for (var c = 0; c < b.components.length; c += 1) { var d = b.components[c], e = a.get(d.glyphIndex); if ((e.getPath(), e.points)) { var g = f(e.points, d); b.points = b.points.concat(g); } } return h(b.points); } function j(a, b, c, d) { var f, g = new l.GlyphSet(d); for (f = 0; f < c.length - 1; f += 1) { var h = c[f]; h !== c[f + 1] ? g.push( f, l.ttfGlyphLoader(d, f, e, a, b + h, i) ) : g.push(f, l.glyphLoader(d, f)); } return g; } var k = a("../check"), l = a("../glyphset"), m = a("../parse"), n = a("../path"); c.parse = j; }, { "../check": 4, "../glyphset": 9, "../parse": 11, "../path": 12, }, ], 18: [ function (a, b, c) { "use strict"; function d(a, b) { for ( var c = new k.Parser(a, b), d = c.parseUShort(), e = [], f = 0; f < d; f++ ) e[c.parseTag()] = { offset: c.parseUShort() }; return e; } function e(a, b) { var c = new k.Parser(a, b), d = c.parseUShort(), e = c.parseUShort(); if (1 === d) return c.parseUShortList(e); if (2 === d) { for (var f = []; e--; ) for ( var g = c.parseUShort(), h = c.parseUShort(), i = c.parseUShort(), j = g; j <= h; j++ ) f[i++] = j; return f; } } function f(a, b) { var c = new k.Parser(a, b), d = c.parseUShort(); if (1 === d) { var e = c.parseUShort(), f = c.parseUShort(), g = c.parseUShortList(f); return function (a) { return g[a - e] || 0; }; } if (2 === d) { for ( var h = c.parseUShort(), i = [], j = [], l = [], m = 0; m < h; m++ ) (i[m] = c.parseUShort()), (j[m] = c.parseUShort()), (l[m] = c.parseUShort()); return function (a) { for (var b = 0, c = i.length - 1; b < c; ) { var d = (b + c + 1) >> 1; a < i[d] ? (c = d - 1) : (b = d); } return i[b] <= a && a <= j[b] ? l[b] || 0 : 0; }; } } function g(a, b) { var c, d = new k.Parser(a, b), g = d.parseUShort(), h = d.parseUShort(), i = e(a, b + h), j = d.parseUShort(), l = d.parseUShort(); if (4 === j && 0 === l) { var m = {}; if (1 === g) { for ( var n = d.parseUShort(), o = [], p = d.parseOffset16List(n), q = 0; q < n; q++ ) { var r = p[q], s = m[r]; if (!s) { (s = {}), (d.relativeOffset = r); for (var t = d.parseUShort(); t--; ) { var u = d.parseUShort(); j && (c = d.parseShort()), l && d.parseShort(), (s[u] = c); } } o[i[q]] = s; } return function (a, b) { var c = o[a]; if (c) return c[b]; }; } if (2 === g) { for ( var v = d.parseUShort(), w = d.parseUShort(), x = d.parseUShort(), y = d.parseUShort(), z = f(a, b + v), A = f(a, b + w), B = [], C = 0; C < x; C++ ) for (var D = (B[C] = []), E = 0; E < y; E++) j && (c = d.parseShort()), l && d.parseShort(), (D[E] = c); var F = {}; for (C = 0; C < i.length; C++) F[i[C]] = 1; return function (a, b) { if (F[a]) { var c = z(a), d = A(b), e = B[c]; return e ? e[d] : void 0; } }; } } } function h(a, b) { var c = new k.Parser(a, b), d = c.parseUShort(), e = c.parseUShort(), f = 16 & e, h = c.parseUShort(), i = c.parseOffset16List(h), j = { lookupType: d, lookupFlag: e, markFilteringSet: f ? c.parseUShort() : -1, }; if (2 === d) { for (var l = [], m = 0; m < h; m++) l.push(g(a, b + i[m])); j.getKerningValue = function (a, b) { for (var c = l.length; c--; ) { var d = l[c](a, b); if (void 0 !== d) return d; } return 0; }; } return j; } function i(a, b, c) { var e = new k.Parser(a, b), f = e.parseFixed(); j.argument(1 === f, "Unsupported GPOS table version."), d(a, b + e.parseUShort()), d(a, b + e.parseUShort()); var g = e.parseUShort(); e.relativeOffset = g; for ( var i = e.parseUShort(), l = e.parseOffset16List(i), m = b + g, n = 0; n < i; n++ ) { var o = h(a, m + l[n]); 2 !== o.lookupType || c.getGposKerningValue || (c.getGposKerningValue = o.getKerningValue); } } var j = a("../check"), k = a("../parse"); c.parse = i; }, { "../check": 4, "../parse": 11 }, ], 19: [ function (a, b, c) { "use strict"; function d(a, b) { var c = {}, d = new g.Parser(a, b); return ( (c.version = d.parseVersion()), (c.fontRevision = Math.round(1e3 * d.parseFixed()) / 1e3), (c.checkSumAdjustment = d.parseULong()), (c.magicNumber = d.parseULong()), f.argument( 1594834165 === c.magicNumber, "Font header has wrong magic number." ), (c.flags = d.parseUShort()), (c.unitsPerEm = d.parseUShort()), (c.created = d.parseLongDateTime()), (c.modified = d.parseLongDateTime()), (c.xMin = d.parseShort()), (c.yMin = d.parseShort()), (c.xMax = d.parseShort()), (c.yMax = d.parseShort()), (c.macStyle = d.parseUShort()), (c.lowestRecPPEM = d.parseUShort()), (c.fontDirectionHint = d.parseShort()), (c.indexToLocFormat = d.parseShort()), (c.glyphDataFormat = d.parseShort()), c ); } function e(a) { return new h.Table( "head", [ { name: "version", type: "FIXED", value: 65536, }, { name: "fontRevision", type: "FIXED", value: 65536, }, { name: "checkSumAdjustment", type: "ULONG", value: 0, }, { name: "magicNumber", type: "ULONG", value: 1594834165, }, { name: "flags", type: "USHORT", value: 0 }, { name: "unitsPerEm", type: "USHORT", value: 1e3, }, { name: "created", type: "LONGDATETIME", value: 0, }, { name: "modified", type: "LONGDATETIME", value: 0, }, { name: "xMin", type: "SHORT", value: 0 }, { name: "yMin", type: "SHORT", value: 0 }, { name: "xMax", type: "SHORT", value: 0 }, { name: "yMax", type: "SHORT", value: 0 }, { name: "macStyle", type: "USHORT", value: 0 }, { name: "lowestRecPPEM", type: "USHORT", value: 0, }, { name: "fontDirectionHint", type: "SHORT", value: 2, }, { name: "indexToLocFormat", type: "SHORT", value: 0, }, { name: "glyphDataFormat", type: "SHORT", value: 0, }, ], a ); } var f = a("../check"), g = a("../parse"), h = a("../table"); (c.parse = d), (c.make = e); }, { "../check": 4, "../parse": 11, "../table": 13 }, ], 20: [ function (a, b, c) { "use strict"; function d(a, b) { var c = {}, d = new f.Parser(a, b); return ( (c.version = d.parseVersion()), (c.ascender = d.parseShort()), (c.descender = d.parseShort()), (c.lineGap = d.parseShort()), (c.advanceWidthMax = d.parseUShort()), (c.minLeftSideBearing = d.parseShort()), (c.minRightSideBearing = d.parseShort()), (c.xMaxExtent = d.parseShort()), (c.caretSlopeRise = d.parseShort()), (c.caretSlopeRun = d.parseShort()), (c.caretOffset = d.parseShort()), (d.relativeOffset += 8), (c.metricDataFormat = d.parseShort()), (c.numberOfHMetrics = d.parseUShort()), c ); } function e(a) { return new g.Table( "hhea", [ { name: "version", type: "FIXED", value: 65536, }, { name: "ascender", type: "FWORD", value: 0 }, { name: "descender", type: "FWORD", value: 0 }, { name: "lineGap", type: "FWORD", value: 0 }, { name: "advanceWidthMax", type: "UFWORD", value: 0, }, { name: "minLeftSideBearing", type: "FWORD", value: 0, }, { name: "minRightSideBearing", type: "FWORD", value: 0, }, { name: "xMaxExtent", type: "FWORD", value: 0 }, { name: "caretSlopeRise", type: "SHORT", value: 1, }, { name: "caretSlopeRun", type: "SHORT", value: 0, }, { name: "caretOffset", type: "SHORT", value: 0, }, { name: "reserved1", type: "SHORT", value: 0 }, { name: "reserved2", type: "SHORT", value: 0 }, { name: "reserved3", type: "SHORT", value: 0 }, { name: "reserved4", type: "SHORT", value: 0 }, { name: "metricDataFormat", type: "SHORT", value: 0, }, { name: "numberOfHMetrics", type: "USHORT", value: 0, }, ], a ); } var f = a("../parse"), g = a("../table"); (c.parse = d), (c.make = e); }, { "../parse": 11, "../table": 13 }, ], 21: [ function (a, b, c) { "use strict"; function d(a, b, c, d, e) { for ( var g, h, i = new f.Parser(a, b), j = 0; j < d; j += 1 ) { j < c && ((g = i.parseUShort()), (h = i.parseShort())); var k = e.get(j); (k.advanceWidth = g), (k.leftSideBearing = h); } } function e(a) { for ( var b = new g.Table("hmtx", []), c = 0; c < a.length; c += 1 ) { var d = a.get(c), e = d.advanceWidth || 0, f = d.leftSideBearing || 0; b.fields.push({ name: "advanceWidth_" + c, type: "USHORT", value: e, }), b.fields.push({ name: "leftSideBearing_" + c, type: "SHORT", value: f, }); } return b; } var f = a("../parse"), g = a("../table"); (c.parse = d), (c.make = e); }, { "../parse": 11, "../table": 13 }, ], 22: [ function (a, b, c) { "use strict"; function d(a, b) { var c = {}, d = new f.Parser(a, b), g = d.parseUShort(); e.argument(0 === g, "Unsupported kern table version."), d.skip("uShort", 1); var h = d.parseUShort(); e.argument( 0 === h, "Unsupported kern sub-table version." ), d.skip("uShort", 2); var i = d.parseUShort(); d.skip("uShort", 3); for (var j = 0; j < i; j += 1) { var k = d.parseUShort(), l = d.parseUShort(), m = d.parseShort(); c[k + "," + l] = m; } return c; } var e = a("../check"), f = a("../parse"); c.parse = d; }, { "../check": 4, "../parse": 11 }, ], 23: [ function (a, b, c) { "use strict"; function d(a, b, c, d) { for ( var f = new e.Parser(a, b), g = d ? f.parseUShort : f.parseULong, h = [], i = 0; i < c + 1; i += 1 ) { var j = g.call(f); d && (j *= 2), h.push(j); } return h; } var e = a("../parse"); c.parse = d; }, { "../parse": 11 }, ], 24: [ function (a, b, c) { "use strict"; function d(a) { for ( var b = new h.Table("ltag", [ { name: "version", type: "ULONG", value: 1, }, { name: "flags", type: "ULONG", value: 0 }, { name: "numTags", type: "ULONG", value: a.length, }, ]), c = "", d = 12 + 4 * a.length, e = 0; e < a.length; ++e ) { var f = c.indexOf(a[e]); f < 0 && ((f = c.length), (c += a[e])), b.fields.push({ name: "offset " + e, type: "USHORT", value: d + f, }), b.fields.push({ name: "length " + e, type: "USHORT", value: a[e].length, }); } return ( b.fields.push({ name: "stringPool", type: "CHARARRAY", value: c, }), b ); } function e(a, b) { var c = new g.Parser(a, b), d = c.parseULong(); f.argument(1 === d, "Unsupported ltag table version."), c.skip("uLong", 1); for ( var e = c.parseULong(), h = [], i = 0; i < e; i++ ) { for ( var j = "", k = b + c.parseUShort(), l = c.parseUShort(), m = k; m < k + l; ++m ) j += String.fromCharCode(a.getInt8(m)); h.push(j); } return h; } var f = a("../check"), g = a("../parse"), h = a("../table"); (c.make = d), (c.parse = e); }, { "../check": 4, "../parse": 11, "../table": 13 }, ], 25: [ function (a, b, c) { "use strict"; function d(a, b) { var c = {}, d = new f.Parser(a, b); return ( (c.version = d.parseVersion()), (c.numGlyphs = d.parseUShort()), 1 === c.version && ((c.maxPoints = d.parseUShort()), (c.maxContours = d.parseUShort()), (c.maxCompositePoints = d.parseUShort()), (c.maxCompositeContours = d.parseUShort()), (c.maxZones = d.parseUShort()), (c.maxTwilightPoints = d.parseUShort()), (c.maxStorage = d.parseUShort()), (c.maxFunctionDefs = d.parseUShort()), (c.maxInstructionDefs = d.parseUShort()), (c.maxStackElements = d.parseUShort()), (c.maxSizeOfInstructions = d.parseUShort()), (c.maxComponentElements = d.parseUShort()), (c.maxComponentDepth = d.parseUShort())), c ); } function e(a) { return new g.Table("maxp", [ { name: "version", type: "FIXED", value: 20480 }, { name: "numGlyphs", type: "USHORT", value: a }, ]); } var f = a("../parse"), g = a("../table"); (c.parse = d), (c.make = e); }, { "../parse": 11, "../table": 13 }, ], 26: [ function (a, b, c) { "use strict"; function d(a, b, c) { switch (a) { case 0: if (65535 === b) return "und"; if (c) return c[b]; break; case 1: return r[b]; case 3: return t[b]; } } function e(a, b, c) { switch (a) { case 0: return u; case 1: return w[c] || v[b]; case 3: if (1 === b || 10 === b) return u; } } function f(a, b, c) { for ( var f = {}, g = new o.Parser(a, b), h = g.parseUShort(), i = g.parseUShort(), j = g.offset + g.parseUShort(), k = 0; k < i; k++ ) { var l = g.parseUShort(), n = g.parseUShort(), p = g.parseUShort(), r = g.parseUShort(), s = q[r] || r, t = g.parseUShort(), v = g.parseUShort(), w = d(l, p, c), x = e(l, n, p); if (void 0 !== x && void 0 !== w) { var y; if ( (y = x === u ? m.UTF16(a, j + v, t) : m.MACSTRING(a, j + v, t, x)) ) { var z = f[s]; void 0 === z && (z = f[s] = {}), (z[w] = y); } } } return 1 === h && g.parseUShort(), f; } function g(a) { var b = {}; for (var c in a) b[a[c]] = parseInt(c); return b; } function h(a, b, c, d, e, f) { return new p.Table("NameRecord", [ { name: "platformID", type: "USHORT", value: a }, { name: "encodingID", type: "USHORT", value: b }, { name: "languageID", type: "USHORT", value: c }, { name: "nameID", type: "USHORT", value: d }, { name: "length", type: "USHORT", value: e }, { name: "offset", type: "USHORT", value: f }, ]); } function i(a, b) { var c = a.length, d = b.length - c + 1; a: for (var e = 0; e < d; e++) for (; e < d; e++) { for (var f = 0; f < c; f++) if (b[e + f] !== a[f]) continue a; return e; } return -1; } function j(a, b) { var c = i(a, b); if (c < 0) { c = b.length; for (var d = 0, e = a.length; d < e; ++d) b.push(a[d]); } return c; } function k(a, b) { var c, d = [], f = {}, i = g(q); for (var k in a) { var l = i[k]; void 0 === l && (l = k), (c = parseInt(l)), (f[c] = a[k]), d.push(c); } for ( var m = g(r), o = g(t), u = [], v = [], w = 0; w < d.length; w++ ) { c = d[w]; var x = f[c]; for (var y in x) { var z = x[y], A = 1, B = m[y], C = s[B], D = e(A, C, B), E = n.MACSTRING(z, D); void 0 === E && ((A = 0), (B = b.indexOf(y)), B < 0 && ((B = b.length), b.push(y)), (C = 4), (E = n.UTF16(z))); var F = j(E, v); u.push(h(A, C, B, c, E.length, F)); var G = o[y]; if (void 0 !== G) { var H = n.UTF16(z), I = j(H, v); u.push(h(3, 1, G, c, H.length, I)); } } } u.sort(function (a, b) { return ( a.platformID - b.platformID || a.encodingID - b.encodingID || a.languageID - b.languageID || a.nameID - b.nameID ); }); for ( var J = new p.Table("name", [ { name: "format", type: "USHORT", value: 0, }, { name: "count", type: "USHORT", value: u.length, }, { name: "stringOffset", type: "USHORT", value: 6 + 12 * u.length, }, ]), K = 0; K < u.length; K++ ) J.fields.push({ name: "record_" + K, type: "TABLE", value: u[K], }); return ( J.fields.push({ name: "strings", type: "LITERAL", value: v, }), J ); } var l = a("../types"), m = l.decode, n = l.encode, o = a("../parse"), p = a("../table"), q = [ "copyright", "fontFamily", "fontSubfamily", "uniqueID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "manufacturerURL", "designerURL", "licence", "licenceURL", "reserved", "preferredFamily", "preferredSubfamily", "compatibleFullName", "sampleText", "postScriptFindFontName", "wwsFamily", "wwsSubfamily", ], r = { 0: "en", 1: "fr", 2: "de", 3: "it", 4: "nl", 5: "sv", 6: "es", 7: "da", 8: "pt", 9: "no", 10: "he", 11: "ja", 12: "ar", 13: "fi", 14: "el", 15: "is", 16: "mt", 17: "tr", 18: "hr", 19: "zh-Hant", 20: "ur", 21: "hi", 22: "th", 23: "ko", 24: "lt", 25: "pl", 26: "hu", 27: "es", 28: "lv", 29: "se", 30: "fo", 31: "fa", 32: "ru", 33: "zh", 34: "nl-BE", 35: "ga", 36: "sq", 37: "ro", 38: "cz", 39: "sk", 40: "si", 41: "yi", 42: "sr", 43: "mk", 44: "bg", 45: "uk", 46: "be", 47: "uz", 48: "kk", 49: "az-Cyrl", 50: "az-Arab", 51: "hy", 52: "ka", 53: "mo", 54: "ky", 55: "tg", 56: "tk", 57: "mn-CN", 58: "mn", 59: "ps", 60: "ks", 61: "ku", 62: "sd", 63: "bo", 64: "ne", 65: "sa", 66: "mr", 67: "bn", 68: "as", 69: "gu", 70: "pa", 71: "or", 72: "ml", 73: "kn", 74: "ta", 75: "te", 76: "si", 77: "my", 78: "km", 79: "lo", 80: "vi", 81: "id", 82: "tl", 83: "ms", 84: "ms-Arab", 85: "am", 86: "ti", 87: "om", 88: "so", 89: "sw", 90: "rw", 91: "rn", 92: "ny", 93: "mg", 94: "eo", 128: "cy", 129: "eu", 130: "ca", 131: "la", 132: "qu", 133: "gn", 134: "ay", 135: "tt", 136: "ug", 137: "dz", 138: "jv", 139: "su", 140: "gl", 141: "af", 142: "br", 143: "iu", 144: "gd", 145: "gv", 146: "ga", 147: "to", 148: "el-polyton", 149: "kl", 150: "az", 151: "nn", }, s = { 0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 5, 11: 1, 12: 4, 13: 0, 14: 6, 15: 0, 16: 0, 17: 0, 18: 0, 19: 2, 20: 4, 21: 9, 22: 21, 23: 3, 24: 29, 25: 29, 26: 29, 27: 29, 28: 29, 29: 0, 30: 0, 31: 4, 32: 7, 33: 25, 34: 0, 35: 0, 36: 0, 37: 0, 38: 29, 39: 29, 40: 0, 41: 5, 42: 7, 43: 7, 44: 7, 45: 7, 46: 7, 47: 7, 48: 7, 49: 7, 50: 4, 51: 24, 52: 23, 53: 7, 54: 7, 55: 7, 56: 7, 57: 27, 58: 7, 59: 4, 60: 4, 61: 4, 62: 4, 63: 26, 64: 9, 65: 9, 66: 9, 67: 13, 68: 13, 69: 11, 70: 10, 71: 12, 72: 17, 73: 16, 74: 14, 75: 15, 76: 18, 77: 19, 78: 20, 79: 22, 80: 30, 81: 0, 82: 0, 83: 0, 84: 4, 85: 28, 86: 28, 87: 28, 88: 0, 89: 0, 90: 0, 91: 0, 92: 0, 93: 0, 94: 0, 128: 0, 129: 0, 130: 0, 131: 0, 132: 0, 133: 0, 134: 0, 135: 7, 136: 4, 137: 26, 138: 0, 139: 0, 140: 0, 141: 0, 142: 0, 143: 28, 144: 0, 145: 0, 146: 0, 147: 0, 148: 6, 149: 0, 150: 0, 151: 0, }, t = { 1078: "af", 1052: "sq", 1156: "gsw", 1118: "am", 5121: "ar-DZ", 15361: "ar-BH", 3073: "ar", 2049: "ar-IQ", 11265: "ar-JO", 13313: "ar-KW", 12289: "ar-LB", 4097: "ar-LY", 6145: "ary", 8193: "ar-OM", 16385: "ar-QA", 1025: "ar-SA", 10241: "ar-SY", 7169: "aeb", 14337: "ar-AE", 9217: "ar-YE", 1067: "hy", 1101: "as", 2092: "az-Cyrl", 1068: "az", 1133: "ba", 1069: "eu", 1059: "be", 2117: "bn", 1093: "bn-IN", 8218: "bs-Cyrl", 5146: "bs", 1150: "br", 1026: "bg", 1027: "ca", 3076: "zh-HK", 5124: "zh-MO", 2052: "zh", 4100: "zh-SG", 1028: "zh-TW", 1155: "co", 1050: "hr", 4122: "hr-BA", 1029: "cs", 1030: "da", 1164: "prs", 1125: "dv", 2067: "nl-BE", 1043: "nl", 3081: "en-AU", 10249: "en-BZ", 4105: "en-CA", 9225: "en-029", 16393: "en-IN", 6153: "en-IE", 8201: "en-JM", 17417: "en-MY", 5129: "en-NZ", 13321: "en-PH", 18441: "en-SG", 7177: "en-ZA", 11273: "en-TT", 2057: "en-GB", 1033: "en", 12297: "en-ZW", 1061: "et", 1080: "fo", 1124: "fil", 1035: "fi", 2060: "fr-BE", 3084: "fr-CA", 1036: "fr", 5132: "fr-LU", 6156: "fr-MC", 4108: "fr-CH", 1122: "fy", 1110: "gl", 1079: "ka", 3079: "de-AT", 1031: "de", 5127: "de-LI", 4103: "de-LU", 2055: "de-CH", 1032: "el", 1135: "kl", 1095: "gu", 1128: "ha", 1037: "he", 1081: "hi", 1038: "hu", 1039: "is", 1136: "ig", 1057: "id", 1117: "iu", 2141: "iu-Latn", 2108: "ga", 1076: "xh", 1077: "zu", 1040: "it", 2064: "it-CH", 1041: "ja", 1099: "kn", 1087: "kk", 1107: "km", 1158: "quc", 1159: "rw", 1089: "sw", 1111: "kok", 1042: "ko", 1088: "ky", 1108: "lo", 1062: "lv", 1063: "lt", 2094: "dsb", 1134: "lb", 1071: "mk", 2110: "ms-BN", 1086: "ms", 1100: "ml", 1082: "mt", 1153: "mi", 1146: "arn", 1102: "mr", 1148: "moh", 1104: "mn", 2128: "mn-CN", 1121: "ne", 1044: "nb", 2068: "nn", 1154: "oc", 1096: "or", 1123: "ps", 1045: "pl", 1046: "pt", 2070: "pt-PT", 1094: "pa", 1131: "qu-BO", 2155: "qu-EC", 3179: "qu", 1048: "ro", 1047: "rm", 1049: "ru", 9275: "smn", 4155: "smj-NO", 5179: "smj", 3131: "se-FI", 1083: "se", 2107: "se-SE", 8251: "sms", 6203: "sma-NO", 7227: "sms", 1103: "sa", 7194: "sr-Cyrl-BA", 3098: "sr", 6170: "sr-Latn-BA", 2074: "sr-Latn", 1132: "nso", 1074: "tn", 1115: "si", 1051: "sk", 1060: "sl", 11274: "es-AR", 16394: "es-BO", 13322: "es-CL", 9226: "es-CO", 5130: "es-CR", 7178: "es-DO", 12298: "es-EC", 17418: "es-SV", 4106: "es-GT", 18442: "es-HN", 2058: "es-MX", 19466: "es-NI", 6154: "es-PA", 15370: "es-PY", 10250: "es-PE", 20490: "es-PR", 3082: "es", 1034: "es", 21514: "es-US", 14346: "es-UY", 8202: "es-VE", 2077: "sv-FI", 1053: "sv", 1114: "syr", 1064: "tg", 2143: "tzm", 1097: "ta", 1092: "tt", 1098: "te", 1054: "th", 1105: "bo", 1055: "tr", 1090: "tk", 1152: "ug", 1058: "uk", 1070: "hsb", 1056: "ur", 2115: "uz-Cyrl", 1091: "uz", 1066: "vi", 1106: "cy", 1160: "wo", 1157: "sah", 1144: "ii", 1130: "yo", }, u = "utf-16", v = { 0: "macintosh", 1: "x-mac-japanese", 2: "x-mac-chinesetrad", 3: "x-mac-korean", 6: "x-mac-greek", 7: "x-mac-cyrillic", 9: "x-mac-devanagai", 10: "x-mac-gurmukhi", 11: "x-mac-gujarati", 12: "x-mac-oriya", 13: "x-mac-bengali", 14: "x-mac-tamil", 15: "x-mac-telugu", 16: "x-mac-kannada", 17: "x-mac-malayalam", 18: "x-mac-sinhalese", 19: "x-mac-burmese", 20: "x-mac-khmer", 21: "x-mac-thai", 22: "x-mac-lao", 23: "x-mac-georgian", 24: "x-mac-armenian", 25: "x-mac-chinesesimp", 26: "x-mac-tibetan", 27: "x-mac-mongolian", 28: "x-mac-ethiopic", 29: "x-mac-ce", 30: "x-mac-vietnamese", 31: "x-mac-extarabic", }, w = { 15: "x-mac-icelandic", 17: "x-mac-turkish", 18: "x-mac-croatian", 24: "x-mac-ce", 25: "x-mac-ce", 26: "x-mac-ce", 27: "x-mac-ce", 28: "x-mac-ce", 30: "x-mac-icelandic", 37: "x-mac-romanian", 38: "x-mac-ce", 39: "x-mac-ce", 40: "x-mac-ce", 143: "x-mac-inuit", 146: "x-mac-gaelic", }; (c.parse = f), (c.make = k); }, { "../parse": 11, "../table": 13, "../types": 30 }, ], 27: [ function (a, b, c) { "use strict"; function d(a) { for (var b = 0; b < i.length; b += 1) { var c = i[b]; if (a >= c.begin && a < c.end) return b; } return -1; } function e(a, b) { var c = {}, d = new g.Parser(a, b); (c.version = d.parseUShort()), (c.xAvgCharWidth = d.parseShort()), (c.usWeightClass = d.parseUShort()), (c.usWidthClass = d.parseUShort()), (c.fsType = d.parseUShort()), (c.ySubscriptXSize = d.parseShort()), (c.ySubscriptYSize = d.parseShort()), (c.ySubscriptXOffset = d.parseShort()), (c.ySubscriptYOffset = d.parseShort()), (c.ySuperscriptXSize = d.parseShort()), (c.ySuperscriptYSize = d.parseShort()), (c.ySuperscriptXOffset = d.parseShort()), (c.ySuperscriptYOffset = d.parseShort()), (c.yStrikeoutSize = d.parseShort()), (c.yStrikeoutPosition = d.parseShort()), (c.sFamilyClass = d.parseShort()), (c.panose = []); for (var e = 0; e < 10; e++) c.panose[e] = d.parseByte(); return ( (c.ulUnicodeRange1 = d.parseULong()), (c.ulUnicodeRange2 = d.parseULong()), (c.ulUnicodeRange3 = d.parseULong()), (c.ulUnicodeRange4 = d.parseULong()), (c.achVendID = String.fromCharCode( d.parseByte(), d.parseByte(), d.parseByte(), d.parseByte() )), (c.fsSelection = d.parseUShort()), (c.usFirstCharIndex = d.parseUShort()), (c.usLastCharIndex = d.parseUShort()), (c.sTypoAscender = d.parseShort()), (c.sTypoDescender = d.parseShort()), (c.sTypoLineGap = d.parseShort()), (c.usWinAscent = d.parseUShort()), (c.usWinDescent = d.parseUShort()), c.version >= 1 && ((c.ulCodePageRange1 = d.parseULong()), (c.ulCodePageRange2 = d.parseULong())), c.version >= 2 && ((c.sxHeight = d.parseShort()), (c.sCapHeight = d.parseShort()), (c.usDefaultChar = d.parseUShort()), (c.usBreakChar = d.parseUShort()), (c.usMaxContent = d.parseUShort())), c ); } function f(a) { return new h.Table( "OS/2", [ { name: "version", type: "USHORT", value: 3 }, { name: "xAvgCharWidth", type: "SHORT", value: 0, }, { name: "usWeightClass", type: "USHORT", value: 0, }, { name: "usWidthClass", type: "USHORT", value: 0, }, { name: "fsType", type: "USHORT", value: 0 }, { name: "ySubscriptXSize", type: "SHORT", value: 650, }, { name: "ySubscriptYSize", type: "SHORT", value: 699, }, { name: "ySubscriptXOffset", type: "SHORT", value: 0, }, { name: "ySubscriptYOffset", type: "SHORT", value: 140, }, { name: "ySuperscriptXSize", type: "SHORT", value: 650, }, { name: "ySuperscriptYSize", type: "SHORT", value: 699, }, { name: "ySuperscriptXOffset", type: "SHORT", value: 0, }, { name: "ySuperscriptYOffset", type: "SHORT", value: 479, }, { name: "yStrikeoutSize", type: "SHORT", value: 49, }, { name: "yStrikeoutPosition", type: "SHORT", value: 258, }, { name: "sFamilyClass", type: "SHORT", value: 0, }, { name: "bFamilyType", type: "BYTE", value: 0 }, { name: "bSerifStyle", type: "BYTE", value: 0 }, { name: "bWeight", type: "BYTE", value: 0 }, { name: "bProportion", type: "BYTE", value: 0 }, { name: "bContrast", type: "BYTE", value: 0 }, { name: "bStrokeVariation", type: "BYTE", value: 0, }, { name: "bArmStyle", type: "BYTE", value: 0 }, { name: "bLetterform", type: "BYTE", value: 0 }, { name: "bMidline", type: "BYTE", value: 0 }, { name: "bXHeight", type: "BYTE", value: 0 }, { name: "ulUnicodeRange1", type: "ULONG", value: 0, }, { name: "ulUnicodeRange2", type: "ULONG", value: 0, }, { name: "ulUnicodeRange3", type: "ULONG", value: 0, }, { name: "ulUnicodeRange4", type: "ULONG", value: 0, }, { name: "achVendID", type: "CHARARRAY", value: "XXXX", }, { name: "fsSelection", type: "USHORT", value: 0, }, { name: "usFirstCharIndex", type: "USHORT", value: 0, }, { name: "usLastCharIndex", type: "USHORT", value: 0, }, { name: "sTypoAscender", type: "SHORT", value: 0, }, { name: "sTypoDescender", type: "SHORT", value: 0, }, { name: "sTypoLineGap", type: "SHORT", value: 0, }, { name: "usWinAscent", type: "USHORT", value: 0, }, { name: "usWinDescent", type: "USHORT", value: 0, }, { name: "ulCodePageRange1", type: "ULONG", value: 0, }, { name: "ulCodePageRange2", type: "ULONG", value: 0, }, { name: "sxHeight", type: "SHORT", value: 0 }, { name: "sCapHeight", type: "SHORT", value: 0 }, { name: "usDefaultChar", type: "USHORT", value: 0, }, { name: "usBreakChar", type: "USHORT", value: 0, }, { name: "usMaxContext", type: "USHORT", value: 0, }, ], a ); } var g = a("../parse"), h = a("../table"), i = [ { begin: 0, end: 127 }, { begin: 128, end: 255 }, { begin: 256, end: 383 }, { begin: 384, end: 591 }, { begin: 592, end: 687 }, { begin: 688, end: 767 }, { begin: 768, end: 879 }, { begin: 880, end: 1023 }, { begin: 11392, end: 11519 }, { begin: 1024, end: 1279 }, { begin: 1328, end: 1423 }, { begin: 1424, end: 1535 }, { begin: 42240, end: 42559 }, { begin: 1536, end: 1791 }, { begin: 1984, end: 2047 }, { begin: 2304, end: 2431 }, { begin: 2432, end: 2559 }, { begin: 2560, end: 2687 }, { begin: 2688, end: 2815 }, { begin: 2816, end: 2943 }, { begin: 2944, end: 3071 }, { begin: 3072, end: 3199 }, { begin: 3200, end: 3327 }, { begin: 3328, end: 3455 }, { begin: 3584, end: 3711 }, { begin: 3712, end: 3839 }, { begin: 4256, end: 4351 }, { begin: 6912, end: 7039 }, { begin: 4352, end: 4607 }, { begin: 7680, end: 7935 }, { begin: 7936, end: 8191 }, { begin: 8192, end: 8303 }, { begin: 8304, end: 8351 }, { begin: 8352, end: 8399 }, { begin: 8400, end: 8447 }, { begin: 8448, end: 8527 }, { begin: 8528, end: 8591 }, { begin: 8592, end: 8703 }, { begin: 8704, end: 8959 }, { begin: 8960, end: 9215 }, { begin: 9216, end: 9279 }, { begin: 9280, end: 9311 }, { begin: 9312, end: 9471 }, { begin: 9472, end: 9599 }, { begin: 9600, end: 9631 }, { begin: 9632, end: 9727 }, { begin: 9728, end: 9983 }, { begin: 9984, end: 10175 }, { begin: 12288, end: 12351 }, { begin: 12352, end: 12447 }, { begin: 12448, end: 12543 }, { begin: 12544, end: 12591 }, { begin: 12592, end: 12687 }, { begin: 43072, end: 43135 }, { begin: 12800, end: 13055 }, { begin: 13056, end: 13311 }, { begin: 44032, end: 55215 }, { begin: 55296, end: 57343 }, { begin: 67840, end: 67871 }, { begin: 19968, end: 40959 }, { begin: 57344, end: 63743 }, { begin: 12736, end: 12783 }, { begin: 64256, end: 64335 }, { begin: 64336, end: 65023 }, { begin: 65056, end: 65071 }, { begin: 65040, end: 65055 }, { begin: 65104, end: 65135 }, { begin: 65136, end: 65279 }, { begin: 65280, end: 65519 }, { begin: 65520, end: 65535 }, { begin: 3840, end: 4095 }, { begin: 1792, end: 1871 }, { begin: 1920, end: 1983 }, { begin: 3456, end: 3583 }, { begin: 4096, end: 4255 }, { begin: 4608, end: 4991 }, { begin: 5024, end: 5119 }, { begin: 5120, end: 5759 }, { begin: 5760, end: 5791 }, { begin: 5792, end: 5887 }, { begin: 6016, end: 6143 }, { begin: 6144, end: 6319 }, { begin: 10240, end: 10495 }, { begin: 40960, end: 42127 }, { begin: 5888, end: 5919 }, { begin: 66304, end: 66351 }, { begin: 66352, end: 66383 }, { begin: 66560, end: 66639 }, { begin: 118784, end: 119039 }, { begin: 119808, end: 120831 }, { begin: 1044480, end: 1048573 }, { begin: 65024, end: 65039 }, { begin: 917504, end: 917631 }, { begin: 6400, end: 6479 }, { begin: 6480, end: 6527 }, { begin: 6528, end: 6623 }, { begin: 6656, end: 6687 }, { begin: 11264, end: 11359 }, { begin: 11568, end: 11647 }, { begin: 19904, end: 19967 }, { begin: 43008, end: 43055 }, { begin: 65536, end: 65663 }, { begin: 65856, end: 65935 }, { begin: 66432, end: 66463 }, { begin: 66464, end: 66527 }, { begin: 66640, end: 66687 }, { begin: 66688, end: 66735 }, { begin: 67584, end: 67647 }, { begin: 68096, end: 68191 }, { begin: 119552, end: 119647 }, { begin: 73728, end: 74751 }, { begin: 119648, end: 119679 }, { begin: 7040, end: 7103 }, { begin: 7168, end: 7247 }, { begin: 7248, end: 7295 }, { begin: 43136, end: 43231 }, { begin: 43264, end: 43311 }, { begin: 43312, end: 43359 }, { begin: 43520, end: 43615 }, { begin: 65936, end: 65999 }, { begin: 66e3, end: 66047 }, { begin: 66208, end: 66271 }, { begin: 127024, end: 127135 }, ]; (c.unicodeRanges = i), (c.getUnicodeRange = d), (c.parse = e), (c.make = f); }, { "../parse": 11, "../table": 13 }, ], 28: [ function (a, b, c) { "use strict"; function d(a, b) { var c, d = {}, e = new g.Parser(a, b); switch ( ((d.version = e.parseVersion()), (d.italicAngle = e.parseFixed()), (d.underlinePosition = e.parseShort()), (d.underlineThickness = e.parseShort()), (d.isFixedPitch = e.parseULong()), (d.minMemType42 = e.parseULong()), (d.maxMemType42 = e.parseULong()), (d.minMemType1 = e.parseULong()), (d.maxMemType1 = e.parseULong()), d.version) ) { case 1: d.names = f.standardNames.slice(); break; case 2: for ( d.numberOfGlyphs = e.parseUShort(), d.glyphNameIndex = new Array( d.numberOfGlyphs ), c = 0; c < d.numberOfGlyphs; c++ ) d.glyphNameIndex[c] = e.parseUShort(); for ( d.names = [], c = 0; c < d.numberOfGlyphs; c++ ) if ( d.glyphNameIndex[c] >= f.standardNames.length ) { var h = e.parseChar(); d.names.push(e.parseString(h)); } break; case 2.5: for ( d.numberOfGlyphs = e.parseUShort(), d.offset = new Array(d.numberOfGlyphs), c = 0; c < d.numberOfGlyphs; c++ ) d.offset[c] = e.parseChar(); } return d; } function e() { return new h.Table("post", [ { name: "version", type: "FIXED", value: 196608 }, { name: "italicAngle", type: "FIXED", value: 0 }, { name: "underlinePosition", type: "FWORD", value: 0, }, { name: "underlineThickness", type: "FWORD", value: 0, }, { name: "isFixedPitch", type: "ULONG", value: 0 }, { name: "minMemType42", type: "ULONG", value: 0 }, { name: "maxMemType42", type: "ULONG", value: 0 }, { name: "minMemType1", type: "ULONG", value: 0 }, { name: "maxMemType1", type: "ULONG", value: 0 }, ]); } var f = a("../encoding"), g = a("../parse"), h = a("../table"); (c.parse = d), (c.make = e); }, { "../encoding": 6, "../parse": 11, "../table": 13 }, ], 29: [ function (a, b, c) { "use strict"; function d(a) { return (Math.log(a) / Math.log(2)) | 0; } function e(a) { for (; a.length % 4 != 0; ) a.push(0); for (var b = 0, c = 0; c < a.length; c += 4) b += (a[c] << 24) + (a[c + 1] << 16) + (a[c + 2] << 8) + a[c + 3]; return (b %= Math.pow(2, 32)); } function f(a, b, c, d) { return new l.Table("Table Record", [ { name: "tag", type: "TAG", value: void 0 !== a ? a : "", }, { name: "checkSum", type: "ULONG", value: void 0 !== b ? b : 0, }, { name: "offset", type: "ULONG", value: void 0 !== c ? c : 0, }, { name: "length", type: "ULONG", value: void 0 !== d ? d : 0, }, ]); } function g(a) { var b = new l.Table("sfnt", [ { name: "version", type: "TAG", value: "OTTO" }, { name: "numTables", type: "USHORT", value: 0 }, { name: "searchRange", type: "USHORT", value: 0 }, { name: "entrySelector", type: "USHORT", value: 0 }, { name: "rangeShift", type: "USHORT", value: 0 }, ]); (b.tables = a), (b.numTables = a.length); var c = Math.pow(2, d(b.numTables)); (b.searchRange = 16 * c), (b.entrySelector = d(c)), (b.rangeShift = 16 * b.numTables - b.searchRange); for ( var g = [], h = [], i = b.sizeOf() + f().sizeOf() * b.numTables; i % 4 != 0; ) (i += 1), h.push({ name: "padding", type: "BYTE", value: 0, }); for (var j = 0; j < a.length; j += 1) { var m = a[j]; k.argument( 4 === m.tableName.length, "Table name" + m.tableName + " is invalid." ); var n = m.sizeOf(), o = f(m.tableName, e(m.encode()), i, n); for ( g.push({ name: o.tag + " Table Record", type: "TABLE", value: o, }), h.push({ name: m.tableName + " table", type: "TABLE", value: m, }), i += n, k.argument( !isNaN(i), "Something went wrong calculating the offset." ); i % 4 != 0; ) (i += 1), h.push({ name: "padding", type: "BYTE", value: 0, }); } return ( g.sort(function (a, b) { return a.value.tag > b.value.tag ? 1 : -1; }), (b.fields = b.fields.concat(g)), (b.fields = b.fields.concat(h)), b ); } function h(a, b, c) { for (var d = 0; d < b.length; d += 1) { var e = a.charToGlyphIndex(b[d]); if (e > 0) { return a.glyphs.get(e).getMetrics(); } } return c; } function i(a) { for (var b = 0, c = 0; c < a.length; c += 1) b += a[c]; return b / a.length; } function j(a) { for ( var b, c = [], d = [], f = [], j = [], k = [], l = [], w = [], x = 0, y = 0, z = 0, A = 0, B = 0, C = 0; C < a.glyphs.length; C += 1 ) { var D = a.glyphs.get(C), E = 0 | D.unicode; (b > E || null === b) && (b = E), x < E && (x = E); var F = u.getUnicodeRange(E); if (F < 32) y |= 1 << F; else if (F < 64) z |= 1 << (F - 32); else if (F < 96) A |= 1 << (F - 64); else { if (!(F < 123)) throw new Error( "Unicode ranges bits > 123 are reserved for internal usage" ); B |= 1 << (F - 96); } if (".notdef" !== D.name) { var G = D.getMetrics(); c.push(G.xMin), d.push(G.yMin), f.push(G.xMax), j.push(G.yMax), l.push(G.leftSideBearing), w.push(G.rightSideBearing), k.push(D.advanceWidth); } } var H = { xMin: Math.min.apply(null, c), yMin: Math.min.apply(null, d), xMax: Math.max.apply(null, f), yMax: Math.max.apply(null, j), advanceWidthMax: Math.max.apply(null, k), advanceWidthAvg: i(k), minLeftSideBearing: Math.min.apply(null, l), maxLeftSideBearing: Math.max.apply(null, l), minRightSideBearing: Math.min.apply(null, w), }; (H.ascender = void 0 !== a.ascender ? a.ascender : H.yMax), (H.descender = void 0 !== a.descender ? a.descender : H.yMin); var I = o.make({ unitsPerEm: a.unitsPerEm, xMin: H.xMin, yMin: H.yMin, xMax: H.xMax, yMax: H.yMax, }), J = p.make({ ascender: H.ascender, descender: H.descender, advanceWidthMax: H.advanceWidthMax, minLeftSideBearing: H.minLeftSideBearing, minRightSideBearing: H.minRightSideBearing, xMaxExtent: H.maxLeftSideBearing + (H.xMax - H.xMin), numberOfHMetrics: a.glyphs.length, }), K = s.make(a.glyphs.length), L = u.make({ xAvgCharWidth: Math.round(H.advanceWidthAvg), usWeightClass: 500, usWidthClass: 5, usFirstCharIndex: b, usLastCharIndex: x, ulUnicodeRange1: y, ulUnicodeRange2: z, ulUnicodeRange3: A, ulUnicodeRange4: B, sTypoAscender: H.ascender, sTypoDescender: H.descender, sTypoLineGap: 0, usWinAscent: H.ascender, usWinDescent: -H.descender, sxHeight: h(a, "xyvw", { yMax: 0 }).yMax, sCapHeight: h(a, "HIKLEFJMNTZBDPRAGOQSUVWXY", H) .yMax, usBreakChar: a.hasChar(" ") ? 32 : 0, }), M = q.make(a.glyphs), N = m.make(a.glyphs), O = a.getEnglishName("fontFamily"), P = a.getEnglishName("fontSubfamily"), Q = O + " " + P, R = a.getEnglishName("postScriptName"); R || (R = O.replace(/\s/g, "") + "-" + P); var S = {}; for (var T in a.names) S[T] = a.names[T]; S.uniqueID || (S.uniqueID = { en: a.getEnglishName("manufacturer") + ":" + Q, }), S.postScriptName || (S.postScriptName = { en: R }), S.preferredFamily || (S.preferredFamily = a.names.fontFamily), S.preferredSubfamily || (S.preferredSubfamily = a.names.fontSubfamily); var U = [], V = t.make(S, U), W = U.length > 0 ? r.make(U) : void 0, X = v.make(), Y = n.make(a.glyphs, { version: a.getEnglishName("version"), fullName: Q, familyName: O, weightName: P, postScriptName: R, unitsPerEm: a.unitsPerEm, }), Z = [I, J, K, L, V, N, X, Y, M]; W && Z.push(W); var $ = g(Z), _ = $.encode(), aa = e(_), ba = $.fields, ca = !1; for (C = 0; C < ba.length; C += 1) if ("head table" === ba[C].name) { (ba[C].value.checkSumAdjustment = 2981146554 - aa), (ca = !0); break; } if (!ca) throw new Error( "Could not find head table with checkSum to adjust." ); return $; } var k = a("../check"), l = a("../table"), m = a("./cmap"), n = a("./cff"), o = a("./head"), p = a("./hhea"), q = a("./hmtx"), r = a("./ltag"), s = a("./maxp"), t = a("./name"), u = a("./os2"), v = a("./post"); (c.computeCheckSum = e), (c.make = g), (c.fontToTable = j); }, { "../check": 4, "../table": 13, "./cff": 14, "./cmap": 15, "./head": 19, "./hhea": 20, "./hmtx": 21, "./ltag": 24, "./maxp": 25, "./name": 26, "./os2": 27, "./post": 28, }, ], 30: [ function (a, b, c) { "use strict"; function d(a) { return function () { return a; }; } var e = a("./check"), f = 32768, g = 2147483648, h = {}, i = {}, j = {}; (i.BYTE = function (a) { return ( e.argument( a >= 0 && a <= 255, "Byte value should be between 0 and 255." ), [a] ); }), (j.BYTE = d(1)), (i.CHAR = function (a) { return [a.charCodeAt(0)]; }), (j.CHAR = d(1)), (i.CHARARRAY = function (a) { for (var b = [], c = 0; c < a.length; c += 1) b.push(a.charCodeAt(c)); return b; }), (j.CHARARRAY = function (a) { return a.length; }), (i.USHORT = function (a) { return [(a >> 8) & 255, 255 & a]; }), (j.USHORT = d(2)), (i.SHORT = function (a) { return ( a >= f && (a = -(2 * f - a)), [(a >> 8) & 255, 255 & a] ); }), (j.SHORT = d(2)), (i.UINT24 = function (a) { return [(a >> 16) & 255, (a >> 8) & 255, 255 & a]; }), (j.UINT24 = d(3)), (i.ULONG = function (a) { return [ (a >> 24) & 255, (a >> 16) & 255, (a >> 8) & 255, 255 & a, ]; }), (j.ULONG = d(4)), (i.LONG = function (a) { return ( a >= g && (a = -(2 * g - a)), [ (a >> 24) & 255, (a >> 16) & 255, (a >> 8) & 255, 255 & a, ] ); }), (j.LONG = d(4)), (i.FIXED = i.ULONG), (j.FIXED = j.ULONG), (i.FWORD = i.SHORT), (j.FWORD = j.SHORT), (i.UFWORD = i.USHORT), (j.UFWORD = j.USHORT), (i.LONGDATETIME = function () { return [0, 0, 0, 0, 0, 0, 0, 0]; }), (j.LONGDATETIME = d(8)), (i.TAG = function (a) { return ( e.argument( 4 === a.length, "Tag should be exactly 4 ASCII characters." ), [ a.charCodeAt(0), a.charCodeAt(1), a.charCodeAt(2), a.charCodeAt(3), ] ); }), (j.TAG = d(4)), (i.Card8 = i.BYTE), (j.Card8 = j.BYTE), (i.Card16 = i.USHORT), (j.Card16 = j.USHORT), (i.OffSize = i.BYTE), (j.OffSize = j.BYTE), (i.SID = i.USHORT), (j.SID = j.USHORT), (i.NUMBER = function (a) { return a >= -107 && a <= 107 ? [a + 139] : a >= 108 && a <= 1131 ? ((a -= 108), [247 + (a >> 8), 255 & a]) : a >= -1131 && a <= -108 ? ((a = -a - 108), [251 + (a >> 8), 255 & a]) : a >= -32768 && a <= 32767 ? i.NUMBER16(a) : i.NUMBER32(a); }), (j.NUMBER = function (a) { return i.NUMBER(a).length; }), (i.NUMBER16 = function (a) { return [28, (a >> 8) & 255, 255 & a]; }), (j.NUMBER16 = d(3)), (i.NUMBER32 = function (a) { return [ 29, (a >> 24) & 255, (a >> 16) & 255, (a >> 8) & 255, 255 & a, ]; }), (j.NUMBER32 = d(5)), (i.REAL = function (a) { var b = a.toString(), c = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec( b ); if (c) { var d = parseFloat( "1e" + ((c[2] ? +c[2] : 0) + c[1].length) ); b = (Math.round(a * d) / d).toString(); } var e, f, g = ""; for (e = 0, f = b.length; e < f; e += 1) { var h = b[e]; g += "e" === h ? "-" === b[++e] ? "c" : "b" : "." === h ? "a" : "-" === h ? "e" : h; } g += 1 & g.length ? "f" : "ff"; var i = [30]; for (e = 0, f = g.length; e < f; e += 2) i.push(parseInt(g.substr(e, 2), 16)); return i; }), (j.REAL = function (a) { return i.REAL(a).length; }), (i.NAME = i.CHARARRAY), (j.NAME = j.CHARARRAY), (i.STRING = i.CHARARRAY), (j.STRING = j.CHARARRAY), (h.UTF16 = function (a, b, c) { for ( var d = [], e = c / 2, f = 0; f < e; f++, b += 2 ) d[f] = a.getUint16(b); return String.fromCharCode.apply(null, d); }), (i.UTF16 = function (a) { for (var b = [], c = 0; c < a.length; c += 1) { var d = a.charCodeAt(c); b.push((d >> 8) & 255), b.push(255 & d); } return b; }), (j.UTF16 = function (a) { return 2 * a.length; }); var k = { "x-mac-croatian": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ", "x-mac-cyrillic": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю", "x-mac-gaelic": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ", "x-mac-greek": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­", "x-mac-icelandic": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", "x-mac-inuit": "ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł", "x-mac-ce": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ", macintosh: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", "x-mac-romanian": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", "x-mac-turkish": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ", }; h.MACSTRING = function (a, b, c, d) { var e = k[d]; if (void 0 !== e) { for (var f = "", g = 0; g < c; g++) { var h = a.getUint8(b + g); f += h <= 127 ? String.fromCharCode(h) : e[127 & h]; } return f; } }; var l, m = "function" == typeof WeakMap && new WeakMap(), n = function (a) { if (!l) { l = {}; for (var b in k) l[b] = new String(b); } var c = l[a]; if (void 0 !== c) { if (m) { var d = m.get(c); if (void 0 !== d) return d; } var e = k[a]; if (void 0 !== e) { for (var f = {}, g = 0; g < e.length; g++) f[e.charCodeAt(g)] = g + 128; return m && m.set(c, f), f; } } }; (i.MACSTRING = function (a, b) { var c = n(b); if (void 0 !== c) { for (var d = [], e = 0; e < a.length; e++) { var f = a.charCodeAt(e); if (f >= 128 && void 0 === (f = c[f])) return; d.push(f); } return d; } }), (j.MACSTRING = function (a, b) { var c = i.MACSTRING(a, b); return void 0 !== c ? c.length : 0; }), (i.INDEX = function (a) { var b, c = 1, d = [c], e = [], f = 0; for (b = 0; b < a.length; b += 1) { var g = i.OBJECT(a[b]); Array.prototype.push.apply(e, g), (f += g.length), (c += g.length), d.push(c); } if (0 === e.length) return [0, 0]; var h = [], j = (1 + Math.floor(Math.log(f) / Math.log(2)) / 8) | 0, k = [ void 0, i.BYTE, i.USHORT, i.UINT24, i.ULONG, ][j]; for (b = 0; b < d.length; b += 1) { var l = k(d[b]); Array.prototype.push.apply(h, l); } return Array.prototype.concat( i.Card16(a.length), i.OffSize(j), h, e ); }), (j.INDEX = function (a) { return i.INDEX(a).length; }), (i.DICT = function (a) { for ( var b = [], c = Object.keys(a), d = c.length, e = 0; e < d; e += 1 ) { var f = parseInt(c[e], 0), g = a[f]; (b = b.concat(i.OPERAND(g.value, g.type))), (b = b.concat(i.OPERATOR(f))); } return b; }), (j.DICT = function (a) { return i.DICT(a).length; }), (i.OPERATOR = function (a) { return a < 1200 ? [a] : [12, a - 1200]; }), (i.OPERAND = function (a, b) { var c = []; if (Array.isArray(b)) for (var d = 0; d < b.length; d += 1) e.argument( a.length === b.length, "Not enough arguments given for type" + b ), (c = c.concat(i.OPERAND(a[d], b[d]))); else if ("SID" === b) c = c.concat(i.NUMBER(a)); else if ("offset" === b) c = c.concat(i.NUMBER32(a)); else if ("number" === b) c = c.concat(i.NUMBER(a)); else { if ("real" !== b) throw new Error( "Unknown operand type " + b ); c = c.concat(i.REAL(a)); } return c; }), (i.OP = i.BYTE), (j.OP = j.BYTE); var o = "function" == typeof WeakMap && new WeakMap(); (i.CHARSTRING = function (a) { if (o) { var b = o.get(a); if (void 0 !== b) return b; } for (var c = [], d = a.length, e = 0; e < d; e += 1) { var f = a[e]; c = c.concat(i[f.type](f.value)); } return o && o.set(a, c), c; }), (j.CHARSTRING = function (a) { return i.CHARSTRING(a).length; }), (i.OBJECT = function (a) { var b = i[a.type]; return ( e.argument( void 0 !== b, "No encoding function for type " + a.type ), b(a.value) ); }), (j.OBJECT = function (a) { var b = j[a.type]; return ( e.argument( void 0 !== b, "No sizeOf function for type " + a.type ), b(a.value) ); }), (i.TABLE = function (a) { for ( var b = [], c = a.fields.length, d = 0; d < c; d += 1 ) { var f = a.fields[d], g = i[f.type]; e.argument( void 0 !== g, "No encoding function for field type " + f.type ); var h = a[f.name]; void 0 === h && (h = f.value); var j = g(h); b = b.concat(j); } return b; }), (j.TABLE = function (a) { for ( var b = 0, c = a.fields.length, d = 0; d < c; d += 1 ) { var f = a.fields[d], g = j[f.type]; e.argument( void 0 !== g, "No sizeOf function for field type " + f.type ); var h = a[f.name]; void 0 === h && (h = f.value), (b += g(h)); } return b; }), (i.LITERAL = function (a) { return a; }), (j.LITERAL = function (a) { return a.length; }), (c.decode = h), (c.encode = i), (c.sizeOf = j); }, { "./check": 4 }, ], 31: [ function (a, b, c) { function d() { throw new Error("setTimeout has not been defined"); } function e() { throw new Error("clearTimeout has not been defined"); } function f(a) { if (l === setTimeout) return setTimeout(a, 0); if ((l === d || !l) && setTimeout) return (l = setTimeout), setTimeout(a, 0); try { return l(a, 0); } catch (b) { try { return l.call(null, a, 0); } catch (b) { return l.call(this, a, 0); } } } function g(a) { if (m === clearTimeout) return clearTimeout(a); if ((m === e || !m) && clearTimeout) return (m = clearTimeout), clearTimeout(a); try { return m(a); } catch (b) { try { return m.call(null, a); } catch (b) { return m.call(this, a); } } } function h() { q && o && ((q = !1), o.length ? (p = o.concat(p)) : (r = -1), p.length && i()); } function i() { if (!q) { var a = f(h); q = !0; for (var b = p.length; b; ) { for (o = p, p = []; ++r < b; ) o && o[r].run(); (r = -1), (b = p.length); } (o = null), (q = !1), g(a); } } function j(a, b) { (this.fun = a), (this.array = b); } function k() {} var l, m, n = (b.exports = {}); !(function () { try { l = "function" == typeof setTimeout ? setTimeout : d; } catch (a) { l = d; } try { m = "function" == typeof clearTimeout ? clearTimeout : e; } catch (a) { m = e; } })(); var o, p = [], q = !1, r = -1; (n.nextTick = function (a) { var b = new Array(arguments.length - 1); if (arguments.length > 1) for (var c = 1; c < arguments.length; c++) b[c - 1] = arguments[c]; p.push(new j(a, b)), 1 !== p.length || q || f(i); }), (j.prototype.run = function () { this.fun.apply(null, this.array); }), (n.title = "browser"), (n.browser = !0), (n.env = {}), (n.argv = []), (n.version = ""), (n.versions = {}), (n.on = k), (n.addListener = k), (n.once = k), (n.off = k), (n.removeListener = k), (n.removeAllListeners = k), (n.emit = k), (n.binding = function (a) { throw new Error("process.binding is not supported"); }), (n.cwd = function () { return "/"; }), (n.chdir = function (a) { throw new Error("process.chdir is not supported"); }), (n.umask = function () { return 0; }); }, {}, ], 32: [ function (a, b, c) { !(function (a) { "use strict"; function b(a) { if ( ("string" != typeof a && (a = String(a)), /[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(a)) ) throw new TypeError( "Invalid character in header field name" ); return a.toLowerCase(); } function c(a) { return "string" != typeof a && (a = String(a)), a; } function d(a) { var b = { next: function () { var b = a.shift(); return { done: void 0 === b, value: b }; }, }; return ( r.iterable && (b[Symbol.iterator] = function () { return b; }), b ); } function e(a) { (this.map = {}), a instanceof e ? a.forEach(function (a, b) { this.append(b, a); }, this) : Array.isArray(a) ? a.forEach(function (a) { this.append(a[0], a[1]); }, this) : a && Object.getOwnPropertyNames(a).forEach( function (b) { this.append(b, a[b]); }, this ); } function f(a) { if (a.bodyUsed) return Promise.reject( new TypeError("Already read") ); a.bodyUsed = !0; } function g(a) { return new Promise(function (b, c) { (a.onload = function () { b(a.result); }), (a.onerror = function () { c(a.error); }); }); } function h(a) { var b = new FileReader(), c = g(b); return b.readAsArrayBuffer(a), c; } function i(a) { var b = new FileReader(), c = g(b); return b.readAsText(a), c; } function j(a) { for ( var b = new Uint8Array(a), c = new Array(b.length), d = 0; d < b.length; d++ ) c[d] = String.fromCharCode(b[d]); return c.join(""); } function k(a) { if (a.slice) return a.slice(0); var b = new Uint8Array(a.byteLength); return b.set(new Uint8Array(a)), b.buffer; } function l() { return ( (this.bodyUsed = !1), (this._initBody = function (a) { if (((this._bodyInit = a), a)) if ("string" == typeof a) this._bodyText = a; else if ( r.blob && Blob.prototype.isPrototypeOf(a) ) this._bodyBlob = a; else if ( r.formData && FormData.prototype.isPrototypeOf(a) ) this._bodyFormData = a; else if ( r.searchParams && URLSearchParams.prototype.isPrototypeOf( a ) ) this._bodyText = a.toString(); else if ( r.arrayBuffer && r.blob && t(a) ) (this._bodyArrayBuffer = k( a.buffer )), (this._bodyInit = new Blob([ this._bodyArrayBuffer, ])); else { if ( !r.arrayBuffer || (!ArrayBuffer.prototype.isPrototypeOf( a ) && !u(a)) ) throw new Error( "unsupported BodyInit type" ); this._bodyArrayBuffer = k(a); } else this._bodyText = ""; this.headers.get("content-type") || ("string" == typeof a ? this.headers.set( "content-type", "text/plain;charset=UTF-8" ) : this._bodyBlob && this._bodyBlob.type ? this.headers.set( "content-type", this._bodyBlob.type ) : r.searchParams && URLSearchParams.prototype.isPrototypeOf( a ) && this.headers.set( "content-type", "application/x-www-form-urlencoded;charset=UTF-8" )); }), r.blob && ((this.blob = function () { var a = f(this); if (a) return a; if (this._bodyBlob) return Promise.resolve( this._bodyBlob ); if (this._bodyArrayBuffer) return Promise.resolve( new Blob([ this._bodyArrayBuffer, ]) ); if (this._bodyFormData) throw new Error( "could not read FormData body as blob" ); return Promise.resolve( new Blob([this._bodyText]) ); }), (this.arrayBuffer = function () { return this._bodyArrayBuffer ? f(this) || Promise.resolve( this._bodyArrayBuffer ) : this.blob().then(h); })), (this.text = function () { var a = f(this); if (a) return a; if (this._bodyBlob) return i(this._bodyBlob); if (this._bodyArrayBuffer) return Promise.resolve( j(this._bodyArrayBuffer) ); if (this._bodyFormData) throw new Error( "could not read FormData body as text" ); return Promise.resolve(this._bodyText); }), r.formData && (this.formData = function () { return this.text().then(o); }), (this.json = function () { return this.text().then(JSON.parse); }), this ); } function m(a) { var b = a.toUpperCase(); return v.indexOf(b) > -1 ? b : a; } function n(a, b) { b = b || {}; var c = b.body; if (a instanceof n) { if (a.bodyUsed) throw new TypeError("Already read"); (this.url = a.url), (this.credentials = a.credentials), b.headers || (this.headers = new e(a.headers)), (this.method = a.method), (this.mode = a.mode), c || null == a._bodyInit || ((c = a._bodyInit), (a.bodyUsed = !0)); } else this.url = String(a); if ( ((this.credentials = b.credentials || this.credentials || "omit"), (!b.headers && this.headers) || (this.headers = new e(b.headers)), (this.method = m( b.method || this.method || "GET" )), (this.mode = b.mode || this.mode || null), (this.referrer = null), ("GET" === this.method || "HEAD" === this.method) && c) ) throw new TypeError( "Body not allowed for GET or HEAD requests" ); this._initBody(c); } function o(a) { var b = new FormData(); return ( a .trim() .split("&") .forEach(function (a) { if (a) { var c = a.split("="), d = c .shift() .replace(/\+/g, " "), e = c .join("=") .replace(/\+/g, " "); b.append( decodeURIComponent(d), decodeURIComponent(e) ); } }), b ); } function p(a) { var b = new e(); return ( a.split(/\r?\n/).forEach(function (a) { var c = a.split(":"), d = c.shift().trim(); if (d) { var e = c.join(":").trim(); b.append(d, e); } }), b ); } function q(a, b) { b || (b = {}), (this.type = "default"), (this.status = "status" in b ? b.status : 200), (this.ok = this.status >= 200 && this.status < 300), (this.statusText = "statusText" in b ? b.statusText : "OK"), (this.headers = new e(b.headers)), (this.url = b.url || ""), this._initBody(a); } if (!a.fetch) { var r = { searchParams: "URLSearchParams" in a, iterable: "Symbol" in a && "iterator" in Symbol, blob: "FileReader" in a && "Blob" in a && (function () { try { return new Blob(), !0; } catch (a) { return !1; } })(), formData: "FormData" in a, arrayBuffer: "ArrayBuffer" in a, }; if (r.arrayBuffer) var s = [ "[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]", ], t = function (a) { return ( a && DataView.prototype.isPrototypeOf(a) ); }, u = ArrayBuffer.isView || function (a) { return ( a && s.indexOf( Object.prototype.toString.call( a ) ) > -1 ); }; (e.prototype.append = function (a, d) { (a = b(a)), (d = c(d)); var e = this.map[a]; this.map[a] = e ? e + "," + d : d; }), (e.prototype.delete = function (a) { delete this.map[b(a)]; }), (e.prototype.get = function (a) { return ( (a = b(a)), this.has(a) ? this.map[a] : null ); }), (e.prototype.has = function (a) { return this.map.hasOwnProperty(b(a)); }), (e.prototype.set = function (a, d) { this.map[b(a)] = c(d); }), (e.prototype.forEach = function (a, b) { for (var c in this.map) this.map.hasOwnProperty(c) && a.call(b, this.map[c], c, this); }), (e.prototype.keys = function () { var a = []; return ( this.forEach(function (b, c) { a.push(c); }), d(a) ); }), (e.prototype.values = function () { var a = []; return ( this.forEach(function (b) { a.push(b); }), d(a) ); }), (e.prototype.entries = function () { var a = []; return ( this.forEach(function (b, c) { a.push([c, b]); }), d(a) ); }), r.iterable && (e.prototype[Symbol.iterator] = e.prototype.entries); var v = [ "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", ]; (n.prototype.clone = function () { return new n(this, { body: this._bodyInit }); }), l.call(n.prototype), l.call(q.prototype), (q.prototype.clone = function () { return new q(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new e(this.headers), url: this.url, }); }), (q.error = function () { var a = new q(null, { status: 0, statusText: "", }); return (a.type = "error"), a; }); var w = [301, 302, 303, 307, 308]; (q.redirect = function (a, b) { if (w.indexOf(b) === -1) throw new RangeError("Invalid status code"); return new q(null, { status: b, headers: { location: a }, }); }), (a.Headers = e), (a.Request = n), (a.Response = q), (a.fetch = function (a, b) { return new Promise(function (c, d) { var e = new n(a, b), f = new XMLHttpRequest(); (f.onload = function () { var a = { status: f.status, statusText: f.statusText, headers: p( f.getAllResponseHeaders() || "" ), }; (a.url = "responseURL" in f ? f.responseURL : a.headers.get( "X-Request-URL" )), c( new q( "response" in f ? f.response : f.responseText, a ) ); }), (f.onerror = function () { d( new TypeError( "Network request failed" ) ); }), (f.ontimeout = function () { d( new TypeError( "Network request failed" ) ); }), f.open(e.method, e.url, !0), "include" === e.credentials && (f.withCredentials = !0), "responseType" in f && r.blob && (f.responseType = "blob"), e.headers.forEach(function (a, b) { f.setRequestHeader(b, a); }), f.send( void 0 === e._bodyInit ? null : e._bodyInit ); }); }), (a.fetch.polyfill = !0); } })("undefined" != typeof self ? self : this); }, {}, ], 33: [ function (a, b, c) { "use strict"; var d = a("./core/core"); a("./color/p5.Color"), a("./core/p5.Element"), a("./typography/p5.Font"), a("./core/p5.Graphics"), a("./core/p5.Renderer2D"), a("./image/p5.Image"), a("./math/p5.Vector"), a("./io/p5.TableRow"), a("./io/p5.Table"), a("./io/p5.XML"), a("./color/creating_reading"), a("./color/setting"), a("./core/constants"), a("./utilities/conversion"), a("./utilities/array_functions"), a("./utilities/string_functions"), a("./core/environment"), a("./image/image"), a("./image/loading_displaying"), a("./image/pixels"), a("./io/files"), a("./events/keyboard"), a("./events/acceleration"), a("./events/mouse"), a("./utilities/time_date"), a("./events/touch"), a("./math/math"), a("./math/calculation"), a("./math/random"), a("./math/noise"), a("./math/trigonometry"), a("./core/rendering"), a("./core/2d_primitives"), a("./core/attributes"), a("./core/curves"), a("./core/vertex"), a("./core/structure"), a("./core/transform"), a("./typography/attributes"), a("./typography/loading_displaying"), a("./webgl/p5.RendererGL"), a("./webgl/p5.Geometry"), a("./webgl/p5.RendererGL.Retained"), a("./webgl/p5.RendererGL.Immediate"), a("./webgl/primitives"), a("./webgl/loading"), a("./webgl/p5.Matrix"), a("./webgl/material"), a("./webgl/light"), a("./webgl/shader"), a("./webgl/camera"), a("./webgl/interaction"); var e = function () { window.PHANTOMJS || window.mocha || (((window.setup && "function" == typeof window.setup) || (window.draw && "function" == typeof window.draw)) && !d.instance && new d()); }; "complete" === document.readyState ? e() : window.addEventListener("load", e, !1), (b.exports = d); }, { "./color/creating_reading": 35, "./color/p5.Color": 36, "./color/setting": 37, "./core/2d_primitives": 38, "./core/attributes": 39, "./core/constants": 41, "./core/core": 42, "./core/curves": 43, "./core/environment": 44, "./core/p5.Element": 46, "./core/p5.Graphics": 47, "./core/p5.Renderer2D": 49, "./core/rendering": 50, "./core/structure": 52, "./core/transform": 53, "./core/vertex": 54, "./events/acceleration": 55, "./events/keyboard": 56, "./events/mouse": 57, "./events/touch": 58, "./image/image": 60, "./image/loading_displaying": 61, "./image/p5.Image": 62, "./image/pixels": 63, "./io/files": 64, "./io/p5.Table": 65, "./io/p5.TableRow": 66, "./io/p5.XML": 67, "./math/calculation": 68, "./math/math": 69, "./math/noise": 70, "./math/p5.Vector": 71, "./math/random": 73, "./math/trigonometry": 74, "./typography/attributes": 75, "./typography/loading_displaying": 76, "./typography/p5.Font": 77, "./utilities/array_functions": 78, "./utilities/conversion": 79, "./utilities/string_functions": 80, "./utilities/time_date": 81, "./webgl/camera": 82, "./webgl/interaction": 83, "./webgl/light": 84, "./webgl/loading": 85, "./webgl/material": 86, "./webgl/p5.Geometry": 87, "./webgl/p5.Matrix": 88, "./webgl/p5.RendererGL": 91, "./webgl/p5.RendererGL.Immediate": 89, "./webgl/p5.RendererGL.Retained": 90, "./webgl/primitives": 92, "./webgl/shader": 93, }, ], 34: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.ColorConversion = {}), (d.ColorConversion._hsbaToHSLA = function (a) { var b = a[0], c = a[1], d = a[2], e = ((2 - c) * d) / 2; return ( 0 !== e && (1 === e ? (c = 0) : e < 0.5 ? (c /= 2 - c) : (c = (c * d) / (2 - 2 * e))), [b, c, e, a[3]] ); }), (d.ColorConversion._hsbaToRGBA = function (a) { var b = 6 * a[0], c = a[1], d = a[2], e = []; if (0 === c) e = [d, d, d, a[3]]; else { var f, g, h, i = Math.floor(b), j = d * (1 - c), k = d * (1 - c * (b - i)), l = d * (1 - c * (1 + i - b)); 1 === i ? ((f = k), (g = d), (h = j)) : 2 === i ? ((f = j), (g = d), (h = l)) : 3 === i ? ((f = j), (g = k), (h = d)) : 4 === i ? ((f = l), (g = j), (h = d)) : 5 === i ? ((f = d), (g = j), (h = k)) : ((f = d), (g = l), (h = j)), (e = [f, g, h, a[3]]); } return e; }), (d.ColorConversion._hslaToHSBA = function (a) { var b, c = a[0], d = a[1], e = a[2]; return ( (b = e < 0.5 ? (1 + d) * e : e + d - e * d), (d = (2 * (b - e)) / b), [c, d, b, a[3]] ); }), (d.ColorConversion._hslaToRGBA = function (a) { var b = 6 * a[0], c = a[1], d = a[2], e = []; if (0 === c) e = [d, d, d, a[3]]; else { var f; f = d < 0.5 ? (1 + c) * d : d + c - d * c; var g = 2 * d - f, h = function (a, b, c) { return ( a < 0 ? (a += 6) : a >= 6 && (a -= 6), a < 1 ? b + (c - b) * a : a < 3 ? c : a < 4 ? b + (c - b) * (4 - a) : b ); }; e = [ h(b + 2, g, f), h(b, g, f), h(b - 2, g, f), a[3], ]; } return e; }), (d.ColorConversion._rgbaToHSBA = function (a) { var b, c, d = a[0], e = a[1], f = a[2], g = Math.max(d, e, f), h = g - Math.min(d, e, f); return ( 0 === h ? ((b = 0), (c = 0)) : ((c = h / g), d === g ? (b = (e - f) / h) : e === g ? (b = 2 + (f - d) / h) : f === g && (b = 4 + (d - e) / h), b < 0 ? (b += 6) : b >= 6 && (b -= 6)), [b / 6, c, g, a[3]] ); }), (d.ColorConversion._rgbaToHSLA = function (a) { var b, c, d = a[0], e = a[1], f = a[2], g = Math.max(d, e, f), h = Math.min(d, e, f), i = g + h, j = g - h; return ( 0 === j ? ((b = 0), (c = 0)) : ((c = i < 1 ? j / i : j / (2 - i)), d === g ? (b = (e - f) / j) : e === g ? (b = 2 + (f - d) / j) : f === g && (b = 4 + (d - e) / j), b < 0 ? (b += 6) : b >= 6 && (b -= 6)), [b / 6, c, i / 2, a[3]] ); }), (b.exports = d.ColorConversion); }, { "../core/core": 42 }, ], 35: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("../core/constants"); a("./p5.Color"), (d.prototype.alpha = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getAlpha(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.blue = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getBlue(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.brightness = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getBrightness(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.color = function () { return arguments[0] instanceof d.Color ? arguments[0] : arguments[0] instanceof Array ? this instanceof d.Renderer ? new d.Color(this, arguments[0]) : new d.Color(this._renderer, arguments[0]) : this instanceof d.Renderer ? new d.Color(this, arguments) : new d.Color(this._renderer, arguments); }), (d.prototype.green = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getGreen(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.hue = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getHue(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.lerpColor = function (a, b, c) { var d, f, g, h, i, j, k = this._renderer._colorMode, l = this._renderer._colorMaxes; if (k === e.RGB) (i = a.levels.map(function (a) { return a / 255; })), (j = b.levels.map(function (a) { return a / 255; })); else if (k === e.HSB) a._getBrightness(), b._getBrightness(), (i = a.hsba), (j = b.hsba); else { if (k !== e.HSL) throw new Error( k + "cannot be used for interpolation." ); a._getLightness(), b._getLightness(), (i = a.hsla), (j = b.hsla); } return ( (c = Math.max(Math.min(c, 1), 0)), (d = this.lerp(i[0], j[0], c)), (f = this.lerp(i[1], j[1], c)), (g = this.lerp(i[2], j[2], c)), (h = this.lerp(i[3], j[3], c)), (d *= l[k][0]), (f *= l[k][1]), (g *= l[k][2]), (h *= l[k][3]), this.color(d, f, g, h) ); }), (d.prototype.lightness = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getLightness(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.red = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getRed(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (d.prototype.saturation = function (a) { if (a instanceof d.Color || a instanceof Array) return this.color(a)._getSaturation(); throw new Error( "Needs p5.Color or pixel array as argument." ); }), (b.exports = d); }, { "../core/constants": 41, "../core/core": 42, "./p5.Color": 36, }, ], 36: [ function (a, b, c) { var d = a("../core/core"), e = a("../core/constants"), f = a("./color_conversion"); (d.Color = function (a, b) { if ( ((this.mode = a._colorMode), (this.maxes = a._colorMaxes), this.mode !== e.RGB && this.mode !== e.HSL && this.mode !== e.HSB) ) throw new Error( this.mode + " is an invalid colorMode." ); return ( (this._array = d.Color._parseInputs.apply(a, b)), (this.levels = this._array.map(function (a) { return Math.round(255 * a); })), this ); }), (d.Color.prototype.toString = function () { var a = this.levels, b = this._array[3]; return ( "rgba(" + a[0] + "," + a[1] + "," + a[2] + "," + b + ")" ); }), (d.Color.prototype._getAlpha = function () { return this._array[3] * this.maxes[this.mode][3]; }), (d.Color.prototype._getBlue = function () { return this._array[2] * this.maxes[e.RGB][2]; }), (d.Color.prototype._getBrightness = function () { return ( this.hsba || (this.hsba = f._rgbaToHSBA(this._array)), this.hsba[2] * this.maxes[e.HSB][2] ); }), (d.Color.prototype._getGreen = function () { return this._array[1] * this.maxes[e.RGB][1]; }), (d.Color.prototype._getHue = function () { return this.mode === e.HSB ? (this.hsba || (this.hsba = f._rgbaToHSBA(this._array)), this.hsba[0] * this.maxes[e.HSB][0]) : (this.hsla || (this.hsla = f._rgbaToHSLA(this._array)), this.hsla[0] * this.maxes[e.HSL][0]); }), (d.Color.prototype._getLightness = function () { return ( this.hsla || (this.hsla = f._rgbaToHSLA(this._array)), this.hsla[2] * this.maxes[e.HSL][2] ); }), (d.Color.prototype._getRed = function () { return this._array[0] * this.maxes[e.RGB][0]; }), (d.Color.prototype._getSaturation = function () { return this.mode === e.HSB ? (this.hsba || (this.hsba = f._rgbaToHSBA(this._array)), this.hsba[1] * this.maxes[e.HSB][1]) : (this.hsla || (this.hsla = f._rgbaToHSLA(this._array)), this.hsla[1] * this.maxes[e.HSL][1]); }); var g = { aliceblue: "#f0f8ff", antiquewhite: "#faebd7", aqua: "#00ffff", aquamarine: "#7fffd4", azure: "#f0ffff", beige: "#f5f5dc", bisque: "#ffe4c4", black: "#000000", blanchedalmond: "#ffebcd", blue: "#0000ff", blueviolet: "#8a2be2", brown: "#a52a2a", burlywood: "#deb887", cadetblue: "#5f9ea0", chartreuse: "#7fff00", chocolate: "#d2691e", coral: "#ff7f50", cornflowerblue: "#6495ed", cornsilk: "#fff8dc", crimson: "#dc143c", cyan: "#00ffff", darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", darkkhaki: "#bdb76b", darkmagenta: "#8b008b", darkolivegreen: "#556b2f", darkorange: "#ff8c00", darkorchid: "#9932cc", darkred: "#8b0000", darksalmon: "#e9967a", darkseagreen: "#8fbc8f", darkslateblue: "#483d8b", darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", darkturquoise: "#00ced1", darkviolet: "#9400d3", deeppink: "#ff1493", deepskyblue: "#00bfff", dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1e90ff", firebrick: "#b22222", floralwhite: "#fffaf0", forestgreen: "#228b22", fuchsia: "#ff00ff", gainsboro: "#dcdcdc", ghostwhite: "#f8f8ff", gold: "#ffd700", goldenrod: "#daa520", gray: "#808080", green: "#008000", greenyellow: "#adff2f", grey: "#808080", honeydew: "#f0fff0", hotpink: "#ff69b4", indianred: "#cd5c5c", indigo: "#4b0082", ivory: "#fffff0", khaki: "#f0e68c", lavender: "#e6e6fa", lavenderblush: "#fff0f5", lawngreen: "#7cfc00", lemonchiffon: "#fffacd", lightblue: "#add8e6", lightcoral: "#f08080", lightcyan: "#e0ffff", lightgoldenrodyellow: "#fafad2", lightgray: "#d3d3d3", lightgreen: "#90ee90", lightgrey: "#d3d3d3", lightpink: "#ffb6c1", lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", lightskyblue: "#87cefa", lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#b0c4de", lightyellow: "#ffffe0", lime: "#00ff00", limegreen: "#32cd32", linen: "#faf0e6", magenta: "#ff00ff", maroon: "#800000", mediumaquamarine: "#66cdaa", mediumblue: "#0000cd", mediumorchid: "#ba55d3", mediumpurple: "#9370db", mediumseagreen: "#3cb371", mediumslateblue: "#7b68ee", mediumspringgreen: "#00fa9a", mediumturquoise: "#48d1cc", mediumvioletred: "#c71585", midnightblue: "#191970", mintcream: "#f5fffa", mistyrose: "#ffe4e1", moccasin: "#ffe4b5", navajowhite: "#ffdead", navy: "#000080", oldlace: "#fdf5e6", olive: "#808000", olivedrab: "#6b8e23", orange: "#ffa500", orangered: "#ff4500", orchid: "#da70d6", palegoldenrod: "#eee8aa", palegreen: "#98fb98", paleturquoise: "#afeeee", palevioletred: "#db7093", papayawhip: "#ffefd5", peachpuff: "#ffdab9", peru: "#cd853f", pink: "#ffc0cb", plum: "#dda0dd", powderblue: "#b0e0e6", purple: "#800080", red: "#ff0000", rosybrown: "#bc8f8f", royalblue: "#4169e1", saddlebrown: "#8b4513", salmon: "#fa8072", sandybrown: "#f4a460", seagreen: "#2e8b57", seashell: "#fff5ee", sienna: "#a0522d", silver: "#c0c0c0", skyblue: "#87ceeb", slateblue: "#6a5acd", slategray: "#708090", slategrey: "#708090", snow: "#fffafa", springgreen: "#00ff7f", steelblue: "#4682b4", tan: "#d2b48c", teal: "#008080", thistle: "#d8bfd8", tomato: "#ff6347", turquoise: "#40e0d0", violet: "#ee82ee", wheat: "#f5deb3", white: "#ffffff", whitesmoke: "#f5f5f5", yellow: "#ffff00", yellowgreen: "#9acd32", }, h = /\s*/, i = /(\d{1,3})/, j = /((?:\d+(?:\.\d+)?)|(?:\.\d+))/, k = new RegExp(j.source + "%"), l = { HEX3: /^#([a-f0-9])([a-f0-9])([a-f0-9])$/i, HEX6: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i, RGB: new RegExp( [ "^rgb\\(", i.source, ",", i.source, ",", i.source, "\\)$", ].join(h.source), "i" ), RGB_PERCENT: new RegExp( [ "^rgb\\(", k.source, ",", k.source, ",", k.source, "\\)$", ].join(h.source), "i" ), RGBA: new RegExp( [ "^rgba\\(", i.source, ",", i.source, ",", i.source, ",", j.source, "\\)$", ].join(h.source), "i" ), RGBA_PERCENT: new RegExp( [ "^rgba\\(", k.source, ",", k.source, ",", k.source, ",", j.source, "\\)$", ].join(h.source), "i" ), HSL: new RegExp( [ "^hsl\\(", i.source, ",", k.source, ",", k.source, "\\)$", ].join(h.source), "i" ), HSLA: new RegExp( [ "^hsla\\(", i.source, ",", k.source, ",", k.source, ",", j.source, "\\)$", ].join(h.source), "i" ), HSB: new RegExp( [ "^hsb\\(", i.source, ",", k.source, ",", k.source, "\\)$", ].join(h.source), "i" ), HSBA: new RegExp( [ "^hsba\\(", i.source, ",", k.source, ",", k.source, ",", j.source, "\\)$", ].join(h.source), "i" ), }; (d.Color._parseInputs = function () { var a = arguments.length, b = this._colorMode, c = this._colorMaxes, h = []; if (a >= 3) return ( (h[0] = arguments[0] / c[b][0]), (h[1] = arguments[1] / c[b][1]), (h[2] = arguments[2] / c[b][2]), "number" == typeof arguments[3] ? (h[3] = arguments[3] / c[b][3]) : (h[3] = 1), (h = h.map(function (a) { return Math.max(Math.min(a, 1), 0); })), b === e.HSL ? f._hslaToRGBA(h) : b === e.HSB ? f._hsbaToRGBA(h) : h ); if (1 === a && "string" == typeof arguments[0]) { var i = arguments[0].trim().toLowerCase(); if (g[i]) return d.Color._parseInputs.apply(this, [g[i]]); if (l.HEX3.test(i)) return ( (h = l.HEX3.exec(i) .slice(1) .map(function (a) { return parseInt(a + a, 16) / 255; })), (h[3] = 1), h ); if (l.HEX6.test(i)) return ( (h = l.HEX6.exec(i) .slice(1) .map(function (a) { return parseInt(a, 16) / 255; })), (h[3] = 1), h ); if (l.RGB.test(i)) return ( (h = l.RGB.exec(i) .slice(1) .map(function (a) { return a / 255; })), (h[3] = 1), h ); if (l.RGB_PERCENT.test(i)) return ( (h = l.RGB_PERCENT.exec(i) .slice(1) .map(function (a) { return parseFloat(a) / 100; })), (h[3] = 1), h ); if (l.RGBA.test(i)) return (h = l.RGBA.exec(i) .slice(1) .map(function (a, b) { return 3 === b ? parseFloat(a) : a / 255; })); if (l.RGBA_PERCENT.test(i)) return (h = l.RGBA_PERCENT.exec(i) .slice(1) .map(function (a, b) { return 3 === b ? parseFloat(a) : parseFloat(a) / 100; })); if ( (l.HSL.test(i) ? ((h = l.HSL.exec(i) .slice(1) .map(function (a, b) { return 0 === b ? parseInt(a, 10) / 360 : parseInt(a, 10) / 100; })), (h[3] = 1)) : l.HSLA.test(i) && (h = l.HSLA.exec(i) .slice(1) .map(function (a, b) { return 0 === b ? parseInt(a, 10) / 360 : 3 === b ? parseFloat(a) : parseInt(a, 10) / 100; })), (h = h.map(function (a) { return Math.max(Math.min(a, 1), 0); })), h.length) ) return f._hslaToRGBA(h); if ( (l.HSB.test(i) ? ((h = l.HSB.exec(i) .slice(1) .map(function (a, b) { return 0 === b ? parseInt(a, 10) / 360 : parseInt(a, 10) / 100; })), (h[3] = 1)) : l.HSBA.test(i) && (h = l.HSBA.exec(i) .slice(1) .map(function (a, b) { return 0 === b ? parseInt(a, 10) / 360 : 3 === b ? parseFloat(a) : parseInt(a, 10) / 100; })), (h = h.map(function (a) { return Math.max(Math.min(a, 1), 0); })), h.length) ) return f._hsbaToRGBA(h); h = [1, 1, 1, 1]; } else { if ( (1 !== a && 2 !== a) || "number" != typeof arguments[0] ) throw new Error( arguments + "is not a valid color representation." ); (h[0] = arguments[0] / c[b][2]), (h[1] = arguments[0] / c[b][2]), (h[2] = arguments[0] / c[b][2]), "number" == typeof arguments[1] ? (h[3] = arguments[1] / c[b][3]) : (h[3] = 1), (h = h.map(function (a) { return Math.max(Math.min(a, 1), 0); })); } return h; }), (b.exports = d.Color); }, { "../core/constants": 41, "../core/core": 42, "./color_conversion": 34, }, ], 37: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("../core/constants"); a("./p5.Color"), (d.prototype.background = function () { return ( arguments[0] instanceof d.Image ? this.image( arguments[0], 0, 0, this.width, this.height ) : this._renderer.background.apply( this._renderer, arguments ), this ); }), (d.prototype.clear = function () { return this._renderer.clear(), this; }), (d.prototype.colorMode = function () { if ( arguments[0] === e.RGB || arguments[0] === e.HSB || arguments[0] === e.HSL ) { this._renderer._colorMode = arguments[0]; var a = this._renderer._colorMaxes[ this._renderer._colorMode ]; 2 === arguments.length ? ((a[0] = arguments[1]), (a[1] = arguments[1]), (a[2] = arguments[1]), (a[3] = arguments[1])) : 4 === arguments.length ? ((a[0] = arguments[1]), (a[1] = arguments[2]), (a[2] = arguments[3])) : 5 === arguments.length && ((a[0] = arguments[1]), (a[1] = arguments[2]), (a[2] = arguments[3]), (a[3] = arguments[4])); } return this; }), (d.prototype.fill = function () { return ( this._renderer._setProperty("_fillSet", !0), this._renderer._setProperty("_doFill", !0), this._renderer.fill.apply( this._renderer, arguments ), this ); }), (d.prototype.noFill = function () { return ( this._renderer._setProperty("_doFill", !1), this ); }), (d.prototype.noStroke = function () { return ( this._renderer._setProperty("_doStroke", !1), this ); }), (d.prototype.stroke = function () { return ( this._renderer._setProperty("_strokeSet", !0), this._renderer._setProperty("_doStroke", !0), this._renderer.stroke.apply( this._renderer, arguments ), this ); }), (b.exports = d); }, { "../core/constants": 41, "../core/core": 42, "./p5.Color": 36, }, ], 38: [ function (a, b, c) { "use strict"; var d = a("./core"), e = a("./constants"), f = a("./canvas"); a("./error_helpers"), (d.prototype.arc = function (a, b, c, d, f, g, h) { for ( var i = new Array(arguments.length), j = 0; j < i.length; ++j ) i[j] = arguments[j]; if ( !this._renderer._doStroke && !this._renderer._doFill ) return this; for ( this._angleMode === e.DEGREES && ((f = this.radians(f)), (g = this.radians(g))); f < 0; ) f += e.TWO_PI; for (; g < 0; ) g += e.TWO_PI; return ( (f %= e.TWO_PI), (g %= e.TWO_PI), g === f && (g += e.TWO_PI), (f = f <= e.HALF_PI ? Math.atan((c / d) * Math.tan(f)) : f > e.HALF_PI && f <= 3 * e.HALF_PI ? Math.atan((c / d) * Math.tan(f)) + e.PI : Math.atan((c / d) * Math.tan(f)) + e.TWO_PI), (g = g <= e.HALF_PI ? Math.atan((c / d) * Math.tan(g)) : g > e.HALF_PI && g <= 3 * e.HALF_PI ? Math.atan((c / d) * Math.tan(g)) + e.PI : Math.atan((c / d) * Math.tan(g)) + e.TWO_PI), f > g && (g += e.TWO_PI), (c = Math.abs(c)), (d = Math.abs(d)), this._renderer.arc(a, b, c, d, f, g, h), this ); }), (d.prototype.ellipse = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; if ( (3 === a.length && a.push(a[2]), a[2] < 0 && (a[2] = Math.abs(a[2])), a[3] < 0 && (a[3] = Math.abs(a[3])), !this._renderer._doStroke && !this._renderer._doFill) ) return this; var c = f.modeAdjust( a[0], a[1], a[2], a[3], this._renderer._ellipseMode ); return ( (a[0] = c.x), (a[1] = c.y), (a[2] = c.w), (a[3] = c.h), this._renderer.ellipse(a), this ); }), (d.prototype.line = function () { if (!this._renderer._doStroke) return this; for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return ( this._renderer.isP3D ? this._renderer.line( a[0], a[1], a[2], a[3], a[4], a[5] ) : this._renderer.line( a[0], a[1], a[2], a[3] ), this ); }), (d.prototype.point = function () { if (!this._renderer._doStroke) return this; for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return ( this._renderer.isP3D ? this._renderer.point(a[0], a[1], a[2]) : this._renderer.point(a[0], a[1]), this ); }), (d.prototype.quad = function () { if ( !this._renderer._doStroke && !this._renderer._doFill ) return this; for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return ( this._renderer.isP3D ? this._renderer.quad( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11] ) : this._renderer.quad( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] ), this ); }), (d.prototype.rect = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; if ( this._renderer._doStroke || this._renderer._doFill ) { var c = f.modeAdjust( a[0], a[1], a[2], a[3], this._renderer._rectMode ); return ( (a[0] = c.x), (a[1] = c.y), (a[2] = c.w), (a[3] = c.h), this._renderer.rect(a), this ); } }), (d.prototype.triangle = function () { if ( !this._renderer._doStroke && !this._renderer._doFill ) return this; for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return this._renderer.triangle(a), this; }), (b.exports = d); }, { "./canvas": 40, "./constants": 41, "./core": 42, "./error_helpers": 45, }, ], 39: [ function (a, b, c) { "use strict"; var d = a("./core"), e = a("./constants"); (d.prototype.ellipseMode = function (a) { return ( (a !== e.CORNER && a !== e.CORNERS && a !== e.RADIUS && a !== e.CENTER) || (this._renderer._ellipseMode = a), this ); }), (d.prototype.noSmooth = function () { return this._renderer.noSmooth(), this; }), (d.prototype.rectMode = function (a) { return ( (a !== e.CORNER && a !== e.CORNERS && a !== e.RADIUS && a !== e.CENTER) || (this._renderer._rectMode = a), this ); }), (d.prototype.smooth = function () { return this._renderer.smooth(), this; }), (d.prototype.strokeCap = function (a) { return ( (a !== e.ROUND && a !== e.SQUARE && a !== e.PROJECT) || this._renderer.strokeCap(a), this ); }), (d.prototype.strokeJoin = function (a) { return ( (a !== e.ROUND && a !== e.BEVEL && a !== e.MITER) || this._renderer.strokeJoin(a), this ); }), (d.prototype.strokeWeight = function (a) { return this._renderer.strokeWeight(a), this; }), (b.exports = d); }, { "./constants": 41, "./core": 42 }, ], 40: [ function (a, b, c) { var d = a("./constants"); b.exports = { modeAdjust: function (a, b, c, e, f) { return f === d.CORNER ? { x: a, y: b, w: c, h: e } : f === d.CORNERS ? { x: a, y: b, w: c - a, h: e - b } : f === d.RADIUS ? { x: a - c, y: b - e, w: 2 * c, h: 2 * e } : f === d.CENTER ? { x: a - 0.5 * c, y: b - 0.5 * e, w: c, h: e } : void 0; }, arcModeAdjust: function (a, b, c, e, f) { return f === d.CORNER ? { x: a + 0.5 * c, y: b + 0.5 * e, w: c, h: e } : f === d.CORNERS ? { x: a, y: b, w: c + a, h: e + b } : f === d.RADIUS ? { x: a, y: b, w: 2 * c, h: 2 * e } : f === d.CENTER ? { x: a, y: b, w: c, h: e } : void 0; }, }; }, { "./constants": 41 }, ], 41: [ function (a, b, c) { var d = Math.PI; b.exports = { P2D: "p2d", WEBGL: "webgl", ARROW: "default", CROSS: "crosshair", HAND: "pointer", MOVE: "move", TEXT: "text", WAIT: "wait", HALF_PI: d / 2, PI: d, QUARTER_PI: d / 4, TAU: 2 * d, TWO_PI: 2 * d, DEGREES: "degrees", RADIANS: "radians", CORNER: "corner", CORNERS: "corners", RADIUS: "radius", RIGHT: "right", LEFT: "left", CENTER: "center", TOP: "top", BOTTOM: "bottom", BASELINE: "alphabetic", POINTS: 0, LINES: 1, LINE_STRIP: 3, LINE_LOOP: 2, TRIANGLES: 4, TRIANGLE_FAN: 6, TRIANGLE_STRIP: 5, QUADS: "quads", QUAD_STRIP: "quad_strip", CLOSE: "close", OPEN: "open", CHORD: "chord", PIE: "pie", PROJECT: "square", SQUARE: "butt", ROUND: "round", BEVEL: "bevel", MITER: "miter", RGB: "rgb", HSB: "hsb", HSL: "hsl", AUTO: "auto", ALT: 18, BACKSPACE: 8, CONTROL: 17, DELETE: 46, DOWN_ARROW: 40, ENTER: 13, ESCAPE: 27, LEFT_ARROW: 37, OPTION: 18, RETURN: 13, RIGHT_ARROW: 39, SHIFT: 16, TAB: 9, UP_ARROW: 38, BLEND: "source-over", ADD: "lighter", DARKEST: "darken", LIGHTEST: "lighten", DIFFERENCE: "difference", EXCLUSION: "exclusion", MULTIPLY: "multiply", SCREEN: "screen", REPLACE: "copy", OVERLAY: "overlay", HARD_LIGHT: "hard-light", SOFT_LIGHT: "soft-light", DODGE: "color-dodge", BURN: "color-burn", THRESHOLD: "threshold", GRAY: "gray", OPAQUE: "opaque", INVERT: "invert", POSTERIZE: "posterize", DILATE: "dilate", ERODE: "erode", BLUR: "blur", NORMAL: "normal", ITALIC: "italic", BOLD: "bold", _DEFAULT_TEXT_FILL: "#000000", _DEFAULT_LEADMULT: 1.25, _CTX_MIDDLE: "middle", LINEAR: "linear", QUADRATIC: "quadratic", BEZIER: "bezier", CURVE: "curve", _DEFAULT_STROKE: "#000000", _DEFAULT_FILL: "#FFFFFF", }; }, {}, ], 42: [ function (a, b, c) { "use strict"; a("./shim"); var d = a("./constants"), e = function (a, b, c) { 2 === arguments.length && "boolean" == typeof b && ((c = b), (b = void 0)), (this._setupDone = !1), (this._pixelDensity = Math.ceil(window.devicePixelRatio) || 1), (this._userNode = b), (this._curElement = null), (this._elements = []), (this._requestAnimId = 0), (this._preloadCount = 0), (this._isGlobal = !1), (this._loop = !0), (this._styles = []), (this._defaultCanvasSize = { width: 100, height: 100, }), (this._events = { mousemove: null, mousedown: null, mouseup: null, dragend: null, dragover: null, click: null, mouseover: null, mouseout: null, keydown: null, keyup: null, keypress: null, touchstart: null, touchmove: null, touchend: null, resize: null, blur: null, }), (this._events.wheel = null), (this._loadingScreenId = "p5_loading"), window.DeviceOrientationEvent && (this._events.deviceorientation = null), window.DeviceMotionEvent && !window._isNodeWebkit && (this._events.devicemotion = null), (this._start = function () { this._userNode && "string" == typeof this._userNode && (this._userNode = document.getElementById( this._userNode )); var a = this.preload || window.preload; if (a) { var b = document.getElementById( this._loadingScreenId ); if (!b) { (b = document.createElement("div")), (b.innerHTML = "Loading..."), (b.style.position = "absolute"), (b.id = this._loadingScreenId); ( this._userNode || document.body ).appendChild(b); } for (var c in this._preloadMethods) { this._preloadMethods[c] = this._preloadMethods[c] || e; var d = this._preloadMethods[c]; (d !== e.prototype && d !== e) || (d = this._isGlobal ? window : this), (this._registeredPreloadMethods[ c ] = d[c]), (d[c] = this._wrapPreload( d, c )); } a(), this._runIfPreloadsAreDone(); } else this._setup(), this._runFrames(), this._draw(); }.bind(this)), (this._runIfPreloadsAreDone = function () { var a = this._isGlobal ? window : this; if (0 === a._preloadCount) { var b = document.getElementById( a._loadingScreenId ); b && b.parentNode.removeChild(b), a._setup(), a._runFrames(), a._draw(); } }), (this._decrementPreload = function () { var a = this._isGlobal ? window : this; a._setProperty( "_preloadCount", a._preloadCount - 1 ), a._runIfPreloadsAreDone(); }), (this._wrapPreload = function (a, b) { return function () { this._incrementPreload(); for ( var c = new Array(arguments.length), d = 0; d < c.length; ++d ) c[d] = arguments[d]; return ( c.push( this._decrementPreload.bind( this ) ), this._registeredPreloadMethods[ b ].apply(a, c) ); }.bind(this); }), (this._incrementPreload = function () { var a = this._isGlobal ? window : this; a._setProperty( "_preloadCount", a._preloadCount + 1 ); }), (this._setup = function () { this.createCanvas( this._defaultCanvasSize.width, this._defaultCanvasSize.height, "p2d", !0 ); var a = this._isGlobal ? window : this; if ("function" == typeof a.preload) for (var b in this._preloadMethods) (a[b] = this._preloadMethods[b][b]), a[b] && this && (a[b] = a[b].bind(this)); "function" == typeof a.setup && a.setup(); for ( var c = document.getElementsByTagName( "canvas" ), d = 0; d < c.length; d++ ) { var e = c[d]; "true" === e.dataset.hidden && ((e.style.visibility = ""), delete e.dataset.hidden); } this._setupDone = !0; }.bind(this)), (this._draw = function () { var a = window.performance.now(), b = a - this._lastFrameTime, c = 1e3 / this._targetFrameRate; (!this._loop || b >= c - 5) && (this._setProperty( "frameCount", this.frameCount + 1 ), this.redraw(), this._updateMouseCoords(), (this._frameRate = 1e3 / (a - this._lastFrameTime)), (this._lastFrameTime = a)), this._loop && (this._requestAnimId = window.requestAnimationFrame( this._draw )); }.bind(this)), (this._runFrames = function () { this._updateInterval && clearInterval(this._updateInterval); }.bind(this)), (this._setProperty = function (a, b) { (this[a] = b), this._isGlobal && (window[a] = b); }.bind(this)), (this.remove = function () { if (this._curElement) { (this._loop = !1), this._requestAnimId && window.cancelAnimationFrame( this._requestAnimId ); for (var a in this._events) window.removeEventListener( a, this._events[a] ); for ( var b = 0; b < this._elements.length; b++ ) { var c = this._elements[b]; c.elt.parentNode && c.elt.parentNode.removeChild( c.elt ); for (var d in c._events) c.elt.removeEventListener( d, c._events[d] ); } var f = this; if ( (this._registeredMethods.remove.forEach( function (a) { void 0 !== a && a.call(f); } ), this._isGlobal) ) { for (var g in e.prototype) try { delete window[g]; } catch (a) { window[g] = void 0; } for (var h in this) if (this.hasOwnProperty(h)) try { delete window[h]; } catch (a) { window[h] = void 0; } } } }.bind(this)), this._registeredMethods.init.forEach(function ( a ) { void 0 !== a && a.call(this); }, this); var d = this._createFriendlyGlobalFunctionBinder(); if (a) a(this); else { (this._isGlobal = !0), (e.instance = this); for (var f in e.prototype) if ("function" == typeof e.prototype[f]) { var g = f.substring(2); this._events.hasOwnProperty(g) || (Math.hasOwnProperty(f) && Math[f] === e.prototype[f] ? d(f, e.prototype[f]) : d( f, e.prototype[f].bind(this) )); } else d(f, e.prototype[f]); for (var h in this) this.hasOwnProperty(h) && d(h, this[h]); } for (var i in this._events) { var j = this["_on" + i]; if (j) { var k = j.bind(this); window.addEventListener(i, k, { passive: !1, }), (this._events[i] = k); } } var l = function () { this._setProperty("focused", !0); }.bind(this), m = function () { this._setProperty("focused", !1); }.bind(this); window.addEventListener("focus", l), window.addEventListener("blur", m), this.registerMethod("remove", function () { window.removeEventListener("focus", l), window.removeEventListener("blur", m); }), c ? this._start() : "complete" === document.readyState ? this._start() : window.addEventListener( "load", this._start.bind(this), !1 ); }; (e.instance = null), (e.disableFriendlyErrors = !1); for (var f in d) e.prototype[f] = d[f]; (e.prototype._preloadMethods = { loadJSON: e.prototype, loadImage: e.prototype, loadStrings: e.prototype, loadXML: e.prototype, loadShape: e.prototype, loadTable: e.prototype, loadFont: e.prototype, loadModel: e.prototype, }), (e.prototype._registeredMethods = { init: [], pre: [], post: [], remove: [], }), (e.prototype._registeredPreloadMethods = {}), (e.prototype.registerPreloadMethod = function (a, b) { e.prototype._preloadMethods.hasOwnProperty(a) || (e.prototype._preloadMethods[a] = b); }), (e.prototype.registerMethod = function (a, b) { e.prototype._registeredMethods.hasOwnProperty(a) || (e.prototype._registeredMethods[a] = []), e.prototype._registeredMethods[a].push(b); }), (e.prototype._createFriendlyGlobalFunctionBinder = function (a) { a = a || {}; var b = a.globalObject || window, c = a.log || console.log.bind(console), d = { print: !0 }; return function (a, f) { if ((e.disableFriendlyErrors, 1)) b[a] = f; else try { if (a in b && !(a in d)) throw new Error( 'global "' + a + '" already exists' ); Object.defineProperty(b, a, { configurable: !0, enumerable: !0, get: function () { return f; }, set: function (d) { Object.defineProperty( b, a, { configurable: !0, enumerable: !0, value: d, writable: !0, } ), c( 'You just changed the value of "' + a + "\", which was a p5 function. This could cause problems later if you're not careful." ); }, }); } catch (d) { c( 'p5 had problems creating the global function "' + a + '", possibly because your code is already using that name as a variable. You may want to rename your variable to something else.' ), (b[a] = f); } }; }), (b.exports = e); }, { "./constants": 41, "./shim": 51 }, ], 43: [ function (a, b, c) { "use strict"; var d = a("./core"); a("./error_helpers"); var e = 20, f = 20; (d.prototype.bezier = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return this._renderer._doStroke || this._renderer._doFill ? (this._renderer.isP3D ? (a.push(e), this._renderer.bezier(a)) : this._renderer.bezier( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] ), this) : this; }), (d.prototype.bezierDetail = function (a) { return (e = a), this; }), (d.prototype.bezierPoint = function (a, b, c, d, e) { var f = 1 - e; return ( Math.pow(f, 3) * a + 3 * Math.pow(f, 2) * e * b + 3 * f * Math.pow(e, 2) * c + Math.pow(e, 3) * d ); }), (d.prototype.bezierTangent = function (a, b, c, d, e) { var f = 1 - e; return ( 3 * d * Math.pow(e, 2) - 3 * c * Math.pow(e, 2) + 6 * c * f * e - 6 * b * f * e + 3 * b * Math.pow(f, 2) - 3 * a * Math.pow(f, 2) ); }), (d.prototype.curve = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return this._renderer._doStroke ? (this._renderer.isP3D ? (a.push(f), this._renderer.curve(a)) : this._renderer.curve( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] ), this) : this; }), (d.prototype.curveDetail = function (a) { return (f = a), this; }), (d.prototype.curveTightness = function (a) { this._renderer._curveTightness = a; }), (d.prototype.curvePoint = function (a, b, c, d, e) { var f = e * e * e, g = e * e; return ( a * (-0.5 * f + g - 0.5 * e) + b * (1.5 * f - 2.5 * g + 1) + c * (-1.5 * f + 2 * g + 0.5 * e) + d * (0.5 * f - 0.5 * g) ); }), (d.prototype.curveTangent = function (a, b, c, d, e) { var f = e * e; return ( a * ((-3 * f) / 2 + 2 * e - 0.5) + b * ((9 * f) / 2 - 5 * e) + c * ((-9 * f) / 2 + 4 * e + 0.5) + d * ((3 * f) / 2 - e) ); }), (b.exports = d); }, { "./core": 42, "./error_helpers": 45 }, ], 44: [ function (a, b, c) { "use strict"; function d() { return ( window.innerWidth || (document.documentElement && document.documentElement.clientWidth) || (document.body && document.body.clientWidth) || 0 ); } function e() { return ( window.innerHeight || (document.documentElement && document.documentElement.clientHeight) || (document.body && document.body.clientHeight) || 0 ); } function f(a) { if ( !( document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled ) ) throw new Error( "Fullscreen not enabled in this browser." ); a.requestFullscreen ? a.requestFullscreen() : a.mozRequestFullScreen ? a.mozRequestFullScreen() : a.webkitRequestFullscreen ? a.webkitRequestFullscreen() : a.msRequestFullscreen && a.msRequestFullscreen(); } function g() { document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen(); } var h = a("./core"), i = a("./constants"), j = [i.ARROW, i.CROSS, i.HAND, i.MOVE, i.TEXT, i.WAIT]; (h.prototype._frameRate = 0), (h.prototype._lastFrameTime = window.performance.now()), (h.prototype._targetFrameRate = 60); var k = window.print; window.console && console.log ? (h.prototype.print = function (a) { try { if (0 === arguments.length) k(); else if (arguments.length > 1) console.log.apply(console, arguments); else { var b = JSON.parse(JSON.stringify(a)); "{}" === JSON.stringify(b) ? console.log(a) : console.log(b); } } catch (b) { console.log(a); } }) : (h.prototype.print = function () {}), (h.prototype.frameCount = 0), (h.prototype.focused = document.hasFocus()), (h.prototype.cursor = function (a, b, c) { var d = "auto", e = this._curElement.elt; if (j.indexOf(a) > -1) d = a; else if ("string" == typeof a) { var f = ""; b && c && "number" == typeof b && "number" == typeof c && (f = b + " " + c), (d = "http://" === a.substring(0, 7) || "https://" === a.substring(0, 8) ? "url(" + a + ") " + f + ", auto" : /\.(cur|jpg|jpeg|gif|png|CUR|JPG|JPEG|GIF|PNG)$/.test( a ) ? "url(" + a + ") " + f + ", auto" : a); } e.style.cursor = d; }), (h.prototype.frameRate = function (a) { return "number" != typeof a || a <= 0 ? this._frameRate : (this._setProperty("_targetFrameRate", a), this._runFrames(), this); }), (h.prototype.getFrameRate = function () { return this.frameRate(); }), (h.prototype.setFrameRate = function (a) { return this.frameRate(a); }), (h.prototype.noCursor = function () { this._curElement.elt.style.cursor = "none"; }), (h.prototype.displayWidth = screen.width), (h.prototype.displayHeight = screen.height), (h.prototype.windowWidth = d()), (h.prototype.windowHeight = e()), (h.prototype._onresize = function (a) { this._setProperty("windowWidth", d()), this._setProperty("windowHeight", e()); var b, c = this._isGlobal ? window : this; "function" == typeof c.windowResized && (void 0 === (b = c.windowResized(a)) || b || a.preventDefault()); }), (h.prototype.width = 0), (h.prototype.height = 0), (h.prototype.fullscreen = function (a) { if (void 0 === a) return ( document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement ); a ? f(document.documentElement) : g(); }), (h.prototype.pixelDensity = function (a) { if ("number" != typeof a) return this._pixelDensity; (this._pixelDensity = a), this.resizeCanvas(this.width, this.height, !0); }), (h.prototype.displayDensity = function () { return window.devicePixelRatio; }), (h.prototype.getURL = function () { return location.href; }), (h.prototype.getURLPath = function () { return location.pathname .split("/") .filter(function (a) { return "" !== a; }); }), (h.prototype.getURLParams = function () { for ( var a, b = /[?&]([^&=]+)(?:[&=])([^&=]+)/gim, c = {}; null != (a = b.exec(location.search)); ) a.index === b.lastIndex && b.lastIndex++, (c[a[1]] = a[2]); return c; }), (b.exports = h); }, { "./constants": 41, "./core": 42 }, ], 45: [ function (a, b, c) { "use strict"; function d(a, b, c) { i && (e(), (i = !1)), "undefined" === n(c) ? (c = "#B40033") : "number" === n(c) && (c = o[c]); } function e() { console.log( "%c _ \n /\\| |/\\ \n \\ ` ' / \n / , . \\ \n \\/|_|\\/ \n\n%c> p5.js says: Welcome! This is your friendly debugger. To turn me off switch to using “p5.min.js”.", "background-color:transparent;color:#ED225D;", "background-color:#ED225D;color:white;" ); } function f() { var b = {}, c = function (a) { return Object.getOwnPropertyNames(a) .filter(function (a) { return ( "_" !== a[0] && !(a in b) && ((b[a] = !0), !0) ); }) .map(function (b) { var c; return ( (c = "function" == typeof a[b] ? "function" : b === b.toUpperCase() ? "constant" : "variable"), { name: b, type: c } ); }); }; (q = [].concat(c(h.prototype), c(a("./constants")))), q.sort(function (a, b) { return b.name.length - a.name.length; }); } function g(a, b) { b || (b = console.log.bind(console)), q || f(), q.some(function (c) { if ( a.message && null !== a.message.match("\\W?" + c.name + "\\W") ) return ( b( "%cDid you just try to use p5.js's " + c.name + ("function" === c.type ? "() " : " ") + c.type + "? If so, you may want to move it into your sketch's setup() function.\n\nFor more details, see: " + r, "color: #B40033" ), !0 ); }); } for ( var h = a("./core"), i = !1, j = {}, k = j.toString, l = [ "Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object", "Error", ], m = 0; m < l.length; m++ ) j["[object " + l[m] + "]"] = l[m].toLowerCase(); var n = function (a) { return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? j[k.call(a)] || "object" : typeof a; }, o = ["#2D7BB6", "#EE9900", "#4DB200", "#C83C00"], p = { 0: { fileType: "image", method: "loadImage", message: " hosting the image online,", }, 1: { fileType: "XML file", method: "loadXML" }, 2: { fileType: "table file", method: "loadTable" }, 3: { fileType: "text file", method: "loadStrings" }, 4: { fileType: "font", method: "loadFont", message: " hosting the font online,", }, }; h._friendlyFileLoadError = function (a, b) { var c = p[a]; d( "It looks like there was a problem loading your " + c.fileType + ". Try checking if the file path%c [" + b + "] %cis correct," + (c.message || "") + " or running a local server.", c.method, 3 ); }; var q = null, r = "https://github.com/processing/p5.js/wiki/Frequently-Asked-Questions#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup"; (h.prototype._helpForMisusedAtTopLevelCode = g), "complete" !== document.readyState && (window.addEventListener("error", g, !1), window.addEventListener("load", function () { window.removeEventListener("error", g, !1); })), (b.exports = h); }, { "./constants": 41, "./core": 42 }, ], 46: [ function (a, b, c) { function d(a, b, c) { var d = b.bind(c); c.elt.addEventListener(a, d, !1), (c._events[a] = d); } var e = a("./core"); (e.Element = function (a, b) { (this.elt = a), (this._pInst = b), (this._events = {}), (this.width = this.elt.offsetWidth), (this.height = this.elt.offsetHeight); }), (e.Element.prototype.parent = function (a) { return 0 === arguments.length ? this.elt.parentNode : ("string" == typeof a ? ("#" === a[0] && (a = a.substring(1)), (a = document.getElementById(a))) : a instanceof e.Element && (a = a.elt), a.appendChild(this.elt), this); }), (e.Element.prototype.id = function (a) { return 0 === arguments.length ? this.elt.id : ((this.elt.id = a), (this.width = this.elt.offsetWidth), (this.height = this.elt.offsetHeight), this); }), (e.Element.prototype.class = function (a) { return 0 === arguments.length ? this.elt.className : ((this.elt.className = a), this); }), (e.Element.prototype.mousePressed = function (a) { return ( d("mousedown", a, this), d("touchstart", a, this), this ); }), (e.Element.prototype.mouseWheel = function (a) { return d("wheel", a, this), this; }), (e.Element.prototype.mouseReleased = function (a) { return ( d("mouseup", a, this), d("touchend", a, this), this ); }), (e.Element.prototype.mouseClicked = function (a) { return d("click", a, this), this; }), (e.Element.prototype.mouseMoved = function (a) { return ( d("mousemove", a, this), d("touchmove", a, this), this ); }), (e.Element.prototype.mouseOver = function (a) { return d("mouseover", a, this), this; }), (e.Element.prototype.changed = function (a) { return d("change", a, this), this; }), (e.Element.prototype.input = function (a) { return d("input", a, this), this; }), (e.Element.prototype.mouseOut = function (a) { return d("mouseout", a, this), this; }), (e.Element.prototype.touchStarted = function (a) { return ( d("touchstart", a, this), d("mousedown", a, this), this ); }), (e.Element.prototype.touchMoved = function (a) { return ( d("touchmove", a, this), d("mousemove", a, this), this ); }), (e.Element.prototype.touchEnded = function (a) { return ( d("touchend", a, this), d("mouseup", a, this), this ); }), (e.Element.prototype.dragOver = function (a) { return d("dragover", a, this), this; }), (e.Element.prototype.dragLeave = function (a) { return d("dragleave", a, this), this; }), (e.Element.prototype.drop = function (a, b) { function c(b) { var c = new e.File(b); return function (b) { (c.data = b.target.result), a(c); }; } return ( window.File && window.FileReader && window.FileList && window.Blob ? (d( "dragover", function (a) { a.stopPropagation(), a.preventDefault(); }, this ), d( "dragleave", function (a) { a.stopPropagation(), a.preventDefault(); }, this ), arguments.length > 1 && d("drop", b, this), d( "drop", function (a) { a.stopPropagation(), a.preventDefault(); for ( var b = a.dataTransfer.files, d = 0; d < b.length; d++ ) { var e = b[d], f = new FileReader(); (f.onload = c(e)), e.type.indexOf("text") > -1 ? f.readAsText(e) : f.readAsDataURL(e); } }, this )) : console.log( "The File APIs are not fully supported in this browser." ), this ); }), (e.Element.prototype._setProperty = function (a, b) { this[a] = b; }), (b.exports = e.Element); }, { "./core": 42 }, ], 47: [ function (a, b, c) { var d = a("./core"), e = a("./constants"); (d.Graphics = function (a, b, c, f) { var g = c || e.P2D; (this.canvas = document.createElement("canvas")), (this._userNode || document.body).appendChild( this.canvas ), d.Element.call(this, this.canvas, f, !1), (this._styles = []), (this.width = a), (this.height = b), (this._pixelDensity = f._pixelDensity), g === e.WEBGL ? (this._renderer = new d.RendererGL( this.canvas, this, !1 )) : (this._renderer = new d.Renderer2D( this.canvas, this, !1 )), this._renderer.resize(a, b), this._renderer._applyDefaults(), f._elements.push(this); for (var h in d.prototype) this[h] || ("function" == typeof d.prototype[h] ? (this[h] = d.prototype[h].bind(this)) : (this[h] = d.prototype[h])); return this; }), (d.Graphics.prototype = Object.create( d.Element.prototype )), (d.Graphics.prototype.remove = function () { this.elt.parentNode && this.elt.parentNode.removeChild(this.elt); for (var a in this._events) this.elt.removeEventListener( a, this._events[a] ); }), (b.exports = d.Graphics); }, { "./constants": 41, "./core": 42 }, ], 48: [ function (a, b, c) { function d(a) { var b = 0, c = 0; if (a.offsetParent) do { (b += a.offsetLeft), (c += a.offsetTop); } while ((a = a.offsetParent)); else (b += a.offsetLeft), (c += a.offsetTop); return [b, c]; } var e = a("./core"), f = a("../core/constants"); (e.Renderer = function (a, b, c) { e.Element.call(this, a, b), (this.canvas = a), (this._pInst = b), c ? ((this._isMainCanvas = !0), this._pInst._setProperty("_curElement", this), this._pInst._setProperty( "canvas", this.canvas ), this._pInst._setProperty("width", this.width), this._pInst._setProperty( "height", this.height )) : ((this.canvas.style.display = "none"), (this._styles = [])), (this._textSize = 12), (this._textLeading = 15), (this._textFont = "sans-serif"), (this._textStyle = f.NORMAL), (this._textAscent = null), (this._textDescent = null), (this._rectMode = f.CORNER), (this._ellipseMode = f.CENTER), (this._curveTightness = 0), (this._imageMode = f.CORNER), (this._tint = null), (this._doStroke = !0), (this._doFill = !0), (this._strokeSet = !1), (this._fillSet = !1), (this._colorMode = f.RGB), (this._colorMaxes = { rgb: [255, 255, 255, 255], hsb: [360, 100, 100, 1], hsl: [360, 100, 100, 1], }); }), (e.Renderer.prototype = Object.create( e.Element.prototype )), (e.Renderer.prototype.resize = function (a, b) { (this.width = a), (this.height = b), (this.elt.width = a * this._pInst._pixelDensity), (this.elt.height = b * this._pInst._pixelDensity), (this.elt.style.width = a + "px"), (this.elt.style.height = b + "px"), this._isMainCanvas && (this._pInst._setProperty( "width", this.width ), this._pInst._setProperty( "height", this.height )); }), (e.Renderer.prototype.textLeading = function (a) { return arguments.length && arguments[0] ? (this._setProperty("_textLeading", a), this) : this._textLeading; }), (e.Renderer.prototype.textSize = function (a) { return arguments.length && arguments[0] ? (this._setProperty("_textSize", a), this._setProperty( "_textLeading", a * f._DEFAULT_LEADMULT ), this._applyTextProperties()) : this._textSize; }), (e.Renderer.prototype.textStyle = function (a) { return arguments.length && arguments[0] ? ((a !== f.NORMAL && a !== f.ITALIC && a !== f.BOLD) || this._setProperty("_textStyle", a), this._applyTextProperties()) : this._textStyle; }), (e.Renderer.prototype.textAscent = function () { return ( null === this._textAscent && this._updateTextMetrics(), this._textAscent ); }), (e.Renderer.prototype.textDescent = function () { return ( null === this._textDescent && this._updateTextMetrics(), this._textDescent ); }), (e.Renderer.prototype._applyDefaults = function () { return this; }), (e.Renderer.prototype._isOpenType = function (a) { return ( "object" == typeof (a = a || this._textFont) && a.font && a.font.supported ); }), (e.Renderer.prototype._updateTextMetrics = function () { if (this._isOpenType()) return ( this._setProperty( "_textAscent", this._textFont._textAscent() ), this._setProperty( "_textDescent", this._textFont._textDescent() ), this ); var a = document.createElement("span"); (a.style.fontFamily = this._textFont), (a.style.fontSize = this._textSize + "px"), (a.innerHTML = "ABCjgq|"); var b = document.createElement("div"); (b.style.display = "inline-block"), (b.style.width = "1px"), (b.style.height = "0px"); var c = document.createElement("div"); c.appendChild(a), c.appendChild(b), (c.style.height = "0px"), (c.style.overflow = "hidden"), document.body.appendChild(c), (b.style.verticalAlign = "baseline"); var e = d(b), f = d(a), g = e[1] - f[1]; (b.style.verticalAlign = "bottom"), (e = d(b)), (f = d(a)); var h = e[1] - f[1], i = h - g; return ( document.body.removeChild(c), this._setProperty("_textAscent", g), this._setProperty("_textDescent", i), this ); }), (b.exports = e.Renderer); }, { "../core/constants": 41, "./core": 42 }, ], 49: [ function (a, b, c) { var d = a("./core"), e = a("./canvas"), f = a("./constants"), g = a("../image/filters"); a("./p5.Renderer"); var h = "rgba(0,0,0,0)"; (d.Renderer2D = function (a, b, c) { return ( d.Renderer.call(this, a, b, c), (this.drawingContext = this.canvas.getContext("2d")), this._pInst._setProperty( "drawingContext", this.drawingContext ), this ); }), (d.Renderer2D.prototype = Object.create( d.Renderer.prototype )), (d.Renderer2D.prototype._applyDefaults = function () { (this.drawingContext.fillStyle = f._DEFAULT_FILL), (this.drawingContext.strokeStyle = f._DEFAULT_STROKE), (this.drawingContext.lineCap = f.ROUND), (this.drawingContext.font = "normal 12px sans-serif"); }), (d.Renderer2D.prototype.resize = function (a, b) { d.Renderer.prototype.resize.call(this, a, b), this.drawingContext.scale( this._pInst._pixelDensity, this._pInst._pixelDensity ); }), (d.Renderer2D.prototype.background = function () { if ( (this.drawingContext.save(), this.drawingContext.setTransform( 1, 0, 0, 1, 0, 0 ), this.drawingContext.scale( this._pInst._pixelDensity, this._pInst._pixelDensity ), arguments[0] instanceof d.Image) ) this._pInst.image( arguments[0], 0, 0, this.width, this.height ); else { var a = this.drawingContext.fillStyle, b = this._pInst.color.apply( this, arguments ), c = b.toString(); (this.drawingContext.fillStyle = c), this.drawingContext.fillRect( 0, 0, this.width, this.height ), (this.drawingContext.fillStyle = a); } this.drawingContext.restore(); }), (d.Renderer2D.prototype.clear = function () { this.drawingContext.clearRect( 0, 0, this.width, this.height ); }), (d.Renderer2D.prototype.fill = function () { var a = this.drawingContext, b = this._pInst.color.apply(this, arguments); a.fillStyle = b.toString(); }), (d.Renderer2D.prototype.stroke = function () { var a = this.drawingContext, b = this._pInst.color.apply(this, arguments); a.strokeStyle = b.toString(); }), (d.Renderer2D.prototype.image = function ( a, b, c, e, f, g, h, i, j ) { var k; try { this._tint && (d.MediaElement && a instanceof d.MediaElement && a.loadPixels(), a.canvas && (k = this._getTintedImageCanvas(a))), k || (k = a.canvas || a.elt), this.drawingContext.drawImage( k, b, c, e, f, g, h, i, j ); } catch (a) { if ("NS_ERROR_NOT_AVAILABLE" !== a.name) throw a; } }), (d.Renderer2D.prototype._getTintedImageCanvas = function (a) { if (!a.canvas) return a; var b = g._toPixels(a.canvas), c = document.createElement("canvas"); (c.width = a.canvas.width), (c.height = a.canvas.height); for ( var d = c.getContext("2d"), e = d.createImageData( a.canvas.width, a.canvas.height ), f = e.data, h = 0; h < b.length; h += 4 ) { var i = b[h], j = b[h + 1], k = b[h + 2], l = b[h + 3]; (f[h] = (i * this._tint[0]) / 255), (f[h + 1] = (j * this._tint[1]) / 255), (f[h + 2] = (k * this._tint[2]) / 255), (f[h + 3] = (l * this._tint[3]) / 255); } return d.putImageData(e, 0, 0), c; }), (d.Renderer2D.prototype.blendMode = function (a) { this.drawingContext.globalCompositeOperation = a; }), (d.Renderer2D.prototype.blend = function () { var a = this.drawingContext .globalCompositeOperation, b = arguments[arguments.length - 1], c = Array.prototype.slice.call( arguments, 0, arguments.length - 1 ); (this.drawingContext.globalCompositeOperation = b), this._pInst ? this._pInst.copy.apply(this._pInst, c) : this.copy.apply(this, c), (this.drawingContext.globalCompositeOperation = a); }), (d.Renderer2D.prototype.copy = function () { var a, b, c, e, f, g, h, i, j; if (9 === arguments.length) (a = arguments[0]), (b = arguments[1]), (c = arguments[2]), (e = arguments[3]), (f = arguments[4]), (g = arguments[5]), (h = arguments[6]), (i = arguments[7]), (j = arguments[8]); else { if (8 !== arguments.length) throw new Error("Signature not supported"); (a = this._pInst), (b = arguments[0]), (c = arguments[1]), (e = arguments[2]), (f = arguments[3]), (g = arguments[4]), (h = arguments[5]), (i = arguments[6]), (j = arguments[7]); } d.Renderer2D._copyHelper(a, b, c, e, f, g, h, i, j); }), (d.Renderer2D._copyHelper = function ( a, b, c, d, e, f, g, h, i ) { a.loadPixels(); var j = a.canvas.width / a.width; this.drawingContext.drawImage( a.canvas, j * b, j * c, j * d, j * e, f, g, h, i ); }), (d.Renderer2D.prototype.get = function (a, b, c, e) { if ( (void 0 === a && void 0 === b && void 0 === c && void 0 === e ? ((a = 0), (b = 0), (c = this.width), (e = this.height)) : void 0 === c && void 0 === e && ((c = 1), (e = 1)), a + c < 0 || b + e < 0 || a > this.width || b > this.height) ) return [0, 0, 0, 255]; var f = this._pInst || this; f.loadPixels(); var g = f._pixelDensity; (a = Math.floor(a)), (b = Math.floor(b)), (c = Math.floor(c)), (e = Math.floor(e)); var h = a * g, i = b * g; if (1 === c && 1 === e) { var j = this.drawingContext.getImageData( h, i, 1, 1 ).data; return [j[0], j[1], j[2], j[3]]; } var k = Math.min(c, f.width), l = Math.min(e, f.height), m = k * g, n = l * g, o = new d.Image(k, l); return ( o.canvas .getContext("2d") .drawImage( this.canvas, h, i, m, n, 0, 0, k, l ), o ); }), (d.Renderer2D.prototype.loadPixels = function () { var a = this._pixelDensity || this._pInst._pixelDensity, b = this.width * a, c = this.height * a, d = this.drawingContext.getImageData( 0, 0, b, c ); this._pInst ? (this._pInst._setProperty("imageData", d), this._pInst._setProperty("pixels", d.data)) : (this._setProperty("imageData", d), this._setProperty("pixels", d.data)); }), (d.Renderer2D.prototype.set = function (a, b, c) { if ( ((a = Math.floor(a)), (b = Math.floor(b)), c instanceof d.Image) ) this.drawingContext.save(), this.drawingContext.setTransform( 1, 0, 0, 1, 0, 0 ), this.drawingContext.scale( this._pInst._pixelDensity, this._pInst._pixelDensity ), this.drawingContext.drawImage( c.canvas, a, b ), this.loadPixels.call(this._pInst), this.drawingContext.restore(); else { var e = this._pInst || this, f = 0, g = 0, h = 0, i = 0, j = 4 * (b * e._pixelDensity * (this.width * e._pixelDensity) + a * e._pixelDensity); if ( (e.imageData || e.loadPixels.call(e), "number" == typeof c) ) j < e.pixels.length && ((f = c), (g = c), (h = c), (i = 255)); else if (c instanceof Array) { if (c.length < 4) throw new Error( "pixel array must be of the form [R, G, B, A]" ); j < e.pixels.length && ((f = c[0]), (g = c[1]), (h = c[2]), (i = c[3])); } else c instanceof d.Color && j < e.pixels.length && ((f = c.levels[0]), (g = c.levels[1]), (h = c.levels[2]), (i = c.levels[3])); for (var k = 0; k < e._pixelDensity; k++) for (var l = 0; l < e._pixelDensity; l++) (j = 4 * ((b * e._pixelDensity + l) * this.width * e._pixelDensity + (a * e._pixelDensity + k))), (e.pixels[j] = f), (e.pixels[j + 1] = g), (e.pixels[j + 2] = h), (e.pixels[j + 3] = i); } }), (d.Renderer2D.prototype.updatePixels = function ( a, b, c, d ) { var e = this._pixelDensity || this._pInst._pixelDensity; void 0 === a && void 0 === b && void 0 === c && void 0 === d && ((a = 0), (b = 0), (c = this.width), (d = this.height)), (c *= e), (d *= e), this._pInst ? this.drawingContext.putImageData( this._pInst.imageData, a, b, 0, 0, c, d ) : this.drawingContext.putImageData( this.imageData, a, b, 0, 0, c, d ); }), (d.Renderer2D.prototype._acuteArcToBezier = function ( a, b ) { var c = b / 2, d = Math.cos(c), e = Math.sin(c), f = 1 / Math.tan(c), g = a + c, h = Math.cos(g), i = Math.sin(g), j = (4 - d) / 3, k = e + (d - j) * f; return { ax: Math.cos(a), ay: Math.sin(a), bx: j * h + k * i, by: j * i - k * h, cx: j * h - k * i, cy: j * i + k * h, dx: Math.cos(a + b), dy: Math.sin(a + b), }; }), (d.Renderer2D.prototype.arc = function ( a, b, c, d, g, h, i ) { for ( var j = this.drawingContext, k = e.arcModeAdjust( a, b, c, d, this._ellipseMode ), l = k.w / 2, m = k.h / 2, n = 1e-5, o = 0, p = []; h - g > n; ) (o = Math.min(h - g, f.HALF_PI)), p.push(this._acuteArcToBezier(g, o)), (g += o); return ( this._doFill && (j.beginPath(), p.forEach(function (a, b) { 0 === b && j.moveTo( k.x + a.ax * l, k.y + a.ay * m ), j.bezierCurveTo( k.x + a.bx * l, k.y + a.by * m, k.x + a.cx * l, k.y + a.cy * m, k.x + a.dx * l, k.y + a.dy * m ); }), (i !== f.PIE && null != i) || j.lineTo(k.x, k.y), j.closePath(), j.fill()), this._doStroke && (j.beginPath(), p.forEach(function (a, b) { 0 === b && j.moveTo( k.x + a.ax * l, k.y + a.ay * m ), j.bezierCurveTo( k.x + a.bx * l, k.y + a.by * m, k.x + a.cx * l, k.y + a.cy * m, k.x + a.dx * l, k.y + a.dy * m ); }), i === f.PIE ? (j.lineTo(k.x, k.y), j.closePath()) : i === f.CHORD && j.closePath(), j.stroke()), this ); }), (d.Renderer2D.prototype.ellipse = function (a) { var b = this.drawingContext, c = this._doFill, d = this._doStroke, e = a[0], f = a[1], g = a[2], i = a[3]; if (c && !d) { if (b.fillStyle === h) return this; } else if (!c && d && b.strokeStyle === h) return this; var j = 0.5522847498, k = (g / 2) * j, l = (i / 2) * j, m = e + g, n = f + i, o = e + g / 2, p = f + i / 2; b.beginPath(), b.moveTo(e, p), b.bezierCurveTo(e, p - l, o - k, f, o, f), b.bezierCurveTo(o + k, f, m, p - l, m, p), b.bezierCurveTo(m, p + l, o + k, n, o, n), b.bezierCurveTo(o - k, n, e, p + l, e, p), b.closePath(), c && b.fill(), d && b.stroke(); }), (d.Renderer2D.prototype.line = function (a, b, c, d) { var e = this.drawingContext; return this._doStroke ? e.strokeStyle === h ? this : (e.lineWidth % 2 == 1 && e.translate(0.5, 0.5), e.beginPath(), e.moveTo(a, b), e.lineTo(c, d), e.stroke(), e.lineWidth % 2 == 1 && e.translate(-0.5, -0.5), this) : this; }), (d.Renderer2D.prototype.point = function (a, b) { var c = this.drawingContext, d = c.strokeStyle, e = c.fillStyle; return this._doStroke ? c.strokeStyle === h ? this : ((a = Math.round(a)), (b = Math.round(b)), (c.fillStyle = d), c.lineWidth > 1 ? (c.beginPath(), c.arc( a, b, c.lineWidth / 2, 0, f.TWO_PI, !1 ), c.fill()) : c.fillRect(a, b, 1, 1), void (c.fillStyle = e)) : this; }), (d.Renderer2D.prototype.quad = function ( a, b, c, d, e, f, g, i ) { var j = this.drawingContext, k = this._doFill, l = this._doStroke; if (k && !l) { if (j.fillStyle === h) return this; } else if (!k && l && j.strokeStyle === h) return this; return ( j.beginPath(), j.moveTo(a, b), j.lineTo(c, d), j.lineTo(e, f), j.lineTo(g, i), j.closePath(), k && j.fill(), l && j.stroke(), this ); }), (d.Renderer2D.prototype.rect = function (a) { var b = a[0], c = a[1], d = a[2], e = a[3], f = a[4], g = a[5], i = a[6], j = a[7], k = this.drawingContext, l = this._doFill, m = this._doStroke; if (l && !m) { if (k.fillStyle === h) return this; } else if (!l && m && k.strokeStyle === h) return this; if ( (this._doStroke && k.lineWidth % 2 == 1 && k.translate(0.5, 0.5), k.beginPath(), void 0 === f) ) k.rect(b, c, d, e); else { void 0 === g && (g = f), void 0 === i && (i = g), void 0 === j && (j = i); var n = d / 2, o = e / 2; d < 2 * f && (f = n), e < 2 * f && (f = o), d < 2 * g && (g = n), e < 2 * g && (g = o), d < 2 * i && (i = n), e < 2 * i && (i = o), d < 2 * j && (j = n), e < 2 * j && (j = o), k.beginPath(), k.moveTo(b + f, c), k.arcTo(b + d, c, b + d, c + e, g), k.arcTo(b + d, c + e, b, c + e, i), k.arcTo(b, c + e, b, c, j), k.arcTo(b, c, b + d, c, f), k.closePath(); } return ( this._doFill && k.fill(), this._doStroke && k.stroke(), this._doStroke && k.lineWidth % 2 == 1 && k.translate(-0.5, -0.5), this ); }), (d.Renderer2D.prototype.triangle = function (a) { var b = this.drawingContext, c = this._doFill, d = this._doStroke, e = a[0], f = a[1], g = a[2], i = a[3], j = a[4], k = a[5]; if (c && !d) { if (b.fillStyle === h) return this; } else if (!c && d && b.strokeStyle === h) return this; b.beginPath(), b.moveTo(e, f), b.lineTo(g, i), b.lineTo(j, k), b.closePath(), c && b.fill(), d && b.stroke(); }), (d.Renderer2D.prototype.endShape = function ( a, b, c, d, e, g, h ) { if (0 === b.length) return this; if (!this._doStroke && !this._doFill) return this; var i, j = a === f.CLOSE; j && !g && b.push(b[0]); var k, l, m = b.length; if (!c || (h !== f.POLYGON && null !== h)) if (!d || (h !== f.POLYGON && null !== h)) if (!e || (h !== f.POLYGON && null !== h)) if (h === f.POINTS) for (k = 0; k < m; k++) (i = b[k]), this._doStroke && this._pInst.stroke( i[6] ), this._pInst.point( i[0], i[1] ); else if (h === f.LINES) for (k = 0; k + 1 < m; k += 2) (i = b[k]), this._doStroke && this._pInst.stroke( b[k + 1][6] ), this._pInst.line( i[0], i[1], b[k + 1][0], b[k + 1][1] ); else if (h === f.TRIANGLES) for (k = 0; k + 2 < m; k += 3) (i = b[k]), this.drawingContext.beginPath(), this.drawingContext.moveTo( i[0], i[1] ), this.drawingContext.lineTo( b[k + 1][0], b[k + 1][1] ), this.drawingContext.lineTo( b[k + 2][0], b[k + 2][1] ), this.drawingContext.lineTo( i[0], i[1] ), this._doFill && (this._pInst.fill( b[k + 2][5] ), this.drawingContext.fill()), this._doStroke && (this._pInst.stroke( b[k + 2][6] ), this.drawingContext.stroke()), this.drawingContext.closePath(); else if (h === f.TRIANGLE_STRIP) for (k = 0; k + 1 < m; k++) (i = b[k]), this.drawingContext.beginPath(), this.drawingContext.moveTo( b[k + 1][0], b[k + 1][1] ), this.drawingContext.lineTo( i[0], i[1] ), this._doStroke && this._pInst.stroke( b[k + 1][6] ), this._doFill && this._pInst.fill( b[k + 1][5] ), k + 2 < m && (this.drawingContext.lineTo( b[k + 2][0], b[k + 2][1] ), this._doStroke && this._pInst.stroke( b[k + 2][6] ), this._doFill && this._pInst.fill( b[k + 2][5] )), this._doFillStrokeClose(); else if (h === f.TRIANGLE_FAN) { if (m > 2) for ( this.drawingContext.beginPath(), this.drawingContext.moveTo( b[0][0], b[0][1] ), this.drawingContext.lineTo( b[1][0], b[1][1] ), this.drawingContext.lineTo( b[2][0], b[2][1] ), this._doFill && this._pInst.fill( b[2][5] ), this._doStroke && this._pInst.stroke( b[2][6] ), this._doFillStrokeClose(), k = 3; k < m; k++ ) (i = b[k]), this.drawingContext.beginPath(), this.drawingContext.moveTo( b[0][0], b[0][1] ), this.drawingContext.lineTo( b[k - 1][0], b[k - 1][1] ), this.drawingContext.lineTo( i[0], i[1] ), this._doFill && this._pInst.fill( i[5] ), this._doStroke && this._pInst.stroke( i[6] ), this._doFillStrokeClose(); } else if (h === f.QUADS) for (k = 0; k + 3 < m; k += 4) { for ( i = b[k], this.drawingContext.beginPath(), this.drawingContext.moveTo( i[0], i[1] ), l = 1; l < 4; l++ ) this.drawingContext.lineTo( b[k + l][0], b[k + l][1] ); this.drawingContext.lineTo( i[0], i[1] ), this._doFill && this._pInst.fill( b[k + 3][5] ), this._doStroke && this._pInst.stroke( b[k + 3][6] ), this._doFillStrokeClose(); } else if (h === f.QUAD_STRIP) { if (m > 3) for (k = 0; k + 1 < m; k += 2) (i = b[k]), this.drawingContext.beginPath(), k + 3 < m ? (this.drawingContext.moveTo( b[k + 2][0], b[k + 2][1] ), this.drawingContext.lineTo( i[0], i[1] ), this.drawingContext.lineTo( b[k + 1][0], b[k + 1][1] ), this.drawingContext.lineTo( b[k + 3][0], b[k + 3][1] ), this._doFill && this._pInst.fill( b[ k + 3 ][5] ), this._doStroke && this._pInst.stroke( b[ k + 3 ][6] )) : (this.drawingContext.moveTo( i[0], i[1] ), this.drawingContext.lineTo( b[k + 1][0], b[k + 1][1] )), this._doFillStrokeClose(); } else { for ( this.drawingContext.beginPath(), this.drawingContext.moveTo( b[0][0], b[0][1] ), k = 1; k < m; k++ ) (i = b[k]), i.isVert && (i.moveTo ? this.drawingContext.moveTo( i[0], i[1] ) : this.drawingContext.lineTo( i[0], i[1] )); this._doFillStrokeClose(); } else { for ( this.drawingContext.beginPath(), k = 0; k < m; k++ ) b[k].isVert ? b[k].moveTo ? this.drawingContext.moveTo( [0], b[k][1] ) : this.drawingContext.lineTo( b[k][0], b[k][1] ) : this.drawingContext.quadraticCurveTo( b[k][0], b[k][1], b[k][2], b[k][3] ); this._doFillStrokeClose(); } else { for ( this.drawingContext.beginPath(), k = 0; k < m; k++ ) b[k].isVert ? b[k].moveTo ? this.drawingContext.moveTo( b[k][0], b[k][1] ) : this.drawingContext.lineTo( b[k][0], b[k][1] ) : this.drawingContext.bezierCurveTo( b[k][0], b[k][1], b[k][2], b[k][3], b[k][4], b[k][5] ); this._doFillStrokeClose(); } else if (m > 3) { var n = [], o = 1 - this._curveTightness; for ( this.drawingContext.beginPath(), this.drawingContext.moveTo( b[1][0], b[1][1] ), k = 1; k + 2 < m; k++ ) (i = b[k]), (n[0] = [i[0], i[1]]), (n[1] = [ i[0] + (o * b[k + 1][0] - o * b[k - 1][0]) / 6, i[1] + (o * b[k + 1][1] - o * b[k - 1][1]) / 6, ]), (n[2] = [ b[k + 1][0] + (o * b[k][0] - o * b[k + 2][0]) / 6, b[k + 1][1] + (o * b[k][1] - o * b[k + 2][1]) / 6, ]), (n[3] = [b[k + 1][0], b[k + 1][1]]), this.drawingContext.bezierCurveTo( n[1][0], n[1][1], n[2][0], n[2][1], n[3][0], n[3][1] ); j && this.drawingContext.lineTo( b[k + 1][0], b[k + 1][1] ), this._doFillStrokeClose(); } return ( (c = !1), (d = !1), (e = !1), (g = !1), j && b.pop(), this ); }), (d.Renderer2D.prototype.noSmooth = function () { return ( "imageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.imageSmoothingEnabled = !1) : "mozImageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.mozImageSmoothingEnabled = !1) : "webkitImageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.webkitImageSmoothingEnabled = !1) : "msImageSmoothingEnabled" in this.drawingContext && (this.drawingContext.msImageSmoothingEnabled = !1), this ); }), (d.Renderer2D.prototype.smooth = function () { return ( "imageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.imageSmoothingEnabled = !0) : "mozImageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.mozImageSmoothingEnabled = !0) : "webkitImageSmoothingEnabled" in this.drawingContext ? (this.drawingContext.webkitImageSmoothingEnabled = !0) : "msImageSmoothingEnabled" in this.drawingContext && (this.drawingContext.msImageSmoothingEnabled = !0), this ); }), (d.Renderer2D.prototype.strokeCap = function (a) { return ( (a !== f.ROUND && a !== f.SQUARE && a !== f.PROJECT) || (this.drawingContext.lineCap = a), this ); }), (d.Renderer2D.prototype.strokeJoin = function (a) { return ( (a !== f.ROUND && a !== f.BEVEL && a !== f.MITER) || (this.drawingContext.lineJoin = a), this ); }), (d.Renderer2D.prototype.strokeWeight = function (a) { return ( (this.drawingContext.lineWidth = void 0 === a || 0 === a ? 1e-4 : a), this ); }), (d.Renderer2D.prototype._getFill = function () { return this.drawingContext.fillStyle; }), (d.Renderer2D.prototype._getStroke = function () { return this.drawingContext.strokeStyle; }), (d.Renderer2D.prototype.bezier = function ( a, b, c, d, e, f, g, h ) { return ( this._pInst.beginShape(), this._pInst.vertex(a, b), this._pInst.bezierVertex(c, d, e, f, g, h), this._pInst.endShape(), this ); }), (d.Renderer2D.prototype.curve = function ( a, b, c, d, e, f, g, h ) { return ( this._pInst.beginShape(), this._pInst.curveVertex(a, b), this._pInst.curveVertex(c, d), this._pInst.curveVertex(e, f), this._pInst.curveVertex(g, h), this._pInst.endShape(), this ); }), (d.Renderer2D.prototype._doFillStrokeClose = function () { this._doFill && this.drawingContext.fill(), this._doStroke && this.drawingContext.stroke(), this.drawingContext.closePath(); }), (d.Renderer2D.prototype.applyMatrix = function ( a, b, c, d, e, f ) { this.drawingContext.transform(a, b, c, d, e, f); }), (d.Renderer2D.prototype.resetMatrix = function () { return ( this.drawingContext.setTransform( 1, 0, 0, 1, 0, 0 ), this.drawingContext.scale( this._pInst._pixelDensity, this._pInst._pixelDensity ), this ); }), (d.Renderer2D.prototype.rotate = function (a) { this.drawingContext.rotate(a); }), (d.Renderer2D.prototype.scale = function (a, b) { return this.drawingContext.scale(a, b), this; }), (d.Renderer2D.prototype.shearX = function (a) { return ( this._pInst._angleMode === f.DEGREES && (a = this._pInst.degrees(a)), this.drawingContext.transform( 1, 0, this._pInst.tan(a), 1, 0, 0 ), this ); }), (d.Renderer2D.prototype.shearY = function (a) { return ( this._pInst._angleMode === f.DEGREES && (a = this._pInst.degrees(a)), this.drawingContext.transform( 1, this._pInst.tan(a), 0, 1, 0, 0 ), this ); }), (d.Renderer2D.prototype.translate = function (a, b) { return this.drawingContext.translate(a, b), this; }), (d.Renderer2D.prototype.text = function ( a, b, c, d, e ) { var g, h, i, j, k, l, m, n, o, p, q = this._pInst, r = Number.MAX_VALUE; if (this._doFill || this._doStroke) { if ( ("string" != typeof a && (a = a.toString()), (a = a.replace(/(\t)/g, " ")), (g = a.split("\n")), void 0 !== d) ) { for (o = 0, i = 0; i < g.length; i++) for ( k = "", n = g[i].split(" "), h = 0; h < n.length; h++ ) (l = k + n[h] + " "), (m = this.textWidth(l)), m > d ? ((k = n[h] + " "), (o += q.textLeading())) : (k = l); switch ( (this._rectMode === f.CENTER && ((b -= d / 2), (c -= e / 2)), this.drawingContext.textAlign) ) { case f.CENTER: b += d / 2; break; case f.RIGHT: b += d; } if (void 0 !== e) { switch ( this.drawingContext.textBaseline ) { case f.BOTTOM: c += e - o; break; case f._CTX_MIDDLE: c += (e - o) / 2; break; case f.BASELINE: (p = !0), (this.drawingContext.textBaseline = f.TOP); } r = c + e - q.textAscent(); } for (i = 0; i < g.length; i++) { for ( k = "", n = g[i].split(" "), h = 0; h < n.length; h++ ) (l = k + n[h] + " "), (m = this.textWidth(l)), m > d && k.length > 0 ? (this._renderText( q, k, b, c, r ), (k = n[h] + " "), (c += q.textLeading())) : (k = l); this._renderText(q, k, b, c, r), (c += q.textLeading()); } } else { var s = 0, t = q.textAlign().vertical; for ( t === f.CENTER ? (s = ((g.length - 1) * q.textLeading()) / 2) : t === f.BOTTOM && (s = (g.length - 1) * q.textLeading()), j = 0; j < g.length; j++ ) this._renderText(q, g[j], b, c - s, r), (c += q.textLeading()); } return ( p && (this.drawingContext.textBaseline = f.BASELINE), q ); } }), (d.Renderer2D.prototype._renderText = function ( a, b, c, d, e ) { if (!(d >= e)) return ( a.push(), this._isOpenType() ? this._textFont._renderPath(b, c, d, { renderer: this, }) : (this._doStroke && this._strokeSet && this.drawingContext.strokeText( b, c, d ), this._doFill && ((this.drawingContext.fillStyle = this._fillSet ? this.drawingContext .fillStyle : f._DEFAULT_TEXT_FILL), this.drawingContext.fillText( b, c, d ))), a.pop(), a ); }), (d.Renderer2D.prototype.textWidth = function (a) { return this._isOpenType() ? this._textFont._textWidth(a, this._textSize) : this.drawingContext.measureText(a).width; }), (d.Renderer2D.prototype.textAlign = function (a, b) { if (arguments.length) return ( (a !== f.LEFT && a !== f.RIGHT && a !== f.CENTER) || (this.drawingContext.textAlign = a), (b !== f.TOP && b !== f.BOTTOM && b !== f.CENTER && b !== f.BASELINE) || (b === f.CENTER ? (this.drawingContext.textBaseline = f._CTX_MIDDLE) : (this.drawingContext.textBaseline = b)), this._pInst ); var c = this.drawingContext.textBaseline; return ( c === f._CTX_MIDDLE && (c = f.CENTER), { horizontal: this.drawingContext.textAlign, vertical: c, } ); }), (d.Renderer2D.prototype._applyTextProperties = function () { var a, b = this._pInst; return ( this._setProperty("_textAscent", null), this._setProperty("_textDescent", null), (a = this._textFont), this._isOpenType() && ((a = this._textFont.font.familyName), this._setProperty( "_textStyle", this._textFont.font.styleName )), (this.drawingContext.font = this._textStyle + " " + this._textSize + "px " + a), b ); }), (d.Renderer2D.prototype.push = function () { this.drawingContext.save(); }), (d.Renderer2D.prototype.pop = function () { this.drawingContext.restore(); }), (b.exports = d.Renderer2D); }, { "../image/filters": 59, "./canvas": 40, "./constants": 41, "./core": 42, "./p5.Renderer": 48, }, ], 50: [ function (a, b, c) { var d = a("./core"), e = a("./constants"); a("./p5.Graphics"), a("./p5.Renderer2D"), a("../webgl/p5.RendererGL"); var f = "defaultCanvas0"; (d.prototype.createCanvas = function (a, b, c) { var g, h, i = c || e.P2D; if ( (arguments[3] && (g = "boolean" == typeof arguments[3] && arguments[3]), i === e.WEBGL) ) (h = document.getElementById(f)), h && h.parentNode.removeChild(h), (h = document.createElement("canvas")), (h.id = f); else if (g) { h = document.createElement("canvas"); for ( var j = 0; document.getElementById("defaultCanvas" + j); ) j++; (f = "defaultCanvas" + j), (h.id = f); } else h = this.canvas; return ( this._setupDone || ((h.dataset.hidden = !0), (h.style.visibility = "hidden")), this._userNode ? this._userNode.appendChild(h) : document.body.appendChild(h), i === e.WEBGL ? (this._setProperty( "_renderer", new d.RendererGL(h, this, !0) ), (this._isdefaultGraphics = !0)) : this._isdefaultGraphics || (this._setProperty( "_renderer", new d.Renderer2D(h, this, !0) ), (this._isdefaultGraphics = !0)), this._renderer.resize(a, b), this._renderer._applyDefaults(), g && this._elements.push(this._renderer), this._renderer ); }), (d.prototype.resizeCanvas = function (a, b, c) { if (this._renderer) { var d = {}; for (var e in this.drawingContext) { var f = this.drawingContext[e]; "object" != typeof f && "function" != typeof f && (d[e] = f); } this._renderer.resize(a, b); for (var g in d) this.drawingContext[g] = d[g]; c || this.redraw(); } }), (d.prototype.noCanvas = function () { this.canvas && this.canvas.parentNode.removeChild(this.canvas); }), (d.prototype.createGraphics = function (a, b, c) { return new d.Graphics(a, b, c, this); }), (d.prototype.blendMode = function (a) { if ( a !== e.BLEND && a !== e.DARKEST && a !== e.LIGHTEST && a !== e.DIFFERENCE && a !== e.MULTIPLY && a !== e.EXCLUSION && a !== e.SCREEN && a !== e.REPLACE && a !== e.OVERLAY && a !== e.HARD_LIGHT && a !== e.SOFT_LIGHT && a !== e.DODGE && a !== e.BURN && a !== e.ADD && a !== e.NORMAL ) throw new Error( "Mode " + a + " not recognized." ); this._renderer.blendMode(a); }), (b.exports = d); }, { "../webgl/p5.RendererGL": 91, "./constants": 41, "./core": 42, "./p5.Graphics": 47, "./p5.Renderer2D": 49, }, ], 51: [ function (a, b, c) { (window.requestAnimationFrame = (function () { return ( window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a, b) { window.setTimeout(a, 1e3 / 60); } ); })()), (window.performance = window.performance || {}), (window.performance.now = (function () { var a = Date.now(); return ( window.performance.now || window.performance.mozNow || window.performance.msNow || window.performance.oNow || window.performance.webkitNow || function () { return Date.now() - a; } ); })()), (function () { "use strict"; "undefined" == typeof Uint8ClampedArray || Uint8ClampedArray.prototype.slice || Object.defineProperty( Uint8ClampedArray.prototype, "slice", { value: Array.prototype.slice, writable: !0, configurable: !0, enumerable: !1, } ); })(); }, {}, ], 52: [ function (a, b, c) { "use strict"; var d = a("./core"); (d.prototype.exit = function () { throw "exit() not implemented, see remove()"; }), (d.prototype.noLoop = function () { this._loop = !1; }), (d.prototype.loop = function () { (this._loop = !0), this._draw(); }), (d.prototype.push = function () { this._renderer.push(), this._styles.push({ _doStroke: this._renderer._doStroke, _strokeSet: this._renderer._strokeSet, _doFill: this._renderer._doFill, _fillSet: this._renderer._fillSet, _tint: this._renderer._tint, _imageMode: this._renderer._imageMode, _rectMode: this._renderer._rectMode, _ellipseMode: this._renderer._ellipseMode, _colorMode: this._renderer._colorMode, _textFont: this._renderer._textFont, _textLeading: this._renderer._textLeading, _textSize: this._renderer._textSize, _textStyle: this._renderer._textStyle, }); }), (d.prototype.pop = function () { this._renderer.pop(); var a = this._styles.pop(); for (var b in a) this._renderer[b] = a[b]; }), (d.prototype.pushStyle = function () { throw new Error("pushStyle() not used, see push()"); }), (d.prototype.popStyle = function () { throw new Error("popStyle() not used, see pop()"); }), (d.prototype.redraw = function () { this.resetMatrix(), this._renderer.isP3D && this._renderer._update(); var a = 1; if (1 === arguments.length) try { parseInt(arguments[0]) > 1 && (a = parseInt(arguments[0])); } catch (a) {} var b = this.setup || window.setup, c = this.draw || window.draw; if ("function" == typeof c) { void 0 === b && this.scale( this._pixelDensity, this._pixelDensity ); for ( var d = this, e = function (a) { a.call(d); }, f = 0; f < a; f++ ) this._registeredMethods.pre.forEach(e), c(), this._registeredMethods.post.forEach(e); } }), (d.prototype.size = function () { var a = "size() is not a valid p5 function, to set the size of the "; throw (a += "drawing canvas, please use createCanvas() instead"); }), (b.exports = d); }, { "./core": 42 }, ], 53: [ function (a, b, c) { "use strict"; var d = a("./core"), e = a("./constants"); (d.prototype.applyMatrix = function (a, b, c, d, e, f) { return ( this._renderer.applyMatrix(a, b, c, d, e, f), this ); }), (d.prototype.popMatrix = function () { throw new Error("popMatrix() not used, see pop()"); }), (d.prototype.printMatrix = function () { throw new Error("printMatrix() not implemented"); }), (d.prototype.pushMatrix = function () { throw new Error( "pushMatrix() not used, see push()" ); }), (d.prototype.resetMatrix = function () { return this._renderer.resetMatrix(), this; }), (d.prototype.rotate = function () { for ( var a, b = new Array(arguments.length), c = 0; c < b.length; ++c ) b[c] = arguments[c]; return ( this._angleMode === e.DEGREES ? (a = this.radians(b[0])) : this._angleMode === e.RADIANS && (a = b[0]), b.length > 1 ? this._renderer.rotate(a, b[1]) : this._renderer.rotate(a), this ); }), (d.prototype.rotateX = function (a) { if (!this._renderer.isP3D) throw "not supported in p2d. Please use webgl mode"; return this._renderer.rotateX(a), this; }), (d.prototype.rotateY = function (a) { if (!this._renderer.isP3D) throw "not supported in p2d. Please use webgl mode"; return this._renderer.rotateY(a), this; }), (d.prototype.rotateZ = function (a) { if (!this._renderer.isP3D) throw "not supported in p2d. Please use webgl mode"; return this._renderer.rotateZ(a), this; }), (d.prototype.scale = function () { for ( var a, b, c, e = new Array(arguments.length), f = 0; f < e.length; f++ ) e[f] = arguments[f]; return ( e[0] instanceof d.Vector ? ((a = e[0].x), (b = e[0].y), (c = e[0].z)) : e[0] instanceof Array ? ((a = e[0][0]), (b = e[0][1]), (c = e[0][2] || 1)) : 1 === e.length ? (a = b = c = e[0]) : ((a = e[0]), (b = e[1]), (c = e[2] || 1)), this._renderer.isP3D ? this._renderer.scale.call( this._renderer, a, b, c ) : this._renderer.scale.call( this._renderer, a, b ), this ); }), (d.prototype.shearX = function (a) { return ( this._angleMode === e.DEGREES && (a = this.radians(a)), this._renderer.shearX(a), this ); }), (d.prototype.shearY = function (a) { return ( this._angleMode === e.DEGREES && (a = this.radians(a)), this._renderer.shearY(a), this ); }), (d.prototype.translate = function (a, b, c) { return ( this._renderer.isP3D ? this._renderer.translate(a, b, c) : this._renderer.translate(a, b), this ); }), (b.exports = d); }, { "./constants": 41, "./core": 42 }, ], 54: [ function (a, b, c) { "use strict"; var d = a("./core"), e = a("./constants"), f = null, g = [], h = [], i = !1, j = !1, k = !1, l = !1, m = !0; (d.prototype.beginContour = function () { return (h = []), (l = !0), this; }), (d.prototype.beginShape = function (a) { return ( (f = a === e.POINTS || a === e.LINES || a === e.TRIANGLES || a === e.TRIANGLE_FAN || a === e.TRIANGLE_STRIP || a === e.QUADS || a === e.QUAD_STRIP ? a : null), this._renderer.isP3D ? this._renderer.beginShape(a) : ((g = []), (h = [])), this ); }), (d.prototype.bezierVertex = function ( a, b, c, d, e, f ) { if (0 === g.length) throw "vertex() must be used once before calling bezierVertex()"; i = !0; for (var j = [], k = 0; k < arguments.length; k++) j[k] = arguments[k]; return ( (j.isVert = !1), l ? h.push(j) : g.push(j), this ); }), (d.prototype.curveVertex = function (a, b) { return (j = !0), this.vertex(a, b), this; }), (d.prototype.endContour = function () { var a = h[0].slice(); (a.isVert = h[0].isVert), (a.moveTo = !1), h.push(a), m && (g.push(g[0]), (m = !1)); for (var b = 0; b < h.length; b++) g.push(h[b]); return this; }), (d.prototype.endShape = function (a) { if (this._renderer.isP3D) this._renderer.endShape(a, j, i, k, l, f); else { if (0 === g.length) return this; if ( !this._renderer._doStroke && !this._renderer._doFill ) return this; var b = a === e.CLOSE; b && !l && g.push(g[0]), this._renderer.endShape( a, g, j, i, k, l, f ), (j = !1), (i = !1), (k = !1), (l = !1), (m = !0), b && g.pop(); } return this; }), (d.prototype.quadraticVertex = function (a, b, c, d) { if (this._contourInited) { var f = {}; return ( (f.x = a), (f.y = b), (f.x3 = c), (f.y3 = d), (f.type = e.QUADRATIC), this._contourVertices.push(f), this ); } if (!(g.length > 0)) throw "vertex() must be used once before calling quadraticVertex()"; k = !0; for (var i = [], j = 0; j < arguments.length; j++) i[j] = arguments[j]; return ( (i.isVert = !1), l ? h.push(i) : g.push(i), this ); }), (d.prototype.vertex = function (a, b, c) { if (this._renderer.isP3D) this._renderer.vertex(a, b, c); else { var d = []; (d.isVert = !0), (d[0] = a), (d[1] = b), (d[2] = 0), (d[3] = 0), (d[4] = 0), (d[5] = this._renderer._getFill()), (d[6] = this._renderer._getStroke()), c && (d.moveTo = c), l ? (0 === h.length && (d.moveTo = !0), h.push(d)) : g.push(d); } return this; }), (b.exports = d); }, { "./constants": 41, "./core": 42 }, ], 55: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.deviceOrientation = void 0), (d.prototype.accelerationX = 0), (d.prototype.accelerationY = 0), (d.prototype.accelerationZ = 0), (d.prototype.pAccelerationX = 0), (d.prototype.pAccelerationY = 0), (d.prototype.pAccelerationZ = 0), (d.prototype._updatePAccelerations = function () { this._setProperty( "pAccelerationX", this.accelerationX ), this._setProperty( "pAccelerationY", this.accelerationY ), this._setProperty( "pAccelerationZ", this.accelerationZ ); }), (d.prototype.rotationX = 0), (d.prototype.rotationY = 0), (d.prototype.rotationZ = 0), (d.prototype.pRotationX = 0), (d.prototype.pRotationY = 0), (d.prototype.pRotationZ = 0); var e, f, g, h = 0, i = 0, j = 0, k = "clockwise", l = "clockwise", m = "clockwise"; (d.prototype._updatePRotations = function () { this._setProperty("pRotationX", this.rotationX), this._setProperty("pRotationY", this.rotationY), this._setProperty("pRotationZ", this.rotationZ); }), (d.prototype.turnAxis = void 0); var n = 0.5, o = 30; (d.prototype.setMoveThreshold = function (a) { "number" == typeof a && (n = a); }), (d.prototype.setShakeThreshold = function (a) { "number" == typeof a && (o = a); }), (d.prototype._ondeviceorientation = function (a) { this._updatePRotations(), this._setProperty("rotationX", a.beta), this._setProperty("rotationY", a.gamma), this._setProperty("rotationZ", a.alpha), this._handleMotion(); }), (d.prototype._ondevicemotion = function (a) { this._updatePAccelerations(), this._setProperty( "accelerationX", 2 * a.acceleration.x ), this._setProperty( "accelerationY", 2 * a.acceleration.y ), this._setProperty( "accelerationZ", 2 * a.acceleration.z ), this._handleMotion(); }), (d.prototype._handleMotion = function () { 90 === window.orientation || window.orientation === -90 ? this._setProperty( "deviceOrientation", "landscape" ) : 0 === window.orientation ? this._setProperty( "deviceOrientation", "portrait" ) : void 0 === window.orientation && this._setProperty( "deviceOrientation", "undefined" ); var a = this.deviceMoved || window.deviceMoved; "function" == typeof a && (Math.abs( this.accelerationX - this.pAccelerationX ) > n || Math.abs( this.accelerationY - this.pAccelerationY ) > n || Math.abs( this.accelerationZ - this.pAccelerationZ ) > n) && a(); var b = this.deviceTurned || window.deviceTurned; if ("function" == typeof b) { var c = this.rotationX + 180, d = this.pRotationX + 180, p = h + 180; (c - d > 0 && c - d < 270) || c - d < -270 ? (k = "clockwise") : (c - d < 0 || c - d > 270) && (k = "counter-clockwise"), k !== e && (p = c), Math.abs(c - p) > 90 && Math.abs(c - p) < 270 && ((p = c), this._setProperty("turnAxis", "X"), b()), (e = k), (h = p - 180); var q = this.rotationY + 180, r = this.pRotationY + 180, s = i + 180; (q - r > 0 && q - r < 270) || q - r < -270 ? (l = "clockwise") : (q - r < 0 || q - this.pRotationY > 270) && (l = "counter-clockwise"), l !== f && (s = q), Math.abs(q - s) > 90 && Math.abs(q - s) < 270 && ((s = q), this._setProperty("turnAxis", "Y"), b()), (f = l), (i = s - 180), (this.rotationZ - this.pRotationZ > 0 && this.rotationZ - this.pRotationZ < 270) || this.rotationZ - this.pRotationZ < -270 ? (m = "clockwise") : (this.rotationZ - this.pRotationZ < 0 || this.rotationZ - this.pRotationZ > 270) && (m = "counter-clockwise"), m !== g && (j = this.rotationZ), Math.abs(this.rotationZ - j) > 90 && Math.abs(this.rotationZ - j) < 270 && ((j = this.rotationZ), this._setProperty("turnAxis", "Z"), b()), (g = m), this._setProperty("turnAxis", void 0); } var t = this.deviceShaken || window.deviceShaken; if ("function" == typeof t) { var u, v; null !== this.pAccelerationX && ((u = Math.abs( this.accelerationX - this.pAccelerationX )), (v = Math.abs( this.accelerationY - this.pAccelerationY ))), u + v > o && t(); } }), (b.exports = d); }, { "../core/core": 42 }, ], 56: [ function (a, b, c) { "use strict"; function d() { for (var a in f) if (f.hasOwnProperty(a) && f[a] === !0) return !0; return !1; } var e = a("../core/core"), f = {}; (e.prototype.isKeyPressed = !1), (e.prototype.keyIsPressed = !1), (e.prototype.key = ""), (e.prototype.keyCode = 0), (e.prototype._onkeydown = function (a) { if (!f[a.which]) { this._setProperty("isKeyPressed", !0), this._setProperty("keyIsPressed", !0), this._setProperty("keyCode", a.which), (f[a.which] = !0); var b = String.fromCharCode(a.which); b || (b = a.which), this._setProperty("key", b); var c = this.keyPressed || window.keyPressed; if ("function" == typeof c && !a.charCode) { c(a) === !1 && a.preventDefault(); } } }), (e.prototype._onkeyup = function (a) { var b = this.keyReleased || window.keyReleased; (f[a.which] = !1), d() || (this._setProperty("isKeyPressed", !1), this._setProperty("keyIsPressed", !1)), this._setProperty("_lastKeyCodeTyped", null); var c = String.fromCharCode(a.which); if ( (c || (c = a.which), this._setProperty("key", c), this._setProperty("keyCode", a.which), "function" == typeof b) ) { b(a) === !1 && a.preventDefault(); } }), (e.prototype._onkeypress = function (a) { if (a.which !== this._lastKeyCodeTyped) { this._setProperty("keyCode", a.which), this._setProperty( "_lastKeyCodeTyped", a.which ), this._setProperty( "key", String.fromCharCode(a.which) ); var b = this.keyTyped || window.keyTyped; if ("function" == typeof b) { b(a) === !1 && a.preventDefault(); } } }), (e.prototype._onblur = function (a) { f = {}; }), (e.prototype.keyIsDown = function (a) { return f[a]; }), (b.exports = e); }, { "../core/core": 42 }, ], 57: [ function (a, b, c) { "use strict"; function d(a, b, c, d) { d && !d.clientX && (d.touches ? (d = d.touches[0]) : d.changedTouches && (d = d.changedTouches[0])); var e = a.getBoundingClientRect(), f = a.scrollWidth / b, g = a.scrollHeight / c; return { x: (d.clientX - e.left) / f, y: (d.clientY - e.top) / g, winX: d.clientX, winY: d.clientY, id: d.identifier, }; } var e = a("../core/core"), f = a("../core/constants"); (e.prototype._hasMouseInteracted = !1), (e.prototype.mouseX = 0), (e.prototype.mouseY = 0), (e.prototype.pmouseX = 0), (e.prototype.pmouseY = 0), (e.prototype.winMouseX = 0), (e.prototype.winMouseY = 0), (e.prototype.pwinMouseX = 0), (e.prototype.pwinMouseY = 0), (e.prototype.mouseButton = 0), (e.prototype.mouseIsPressed = !1), (e.prototype._updateNextMouseCoords = function (a) { if ( null !== this._curElement && (!a.touches || a.touches.length > 0) ) { var b = d( this._curElement.elt, this.width, this.height, a ); this._setProperty("mouseX", b.x), this._setProperty("mouseY", b.y), this._setProperty("winMouseX", b.winX), this._setProperty("winMouseY", b.winY); } this._hasMouseInteracted || (this._updateMouseCoords(), this._setProperty("_hasMouseInteracted", !0)); }), (e.prototype._updateMouseCoords = function () { this._setProperty("pmouseX", this.mouseX), this._setProperty("pmouseY", this.mouseY), this._setProperty("pwinMouseX", this.winMouseX), this._setProperty("pwinMouseY", this.winMouseY); }), (e.prototype._setMouseButton = function (a) { 1 === a.button ? this._setProperty("mouseButton", f.CENTER) : 2 === a.button ? this._setProperty("mouseButton", f.RIGHT) : this._setProperty("mouseButton", f.LEFT); }), (e.prototype._onmousemove = function (a) { var b = this._isGlobal ? window : this; this._updateNextMouseCoords(a), this.mouseIsPressed ? "function" == typeof b.mouseDragged ? b.mouseDragged(a) === !1 && a.preventDefault() : "function" == typeof b.touchMoved && b.touchMoved(a) === !1 && a.preventDefault() : "function" == typeof b.mouseMoved && b.mouseMoved(a) === !1 && a.preventDefault(); }), (e.prototype._onmousedown = function (a) { var b = this._isGlobal ? window : this; this._setProperty("mouseIsPressed", !0), this._setMouseButton(a), this._updateNextMouseCoords(a), "function" == typeof b.mousePressed ? b.mousePressed(a) === !1 && a.preventDefault() : "function" == typeof b.touchStarted && b.touchStarted(a) === !1 && a.preventDefault(); }), (e.prototype._onmouseup = function (a) { var b = this._isGlobal ? window : this; this._setProperty("mouseIsPressed", !1), "function" == typeof b.mouseReleased ? b.mouseReleased(a) === !1 && a.preventDefault() : "function" == typeof b.touchEnded && b.touchEnded(a) === !1 && a.preventDefault(); }), (e.prototype._ondragend = e.prototype._onmouseup), (e.prototype._ondragover = e.prototype._onmousemove), (e.prototype._onclick = function (a) { var b = this._isGlobal ? window : this; if ("function" == typeof b.mouseClicked) { b.mouseClicked(a) === !1 && a.preventDefault(); } }), (e.prototype._onwheel = function (a) { var b = this._isGlobal ? window : this; if ("function" == typeof b.mouseWheel) { a.delta = a.deltaY; b.mouseWheel(a) === !1 && a.preventDefault(); } }), (b.exports = e); }, { "../core/constants": 41, "../core/core": 42 }, ], 58: [ function (a, b, c) { "use strict"; function d(a, b, c, d, e) { e = e || 0; var f = a.getBoundingClientRect(), g = a.scrollWidth / b, h = a.scrollHeight / c, i = d.touches[e] || d.changedTouches[e]; return { x: (i.clientX - f.left) / g, y: (i.clientY - f.top) / h, winX: i.clientX, winY: i.clientY, id: i.identifier, }; } var e = a("../core/core"); (e.prototype.touches = []), (e.prototype._updateTouchCoords = function (a) { if (null !== this._curElement) { for ( var b = [], c = 0; c < a.touches.length; c++ ) b[c] = d( this._curElement.elt, this.width, this.height, a, c ); this._setProperty("touches", b); } }), (e.prototype._ontouchstart = function (a) { var b = this._isGlobal ? window : this; this._setProperty("mouseIsPressed", !0), this._updateTouchCoords(a), this._updateNextMouseCoords(a), "function" == typeof b.touchStarted ? b.touchStarted(a) === !1 && a.preventDefault() : "function" == typeof b.mousePressed && b.mousePressed(a) === !1 && a.preventDefault(); }), (e.prototype._ontouchmove = function (a) { var b = this._isGlobal ? window : this; this._updateTouchCoords(a), this._updateNextMouseCoords(a), "function" == typeof b.touchMoved ? b.touchMoved(a) === !1 && a.preventDefault() : "function" == typeof b.mouseDragged && b.mouseDragged(a) === !1 && a.preventDefault(); }), (e.prototype._ontouchend = function (a) { this._setProperty("mouseIsPressed", !1), this._updateTouchCoords(a), this._updateNextMouseCoords(a); var b = this._isGlobal ? window : this; "function" == typeof b.touchEnded ? b.touchEnded(a) === !1 && a.preventDefault() : "function" == typeof b.mouseReleased && b.mouseReleased(a) === !1 && a.preventDefault(); }), (b.exports = e); }, { "../core/core": 42 }, ], 59: [ function (a, b, c) { "use strict"; function d(a) { var b = (3.5 * a) | 0; if (((b = b < 1 ? 1 : b < 248 ? b : 248), g !== b)) { (g = b), (h = (1 + g) << 1), (i = new Int32Array(h)), (j = new Array(h)); for (var c = 0; c < h; c++) j[c] = new Int32Array(256); for (var d, e, f, k, l = 1, m = b - 1; l < b; l++) { (i[b + l] = i[m] = e = m * m), (f = j[b + l]), (k = j[m--]); for (var n = 0; n < 256; n++) f[n] = k[n] = e * n; } (d = i[b] = b * b), (f = j[b]); for (var o = 0; o < 256; o++) f[o] = d * o; } } function e(a, b) { for ( var c = f._toPixels(a), e = a.width, k = a.height, l = e * k, m = new Int32Array(l), n = 0; n < l; n++ ) m[n] = f._getARGB(c, n); var o, p, q, r, s, t, u, v, w, x, y = new Int32Array(l), z = new Int32Array(l), A = new Int32Array(l), B = new Int32Array(l), C = 0; d(b); var D, E, F, G; for (E = 0; E < k; E++) { for (D = 0; D < e; D++) { if (((r = q = p = s = o = 0), (t = D - g) < 0)) (x = -t), (t = 0); else { if (t >= e) break; x = 0; } for (F = x; F < h && !(t >= e); F++) { var H = m[t + C]; (G = j[F]), (s += G[(H & -16777216) >>> 24]), (p += G[(16711680 & H) >> 16]), (q += G[(65280 & H) >> 8]), (r += G[255 & H]), (o += i[F]), t++; } (u = C + D), (y[u] = s / o), (z[u] = p / o), (A[u] = q / o), (B[u] = r / o); } C += e; } for (C = 0, v = -g, w = v * e, E = 0; E < k; E++) { for (D = 0; D < e; D++) { if (((r = q = p = s = o = 0), v < 0)) (x = u = -v), (t = D); else { if (v >= k) break; (x = 0), (u = v), (t = D + w); } for (F = x; F < h && !(u >= k); F++) (G = j[F]), (s += G[y[t]]), (p += G[z[t]]), (q += G[A[t]]), (r += G[B[t]]), (o += i[F]), u++, (t += e); m[D + C] = ((s / o) << 24) | ((p / o) << 16) | ((q / o) << 8) | (r / o); } (C += e), (w += e), v++; } f._setPixels(c, m); } var f = {}; (f._toPixels = function (a) { return a instanceof ImageData ? a.data : a .getContext("2d") .getImageData(0, 0, a.width, a.height).data; }), (f._getARGB = function (a, b) { var c = 4 * b; return ( ((a[c + 3] << 24) & 4278190080) | ((a[c] << 16) & 16711680) | ((a[c + 1] << 8) & 65280) | (255 & a[c + 2]) ); }), (f._setPixels = function (a, b) { for (var c = 0, d = 0, e = a.length; d < e; d++) (c = 4 * d), (a[c + 0] = (16711680 & b[d]) >>> 16), (a[c + 1] = (65280 & b[d]) >>> 8), (a[c + 2] = 255 & b[d]), (a[c + 3] = (4278190080 & b[d]) >>> 24); }), (f._toImageData = function (a) { return a instanceof ImageData ? a : a .getContext("2d") .getImageData(0, 0, a.width, a.height); }), (f._createImageData = function (a, b) { return ( (f._tmpCanvas = document.createElement("canvas")), (f._tmpCtx = f._tmpCanvas.getContext("2d")), this._tmpCtx.createImageData(a, b) ); }), (f.apply = function (a, b, c) { var d = a.getContext("2d"), e = d.getImageData(0, 0, a.width, a.height), f = b(e, c); f instanceof ImageData ? d.putImageData( f, 0, 0, 0, 0, a.width, a.height ) : d.putImageData( e, 0, 0, 0, 0, a.width, a.height ); }), (f.threshold = function (a, b) { var c = f._toPixels(a); void 0 === b && (b = 0.5); for ( var d = Math.floor(255 * b), e = 0; e < c.length; e += 4 ) { var g, h = c[e], i = c[e + 1], j = c[e + 2], k = 0.2126 * h + 0.7152 * i + 0.0722 * j; (g = k >= d ? 255 : 0), (c[e] = c[e + 1] = c[e + 2] = g); } }), (f.gray = function (a) { for ( var b = f._toPixels(a), c = 0; c < b.length; c += 4 ) { var d = b[c], e = b[c + 1], g = b[c + 2], h = 0.2126 * d + 0.7152 * e + 0.0722 * g; b[c] = b[c + 1] = b[c + 2] = h; } }), (f.opaque = function (a) { for ( var b = f._toPixels(a), c = 0; c < b.length; c += 4 ) b[c + 3] = 255; return b; }), (f.invert = function (a) { for ( var b = f._toPixels(a), c = 0; c < b.length; c += 4 ) (b[c] = 255 - b[c]), (b[c + 1] = 255 - b[c + 1]), (b[c + 2] = 255 - b[c + 2]); }), (f.posterize = function (a, b) { var c = f._toPixels(a); if (b < 2 || b > 255) throw new Error( "Level must be greater than 2 and less than 255 for posterize" ); for (var d = b - 1, e = 0; e < c.length; e += 4) { var g = c[e], h = c[e + 1], i = c[e + 2]; (c[e] = (255 * ((g * b) >> 8)) / d), (c[e + 1] = (255 * ((h * b) >> 8)) / d), (c[e + 2] = (255 * ((i * b) >> 8)) / d); } }), (f.dilate = function (a) { for ( var b, c, d, e, g, h, i, j, k, l, m, n, o, p, q, r, s, t = f._toPixels(a), u = 0, v = t.length ? t.length / 4 : 0, w = new Int32Array(v); u < v; ) for (b = u, c = u + a.width; u < c; ) (d = e = f._getARGB(t, u)), (i = u - 1), (h = u + 1), (j = u - a.width), (k = u + a.width), i < b && (i = u), h >= c && (h = u), j < 0 && (j = 0), k >= v && (k = u), (n = f._getARGB(t, j)), (m = f._getARGB(t, i)), (o = f._getARGB(t, k)), (l = f._getARGB(t, h)), (g = 77 * ((d >> 16) & 255) + 151 * ((d >> 8) & 255) + 28 * (255 & d)), (q = 77 * ((m >> 16) & 255) + 151 * ((m >> 8) & 255) + 28 * (255 & m)), (p = 77 * ((l >> 16) & 255) + 151 * ((l >> 8) & 255) + 28 * (255 & l)), (r = 77 * ((n >> 16) & 255) + 151 * ((n >> 8) & 255) + 28 * (255 & n)), (s = 77 * ((o >> 16) & 255) + 151 * ((o >> 8) & 255) + 28 * (255 & o)), q > g && ((e = m), (g = q)), p > g && ((e = l), (g = p)), r > g && ((e = n), (g = r)), s > g && ((e = o), (g = s)), (w[u++] = e); f._setPixels(t, w); }), (f.erode = function (a) { for ( var b, c, d, e, g, h, i, j, k, l, m, n, o, p, q, r, s, t = f._toPixels(a), u = 0, v = t.length ? t.length / 4 : 0, w = new Int32Array(v); u < v; ) for (b = u, c = u + a.width; u < c; ) (d = e = f._getARGB(t, u)), (i = u - 1), (h = u + 1), (j = u - a.width), (k = u + a.width), i < b && (i = u), h >= c && (h = u), j < 0 && (j = 0), k >= v && (k = u), (n = f._getARGB(t, j)), (m = f._getARGB(t, i)), (o = f._getARGB(t, k)), (l = f._getARGB(t, h)), (g = 77 * ((d >> 16) & 255) + 151 * ((d >> 8) & 255) + 28 * (255 & d)), (q = 77 * ((m >> 16) & 255) + 151 * ((m >> 8) & 255) + 28 * (255 & m)), (p = 77 * ((l >> 16) & 255) + 151 * ((l >> 8) & 255) + 28 * (255 & l)), (r = 77 * ((n >> 16) & 255) + 151 * ((n >> 8) & 255) + 28 * (255 & n)), (s = 77 * ((o >> 16) & 255) + 151 * ((o >> 8) & 255) + 28 * (255 & o)), q < g && ((e = m), (g = q)), p < g && ((e = l), (g = p)), r < g && ((e = n), (g = r)), s < g && ((e = o), (g = s)), (w[u++] = e); f._setPixels(t, w); }); var g, h, i, j; (f.blur = function (a, b) { e(a, b); }), (b.exports = f); }, {}, ], 60: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = []; (d.prototype.createImage = function (a, b) { return new d.Image(a, b); }), (d.prototype.saveCanvas = function () { var a, b, c; if ( (3 === arguments.length ? ((a = arguments[0]), (b = arguments[1]), (c = arguments[2])) : 2 === arguments.length ? "object" == typeof arguments[0] ? ((a = arguments[0]), (b = arguments[1])) : ((b = arguments[0]), (c = arguments[1])) : 1 === arguments.length && ("object" == typeof arguments[0] ? (a = arguments[0]) : (b = arguments[0])), a instanceof d.Element && (a = a.elt), a instanceof HTMLCanvasElement || (a = null), c || ("" === (c = d.prototype._checkFileExtension( b, c )[1]) && (c = "png")), a || (this._curElement && this._curElement.elt && (a = this._curElement.elt)), d.prototype._isSafari()) ) { var e = "Hello, Safari user!\n"; (e += "Now capturing a screenshot...\n"), (e += "To save this image,\n"), (e += "go to File --> Save As.\n"), alert(e), (window.location.href = a.toDataURL()); } else { var f; if (void 0 === c) (c = "png"), (f = "image/png"); else switch (c) { case "png": f = "image/png"; break; case "jpeg": f = "image/jpeg"; break; case "jpg": f = "image/jpeg"; break; default: f = "image/png"; } var g = a.toDataURL(f); (g = g.replace(f, "image/octet-stream")), d.prototype.downloadFile(g, b, c); } }), (d.prototype.saveFrames = function (a, b, c, f, g) { var h = c || 3; (h = d.prototype.constrain(h, 0, 15)), (h *= 1e3); var i = f || 15; i = d.prototype.constrain(i, 0, 22); var j = 0, k = d.prototype._makeFrame, l = this._curElement.elt, m = setInterval(function () { k(a + j, b, l), j++; }, 1e3 / i); setTimeout(function () { if ((clearInterval(m), g)) g(e); else for (var a = 0; a < e.length; a++) { var b = e[a]; d.prototype.downloadFile( b.imageData, b.filename, b.ext ); } e = []; }, h + 0.01); }), (d.prototype._makeFrame = function (a, b, c) { var d; d = this ? this._curElement.elt : c; var f; if (b) switch (b.toLowerCase()) { case "png": f = "image/png"; break; case "jpeg": f = "image/jpeg"; break; case "jpg": f = "image/jpeg"; break; default: f = "image/png"; } else (b = "png"), (f = "image/png"); var g = d.toDataURL(f); g = g.replace(f, "image/octet-stream"); var h = {}; (h.imageData = g), (h.filename = a), (h.ext = b), e.push(h); }), (b.exports = d); }, { "../core/core": 42 }, ], 61: [ function (a, b, c) { "use strict"; function d(a, b) { return a > 0 && a < b ? a : b; } var e = a("../core/core"), f = a("./filters"), g = a("../core/canvas"), h = a("../core/constants"); a("../core/error_helpers"), (e.prototype.loadImage = function (a, b, c) { var d = new Image(), f = new e.Image(1, 1, this), g = e._getDecrementPreload.apply( this, arguments ); return ( (d.onload = function () { (f.width = f.canvas.width = d.width), (f.height = f.canvas.height = d.height), f.drawingContext.drawImage(d, 0, 0), "function" == typeof b && b(f), g && b !== g && g(); }), (d.onerror = function (a) { e._friendlyFileLoadError(0, d.src), "function" == typeof c && c !== g && c(a); }), 0 !== a.indexOf("data:image/") && (d.crossOrigin = "Anonymous"), (d.src = a), f ); }), (e.prototype.image = function ( a, b, c, e, f, h, i, j, k ) { var l = a.width, m = a.height; a.elt && a.elt.videoWidth && !a.canvas && ((l = a.elt.videoWidth), (m = a.elt.videoHeight)); var n = b, o = c, p = e || l, q = f || m, r = h || 0, s = i || 0, t = j || l, u = k || m; (t = d(t, l)), (u = d(u, m)); var v = 1; a.elt && !a.canvas && a.elt.style.width && ((v = a.elt.videoWidth && !e ? a.elt.videoWidth : a.elt.width), (v /= parseInt(a.elt.style.width, 10))), (r *= v), (s *= v), (u *= v), (t *= v); var w = g.modeAdjust( n, o, p, q, this._renderer._imageMode ); this._renderer.image( a, r, s, t, u, w.x, w.y, w.w, w.h ); }), (e.prototype.tint = function () { var a = this.color.apply(this, arguments); this._renderer._tint = a.levels; }), (e.prototype.noTint = function () { this._renderer._tint = null; }), (e.prototype._getTintedImageCanvas = function (a) { if (!a.canvas) return a; var b = f._toPixels(a.canvas), c = document.createElement("canvas"); (c.width = a.canvas.width), (c.height = a.canvas.height); for ( var d = c.getContext("2d"), e = d.createImageData( a.canvas.width, a.canvas.height ), g = e.data, h = 0; h < b.length; h += 4 ) { var i = b[h], j = b[h + 1], k = b[h + 2], l = b[h + 3]; (g[h] = (i * this._renderer._tint[0]) / 255), (g[h + 1] = (j * this._renderer._tint[1]) / 255), (g[h + 2] = (k * this._renderer._tint[2]) / 255), (g[h + 3] = (l * this._renderer._tint[3]) / 255); } return d.putImageData(e, 0, 0), c; }), (e.prototype.imageMode = function (a) { (a !== h.CORNER && a !== h.CORNERS && a !== h.CENTER) || (this._renderer._imageMode = a); }), (b.exports = e); }, { "../core/canvas": 40, "../core/constants": 41, "../core/core": 42, "../core/error_helpers": 45, "./filters": 59, }, ], 62: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("./filters"); (d.Image = function (a, b) { (this.width = a), (this.height = b), (this.canvas = document.createElement("canvas")), (this.canvas.width = this.width), (this.canvas.height = this.height), (this.drawingContext = this.canvas.getContext("2d")), (this._pixelDensity = 1), (this.isTexture = !1), (this.pixels = []); }), (d.Image.prototype._setProperty = function (a, b) { this[a] = b; }), (d.Image.prototype.loadPixels = function () { d.Renderer2D.prototype.loadPixels.call(this); }), (d.Image.prototype.updatePixels = function ( a, b, c, e ) { d.Renderer2D.prototype.updatePixels.call( this, a, b, c, e ); }), (d.Image.prototype.get = function (a, b, c, e) { return d.Renderer2D.prototype.get.call( this, a, b, c, e ); }), (d.Image.prototype.set = function (a, b, c) { d.Renderer2D.prototype.set.call(this, a, b, c); }), (d.Image.prototype.resize = function (a, b) { 0 === a && 0 === b ? ((a = this.canvas.width), (b = this.canvas.height)) : 0 === a ? (a = (this.canvas.width * b) / this.canvas.height) : 0 === b && (b = (this.canvas.height * a) / this.canvas.width), (a = Math.floor(a)), (b = Math.floor(b)); var c = document.createElement("canvas"); (c.width = a), (c.height = b), c .getContext("2d") .drawImage( this.canvas, 0, 0, this.canvas.width, this.canvas.height, 0, 0, c.width, c.height ), (this.canvas.width = this.width = a), (this.canvas.height = this.height = b), this.drawingContext.drawImage( c, 0, 0, a, b, 0, 0, a, b ), this.pixels.length > 0 && this.loadPixels(); }), (d.Image.prototype.copy = function () { d.prototype.copy.apply(this, arguments); }), (d.Image.prototype.mask = function (a) { void 0 === a && (a = this); var b = this.drawingContext .globalCompositeOperation, c = 1; a instanceof d.Renderer && (c = a._pInst._pixelDensity); var e = [ a, 0, 0, c * a.width, c * a.height, 0, 0, this.width, this.height, ]; (this.drawingContext.globalCompositeOperation = "destination-in"), d.Image.prototype.copy.apply(this, e), (this.drawingContext.globalCompositeOperation = b); }), (d.Image.prototype.filter = function (a, b) { e.apply(this.canvas, e[a.toLowerCase()], b); }), (d.Image.prototype.blend = function () { d.prototype.blend.apply(this, arguments); }), (d.Image.prototype.save = function (a, b) { var c; if (b) switch (b.toLowerCase()) { case "png": c = "image/png"; break; case "jpeg": c = "image/jpeg"; break; case "jpg": c = "image/jpeg"; break; default: c = "image/png"; } else (b = "png"), (c = "image/png"); var e = this.canvas.toDataURL(c); (e = e.replace(c, "image/octet-stream")), d.prototype.downloadFile(e, a, b); }), (b.exports = d.Image); }, { "../core/core": 42, "./filters": 59 }, ], 63: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("./filters"); a("../color/p5.Color"), (d.prototype.pixels = []), (d.prototype.blend = function () { this._renderer ? this._renderer.blend.apply( this._renderer, arguments ) : d.Renderer2D.prototype.blend.apply( this, arguments ); }), (d.prototype.copy = function () { d.Renderer2D._copyHelper.apply(this, arguments); }), (d.prototype.filter = function (a, b) { void 0 !== this.canvas ? e.apply(this.canvas, e[a.toLowerCase()], b) : e.apply(this.elt, e[a.toLowerCase()], b); }), (d.prototype.get = function (a, b, c, d) { return this._renderer.get(a, b, c, d); }), (d.prototype.loadPixels = function () { this._renderer.loadPixels(); }), (d.prototype.set = function (a, b, c) { this._renderer.set(a, b, c); }), (d.prototype.updatePixels = function (a, b, c, d) { 0 !== this.pixels.length && this._renderer.updatePixels(a, b, c, d); }), (b.exports = d); }, { "../color/p5.Color": 36, "../core/core": 42, "./filters": 59, }, ], 64: [ function (a, b, c) { "use strict"; function d(a, b) { var c = {}; if (void 0 === (b = b || [])) for (var d = 0; d < a.length; d++) b[d.toString()] = d; for (var e = 0; e < b.length; e++) { var f = b[e], g = a[e]; c[f] = g; } return c; } function e(a) { return a .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function f(a, b) { (b && b !== !0 && "true" !== b) || (b = ""), a || (a = "untitled"); var c = ""; return ( a && a.indexOf(".") > -1 && (c = a.split(".").pop()), b && c !== b && ((c = b), (a = a + "." + c)), [a, c] ); } function g(a) { document.body.removeChild(a.target); } var h = a("../core/core"), i = a("opentype.js"); a("whatwg-fetch"), a("es6-promise").polyfill(); var j = a("fetch-jsonp"); a("../core/error_helpers"), (h._getDecrementPreload = function () { var a = arguments[arguments.length - 1]; return (window.preload || (this && this.preload)) && "function" == typeof a ? a : null; }), (h.prototype.loadFont = function (a, b, c) { var d = new h.Font(this), e = h._getDecrementPreload.apply( this, arguments ); return ( i.load(a, function (f, g) { if (f) return void 0 !== c && c !== e ? c(f) : (h._friendlyFileLoadError(4, a), void console.error(f, a)); (d.font = g), void 0 !== b && b(d), e && b !== e && e(); var i, j, k = ["ttf", "otf", "woff", "woff2"], l = a .split("\\") .pop() .split("/") .pop(), m = l.lastIndexOf("."), n = m < 1 ? null : l.substr(m + 1); k.indexOf(n) > -1 && ((i = l.substr(0, m)), (j = document.createElement("style")), j.appendChild( document.createTextNode( "\n@font-face {\nfont-family: " + i + ";\nsrc: url(" + a + ");\n}\n" ) ), document.head.appendChild(j)); }), d ); }), (h.prototype.loadJSON = function () { for ( var a, b, c, d = arguments[0], e = h._getDecrementPreload.apply( this, arguments ), f = {}, g = "json", i = 1; i < arguments.length; i++ ) { var j = arguments[i]; "string" == typeof j ? ("jsonp" !== j && "json" !== j) || (g = j) : "function" == typeof j && j !== e ? a ? (b = j) : (a = j) : "object" == typeof j && j.hasOwnProperty("jsonpCallback") && ((g = "jsonp"), (c = j)); } return ( h.prototype.httpDo( d, "GET", c, g, function (b) { for (var c in b) f[c] = b[c]; void 0 !== a && a(b), e && a !== e && e(); }, b ), f ); }), (h.prototype.loadStrings = function () { for ( var a, b, c = [], d = h._getDecrementPreload.apply( this, arguments ), e = 1; e < arguments.length; e++ ) { var f = arguments[e]; "function" == typeof f && f !== d && (void 0 === a ? (a = f) : (b = f)); } return ( h.prototype.httpDo( arguments[0], "GET", "text", function (b) { var e = b.match(/[^\r\n]+/g); for (var f in e) c[f] = e[f]; void 0 !== a && a(c), d && a !== d && d(); }, b ), c ); }), (h.prototype.loadTable = function (a) { var b = null, c = null, e = [], f = !1, g = a.substring( a.lastIndexOf(".") + 1, a.length ), i = ",", j = !1, k = h._getDecrementPreload.apply( this, arguments ); "tsv" === g && (i = "\t"); for (var l = 1; l < arguments.length; l++) if ( "function" == typeof arguments[l] && arguments[l] !== k ) b ? (c = arguments[l]) : (b = arguments[l]); else if ("string" == typeof arguments[l]) if ( (e.push(arguments[l]), "header" === arguments[l] && (f = !0), "csv" === arguments[l]) ) { if (j) throw new Error( "Cannot set multiple separator types." ); (i = ","), (j = !0); } else if ("tsv" === arguments[l]) { if (j) throw new Error( "Cannot set multiple separator types." ); (i = "\t"), (j = !0); } var m = new h.Table(); return ( h.prototype.httpDo( a, "GET", "text", function (a) { for ( var c, e = {}, g = 0, j = 1, n = 2, o = 4, p = '"', q = "\r", r = "\n", s = [], t = 0, u = null, v = function () { (e.currentState = g), (e.token = ""); }, w = function () { u.push(e.token), v(); }, x = function () { (e.escaped = !1), (u = []), v(); }, y = function () { (e.currentState = o), s.push(u), (u = null); }; ; ) { if (null == (c = a[t++])) { if (e.escaped) throw new Error( "Unclosed quote in file." ); if (u) { w(), y(); break; } } if ( (null === u && x(), e.currentState === g) ) { if (c === p) { (e.escaped = !0), (e.currentState = j); continue; } e.currentState = j; } e.currentState === j && e.escaped ? c === p ? a[t] === p ? ((e.token += p), t++) : ((e.escaped = !1), (e.currentState = n)) : (e.token += c) : c === q ? (a[t] === r && t++, w(), y()) : c === r ? (w(), y()) : c === i ? w() : e.currentState === j && (e.token += c); } if (f) m.columns = s.shift(); else for (l = 0; l < s[0].length; l++) m.columns[l] = "null"; var z; for (l = 0; l < s.length; l++) (1 !== s[l].length || ("undefined" !== s[l][0] && "" !== s[l][0])) && ((z = new h.TableRow()), (z.arr = s[l]), (z.obj = d(s[l], m.columns)), m.addRow(z)); null !== b && b(m), k && b !== k && k(); }, function (b) { if ( (h._friendlyFileLoadError(2, a), !c) ) throw b; c(b); } ), m ); }), (h.prototype.parseXML = function (a) { var b, c = new h.XML(); if (a.children.length) { for (b = 0; b < a.children.length; b++) { var d = parseXML(a.children[b]); c.addChild(d); } c.setName(a.nodeName), c._setCont(a.textContent), c._setAttributes(a); for (var e = 0; e < c.children.length; e++) c.children[e].parent = c; return c; } return ( c.setName(a.nodeName), c._setCont(a.textContent), c._setAttributes(a), c ); }), (h.prototype.loadXML = function () { for ( var a, b, c = {}, d = h._getDecrementPreload.apply( this, arguments ), e = 1; e < arguments.length; e++ ) { var f = arguments[e]; "function" == typeof f && f !== d && (void 0 === a ? (a = f) : (b = f)); } return ( h.prototype.httpDo( arguments[0], "GET", "xml", function (b) { for (var e in b) c[e] = b[e]; void 0 !== a && a(c), d && a !== d && d(); }, b ), c ); }), (h.prototype.httpGet = function () { var a = Array.prototype.slice.call(arguments); a.splice(1, 0, "GET"), h.prototype.httpDo.apply(this, a); }), (h.prototype.httpPost = function () { var a = Array.prototype.slice.call(arguments); a.splice(1, 0, "POST"), h.prototype.httpDo.apply(this, a); }), (h.prototype.httpDo = function () { for ( var a, b, c, d = "", e = {}, f = 0, g = "text/plain", h = arguments.length - 1; h > 0 && "function" == typeof arguments[h]; h-- ) f++; if ( 2 == arguments.length - f && "string" == typeof arguments[0] && "object" == typeof arguments[1] ) (c = new Request(arguments[0], arguments[1])), (a = arguments[2]), (b = arguments[3]), "" === d && (d = c.url.indexOf("json") !== -1 ? "json" : c.url.indexOf("xml") !== -1 ? "xml" : "text"); else { for ( var i, k = arguments[0], l = "GET", m = 1; m < arguments.length; m++ ) { var n = arguments[m]; if ("string" == typeof n) "GET" === n || "POST" === n || "PUT" === n || "DELETE" === n ? (l = n) : "json" === n || "jsonp" === n || "xml" === n || "text" === n ? (d = n) : (i = n); else if ("number" == typeof n) i = n.toString(); else if ("object" == typeof n) if (n.hasOwnProperty("jsonpCallback")) for (var o in n) e[o] = n[o]; else (i = JSON.stringify(n)), (g = "application/json"); else "function" == typeof n && (a ? (b = n) : (a = n)); } "" === d && (d = k.indexOf("json") !== -1 ? "json" : k.indexOf("xml") !== -1 ? "xml" : "text"), (c = new Request(k, { method: l, mode: "cors", body: i, headers: new Headers({ "Content-Type": g, }), })); } "jsonp" === d ? j(arguments[0], e) .then(function (a) { if (a.ok) return a.json(); throw a; }) .then(function (b) { a(b); }) .catch(function (a) { if (!b) throw a; b(a); }) : fetch(c) .then(function (a) { if (a.ok) return "json" === d ? a.json() : a.text(); throw a; }) .then(function (b) { if ("xml" === d) { (b = new DOMParser().parseFromString( b, "text/xml" )), (b = parseXML( b.documentElement )); } a(b); }) .catch(function (a, c) { if (!b) throw a; b(a); }); }), (window.URL = window.URL || window.webkitURL), (h.prototype._pWriters = []), (h.prototype.createWriter = function (a, b) { var c; for (var d in h.prototype._pWriters) if (h.prototype._pWriters[d].name === a) return ( (c = new h.PrintWriter( a + window.millis(), b )), h.prototype._pWriters.push(c), c ); return ( (c = new h.PrintWriter(a, b)), h.prototype._pWriters.push(c), c ); }), (h.PrintWriter = function (a, b) { var c = this; (this.name = a), (this.content = ""), (this.write = function (a) { this.content += a; }), (this.print = function (a) { this.content += a + "\n"; }), (this.flush = function () { this.content = ""; }), (this.close = function () { var d = []; d.push(this.content), h.prototype.writeFile(d, a, b); for (var e in h.prototype._pWriters) h.prototype._pWriters[e].name === this.name && h.prototype._pWriters.splice(e, 1); c.flush(), (c = {}); }); }), (h.prototype.save = function (a, b, c) { var d = arguments, e = this._curElement.elt; if (0 === d.length) return void h.prototype.saveCanvas(e); if ( d[0] instanceof h.Renderer || d[0] instanceof h.Graphics ) return void h.prototype.saveCanvas( d[0].elt, d[1], d[2] ); if (1 === d.length && "string" == typeof d[0]) h.prototype.saveCanvas(e, d[0]); else { switch (f(d[1], d[2])[1]) { case "json": return void h.prototype.saveJSON( d[0], d[1], d[2] ); case "txt": return void h.prototype.saveStrings( d[0], d[1], d[2] ); default: d[0] instanceof Array ? h.prototype.saveStrings( d[0], d[1], d[2] ) : d[0] instanceof h.Table ? h.prototype.saveTable( d[0], d[1], d[2], d[3] ) : d[0] instanceof h.Image ? h.prototype.saveCanvas( d[0].canvas, d[1] ) : d[0] instanceof h.SoundFile && h.prototype.saveSound( d[0], d[1], d[2], d[3] ); } } }), (h.prototype.saveJSON = function (a, b, c) { var d; (d = c ? JSON.stringify(a) : JSON.stringify(a, void 0, 2)), this.saveStrings(d.split("\n"), b, "json"); }), (h.prototype.saveJSONObject = h.prototype.saveJSON), (h.prototype.saveJSONArray = h.prototype.saveJSON), (h.prototype.saveStrings = function (a, b, c) { for ( var d = c || "txt", e = this.createWriter(b, d), f = 0; f < a.length; f++ ) a.length, e.print(a[f]); e.close(), e.flush(); }), (h.prototype.saveTable = function (a, b, c) { var d; d = void 0 === c ? b.substring( b.lastIndexOf(".") + 1, b.length ) : c; var f = this.createWriter(b, d), g = a.columns, h = ","; if (("tsv" === d && (h = "\t"), "html" !== d)) { if ("0" !== g[0]) { for (var i = 0; i < g.length; i++) i < g.length - 1 ? f.write(g[i] + h) : f.write(g[i]); f.write("\n"); } for (var j = 0; j < a.rows.length; j++) { var k; for (k = 0; k < a.rows[j].arr.length; k++) k < a.rows[j].arr.length - 1 ? f.write(a.rows[j].arr[k] + h) : (a.rows.length, f.write(a.rows[j].arr[k])); f.write("\n"); } } else { f.print(""), f.print(""); var l = ' "), f.print(""), f.print(" "), "0" !== g[0]) ) { f.print(" "); for (var m = 0; m < g.length; m++) { var n = e(g[m]); f.print(" "); } f.print(" "); } for (var o = 0; o < a.rows.length; o++) { f.print(" "); for (var p = 0; p < a.columns.length; p++) { var q = a.rows[o].getString(p), r = e(q); f.print(" "); } f.print(" "); } f.print("
" + n), f.print("
" + r), f.print("
"), f.print(""), f.print(""); } f.close(), f.flush(); }), (h.prototype.writeFile = function (a, b, c) { var d = "application/octet-stream"; h.prototype._isSafari() && (d = "text/plain"); var e = new Blob(a, { type: d }), f = window.URL.createObjectURL(e); h.prototype.downloadFile(f, b, c); }), (h.prototype.downloadFile = function (a, b, c) { var d = f(b, c), e = d[0], i = d[1], j = document.createElement("a"); if ( ((j.href = a), (j.download = e), (j.onclick = function (a) { g(a), a.stopPropagation(); }), (j.style.display = "none"), document.body.appendChild(j), h.prototype._isSafari()) ) { var k = "Hello, Safari user! To download this file...\n"; (k += "1. Go to File --> Save As.\n"), (k += '2. Choose "Page Source" as the Format.\n'), (k += '3. Name it with this extension: ."' + i + '"'), alert(k); } j.click(), (a = null); }), (h.prototype._checkFileExtension = f), (h.prototype._isSafari = function () { return ( Object.prototype.toString .call(window.HTMLElement) .indexOf("Constructor") > 0 ); }), (b.exports = h); }, { "../core/core": 42, "../core/error_helpers": 45, "es6-promise": 2, "fetch-jsonp": 3, "opentype.js": 10, "whatwg-fetch": 32, }, ], 65: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.Table = function (a) { (this.columns = []), (this.rows = []); }), (d.Table.prototype.addRow = function (a) { var b = a || new d.TableRow(); if (void 0 === b.arr || void 0 === b.obj) throw "invalid TableRow: " + b; return (b.table = this), this.rows.push(b), b; }), (d.Table.prototype.removeRow = function (a) { this.rows[a].table = null; var b = this.rows.splice(a + 1, this.rows.length); this.rows.pop(), (this.rows = this.rows.concat(b)); }), (d.Table.prototype.getRow = function (a) { return this.rows[a]; }), (d.Table.prototype.getRows = function () { return this.rows; }), (d.Table.prototype.findRow = function (a, b) { if ("string" == typeof b) { for (var c = 0; c < this.rows.length; c++) if (this.rows[c].obj[b] === a) return this.rows[c]; } else for (var d = 0; d < this.rows.length; d++) if (this.rows[d].arr[b] === a) return this.rows[d]; return null; }), (d.Table.prototype.findRows = function (a, b) { var c = []; if ("string" == typeof b) for (var d = 0; d < this.rows.length; d++) this.rows[d].obj[b] === a && c.push(this.rows[d]); else for (var e = 0; e < this.rows.length; e++) this.rows[e].arr[b] === a && c.push(this.rows[e]); return c; }), (d.Table.prototype.matchRow = function (a, b) { if ("number" == typeof b) { for (var c = 0; c < this.rows.length; c++) if (this.rows[c].arr[b].match(a)) return this.rows[c]; } else for (var d = 0; d < this.rows.length; d++) if (this.rows[d].obj[b].match(a)) return this.rows[d]; return null; }), (d.Table.prototype.matchRows = function (a, b) { var c = []; if ("number" == typeof b) for (var d = 0; d < this.rows.length; d++) this.rows[d].arr[b].match(a) && c.push(this.rows[d]); else for (var e = 0; e < this.rows.length; e++) this.rows[e].obj[b].match(a) && c.push(this.rows[e]); return c; }), (d.Table.prototype.getColumn = function (a) { var b = []; if ("string" == typeof a) for (var c = 0; c < this.rows.length; c++) b.push(this.rows[c].obj[a]); else for (var d = 0; d < this.rows.length; d++) b.push(this.rows[d].arr[a]); return b; }), (d.Table.prototype.clearRows = function () { delete this.rows, (this.rows = []); }), (d.Table.prototype.addColumn = function (a) { var b = a || null; this.columns.push(b); }), (d.Table.prototype.getColumnCount = function () { return this.columns.length; }), (d.Table.prototype.getRowCount = function () { return this.rows.length; }), (d.Table.prototype.removeTokens = function (a, b) { for ( var c = function (a) { return a.replace( /[-\/\\^$*+?.()|[\]{}]/g, "\\$&" ); }, d = [], e = 0; e < a.length; e++ ) d.push(c(a.charAt(e))); var f = new RegExp(d.join("|"), "g"); if (void 0 === b) for (var g = 0; g < this.columns.length; g++) for (var h = 0; h < this.rows.length; h++) { var i = this.rows[h].arr[g]; (i = i.replace(f, "")), (this.rows[h].arr[g] = i), (this.rows[h].obj[this.columns[g]] = i); } else if ("string" == typeof b) for (var j = 0; j < this.rows.length; j++) { var k = this.rows[j].obj[b]; (k = k.replace(f, "")), (this.rows[j].obj[b] = k); var l = this.columns.indexOf(b); this.rows[j].arr[l] = k; } else for (var m = 0; m < this.rows.length; m++) { var n = this.rows[m].arr[b]; (n = n.replace(f, "")), (this.rows[m].arr[b] = n), (this.rows[m].obj[this.columns[b]] = n); } }), (d.Table.prototype.trim = function (a) { var b = new RegExp(" ", "g"); if (void 0 === a) for (var c = 0; c < this.columns.length; c++) for (var d = 0; d < this.rows.length; d++) { var e = this.rows[d].arr[c]; (e = e.replace(b, "")), (this.rows[d].arr[c] = e), (this.rows[d].obj[this.columns[c]] = e); } else if ("string" == typeof a) for (var f = 0; f < this.rows.length; f++) { var g = this.rows[f].obj[a]; (g = g.replace(b, "")), (this.rows[f].obj[a] = g); var h = this.columns.indexOf(a); this.rows[f].arr[h] = g; } else for (var i = 0; i < this.rows.length; i++) { var j = this.rows[i].arr[a]; (j = j.replace(b, "")), (this.rows[i].arr[a] = j), (this.rows[i].obj[this.columns[a]] = j); } }), (d.Table.prototype.removeColumn = function (a) { var b, c; "string" == typeof a ? ((b = a), (c = this.columns.indexOf(a)), console.log("string")) : ((c = a), (b = this.columns[a])); var d = this.columns.splice( c + 1, this.columns.length ); this.columns.pop(), (this.columns = this.columns.concat(d)); for (var e = 0; e < this.rows.length; e++) { var f = this.rows[e].arr, g = f.splice(c + 1, f.length); f.pop(), (this.rows[e].arr = f.concat(g)), delete this.rows[e].obj[b]; } }), (d.Table.prototype.set = function (a, b, c) { this.rows[a].set(b, c); }), (d.Table.prototype.setNum = function (a, b, c) { this.rows[a].setNum(b, c); }), (d.Table.prototype.setString = function (a, b, c) { this.rows[a].setString(b, c); }), (d.Table.prototype.get = function (a, b) { return this.rows[a].get(b); }), (d.Table.prototype.getNum = function (a, b) { return this.rows[a].getNum(b); }), (d.Table.prototype.getString = function (a, b) { return this.rows[a].getString(b); }), (d.Table.prototype.getObject = function (a) { for ( var b, c, d = {}, e = 0; e < this.rows.length; e++ ) if ( ((b = this.rows[e].obj), "string" == typeof a) ) { if (!(this.columns.indexOf(a) >= 0)) throw ( 'This table has no column named "' + a + '"' ); (c = b[a]), (d[c] = b); } else d[e] = this.rows[e].obj; return d; }), (d.Table.prototype.getArray = function () { for (var a = [], b = 0; b < this.rows.length; b++) a.push(this.rows[b].arr); return a; }), (b.exports = d.Table); }, { "../core/core": 42 }, ], 66: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.TableRow = function (a, b) { var c = [], d = {}; a && ((b = b || ","), (c = a.split(b))); for (var e = 0; e < c.length; e++) { var f = e, g = c[e]; d[f] = g; } (this.arr = c), (this.obj = d), (this.table = null); }), (d.TableRow.prototype.set = function (a, b) { if ("string" == typeof a) { var c = this.table.columns.indexOf(a); if (!(c >= 0)) throw ( 'This table has no column named "' + a + '"' ); (this.obj[a] = b), (this.arr[c] = b); } else { if (!(a < this.table.columns.length)) throw ( "Column #" + a + " is out of the range of this table" ); this.arr[a] = b; var d = this.table.columns[a]; this.obj[d] = b; } }), (d.TableRow.prototype.setNum = function (a, b) { var c = parseFloat(b, 10); this.set(a, c); }), (d.TableRow.prototype.setString = function (a, b) { var c = b.toString(); this.set(a, c); }), (d.TableRow.prototype.get = function (a) { return "string" == typeof a ? this.obj[a] : this.arr[a]; }), (d.TableRow.prototype.getNum = function (a) { var b; if ( ((b = "string" == typeof a ? parseFloat(this.obj[a], 10) : parseFloat(this.arr[a], 10)), "NaN" === b.toString()) ) throw ( "Error: " + this.obj[a] + " is NaN (Not a Number)" ); return b; }), (d.TableRow.prototype.getString = function (a) { return "string" == typeof a ? this.obj[a].toString() : this.arr[a].toString(); }), (b.exports = d.TableRow); }, { "../core/core": 42 }, ], 67: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.XML = function () { (this.name = null), (this.attributes = {}), (this.children = []), (this.parent = null), (this.content = null); }), (d.XML.prototype.getParent = function () { return this.parent; }), (d.XML.prototype.getName = function () { return this.name; }), (d.XML.prototype.setName = function (a) { this.name = a; }), (d.XML.prototype.hasChildren = function () { return this.children.length > 0; }), (d.XML.prototype.listChildren = function () { return this.children.map(function (a) { return a.name; }); }), (d.XML.prototype.getChildren = function (a) { return a ? this.children.filter(function (b) { return b.name === a; }) : this.children; }), (d.XML.prototype.getChild = function (a) { return "string" == typeof a ? this.children.find(function (b) { return b.name === a; }) : this.children[a]; }), (d.XML.prototype.addChild = function (a) { a instanceof d.XML && this.children.push(a); }), (d.XML.prototype.removeChild = function (a) { var b = -1; if ("string" == typeof a) { for (var c = 0; c < this.children.length; c++) if (this.children[c].name === a) { b = c; break; } } else b = a; b !== -1 && this.children.splice(b, 1); }), (d.XML.prototype.getAttributeCount = function () { return Object.keys(this.attributes).length; }), (d.XML.prototype.listAttributes = function () { return Object.keys(this.attributes); }), (d.XML.prototype.hasAttribute = function (a) { return !!this.attributes[a]; }), (d.XML.prototype.getNum = function (a, b) { return Number(this.attributes[a]) || b || 0; }), (d.XML.prototype.getString = function (a, b) { return String(this.attributes[a]) || b || null; }), (d.XML.prototype.setAttribute = function (a, b) { this.attributes[a] && (this.attributes[a] = b); }), (d.XML.prototype.getContent = function (a) { return this.content || a || null; }), (d.XML.prototype.setContent = function (a) { this.children.length || (this.content = a); }), (d.XML.prototype._setCont = function (a) { var b; (b = a), (b = b.replace(/\s\s+/g, ",")), (this.content = b); }), (d.XML.prototype._setAttributes = function (a) { var b, c = {}; for (b = 0; b < a.attributes.length; b++) c[a.attributes[b].nodeName] = a.attributes[b].nodeValue; this.attributes = c; }), (b.exports = d.XML); }, { "../core/core": 42 }, ], 68: [ function (a, b, c) { "use strict"; function d(a, b, c) { if ("function" == typeof Math.hypot) return Math.hypot.apply(null, arguments); for ( var d = arguments.length, e = [], f = 0, g = 0; g < d; g++ ) { var h = arguments[g]; if ((h = +h) === 1 / 0 || h === -(1 / 0)) return 1 / 0; (h = Math.abs(h)), h > f && (f = h), (e[g] = h); } 0 === f && (f = 1); for (var i = 0, j = 0, k = 0; k < d; k++) { var l = e[k] / f, m = l * l - j, n = i + m; (j = n - i - m), (i = n); } return Math.sqrt(i) * f; } var e = a("../core/core"); (e.prototype.abs = Math.abs), (e.prototype.ceil = Math.ceil), (e.prototype.constrain = function (a, b, c) { return Math.max(Math.min(a, c), b); }), (e.prototype.dist = function (a, b, c, e, f, g) { return 4 === arguments.length ? d(c - a, e - b) : 6 === arguments.length ? d(e - a, f - b, g - c) : void 0; }), (e.prototype.exp = Math.exp), (e.prototype.floor = Math.floor), (e.prototype.lerp = function (a, b, c) { return c * (b - a) + a; }), (e.prototype.log = Math.log), (e.prototype.mag = function (a, b) { return d(a, b); }), (e.prototype.map = function (a, b, c, d, e) { return ((a - b) / (c - b)) * (e - d) + d; }), (e.prototype.max = function () { return arguments[0] instanceof Array ? Math.max.apply(null, arguments[0]) : Math.max.apply(null, arguments); }), (e.prototype.min = function () { return arguments[0] instanceof Array ? Math.min.apply(null, arguments[0]) : Math.min.apply(null, arguments); }), (e.prototype.norm = function (a, b, c) { return this.map(a, b, c, 0, 1); }), (e.prototype.pow = Math.pow), (e.prototype.round = Math.round), (e.prototype.sq = function (a) { return a * a; }), (e.prototype.sqrt = Math.sqrt), (b.exports = e); }, { "../core/core": 42 }, ], 69: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.createVector = function (a, b, c) { return this instanceof d ? new d.Vector(this, arguments) : new d.Vector(a, b, c); }), (b.exports = d); }, { "../core/core": 42 }, ], 70: [ function (a, b, c) { "use strict"; var d, e = a("../core/core"), f = 4, g = 1 << f, h = 8, i = 1 << h, j = 4095, k = 4, l = 0.5, m = function (a) { return 0.5 * (1 - Math.cos(a * Math.PI)); }; (e.prototype.noise = function (a, b, c) { if (((b = b || 0), (c = c || 0), null == d)) { d = new Array(j + 1); for (var e = 0; e < j + 1; e++) d[e] = Math.random(); } a < 0 && (a = -a), b < 0 && (b = -b), c < 0 && (c = -c); for ( var n, o, p, q, r, s = Math.floor(a), t = Math.floor(b), u = Math.floor(c), v = a - s, w = b - t, x = c - u, y = 0, z = 0.5, A = 0; A < k; A++ ) { var B = s + (t << f) + (u << h); (n = m(v)), (o = m(w)), (p = d[B & j]), (p += n * (d[(B + 1) & j] - p)), (q = d[(B + g) & j]), (q += n * (d[(B + g + 1) & j] - q)), (p += o * (q - p)), (B += i), (q = d[B & j]), (q += n * (d[(B + 1) & j] - q)), (r = d[(B + g) & j]), (r += n * (d[(B + g + 1) & j] - r)), (q += o * (r - q)), (p += m(x) * (q - p)), (y += p * z), (z *= l), (s <<= 1), (v *= 2), (t <<= 1), (w *= 2), (u <<= 1), (x *= 2), v >= 1 && (s++, v--), w >= 1 && (t++, w--), x >= 1 && (u++, x--); } return y; }), (e.prototype.noiseDetail = function (a, b) { a > 0 && (k = a), b > 0 && (l = b); }), (e.prototype.noiseSeed = function (a) { var b = (function () { var a, b, c = 4294967296, d = 1664525, e = 1013904223; return { setSeed: function (d) { b = a = (null == d ? Math.random() * c : d) >>> 0; }, getSeed: function () { return a; }, rand: function () { return (b = (d * b + e) % c) / c; }, }; })(); b.setSeed(a), (d = new Array(j + 1)); for (var c = 0; c < j + 1; c++) d[c] = b.rand(); }), (b.exports = e); }, { "../core/core": 42 }, ], 71: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("./polargeometry"), f = a("../core/constants"); (d.Vector = function () { var a, b, c; arguments[0] instanceof d ? ((this.p5 = arguments[0]), (a = arguments[1][0] || 0), (b = arguments[1][1] || 0), (c = arguments[1][2] || 0)) : ((a = arguments[0] || 0), (b = arguments[1] || 0), (c = arguments[2] || 0)), (this.x = a), (this.y = b), (this.z = c); }), (d.Vector.prototype.toString = function () { return ( "p5.Vector Object : [" + this.x + ", " + this.y + ", " + this.z + "]" ); }), (d.Vector.prototype.set = function (a, b, c) { return a instanceof d.Vector ? ((this.x = a.x || 0), (this.y = a.y || 0), (this.z = a.z || 0), this) : a instanceof Array ? ((this.x = a[0] || 0), (this.y = a[1] || 0), (this.z = a[2] || 0), this) : ((this.x = a || 0), (this.y = b || 0), (this.z = c || 0), this); }), (d.Vector.prototype.copy = function () { return this.p5 ? new d.Vector(this.p5, [ this.x, this.y, this.z, ]) : new d.Vector(this.x, this.y, this.z); }), (d.Vector.prototype.add = function (a, b, c) { return a instanceof d.Vector ? ((this.x += a.x || 0), (this.y += a.y || 0), (this.z += a.z || 0), this) : a instanceof Array ? ((this.x += a[0] || 0), (this.y += a[1] || 0), (this.z += a[2] || 0), this) : ((this.x += a || 0), (this.y += b || 0), (this.z += c || 0), this); }), (d.Vector.prototype.sub = function (a, b, c) { return a instanceof d.Vector ? ((this.x -= a.x || 0), (this.y -= a.y || 0), (this.z -= a.z || 0), this) : a instanceof Array ? ((this.x -= a[0] || 0), (this.y -= a[1] || 0), (this.z -= a[2] || 0), this) : ((this.x -= a || 0), (this.y -= b || 0), (this.z -= c || 0), this); }), (d.Vector.prototype.mult = function (a) { return ( (this.x *= a || 0), (this.y *= a || 0), (this.z *= a || 0), this ); }), (d.Vector.prototype.div = function (a) { return ( (this.x /= a), (this.y /= a), (this.z /= a), this ); }), (d.Vector.prototype.mag = function () { return Math.sqrt(this.magSq()); }), (d.Vector.prototype.magSq = function () { var a = this.x, b = this.y, c = this.z; return a * a + b * b + c * c; }), (d.Vector.prototype.dot = function (a, b, c) { return a instanceof d.Vector ? this.dot(a.x, a.y, a.z) : this.x * (a || 0) + this.y * (b || 0) + this.z * (c || 0); }), (d.Vector.prototype.cross = function (a) { var b = this.y * a.z - this.z * a.y, c = this.z * a.x - this.x * a.z, e = this.x * a.y - this.y * a.x; return this.p5 ? new d.Vector(this.p5, [b, c, e]) : new d.Vector(b, c, e); }), (d.Vector.prototype.dist = function (a) { return a.copy().sub(this).mag(); }), (d.Vector.prototype.normalize = function () { return 0 === this.mag() ? this : this.div(this.mag()); }), (d.Vector.prototype.limit = function (a) { var b = this.magSq(); return ( b > a * a && (this.div(Math.sqrt(b)), this.mult(a)), this ); }), (d.Vector.prototype.setMag = function (a) { return this.normalize().mult(a); }), (d.Vector.prototype.heading = function () { var a = Math.atan2(this.y, this.x); return this.p5 ? this.p5._angleMode === f.RADIANS ? a : e.radiansToDegrees(a) : a; }), (d.Vector.prototype.rotate = function (a) { var b = this.heading() + a; this.p5 && this.p5._angleMode === f.DEGREES && (b = e.degreesToRadians(b)); var c = this.mag(); return ( (this.x = Math.cos(b) * c), (this.y = Math.sin(b) * c), this ); }), (d.Vector.prototype.angleBetween = function (a) { var b = Math.acos( this.dot(a) / (this.mag() * a.mag()) ); return ( this.p5 && this.p5._angleMode === f.DEGREES && (b = e.radiansToDegrees(b)), b ); }), (d.Vector.prototype.lerp = function (a, b, c, e) { return a instanceof d.Vector ? this.lerp(a.x, a.y, a.z, b) : ((this.x += (a - this.x) * e || 0), (this.y += (b - this.y) * e || 0), (this.z += (c - this.z) * e || 0), this); }), (d.Vector.prototype.array = function () { return [this.x || 0, this.y || 0, this.z || 0]; }), (d.Vector.prototype.equals = function (a, b, c) { var e, f, g; return ( a instanceof d.Vector ? ((e = a.x || 0), (f = a.y || 0), (g = a.z || 0)) : a instanceof Array ? ((e = a[0] || 0), (f = a[1] || 0), (g = a[2] || 0)) : ((e = a || 0), (f = b || 0), (g = c || 0)), this.x === e && this.y === f && this.z === g ); }), (d.Vector.fromAngle = function (a) { return ( this.p5 && this.p5._angleMode === f.DEGREES && (a = e.degreesToRadians(a)), this.p5 ? new d.Vector(this.p5, [ Math.cos(a), Math.sin(a), 0, ]) : new d.Vector(Math.cos(a), Math.sin(a), 0) ); }), (d.Vector.random2D = function () { var a; return ( (a = this.p5 ? this.p5._angleMode === f.DEGREES ? this.p5.random(360) : this.p5.random(f.TWO_PI) : Math.random() * Math.PI * 2), this.fromAngle(a) ); }), (d.Vector.random3D = function () { var a, b; this.p5 ? ((a = this.p5.random(0, f.TWO_PI)), (b = this.p5.random(-1, 1))) : ((a = Math.random() * Math.PI * 2), (b = 2 * Math.random() - 1)); var c = Math.sqrt(1 - b * b) * Math.cos(a), e = Math.sqrt(1 - b * b) * Math.sin(a); return this.p5 ? new d.Vector(this.p5, [c, e, b]) : new d.Vector(c, e, b); }), (d.Vector.add = function (a, b, c) { return c ? c.set(a) : (c = a.copy()), c.add(b), c; }), (d.Vector.sub = function (a, b, c) { return c ? c.set(a) : (c = a.copy()), c.sub(b), c; }), (d.Vector.mult = function (a, b, c) { return c ? c.set(a) : (c = a.copy()), c.mult(b), c; }), (d.Vector.div = function (a, b, c) { return c ? c.set(a) : (c = a.copy()), c.div(b), c; }), (d.Vector.dot = function (a, b) { return a.dot(b); }), (d.Vector.cross = function (a, b) { return a.cross(b); }), (d.Vector.dist = function (a, b) { return a.dist(b); }), (d.Vector.lerp = function (a, b, c, d) { return ( d ? d.set(a) : (d = a.copy()), d.lerp(b, c), d ); }), (d.Vector.mag = function (a) { var b = a.x, c = a.y, d = a.z, e = b * b + c * c + d * d; return Math.sqrt(e); }), (b.exports = d.Vector); }, { "../core/constants": 41, "../core/core": 42, "./polargeometry": 72, }, ], 72: [ function (a, b, c) { b.exports = { degreesToRadians: function (a) { return (2 * Math.PI * a) / 360; }, radiansToDegrees: function (a) { return (360 * a) / (2 * Math.PI); }, }; }, {}, ], 73: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = !1, f = !1, g = 0, h = (function () { var a, b, c = 4294967296, d = 1664525, e = 1013904223; return { setSeed: function (d) { b = a = (null == d ? Math.random() * c : d) >>> 0; }, getSeed: function () { return a; }, rand: function () { return (b = (d * b + e) % c) / c; }, }; })(); (d.prototype.randomSeed = function (a) { h.setSeed(a), (e = !0), (f = !1); }), (d.prototype.random = function (a, b) { var c; if ( ((c = e ? h.rand() : Math.random()), void 0 === a) ) return c; if (void 0 === b) return a instanceof Array ? a[Math.floor(c * a.length)] : c * a; if (a > b) { var d = a; (a = b), (b = d); } return c * (b - a) + a; }), (d.prototype.randomGaussian = function (a, b) { var c, d, e, h; if (f) (c = g), (f = !1); else { do { (d = this.random(2) - 1), (e = this.random(2) - 1), (h = d * d + e * e); } while (h >= 1); (h = Math.sqrt((-2 * Math.log(h)) / h)), (c = d * h), (g = e * h), (f = !0); } var i = a || 0; return c * (b || 1) + i; }), (b.exports = d); }, { "../core/core": 42 }, ], 74: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("./polargeometry"), f = a("../core/constants"); (d.prototype._angleMode = f.RADIANS), (d.prototype.acos = function (a) { return this._angleMode === f.RADIANS ? Math.acos(a) : e.radiansToDegrees(Math.acos(a)); }), (d.prototype.asin = function (a) { return this._angleMode === f.RADIANS ? Math.asin(a) : e.radiansToDegrees(Math.asin(a)); }), (d.prototype.atan = function (a) { return this._angleMode === f.RADIANS ? Math.atan(a) : e.radiansToDegrees(Math.atan(a)); }), (d.prototype.atan2 = function (a, b) { return this._angleMode === f.RADIANS ? Math.atan2(a, b) : e.radiansToDegrees(Math.atan2(a, b)); }), (d.prototype.cos = function (a) { return this._angleMode === f.RADIANS ? Math.cos(a) : Math.cos(this.radians(a)); }), (d.prototype.sin = function (a) { return this._angleMode === f.RADIANS ? Math.sin(a) : Math.sin(this.radians(a)); }), (d.prototype.tan = function (a) { return this._angleMode === f.RADIANS ? Math.tan(a) : Math.tan(this.radians(a)); }), (d.prototype.degrees = function (a) { return e.radiansToDegrees(a); }), (d.prototype.radians = function (a) { return e.degreesToRadians(a); }), (d.prototype.angleMode = function (a) { (a !== f.DEGREES && a !== f.RADIANS) || (this._angleMode = a); }), (b.exports = d); }, { "../core/constants": 41, "../core/core": 42, "./polargeometry": 72, }, ], 75: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.textAlign = function (a, b) { return this._renderer.textAlign.apply( this._renderer, arguments ); }), (d.prototype.textLeading = function (a) { return this._renderer.textLeading.apply( this._renderer, arguments ); }), (d.prototype.textSize = function (a) { return this._renderer.textSize.apply( this._renderer, arguments ); }), (d.prototype.textStyle = function (a) { return this._renderer.textStyle.apply( this._renderer, arguments ); }), (d.prototype.textWidth = function (a) { return 0 === a.length ? 0 : this._renderer.textWidth.apply( this._renderer, arguments ); }), (d.prototype.textAscent = function () { return this._renderer.textAscent(); }), (d.prototype.textDescent = function () { return this._renderer.textDescent(); }), (d.prototype._updateTextMetrics = function () { return this._renderer._updateTextMetrics(); }), (b.exports = d); }, { "../core/core": 42 }, ], 76: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("../core/constants"); a("../core/error_helpers"), (d.prototype.text = function (a, b, c, d, e) { return this._renderer._doFill || this._renderer._doStroke ? this._renderer.text.apply( this._renderer, arguments ) : this; }), (d.prototype.textFont = function (a, b) { if (arguments.length) { if (!a) throw Error("null font passed to textFont"); return ( this._renderer._setProperty("_textFont", a), b && (this._renderer._setProperty( "_textSize", b ), this._renderer._setProperty( "_textLeading", b * e._DEFAULT_LEADMULT )), this._renderer._applyTextProperties() ); } return this._renderer._textFont; }), (b.exports = d); }, { "../core/constants": 41, "../core/core": 42, "../core/error_helpers": 45, }, ], 77: [ function (a, b, c) { "use strict"; function d(a, b) { for ( var c = h(b, { sampleFactor: 0.1, simplifyThreshold: 0, }), d = n(a, 0, 1), f = d / (d * c.sampleFactor), g = [], i = 0; i < d; i += f ) g.push(n(a, i)); return ( c.simplifyThreshold && e(g, c.simplifyThreshold), g ); } function e(a, b) { b = void 0 === b ? 0 : b; for ( var c = 0, d = a.length - 1; a.length > 3 && d >= 0; --d ) j(i(a, d - 1), i(a, d), i(a, d + 1), b) && (a.splice(d % a.length, 1), c++); return c; } function f(a) { for (var b, c = [], d = 0; d < a.length; d++) "M" === a[d].type && (b && c.push(b), (b = [])), b.push(g(a[d])); return c.push(b), c; } function g(a) { var b = [a.type]; return ( "M" === a.type || "L" === a.type ? b.push(a.x, a.y) : "C" === a.type ? b.push(a.x1, a.y1, a.x2, a.y2, a.x, a.y) : "Q" === a.type && b.push(a.x1, a.y1, a.x, a.y), b ); } function h(a, b) { if ("object" != typeof a) a = b; else for (var c in b) void 0 === a[c] && (a[c] = b[c]); return a; } function i(a, b) { var c = a.length; return a[b < 0 ? (b % c) + c : b % c]; } function j(a, b, c, d) { if (!d) return 0 === k(a, b, c); void 0 === j.tmpPoint1 && ((j.tmpPoint1 = []), (j.tmpPoint2 = [])); var e = j.tmpPoint1, f = j.tmpPoint2; (e.x = b.x - a.x), (e.y = b.y - a.y), (f.x = c.x - b.x), (f.y = c.y - b.y); var g = e.x * f.x + e.y * f.y, h = Math.sqrt(e.x * e.x + e.y * e.y), i = Math.sqrt(f.x * f.x + f.y * f.y); return Math.acos(g / (h * i)) < d; } function k(a, b, c) { return ( (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]) ); } function l(a, b, c, d, e, f, g, h, i) { var j = 1 - i, k = Math.pow(j, 3), l = Math.pow(j, 2), m = i * i, n = m * i, o = k * a + 3 * l * i * c + 3 * j * i * i * e + n * g, p = k * b + 3 * l * i * d + 3 * j * i * i * f + n * h, q = a + 2 * i * (c - a) + m * (e - 2 * c + a), r = b + 2 * i * (d - b) + m * (f - 2 * d + b), s = c + 2 * i * (e - c) + m * (g - 2 * e + c), t = d + 2 * i * (f - d) + m * (h - 2 * f + d), u = j * a + i * c, v = j * b + i * d, w = j * e + i * g, x = j * f + i * h, y = 90 - (180 * Math.atan2(q - s, r - t)) / Math.PI; return ( (q > s || r < t) && (y += 180), { x: o, y: p, m: { x: q, y: r }, n: { x: s, y: t }, start: { x: u, y: v }, end: { x: w, y: x }, alpha: y, } ); } function m(a, b, c, d, e, f, g, h, i) { return null == i ? u(a, b, c, d, e, f, g, h) : l( a, b, c, d, e, f, g, h, v(a, b, c, d, e, f, g, h, i) ); } function n(a, b, c) { a = p(a); for ( var d, e, f, g, h, i = "", j = {}, k = 0, n = 0, o = a.length; n < o; n++ ) { if (((f = a[n]), "M" === f[0])) (d = +f[1]), (e = +f[2]); else { if ( ((g = m( d, e, f[1], f[2], f[3], f[4], f[5], f[6] )), k + g > b && !c) ) return ( (h = m( d, e, f[1], f[2], f[3], f[4], f[5], f[6], b - k )), { x: h.x, y: h.y, alpha: h.alpha } ); (k += g), (d = +f[5]), (e = +f[6]); } i += f.shift() + f; } return ( (j.end = i), (h = c ? k : l( d, e, f[0], f[1], f[2], f[3], f[4], f[5], 1 )), h.alpha && (h = { x: h.x, y: h.y, alpha: h.alpha }), h ); } function o(a) { var b = [], c = 0, d = 0, e = 0, f = 0, g = 0; "M" === a[0][0] && ((c = +a[0][1]), (d = +a[0][2]), (e = c), (f = d), g++, (b[0] = ["M", c, d])); for ( var h, i, j, k = 3 === a.length && "M" === a[0][0] && "R" === a[1][0].toUpperCase() && "Z" === a[2][0].toUpperCase(), l = g, m = a.length; l < m; l++ ) { if ( (b.push((i = [])), (j = a[l]), j[0] !== String.prototype.toUpperCase.call(j[0])) ) switch ( ((i[0] = String.prototype.toUpperCase.call( j[0] )), i[0]) ) { case "A": (i[1] = j[1]), (i[2] = j[2]), (i[3] = j[3]), (i[4] = j[4]), (i[5] = j[5]), (i[6] = +(j[6] + c)), (i[7] = +(j[7] + d)); break; case "V": i[1] = +j[1] + d; break; case "H": i[1] = +j[1] + c; break; case "R": h = [c, d].concat(j.slice(1)); for ( var n = 2, o = h.length; n < o; n++ ) (h[n] = +h[n] + c), (h[++n] = +h[n] + d); b.pop(), (b = b.concat(r(h, k))); break; case "M": (e = +j[1] + c), (f = +j[2] + d); break; default: for (n = 1, o = j.length; n < o; n++) i[n] = +j[n] + (n % 2 ? c : d); } else if ("R" === j[0]) (h = [c, d].concat(j.slice(1))), b.pop(), (b = b.concat(r(h, k))), (i = ["R"].concat(j.slice(-2))); else for (var p = 0, q = j.length; p < q; p++) i[p] = j[p]; switch (i[0]) { case "Z": (c = e), (d = f); break; case "H": c = i[1]; break; case "V": d = i[1]; break; case "M": (e = i[i.length - 2]), (f = i[i.length - 1]); break; default: (c = i[i.length - 2]), (d = i[i.length - 1]); } } return b; } function p(a, b) { for ( var c = o(a), d = b && o(b), e = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null, }, f = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null, }, g = function (a, b, c) { var d, e, f = { T: 1, Q: 1 }; if (!a) return [ "C", b.x, b.y, b.x, b.y, b.x, b.y, ]; switch ( ((a[0] in f) || (b.qx = b.qy = null), a[0]) ) { case "M": (b.X = a[1]), (b.Y = a[2]); break; case "A": a = ["C"].concat( q.apply( 0, [b.x, b.y].concat( a.slice(1) ) ) ); break; case "S": "C" === c || "S" === c ? ((d = 2 * b.x - b.bx), (e = 2 * b.y - b.by)) : ((d = b.x), (e = b.y)), (a = ["C", d, e].concat( a.slice(1) )); break; case "T": "Q" === c || "T" === c ? ((b.qx = 2 * b.x - b.qx), (b.qy = 2 * b.y - b.qy)) : ((b.qx = b.x), (b.qy = b.y)), (a = ["C"].concat( t( b.x, b.y, b.qx, b.qy, a[1], a[2] ) )); break; case "Q": (b.qx = a[1]), (b.qy = a[2]), (a = ["C"].concat( t( b.x, b.y, a[1], a[2], a[3], a[4] ) )); break; case "L": a = ["C"].concat( s(b.x, b.y, a[1], a[2]) ); break; case "H": a = ["C"].concat( s(b.x, b.y, a[1], b.y) ); break; case "V": a = ["C"].concat( s(b.x, b.y, b.x, a[1]) ); break; case "Z": a = ["C"].concat( s(b.x, b.y, b.X, b.Y) ); } return a; }, h = function (a, b) { if (a[b].length > 7) { a[b].shift(); for (var e = a[b]; e.length; ) (j[b] = "A"), d && (k[b] = "A"), a.splice( b++, 0, ["C"].concat(e.splice(0, 6)) ); a.splice(b, 1), (p = Math.max( c.length, (d && d.length) || 0 )); } }, i = function (a, b, e, f, g) { a && b && "M" === a[g][0] && "M" !== b[g][0] && (b.splice(g, 0, ["M", f.x, f.y]), (e.bx = 0), (e.by = 0), (e.x = a[g][1]), (e.y = a[g][2]), (p = Math.max( c.length, (d && d.length) || 0 ))); }, j = [], k = [], l = "", m = "", n = 0, p = Math.max(c.length, (d && d.length) || 0); n < p; n++ ) { c[n] && (l = c[n][0]), "C" !== l && ((j[n] = l), n && (m = j[n - 1])), (c[n] = g(c[n], e, m)), "A" !== j[n] && "C" === l && (j[n] = "C"), h(c, n), d && (d[n] && (l = d[n][0]), "C" !== l && ((k[n] = l), n && (m = k[n - 1])), (d[n] = g(d[n], f, m)), "A" !== k[n] && "C" === l && (k[n] = "C"), h(d, n)), i(c, d, e, f, n), i(d, c, f, e, n); var r = c[n], u = d && d[n], v = r.length, w = d && u.length; (e.x = r[v - 2]), (e.y = r[v - 1]), (e.bx = parseFloat(r[v - 4]) || e.x), (e.by = parseFloat(r[v - 3]) || e.y), (f.bx = d && (parseFloat(u[w - 4]) || f.x)), (f.by = d && (parseFloat(u[w - 3]) || f.y)), (f.x = d && u[w - 2]), (f.y = d && u[w - 1]); } return d ? [c, d] : c; } function q(a, b, c, d, e, f, g, h, i, j) { var k, l, m, n, o, p = Math.PI, r = (120 * p) / 180, s = (p / 180) * (+e || 0), t = [], u = function (a, b, c) { return { x: a * Math.cos(c) - b * Math.sin(c), y: a * Math.sin(c) + b * Math.cos(c), }; }; if (j) (k = j[0]), (l = j[1]), (m = j[2]), (n = j[3]); else { (o = u(a, b, -s)), (a = o.x), (b = o.y), (o = u(h, i, -s)), (h = o.x), (i = o.y); var v = (a - h) / 2, w = (b - i) / 2, x = (v * v) / (c * c) + (w * w) / (d * d); x > 1 && ((x = Math.sqrt(x)), (c *= x), (d *= x)); var y = c * c, z = d * d, A = (f === g ? -1 : 1) * Math.sqrt( Math.abs( (y * z - y * w * w - z * v * v) / (y * w * w + z * v * v) ) ); (m = (A * c * w) / d + (a + h) / 2), (n = (A * -d * v) / c + (b + i) / 2), (k = Math.asin(((b - n) / d).toFixed(9))), (l = Math.asin(((i - n) / d).toFixed(9))), (k = a < m ? p - k : k), (l = h < m ? p - l : l), k < 0 && (k = 2 * p + k), l < 0 && (l = 2 * p + l), g && k > l && (k -= 2 * p), !g && l > k && (l -= 2 * p); } var B = l - k; if (Math.abs(B) > r) { var C = l, D = h, E = i; (l = k + r * (g && l > k ? 1 : -1)), (h = m + c * Math.cos(l)), (i = n + d * Math.sin(l)), (t = q(h, i, c, d, e, 0, g, D, E, [ l, C, m, n, ])); } B = l - k; var F = Math.cos(k), G = Math.sin(k), H = Math.cos(l), I = Math.sin(l), J = Math.tan(B / 4), K = (4 / 3) * c * J, L = (4 / 3) * d * J, M = [a, b], N = [a + K * G, b - L * F], O = [h + K * I, i - L * H], P = [h, i]; if ( ((N[0] = 2 * M[0] - N[0]), (N[1] = 2 * M[1] - N[1]), j) ) return [N, O, P].concat(t); t = [N, O, P].concat(t).join().split(","); for (var Q = [], R = 0, S = t.length; R < S; R++) Q[R] = R % 2 ? u(t[R - 1], t[R], s).y : u(t[R], t[R + 1], s).x; return Q; } function r(a, b) { for ( var c = [], d = 0, e = a.length; e - 2 * !b > d; d += 2 ) { var f = [ { x: +a[d - 2], y: +a[d - 1] }, { x: +a[d], y: +a[d + 1] }, { x: +a[d + 2], y: +a[d + 3] }, { x: +a[d + 4], y: +a[d + 5] }, ]; b ? d ? e - 4 === d ? (f[3] = { x: +a[0], y: +a[1] }) : e - 2 === d && ((f[2] = { x: +a[0], y: +a[1] }), (f[3] = { x: +a[2], y: +a[3] })) : (f[0] = { x: +a[e - 2], y: +a[e - 1] }) : e - 4 === d ? (f[3] = f[2]) : d || (f[0] = { x: +a[d], y: +a[d + 1] }), c.push([ "C", (-f[0].x + 6 * f[1].x + f[2].x) / 6, (-f[0].y + 6 * f[1].y + f[2].y) / 6, (f[1].x + 6 * f[2].x - f[3].x) / 6, (f[1].y + 6 * f[2].y - f[3].y) / 6, f[2].x, f[2].y, ]); } return c; } function s(a, b, c, d) { return [a, b, c, d, c, d]; } function t(a, b, c, d, e, f) { var g = 1 / 3, h = 2 / 3; return [ g * a + h * c, g * b + h * d, g * e + h * c, g * f + h * d, e, f, ]; } function u(a, b, c, d, e, f, g, h, i) { null == i && (i = 1), (i = i > 1 ? 1 : i < 0 ? 0 : i); for ( var j = i / 2, k = 12, l = [ -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816, ], m = 0, n = [ 0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472, ], o = 0; o < k; o++ ) { var p = j * l[o] + j, q = w(p, a, c, e, g), r = w(p, b, d, f, h), s = q * q + r * r; m += n[o] * Math.sqrt(s); } return j * m; } function v(a, b, c, d, e, f, g, h, i) { if (!(i < 0 || u(a, b, c, d, e, f, g, h) < i)) { var j, k = 1, l = k / 2, m = k - l, n = 0.01; for ( j = u(a, b, c, d, e, f, g, h, m); Math.abs(j - i) > n; ) (l /= 2), (m += (j < i ? 1 : -1) * l), (j = u(a, b, c, d, e, f, g, h, m)); return m; } } function w(a, b, c, d, e) { return ( a * (a * (-3 * b + 9 * c - 9 * d + 3 * e) + 6 * b - 12 * c + 6 * d) - 3 * b + 3 * c ); } function x() { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; b = a.length; for (var c = ""; b--; ) c += a[b] === Object(a[b]) ? JSON.stringify(a[b]) : a[b]; return c; } var y = a("../core/core"), z = a("../core/constants"); (y.Font = function (a) { (this.parent = a), (this.cache = {}), (this.font = void 0); }), (y.Font.prototype.list = function () { throw "not yet implemented"; }), (y.Font.prototype.textBounds = function ( a, b, c, d, e ) { (b = void 0 !== b ? b : 0), (c = void 0 !== c ? c : 0), (d = d || this.parent._renderer._textSize); var f = (e && e.renderer && e.renderer._pInst) || this.parent, g = f._renderer.drawingContext, h = g.textAlign || z.LEFT, i = g.textBaseline || z.BASELINE, j = this.cache[ x("textBounds", a, b, c, d, h, i) ]; if (!j) { var k, l, m, n, o = [], p = [], q = this, r = this._scale(d); this.font.forEachGlyph( a, b, c, d, e, function (a, b, c, e) { o.push(b), p.push(c); var f = a.getMetrics(); "space" !== a.name && 32 !== a.unicode ? (o.push(b + f.xMax * r), p.push(c + -f.yMin * r), p.push(c + -f.yMax * r)) : o.push( b + q.font.charToGlyph(" ") .advanceWidth * q._scale(d) ); } ), (k = Math.min.apply(null, o)), (l = Math.min.apply(null, p)), (m = Math.max.apply(null, o)), (n = Math.max.apply(null, p)), (j = { x: k, y: l, h: n - l, w: m - k, advance: k - b, }); var s = j.w + j.advance, t = this._handleAlignment( f, g, a, j.x, j.y, s ); (j.x = t.x), (j.y = t.y), (this.cache[ x("textBounds", a, b, c, d, h, i) ] = j); } return j; }), (y.Font.prototype.textToPoints = function ( a, b, c, e, g ) { var h = 0, i = [], j = this._getGlyphs(a); e = e || this.parent._renderer._textSize; for (var k = 0; k < j.length; k++) { if ("space" !== j[k].name) for ( var l = j[k].getPath(b, c, e), m = f(l.commands), n = 0; n < m.length; n++ ) for ( var o = d(m[n], g), p = 0; p < o.length; p++ ) (o[p].x += h), i.push(o[p]); h += j[k].advanceWidth * this._scale(e); } return i; }), (y.Font.prototype._getGlyphs = function (a) { return this.font.stringToGlyphs(a); }), (y.Font.prototype._getPath = function (a, b, c, d) { var e = (d && d.renderer && d.renderer._pInst) || this.parent, f = e._renderer.drawingContext, g = this._handleAlignment(e, f, a, b, c); return this.font.getPath( a, g.x, g.y, e._renderer._textSize, d ); }), (y.Font.prototype._getPathData = function (a, b, c, d) { var e = 3; return ( "string" == typeof a && arguments.length > 2 ? (a = this._getPath(a, b, c, d)) : "object" == typeof b && (d = b), d && "number" == typeof d.decimals && (e = d.decimals), a.toPathData(e) ); }), (y.Font.prototype._getSVG = function (a, b, c, d) { var e = 3; return ( "string" == typeof a && arguments.length > 2 ? (a = this._getPath(a, b, c, d)) : "object" == typeof b && (d = b), d && ("number" == typeof d.decimals && (e = d.decimals), "number" == typeof d.strokeWidth && (a.strokeWidth = d.strokeWidth), void 0 !== d.fill && (a.fill = d.fill), void 0 !== d.stroke && (a.stroke = d.stroke)), a.toSVG(e) ); }), (y.Font.prototype._renderPath = function (a, b, c, d) { var e, f = (d && d.renderer) || this.parent._renderer, g = f.drawingContext; (e = "object" == typeof a && a.commands ? a.commands : this._getPath(a, b, c, d).commands), g.beginPath(); for (var h = 0; h < e.length; h += 1) { var i = e[h]; "M" === i.type ? g.moveTo(i.x, i.y) : "L" === i.type ? g.lineTo(i.x, i.y) : "C" === i.type ? g.bezierCurveTo( i.x1, i.y1, i.x2, i.y2, i.x, i.y ) : "Q" === i.type ? g.quadraticCurveTo(i.x1, i.y1, i.x, i.y) : "Z" === i.type && g.closePath(); } return ( f._doStroke && f._strokeSet && g.stroke(), f._doFill && ((g.fillStyle = f._fillSet ? g.fillStyle : z._DEFAULT_TEXT_FILL), g.fill()), this ); }), (y.Font.prototype._textWidth = function (a, b) { if (" " === a) return ( this.font.charToGlyph(" ").advanceWidth * this._scale(b) ); var c = this.textBounds(a, 0, 0, b); return c.w + c.advance; }), (y.Font.prototype._textAscent = function (a) { return this.font.ascender * this._scale(a); }), (y.Font.prototype._textDescent = function (a) { return -this.font.descender * this._scale(a); }), (y.Font.prototype._scale = function (a) { return ( (1 / this.font.unitsPerEm) * (a || this.parent._renderer._textSize) ); }), (y.Font.prototype._handleAlignment = function ( a, b, c, d, e, f ) { var g = a._renderer._textSize, h = this._textAscent(g), i = this._textDescent(g); return ( (f = void 0 !== f ? f : this._textWidth(c, g)), b.textAlign === z.CENTER ? (d -= f / 2) : b.textAlign === z.RIGHT && (d -= f), b.textBaseline === z.TOP ? (e += h) : b.textBaseline === z._CTX_MIDDLE ? (e += h / 2) : b.textBaseline === z.BOTTOM && (e -= i), { x: d, y: e } ); }), (b.exports = y.Font); }, { "../core/constants": 41, "../core/core": 42 }, ], 78: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.append = function (a, b) { return a.push(b), a; }), (d.prototype.arrayCopy = function (a, b, c, d, e) { var f, g; void 0 !== e ? ((g = Math.min(e, a.length)), (f = d), (a = a.slice(b, g + b))) : (void 0 !== c ? ((g = c), (g = Math.min(g, a.length))) : (g = a.length), (f = 0), (c = b), (a = a.slice(0, g))), Array.prototype.splice.apply( c, [f, g].concat(a) ); }), (d.prototype.concat = function (a, b) { return a.concat(b); }), (d.prototype.reverse = function (a) { return a.reverse(); }), (d.prototype.shorten = function (a) { return a.pop(), a; }), (d.prototype.shuffle = function (a, b) { var c = ArrayBuffer && ArrayBuffer.isView && ArrayBuffer.isView(a); a = b || c ? a : a.slice(); for (var d, e, f = a.length; f > 1; ) (d = (Math.random() * f) | 0), (e = a[--f]), (a[f] = a[d]), (a[d] = e); return a; }), (d.prototype.sort = function (a, b) { var c = b ? a.slice(0, Math.min(b, a.length)) : a, d = b ? a.slice(Math.min(b, a.length)) : []; return ( (c = "string" == typeof c[0] ? c.sort() : c.sort(function (a, b) { return a - b; })), c.concat(d) ); }), (d.prototype.splice = function (a, b, c) { return ( Array.prototype.splice.apply( a, [c, 0].concat(b) ), a ); }), (d.prototype.subset = function (a, b, c) { return void 0 !== c ? a.slice(b, b + c) : a.slice(b, a.length); }), (b.exports = d); }, { "../core/core": 42 }, ], 79: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.float = function (a) { return a instanceof Array ? a.map(parseFloat) : parseFloat(a); }), (d.prototype.int = function (a, b) { return ( (b = b || 10), "string" == typeof a ? parseInt(a, b) : "number" == typeof a ? 0 | a : "boolean" == typeof a ? a ? 1 : 0 : a instanceof Array ? a.map(function (a) { return d.prototype.int(a, b); }) : void 0 ); }), (d.prototype.str = function (a) { return a instanceof Array ? a.map(d.prototype.str) : String(a); }), (d.prototype.boolean = function (a) { return "number" == typeof a ? 0 !== a : "string" == typeof a ? "true" === a.toLowerCase() : "boolean" == typeof a ? a : a instanceof Array ? a.map(d.prototype.boolean) : void 0; }), (d.prototype.byte = function (a) { var b = d.prototype.int(a, 10); return "number" == typeof b ? ((b + 128) % 256) - 128 : b instanceof Array ? b.map(d.prototype.byte) : void 0; }), (d.prototype.char = function (a) { return "number" != typeof a || isNaN(a) ? a instanceof Array ? a.map(d.prototype.char) : "string" == typeof a ? d.prototype.char(parseInt(a, 10)) : void 0 : String.fromCharCode(a); }), (d.prototype.unchar = function (a) { return "string" == typeof a && 1 === a.length ? a.charCodeAt(0) : a instanceof Array ? a.map(d.prototype.unchar) : void 0; }), (d.prototype.hex = function (a, b) { if ( ((b = void 0 === b || null === b ? (b = 8) : b), a instanceof Array) ) return a.map(function (a) { return d.prototype.hex(a, b); }); if ("number" == typeof a) { a < 0 && (a = 4294967295 + a + 1); for ( var c = Number(a) .toString(16) .toUpperCase(); c.length < b; ) c = "0" + c; return ( c.length >= b && (c = c.substring( c.length - b, c.length )), c ); } }), (d.prototype.unhex = function (a) { return a instanceof Array ? a.map(d.prototype.unhex) : parseInt("0x" + a, 16); }), (b.exports = d); }, { "../core/core": 42 }, ], 80: [ function (a, b, c) { "use strict"; function d() { var a = arguments[0], b = a < 0, c = b ? a.toString().substring(1) : a.toString(), d = c.indexOf("."), e = d !== -1 ? c.substring(0, d) : c, f = d !== -1 ? c.substring(d + 1) : "", g = b ? "-" : ""; if (3 === arguments.length) { var h = ""; (d !== -1 || arguments[2] - f.length > 0) && (h = "."), f.length > arguments[2] && (f = f.substring(0, arguments[2])); for (var i = 0; i < arguments[1] - e.length; i++) g += "0"; (g += e), (g += h), (g += f); for (var j = 0; j < arguments[2] - f.length; j++) g += "0"; return g; } for ( var k = 0; k < Math.max(arguments[1] - e.length, 0); k++ ) g += "0"; return (g += c); } function e() { var a = arguments[0].toString(), b = a.indexOf("."), c = b !== -1 ? a.substring(b) : "", d = b !== -1 ? a.substring(0, b) : a; if ( ((d = d .toString() .replace(/\B(?=(\d{3})+(?!\d))/g, ",")), 0 === arguments[1]) ) c = ""; else if (void 0 !== arguments[1]) if (arguments[1] > c.length) { c += b === -1 ? "." : ""; for ( var e = arguments[1] - c.length + 1, f = 0; f < e; f++ ) c += "0"; } else c = c.substring(0, arguments[1] + 1); return d + c; } function f() { return parseFloat(arguments[0]) > 0 ? "+" + arguments[0].toString() : arguments[0].toString(); } function g() { return parseFloat(arguments[0]) > 0 ? " " + arguments[0].toString() : arguments[0].toString(); } var h = a("../core/core"); (h.prototype.join = function (a, b) { return a.join(b); }), (h.prototype.match = function (a, b) { return a.match(b); }), (h.prototype.matchAll = function (a, b) { for ( var c = new RegExp(b, "g"), d = c.exec(a), e = []; null !== d; ) e.push(d), (d = c.exec(a)); return e; }), (h.prototype.nf = function () { if (arguments[0] instanceof Array) { var a = arguments[1], b = arguments[2]; return arguments[0].map(function (c) { return d(c, a, b); }); } return "[object Arguments]" === Object.prototype.toString.call(arguments[0]) ? 3 === arguments[0].length ? this.nf( arguments[0][0], arguments[0][1], arguments[0][2] ) : 2 === arguments[0].length ? this.nf(arguments[0][0], arguments[0][1]) : this.nf(arguments[0][0]) : d.apply(this, arguments); }), (h.prototype.nfc = function () { if (arguments[0] instanceof Array) { var a = arguments[1]; return arguments[0].map(function (b) { return e(b, a); }); } return e.apply(this, arguments); }), (h.prototype.nfp = function () { var a = this.nf.apply(this, arguments); return a instanceof Array ? a.map(f) : f(a); }), (h.prototype.nfs = function () { var a = this.nf.apply(this, arguments); return a instanceof Array ? a.map(g) : g(a); }), (h.prototype.split = function (a, b) { return a.split(b); }), (h.prototype.splitTokens = function () { var a, b, c, d; return ( (d = arguments[1]), arguments.length > 1 ? ((c = /\]/g.exec(d)), (b = /\[/g.exec(d)), b && c ? ((d = d.slice(0, c.index) + d.slice(c.index + 1)), (b = /\[/g.exec(d)), (d = d.slice(0, b.index) + d.slice(b.index + 1)), (a = new RegExp( "[\\[" + d + "\\]]", "g" ))) : c ? ((d = d.slice(0, c.index) + d.slice(c.index + 1)), (a = new RegExp( "[" + d + "\\]]", "g" ))) : b ? ((d = d.slice(0, b.index) + d.slice(b.index + 1)), (a = new RegExp( "[" + d + "\\[]", "g" ))) : (a = new RegExp( "[" + d + "]", "g" ))) : (a = /\s/g), arguments[0].split(a).filter(function (a) { return a; }) ); }), (h.prototype.trim = function (a) { return a instanceof Array ? a.map(this.trim) : a.trim(); }), (b.exports = h); }, { "../core/core": 42 }, ], 81: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.day = function () { return new Date().getDate(); }), (d.prototype.hour = function () { return new Date().getHours(); }), (d.prototype.minute = function () { return new Date().getMinutes(); }), (d.prototype.millis = function () { return window.performance.now(); }), (d.prototype.month = function () { return new Date().getMonth() + 1; }), (d.prototype.second = function () { return new Date().getSeconds(); }), (d.prototype.year = function () { return new Date().getFullYear(); }), (b.exports = d); }, { "../core/core": 42 }, ], 82: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.camera = function (a, b, c) { this._renderer.translate(-a, -b, -c); }), (d.prototype.perspective = function (a, b, c, e) { (a = a || (60 / 180) * this.PI), (b = b || this.width / this.height), (c = c || (this.height / 2 / this.tan(a / 2)) * 0.1), (e = e || (this.height / 2 / this.tan(a / 2)) * 10), (this._renderer.uPMatrix = d.Matrix.identity()), this._renderer.uPMatrix.perspective(a, b, c, e), (this._renderer._curCamera = "custom"); }), (d.prototype.ortho = function (a, b, c, e, f, g) { (a = a || -this.width / 2), (b = b || this.width / 2), (c = c || -this.height / 2), (e = e || this.height / 2), (f = f || 0), (g = g || Math.max(this.width, this.height)), (this._renderer.uPMatrix = d.Matrix.identity()), this._renderer.uPMatrix.ortho(a, b, c, e, f, g), (this._renderer._curCamera = "custom"); }), (b.exports = d); }, { "../core/core": 42 }, ], 83: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.orbitControl = function () { return ( this.mouseIsPressed && (this.rotateY( (this.mouseX - this.width / 2) / (this.width / 2) ), this.rotateX( (this.mouseY - this.height / 2) / (this.width / 2) )), this ); }), (b.exports = d); }, { "../core/core": 42 }, ], 84: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.ambientLight = function (a, b, c, d) { var e = this._renderer.GL, f = this._renderer._getShader( "lightVert", "lightTextureFrag" ); e.useProgram(f), (f.uAmbientColor = e.getUniformLocation( f, "uAmbientColor[" + this._renderer.ambientLightCount + "]" )); var g = this._renderer._pInst.color.apply( this._renderer._pInst, arguments ), h = g._array; return ( e.uniform3f(f.uAmbientColor, h[0], h[1], h[2]), (f.uMaterialColor = e.getUniformLocation( f, "uMaterialColor" )), e.uniform4f(f.uMaterialColor, 1, 1, 1, 1), this._renderer.ambientLightCount++, (f.uAmbientLightCount = e.getUniformLocation( f, "uAmbientLightCount" )), e.uniform1i( f.uAmbientLightCount, this._renderer.ambientLightCount ), this ); }), (d.prototype.directionalLight = function ( a, b, c, d, e, f, g ) { var h = this._renderer.GL, i = this._renderer._getShader( "lightVert", "lightTextureFrag" ); h.useProgram(i), (i.uDirectionalColor = h.getUniformLocation( i, "uDirectionalColor[" + this._renderer.directionalLightCount + "]" )); var j = this._renderer._pInst.color.apply( this._renderer._pInst, [a, b, c] ), k = j._array; h.uniform3f(i.uDirectionalColor, k[0], k[1], k[2]); for ( var l, m, n, o = new Array(arguments.length), p = 0; p < o.length; ++p ) o[p] = arguments[p]; if ("number" == typeof o[o.length - 1]) (l = o[o.length - 3]), (m = o[o.length - 2]), (n = o[o.length - 1]); else try { (l = o[o.length - 1].x), (m = o[o.length - 1].y), (n = o[o.length - 1].z); } catch (a) { throw a; } return ( (i.uLightingDirection = h.getUniformLocation( i, "uLightingDirection[" + this._renderer.directionalLightCount + "]" )), h.uniform3f(i.uLightingDirection, l, m, n), (i.uMaterialColor = h.getUniformLocation( i, "uMaterialColor" )), h.uniform4f(i.uMaterialColor, 1, 1, 1, 1), this._renderer.directionalLightCount++, (i.uDirectionalLightCount = h.getUniformLocation( i, "uDirectionalLightCount" )), h.uniform1i( i.uDirectionalLightCount, this._renderer.directionalLightCount ), this ); }), (d.prototype.pointLight = function ( a, b, c, d, e, f, g ) { var h = this._renderer.GL, i = this._renderer._getShader( "lightVert", "lightTextureFrag" ); h.useProgram(i), (i.uPointLightColor = h.getUniformLocation( i, "uPointLightColor[" + this._renderer.pointLightCount + "]" )); var j = this._renderer._pInst.color.apply( this._renderer._pInst, [a, b, c] ), k = j._array; h.uniform3f(i.uPointLightColor, k[0], k[1], k[2]); for ( var l, m, n, o = new Array(arguments.length), p = 0; p < o.length; ++p ) o[p] = arguments[p]; if ("number" == typeof o[o.length - 1]) (l = o[o.length - 3]), (m = o[o.length - 2]), (n = o[o.length - 1]); else try { (l = o[o.length - 1].x), (m = o[o.length - 1].y), (n = o[o.length - 1].z); } catch (a) { throw a; } return ( (i.uPointLightLocation = h.getUniformLocation( i, "uPointLightLocation[" + this._renderer.pointLightCount + "]" )), h.uniform3f(i.uPointLightLocation, l, m, n), (i.uMaterialColor = h.getUniformLocation( i, "uMaterialColor" )), h.uniform4f(i.uMaterialColor, 1, 1, 1, 1), this._renderer.pointLightCount++, (i.uPointLightCount = h.getUniformLocation( i, "uPointLightCount" )), h.uniform1i( i.uPointLightCount, this._renderer.pointLightCount ), this ); }), (b.exports = d); }, { "../core/core": 42 }, ], 85: [ function (a, b, c) { "use strict"; function d(a, b) { for ( var c = { v: [], vt: [], vn: [] }, d = {}, f = 0; f < b.length; ++f ) { var g = b[f].trim().split(/\b\s+/); if (g.length > 0) if ("v" === g[0] || "vn" === g[0]) { var h = new e.Vector( parseFloat(g[1]), parseFloat(g[2]), parseFloat(g[3]) ); c[g[0]].push(h); } else if ("vt" === g[0]) { var i = [ parseFloat(g[1]), parseFloat(g[2]), ]; c[g[0]].push(i); } else if ("f" === g[0]) for (var j = 3; j < g.length; ++j) { for ( var k = [], l = [1, j - 1, j], m = 0; m < l.length; ++m ) { var n = g[l[m]], o = 0; if (void 0 !== d[n]) o = d[n]; else { for ( var p = n.split("/"), q = 0; q < p.length; q++ ) p[q] = parseInt(p[q]) - 1; (o = d[n] = a.vertices.length), a.vertices.push( c.v[p[0]].copy() ), c.vt[p[1]] ? a.uvs.push( c.vt[p[1]].slice() ) : a.uvs.push([0, 0]), c.vn[p[2]] && a.vertexNormals.push( c.vn[p[2]].copy() ); } k.push(o); } a.faces.push(k); } } return ( 0 === a.vertexNormals.length && a.computeNormals(), a ); } var e = a("../core/core"); a("./p5.Geometry"), (e.prototype.loadModel = function () { var a, b, c, f = arguments[0]; "boolean" == typeof arguments[1] ? ((a = arguments[1]), (b = arguments[2]), (c = arguments[3])) : ((a = !1), (b = arguments[1]), (c = arguments[2])); var g = new e.Geometry(); return ( (g.gid = f + "|" + a), this.loadStrings( f, function (c) { d(g, c), a && g.normalize(), "function" == typeof b && b(g); }.bind(this), c ), g ); }), (e.prototype.model = function (a) { a.vertices.length > 0 && (this._renderer.geometryInHash(a.gid) || this._renderer.createBuffers(a.gid, a), this._renderer.drawBuffers(a.gid)); }), (b.exports = e); }, { "../core/core": 42, "./p5.Geometry": 87 }, ], 86: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.prototype.normalMaterial = function () { return ( this._renderer._getShader( "normalVert", "normalFrag" ), this ); }), (d.prototype.texture = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = this._renderer.GL; this._renderer.drawMode = "texture"; var e = this._renderer._getShader( "lightVert", "lightTextureFrag" ); c.useProgram(e); var f; if (a[0].isTexture) a[0] instanceof d.Graphics || (void 0 !== d.MediaElement && a[0] instanceof d.MediaElement) ? (f = a[0].elt) : a[0] instanceof d.Image && (f = a[0].canvas), this._renderer._bind.call( this, a[0].tex, f ); else { if (a[0] instanceof d.Image) f = a[0].canvas; else if ( void 0 !== d.MediaElement && a[0] instanceof d.MediaElement ) { if (!a[0].loadedmetadata) return; f = a[0].elt; } else a[0] instanceof d.Graphics && (f = a[0].elt); var g = c.createTexture(); a[0]._setProperty("tex", g), a[0]._setProperty("isTexture", !0), this._renderer._bind.call(this, g, f); } return ( c.activeTexture(c.TEXTURE0), c.bindTexture(c.TEXTURE_2D, a[0].tex), c.uniform1i( c.getUniformLocation(e, "isTexture"), !0 ), c.uniform1i( c.getUniformLocation(e, "uSampler"), 0 ), this ); }), (d.RendererGL.prototype._bind = function (a, b) { var c = this._renderer.GL; c.bindTexture(c.TEXTURE_2D, a), c.pixelStorei(c.UNPACK_FLIP_Y_WEBGL, !0), c.texImage2D( c.TEXTURE_2D, 0, c.RGBA, c.RGBA, c.UNSIGNED_BYTE, b ), c.pixelStorei(c.UNPACK_FLIP_Y_WEBGL, !0), c.texParameteri( c.TEXTURE_2D, c.TEXTURE_MAG_FILTER, c.LINEAR ), c.texParameteri( c.TEXTURE_2D, c.TEXTURE_MIN_FILTER, c.LINEAR ), c.texParameteri( c.TEXTURE_2D, c.TEXTURE_WRAP_S, c.CLAMP_TO_EDGE ), c.texParameteri( c.TEXTURE_2D, c.TEXTURE_WRAP_T, c.CLAMP_TO_EDGE ), c.bindTexture(c.TEXTURE_2D, null); }), (d.prototype.ambientMaterial = function (a, b, c, d) { var e = this._renderer.GL, f = this._renderer._getShader( "lightVert", "lightTextureFrag" ); e.useProgram(f), (f.uMaterialColor = e.getUniformLocation( f, "uMaterialColor" )); var g = this._renderer._applyColorBlend.apply( this._renderer, arguments ); return ( e.uniform4f( f.uMaterialColor, g[0], g[1], g[2], g[3] ), (f.uSpecular = e.getUniformLocation( f, "uSpecular" )), e.uniform1i(f.uSpecular, !1), e.uniform1i( e.getUniformLocation(f, "isTexture"), !1 ), this ); }), (d.prototype.specularMaterial = function (a, b, c, d) { var e = this._renderer.GL, f = this._renderer._getShader( "lightVert", "lightTextureFrag" ); e.useProgram(f), e.uniform1i( e.getUniformLocation(f, "isTexture"), !1 ), (f.uMaterialColor = e.getUniformLocation( f, "uMaterialColor" )); var g = this._renderer._applyColorBlend.apply( this._renderer, arguments ); return ( e.uniform4f( f.uMaterialColor, g[0], g[1], g[2], g[3] ), (f.uSpecular = e.getUniformLocation( f, "uSpecular" )), e.uniform1i(f.uSpecular, !0), this ); }), (d.RendererGL.prototype._applyColorBlend = function ( a, b, c, d ) { var e = this.GL, f = this._pInst.color.apply( this._pInst, arguments ), g = f._array; return ( g[g.length - 1] < 1 ? (e.depthMask(!1), e.enable(e.BLEND), e.blendEquation(e.FUNC_ADD), e.blendFunc( e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA )) : (e.depthMask(!0), e.disable(e.BLEND)), g ); }), (b.exports = d); }, { "../core/core": 42 }, ], 87: [ function (a, b, c) { "use strict"; var d = a("../core/core"); (d.Geometry = function (a, b, c) { return ( (this.vertices = []), (this.vertexNormals = []), (this.faces = []), (this.uvs = []), (this.detailX = void 0 !== a ? a : 1), (this.detailY = void 0 !== b ? b : 1), c instanceof Function && c.call(this), this ); }), (d.Geometry.prototype.computeFaces = function () { for ( var a, b, c, d, e = this.detailX + 1, f = 0; f < this.detailY; f++ ) for (var g = 0; g < this.detailX; g++) (a = f * e + g), (b = f * e + g + 1), (c = (f + 1) * e + g + 1), (d = (f + 1) * e + g), this.faces.push([a, b, d]), this.faces.push([d, b, c]); return this; }), (d.Geometry.prototype._getFaceNormal = function (a, b) { var c = this.faces[a], e = this.vertices[c[b % 3]], f = this.vertices[c[(b + 1) % 3]], g = this.vertices[c[(b + 2) % 3]], h = d.Vector.cross( d.Vector.sub(f, e), d.Vector.sub(g, e) ), i = d.Vector.mag(h) / (d.Vector.mag(d.Vector.sub(f, e)) * d.Vector.mag(d.Vector.sub(g, e))); return (h = h.normalize()), h.mult(Math.asin(i)); }), (d.Geometry.prototype.computeNormals = function () { for (var a = 0; a < this.vertices.length; a++) { for ( var b = new d.Vector(), c = 0; c < this.faces.length; c++ ) (this.faces[c][0] !== a && this.faces[c][1] !== a && this.faces[c][2] !== a) || (b = b.add(this._getFaceNormal(c, a))); (b = b.normalize()), this.vertexNormals.push(b); } return this; }), (d.Geometry.prototype.averageNormals = function () { for (var a = 0; a <= this.detailY; a++) { var b = this.detailX + 1, c = d.Vector.add( this.vertexNormals[a * b], this.vertexNormals[a * b + this.detailX] ); (c = d.Vector.div(c, 2)), (this.vertexNormals[a * b] = c), (this.vertexNormals[a * b + this.detailX] = c); } return this; }), (d.Geometry.prototype.averagePoleNormals = function () { for ( var a = new d.Vector(0, 0, 0), b = 0; b < this.detailX; b++ ) a.add(this.vertexNormals[b]); for ( a = d.Vector.div(a, this.detailX), b = 0; b < this.detailX; b++ ) this.vertexNormals[b] = a; for ( a = new d.Vector(0, 0, 0), b = this.vertices.length - 1; b > this.vertices.length - 1 - this.detailX; b-- ) a.add(this.vertexNormals[b]); for ( a = d.Vector.div(a, this.detailX), b = this.vertices.length - 1; b > this.vertices.length - 1 - this.detailX; b-- ) this.vertexNormals[b] = a; return this; }), (d.Geometry.prototype.normalize = function () { if (this.vertices.length > 0) { for ( var a = this.vertices[0].copy(), b = this.vertices[0].copy(), c = 0; c < this.vertices.length; c++ ) (a.x = Math.max(a.x, this.vertices[c].x)), (b.x = Math.min( b.x, this.vertices[c].x )), (a.y = Math.max( a.y, this.vertices[c].y )), (b.y = Math.min( b.y, this.vertices[c].y )), (a.z = Math.max( a.z, this.vertices[c].z )), (b.z = Math.min( b.z, this.vertices[c].z )); var e = d.Vector.lerp(a, b, 0.5), f = d.Vector.sub(a, b), g = Math.max(Math.max(f.x, f.y), f.z), h = 200 / g; for (c = 0; c < this.vertices.length; c++) this.vertices[c].sub(e), this.vertices[c].mult(h); } return this; }), (b.exports = d.Geometry); }, { "../core/core": 42 }, ], 88: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("../math/polargeometry"), f = a("../core/constants"), g = "undefined" != typeof Float32Array ? Float32Array : Array; (d.Matrix = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; return ( a[0] instanceof d ? ((this.p5 = a[0]), "mat3" === a[1] ? (this.mat3 = a[2] || new g([1, 0, 0, 0, 1, 0, 0, 0, 1])) : (this.mat4 = a[1] || new g([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]))) : "mat3" === a[0] ? (this.mat3 = a[1] || new g([1, 0, 0, 0, 1, 0, 0, 0, 1])) : (this.mat4 = a[0] || new g([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ])), this ); }), (d.Matrix.prototype.set = function (a) { return a instanceof d.Matrix ? ((this.mat4 = a.mat4), this) : a instanceof g ? ((this.mat4 = a), this) : this; }), (d.Matrix.prototype.get = function () { return new d.Matrix(this.mat4); }), (d.Matrix.prototype.copy = function () { var a = new d.Matrix(); return ( (a.mat4[0] = this.mat4[0]), (a.mat4[1] = this.mat4[1]), (a.mat4[2] = this.mat4[2]), (a.mat4[3] = this.mat4[3]), (a.mat4[4] = this.mat4[4]), (a.mat4[5] = this.mat4[5]), (a.mat4[6] = this.mat4[6]), (a.mat4[7] = this.mat4[7]), (a.mat4[8] = this.mat4[8]), (a.mat4[9] = this.mat4[9]), (a.mat4[10] = this.mat4[10]), (a.mat4[11] = this.mat4[11]), (a.mat4[12] = this.mat4[12]), (a.mat4[13] = this.mat4[13]), (a.mat4[14] = this.mat4[14]), (a.mat4[15] = this.mat4[15]), a ); }), (d.Matrix.identity = function () { return new d.Matrix(); }), (d.Matrix.prototype.transpose = function (a) { var b, c, e, f, h, i; return ( a instanceof d.Matrix ? ((b = a.mat4[1]), (c = a.mat4[2]), (e = a.mat4[3]), (f = a.mat4[6]), (h = a.mat4[7]), (i = a.mat4[11]), (this.mat4[0] = a.mat4[0]), (this.mat4[1] = a.mat4[4]), (this.mat4[2] = a.mat4[8]), (this.mat4[3] = a.mat4[12]), (this.mat4[4] = b), (this.mat4[5] = a.mat4[5]), (this.mat4[6] = a.mat4[9]), (this.mat4[7] = a.mat4[13]), (this.mat4[8] = c), (this.mat4[9] = f), (this.mat4[10] = a.mat4[10]), (this.mat4[11] = a.mat4[14]), (this.mat4[12] = e), (this.mat4[13] = h), (this.mat4[14] = i), (this.mat4[15] = a.mat4[15])) : a instanceof g && ((b = a[1]), (c = a[2]), (e = a[3]), (f = a[6]), (h = a[7]), (i = a[11]), (this.mat4[0] = a[0]), (this.mat4[1] = a[4]), (this.mat4[2] = a[8]), (this.mat4[3] = a[12]), (this.mat4[4] = b), (this.mat4[5] = a[5]), (this.mat4[6] = a[9]), (this.mat4[7] = a[13]), (this.mat4[8] = c), (this.mat4[9] = f), (this.mat4[10] = a[10]), (this.mat4[11] = a[14]), (this.mat4[12] = e), (this.mat4[13] = h), (this.mat4[14] = i), (this.mat4[15] = a[15])), this ); }), (d.Matrix.prototype.invert = function (a) { var b, c, e, f, h, i, j, k, l, m, n, o, p, q, r, s; a instanceof d.Matrix ? ((b = a.mat4[0]), (c = a.mat4[1]), (e = a.mat4[2]), (f = a.mat4[3]), (h = a.mat4[4]), (i = a.mat4[5]), (j = a.mat4[6]), (k = a.mat4[7]), (l = a.mat4[8]), (m = a.mat4[9]), (n = a.mat4[10]), (o = a.mat4[11]), (p = a.mat4[12]), (q = a.mat4[13]), (r = a.mat4[14]), (s = a.mat4[15])) : a instanceof g && ((b = a[0]), (c = a[1]), (e = a[2]), (f = a[3]), (h = a[4]), (i = a[5]), (j = a[6]), (k = a[7]), (l = a[8]), (m = a[9]), (n = a[10]), (o = a[11]), (p = a[12]), (q = a[13]), (r = a[14]), (s = a[15])); var t = b * i - c * h, u = b * j - e * h, v = b * k - f * h, w = c * j - e * i, x = c * k - f * i, y = e * k - f * j, z = l * q - m * p, A = l * r - n * p, B = l * s - o * p, C = m * r - n * q, D = m * s - o * q, E = n * s - o * r, F = t * E - u * D + v * C + w * B - x * A + y * z; return F ? ((F = 1 / F), (this.mat4[0] = (i * E - j * D + k * C) * F), (this.mat4[1] = (e * D - c * E - f * C) * F), (this.mat4[2] = (q * y - r * x + s * w) * F), (this.mat4[3] = (n * x - m * y - o * w) * F), (this.mat4[4] = (j * B - h * E - k * A) * F), (this.mat4[5] = (b * E - e * B + f * A) * F), (this.mat4[6] = (r * v - p * y - s * u) * F), (this.mat4[7] = (l * y - n * v + o * u) * F), (this.mat4[8] = (h * D - i * B + k * z) * F), (this.mat4[9] = (c * B - b * D - f * z) * F), (this.mat4[10] = (p * x - q * v + s * t) * F), (this.mat4[11] = (m * v - l * x - o * t) * F), (this.mat4[12] = (i * A - h * C - j * z) * F), (this.mat4[13] = (b * C - c * A + e * z) * F), (this.mat4[14] = (q * u - p * w - r * t) * F), (this.mat4[15] = (l * w - m * u + n * t) * F), this) : null; }), (d.Matrix.prototype.invert3x3 = function () { var a = this.mat3[0], b = this.mat3[1], c = this.mat3[2], d = this.mat3[3], e = this.mat3[4], f = this.mat3[5], g = this.mat3[6], h = this.mat3[7], i = this.mat3[8], j = i * e - f * h, k = -i * d + f * g, l = h * d - e * g, m = a * j + b * k + c * l; return m ? ((m = 1 / m), (this.mat3[0] = j * m), (this.mat3[1] = (-i * b + c * h) * m), (this.mat3[2] = (f * b - c * e) * m), (this.mat3[3] = k * m), (this.mat3[4] = (i * a - c * g) * m), (this.mat3[5] = (-f * a + c * d) * m), (this.mat3[6] = l * m), (this.mat3[7] = (-h * a + b * g) * m), (this.mat3[8] = (e * a - b * d) * m), this) : null; }), (d.Matrix.prototype.transpose3x3 = function (a) { var b = a[1], c = a[2], d = a[5]; return ( (this.mat3[1] = a[3]), (this.mat3[2] = a[6]), (this.mat3[3] = b), (this.mat3[5] = a[7]), (this.mat3[6] = c), (this.mat3[7] = d), this ); }), (d.Matrix.prototype.inverseTranspose = function (a) { return ( void 0 === this.mat3 ? console.error( "sorry, this function only works with mat3" ) : ((this.mat3[0] = a.mat4[0]), (this.mat3[1] = a.mat4[1]), (this.mat3[2] = a.mat4[2]), (this.mat3[3] = a.mat4[4]), (this.mat3[4] = a.mat4[5]), (this.mat3[5] = a.mat4[6]), (this.mat3[6] = a.mat4[8]), (this.mat3[7] = a.mat4[9]), (this.mat3[8] = a.mat4[10])), this.invert3x3().transpose3x3(this.mat3), this ); }), (d.Matrix.prototype.determinant = function () { var a = this.mat4[0] * this.mat4[5] - this.mat4[1] * this.mat4[4], b = this.mat4[0] * this.mat4[6] - this.mat4[2] * this.mat4[4], c = this.mat4[0] * this.mat4[7] - this.mat4[3] * this.mat4[4], d = this.mat4[1] * this.mat4[6] - this.mat4[2] * this.mat4[5], e = this.mat4[1] * this.mat4[7] - this.mat4[3] * this.mat4[5], f = this.mat4[2] * this.mat4[7] - this.mat4[3] * this.mat4[6], g = this.mat4[8] * this.mat4[13] - this.mat4[9] * this.mat4[12], h = this.mat4[8] * this.mat4[14] - this.mat4[10] * this.mat4[12], i = this.mat4[8] * this.mat4[15] - this.mat4[11] * this.mat4[12], j = this.mat4[9] * this.mat4[14] - this.mat4[10] * this.mat4[13], k = this.mat4[9] * this.mat4[15] - this.mat4[11] * this.mat4[13]; return ( a * (this.mat4[10] * this.mat4[15] - this.mat4[11] * this.mat4[14]) - b * k + c * j + d * i - e * h + f * g ); }), (d.Matrix.prototype.mult = function (a) { var b = new g(16), c = new g(16); a instanceof d.Matrix ? (c = a.mat4) : a instanceof g && (c = a); var e = this.mat4[0], f = this.mat4[1], h = this.mat4[2], i = this.mat4[3]; return ( (b[0] = e * c[0] + f * c[4] + h * c[8] + i * c[12]), (b[1] = e * c[1] + f * c[5] + h * c[9] + i * c[13]), (b[2] = e * c[2] + f * c[6] + h * c[10] + i * c[14]), (b[3] = e * c[3] + f * c[7] + h * c[11] + i * c[15]), (e = this.mat4[4]), (f = this.mat4[5]), (h = this.mat4[6]), (i = this.mat4[7]), (b[4] = e * c[0] + f * c[4] + h * c[8] + i * c[12]), (b[5] = e * c[1] + f * c[5] + h * c[9] + i * c[13]), (b[6] = e * c[2] + f * c[6] + h * c[10] + i * c[14]), (b[7] = e * c[3] + f * c[7] + h * c[11] + i * c[15]), (e = this.mat4[8]), (f = this.mat4[9]), (h = this.mat4[10]), (i = this.mat4[11]), (b[8] = e * c[0] + f * c[4] + h * c[8] + i * c[12]), (b[9] = e * c[1] + f * c[5] + h * c[9] + i * c[13]), (b[10] = e * c[2] + f * c[6] + h * c[10] + i * c[14]), (b[11] = e * c[3] + f * c[7] + h * c[11] + i * c[15]), (e = this.mat4[12]), (f = this.mat4[13]), (h = this.mat4[14]), (i = this.mat4[15]), (b[12] = e * c[0] + f * c[4] + h * c[8] + i * c[12]), (b[13] = e * c[1] + f * c[5] + h * c[9] + i * c[13]), (b[14] = e * c[2] + f * c[6] + h * c[10] + i * c[14]), (b[15] = e * c[3] + f * c[7] + h * c[11] + i * c[15]), (this.mat4 = b), this ); }), (d.Matrix.prototype.scale = function () { for ( var a, b, c, e = new Array(arguments.length), f = 0; f < e.length; ++f ) e[f] = arguments[f]; e[0] instanceof d.Vector ? ((a = e[0].x), (b = e[0].y), (c = e[0].z)) : e[0] instanceof Array && ((a = e[0][0]), (b = e[0][1]), (c = e[0][2])); var h = new g(16); return ( (h[0] = this.mat4[0] * a), (h[1] = this.mat4[1] * a), (h[2] = this.mat4[2] * a), (h[3] = this.mat4[3] * a), (h[4] = this.mat4[4] * b), (h[5] = this.mat4[5] * b), (h[6] = this.mat4[6] * b), (h[7] = this.mat4[7] * b), (h[8] = this.mat4[8] * c), (h[9] = this.mat4[9] * c), (h[10] = this.mat4[10] * c), (h[11] = this.mat4[11] * c), (h[12] = this.mat4[12]), (h[13] = this.mat4[13]), (h[14] = this.mat4[14]), (h[15] = this.mat4[15]), (this.mat4 = h), this ); }), (d.Matrix.prototype.rotate = function (a, b) { var c, g, h, i, j; this.p5 ? this.p5._angleMode === f.DEGREES && (i = e.degreesToRadians(a)) : (i = a), b instanceof d.Vector ? ((c = b.x), (g = b.y), (h = b.z)) : b instanceof Array && ((c = b[0]), (g = b[1]), (h = b[2])), (j = Math.sqrt(c * c + g * g + h * h)), (c *= 1 / j), (g *= 1 / j), (h *= 1 / j); var k = this.mat4[0], l = this.mat4[1], m = this.mat4[2], n = this.mat4[3], o = this.mat4[4], p = this.mat4[5], q = this.mat4[6], r = this.mat4[7], s = this.mat4[8], t = this.mat4[9], u = this.mat4[10], v = this.mat4[11], w = Math.sin(i), x = Math.cos(i), y = 1 - x, z = c * c * y + x, A = g * c * y + h * w, B = h * c * y - g * w, C = c * g * y - h * w, D = g * g * y + x, E = h * g * y + c * w, F = c * h * y + g * w, G = g * h * y - c * w, H = h * h * y + x; return ( (this.mat4[0] = k * z + o * A + s * B), (this.mat4[1] = l * z + p * A + t * B), (this.mat4[2] = m * z + q * A + u * B), (this.mat4[3] = n * z + r * A + v * B), (this.mat4[4] = k * C + o * D + s * E), (this.mat4[5] = l * C + p * D + t * E), (this.mat4[6] = m * C + q * D + u * E), (this.mat4[7] = n * C + r * D + v * E), (this.mat4[8] = k * F + o * G + s * H), (this.mat4[9] = l * F + p * G + t * H), (this.mat4[10] = m * F + q * G + u * H), (this.mat4[11] = n * F + r * G + v * H), this ); }), (d.Matrix.prototype.translate = function (a) { var b = a[0], c = a[1], d = a[2] || 0; (this.mat4[12] = this.mat4[0] * b + this.mat4[4] * c + this.mat4[8] * d + this.mat4[12]), (this.mat4[13] = this.mat4[1] * b + this.mat4[5] * c + this.mat4[9] * d + this.mat4[13]), (this.mat4[14] = this.mat4[2] * b + this.mat4[6] * c + this.mat4[10] * d + this.mat4[14]), (this.mat4[15] = this.mat4[3] * b + this.mat4[7] * c + this.mat4[11] * d + this.mat4[15]); }), (d.Matrix.prototype.rotateX = function (a) { this.rotate(a, [1, 0, 0]); }), (d.Matrix.prototype.rotateY = function (a) { this.rotate(a, [0, 1, 0]); }), (d.Matrix.prototype.rotateZ = function (a) { this.rotate(a, [0, 0, 1]); }), (d.Matrix.prototype.perspective = function ( a, b, c, d ) { var e = 1 / Math.tan(a / 2), f = 1 / (c - d); return ( (this.mat4[0] = e / b), (this.mat4[1] = 0), (this.mat4[2] = 0), (this.mat4[3] = 0), (this.mat4[4] = 0), (this.mat4[5] = e), (this.mat4[6] = 0), (this.mat4[7] = 0), (this.mat4[8] = 0), (this.mat4[9] = 0), (this.mat4[10] = (d + c) * f), (this.mat4[11] = -1), (this.mat4[12] = 0), (this.mat4[13] = 0), (this.mat4[14] = 2 * d * c * f), (this.mat4[15] = 0), this ); }), (d.Matrix.prototype.ortho = function ( a, b, c, d, e, f ) { var g = 1 / (a - b), h = 1 / (c - d), i = 1 / (e - f); return ( (this.mat4[0] = -2 * g), (this.mat4[1] = 0), (this.mat4[2] = 0), (this.mat4[3] = 0), (this.mat4[4] = 0), (this.mat4[5] = -2 * h), (this.mat4[6] = 0), (this.mat4[7] = 0), (this.mat4[8] = 0), (this.mat4[9] = 0), (this.mat4[10] = 2 * i), (this.mat4[11] = 0), (this.mat4[12] = (a + b) * g), (this.mat4[13] = (d + c) * h), (this.mat4[14] = (f + e) * i), (this.mat4[15] = 1), this ); }), (b.exports = d.Matrix); }, { "../core/constants": 41, "../core/core": 42, "../math/polargeometry": 72, }, ], 89: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("../core/constants"); (d.RendererGL.prototype.beginShape = function (a) { return ( (this.immediateMode.shapeMode = void 0 !== a ? a : e.LINE_STRIP), void 0 === this.immediateMode.vertexPositions ? ((this.immediateMode.vertexPositions = []), (this.immediateMode.vertexColors = []), (this.immediateMode.vertexBuffer = this.GL.createBuffer()), (this.immediateMode.colorBuffer = this.GL.createBuffer())) : ((this.immediateMode.vertexPositions.length = 0), (this.immediateMode.vertexColors.length = 0)), (this.isImmediateDrawing = !0), this ); }), (d.RendererGL.prototype.vertex = function (a, b, c) { this.immediateMode.vertexPositions.push(a, b, c); var d = this.curFillColor || [0.5, 0.5, 0.5, 1]; return ( this.immediateMode.vertexColors.push( d[0], d[1], d[2], d[3] ), this ); }), (d.RendererGL.prototype.endShape = function ( a, b, c, d, f, g ) { var h = this.GL; if ( (this._bindImmediateBuffers( this.immediateMode.vertexPositions, this.immediateMode.vertexColors ), a) ) if ( "fill" === this.drawMode || "texture" === this.drawMode ) switch (this.immediateMode.shapeMode) { case e.LINE_STRIP: this.immediateMode.shapeMode = e.TRIANGLE_FAN; break; case e.LINES: this.immediateMode.shapeMode = e.TRIANGLE_FAN; break; case e.TRIANGLES: this.immediateMode.shapeMode = e.TRIANGLE_FAN; } else switch (this.immediateMode.shapeMode) { case e.LINE_STRIP: this.immediateMode.shapeMode = e.LINE_LOOP; break; case e.LINES: this.immediateMode.shapeMode = e.LINE_LOOP; } if ( this.immediateMode.shapeMode === e.QUADS || this.immediateMode.shapeMode === e.QUAD_STRIP ) throw new Error( "sorry, " + this.immediateMode.shapeMode + " not yet implemented in webgl mode." ); return ( h.enable(h.BLEND), h.drawArrays( this.immediateMode.shapeMode, 0, this.immediateMode.vertexPositions.length / 3 ), (this.immediateMode.vertexPositions.length = 0), (this.immediateMode.vertexColors.length = 0), (this.isImmediateDrawing = !1), this ); }), (d.RendererGL.prototype._bindImmediateBuffers = function (a, b) { this._setDefaultCamera(); var c = this.GL, d = this._getCurShaderId(), e = this.mHash[d]; return ( (e.vertexPositionAttribute = c.getAttribLocation(e, "aPosition")), c.enableVertexAttribArray( e.vertexPositionAttribute ), c.bindBuffer( c.ARRAY_BUFFER, this.immediateMode.vertexBuffer ), c.bufferData( c.ARRAY_BUFFER, new Float32Array(a), c.DYNAMIC_DRAW ), c.vertexAttribPointer( e.vertexPositionAttribute, 3, c.FLOAT, !1, 0, 0 ), (e.vertexColorAttribute = c.getAttribLocation(e, "aVertexColor")), c.enableVertexAttribArray( e.vertexColorAttribute ), c.bindBuffer( c.ARRAY_BUFFER, this.immediateMode.colorBuffer ), c.bufferData( c.ARRAY_BUFFER, new Float32Array(b), c.DYNAMIC_DRAW ), c.vertexAttribPointer( e.vertexColorAttribute, 4, c.FLOAT, !1, 0, 0 ), this._setMatrixUniforms(d), this ); }), (d.RendererGL.prototype._getColorVertexShader = function () { var a, b = this.GL, c = "immediateVert|vertexColorFrag"; return ( this.materialInHash(c) ? (a = this.mHash[c]) : ((a = this._initShaders( "immediateVert", "vertexColorFrag", !0 )), (this.mHash[c] = a), (a.vertexColorAttribute = b.getAttribLocation( a, "aVertexColor" )), b.enableVertexAttribArray( a.vertexColorAttribute )), a ); }), (b.exports = d.RendererGL); }, { "../core/constants": 41, "../core/core": 42 }, ], 90: [ function (a, b, c) { "use strict"; function d(a) { return a.length > 0 ? a.reduce(function (a, b) { return a.concat(b); }) : []; } function e(a) { return d( a.map(function (a) { return [a.x, a.y, a.z]; }) ); } var f = a("../core/core"), g = 0; (f.RendererGL.prototype._initBufferDefaults = function (a) { if (++g > 1e3) { var b = Object.keys(this.gHash)[0]; delete this.gHash[b], g--; } var c = this.GL; (this.gHash[a] = {}), (this.gHash[a].vertexBuffer = c.createBuffer()), (this.gHash[a].normalBuffer = c.createBuffer()), (this.gHash[a].uvBuffer = c.createBuffer()), (this.gHash[a].indexBuffer = c.createBuffer()); }), (f.RendererGL.prototype.createBuffers = function ( a, b ) { var c = this.GL; this._setDefaultCamera(), this._initBufferDefaults(a); var f = this.mHash[this._getCurShaderId()]; (this.gHash[a].numberOfItems = 3 * b.faces.length), c.bindBuffer( c.ARRAY_BUFFER, this.gHash[a].vertexBuffer ), c.bufferData( c.ARRAY_BUFFER, new Float32Array(e(b.vertices)), c.STATIC_DRAW ), (f.vertexPositionAttribute = c.getAttribLocation(f, "aPosition")), c.enableVertexAttribArray( f.vertexPositionAttribute ), c.vertexAttribPointer( f.vertexPositionAttribute, 3, c.FLOAT, !1, 0, 0 ), c.bindBuffer( c.ARRAY_BUFFER, this.gHash[a].normalBuffer ), c.bufferData( c.ARRAY_BUFFER, new Float32Array(e(b.vertexNormals)), c.STATIC_DRAW ), (f.vertexNormalAttribute = c.getAttribLocation( f, "aNormal" )), c.enableVertexAttribArray( f.vertexNormalAttribute ), c.vertexAttribPointer( f.vertexNormalAttribute, 3, c.FLOAT, !1, 0, 0 ), c.bindBuffer( c.ARRAY_BUFFER, this.gHash[a].uvBuffer ), c.bufferData( c.ARRAY_BUFFER, new Float32Array(d(b.uvs)), c.STATIC_DRAW ), (f.textureCoordAttribute = c.getAttribLocation( f, "aTexCoord" )), c.enableVertexAttribArray( f.textureCoordAttribute ), c.vertexAttribPointer( f.textureCoordAttribute, 2, c.FLOAT, !1, 0, 0 ), c.bindBuffer( c.ELEMENT_ARRAY_BUFFER, this.gHash[a].indexBuffer ), c.bufferData( c.ELEMENT_ARRAY_BUFFER, new Uint16Array(d(b.faces)), c.STATIC_DRAW ); }), (f.RendererGL.prototype.drawBuffers = function (a) { this._setDefaultCamera(); var b = this.GL, c = this._getCurShaderId(), d = this.mHash[c]; return ( b.bindBuffer( b.ARRAY_BUFFER, this.gHash[a].vertexBuffer ), b.vertexAttribPointer( d.vertexPositionAttribute, 3, b.FLOAT, !1, 0, 0 ), b.bindBuffer( b.ARRAY_BUFFER, this.gHash[a].normalBuffer ), b.vertexAttribPointer( d.vertexNormalAttribute, 3, b.FLOAT, !1, 0, 0 ), b.bindBuffer( b.ARRAY_BUFFER, this.gHash[a].uvBuffer ), b.vertexAttribPointer( d.textureCoordAttribute, 2, b.FLOAT, !1, 0, 0 ), b.bindBuffer( b.ELEMENT_ARRAY_BUFFER, this.gHash[a].indexBuffer ), this._setMatrixUniforms(c), b.drawElements( b.TRIANGLES, this.gHash[a].numberOfItems, b.UNSIGNED_SHORT, 0 ), this ); }), (b.exports = f.RendererGL); }, { "../core/core": 42 }, ], 91: [ function (a, b, c) { "use strict"; var d = a("../core/core"), e = a("./shader"); a("../core/p5.Renderer"), a("./p5.Matrix"); var f = [], g = { alpha: !0, depth: !0, stencil: !0, antialias: !1, premultipliedAlpha: !1, preserveDrawingBuffer: !1, }; (d.RendererGL = function (a, b, c) { return ( d.Renderer.call(this, a, b, c), this._initContext(), (this.isP3D = !0), (this.GL = this.drawingContext), (this.ambientLightCount = 0), (this.directionalLightCount = 0), (this.pointLightCount = 0), (this._curCamera = null), (this.uMVMatrix = new d.Matrix()), (this.uPMatrix = new d.Matrix()), (this.uNMatrix = new d.Matrix("mat3")), (this.gHash = {}), (this.mHash = {}), (this.isImmediateDrawing = !1), (this.immediateMode = {}), (this.curFillColor = [0.5, 0.5, 0.5, 1]), (this.curStrokeColor = [0.5, 0.5, 0.5, 1]), (this.pointSize = 5), this ); }), (d.RendererGL.prototype = Object.create( d.Renderer.prototype )), (d.RendererGL.prototype._initContext = function () { try { if ( ((this.drawingContext = this.canvas.getContext("webgl", g) || this.canvas.getContext( "experimental-webgl", g )), null === this.drawingContext) ) throw new Error( "Error creating webgl context" ); console.log( "p5.RendererGL: enabled webgl context" ); var a = this.drawingContext; a.enable(a.DEPTH_TEST), a.depthFunc(a.LEQUAL), a.viewport( 0, 0, a.drawingBufferWidth, a.drawingBufferHeight ); } catch (a) { throw new Error(a); } }), (d.RendererGL.prototype._setDefaultCamera = function () { if (null === this._curCamera) { var a = this.width, b = this.height; this.uPMatrix = d.Matrix.identity(); var c = this.height / 2 / Math.tan((30 * Math.PI) / 180); this.uPMatrix.perspective( (60 / 180) * Math.PI, a / b, 0.1 * c, 10 * c ), (this._curCamera = "default"); } }), (d.RendererGL.prototype._update = function () { (this.uMVMatrix = d.Matrix.identity()), this.translate( 0, 0, -(this.height / 2) / Math.tan((30 * Math.PI) / 180) ), (this.ambientLightCount = 0), (this.directionalLightCount = 0), (this.pointLightCount = 0); }), (d.RendererGL.prototype.background = function () { var a = this.GL, b = this._pInst.color.apply( this._pInst, arguments ), c = b.levels[0] / 255, d = b.levels[1] / 255, e = b.levels[2] / 255, f = b.levels[3] / 255; a.clearColor(c, d, e, f), a.clear( a.COLOR_BUFFER_BIT | a.DEPTH_BUFFER_BIT ); }), (d.RendererGL.prototype._initShaders = function ( a, b, c ) { var d = this.GL, f = d.createShader(d.VERTEX_SHADER); if ( (d.shaderSource(f, e[a]), d.compileShader(f), !d.getShaderParameter(f, d.COMPILE_STATUS)) ) return ( alert( "Yikes! An error occurred compiling the shaders:" + d.getShaderInfoLog(f) ), null ); var g = d.createShader(d.FRAGMENT_SHADER); if ( (d.shaderSource(g, e[b]), d.compileShader(g), !d.getShaderParameter(g, d.COMPILE_STATUS)) ) return ( alert( "Darn! An error occurred compiling the shaders:" + d.getShaderInfoLog(g) ), null ); var h = d.createProgram(); return ( d.attachShader(h, f), d.attachShader(h, g), d.linkProgram(h), d.getProgramParameter(h, d.LINK_STATUS) || alert("Snap! Error linking shader program"), this._getLocation(h, c), h ); }), (d.RendererGL.prototype._getLocation = function (a, b) { var c = this.GL; c.useProgram(a), (a.uPMatrixUniform = c.getUniformLocation( a, "uProjectionMatrix" )), (a.uMVMatrixUniform = c.getUniformLocation( a, "uModelViewMatrix" )), void 0 === b && ((a.uNMatrixUniform = c.getUniformLocation( a, "uNormalMatrix" )), (a.samplerUniform = c.getUniformLocation( a, "uSampler" ))); }), (d.RendererGL.prototype._setUniform1f = function ( a, b, c ) { var d = this.GL, e = this.mHash[a]; return ( d.useProgram(e), (e[b] = d.getUniformLocation(e, b)), d.uniform1f(e[b], c), this ); }), (d.RendererGL.prototype._setMatrixUniforms = function ( a ) { var b = this.GL, c = this.mHash[a]; b.useProgram(c), b.uniformMatrix4fv( c.uPMatrixUniform, !1, this.uPMatrix.mat4 ), b.uniformMatrix4fv( c.uMVMatrixUniform, !1, this.uMVMatrix.mat4 ), this.uNMatrix.inverseTranspose(this.uMVMatrix), b.uniformMatrix3fv( c.uNMatrixUniform, !1, this.uNMatrix.mat3 ); }), (d.RendererGL.prototype._getShader = function ( a, b, c ) { var d = a + "|" + b; if (!this.materialInHash(d)) { var e = this._initShaders(a, b, c); this.mHash[d] = e; } return ( (this.curShaderId = d), this.mHash[this.curShaderId] ); }), (d.RendererGL.prototype._getCurShaderId = function () { var a, b; return ( "fill" !== this.drawMode && void 0 === this.curShaderId ? ((a = "normalVert|normalFrag"), (b = this._initShaders( "normalVert", "normalFrag" )), (this.mHash[a] = b), (this.curShaderId = a)) : this.isImmediateDrawing && "fill" === this.drawMode && ((a = "immediateVert|vertexColorFrag"), (b = this._initShaders( "immediateVert", "vertexColorFrag" )), (this.mHash[a] = b), (this.curShaderId = a)), this.curShaderId ); }), (d.RendererGL.prototype.fill = function (a, b, c, d) { var e, f = this.GL, g = this._applyColorBlend.apply( this, arguments ); return ( (this.curFillColor = g), (this.drawMode = "fill"), this.isImmediateDrawing ? ((e = this._getShader( "immediateVert", "vertexColorFrag" )), f.useProgram(e)) : ((e = this._getShader( "normalVert", "basicFrag" )), f.useProgram(e), (e.uMaterialColor = f.getUniformLocation( e, "uMaterialColor" )), f.uniform4f( e.uMaterialColor, g[0], g[1], g[2], g[3] )), this ); }), (d.RendererGL.prototype.stroke = function (a, b, c, d) { var e = this._pInst.color.apply( this._pInst, arguments ), f = e._array; return ( (this.curStrokeColor = f), (this.drawMode = "stroke"), this ); }), (d.RendererGL.prototype._strokeCheck = function () { if ("stroke" === this.drawMode) throw new Error( "stroke for shapes in 3D not yet implemented, use fill for now :(" ); }), (d.RendererGL.prototype.strokeWeight = function (a) { return (this.pointSize = a), this; }), (d.RendererGL.prototype.geometryInHash = function (a) { return void 0 !== this.gHash[a]; }), (d.RendererGL.prototype.materialInHash = function (a) { return void 0 !== this.mHash[a]; }), (d.RendererGL.prototype.resize = function (a, b) { var c = this.GL; d.Renderer.prototype.resize.call(this, a, b), c.viewport( 0, 0, c.drawingBufferWidth, c.drawingBufferHeight ), "default" === this._curCamera && ((this._curCamera = null), this._setDefaultCamera()); }), (d.RendererGL.prototype.clear = function () { var a = this.GL; a.clearColor( arguments[0], arguments[1], arguments[2], arguments[3] ), a.clear( a.COLOR_BUFFER_BIT | a.DEPTH_BUFFER_BIT ); }), (d.RendererGL.prototype.translate = function (a, b, c) { return this.uMVMatrix.translate([a, -b, c]), this; }), (d.RendererGL.prototype.scale = function (a, b, c) { return this.uMVMatrix.scale([a, b, c]), this; }), (d.RendererGL.prototype.rotate = function (a, b) { return this.uMVMatrix.rotate(a, b), this; }), (d.RendererGL.prototype.rotateX = function (a) { return this.rotate(a, [1, 0, 0]), this; }), (d.RendererGL.prototype.rotateY = function (a) { return this.rotate(a, [0, 1, 0]), this; }), (d.RendererGL.prototype.rotateZ = function (a) { return this.rotate(a, [0, 0, 1]), this; }), (d.RendererGL.prototype.push = function () { f.push(this.uMVMatrix.copy()); }), (d.RendererGL.prototype.pop = function () { if (0 === f.length) throw new Error("Invalid popMatrix!"); this.uMVMatrix = f.pop(); }), (d.RendererGL.prototype.resetMatrix = function () { return ( (this.uMVMatrix = d.Matrix.identity()), this.translate(0, 0, -800), this ); }), (d.RendererGL.prototype._applyTextProperties = function () { console.error( "text commands not yet implemented in webgl" ); }), (b.exports = d.RendererGL); }, { "../core/core": 42, "../core/p5.Renderer": 48, "./p5.Matrix": 88, "./shader": 93, }, ], 92: [ function (a, b, c) { "use strict"; var d = a("../core/core"); a("./p5.Geometry"), (d.prototype.plane = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0] || 50, e = a[1] || c, f = "number" == typeof a[2] ? a[2] : 1, g = "number" == typeof a[3] ? a[3] : 1, h = "plane|" + c + "|" + e + "|" + f + "|" + g; if (!this._renderer.geometryInHash(h)) { var i = function () { for ( var a, b, f, g = 0; g <= this.detailY; g++ ) { b = g / this.detailY; for ( var h = 0; h <= this.detailX; h++ ) (a = h / this.detailX), (f = new d.Vector( c * a - c / 2, e * b - e / 2, 0 )), this.vertices.push(f), this.uvs.push([a, b]); } }, j = new d.Geometry(f, g, i); j.computeFaces().computeNormals(), this._renderer.createBuffers(h, j); } this._renderer.drawBuffers(h); }), (d.prototype.box = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0] || 50, e = a[1] || c, f = a[2] || c, g = "number" == typeof a[3] ? a[3] : 4, h = "number" == typeof a[4] ? a[4] : 4, i = "box|" + c + "|" + e + "|" + f + "|" + g + "|" + h; if (!this._renderer.geometryInHash(i)) { var j = function () { for ( var a = [ [0, 4, 2, 6], [1, 3, 5, 7], [0, 1, 4, 5], [2, 6, 3, 7], [0, 2, 1, 3], [4, 5, 6, 7], ], b = 0, g = 0; g < a.length; g++ ) { for ( var h = a[g], i = 4 * g, j = 0; j < 4; j++ ) { var k = h[j], l = new d.Vector( ((2 * (1 & k) - 1) * c) / 2, (((2 & k) - 1) * e) / 2, (((4 & k) / 2 - 1) * f) / 2 ); this.vertices.push(l), this.uvs.push([ 1 & j, (2 & j) / 2, ]), b++; } this.faces.push([i, i + 1, i + 2]), this.faces.push([ i + 2, i + 1, i + 3, ]); } }, k = new d.Geometry(g, h, j); k.computeNormals(), this._renderer.createBuffers(i, k); } return this._renderer.drawBuffers(i), this; }), (d.prototype.sphere = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0] || 50, e = "number" == typeof a[1] ? a[1] : 24, f = "number" == typeof a[2] ? a[2] : 16, g = "sphere|" + c + "|" + e + "|" + f; if (!this._renderer.geometryInHash(g)) { var h = function () { for ( var a, b, e, f = 0; f <= this.detailY; f++ ) { b = f / this.detailY; for ( var g = 0; g <= this.detailX; g++ ) { a = g / this.detailX; var h = 2 * Math.PI * a, i = Math.PI * b - Math.PI / 2; (e = new d.Vector( c * Math.cos(i) * Math.sin(h), c * Math.sin(i), c * Math.cos(i) * Math.cos(h) )), this.vertices.push(e), this.uvs.push([a, b]); } } }, i = new d.Geometry(e, f, h); i .computeFaces() .computeNormals() .averageNormals() .averagePoleNormals(), this._renderer.createBuffers(g, i); } return this._renderer.drawBuffers(g), this; }); var e = function (a, b, c, e, f, g, h) { (e = e < 3 ? 3 : e), (f = f < 1 ? 1 : f), (g = void 0 === g || g), (h = void 0 === h || h); var i, j, k = (g ? 2 : 0) + (h ? 2 : 0), l = e + 1, m = Math.atan2(a - b, c), n = g ? -2 : 0, o = f + (h ? 2 : 0); for (i = n; i <= o; ++i) { var p, q = i / f, r = c * q; for ( i < 0 ? ((r = 0), (q = 1), (p = a)) : i > f ? ((r = c), (q = 1), (p = b)) : (p = a + (i / f) * (b - a)), (i !== -2 && i !== f + 2) || ((p = 0), (q = 0)), r -= c / 2, j = 0; j < l; ++j ) this.vertices.push( new d.Vector( Math.sin((j * Math.PI * 2) / e) * p, r, Math.cos((j * Math.PI * 2) / e) * p ) ), this.vertexNormals.push( new d.Vector( i < 0 || i > f ? 0 : Math.sin( (j * Math.PI * 2) / e ) * Math.cos(m), i < 0 ? -1 : i > f ? 1 : Math.sin(m), i < 0 || i > f ? 0 : Math.cos( (j * Math.PI * 2) / e ) * Math.cos(m) ) ), this.uvs.push([j / e, q]); } for (i = 0; i < f + k; ++i) for (j = 0; j < e; ++j) this.faces.push([ l * (i + 0) + 0 + j, l * (i + 0) + 1 + j, l * (i + 1) + 1 + j, ]), this.faces.push([ l * (i + 0) + 0 + j, l * (i + 1) + 1 + j, l * (i + 1) + 0 + j, ]); }; (d.prototype.cylinder = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0] || 50, f = a[1] || c, g = "number" == typeof a[2] ? a[2] : 24, h = "number" == typeof a[3] ? a[3] : 16, i = "cylinder|" + c + "|" + f + "|" + g + "|" + h; if (!this._renderer.geometryInHash(i)) { var j = new d.Geometry(g, h); e.call(j, c, c, f, g, h, !0, !0), j.computeNormals(), this._renderer.createBuffers(i, j); } return this._renderer.drawBuffers(i), this; }), (d.prototype.cone = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0] || 50, f = a[1] || c, g = "number" == typeof a[2] ? a[2] : 24, h = "number" == typeof a[3] ? a[3] : 16, i = "cone|" + c + "|" + f + "|" + g + "|" + h; if (!this._renderer.geometryInHash(i)) { var j = new d.Geometry(g, h); e.call(j, c, 0, f, g, h, !0, !0), j.computeNormals(), this._renderer.createBuffers(i, j); } return this._renderer.drawBuffers(i), this; }), (d.prototype.ellipsoid = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = "number" == typeof a[3] ? a[3] : 24, e = "number" == typeof a[4] ? a[4] : 24, f = a[0] || 50, g = a[1] || f, h = a[2] || f, i = "ellipsoid|" + f + "|" + g + "|" + h + "|" + c + "|" + e; if (!this._renderer.geometryInHash(i)) { var j = function () { for ( var a, b, c, e = 0; e <= this.detailY; e++ ) { b = e / this.detailY; for ( var i = 0; i <= this.detailX; i++ ) { a = i / this.detailX; var j = 2 * Math.PI * a, k = Math.PI * b - Math.PI / 2; (c = new d.Vector( f * Math.cos(k) * Math.sin(j), g * Math.sin(k), h * Math.cos(k) * Math.cos(j) )), this.vertices.push(c), this.uvs.push([a, b]); } } }, k = new d.Geometry(c, e, j); k.computeFaces().computeNormals(), this._renderer.createBuffers(i, k); } return this._renderer.drawBuffers(i), this; }), (d.prototype.torus = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = "number" == typeof a[2] ? a[2] : 24, e = "number" == typeof a[3] ? a[3] : 16, f = a[0] || 50, g = a[1] || 10, h = "torus|" + f + "|" + g + "|" + c + "|" + e; if (!this._renderer.geometryInHash(h)) { var i = function () { for ( var a, b, c, e = 0; e <= this.detailY; e++ ) { b = e / this.detailY; for ( var h = 0; h <= this.detailX; h++ ) { a = h / this.detailX; var i = 2 * Math.PI * a, j = 2 * Math.PI * b; (c = new d.Vector( (f + g * Math.cos(j)) * Math.cos(i), (f + g * Math.cos(j)) * Math.sin(i), g * Math.sin(j) )), this.vertices.push(c), this.uvs.push([a, b]); } } }, j = new d.Geometry(c, e, i); j .computeFaces() .computeNormals() .averageNormals(), this._renderer.createBuffers(h, j); } return this._renderer.drawBuffers(h), this; }), (d.RendererGL.prototype.point = function (a, b, c) { return ( console.log( "point not yet implemented in webgl" ), this ); }), (d.RendererGL.prototype.triangle = function (a) { var b = a[0], c = a[1], e = a[2], f = a[3], g = a[4], h = a[5], i = "tri|" + b + "|" + c + "|" + e + "|" + f + "|" + g + "|" + h; if (!this.geometryInHash(i)) { var j = function () { var a = []; a.push(new d.Vector(b, c, 0)), a.push(new d.Vector(e, f, 0)), a.push(new d.Vector(g, h, 0)), (this.vertices = a), (this.faces = [[0, 1, 2]]), (this.uvs = [ [0, 0], [0, 1], [1, 1], ]); }, k = new d.Geometry(1, 1, j); k.computeNormals(), this.createBuffers(i, k); } return this.drawBuffers(i), this; }), (d.RendererGL.prototype.ellipse = function (a) { var b = a[0], c = a[1], e = a[2], f = a[3], g = a[4] || 24, h = a[5] || 16, i = "ellipse|" + a[0] + "|" + a[1] + "|" + a[2] + "|" + a[3]; if (!this.geometryInHash(i)) { var j = function () { for ( var a, g, h, i = b + 0.5 * e, j = c + 0.5 * f, k = 0; k <= this.detailY; k++ ) { g = k / this.detailY; for ( var l = 0; l <= this.detailX; l++ ) { a = l / this.detailX; var m = 2 * Math.PI * a; if (0 === g) h = new d.Vector(i, j, 0); else { var n = i + 0.5 * e * Math.cos(m), o = j + 0.5 * f * Math.sin(m); h = new d.Vector(n, o, 0); } this.vertices.push(h), this.uvs.push([a, g]); } } }, k = new d.Geometry(g, h, j); k.computeFaces().computeNormals(), this.createBuffers(i, k); } return this.drawBuffers(i), this; }), (d.RendererGL.prototype.rect = function (a) { var b = "rect|" + a[0] + "|" + a[1] + "|" + a[2] + "|" + a[3], c = a[0], e = a[1], f = a[2], g = a[3], h = a[4] || 24, i = a[5] || 16; if (!this.geometryInHash(b)) { var j = function () { for ( var a, b, h, i = 0; i <= this.detailY; i++ ) { b = i / this.detailY; for ( var j = 0; j <= this.detailX; j++ ) (a = j / this.detailX), (h = new d.Vector( c + f * a, e + g * b, 0 )), this.vertices.push(h), this.uvs.push([a, b]); } }, k = new d.Geometry(h, i, j); k.computeFaces().computeNormals(), this.createBuffers(b, k); } return this.drawBuffers(b), this; }), (d.RendererGL.prototype.quad = function () { for ( var a = new Array(arguments.length), b = 0; b < a.length; ++b ) a[b] = arguments[b]; var c = a[0], e = a[1], f = a[2], g = a[3], h = a[4], i = a[5], j = a[6], k = a[7], l = "quad|" + c + "|" + e + "|" + f + "|" + g + "|" + h + "|" + i + "|" + j + "|" + k; if (!this.geometryInHash(l)) { var m = function () { this.vertices.push( new d.Vector(c, e, 0) ), this.vertices.push( new d.Vector(f, g, 0) ), this.vertices.push( new d.Vector(h, i, 0) ), this.vertices.push( new d.Vector(j, k, 0) ), this.uvs.push( [0, 0], [1, 0], [1, 1], [0, 1] ); }, n = new d.Geometry(2, 2, m); n.computeNormals(), (n.faces = [ [0, 1, 2], [2, 3, 0], ]), this.createBuffers(l, n); } return this.drawBuffers(l), this; }), (d.RendererGL.prototype.bezier = function (a) { var b = a[12] || 20; this.beginShape(); for ( var c = [0, 0, 0, 0], d = [0, 0, 0], e = 0; e <= b; e++ ) (c[0] = Math.pow(1 - e / b, 3)), (c[1] = (e / b) * 3 * Math.pow(1 - e / b, 2)), (c[2] = 3 * Math.pow(e / b, 2) * (1 - e / b)), (c[3] = Math.pow(e / b, 3)), (d[0] = a[0] * c[0] + a[3] * c[1] + a[6] * c[2] + a[9] * c[3]), (d[1] = a[1] * c[0] + a[4] * c[1] + a[7] * c[2] + a[10] * c[3]), (d[2] = a[2] * c[0] + a[5] * c[1] + a[8] * c[2] + a[11] * c[3]), this.vertex(d[0], d[1], d[2]); return this.endShape(), this; }), (d.RendererGL.prototype.curve = function (a) { var b = a[12]; this.beginShape(); for ( var c = [0, 0, 0, 0], d = [0, 0, 0], e = 0; e <= b; e++ ) (c[0] = 0.5 * Math.pow(e / b, 3)), (c[1] = 0.5 * Math.pow(e / b, 2)), (c[2] = (e / b) * 0.5), (c[3] = 0.5), (d[0] = c[0] * (-a[0] + 3 * a[3] - 3 * a[6] + a[9]) + c[1] * (2 * a[0] - 5 * a[3] + 4 * a[6] - a[9]) + c[2] * (-a[0] + a[6]) + c[3] * (2 * a[3])), (d[1] = c[0] * (-a[1] + 3 * a[4] - 3 * a[7] + a[10]) + c[1] * (2 * a[1] - 5 * a[4] + 4 * a[7] - a[10]) + c[2] * (-a[1] + a[7]) + c[3] * (2 * a[4])), (d[2] = c[0] * (-a[2] + 3 * a[5] - 3 * a[8] + a[11]) + c[1] * (2 * a[2] - 5 * a[5] + 4 * a[8] - a[11]) + c[2] * (-a[2] + a[8]) + c[3] * (2 * a[5])), this.vertex(d[0], d[1], d[2]); return this.endShape(), this; }), (b.exports = d); }, { "../core/core": 42, "./p5.Geometry": 87 }, ], 93: [ function (a, b, c) { b.exports = { immediateVert: "attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\nuniform float uPointSize;\n\nvarying vec4 vColor;\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n gl_PointSize = uPointSize;\n}\n", vertexColorVert: "attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n}\n", vertexColorFrag: "precision mediump float;\nvarying vec4 vColor;\nvoid main(void) {\n gl_FragColor = vColor;\n}", normalVert: "attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\n\nvarying vec3 vVertexNormal;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vVertexNormal = vec3( uNormalMatrix * aNormal );\n vVertTexCoord = aTexCoord;\n}\n", normalFrag: "precision mediump float;\nvarying vec3 vVertexNormal;\nvoid main(void) {\n gl_FragColor = vec4(vVertexNormal, 1.0);\n}", basicFrag: "precision mediump float;\nvarying vec3 vVertexNormal;\nuniform vec4 uMaterialColor;\nvoid main(void) {\n gl_FragColor = uMaterialColor;\n}", lightVert: "attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform int uAmbientLightCount;\nuniform int uDirectionalLightCount;\nuniform int uPointLightCount;\n\nuniform vec3 uAmbientColor[8];\nuniform vec3 uLightingDirection[8];\nuniform vec3 uDirectionalColor[8];\nuniform vec3 uPointLightLocation[8];\nuniform vec3 uPointLightColor[8];\nuniform bool uSpecular;\n\nvarying vec3 vVertexNormal;\nvarying vec2 vVertTexCoord;\nvarying vec3 vLightWeighting;\n\nvec3 ambientLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 directionalLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor2 = vec3(0.0, 0.0, 0.0);\n\nvoid main(void){\n\n vec4 positionVec4 = vec4(aPosition, 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n\n vec3 vertexNormal = vec3( uNormalMatrix * aNormal );\n vVertexNormal = vertexNormal;\n vVertTexCoord = aTexCoord;\n\n vec4 mvPosition = uModelViewMatrix * vec4(aPosition, 1.0);\n vec3 eyeDirection = normalize(-mvPosition.xyz);\n\n float shininess = 32.0;\n float specularFactor = 2.0;\n float diffuseFactor = 0.3;\n\n for(int i = 0; i < 8; i++){\n if(uAmbientLightCount == i) break;\n ambientLightFactor += uAmbientColor[i];\n }\n\n for(int j = 0; j < 8; j++){\n if(uDirectionalLightCount == j) break;\n vec3 dir = uLightingDirection[j];\n float directionalLightWeighting = max(dot(vertexNormal, dir), 0.0);\n directionalLightFactor += uDirectionalColor[j] * directionalLightWeighting;\n }\n\n for(int k = 0; k < 8; k++){\n if(uPointLightCount == k) break;\n vec3 loc = uPointLightLocation[k];\n vec3 lightDirection = normalize(loc - mvPosition.xyz);\n\n float directionalLightWeighting = max(dot(vertexNormal, lightDirection), 0.0);\n pointLightFactor += uPointLightColor[k] * directionalLightWeighting;\n\n //factor2 for specular\n vec3 reflectionDirection = reflect(-lightDirection, vertexNormal);\n float specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), shininess);\n\n pointLightFactor2 += uPointLightColor[k] * (specularFactor * specularLightWeighting\n + directionalLightWeighting * diffuseFactor);\n }\n\n if(!uSpecular){\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor;\n }else{\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor2;\n }\n\n}\n", lightTextureFrag: "precision mediump float;\n\nuniform vec4 uMaterialColor;\nuniform sampler2D uSampler;\nuniform bool isTexture;\n\nvarying vec3 vLightWeighting;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n if(!isTexture){\n gl_FragColor = vec4(vec3(uMaterialColor.rgb * vLightWeighting), uMaterialColor.a);\n }else{\n vec4 textureColor = texture2D(uSampler, vVertTexCoord);\n if(vLightWeighting == vec3(0., 0., 0.)){\n gl_FragColor = textureColor;\n }else{\n gl_FragColor = vec4(vec3(textureColor.rgb * vLightWeighting), textureColor.a);\n }\n }\n}", }; }, {}, ], }, {}, [33] )(33); });