Last active
July 28, 2019 05:39
-
-
Save taise/675440d1142f1e1e7c0b55744345b447 to your computer and use it in GitHub Desktop.
Original script is logo17.2.js (https://www.google.com/doodles/celebrating-50-years-of-kids-coding)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| var d, aa = "function" == typeof Object.create ? Object.create : function(a) { | |
| var b = function() {}; | |
| b.prototype = a; | |
| return new b | |
| }, | |
| ba; | |
| if ("function" == typeof Object.setPrototypeOf) ba = Object.setPrototypeOf; | |
| else { | |
| var ca; | |
| a: { | |
| var da = { | |
| a: !0 | |
| }, | |
| ea = {}; | |
| try { | |
| ea.__proto__ = da; | |
| ca = ea.a; | |
| break a | |
| } catch (a) {} | |
| ca = !1 | |
| } | |
| ba = ca ? function(a, b) { | |
| a.__proto__ = b; | |
| if (a.__proto__ !== b) throw new TypeError(a + " is not extensible"); | |
| return a | |
| } : null | |
| } | |
| var ha = ba, | |
| k = function(a, b) { | |
| a.prototype = aa(b.prototype); | |
| a.prototype.constructor = a; | |
| if (ha) ha(a, b); | |
| else | |
| for (var c in b) | |
| if ("prototype" != c) | |
| if (Object.defineProperties) { | |
| var e = Object.getOwnPropertyDescriptor(b, c); | |
| e && Object.defineProperty(a, c, e) | |
| } else a[c] = b[c]; | |
| a.superClass_ = b.prototype | |
| }, | |
| ia = "function" == typeof Object.defineProperties ? Object.defineProperty : function(a, b, c) { | |
| a != Array.prototype && a != Object.prototype && (a[b] = c.value) | |
| }, | |
| ja = "undefined" != typeof window && window === this ? this : "undefined" != typeof global && null != | |
| global ? global : this, | |
| ka = function() { | |
| ka = function() {}; | |
| ja.Symbol || (ja.Symbol = ma) | |
| }, | |
| ma = function() { | |
| var a = 0; | |
| return function(b) { | |
| return "jscomp_symbol_" + (b || "") + a++ | |
| } | |
| }(), | |
| oa = function() { | |
| ka(); | |
| var a = ja.Symbol.iterator; | |
| a || (a = ja.Symbol.iterator = ja.Symbol("iterator")); | |
| "function" != typeof Array.prototype[a] && ia(Array.prototype, a, { | |
| configurable: !0, | |
| writable: !0, | |
| value: function() { | |
| return na(this) | |
| } | |
| }); | |
| oa = function() {} | |
| }, | |
| na = function(a) { | |
| var b = 0; | |
| return pa(function() { | |
| return b < a.length ? { | |
| done: !1, | |
| value: a[b++] | |
| } : { | |
| done: !0 | |
| } | |
| }) | |
| }, | |
| pa = function(a) { | |
| oa(); | |
| a = { | |
| next: a | |
| }; | |
| a[ja.Symbol.iterator] = function() { | |
| return this | |
| }; | |
| return a | |
| }, | |
| l = function(a) { | |
| oa(); | |
| var b = a[Symbol.iterator]; | |
| return b ? b.call(a) : na(a) | |
| }, | |
| qa = function(a) { | |
| if (!(a instanceof Array)) { | |
| a = l(a); | |
| for (var b, c = []; !(b = a.next()).done;) c.push(b.value); | |
| a = c | |
| } | |
| return a | |
| }, | |
| ra = function(a, b) { | |
| if (b) { | |
| for (var c = ja, e = a.split("."), f = 0; f < e.length - 1; f++) { | |
| var g = e[f]; | |
| g in c || (c[g] = {}); | |
| c = c[g] | |
| } | |
| e = e[e.length - 1]; | |
| f = c[e]; | |
| g = b(f); | |
| g != f && null != g && ia(c, e, { | |
| configurable: !0, | |
| writable: !0, | |
| value: g | |
| }) | |
| } | |
| }; | |
| ra("String.prototype.repeat", function(a) { | |
| return a ? a : function(a) { | |
| if (null == this) throw new TypeError("The 'this' value for String.prototype.repeat must not be null or undefined"); | |
| var b = this + ""; | |
| if (0 > a || 1342177279 < a) throw new RangeError("Invalid count value"); | |
| a |= 0; | |
| for (var e = ""; a;) | |
| if (a & 1 && (e += b), a >>>= 1) b += b; | |
| return e | |
| } | |
| }); | |
| ra("Array.prototype.fill", function(a) { | |
| return a ? a : function(a, c, e) { | |
| var b = this.length || 0; | |
| 0 > c && (c = Math.max(0, b + c)); | |
| if (null == e || e > b) e = b; | |
| e = Number(e); | |
| 0 > e && (e = Math.max(0, b + e)); | |
| for (c = Number(c || 0); c < e; c++) this[c] = a; | |
| return this | |
| } | |
| }); | |
| ra("Object.is", function(a) { | |
| return a ? a : function(a, c) { | |
| return a === c ? 0 !== a || 1 / a === 1 / c : a !== a && c !== c | |
| } | |
| }); | |
| ra("Array.prototype.includes", function(a) { | |
| return a ? a : function(a, c) { | |
| var b = this; | |
| b instanceof String && (b = String(b)); | |
| for (var f = b.length, g = c || 0; g < f; g++) | |
| if (b[g] == a || Object.is(b[g], a)) return !0; | |
| return !1 | |
| } | |
| }); | |
| var sa = function(a, b) { | |
| return Object.prototype.hasOwnProperty.call(a, b) | |
| }; | |
| ra("WeakMap", function(a) { | |
| function b(a) { | |
| sa(a, e) || ia(a, e, { | |
| value: {} | |
| }) | |
| } | |
| function c(a) { | |
| var c = Object[a]; | |
| c && (Object[a] = function(a) { | |
| b(a); | |
| return c(a) | |
| }) | |
| } | |
| if (function() { | |
| if (!a || !Object.seal) return !1; | |
| try { | |
| var b = Object.seal({}), | |
| c = Object.seal({}), | |
| e = new a([ | |
| [b, 2], | |
| [c, 3] | |
| ]); | |
| if (2 != e.get(b) || 3 != e.get(c)) return !1; | |
| e["delete"](b); | |
| e.set(c, 4); | |
| return !e.has(b) && 4 == e.get(c) | |
| } catch (p) { | |
| return !1 | |
| } | |
| }()) return a; | |
| var e = "$jscomp_hidden_" + Math.random().toString().substring(2); | |
| c("freeze"); | |
| c("preventExtensions"); | |
| c("seal"); | |
| var f = 0, | |
| g = function(a) { | |
| this.PolyfillWeakMap$id_ = | |
| (f += Math.random() + 1).toString(); | |
| if (a) { | |
| ka(); | |
| oa(); | |
| a = l(a); | |
| for (var b; !(b = a.next()).done;) b = b.value, this.set(b[0], b[1]) | |
| } | |
| }; | |
| g.prototype.set = function(a, c) { | |
| b(a); | |
| if (!sa(a, e)) throw Error("a`" + a); | |
| a[e][this.PolyfillWeakMap$id_] = c; | |
| return this | |
| }; | |
| g.prototype.get = function(a) { | |
| return sa(a, e) ? a[e][this.PolyfillWeakMap$id_] : void 0 | |
| }; | |
| g.prototype.has = function(a) { | |
| return sa(a, e) && sa(a[e], this.PolyfillWeakMap$id_) | |
| }; | |
| g.prototype["delete"] = function(a) { | |
| return sa(a, e) && sa(a[e], this.PolyfillWeakMap$id_) ? delete a[e][this.PolyfillWeakMap$id_] : | |
| !1 | |
| }; | |
| return g | |
| }); | |
| ra("Map", function(a) { | |
| if (function() { | |
| if (!a || !a.prototype.entries || "function" != typeof Object.seal) return !1; | |
| try { | |
| var b = Object.seal({ | |
| x: 4 | |
| }), | |
| c = new a(l([ | |
| [b, "s"] | |
| ])); | |
| if ("s" != c.get(b) || 1 != c.size || c.get({ | |
| x: 4 | |
| }) || c.set({ | |
| x: 4 | |
| }, "t") != c || 2 != c.size) return !1; | |
| var e = c.entries(), | |
| f = e.next(); | |
| if (f.done || f.value[0] != b || "s" != f.value[1]) return !1; | |
| f = e.next(); | |
| return f.done || 4 != f.value[0].x || "t" != f.value[1] || !e.next().done ? !1 : !0 | |
| } catch (t) { | |
| return !1 | |
| } | |
| }()) return a; | |
| ka(); | |
| oa(); | |
| var b = new WeakMap, | |
| c = function(a) { | |
| this.data_ = {}; | |
| this.PolyfillMap$head_ = | |
| g(); | |
| this.size = 0; | |
| if (a) { | |
| a = l(a); | |
| for (var b; !(b = a.next()).done;) b = b.value, this.set(b[0], b[1]) | |
| } | |
| }; | |
| c.prototype.set = function(a, b) { | |
| var c = e(this, a); | |
| c.list || (c.list = this.data_[c.id] = []); | |
| c.entry ? c.entry.value = b : (c.entry = { | |
| next: this.PolyfillMap$head_, | |
| previous: this.PolyfillMap$head_.previous, | |
| head: this.PolyfillMap$head_, | |
| key: a, | |
| value: b | |
| }, c.list.push(c.entry), this.PolyfillMap$head_.previous.next = c.entry, this.PolyfillMap$head_.previous = c.entry, this.size++); | |
| return this | |
| }; | |
| c.prototype["delete"] = function(a) { | |
| a = e(this, a); | |
| return a.entry && | |
| a.list ? (a.list.splice(a.index, 1), a.list.length || delete this.data_[a.id], a.entry.previous.next = a.entry.next, a.entry.next.previous = a.entry.previous, a.entry.head = null, this.size--, !0) : !1 | |
| }; | |
| c.prototype.clear = function() { | |
| this.data_ = {}; | |
| this.PolyfillMap$head_ = this.PolyfillMap$head_.previous = g(); | |
| this.size = 0 | |
| }; | |
| c.prototype.has = function(a) { | |
| return !!e(this, a).entry | |
| }; | |
| c.prototype.get = function(a) { | |
| return (a = e(this, a).entry) && a.value | |
| }; | |
| c.prototype.entries = function() { | |
| return f(this, function(a) { | |
| return [a.key, a.value] | |
| }) | |
| }; | |
| c.prototype.keys = | |
| function() { | |
| return f(this, function(a) { | |
| return a.key | |
| }) | |
| }; | |
| c.prototype.values = function() { | |
| return f(this, function(a) { | |
| return a.value | |
| }) | |
| }; | |
| c.prototype.forEach = function(a, b) { | |
| for (var c = this.entries(), e; !(e = c.next()).done;) e = e.value, a.call(b, e[1], e[0], this) | |
| }; | |
| c.prototype[Symbol.iterator] = c.prototype.entries; | |
| var e = function(a, c) { | |
| var e = c && typeof c; | |
| "object" == e || "function" == e ? b.has(c) ? e = b.get(c) : (e = "" + ++h, b.set(c, e)) : e = "p_" + c; | |
| var f = a.data_[e]; | |
| if (f && sa(a.data_, e)) | |
| for (var g = 0; g < f.length; g++) { | |
| var m = f[g]; | |
| if (c !== c && m.key !== | |
| m.key || c === m.key) return { | |
| id: e, | |
| list: f, | |
| index: g, | |
| entry: m | |
| } | |
| } | |
| return { | |
| id: e, | |
| list: f, | |
| index: -1, | |
| entry: void 0 | |
| } | |
| }, | |
| f = function(a, b) { | |
| var c = a.PolyfillMap$head_; | |
| return pa(function() { | |
| if (c) { | |
| for (; c.head != a.PolyfillMap$head_;) c = c.previous; | |
| for (; c.next != c.head;) return c = c.next, { | |
| done: !1, | |
| value: b(c) | |
| }; | |
| c = null | |
| } | |
| return { | |
| done: !0, | |
| value: void 0 | |
| } | |
| }) | |
| }, | |
| g = function() { | |
| var a = {}; | |
| return a.previous = a.next = a.head = a | |
| }, | |
| h = 0; | |
| return c | |
| }); | |
| ra("Promise", function(a) { | |
| function b() { | |
| this.batch_ = null | |
| } | |
| function c(a) { | |
| return a instanceof f ? a : new f(function(b) { | |
| b(a) | |
| }) | |
| } | |
| if (a) return a; | |
| b.prototype.asyncExecute = function(a) { | |
| null == this.batch_ && (this.batch_ = [], this.asyncExecuteBatch_()); | |
| this.batch_.push(a) | |
| }; | |
| b.prototype.asyncExecuteBatch_ = function() { | |
| var a = this; | |
| this.asyncExecuteFunction(function() { | |
| a.executeBatch_() | |
| }) | |
| }; | |
| var e = ja.setTimeout; | |
| b.prototype.asyncExecuteFunction = function(a) { | |
| e(a, 0) | |
| }; | |
| b.prototype.executeBatch_ = function() { | |
| for (; this.batch_ && this.batch_.length;) { | |
| var a = | |
| this.batch_; | |
| this.batch_ = []; | |
| for (var b = 0; b < a.length; ++b) { | |
| var c = a[b]; | |
| delete a[b]; | |
| try { | |
| c() | |
| } catch (p) { | |
| this.asyncThrow_(p) | |
| } | |
| } | |
| } | |
| this.batch_ = null | |
| }; | |
| b.prototype.asyncThrow_ = function(a) { | |
| this.asyncExecuteFunction(function() { | |
| throw a; | |
| }) | |
| }; | |
| var f = function(a) { | |
| this.state_ = 0; | |
| this.PolyfillPromise$result_ = void 0; | |
| this.onSettledCallbacks_ = []; | |
| var b = this.createResolveAndReject_(); | |
| try { | |
| a(b.resolve, b.reject) | |
| } catch (n) { | |
| b.reject(n) | |
| } | |
| }; | |
| f.prototype.createResolveAndReject_ = function() { | |
| function a(a) { | |
| return function(e) { | |
| c || (c = !0, a.call(b, e)) | |
| } | |
| } | |
| var b = this, | |
| c = !1; | |
| return { | |
| resolve: a(this.resolveTo_), | |
| reject: a(this.reject_) | |
| } | |
| }; | |
| f.prototype.resolveTo_ = function(a) { | |
| if (a === this) this.reject_(new TypeError("A Promise cannot resolve to itself")); | |
| else if (a instanceof f) this.settleSameAsPromise_(a); | |
| else { | |
| a: switch (typeof a) { | |
| case "object": | |
| var b = null != a; | |
| break a; | |
| case "function": | |
| b = !0; | |
| break a; | |
| default: | |
| b = !1 | |
| } | |
| b ? this.resolveToNonPromiseObj_(a) : this.fulfill_(a) | |
| } | |
| }; | |
| f.prototype.resolveToNonPromiseObj_ = function(a) { | |
| var b = void 0; | |
| try { | |
| b = a.then | |
| } catch (n) { | |
| this.reject_(n); | |
| return | |
| } | |
| "function" == | |
| typeof b ? this.settleSameAsThenable_(b, a) : this.fulfill_(a) | |
| }; | |
| f.prototype.reject_ = function(a) { | |
| this.settle_(2, a) | |
| }; | |
| f.prototype.fulfill_ = function(a) { | |
| this.settle_(1, a) | |
| }; | |
| f.prototype.settle_ = function(a, b) { | |
| if (0 != this.state_) throw Error("Cannot settle(" + a + ", " + b | "): Promise already settled in state" + this.state_); | |
| this.state_ = a; | |
| this.PolyfillPromise$result_ = b; | |
| this.executeOnSettledCallbacks_() | |
| }; | |
| f.prototype.executeOnSettledCallbacks_ = function() { | |
| if (null != this.onSettledCallbacks_) { | |
| for (var a = this.onSettledCallbacks_, | |
| b = 0; b < a.length; ++b) a[b].call(), a[b] = null; | |
| this.onSettledCallbacks_ = null | |
| } | |
| }; | |
| var g = new b; | |
| f.prototype.settleSameAsPromise_ = function(a) { | |
| var b = this.createResolveAndReject_(); | |
| a.callWhenSettled_(b.resolve, b.reject) | |
| }; | |
| f.prototype.settleSameAsThenable_ = function(a, b) { | |
| var c = this.createResolveAndReject_(); | |
| try { | |
| a.call(b, c.resolve, c.reject) | |
| } catch (p) { | |
| c.reject(p) | |
| } | |
| }; | |
| f.prototype.then = function(a, b) { | |
| function c(a, b) { | |
| return "function" == typeof a ? function(b) { | |
| try { | |
| e(a(b)) | |
| } catch (Ga) { | |
| g(Ga) | |
| } | |
| } : b | |
| } | |
| var e, g, h = new f(function(a, b) { | |
| e = a; | |
| g = | |
| b | |
| }); | |
| this.callWhenSettled_(c(a, e), c(b, g)); | |
| return h | |
| }; | |
| f.prototype["catch"] = function(a) { | |
| return this.then(void 0, a) | |
| }; | |
| f.prototype.callWhenSettled_ = function(a, b) { | |
| function c() { | |
| switch (e.state_) { | |
| case 1: | |
| a(e.PolyfillPromise$result_); | |
| break; | |
| case 2: | |
| b(e.PolyfillPromise$result_); | |
| break; | |
| default: | |
| throw Error("b`" + e.state_); | |
| } | |
| } | |
| var e = this; | |
| null == this.onSettledCallbacks_ ? g.asyncExecute(c) : this.onSettledCallbacks_.push(function() { | |
| g.asyncExecute(c) | |
| }) | |
| }; | |
| f.resolve = c; | |
| f.reject = function(a) { | |
| return new f(function(b, c) { | |
| c(a) | |
| }) | |
| }; | |
| f.race = | |
| function(a) { | |
| return new f(function(b, e) { | |
| for (var f = l(a), g = f.next(); !g.done; g = f.next()) c(g.value).callWhenSettled_(b, e) | |
| }) | |
| }; | |
| f.all = function(a) { | |
| var b = l(a), | |
| e = b.next(); | |
| return e.done ? c([]) : new f(function(a, f) { | |
| function g(b) { | |
| return function(c) { | |
| h[b] = c; | |
| m--; | |
| 0 == m && a(h) | |
| } | |
| } | |
| var h = [], | |
| m = 0; | |
| do h.push(void 0), m++, c(e.value).callWhenSettled_(g(h.length - 1), f), e = b.next(); while (!e.done) | |
| }) | |
| }; | |
| return f | |
| }); | |
| var ta = ta || {}, | |
| q = this, | |
| va = function(a) { | |
| return void 0 !== a | |
| }, | |
| u = function(a) { | |
| return "string" == typeof a | |
| }, | |
| v = function(a) { | |
| return "number" == typeof a | |
| }, | |
| wa = function() {}, | |
| xa = function(a) { | |
| a.instance_ = void 0; | |
| a.getInstance = function() { | |
| return a.instance_ ? a.instance_ : a.instance_ = new a | |
| } | |
| }, | |
| ya = function(a) { | |
| var b = typeof a; | |
| if ("object" == b) | |
| if (a) { | |
| if (a instanceof Array) return "array"; | |
| if (a instanceof Object) return b; | |
| var c = Object.prototype.toString.call(a); | |
| if ("[object Window]" == c) return "object"; | |
| if ("[object Array]" == c || "number" == typeof a.length && | |
| "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array"; | |
| if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function" | |
| } else return "null"; | |
| else if ("function" == b && "undefined" == typeof a.call) return "object"; | |
| return b | |
| }, | |
| za = function(a) { | |
| return "array" == ya(a) | |
| }, | |
| Aa = function(a) { | |
| var b = ya(a); | |
| return "array" == b || "object" == b && "number" == typeof a.length | |
| }, | |
| Ba = function(a) { | |
| return "function" == | |
| ya(a) | |
| }, | |
| Ca = function(a) { | |
| var b = typeof a; | |
| return "object" == b && null != a || "function" == b | |
| }, | |
| Fa = function(a) { | |
| return a[Da] || (a[Da] = ++Ea) | |
| }, | |
| Da = "closure_uid_" + (1E9 * Math.random() >>> 0), | |
| Ea = 0, | |
| Ha = function(a, b, c) { | |
| return a.call.apply(a.bind, arguments) | |
| }, | |
| Ia = function(a, b, c) { | |
| if (!a) throw Error(); | |
| if (2 < arguments.length) { | |
| var e = Array.prototype.slice.call(arguments, 2); | |
| return function() { | |
| var c = Array.prototype.slice.call(arguments); | |
| Array.prototype.unshift.apply(c, e); | |
| return a.apply(b, c) | |
| } | |
| } | |
| return function() { | |
| return a.apply(b, arguments) | |
| } | |
| }, | |
| Ja = function(a, b, c) { | |
| Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? Ja = Ha : Ja = Ia; | |
| return Ja.apply(null, arguments) | |
| }, | |
| Ka = function(a, b) { | |
| var c = Array.prototype.slice.call(arguments, 1); | |
| return function() { | |
| var b = c.slice(); | |
| b.push.apply(b, arguments); | |
| return a.apply(this, b) | |
| } | |
| }, | |
| La = Date.now || function() { | |
| return +new Date | |
| }, | |
| Ma = function(a, b) { | |
| var c = a.split("."), | |
| e = q; | |
| c[0] in e || !e.execScript || e.execScript("var " + c[0]); | |
| for (var f; c.length && (f = c.shift());) !c.length && va(b) ? e[f] = b : e[f] && e[f] !== | |
| Object.prototype[f] ? e = e[f] : e = e[f] = {} | |
| }, | |
| w = function(a, b) { | |
| function c() {} | |
| c.prototype = b.prototype; | |
| a.superClass_ = b.prototype; | |
| a.prototype = new c; | |
| a.prototype.constructor = a; | |
| a.base = function(a, c, g) { | |
| for (var e = Array(arguments.length - 2), f = 2; f < arguments.length; f++) e[f - 2] = arguments[f]; | |
| return b.prototype[c].apply(a, e) | |
| } | |
| }; | |
| var Na = function() {}; | |
| Na.prototype.allowCursorControl = function() { | |
| return !0 | |
| }; | |
| var Oa = function(a) { | |
| this.SRC = a; | |
| this.doodle_Preloader$finishedLoading_ = !1; | |
| this.preloadCallbacks_ = [] | |
| }, | |
| Pa = function(a) { | |
| if (!a.doodle_Preloader$finishedLoading_) { | |
| a.doodle_Preloader$finishedLoading_ = !0; | |
| for (var b = 0, c; c = a.preloadCallbacks_[b]; b++) c() | |
| } | |
| }; | |
| Oa.prototype.isLoaded = function() { | |
| return this.doodle_Preloader$finishedLoading_ | |
| }; | |
| var Qa = function(a, b) { | |
| a.doodle_Preloader$finishedLoading_ ? b() : a.preloadCallbacks_.push(b) | |
| }; | |
| Oa.prototype.unload = function() { | |
| this.doodle_Preloader$finishedLoading_ = !1; | |
| this.preloadCallbacks_ = [] | |
| }; | |
| var Ra = function(a) { | |
| Oa.call(this, a); | |
| this.image = new Image | |
| }; | |
| w(Ra, Oa); | |
| Ra.prototype.preload = function() { | |
| if (!this.image.src) { | |
| var a = this; | |
| this.image.onload = function() { | |
| Pa(a) | |
| }; | |
| this.image.src = this.SRC; | |
| (this.image.complete || "complete" == this.image.readyState) && Pa(this) | |
| } | |
| }; | |
| Ra.prototype.unload = function() { | |
| Ra.superClass_.unload.call(this); | |
| this.image = new Image | |
| }; | |
| var Ua = function(a) { | |
| var b = new Image, | |
| c = Sa, | |
| e = ""; | |
| b.onerror = b.onload = b.onabort = function() { | |
| delete Ta[c] | |
| }; | |
| Ta[c] = b; - 1 != a.search("&ei=") || (e = "&ei="); | |
| a = "/gen_204?atyp=i&ct=doodle&cad=" + a + e + "&zx=" + La(); | |
| /^http:/i.test(a) && "https:" == window.location.protocol ? delete Ta[c] : (b.src = a, Sa = c + 1) | |
| }, | |
| Ta = [], | |
| Sa = 0; | |
| var Va; | |
| var Wa = Array.prototype.indexOf ? function(a, b) { | |
| return Array.prototype.indexOf.call(a, b, void 0) | |
| } : function(a, b) { | |
| if (u(a)) return u(b) && 1 == b.length ? a.indexOf(b, 0) : -1; | |
| for (var c = 0; c < a.length; c++) | |
| if (c in a && a[c] === b) return c; | |
| return -1 | |
| }, | |
| Xa = Array.prototype.lastIndexOf ? function(a, b) { | |
| return Array.prototype.lastIndexOf.call(a, b, a.length - 1) | |
| } : function(a, b) { | |
| var c = a.length - 1; | |
| 0 > c && (c = Math.max(0, a.length + c)); | |
| if (u(a)) return u(b) && 1 == b.length ? a.lastIndexOf(b, c) : -1; | |
| for (; 0 <= c; c--) | |
| if (c in a && a[c] === b) return c; | |
| return -1 | |
| }, | |
| Ya = | |
| Array.prototype.forEach ? function(a, b, c) { | |
| Array.prototype.forEach.call(a, b, c) | |
| } : function(a, b, c) { | |
| for (var e = a.length, f = u(a) ? a.split("") : a, g = 0; g < e; g++) g in f && b.call(c, f[g], g, a) | |
| }, | |
| Za = Array.prototype.filter ? function(a, b) { | |
| return Array.prototype.filter.call(a, b, void 0) | |
| } : function(a, b) { | |
| for (var c = a.length, e = [], f = 0, g = u(a) ? a.split("") : a, h = 0; h < c; h++) | |
| if (h in g) { | |
| var m = g[h]; | |
| b.call(void 0, m, h, a) && (e[f++] = m) | |
| } return e | |
| }, | |
| $a = Array.prototype.map ? function(a, b, c) { | |
| return Array.prototype.map.call(a, b, c) | |
| } : function(a, b, c) { | |
| for (var e = | |
| a.length, f = Array(e), g = u(a) ? a.split("") : a, h = 0; h < e; h++) h in g && (f[h] = b.call(c, g[h], h, a)); | |
| return f | |
| }, | |
| ab = Array.prototype.every ? function(a, b) { | |
| return Array.prototype.every.call(a, b, void 0) | |
| } : function(a, b) { | |
| for (var c = a.length, e = u(a) ? a.split("") : a, f = 0; f < c; f++) | |
| if (f in e && !b.call(void 0, e[f], f, a)) return !1; | |
| return !0 | |
| }, | |
| bb = function(a, b, c) { | |
| a: { | |
| for (var e = a.length, f = u(a) ? a.split("") : a, g = 0; g < e; g++) | |
| if (g in f && b.call(c, f[g], g, a)) { | |
| b = g; | |
| break a | |
| } b = -1 | |
| } | |
| return 0 > b ? null : u(a) ? a.charAt(b) : a[b] | |
| }, | |
| cb = function(a, b) { | |
| for (var c = u(a) ? a.split("") : | |
| a, e = a.length - 1; 0 <= e; e--) | |
| if (e in c && b.call(void 0, c[e], e, a)) return e; | |
| return -1 | |
| }, | |
| db = function(a, b) { | |
| return 0 <= Wa(a, b) | |
| }, | |
| eb = function(a, b) { | |
| var c = Wa(a, b), | |
| e; | |
| (e = 0 <= c) && Array.prototype.splice.call(a, c, 1); | |
| return e | |
| }, | |
| fb = function(a) { | |
| return Array.prototype.concat.apply([], arguments) | |
| }, | |
| gb = function(a) { | |
| var b = a.length; | |
| if (0 < b) { | |
| for (var c = Array(b), e = 0; e < b; e++) c[e] = a[e]; | |
| return c | |
| } | |
| return [] | |
| }, | |
| hb = function(a, b) { | |
| for (var c = 1; c < arguments.length; c++) { | |
| var e = arguments[c]; | |
| if (Aa(e)) { | |
| var f = a.length || 0, | |
| g = e.length || 0; | |
| a.length = f + g; | |
| for (var h = | |
| 0; h < g; h++) a[f + h] = e[h] | |
| } else a.push(e) | |
| } | |
| }, | |
| jb = function(a, b, c, e) { | |
| Array.prototype.splice.apply(a, ib(arguments, 1)) | |
| }, | |
| ib = function(a, b, c) { | |
| return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c) | |
| }; | |
| var kb = function(a) { | |
| if (a.classList) return a.classList; | |
| a = a.className; | |
| return u(a) && a.match(/\S+/g) || [] | |
| }, | |
| lb = function(a, b) { | |
| return a.classList ? a.classList.contains(b) : db(kb(a), b) | |
| }, | |
| mb = function(a, b) { | |
| a.classList ? a.classList.add(b) : lb(a, b) || (a.className += 0 < a.className.length ? " " + b : b) | |
| }, | |
| nb = function(a, b) { | |
| if (a.classList) Ya(b, function(b) { | |
| mb(a, b) | |
| }); | |
| else { | |
| var c = {}; | |
| Ya(kb(a), function(a) { | |
| c[a] = !0 | |
| }); | |
| Ya(b, function(a) { | |
| c[a] = !0 | |
| }); | |
| a.className = ""; | |
| for (var e in c) a.className += 0 < a.className.length ? " " + e : e | |
| } | |
| }, | |
| ob = function(a, b) { | |
| a.classList ? | |
| a.classList.remove(b) : lb(a, b) && (a.className = Za(kb(a), function(a) { | |
| return a != b | |
| }).join(" ")) | |
| }, | |
| pb = function(a, b) { | |
| a.classList ? Ya(b, function(b) { | |
| ob(a, b) | |
| }) : a.className = Za(kb(a), function(a) { | |
| return !db(b, a) | |
| }).join(" ") | |
| }; | |
| var qb = RegExp("[A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]"), | |
| rb = RegExp("^[^A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]*[\u0591-\u06ef\u06fa-\u07ff\u200f\ufb1d-\ufdff\ufe70-\ufefc]"), | |
| sb = /^http:\/\/.*/, | |
| tb = /\s+/, | |
| ub = /[\d\u06f0-\u06f9]/; | |
| var vb = function(a) { | |
| return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "") | |
| }, | |
| wb = String.prototype.trim ? function(a) { | |
| return a.trim() | |
| } : function(a) { | |
| return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1] | |
| }, | |
| xb = function(a, b) { | |
| var c = String(a).toLowerCase(), | |
| e = String(b).toLowerCase(); | |
| return c < e ? -1 : c == e ? 0 : 1 | |
| }, | |
| Fb = function(a) { | |
| if (!yb.test(a)) return a; - 1 != a.indexOf("&") && (a = a.replace(zb, "&")); - 1 != a.indexOf("<") && (a = a.replace(Ab, "<")); - 1 != a.indexOf(">") && (a = a.replace(Bb, ">")); - 1 != a.indexOf('"') && | |
| (a = a.replace(Cb, """)); - 1 != a.indexOf("'") && (a = a.replace(Db, "'")); - 1 != a.indexOf("\x00") && (a = a.replace(Eb, "�")); | |
| return a | |
| }, | |
| zb = /&/g, | |
| Ab = /</g, | |
| Bb = />/g, | |
| Cb = /"/g, | |
| Db = /'/g, | |
| Eb = /\x00/g, | |
| yb = /[\x00&<>"']/, | |
| Gb = function(a, b) { | |
| return -1 != a.indexOf(b) | |
| }, | |
| Hb = String.prototype.repeat ? function(a, b) { | |
| return a.repeat(b) | |
| } : function(a, b) { | |
| return Array(b + 1).join(a) | |
| }, | |
| Ib = function(a, b) { | |
| var c = va(void 0) ? a.toFixed(void 0) : String(a), | |
| e = c.indexOf("."); - 1 == e && (e = c.length); | |
| return Hb("0", Math.max(0, b - e)) + c | |
| }, | |
| Jb = function(a, b) { | |
| return a < | |
| b ? -1 : a > b ? 1 : 0 | |
| }, | |
| Kb = function() { | |
| return "background-color".replace(/\-([a-z])/g, function(a, b) { | |
| return b.toUpperCase() | |
| }) | |
| }, | |
| Lb = function(a) { | |
| var b = u(void 0) ? "undefined".replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08") : "\\s"; | |
| return a.replace(new RegExp("(^" + (b ? "|[" + b + "]+" : "") + ")([a-z])", "g"), function(a, b, f) { | |
| return b + f.toUpperCase() | |
| }) | |
| }; | |
| var Mb = function(a, b) { | |
| return Math.min(Math.max(a, 0), b) | |
| }, | |
| Nb = function(a, b, c) { | |
| return a + c * (b - a) | |
| }; | |
| var Ob = "StopIteration" in q ? q.StopIteration : { | |
| message: "StopIteration", | |
| stack: "" | |
| }, | |
| Pb = function() {}; | |
| Pb.prototype.next = function() { | |
| throw Ob; | |
| }; | |
| Pb.prototype.__iterator__ = function() { | |
| return this | |
| }; | |
| var Qb = function(a) { | |
| if (a instanceof Pb) return a; | |
| if ("function" == typeof a.__iterator__) return a.__iterator__(!1); | |
| if (Aa(a)) { | |
| var b = 0, | |
| c = new Pb; | |
| c.next = function() { | |
| for (;;) { | |
| if (b >= a.length) throw Ob; | |
| if (b in a) return a[b++]; | |
| b++ | |
| } | |
| }; | |
| return c | |
| } | |
| throw Error("c"); | |
| }, | |
| Rb = function(a) { | |
| try { | |
| return Qb(a).next() | |
| } catch (b) { | |
| if (b != Ob) throw b; | |
| return null | |
| } | |
| }; | |
| var Sb = function(a, b, c) { | |
| for (var e in a) b.call(c, a[e], e, a) | |
| }, | |
| Tb = function(a) { | |
| var b = [], | |
| c = 0, | |
| e; | |
| for (e in a) b[c++] = a[e]; | |
| return b | |
| }, | |
| Ub = function(a) { | |
| var b = [], | |
| c = 0, | |
| e; | |
| for (e in a) b[c++] = e; | |
| return b | |
| }, | |
| Vb = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "), | |
| Wb = function(a, b) { | |
| for (var c, e, f = 1; f < arguments.length; f++) { | |
| e = arguments[f]; | |
| for (c in e) a[c] = e[c]; | |
| for (var g = 0; g < Vb.length; g++) c = Vb[g], Object.prototype.hasOwnProperty.call(e, c) && (a[c] = e[c]) | |
| } | |
| }, | |
| Xb = function(a) { | |
| var b = arguments.length; | |
| if (1 == b && za(arguments[0])) return Xb.apply(null, arguments[0]); | |
| for (var c = {}, e = 0; e < b; e++) c[arguments[e]] = !0; | |
| return c | |
| }; | |
| var Yb = function(a, b) { | |
| this.map_ = {}; | |
| this.goog_structs_Map$keys_ = []; | |
| this.version_ = this.goog_structs_Map$count_ = 0; | |
| var c = arguments.length; | |
| if (1 < c) { | |
| if (c % 2) throw Error("e"); | |
| for (var e = 0; e < c; e += 2) this.set(arguments[e], arguments[e + 1]) | |
| } else if (a) { | |
| a instanceof Yb ? (c = a.getKeys(), e = a.getValues()) : (c = Ub(a), e = Tb(a)); | |
| for (var f = 0; f < c.length; f++) this.set(c[f], e[f]) | |
| } | |
| }; | |
| Yb.prototype.getValues = function() { | |
| Zb(this); | |
| for (var a = [], b = 0; b < this.goog_structs_Map$keys_.length; b++) a.push(this.map_[this.goog_structs_Map$keys_[b]]); | |
| return a | |
| }; | |
| Yb.prototype.getKeys = function() { | |
| Zb(this); | |
| return this.goog_structs_Map$keys_.concat() | |
| }; | |
| Yb.prototype.equals = function(a) { | |
| if (this === a) return !0; | |
| if (this.goog_structs_Map$count_ != a.goog_structs_Map$count_) return !1; | |
| var b = $b; | |
| Zb(this); | |
| for (var c, e = 0; c = this.goog_structs_Map$keys_[e]; e++) | |
| if (!b(this.get(c), a.get(c))) return !1; | |
| return !0 | |
| }; | |
| var $b = function(a, b) { | |
| return a === b | |
| }; | |
| Yb.prototype.remove = function(a) { | |
| return ac(this.map_, a) ? (delete this.map_[a], this.goog_structs_Map$count_--, this.version_++, this.goog_structs_Map$keys_.length > 2 * this.goog_structs_Map$count_ && Zb(this), !0) : !1 | |
| }; | |
| var Zb = function(a) { | |
| if (a.goog_structs_Map$count_ != a.goog_structs_Map$keys_.length) { | |
| for (var b = 0, c = 0; b < a.goog_structs_Map$keys_.length;) { | |
| var e = a.goog_structs_Map$keys_[b]; | |
| ac(a.map_, e) && (a.goog_structs_Map$keys_[c++] = e); | |
| b++ | |
| } | |
| a.goog_structs_Map$keys_.length = c | |
| } | |
| if (a.goog_structs_Map$count_ != a.goog_structs_Map$keys_.length) { | |
| var f = {}; | |
| for (c = b = 0; b < a.goog_structs_Map$keys_.length;) e = a.goog_structs_Map$keys_[b], ac(f, e) || (a.goog_structs_Map$keys_[c++] = e, f[e] = 1), b++; | |
| a.goog_structs_Map$keys_.length = c | |
| } | |
| }; | |
| Yb.prototype.get = function(a, b) { | |
| return ac(this.map_, a) ? this.map_[a] : b | |
| }; | |
| Yb.prototype.set = function(a, b) { | |
| ac(this.map_, a) || (this.goog_structs_Map$count_++, this.goog_structs_Map$keys_.push(a), this.version_++); | |
| this.map_[a] = b | |
| }; | |
| Yb.prototype.forEach = function(a, b) { | |
| for (var c = this.getKeys(), e = 0; e < c.length; e++) { | |
| var f = c[e], | |
| g = this.get(f); | |
| a.call(b, g, f, this) | |
| } | |
| }; | |
| Yb.prototype.__iterator__ = function(a) { | |
| Zb(this); | |
| var b = 0, | |
| c = this.version_, | |
| e = this, | |
| f = new Pb; | |
| f.next = function() { | |
| if (c != e.version_) throw Error("f"); | |
| if (b >= e.goog_structs_Map$keys_.length) throw Ob; | |
| var f = e.goog_structs_Map$keys_[b++]; | |
| return a ? f : e.map_[f] | |
| }; | |
| return f | |
| }; | |
| var ac = function(a, b) { | |
| return Object.prototype.hasOwnProperty.call(a, b) | |
| }; | |
| var bc = function(a) { | |
| if (a.getValues && "function" == typeof a.getValues) return a.getValues(); | |
| if (u(a)) return a.split(""); | |
| if (Aa(a)) { | |
| for (var b = [], c = a.length, e = 0; e < c; e++) b.push(a[e]); | |
| return b | |
| } | |
| return Tb(a) | |
| }, | |
| cc = function(a, b) { | |
| if (a.forEach && "function" == typeof a.forEach) a.forEach(b, void 0); | |
| else if (Aa(a) || u(a)) Ya(a, b, void 0); | |
| else { | |
| if (a.getKeys && "function" == typeof a.getKeys) var c = a.getKeys(); | |
| else if (a.getValues && "function" == typeof a.getValues) c = void 0; | |
| else if (Aa(a) || u(a)) { | |
| c = []; | |
| for (var e = a.length, f = 0; f < e; f++) c.push(f) | |
| } else c = | |
| Ub(a); | |
| e = bc(a); | |
| f = e.length; | |
| for (var g = 0; g < f; g++) b.call(void 0, e[g], c && c[g], a) | |
| } | |
| }; | |
| var dc = /^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/, | |
| ec = function(a, b) { | |
| if (a) | |
| for (var c = a.split("&"), e = 0; e < c.length; e++) { | |
| var f = c[e].indexOf("="), | |
| g = null; | |
| if (0 <= f) { | |
| var h = c[e].substring(0, f); | |
| g = c[e].substring(f + 1) | |
| } else h = c[e]; | |
| b(h, g ? decodeURIComponent(g.replace(/\+/g, " ")) : "") | |
| } | |
| }, | |
| fc = function(a, b) { | |
| var c; | |
| if (c = "ds" + (null != b ? "=" + encodeURIComponent(String(b)) : "")) { | |
| var e = a.indexOf("#"); | |
| 0 > e && (e = a.length); | |
| var f = a.indexOf("?"); | |
| if (0 > f || f > e) { | |
| f = e; | |
| var g = "" | |
| } else g = a.substring(f + 1, e); | |
| e = [a.substr(0, f), g, a.substr(e)]; | |
| f = e[1]; | |
| e[1] = c ? f ? f + "&" + c : c : f; | |
| c = e[0] + (e[1] ? "?" + e[1] : "") + e[2] | |
| } else c = a; | |
| return c | |
| }, | |
| gc = function(a, b, c) { | |
| for (; 0 <= (b = a.indexOf("ds", b)) && b < c;) { | |
| var e = a.charCodeAt(b - 1); | |
| if (38 == e || 63 == e) | |
| if (e = a.charCodeAt(b + 2), !e || 61 == e || 38 == e || 35 == e) return b; | |
| b += 3 | |
| } | |
| return -1 | |
| }, | |
| hc = /#|$/, | |
| ic = /[?&]($|#)/, | |
| jc = function(a) { | |
| for (var b = a.search(hc), c = 0, e, f = []; 0 <= (e = gc(a, c, b));) f.push(a.substring(c, e)), c = Math.min(a.indexOf("&", e) + 1 || b, b); | |
| f.push(a.substr(c)); | |
| return f.join("").replace(ic, | |
| "$1") | |
| }; | |
| var kc = function(a, b) { | |
| this.domain_ = this.userInfo_ = this.scheme_ = ""; | |
| this.port_ = null; | |
| this.fragment_ = this.path_ = ""; | |
| this.goog_Uri$ignoreCase_ = !1; | |
| var c; | |
| a instanceof kc ? (this.goog_Uri$ignoreCase_ = va(b) ? b : a.goog_Uri$ignoreCase_, lc(this, a.scheme_), this.userInfo_ = a.userInfo_, this.domain_ = a.domain_, mc(this, a.port_), this.path_ = a.path_, nc(this, oc(a.queryData_)), this.fragment_ = a.fragment_) : a && (c = String(a).match(dc)) ? (this.goog_Uri$ignoreCase_ = !!b, lc(this, c[1] || "", !0), this.userInfo_ = pc(c[2] || ""), this.domain_ = pc(c[3] || | |
| "", !0), mc(this, c[4]), this.path_ = pc(c[5] || "", !0), nc(this, c[6] || "", !0), this.fragment_ = pc(c[7] || "")) : (this.goog_Uri$ignoreCase_ = !!b, this.queryData_ = new qc(null, this.goog_Uri$ignoreCase_)) | |
| }; | |
| kc.prototype.toString = function() { | |
| var a = [], | |
| b = this.scheme_; | |
| b && a.push(rc(b, sc, !0), ":"); | |
| var c = this.domain_; | |
| if (c || "file" == b) a.push("//"), (b = this.userInfo_) && a.push(rc(b, sc, !0), "@"), a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g, "%$1")), c = this.port_, null != c && a.push(":", String(c)); | |
| if (c = this.path_) this.domain_ && "/" != c.charAt(0) && a.push("/"), a.push(rc(c, "/" == c.charAt(0) ? tc : uc, !0)); | |
| (c = this.queryData_.toString()) && a.push("?", c); | |
| (c = this.fragment_) && a.push("#", rc(c, vc)); | |
| return a.join("") | |
| }; | |
| kc.prototype.resolve = function(a) { | |
| var b = new kc(this), | |
| c = !!a.scheme_; | |
| c ? lc(b, a.scheme_) : c = !!a.userInfo_; | |
| c ? b.userInfo_ = a.userInfo_ : c = !!a.domain_; | |
| c ? b.domain_ = a.domain_ : c = null != a.port_; | |
| var e = a.path_; | |
| if (c) mc(b, a.port_); | |
| else if (c = !!a.path_) { | |
| if ("/" != e.charAt(0)) | |
| if (this.domain_ && !this.path_) e = "/" + e; | |
| else { | |
| var f = b.path_.lastIndexOf("/"); - 1 != f && (e = b.path_.substr(0, f + 1) + e) | |
| } f = e; | |
| if (".." == f || "." == f) e = ""; | |
| else if (Gb(f, "./") || Gb(f, "/.")) { | |
| e = 0 == f.lastIndexOf("/", 0); | |
| f = f.split("/"); | |
| for (var g = [], h = 0; h < f.length;) { | |
| var m = f[h++]; | |
| "." == m ? e && h == f.length && g.push("") : ".." == m ? ((1 < g.length || 1 == g.length && "" != g[0]) && g.pop(), e && h == f.length && g.push("")) : (g.push(m), e = !0) | |
| } | |
| e = g.join("/") | |
| } else e = f | |
| } | |
| c ? b.path_ = e : c = "" !== a.queryData_.toString(); | |
| c ? nc(b, oc(a.queryData_)) : c = !!a.fragment_; | |
| c && (b.fragment_ = a.fragment_); | |
| return b | |
| }; | |
| var lc = function(a, b, c) { | |
| a.scheme_ = c ? pc(b, !0) : b; | |
| a.scheme_ && (a.scheme_ = a.scheme_.replace(/:$/, "")) | |
| }, | |
| mc = function(a, b) { | |
| if (b) { | |
| b = Number(b); | |
| if (isNaN(b) || 0 > b) throw Error("g`" + b); | |
| a.port_ = b | |
| } else a.port_ = null | |
| }, | |
| nc = function(a, b, c) { | |
| b instanceof qc ? (a.queryData_ = b, wc(a.queryData_, a.goog_Uri$ignoreCase_)) : (c || (b = rc(b, xc)), a.queryData_ = new qc(b, a.goog_Uri$ignoreCase_)) | |
| }, | |
| pc = function(a, b) { | |
| return a ? b ? decodeURI(a.replace(/%25/g, "%2525")) : decodeURIComponent(a) : "" | |
| }, | |
| rc = function(a, b, c) { | |
| return u(a) ? (a = encodeURI(a).replace(b, | |
| yc), c && (a = a.replace(/%25([0-9a-fA-F]{2})/g, "%$1")), a) : null | |
| }, | |
| yc = function(a) { | |
| a = a.charCodeAt(0); | |
| return "%" + (a >> 4 & 15).toString(16) + (a & 15).toString(16) | |
| }, | |
| sc = /[#\/\?@]/g, | |
| uc = /[#\?:]/g, | |
| tc = /[#\?]/g, | |
| xc = /[#\?@]/g, | |
| vc = /#/g, | |
| qc = function(a, b) { | |
| this.goog_Uri_QueryData$count_ = this.keyMap_ = null; | |
| this.encodedQuery_ = a || null; | |
| this.goog_Uri_QueryData$ignoreCase_ = !!b | |
| }, | |
| zc = function(a) { | |
| a.keyMap_ || (a.keyMap_ = new Yb, a.goog_Uri_QueryData$count_ = 0, a.encodedQuery_ && ec(a.encodedQuery_, function(b, c) { | |
| a.add(decodeURIComponent(b.replace(/\+/g, | |
| " ")), c) | |
| })) | |
| }; | |
| qc.prototype.add = function(a, b) { | |
| zc(this); | |
| this.encodedQuery_ = null; | |
| a = Ac(this, a); | |
| var c = this.keyMap_.get(a); | |
| c || this.keyMap_.set(a, c = []); | |
| c.push(b); | |
| this.goog_Uri_QueryData$count_ += 1; | |
| return this | |
| }; | |
| qc.prototype.remove = function(a) { | |
| zc(this); | |
| a = Ac(this, a); | |
| return ac(this.keyMap_.map_, a) ? (this.encodedQuery_ = null, this.goog_Uri_QueryData$count_ -= this.keyMap_.get(a).length, this.keyMap_.remove(a)) : !1 | |
| }; | |
| var Bc = function(a, b) { | |
| zc(a); | |
| b = Ac(a, b); | |
| return ac(a.keyMap_.map_, b) | |
| }; | |
| d = qc.prototype; | |
| d.forEach = function(a, b) { | |
| zc(this); | |
| this.keyMap_.forEach(function(c, e) { | |
| Ya(c, function(c) { | |
| a.call(b, c, e, this) | |
| }, this) | |
| }, this) | |
| }; | |
| d.getKeys = function() { | |
| zc(this); | |
| for (var a = this.keyMap_.getValues(), b = this.keyMap_.getKeys(), c = [], e = 0; e < b.length; e++) | |
| for (var f = a[e], g = 0; g < f.length; g++) c.push(b[e]); | |
| return c | |
| }; | |
| d.getValues = function(a) { | |
| zc(this); | |
| var b = []; | |
| if (u(a)) Bc(this, a) && (b = fb(b, this.keyMap_.get(Ac(this, a)))); | |
| else { | |
| a = this.keyMap_.getValues(); | |
| for (var c = 0; c < a.length; c++) b = fb(b, a[c]) | |
| } | |
| return b | |
| }; | |
| d.set = function(a, b) { | |
| zc(this); | |
| this.encodedQuery_ = null; | |
| a = Ac(this, a); | |
| Bc(this, a) && (this.goog_Uri_QueryData$count_ -= this.keyMap_.get(a).length); | |
| this.keyMap_.set(a, [b]); | |
| this.goog_Uri_QueryData$count_ += 1; | |
| return this | |
| }; | |
| d.get = function(a, b) { | |
| var c = a ? this.getValues(a) : []; | |
| return 0 < c.length ? String(c[0]) : b | |
| }; | |
| d.toString = function() { | |
| if (this.encodedQuery_) return this.encodedQuery_; | |
| if (!this.keyMap_) return ""; | |
| for (var a = [], b = this.keyMap_.getKeys(), c = 0; c < b.length; c++) { | |
| var e = b[c], | |
| f = encodeURIComponent(String(e)); | |
| e = this.getValues(e); | |
| for (var g = 0; g < e.length; g++) { | |
| var h = f; | |
| "" !== e[g] && (h += "=" + encodeURIComponent(String(e[g]))); | |
| a.push(h) | |
| } | |
| } | |
| return this.encodedQuery_ = a.join("&") | |
| }; | |
| var oc = function(a) { | |
| var b = new qc; | |
| b.encodedQuery_ = a.encodedQuery_; | |
| a.keyMap_ && (b.keyMap_ = new Yb(a.keyMap_), b.goog_Uri_QueryData$count_ = a.goog_Uri_QueryData$count_); | |
| return b | |
| }, | |
| Ac = function(a, b) { | |
| var c = String(b); | |
| a.goog_Uri_QueryData$ignoreCase_ && (c = c.toLowerCase()); | |
| return c | |
| }, | |
| wc = function(a, b) { | |
| b && !a.goog_Uri_QueryData$ignoreCase_ && (zc(a), a.encodedQuery_ = null, a.keyMap_.forEach(function(a, b) { | |
| var c = b.toLowerCase(); | |
| b != c && (this.remove(b), this.remove(c), 0 < a.length && (this.encodedQuery_ = null, this.keyMap_.set(Ac(this, | |
| c), gb(a)), this.goog_Uri_QueryData$count_ += a.length)) | |
| }, a)); | |
| a.goog_Uri_QueryData$ignoreCase_ = b | |
| }; | |
| var Cc, Dc, Ec = navigator.userAgent, | |
| Fc = window.location.href, | |
| Gc = Gb(Ec, "iPad") || Gb(Ec, "iPhone") || Gb(Ec, "iPod"), | |
| Hc = Gb(Ec.toLowerCase(), "gsa"), | |
| Ic = Gc && Hc, | |
| Jc = Hc && !Gc, | |
| Kc = Gc || Gb(Ec, "Android") || Gb(Ec, "Mobile") || Gb(Ec, "Silk") || Gb(Ec, "UCBrowser") || Gb(Ec, "UCWEB"), | |
| Lc = Gb(Ec, "Chrome") && Gb(Ec, "Mobile") && Gb(Ec, "wv"), | |
| Mc = 0 <= Ec.indexOf("MSIE"), | |
| Nc = Gb(Fc, "/logos/") && Gb(Fc, ".html"), | |
| Oc = function() { | |
| return !!document.getElementById("fkbx") || 0 <= Fc.indexOf("ntp=1") | |
| }, | |
| Pc = function(a, b) { | |
| for (var c = 1; c < arguments.length; c += 2) { | |
| var e = arguments[c], | |
| f = arguments[c + 1], | |
| g = a.style; | |
| g && e in g ? g[e] = f : e in a ? a[e] = f : Mc && g && "opacity" == e && (a.zoom = 1, e = (g.filter || "").replace(/alpha\([^)]*\)/, ""), isNaN(parseFloat(f)) || (e += "alpha(opacity=" + 100 * f + ")"), g.filter = e) | |
| } | |
| }, | |
| Qc = function() { | |
| return self.performance && self.performance.now ? self.performance.now() : La() | |
| }, | |
| Rc = ["", "moz", "ms", "o", "webkit"], | |
| Sc = function(a) { | |
| var b = document; | |
| if (!b) return null; | |
| for (var c = 0; c < Rc.length; c++) { | |
| var e = Rc[c], | |
| f = a; | |
| 0 < e.length && (f = a.charAt(0).toUpperCase() + a.substr(1)); | |
| e += f; | |
| if ("undefined" != typeof b[e]) return e | |
| } | |
| return null | |
| }, | |
| Tc = function() { | |
| var a = google.doodle ? google.doodle.url : ""; | |
| if (a) { | |
| var b = !Ic; | |
| if (google.nav && google.nav.go) { | |
| var c = a; | |
| if (0 == a.indexOf("/search")) { | |
| c = new kc(window.location); | |
| c.path_ = "/search"; | |
| a = (a instanceof kc ? new kc(a) : new kc(a, void 0)).queryData_; | |
| for (var e = a.getKeys(), f = 0; f < e.length; f++) { | |
| var g = e[f], | |
| h = c, | |
| m = g; | |
| g = a.get(g); | |
| h.queryData_.set(m, g) | |
| } | |
| c = c.toString() | |
| } | |
| b ? window.open(c) : google.nav.go(c) | |
| } else b ? window.open(a) : window.parent ? window.parent.location.assign(a) : window.location.assign(a) | |
| } | |
| }, | |
| Uc = function(a, b) { | |
| var c = | |
| window.google ? window.google.doodle : null; | |
| return c && void 0 != c[a] ? c[a] : b | |
| }, | |
| Vc = Uc("alt", ""), | |
| Wc = Uc("hl", "en"), | |
| y = function(a) { | |
| var b = void 0, | |
| c = Uc("msgs", {}); | |
| va(b) || (b = a); | |
| if (!(c = c[a])) { | |
| var e = Uc("alltranslations", {}); | |
| if (e) | |
| if (c = e.messages, e = e.translations, c && e) { | |
| for (var f = -1, g = 0; g < c.length; g++) | |
| if (c[g] == a) { | |
| f = g; | |
| break | |
| } c = -1 == f ? "" : (e[Wc] || e.en).ALL[f] | |
| } else c = ""; | |
| else c = "" | |
| } | |
| a = c || b; | |
| c = b = 0; | |
| e = !1; | |
| f = a.split(tb); | |
| for (g = 0; g < f.length; g++) { | |
| var h = f[g]; | |
| rb.test(h) ? (b++, c++) : sb.test(h) ? e = !0 : qb.test(h) ? c++ : ub.test(h) && (e = !0) | |
| } | |
| b = 0 == c ? e ? | |
| 1 : 0 : .4 < b / c ? -1 : 1; | |
| return 1 == b ? "\u202a" + a + "\u202c" : -1 == b ? "\u202b" + a + "\u202c" : a | |
| }, | |
| Xc = function() { | |
| for (var a = ["requestAnimationFrame", "mozRequestAnimationFrame", "msRequestAnimationFrame", "oRequestAnimationFrame", "webkitRequestAnimationFrame"], b = 0; b < a.length; b++) { | |
| var c = window[a[b]]; | |
| if (c) return function(a, b, e) { | |
| return c(function(b) { | |
| return a.call(e, b) | |
| }, b) | |
| } | |
| } | |
| var e = 0, | |
| f = 33, | |
| g = 50; | |
| return function(a, b, c) { | |
| b && 0 > --g && (1.25 < b / f ? (e = 0, f = Math.min(66, ++f)) : 10 < ++e && (e = 0, f = Math.max(17, --f))); | |
| window.setTimeout(function(b) { | |
| a.call(c, | |
| b) | |
| }, f) | |
| } | |
| }, | |
| Yc = function(a, b, c) { | |
| Yc = Xc(); | |
| return Yc(a, b, c) | |
| }, | |
| $c = function(a, b, c) { | |
| var e = Math.max(0, c - 230) + (document.querySelector("div.og-pdp") ? 36 : 12); | |
| Pc(a, "width", b + "px", "height", c + "px"); | |
| Zc(e) | |
| }, | |
| Zc = function(a) { | |
| a += "px"; | |
| var b = document.getElementById("lga"); | |
| b && Pc(b, "marginBottom", a); | |
| if (!Oc()) { | |
| b = document.getElementById("searchform"); | |
| var c = document.getElementById("gb"); | |
| b && (Pc(b, "transform", "translateY(" + a + ")"), Pc(c, "transform", "translateY(-" + a + ")"), Pc(c, "z-index", "1")); | |
| a = document.createEvent("UIEvents"); | |
| a.initUIEvent("resize", | |
| !1, !1, window, 0); | |
| window.dispatchEvent(a) | |
| } | |
| }; | |
| var ad; | |
| a: { | |
| var bd = q.navigator; | |
| if (bd) { | |
| var cd = bd.userAgent; | |
| if (cd) { | |
| ad = cd; | |
| break a | |
| } | |
| } | |
| ad = "" | |
| } | |
| var dd = function(a) { | |
| return Gb(ad, a) | |
| }; | |
| var ed = function(a) { | |
| ed[" "](a); | |
| return a | |
| }; | |
| ed[" "] = wa; | |
| var gd = function(a, b) { | |
| var c = fd; | |
| return Object.prototype.hasOwnProperty.call(c, a) ? c[a] : c[a] = b(a) | |
| }; | |
| var hd = dd("Opera"), | |
| z = dd("Trident") || dd("MSIE"), | |
| id = dd("Edge"), | |
| jd = dd("Gecko") && !(Gb(ad.toLowerCase(), "webkit") && !dd("Edge")) && !(dd("Trident") || dd("MSIE")) && !dd("Edge"), | |
| kd = Gb(ad.toLowerCase(), "webkit") && !dd("Edge"), | |
| ld = kd && dd("Mobile"), | |
| md = dd("Macintosh"), | |
| nd = dd("Android"), | |
| od = dd("iPhone") && !dd("iPod") && !dd("iPad"), | |
| pd = dd("iPad"), | |
| qd = function() { | |
| var a = q.document; | |
| return a ? a.documentMode : void 0 | |
| }, | |
| rd; | |
| a: { | |
| var sd = "", | |
| td = function() { | |
| var a = ad; | |
| if (jd) return /rv:([^\);]+)(\)|;)/.exec(a); | |
| if (id) return /Edge\/([\d\.]+)/.exec(a); | |
| if (z) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a); | |
| if (kd) return /WebKit\/(\S+)/.exec(a); | |
| if (hd) return /(?:Version)[ \/]?(\S+)/.exec(a) | |
| }();td && (sd = td ? td[1] : ""); | |
| if (z) { | |
| var ud = qd(); | |
| if (null != ud && ud > parseFloat(sd)) { | |
| rd = String(ud); | |
| break a | |
| } | |
| } | |
| rd = sd | |
| } | |
| var vd = rd, | |
| fd = {}, | |
| wd = function(a) { | |
| return gd(a, function() { | |
| for (var b = 0, c = wb(String(vd)).split("."), e = wb(String(a)).split("."), f = Math.max(c.length, e.length), g = 0; 0 == b && g < f; g++) { | |
| var h = c[g] || "", | |
| m = e[g] || ""; | |
| do { | |
| h = /(\d*)(\D*)(.*)/.exec(h) || ["", "", "", ""]; | |
| m = /(\d*)(\D*)(.*)/.exec(m) || ["", "", "", ""]; | |
| if (0 == h[0].length && 0 == m[0].length) break; | |
| b = Jb(0 == h[1].length ? 0 : parseInt(h[1], 10), 0 == m[1].length ? 0 : parseInt(m[1], 10)) || Jb(0 == h[2].length, 0 == m[2].length) || Jb(h[2], m[2]); | |
| h = h[3]; | |
| m = m[3] | |
| } while (0 == b) | |
| } | |
| return 0 <= b | |
| }) | |
| }, | |
| xd; | |
| var yd = q.document; | |
| xd = yd && z ? qd() || ("CSS1Compat" == yd.compatMode ? parseInt(vd, 10) : 5) : void 0; | |
| var zd = !z || 9 <= Number(xd), | |
| Ad = !z || 9 <= Number(xd), | |
| Bd = z && !wd("9"), | |
| Cd = "ontouchstart" in q || !!(q.document && document.documentElement && "ontouchstart" in document.documentElement) || !(!q.navigator || !q.navigator.maxTouchPoints && !q.navigator.msMaxTouchPoints), | |
| Dd = function() { | |
| if (!q.addEventListener || !Object.defineProperty) return !1; | |
| var a = !1, | |
| b = Object.defineProperty({}, "passive", { | |
| get: function() { | |
| a = !0 | |
| } | |
| }); | |
| q.addEventListener("test", wa, b); | |
| q.removeEventListener("test", wa, b); | |
| return a | |
| }(); | |
| var Ed = function() { | |
| this.disposed_ = this.disposed_; | |
| this.onDisposeCallbacks_ = this.onDisposeCallbacks_ | |
| }; | |
| Ed.prototype.disposed_ = !1; | |
| Ed.prototype.dispose = function() { | |
| this.disposed_ || (this.disposed_ = !0, this.disposeInternal()) | |
| }; | |
| var Gd = function(a, b) { | |
| var c = Ka(Fd, b); | |
| a.disposed_ ? va(void 0) ? c.call(void 0) : c() : (a.onDisposeCallbacks_ || (a.onDisposeCallbacks_ = []), a.onDisposeCallbacks_.push(va(void 0) ? Ja(c, void 0) : c)) | |
| }; | |
| Ed.prototype.disposeInternal = function() { | |
| if (this.onDisposeCallbacks_) | |
| for (; this.onDisposeCallbacks_.length;) this.onDisposeCallbacks_.shift()() | |
| }; | |
| var Fd = function(a) { | |
| a && "function" == typeof a.dispose && a.dispose() | |
| }; | |
| var Hd = function(a, b) { | |
| this.type = a; | |
| this.goog_events_Event$currentTarget = this.target = b; | |
| this.propagationStopped_ = !1; | |
| this.returnValue_ = !0 | |
| }; | |
| Hd.prototype.stopPropagation = function() { | |
| this.propagationStopped_ = !0 | |
| }; | |
| Hd.prototype.preventDefault = function() { | |
| this.returnValue_ = !1 | |
| }; | |
| var Id; | |
| Id = kd ? "webkitTransitionEnd" : hd ? "otransitionend" : "transitionend"; | |
| var Jd = function(a, b) { | |
| Hd.call(this, a ? a.type : ""); | |
| this.relatedTarget = this.goog_events_Event$currentTarget = this.target = null; | |
| this.button = this.screenY = this.screenX = this.clientY = this.clientX = 0; | |
| this.key = ""; | |
| this.goog_events_BrowserEvent$keyCode = 0; | |
| this.platformModifierKey = this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1; | |
| this.pointerId = 0; | |
| this.pointerType = ""; | |
| this.event_ = null; | |
| a && this.init(a, b) | |
| }; | |
| w(Jd, Hd); | |
| var Kd = [1, 4, 2], | |
| Ld = { | |
| 2: "touch", | |
| 3: "pen", | |
| 4: "mouse" | |
| }; | |
| Jd.prototype.init = function(a, b) { | |
| var c = this.type = a.type, | |
| e = a.changedTouches ? a.changedTouches[0] : null; | |
| this.target = a.target || a.srcElement; | |
| this.goog_events_Event$currentTarget = b; | |
| var f = a.relatedTarget; | |
| if (f) { | |
| if (jd) { | |
| a: { | |
| try { | |
| ed(f.nodeName); | |
| var g = !0; | |
| break a | |
| } catch (h) {} | |
| g = !1 | |
| } | |
| g || (f = null) | |
| } | |
| } else "mouseover" == c ? f = a.fromElement : "mouseout" == c && (f = a.toElement); | |
| this.relatedTarget = f; | |
| null === e ? (this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX, this.clientY = void 0 !== a.clientY ? a.clientY : a.pageY, this.screenX = a.screenX || 0, this.screenY = | |
| a.screenY || 0) : (this.clientX = void 0 !== e.clientX ? e.clientX : e.pageX, this.clientY = void 0 !== e.clientY ? e.clientY : e.pageY, this.screenX = e.screenX || 0, this.screenY = e.screenY || 0); | |
| this.button = a.button; | |
| this.goog_events_BrowserEvent$keyCode = a.keyCode || 0; | |
| this.key = a.key || ""; | |
| this.ctrlKey = a.ctrlKey; | |
| this.altKey = a.altKey; | |
| this.shiftKey = a.shiftKey; | |
| this.metaKey = a.metaKey; | |
| this.platformModifierKey = md ? a.metaKey : a.ctrlKey; | |
| this.pointerId = a.pointerId || 0; | |
| this.pointerType = u(a.pointerType) ? a.pointerType : Ld[a.pointerType] || ""; | |
| this.event_ = | |
| a; | |
| a.defaultPrevented && this.preventDefault() | |
| }; | |
| var Md = function(a) { | |
| return zd ? 0 == a.event_.button : "click" == a.type ? !0 : !!(a.event_.button & Kd[0]) | |
| }; | |
| Jd.prototype.stopPropagation = function() { | |
| Jd.superClass_.stopPropagation.call(this); | |
| this.event_.stopPropagation ? this.event_.stopPropagation() : this.event_.cancelBubble = !0 | |
| }; | |
| Jd.prototype.preventDefault = function() { | |
| Jd.superClass_.preventDefault.call(this); | |
| var a = this.event_; | |
| if (a.preventDefault) a.preventDefault(); | |
| else if (a.returnValue = !1, Bd) try { | |
| if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) a.keyCode = -1 | |
| } catch (b) {} | |
| }; | |
| var Nd = "closure_listenable_" + (1E6 * Math.random() | 0), | |
| Od = function(a) { | |
| return !(!a || !a[Nd]) | |
| }, | |
| Pd = 0; | |
| var Qd = function(a, b, c, e, f) { | |
| this.listener = a; | |
| this.proxy = null; | |
| this.src = b; | |
| this.type = c; | |
| this.capture = !!e; | |
| this.handler = f; | |
| this.key = ++Pd; | |
| this.removed = this.callOnce = !1 | |
| }, | |
| Rd = function(a) { | |
| a.removed = !0; | |
| a.listener = null; | |
| a.proxy = null; | |
| a.src = null; | |
| a.handler = null | |
| }; | |
| var Sd = function(a) { | |
| this.src = a; | |
| this.goog_events_ListenerMap$listeners = {}; | |
| this.typeCount_ = 0 | |
| }; | |
| Sd.prototype.add = function(a, b, c, e, f) { | |
| var g = a.toString(); | |
| a = this.goog_events_ListenerMap$listeners[g]; | |
| a || (a = this.goog_events_ListenerMap$listeners[g] = [], this.typeCount_++); | |
| var h = Td(a, b, e, f); - 1 < h ? (b = a[h], c || (b.callOnce = !1)) : (b = new Qd(b, this.src, g, !!e, f), b.callOnce = c, a.push(b)); | |
| return b | |
| }; | |
| Sd.prototype.remove = function(a, b, c, e) { | |
| a = a.toString(); | |
| if (!(a in this.goog_events_ListenerMap$listeners)) return !1; | |
| var f = this.goog_events_ListenerMap$listeners[a]; | |
| b = Td(f, b, c, e); | |
| return -1 < b ? (Rd(f[b]), Array.prototype.splice.call(f, b, 1), 0 == f.length && (delete this.goog_events_ListenerMap$listeners[a], this.typeCount_--), !0) : !1 | |
| }; | |
| var Ud = function(a, b) { | |
| var c = b.type; | |
| c in a.goog_events_ListenerMap$listeners && eb(a.goog_events_ListenerMap$listeners[c], b) && (Rd(b), 0 == a.goog_events_ListenerMap$listeners[c].length && (delete a.goog_events_ListenerMap$listeners[c], a.typeCount_--)) | |
| }, | |
| Vd = function(a, b, c, e, f) { | |
| a = a.goog_events_ListenerMap$listeners[b.toString()]; | |
| b = -1; | |
| a && (b = Td(a, c, e, f)); | |
| return -1 < b ? a[b] : null | |
| }, | |
| Td = function(a, b, c, e) { | |
| for (var f = 0; f < a.length; ++f) { | |
| var g = a[f]; | |
| if (!g.removed && g.listener == b && g.capture == !!c && g.handler == e) return f | |
| } | |
| return -1 | |
| }; | |
| var Wd = "closure_lm_" + (1E6 * Math.random() | 0), | |
| Xd = {}, | |
| Yd = 0, | |
| $d = function(a, b, c, e, f) { | |
| if (e && e.once) return Zd(a, b, c, e, f); | |
| if (za(b)) { | |
| for (var g = 0; g < b.length; g++) $d(a, b[g], c, e, f); | |
| return null | |
| } | |
| c = ae(c); | |
| return Od(a) ? a.listen(b, c, Ca(e) ? !!e.capture : !!e, f) : be(a, b, c, !1, e, f) | |
| }, | |
| be = function(a, b, c, e, f, g) { | |
| if (!b) throw Error("i"); | |
| var h = Ca(f) ? !!f.capture : !!f, | |
| m = ce(a); | |
| m || (a[Wd] = m = new Sd(a)); | |
| c = m.add(b, c, e, h, g); | |
| if (c.proxy) return c; | |
| e = de(); | |
| c.proxy = e; | |
| e.src = a; | |
| e.listener = c; | |
| if (a.addEventListener) Dd || (f = h), void 0 === f && (f = !1), a.addEventListener(b.toString(), | |
| e, f); | |
| else if (a.attachEvent) a.attachEvent(ee(b.toString()), e); | |
| else if (a.addListener && a.removeListener) a.addListener(e); | |
| else throw Error("j"); | |
| Yd++; | |
| return c | |
| }, | |
| de = function() { | |
| var a = fe, | |
| b = Ad ? function(c) { | |
| return a.call(b.src, b.listener, c) | |
| } : function(c) { | |
| c = a.call(b.src, b.listener, c); | |
| if (!c) return c | |
| }; | |
| return b | |
| }, | |
| Zd = function(a, b, c, e, f) { | |
| if (za(b)) { | |
| for (var g = 0; g < b.length; g++) Zd(a, b[g], c, e, f); | |
| return null | |
| } | |
| c = ae(c); | |
| return Od(a) ? a.eventTargetListeners_.add(String(b), c, !0, Ca(e) ? !!e.capture : !!e, f) : be(a, b, c, !0, e, f) | |
| }, | |
| ge = function(a, | |
| b, c, e, f) { | |
| if (za(b)) | |
| for (var g = 0; g < b.length; g++) ge(a, b[g], c, e, f); | |
| else e = Ca(e) ? !!e.capture : !!e, c = ae(c), Od(a) ? a.unlisten(b, c, e, f) : a && (a = ce(a)) && (b = Vd(a, b, c, e, f)) && he(b) | |
| }, | |
| he = function(a) { | |
| if (!v(a) && a && !a.removed) { | |
| var b = a.src; | |
| if (Od(b)) Ud(b.eventTargetListeners_, a); | |
| else { | |
| var c = a.type, | |
| e = a.proxy; | |
| b.removeEventListener ? b.removeEventListener(c, e, a.capture) : b.detachEvent ? b.detachEvent(ee(c), e) : b.addListener && b.removeListener && b.removeListener(e); | |
| Yd--; | |
| (c = ce(b)) ? (Ud(c, a), 0 == c.typeCount_ && (c.src = null, b[Wd] = null)) : Rd(a) | |
| } | |
| } | |
| }, | |
| ee = function(a) { | |
| return a in Xd ? Xd[a] : Xd[a] = "on" + a | |
| }, | |
| je = function(a, b, c, e) { | |
| var f = !0; | |
| if (a = ce(a)) | |
| if (b = a.goog_events_ListenerMap$listeners[b.toString()]) | |
| for (b = b.concat(), a = 0; a < b.length; a++) { | |
| var g = b[a]; | |
| g && g.capture == c && !g.removed && (g = ie(g, e), f = f && !1 !== g) | |
| } | |
| return f | |
| }, | |
| ie = function(a, b) { | |
| var c = a.listener, | |
| e = a.handler || a.src; | |
| a.callOnce && he(a); | |
| return c.call(e, b) | |
| }, | |
| fe = function(a, b) { | |
| if (a.removed) return !0; | |
| if (!Ad) { | |
| var c; | |
| if (!(c = b)) a: { | |
| c = ["window", "event"]; | |
| for (var e = q, f = 0; f < c.length; f++) | |
| if (e = e[c[f]], null == e) { | |
| c = null; | |
| break a | |
| } c = | |
| e | |
| } | |
| f = c; | |
| c = new Jd(f, this); | |
| e = !0; | |
| if (!(0 > f.keyCode || void 0 != f.returnValue)) { | |
| a: { | |
| var g = !1; | |
| if (0 == f.keyCode) try { | |
| f.keyCode = -1; | |
| break a | |
| } catch (n) { | |
| g = !0 | |
| } | |
| if (g || void 0 == f.returnValue) f.returnValue = !0 | |
| } | |
| f = []; | |
| for (g = c.goog_events_Event$currentTarget; g; g = g.parentNode) f.push(g);g = a.type; | |
| for (var h = f.length - 1; !c.propagationStopped_ && 0 <= h; h--) { | |
| c.goog_events_Event$currentTarget = f[h]; | |
| var m = je(f[h], g, !0, c); | |
| e = e && m | |
| } | |
| for (h = 0; !c.propagationStopped_ && h < f.length; h++) c.goog_events_Event$currentTarget = f[h], | |
| m = je(f[h], g, !1, c), | |
| e = e && m | |
| } | |
| return e | |
| } | |
| return ie(a, | |
| new Jd(b, this)) | |
| }, | |
| ce = function(a) { | |
| a = a[Wd]; | |
| return a instanceof Sd ? a : null | |
| }, | |
| ke = "__closure_events_fn_" + (1E9 * Math.random() >>> 0), | |
| ae = function(a) { | |
| if (Ba(a)) return a; | |
| a[ke] || (a[ke] = function(b) { | |
| return a.handleEvent(b) | |
| }); | |
| return a[ke] | |
| }; | |
| var le = function() { | |
| Ed.call(this); | |
| this.eventTargetListeners_ = new Sd(this); | |
| this.actualEventTarget_ = this; | |
| this.parentEventTarget_ = null | |
| }; | |
| w(le, Ed); | |
| le.prototype[Nd] = !0; | |
| le.prototype.getParentEventTarget = function() { | |
| return this.parentEventTarget_ | |
| }; | |
| le.prototype.setParentEventTarget = function(a) { | |
| this.parentEventTarget_ = a | |
| }; | |
| le.prototype.addEventListener = function(a, b, c, e) { | |
| $d(this, a, b, c, e) | |
| }; | |
| le.prototype.removeEventListener = function(a, b, c, e) { | |
| ge(this, a, b, c, e) | |
| }; | |
| var ne = function(a, b) { | |
| var c, e = a.getParentEventTarget(); | |
| if (e) | |
| for (c = []; e; e = e.getParentEventTarget()) c.push(e); | |
| e = a.actualEventTarget_; | |
| var f = b, | |
| g = f.type || f; | |
| if (u(f)) f = new Hd(f, e); | |
| else if (f instanceof Hd) f.target = f.target || e; | |
| else { | |
| var h = f; | |
| f = new Hd(g, e); | |
| Wb(f, h) | |
| } | |
| h = !0; | |
| if (c) | |
| for (var m = c.length - 1; !f.propagationStopped_ && 0 <= m; m--) { | |
| var n = f.goog_events_Event$currentTarget = c[m]; | |
| h = me(n, g, !0, f) && h | |
| } | |
| f.propagationStopped_ || (n = f.goog_events_Event$currentTarget = e, h = me(n, g, !0, f) && h, f.propagationStopped_ || (h = me(n, g, !1, f) && h)); | |
| if (c) | |
| for (m = 0; !f.propagationStopped_ && m < c.length; m++) n = f.goog_events_Event$currentTarget = c[m], h = me(n, g, !1, f) && h; | |
| return h | |
| }; | |
| le.prototype.disposeInternal = function() { | |
| le.superClass_.disposeInternal.call(this); | |
| if (this.eventTargetListeners_) { | |
| var a = this.eventTargetListeners_, | |
| b = 0, | |
| c; | |
| for (c in a.goog_events_ListenerMap$listeners) { | |
| for (var e = a.goog_events_ListenerMap$listeners[c], f = 0; f < e.length; f++) ++b, Rd(e[f]); | |
| delete a.goog_events_ListenerMap$listeners[c]; | |
| a.typeCount_-- | |
| } | |
| } | |
| this.parentEventTarget_ = null | |
| }; | |
| le.prototype.listen = function(a, b, c, e) { | |
| return this.eventTargetListeners_.add(String(a), b, !1, c, e) | |
| }; | |
| le.prototype.unlisten = function(a, b, c, e) { | |
| return this.eventTargetListeners_.remove(String(a), b, c, e) | |
| }; | |
| var me = function(a, b, c, e) { | |
| b = a.eventTargetListeners_.goog_events_ListenerMap$listeners[String(b)]; | |
| if (!b) return !0; | |
| b = b.concat(); | |
| for (var f = !0, g = 0; g < b.length; ++g) { | |
| var h = b[g]; | |
| if (h && !h.removed && h.capture == c) { | |
| var m = h.listener, | |
| n = h.handler || h.src; | |
| h.callOnce && Ud(a.eventTargetListeners_, h); | |
| f = !1 !== m.call(n, e) && f | |
| } | |
| } | |
| return f && 0 != e.returnValue_ | |
| }; | |
| var oe = function() {}; | |
| oe.prototype.cachedOptions_ = null; | |
| var qe = function(a) { | |
| var b; | |
| (b = a.cachedOptions_) || (b = {}, pe(a) && (b[0] = !0, b[1] = !0), b = a.cachedOptions_ = b); | |
| return b | |
| }; | |
| var re, se = function() {}; | |
| w(se, oe); | |
| var te = function(a) { | |
| return (a = pe(a)) ? new ActiveXObject(a) : new XMLHttpRequest | |
| }, | |
| pe = function(a) { | |
| if (!a.ieProgId_ && "undefined" == typeof XMLHttpRequest && "undefined" != typeof ActiveXObject) { | |
| for (var b = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], c = 0; c < b.length; c++) { | |
| var e = b[c]; | |
| try { | |
| return new ActiveXObject(e), a.ieProgId_ = e | |
| } catch (f) {} | |
| } | |
| throw Error("k"); | |
| } | |
| return a.ieProgId_ | |
| }; | |
| re = new se; | |
| var ue = function(a, b, c) { | |
| if (Ba(a)) c && (a = Ja(a, c)); | |
| else if (a && "function" == typeof a.handleEvent) a = Ja(a.handleEvent, a); | |
| else throw Error("l"); | |
| return 2147483647 < Number(b) ? -1 : q.setTimeout(a, b || 0) | |
| }; | |
| var ve = function(a) { | |
| le.call(this); | |
| this.headers = new Yb; | |
| this.xmlHttpFactory_ = a || null; | |
| this.active_ = !1; | |
| this.xhrOptions_ = this.xhr_ = null; | |
| this.lastUri_ = ""; | |
| this.inAbort_ = this.inOpen_ = this.inSend_ = this.errorDispatched_ = !1; | |
| this.timeoutInterval_ = 0; | |
| this.timeoutId_ = null; | |
| this.responseType_ = ""; | |
| this.useXhr2Timeout_ = this.withCredentials_ = !1 | |
| }; | |
| w(ve, le); | |
| var we = /^https?$/i, | |
| xe = ["POST", "PUT"], | |
| ye = [], | |
| ze = function(a, b) { | |
| var c = new ve; | |
| ye.push(c); | |
| b && c.listen("complete", b); | |
| c.eventTargetListeners_.add("ready", c.cleanupSend_, !0, void 0, void 0); | |
| c.send(a, void 0, void 0, void 0); | |
| return c | |
| }; | |
| ve.prototype.cleanupSend_ = function() { | |
| this.dispose(); | |
| eb(ye, this) | |
| }; | |
| ve.prototype.send = function(a, b, c, e) { | |
| if (this.xhr_) throw Error("m`" + this.lastUri_ + "`" + a); | |
| b = b ? b.toUpperCase() : "GET"; | |
| this.lastUri_ = a; | |
| this.errorDispatched_ = !1; | |
| this.active_ = !0; | |
| this.xhr_ = this.xmlHttpFactory_ ? te(this.xmlHttpFactory_) : te(re); | |
| this.xhrOptions_ = this.xmlHttpFactory_ ? qe(this.xmlHttpFactory_) : qe(re); | |
| this.xhr_.onreadystatechange = Ja(this.onReadyStateChange_, this); | |
| try { | |
| this.inOpen_ = !0, this.xhr_.open(b, String(a), !0), this.inOpen_ = !1 | |
| } catch (g) { | |
| Ae(this); | |
| return | |
| } | |
| a = c || ""; | |
| var f = new Yb(this.headers); | |
| e && cc(e, | |
| function(a, b) { | |
| f.set(b, a) | |
| }); | |
| e = bb(f.getKeys(), Be); | |
| c = q.FormData && a instanceof q.FormData; | |
| !db(xe, b) || e || c || f.set("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); | |
| f.forEach(function(a, b) { | |
| this.xhr_.setRequestHeader(b, a) | |
| }, this); | |
| this.responseType_ && (this.xhr_.responseType = this.responseType_); | |
| "withCredentials" in this.xhr_ && this.xhr_.withCredentials !== this.withCredentials_ && (this.xhr_.withCredentials = this.withCredentials_); | |
| try { | |
| Ce(this), 0 < this.timeoutInterval_ && ((this.useXhr2Timeout_ = De(this.xhr_)) ? | |
| (this.xhr_.timeout = this.timeoutInterval_, this.xhr_.ontimeout = Ja(this.goog_net_XhrIo_prototype$timeout_, this)) : this.timeoutId_ = ue(this.goog_net_XhrIo_prototype$timeout_, this.timeoutInterval_, this)), this.inSend_ = !0, this.xhr_.send(a), this.inSend_ = !1 | |
| } catch (g) { | |
| Ae(this) | |
| } | |
| }; | |
| var De = function(a) { | |
| return z && wd(9) && v(a.timeout) && va(a.ontimeout) | |
| }, | |
| Be = function(a) { | |
| return "content-type" == a.toLowerCase() | |
| }; | |
| ve.prototype.goog_net_XhrIo_prototype$timeout_ = function() { | |
| "undefined" != typeof ta && this.xhr_ && (ne(this, "timeout"), this.abort(8)) | |
| }; | |
| var Ae = function(a) { | |
| a.active_ = !1; | |
| a.xhr_ && (a.inAbort_ = !0, a.xhr_.abort(), a.inAbort_ = !1); | |
| Ee(a); | |
| Fe(a) | |
| }, | |
| Ee = function(a) { | |
| a.errorDispatched_ || (a.errorDispatched_ = !0, ne(a, "complete"), ne(a, "error")) | |
| }; | |
| ve.prototype.abort = function() { | |
| this.xhr_ && this.active_ && (this.active_ = !1, this.inAbort_ = !0, this.xhr_.abort(), this.inAbort_ = !1, ne(this, "complete"), ne(this, "abort"), Fe(this)) | |
| }; | |
| ve.prototype.disposeInternal = function() { | |
| this.xhr_ && (this.active_ && (this.active_ = !1, this.inAbort_ = !0, this.xhr_.abort(), this.inAbort_ = !1), Fe(this, !0)); | |
| ve.superClass_.disposeInternal.call(this) | |
| }; | |
| ve.prototype.onReadyStateChange_ = function() { | |
| if (!this.disposed_) | |
| if (this.inOpen_ || this.inSend_ || this.inAbort_) Ge(this); | |
| else this.onReadyStateChangeEntryPoint_() | |
| }; | |
| ve.prototype.onReadyStateChangeEntryPoint_ = function() { | |
| Ge(this) | |
| }; | |
| var Ge = function(a) { | |
| if (a.active_ && "undefined" != typeof ta && (!a.xhrOptions_[1] || 4 != (a.xhr_ ? a.xhr_.readyState : 0) || 2 != He(a))) | |
| if (a.inSend_ && 4 == (a.xhr_ ? a.xhr_.readyState : 0)) ue(a.onReadyStateChange_, 0, a); | |
| else if (ne(a, "readystatechange"), 4 == (a.xhr_ ? a.xhr_.readyState : 0)) { | |
| a.active_ = !1; | |
| try { | |
| Ie(a) ? (ne(a, "complete"), ne(a, "success")) : Ee(a) | |
| } finally { | |
| Fe(a) | |
| } | |
| } | |
| }, | |
| Fe = function(a, b) { | |
| if (a.xhr_) { | |
| Ce(a); | |
| var c = a.xhr_, | |
| e = a.xhrOptions_[0] ? wa : null; | |
| a.xhr_ = null; | |
| a.xhrOptions_ = null; | |
| b || ne(a, "ready"); | |
| try { | |
| c.onreadystatechange = e | |
| } catch (f) {} | |
| } | |
| }, | |
| Ce = function(a) { | |
| a.xhr_ && a.useXhr2Timeout_ && (a.xhr_.ontimeout = null); | |
| a.timeoutId_ && (q.clearTimeout(a.timeoutId_), a.timeoutId_ = null) | |
| }, | |
| Ie = function(a) { | |
| var b = He(a); | |
| a: switch (b) { | |
| case 200: | |
| case 201: | |
| case 202: | |
| case 204: | |
| case 206: | |
| case 304: | |
| case 1223: | |
| var c = !0; | |
| break a; | |
| default: | |
| c = !1 | |
| } | |
| if (!c) { | |
| if (b = 0 === b) a = String(a.lastUri_).match(dc)[1] || null, !a && q.self && q.self.location && (a = q.self.location.protocol, a = a.substr(0, a.length - 1)), b = !we.test(a ? a.toLowerCase() : ""); | |
| c = b | |
| } | |
| return c | |
| }, | |
| He = function(a) { | |
| try { | |
| return 2 < (a.xhr_ ? a.xhr_.readyState : | |
| 0) ? a.xhr_.status : -1 | |
| } catch (b) { | |
| return -1 | |
| } | |
| }, | |
| Je = function(a) { | |
| try { | |
| return a.xhr_ ? a.xhr_.responseText : "" | |
| } catch (b) { | |
| return "" | |
| } | |
| }, | |
| Ke = function(a) { | |
| try { | |
| if (!a.xhr_) return null; | |
| if ("response" in a.xhr_) return a.xhr_.response; | |
| switch (a.responseType_) { | |
| case "": | |
| case "text": | |
| return a.xhr_.responseText; | |
| case "arraybuffer": | |
| if ("mozResponseArrayBuffer" in a.xhr_) return a.xhr_.mozResponseArrayBuffer | |
| } | |
| return null | |
| } catch (b) { | |
| return null | |
| } | |
| }; | |
| var Le = function(a, b) { | |
| this.PRELOADERS_ = a; | |
| this.CLIPS_ = b; | |
| this.overallGainNode_ = this.doodle_Audio$audioContext_ = null; | |
| this.unmutedGainValue_ = 1; | |
| this.kickstartAudioBufferSourceNode_ = null | |
| }, | |
| Me = !(!window.AudioContext && !window.webkitAudioContext) && !!window.GainNode; | |
| Le.prototype.init = function(a) { | |
| if (!Me) return !1; | |
| if (this.doodle_Audio$audioContext_) return !0; | |
| this.doodle_Audio$audioContext_ = new(window.AudioContext || window.webkitAudioContext); | |
| this.overallGainNode_ = this.doodle_Audio$audioContext_.createGain(); | |
| this.overallGainNode_.connect(this.doodle_Audio$audioContext_.destination); | |
| for (var b in this.PRELOADERS_) this.PRELOADERS_[b].init(this.doodle_Audio$audioContext_); | |
| for (b in this.CLIPS_) this.CLIPS_[b].init(this.doodle_Audio$audioContext_, this.overallGainNode_); | |
| if (Gc) { | |
| Ne(this); | |
| var c = this; | |
| Zd(a, "touchend", function() { | |
| Ne(c) | |
| }) | |
| } | |
| return !0 | |
| }; | |
| var Oe = function(a) { | |
| a.kickstartAudioBufferSourceNode_ = a.doodle_Audio$audioContext_.createBufferSource(); | |
| a.kickstartAudioBufferSourceNode_.buffer = a.doodle_Audio$audioContext_.createBuffer(1, 1, 22050); | |
| a.kickstartAudioBufferSourceNode_.connect(a.doodle_Audio$audioContext_.destination); | |
| a.kickstartAudioBufferSourceNode_.start(0) | |
| }, | |
| Ne = function(a) { | |
| a.doodle_Audio$audioContext_ && (null == a.kickstartAudioBufferSourceNode_ ? Oe(a) : va(a.kickstartAudioBufferSourceNode_.playbackState) ? a.kickstartAudioBufferSourceNode_.playbackState !== | |
| a.kickstartAudioBufferSourceNode_.PLAYING_STATE && a.kickstartAudioBufferSourceNode_.playbackState !== a.kickstartAudioBufferSourceNode_.FINISHED_STATE && Oe(a) : Oe(a)) | |
| }; | |
| Le.prototype.getContext = function() { | |
| return this.doodle_Audio$audioContext_ | |
| }; | |
| Le.prototype.reset = function() { | |
| for (var a in this.PRELOADERS_) this.PRELOADERS_[a].preloadCallbacks_ = []; | |
| for (var b in this.CLIPS_) Pe(this.CLIPS_[b]) | |
| }; | |
| // Audio | |
| var Re = function() { | |
| var a = Qe; | |
| a.overallGainNode_ && (a.overallGainNode_.gain.value = a.unmutedGainValue_) | |
| }, | |
| Te = function(a, b) { | |
| this.preloader_ = Se.SOUNDS; | |
| this.START_TIME = a; | |
| this.DURATION = b; | |
| this.playRecords_ = {}; | |
| this.destinationNode_ = this.doodle_Audio_Clip$audioContext_ = this.gainNode_ = null; | |
| this.nodes_ = []; | |
| this.nextPlayId_ = 0 | |
| }; | |
| Te.prototype.init = function(a, b) { | |
| this.doodle_Audio_Clip$audioContext_ = a; | |
| this.destinationNode_ = b; | |
| this.doodle_Audio_Clip$audioContext_.createGain && (this.gainNode_ = this.doodle_Audio_Clip$audioContext_.createGain()) | |
| }; | |
| Te.prototype.getContext = function() { | |
| return this.doodle_Audio_Clip$audioContext_ | |
| }; | |
| var Ue = document.createElement("audio"), | |
| Ve = Ba(Ue.canPlayType) && "" != Ue.canPlayType("audio/ogg") ? ".ogg" : ".mp3", | |
| We = function(a) { | |
| if (a.doodle_Audio_Clip$audioContext_) { | |
| var b = 1E3 * a.doodle_Audio_Clip$audioContext_.currentTime, | |
| c; | |
| for (c in a.playRecords_) { | |
| var e = a.playRecords_[c]; | |
| !e.looping && e.playTime + a.DURATION < b && delete a.playRecords_[c] | |
| } | |
| } | |
| }; | |
| Te.prototype.play = function(a, b, c) { | |
| if (!this.doodle_Audio_Clip$audioContext_ || !this.destinationNode_) return -1; | |
| We(this); | |
| a = this.doodle_Audio_Clip$audioContext_.currentTime + (a || 0) / 1E3; | |
| var e = this.doodle_Audio_Clip$audioContext_.createBufferSource(); | |
| this.gainNode_ ? (e.connect(this.gainNode_), this.gainNode_.connect(this.destinationNode_)) : e.connect(this.destinationNode_); | |
| e.loop = !!b; | |
| try { | |
| e.buffer = this.preloader_.doodle_Audio_Preloader$buffer | |
| } catch (h) { | |
| return -1 | |
| } | |
| e.playbackRate.value = 1; | |
| c = c || 0; | |
| var f = this.START_TIME / | |
| 1E3, | |
| g = this.DURATION / 1E3; | |
| b ? (e.loopStart = f, e.loopEnd = f + g, e.start(a, f + c / 1E3)) : e.start(a, f + c / 1E3, g); | |
| f = this.nextPlayId_++; | |
| this.playRecords_[f] = { | |
| node: e, | |
| playTime: 1E3 * a - c, | |
| looping: !!b | |
| }; | |
| return f | |
| }; | |
| Te.prototype.removeNode = function(a) { | |
| if (db(this.nodes_, a)) { | |
| if (this.gainNode_) | |
| for (var b = [this.gainNode_].concat(this.nodes_), c = 0, e; e = b[c++];) e.disconnect(); | |
| eb(this.nodes_, a); | |
| if (this.gainNode_) | |
| for (a = [this.gainNode_].concat(this.nodes_).concat(this.destinationNode_), b = 0; b < a.length - 1; b++) a[b].connect(a[b + 1]) | |
| } | |
| }; | |
| var Pe = function(a, b) { | |
| We(a); | |
| if (va(b)) { | |
| if (a.playRecords_[b]) { | |
| try { | |
| a.playRecords_[b].node.stop(0) | |
| } catch (f) {} | |
| var c = (1E3 * a.doodle_Audio_Clip$audioContext_.currentTime - a.playRecords_[b].playTime) % a.DURATION; | |
| delete a.playRecords_[b]; | |
| return [c] | |
| } | |
| return [] | |
| } | |
| c = []; | |
| for (var e in a.playRecords_) c = c.concat(Pe(a, e)); | |
| return c | |
| }, | |
| Xe = function(a, b) { | |
| Oa.call(this, a + b + Ve); | |
| this.doodle_Audio_Preloader$audioContext_ = this.doodle_Audio_Preloader$buffer = null; | |
| this.status_ = 0 | |
| }; | |
| w(Xe, Oa); | |
| Xe.prototype.init = function(a) { | |
| this.doodle_Audio_Preloader$audioContext_ = a | |
| }; | |
| Xe.prototype.preload = function(a) { | |
| a && Qa(this, a); | |
| if (0 == this.status_ && this.doodle_Audio_Preloader$audioContext_) { | |
| a = new ve; | |
| a.responseType_ = "arraybuffer"; | |
| var b = this; | |
| a.listen("complete", function() { | |
| b.doodle_Audio_Preloader$audioContext_.decodeAudioData(Ke(this), function(a) { | |
| a && (b.doodle_Audio_Preloader$buffer = a, b.status_ = 3, Pa(b)) | |
| }); | |
| b.status_ = 2 | |
| }); | |
| a.send(this.SRC); | |
| this.status_ = 1 | |
| } | |
| }; | |
| var A = function(a, b) { | |
| this.x = va(a) ? a : 0; | |
| this.y = va(b) ? b : 0 | |
| }; | |
| A.prototype.equals = function(a) { | |
| return a instanceof A && Ye(this, a) | |
| }; | |
| var Ye = function(a, b) { | |
| return a == b ? !0 : a && b ? a.x == b.x && a.y == b.y : !1 | |
| }, | |
| Ze = function(a, b) { | |
| return new A(a.x - b.x, a.y - b.y) | |
| }; | |
| d = A.prototype; | |
| d.ceil = function() { | |
| this.x = Math.ceil(this.x); | |
| this.y = Math.ceil(this.y); | |
| return this | |
| }; | |
| d.floor = function() { | |
| this.x = Math.floor(this.x); | |
| this.y = Math.floor(this.y); | |
| return this | |
| }; | |
| d.round = function() { | |
| this.x = Math.round(this.x); | |
| this.y = Math.round(this.y); | |
| return this | |
| }; | |
| d.translate = function(a, b) { | |
| a instanceof A ? (this.x += a.x, this.y += a.y) : (this.x += Number(a), v(b) && (this.y += b)); | |
| return this | |
| }; | |
| d.scale = function(a, b) { | |
| var c = v(b) ? b : a; | |
| this.x *= a; | |
| this.y *= c; | |
| return this | |
| }; | |
| var $e = function(a, b, c) { | |
| this.goog_math_Bezier$x1 = a; | |
| this.goog_math_Bezier$y1 = b; | |
| this.goog_math_Bezier$x2 = c | |
| }; | |
| $e.prototype.equals = function(a) { | |
| return this.goog_math_Bezier$x1 == a.goog_math_Bezier$x1 && this.goog_math_Bezier$y1 == a.goog_math_Bezier$y1 && this.goog_math_Bezier$x2 == a.goog_math_Bezier$x2 && !0 | |
| }; | |
| var af = function(a, b) { | |
| if (0 == b) return 0; | |
| if (1 == b) return 1; | |
| var c = Nb(0, a.goog_math_Bezier$x1, b), | |
| e = Nb(a.goog_math_Bezier$x1, a.goog_math_Bezier$x2, b), | |
| f = Nb(a.goog_math_Bezier$x2, 1, b); | |
| c = Nb(c, e, b); | |
| e = Nb(e, f, b); | |
| return Nb(c, e, b) | |
| }, | |
| bf = function(a, b) { | |
| var c = (b - 0) / 1; | |
| if (0 >= c) return 0; | |
| if (1 <= c) return 1; | |
| for (var e = 0, f = 1, g = 0, h = 0; 8 > h; h++) { | |
| g = af(a, c); | |
| var m = (af(a, c + 1E-6) - g) / 1E-6; | |
| if (1E-6 > Math.abs(g - b)) return c; | |
| if (1E-6 > Math.abs(m)) break; | |
| else g < b ? e = c : f = c, c -= (g - b) / m | |
| } | |
| for (h = 0; 1E-6 < Math.abs(g - b) && 8 > h; h++) g < b ? (e = c, c = (c + f) / 2) : (f = c, c = | |
| (c + e) / 2), g = af(a, c); | |
| return c | |
| }; | |
| var cf = function(a, b, c) { | |
| var e = new $e(a, b, c); | |
| return function(a) { | |
| a = bf(e, a); | |
| if (0 == a) a = 0; | |
| else if (1 == a) a = 1; | |
| else { | |
| var b = Nb(0, e.goog_math_Bezier$y1, a), | |
| c = Nb(e.goog_math_Bezier$y1, 1, a), | |
| f = Nb(1, 1, a); | |
| b = Nb(b, c, a); | |
| c = Nb(c, f, a); | |
| a = Nb(b, c, a) | |
| } | |
| return a | |
| } | |
| }, | |
| df = function(a) { | |
| return a | |
| }, | |
| ef = cf(.25, .1, .25), | |
| ff = cf(.4, 0, 1), | |
| gf = cf(0, 0, .6), | |
| hf = cf(.6, 0, .4); | |
| var jf, kf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !0, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !1, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !1, | |
| shouldUseMobileUi: !1, | |
| shouldLogFirstClickOnLoad: !1, | |
| name: 0 | |
| }, | |
| lf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !0, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !1, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !0, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !1, | |
| shouldUseMobileUi: !1, | |
| shouldLogFirstClickOnLoad: !1, | |
| name: 1 | |
| }, | |
| mf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !0, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 2 | |
| }, | |
| nf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !0, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 3 | |
| }, | |
| of = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !0, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !0, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 4 | |
| }, | |
| pf = { | |
| allowedToAnimateCta: !1, | |
| allowedToExpand: !0, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !1, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !1, | |
| shouldUseMobileUi: !1, | |
| shouldLogFirstClickOnLoad: !1, | |
| name: 6 | |
| }, | |
| qf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !0, | |
| shouldUseFullscreenApi: !0, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 7 | |
| }, | |
| rf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !0, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !1, | |
| shouldLogFirstClickOnLoad: !1, | |
| name: 9 | |
| }, | |
| sf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !0, | |
| shouldUseFullscreenApi: !0, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !0, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 8 | |
| }, | |
| tf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !0, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !0, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 5 | |
| }, | |
| uf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !1, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !0, | |
| shouldRotateToLandscape: !0, | |
| shouldUseFullscreenApi: !0, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !0, | |
| shouldUseMobileUi: !0, | |
| shouldLogFirstClickOnLoad: !0, | |
| name: 10 | |
| }, | |
| vf = { | |
| allowedToAnimateCta: !0, | |
| allowedToExpand: !0, | |
| shouldDoIosNativeShare: !1, | |
| shouldFillWindow: !1, | |
| shouldRotateToLandscape: !1, | |
| shouldUseFullscreenApi: !1, | |
| shouldWriteScoreCookie: !1, | |
| shouldSetMetaViewportUserScaleableNo: !1, | |
| templatesShouldFetchDoodleArgsFromSlashDoodles: !1, | |
| allowedToLoadExtraAssetsBeforeCtaClick: !1, | |
| shouldUseMobileUi: !1, | |
| shouldLogFirstClickOnLoad: !1, | |
| name: 11 | |
| }; | |
| var xf = function() { | |
| wf(); | |
| return jf.allowedToAnimateCta | |
| }, | |
| yf = function() { | |
| wf(); | |
| return jf.shouldDoIosNativeShare | |
| }, | |
| zf = function() { | |
| wf(); | |
| return jf.allowedToExpand | |
| }, | |
| Af = function() { | |
| wf(); | |
| return jf.shouldLogFirstClickOnLoad | |
| }, | |
| wf = function() { | |
| null == jf && (jf = Ic && !Nc ? mf : Jc ? nf : Gb(Ec, "Gbot") ? of : Oc() && !Kc ? pf : 0 <= Fc.indexOf("fpdoodle=1") && document.getElementById("fpdoodle") ? qf : document.querySelector("body.hp") ? Kc ? lf : kf : Nc ? Lc ? tf : Kc ? sf : rf : Kc ? uf : vf) | |
| }; | |
| var Ef = function(a, b, c) { | |
| Ed.call(this); | |
| this.sleepTime_ = a; | |
| this.sleepCallback_ = b; | |
| this.wakeCallback_ = c; | |
| this.lastInteractTime_ = La(); | |
| this.vendorHidden_ = Sc("hidden"); | |
| this.vendorVisibilityChange_ = (this.vendorVisibilityState_ = Sc("visibilityState")) ? this.vendorVisibilityState_.replace(/state$/i, "change").toLowerCase() : null; | |
| this.isHidden_ = Bf(this); | |
| this.isIdle_ = !1; | |
| this.isSleeping_ = this.isHidden_; | |
| Cf(this); | |
| Df(this) | |
| }; | |
| w(Ef, Ed); | |
| var Cf = function(a) { | |
| a.vendorVisibilityChange_ ? Ff(a) : Jc && Gf(a, function() { | |
| Ff(a) | |
| }) | |
| }, | |
| Ff = function(a) { | |
| a.visibilityChangeCallback_ = function() { | |
| a.isHidden_ = Bf(a); | |
| a.isHidden_ || (a.lastInteractTime_ = La(), a.isIdle_ = !1); | |
| Hf(a) | |
| }; | |
| var b = window.agsa_ext; | |
| a.vendorVisibilityChange_ ? document.addEventListener(a.vendorVisibilityChange_, a.visibilityChangeCallback_, !1) : b && b.registerPageVisibilityListener && (google.doodle || (google.doodle = {}), google.doodle.pvc = function() { | |
| a.visibilityChangeCallback_ && a.visibilityChangeCallback_() | |
| }, | |
| b.registerPageVisibilityListener("google.doodle.pvc();")) | |
| }, | |
| Gf = function(a, b) { | |
| window.agsa_ext ? b() : a.agsaExtTimeout_ = window.setTimeout(function() { | |
| Cf(a) | |
| }, 100) | |
| }; | |
| Ef.prototype.disposeInternal = function() { | |
| window.clearTimeout(this.doodle_Hibernator$timeout_); | |
| window.clearTimeout(this.agsaExtTimeout_); | |
| this.visibilityChangeCallback_ && (this.vendorVisibilityChange_ && document.removeEventListener ? document.removeEventListener(this.vendorVisibilityChange_, this.visibilityChangeCallback_, !1) : window.agsa_ext && window.agsa_ext.registerPageVisibilityListener && (this.visibilityChangeCallback_ = null)); | |
| Ef.superClass_.disposeInternal.call(this) | |
| }; | |
| var Bf = function(a) { | |
| if (!a.vendorHidden_ && !a.vendorVisibilityState_ && window.agsa_ext && window.agsa_ext.getPageVisibility) return "hidden" == window.agsa_ext.getPageVisibility(); | |
| var b = document[a.vendorVisibilityState_]; | |
| return document[a.vendorHidden_] || "hidden" == b | |
| }, | |
| Hf = function(a) { | |
| var b = a.isHidden_ || a.isIdle_; | |
| a.isSleeping_ && !b ? (a.isSleeping_ = !1, a.wakeCallback_(), Df(a)) : !a.isSleeping_ && b && (a.isSleeping_ = !0, a.sleepCallback_()) | |
| }, | |
| Df = function(a) { | |
| a.doodle_Hibernator$timeout_ && window.clearTimeout(a.doodle_Hibernator$timeout_); | |
| var b = Math.max(100, a.sleepTime_ - If(a)); | |
| a.doodle_Hibernator$timeout_ = window.setTimeout(function() { | |
| a.doodle_Hibernator$timeout_ = null; | |
| a.isIdle_ = If(a) >= a.sleepTime_; | |
| a.isIdle_ || Df(a); | |
| Hf(a) | |
| }, b) | |
| }, | |
| If = function(a) { | |
| return La() - a.lastInteractTime_ | |
| }; | |
| (function() { | |
| var a = new Na; | |
| a.contains = function() { | |
| return !0 | |
| }; | |
| a.allowCursorControl = function() { | |
| return !1 | |
| }; | |
| return a | |
| })(); | |
| var Kf = function() { | |
| this.stopped_ = !0; | |
| this.doodle_EventLoop$isRunning_ = !1; | |
| this.queue_ = []; | |
| this.queueDirty_ = !1; | |
| this.tooSlowTicks_ = this.lastTickStartTime_ = this.curTick = 0; | |
| this.msPerEvent = Jf | |
| }; | |
| w(Kf, Ed); | |
| xa(Kf); | |
| var Jf = 1E3 / 60, | |
| Lf = function(a) { | |
| this.MS_PER_EVENT = 1E3 / 60; | |
| this.doodle_EventLoop_EventSequence$callback_ = a; | |
| this.nextFrameTime = Kf.getInstance().curTick; | |
| this.frameIndex_ = 0 | |
| }, | |
| Mf = function(a) { | |
| var b = a.doodle_EventLoop_EventSequence$callback_(a.frameIndex_); | |
| a.frameIndex_++; | |
| a.nextFrameTime = Kf.getInstance().curTick + a.MS_PER_EVENT / Kf.getInstance().msPerEvent; | |
| return b | |
| }; | |
| Lf.prototype.cancel = function() { | |
| this.doodle_EventLoop_EventSequence$callback_ = function() { | |
| return !1 | |
| } | |
| }; | |
| var Of = function(a, b) { | |
| var c = new Lf(b); | |
| Nf(a, c) | |
| }, | |
| Nf = function(a, b) { | |
| a.queue_.push(b); | |
| a.queueDirty_ = !0 | |
| }, | |
| Qf = function(a) { | |
| if (a.stopped_) a.doodle_EventLoop$isRunning_ = !1; | |
| else { | |
| a.doodle_EventLoop$isRunning_ = !0; | |
| Pf(a); | |
| a.queueDirty_ && (a.queue_.sort(function(a, b) { | |
| return a.nextFrameTime == b.nextFrameTime ? b.MS_PER_EVENT - a.MS_PER_EVENT : a.nextFrameTime - b.nextFrameTime | |
| }), a.queueDirty_ = !1); | |
| for (var b = 0, c = 0, e; e = a.queue_[c]; c++) | |
| if (e.nextFrameTime <= a.curTick) Mf(e) && Nf(a, e), b++; | |
| else break; | |
| a.queue_.splice(0, b); | |
| a.curTick++; | |
| Yc(function() { | |
| Qf(a) | |
| }) | |
| } | |
| }, | |
| Pf = function(a) { | |
| var b = (new Date).getTime(); | |
| 30 < a.curTick && a.lastTickStartTime_ && (b - a.lastTickStartTime_ >= 1.05 * a.msPerEvent ? a.tooSlowTicks_++ : a.tooSlowTicks_ >>= 1, 20 < a.tooSlowTicks_ && (a.msPerEvent = Math.min(50, 1.2 * a.msPerEvent), a.tooSlowTicks_ = 0)); | |
| a.lastTickStartTime_ = b | |
| }; | |
| Kf.prototype.start = function() { | |
| this.stopped_ = !1; | |
| this.doodle_EventLoop$isRunning_ || Qf(this) | |
| }; | |
| Kf.prototype.disposeInternal = function() { | |
| this.reset(); | |
| Kf.superClass_.disposeInternal.call(this) | |
| }; | |
| Kf.prototype.reset = function() { | |
| this.stopped_ = !0; | |
| this.queue_ = []; | |
| this.curTick = 0; | |
| this.queueDirty_ = !1; | |
| this.msPerEvent = Jf; | |
| this.lastTickStartTime_ = this.tooSlowTicks_ = 0 | |
| }; | |
| var Sf = function(a, b, c) { | |
| var e = Rf; | |
| this.from_ = a; | |
| this.to_ = b; | |
| this.tweenState_ = {}; | |
| this.doodle_Tween$easingFn_ = e || ef; | |
| this.getNow_ = c || Qc; | |
| this.timeStarted = null; | |
| this.rewinding_ = !1 | |
| }, | |
| Uf = function(a) { | |
| var b = Math.min(Math.max(Tf(a) / 400, 0), 1); | |
| a.rewinding_ && (b = 1 - b); | |
| for (var c in a.from_) | |
| if (a.to_.hasOwnProperty(c)) { | |
| var e = a.tweenState_, | |
| f = c; | |
| var g = a.from_[c]; | |
| var h = a.to_[c]; | |
| g += (a.doodle_Tween$easingFn_ || ef)(b) * (h - g); | |
| e[f] = g | |
| } return a.tweenState_ | |
| }, | |
| Tf = function(a) { | |
| return null === a.timeStarted ? 0 : a.getNow_() - a.timeStarted | |
| }; | |
| Sf.prototype.start = function() { | |
| this.timeStarted = this.getNow_(); | |
| this.rewinding_ = !1 | |
| }; | |
| Sf.prototype.reset = function() { | |
| this.timeStarted = null | |
| }; | |
| var Rf = function(a) { | |
| return 3 * a * a - 2 * a * a * a | |
| }; | |
| var Vf = function(a, b) { | |
| Ed.call(this); | |
| this.expanded_ = !1; | |
| this.doodle_Expander$container_ = a; | |
| this.eventDispatcher_ = b || null; | |
| this.updateFn_ = function() { | |
| return !1 | |
| } | |
| }; | |
| w(Vf, Ed); | |
| Vf.prototype.disposeInternal = function() { | |
| this.reset(); | |
| this.doodle_Expander$container_ = null | |
| }; | |
| Vf.prototype.reset = function() { | |
| this.expanded_ && (Pc(this.doodle_Expander$container_, "width", "", "height", ""), Zc(0), this.doodle_Expander$container_.style.width = "", this.doodle_Expander$container_.style.height = ""); | |
| this.expanded_ = !1 | |
| }; | |
| var Wf = function(a, b) { | |
| if (a.doodle_Expander$container_ && zf() && !a.expanded_) { | |
| var c = a.doodle_Expander$container_; | |
| Oc() && Pc(c.parentNode, "width", "100%"); | |
| var e = c.offsetHeight, | |
| f = c.offsetWidth, | |
| g = Math.min(960, c.parentNode.clientWidth) - 0, | |
| h = g / (960 / 540), | |
| m = Kf.getInstance(), | |
| n = Qc(), | |
| p = new Sf({ | |
| height: e, | |
| width: f | |
| }, { | |
| height: h, | |
| width: g | |
| }, function() { | |
| return n | |
| }); | |
| p.start(); | |
| a.expanded_ = !0; | |
| a.updateFn_ = function() { | |
| n = Qc(); | |
| var e = Uf(p); | |
| $c(c, Math.round(e.width), Math.round(e.height)); | |
| a.eventDispatcher_ && a.eventDispatcher_.handleResize(!1); | |
| return 400 <= Tf(p) ? (b(), a.updateFn_ = function() { | |
| return !1 | |
| }, !1) : !0 | |
| }; | |
| Of(m, function() { | |
| return a.updateFn_() | |
| }) | |
| } | |
| }; | |
| Vf.prototype.update = function() { | |
| this.updateFn_() | |
| }; | |
| var Xf = !z || 9 <= Number(xd), | |
| Yf = !jd && !z || z && 9 <= Number(xd) || jd && wd("1.9.1"), | |
| Zf = z && !wd("9"); | |
| var $f = function(a, b) { | |
| this.width = a; | |
| this.height = b | |
| }; | |
| d = $f.prototype; | |
| d.aspectRatio = function() { | |
| return this.width / this.height | |
| }; | |
| d.ceil = function() { | |
| this.width = Math.ceil(this.width); | |
| this.height = Math.ceil(this.height); | |
| return this | |
| }; | |
| d.floor = function() { | |
| this.width = Math.floor(this.width); | |
| this.height = Math.floor(this.height); | |
| return this | |
| }; | |
| d.round = function() { | |
| this.width = Math.round(this.width); | |
| this.height = Math.round(this.height); | |
| return this | |
| }; | |
| d.scale = function(a, b) { | |
| var c = v(b) ? b : a; | |
| this.width *= a; | |
| this.height *= c; | |
| return this | |
| }; | |
| var cg = function(a) { | |
| return a ? new ag(bg(a)) : Va || (Va = new ag) | |
| }, | |
| eg = function(a, b) { | |
| var c = b || document; | |
| if (c.getElementsByClassName) c = c.getElementsByClassName(a)[0]; | |
| else { | |
| c = document; | |
| var e = b || c; | |
| c = e.querySelectorAll && e.querySelector && a ? e.querySelector("" + (a ? "." + a : "")) : dg(c, "*", a, b)[0] || null | |
| } | |
| return c || null | |
| }, | |
| dg = function(a, b, c, e) { | |
| a = e || a; | |
| b = b && "*" != b ? String(b).toUpperCase() : ""; | |
| if (a.querySelectorAll && a.querySelector && (b || c)) return a.querySelectorAll(b + (c ? "." + c : "")); | |
| if (c && a.getElementsByClassName) { | |
| a = a.getElementsByClassName(c); | |
| if (b) { | |
| e = {}; | |
| for (var f = 0, g = 0, h; h = a[g]; g++) b == h.nodeName && (e[f++] = h); | |
| e.length = f; | |
| return e | |
| } | |
| return a | |
| } | |
| a = a.getElementsByTagName(b || "*"); | |
| if (c) { | |
| e = {}; | |
| for (g = f = 0; h = a[g]; g++) b = h.className, "function" == typeof b.split && db(b.split(/\s+/), c) && (e[f++] = h); | |
| e.length = f; | |
| return e | |
| } | |
| return a | |
| }, | |
| gg = function(a, b) { | |
| Sb(b, function(b, e) { | |
| b && b.implementsGoogStringTypedString && (b = b.getTypedStringValue()); | |
| "style" == e ? a.style.cssText = b : "class" == e ? a.className = b : "for" == e ? a.htmlFor = b : fg.hasOwnProperty(e) ? a.setAttribute(fg[e], b) : 0 == e.lastIndexOf("aria-", | |
| 0) || 0 == e.lastIndexOf("data-", 0) ? a.setAttribute(e, b) : a[e] = b | |
| }) | |
| }, | |
| fg = { | |
| cellpadding: "cellPadding", | |
| cellspacing: "cellSpacing", | |
| colspan: "colSpan", | |
| frameborder: "frameBorder", | |
| height: "height", | |
| maxlength: "maxLength", | |
| nonce: "nonce", | |
| role: "role", | |
| rowspan: "rowSpan", | |
| type: "type", | |
| usemap: "useMap", | |
| valign: "vAlign", | |
| width: "width" | |
| }, | |
| hg = function() { | |
| var a = window.document; | |
| a = "CSS1Compat" == a.compatMode ? a.documentElement : a.body; | |
| return new $f(a.clientWidth, a.clientHeight) | |
| }, | |
| jg = function(a) { | |
| var b = ig(a); | |
| a = a.parentWindow || a.defaultView; | |
| return z && | |
| wd("10") && a.pageYOffset != b.scrollTop ? new A(b.scrollLeft, b.scrollTop) : new A(a.pageXOffset || b.scrollLeft, a.pageYOffset || b.scrollTop) | |
| }, | |
| ig = function(a) { | |
| return a.scrollingElement ? a.scrollingElement : kd || "CSS1Compat" != a.compatMode ? a.body || a.documentElement : a.documentElement | |
| }, | |
| B = function(a, b, c) { | |
| return kg(document, arguments) | |
| }, | |
| kg = function(a, b) { | |
| var c = String(b[0]), | |
| e = b[1]; | |
| if (!Xf && e && (e.name || e.type)) { | |
| c = ["<", c]; | |
| e.name && c.push(' name="', Fb(e.name), '"'); | |
| if (e.type) { | |
| c.push(' type="', Fb(e.type), '"'); | |
| var f = {}; | |
| Wb(f, e); | |
| delete f.type; | |
| e = f | |
| } | |
| c.push(">"); | |
| c = c.join("") | |
| } | |
| c = a.createElement(c); | |
| e && (u(e) ? c.className = e : za(e) ? c.className = e.join(" ") : gg(c, e)); | |
| 2 < b.length && lg(a, c, b); | |
| return c | |
| }, | |
| lg = function(a, b, c) { | |
| function e(c) { | |
| c && b.appendChild(u(c) ? a.createTextNode(c) : c) | |
| } | |
| for (var f = 2; f < c.length; f++) { | |
| var g = c[f]; | |
| !Aa(g) || Ca(g) && 0 < g.nodeType ? e(g) : Ya(mg(g) ? gb(g) : g, e) | |
| } | |
| }, | |
| ng = function(a) { | |
| for (var b; b = a.firstChild;) a.removeChild(b) | |
| }, | |
| C = function(a) { | |
| return a && a.parentNode ? a.parentNode.removeChild(a) : null | |
| }, | |
| pg = function(a, b) { | |
| if (!a || !b) return !1; | |
| if (a.contains && | |
| 1 == b.nodeType) return a == b || a.contains(b); | |
| if ("undefined" != typeof a.compareDocumentPosition) return a == b || !!(a.compareDocumentPosition(b) & 16); | |
| for (; b && a != b;) b = b.parentNode; | |
| return b == a | |
| }, | |
| bg = function(a) { | |
| return 9 == a.nodeType ? a : a.ownerDocument || a.document | |
| }, | |
| qg = function(a, b) { | |
| if ("textContent" in a) a.textContent = b; | |
| else if (3 == a.nodeType) a.data = String(b); | |
| else if (a.firstChild && 3 == a.firstChild.nodeType) { | |
| for (; a.lastChild != a.firstChild;) a.removeChild(a.lastChild); | |
| a.firstChild.data = String(b) | |
| } else ng(a), a.appendChild(bg(a).createTextNode(String(b))) | |
| }, | |
| rg = { | |
| SCRIPT: 1, | |
| STYLE: 1, | |
| HEAD: 1, | |
| IFRAME: 1, | |
| OBJECT: 1 | |
| }, | |
| sg = { | |
| IMG: " ", | |
| BR: "\n" | |
| }, | |
| tg = function(a, b) { | |
| b ? a.tabIndex = 0 : (a.tabIndex = -1, a.removeAttribute("tabIndex")) | |
| }, | |
| ug = function(a) { | |
| return z && !wd("9") ? (a = a.getAttributeNode("tabindex"), null != a && a.specified) : a.hasAttribute("tabindex") | |
| }, | |
| vg = function(a) { | |
| a = a.tabIndex; | |
| return v(a) && 0 <= a && 32768 > a | |
| }, | |
| xg = function(a) { | |
| if (Zf && null !== a && "innerText" in a) a = a.innerText.replace(/(\r\n|\r|\n)/g, "\n"); | |
| else { | |
| var b = []; | |
| wg(a, b, !0); | |
| a = b.join("") | |
| } | |
| a = a.replace(/ \xAD /g, " ").replace(/\xAD/g, ""); | |
| a = a.replace(/\u200B/g, | |
| ""); | |
| Zf || (a = a.replace(/ +/g, " ")); | |
| " " != a && (a = a.replace(/^\s*/, "")); | |
| return a | |
| }, | |
| yg = function(a) { | |
| var b = []; | |
| wg(a, b, !1); | |
| return b.join("") | |
| }, | |
| wg = function(a, b, c) { | |
| if (!(a.nodeName in rg)) | |
| if (3 == a.nodeType) c ? b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g, "")) : b.push(a.nodeValue); | |
| else if (a.nodeName in sg) b.push(sg[a.nodeName]); | |
| else | |
| for (a = a.firstChild; a;) wg(a, b, c), a = a.nextSibling | |
| }, | |
| mg = function(a) { | |
| if (a && "number" == typeof a.length) { | |
| if (Ca(a)) return "function" == typeof a.item || "string" == typeof a.item; | |
| if (Ba(a)) return "function" == | |
| typeof a.item | |
| } | |
| return !1 | |
| }, | |
| ag = function(a) { | |
| this.document_ = a || q.document || document | |
| }; | |
| ag.prototype.getElement = function(a) { | |
| return u(a) ? this.document_.getElementById(a) : a | |
| }; | |
| ag.prototype.getElementsByTagName = function(a, b) { | |
| return (b || this.document_).getElementsByTagName(String(a)) | |
| }; | |
| ag.prototype.createDom = function(a, b, c) { | |
| return kg(this.document_, arguments) | |
| }; | |
| var zg = function(a, b) { | |
| return a.document_.createElement(String(b)) | |
| }; | |
| d = ag.prototype; | |
| d.appendChild = function(a, b) { | |
| a.appendChild(b) | |
| }; | |
| d.canHaveChildren = function(a) { | |
| if (1 != a.nodeType) return !1; | |
| switch (a.tagName) { | |
| case "APPLET": | |
| case "AREA": | |
| case "BASE": | |
| case "BR": | |
| case "COL": | |
| case "COMMAND": | |
| case "EMBED": | |
| case "FRAME": | |
| case "HR": | |
| case "IMG": | |
| case "INPUT": | |
| case "IFRAME": | |
| case "ISINDEX": | |
| case "KEYGEN": | |
| case "LINK": | |
| case "NOFRAMES": | |
| case "NOSCRIPT": | |
| case "META": | |
| case "OBJECT": | |
| case "PARAM": | |
| case "SCRIPT": | |
| case "SOURCE": | |
| case "STYLE": | |
| case "TRACK": | |
| case "WBR": | |
| return !1 | |
| } | |
| return !0 | |
| }; | |
| d.removeNode = C; | |
| d.getChildren = function() { | |
| return Yf && void 0 != (void 0).children ? (void 0).children : Za((void 0).childNodes, function(a) { | |
| return 1 == a.nodeType | |
| }) | |
| }; | |
| d.contains = pg; | |
| var Ag = [5, 6, 7, 8, 9], | |
| Bg = 0, | |
| Cg = !1, | |
| Dg = {}, | |
| Eg = [], | |
| Fg = function(a, b, c) { | |
| Dg[a] = b; | |
| c && !Eg.includes(a) && Eg.push(a) | |
| }, | |
| Gg = function(a) { | |
| var b = La(); | |
| 0 == a && (Bg = b); | |
| Dg.e = a; | |
| Dg.t = 0 == Bg ? -1 : Math.floor(b - Bg); | |
| Dg.m = Kc ? 1 : 0; | |
| b = hg(); | |
| Dg.w = b.width > b.height ? 1 : 0; | |
| Dg.o = "orientation" in window ? parseInt(window.orientation, 10) : "_"; | |
| b = []; | |
| for (var c in Dg) Dg.hasOwnProperty(c) && b.push(c + ":" + Dg[c]); | |
| c = b.join(","); | |
| b = 0 <= Ag.indexOf(a); | |
| window.google && window.google.log ? (10 == a ? (Cc || (b = document.getElementById("hplogoved")) && (Cc = b.getAttribute("data-ved")), | |
| (b = Cc) && (c += "&ved=" + b)) : b && (Dc || (b = document.getElementById("hplogoshareved")) && (Dc = b.getAttribute("data-ved")), (b = Dc) && (c += "&ved=" + b)), window.google.log("doodle", c)) : Ua(c); | |
| for (; 0 < Eg.length;) delete Dg[Eg.pop()]; | |
| Cg || 0 != a || Af() || (Cg = !0, Gg(10)) | |
| }; | |
| var Jg = function(a, b, c, e, f, g) { | |
| if (!(z || id || kd && wd("525"))) return !0; | |
| if (md && f) return Hg(a); | |
| if (f && !e) return !1; | |
| v(b) && (b = Ig(b)); | |
| f = 17 == b || 18 == b || md && 91 == b; | |
| if ((!c || md) && f || md && 16 == b && (e || g)) return !1; | |
| if ((kd || id) && e && c) switch (a) { | |
| case 220: | |
| case 219: | |
| case 221: | |
| case 192: | |
| case 186: | |
| case 189: | |
| case 187: | |
| case 188: | |
| case 190: | |
| case 191: | |
| case 192: | |
| case 222: | |
| return !1 | |
| } | |
| if (z && e && b == a) return !1; | |
| switch (a) { | |
| case 13: | |
| return !0; | |
| case 27: | |
| return !(kd || id) | |
| } | |
| return Hg(a) | |
| }, | |
| Hg = function(a) { | |
| if (48 <= a && 57 >= a || 96 <= a && 106 >= a || 65 <= a && 90 >= a || (kd || id) && 0 == a) return !0; | |
| switch (a) { | |
| case 32: | |
| case 43: | |
| case 63: | |
| case 64: | |
| case 107: | |
| case 109: | |
| case 110: | |
| case 111: | |
| case 186: | |
| case 59: | |
| case 189: | |
| case 187: | |
| case 61: | |
| case 188: | |
| case 190: | |
| case 191: | |
| case 192: | |
| case 222: | |
| case 219: | |
| case 220: | |
| case 221: | |
| return !0; | |
| default: | |
| return !1 | |
| } | |
| }, | |
| Ig = function(a) { | |
| if (jd) a = Kg(a); | |
| else if (md && kd) switch (a) { | |
| case 93: | |
| a = 91 | |
| } | |
| return a | |
| }, | |
| Kg = function(a) { | |
| switch (a) { | |
| case 61: | |
| return 187; | |
| case 59: | |
| return 186; | |
| case 173: | |
| return 189; | |
| case 224: | |
| return 91; | |
| case 0: | |
| return 224; | |
| default: | |
| return a | |
| } | |
| }; | |
| var Lg = function(a) { | |
| Ed.call(this); | |
| this.goog_events_EventHandler$handler_ = a; | |
| this.goog_events_EventHandler$keys_ = {} | |
| }; | |
| w(Lg, Ed); | |
| var Mg = []; | |
| Lg.prototype.listen = function(a, b, c, e) { | |
| za(b) || (b && (Mg[0] = b.toString()), b = Mg); | |
| for (var f = 0; f < b.length; f++) { | |
| var g = $d(a, b[f], c || this.handleEvent, e || !1, this.goog_events_EventHandler$handler_ || this); | |
| if (!g) break; | |
| this.goog_events_EventHandler$keys_[g.key] = g | |
| } | |
| return this | |
| }; | |
| Lg.prototype.unlisten = function(a, b, c, e, f) { | |
| if (za(b)) | |
| for (var g = 0; g < b.length; g++) this.unlisten(a, b[g], c, e, f); | |
| else c = c || this.handleEvent, e = Ca(e) ? !!e.capture : !!e, f = f || this.goog_events_EventHandler$handler_ || this, c = ae(c), e = !!e, b = Od(a) ? Vd(a.eventTargetListeners_, String(b), c, e, f) : a ? (a = ce(a)) ? Vd(a, b, c, e, f) : null : null, b && (he(b), delete this.goog_events_EventHandler$keys_[b.key]); | |
| return this | |
| }; | |
| var Ng = function(a) { | |
| Sb(a.goog_events_EventHandler$keys_, function(a, c) { | |
| this.goog_events_EventHandler$keys_.hasOwnProperty(c) && he(a) | |
| }, a); | |
| a.goog_events_EventHandler$keys_ = {} | |
| }; | |
| Lg.prototype.disposeInternal = function() { | |
| Lg.superClass_.disposeInternal.call(this); | |
| Ng(this) | |
| }; | |
| Lg.prototype.handleEvent = function() { | |
| throw Error("n"); | |
| }; | |
| var Og = function(a, b) { | |
| window.google && google.doodle && (b && Ma("google.doodle.cpDestroy", b), Ma("google.doodle.cpInit", function() { | |
| b && b(); | |
| a() | |
| })) | |
| }; | |
| var Qg = function(a, b, c) { | |
| if (!Pg) return b; | |
| try { | |
| var e = window.localStorage.getItem(a) | |
| } catch (f) { | |
| return b | |
| } | |
| if (null == e) return b; | |
| a = JSON.parse(e); | |
| return c && !c(a) ? b : a | |
| }, | |
| Rg = function(a, b, c) { | |
| if (Pg && (!c || c(b))) try { | |
| window.localStorage.setItem(a, JSON.stringify(b)) | |
| } catch (e) {} | |
| }, | |
| Pg = !!self.localStorage; | |
| var Sg = function(a) { | |
| return 0 == a.indexOf("//") ? "https:" + a : a | |
| }, | |
| Ug = function() { | |
| var a = Tg(), | |
| b = Uc("share", ""); | |
| Gg(9); | |
| a = fc(jc(a), "ios"); | |
| window.location = "http://www.google.com/doodles/_SHARE?description=" + encodeURIComponent(b) + "&url=" + encodeURIComponent(a) | |
| }, | |
| Vg = function() { | |
| var a = Tg(); | |
| a = fc(jc(a), "cl"); | |
| return Sg(a) | |
| }; | |
| var Wg = function(a, b) { | |
| this.imagePreloaders_ = []; | |
| this.imageSizes_ = []; | |
| for (var c = 0, e; e = b[c]; c++) { | |
| var f = new Ra(a + e.filename); | |
| e = e.size; | |
| this.imagePreloaders_.push(f); | |
| this.imageSizes_.push(e) | |
| } | |
| }; | |
| d = Wg.prototype; | |
| d.preload = function(a, b) { | |
| var c = this.imagePreloaders_[v(a) ? a : a[0]]; | |
| b && Qa(c, b); | |
| c.preload() | |
| }; | |
| d.unload = function(a) { | |
| this.imagePreloaders_[v(a) ? a : a[0]].unload() | |
| }; | |
| d.isLoaded = function() { | |
| return this.imagePreloaders_[v(void 0) ? void 0 : (void 0)[0]].isLoaded() | |
| }; | |
| d.getWidth = function(a) { | |
| return a[3] | |
| }; | |
| d.getHeight = function(a) { | |
| return a[4] | |
| }; | |
| d.getSize = function() { | |
| return { | |
| width: (void 0)[3], | |
| height: (void 0)[4] | |
| } | |
| }; | |
| d.drawImage = function(a, b, c, e, f, g, h, m, n, p) { | |
| var r = b[1], | |
| t = b[2], | |
| x = b[3], | |
| fa = b[4]; | |
| if (void 0 == f) { | |
| var R = r; | |
| var Ga = t; | |
| var ua = x; | |
| var la = fa; | |
| f = x; | |
| g = fa | |
| } else void 0 == h ? (R = r, Ga = t, ua = x, la = fa) : (R = r + c, Ga = t + e, ua = f, la = g, c = h, e = m, f = n, g = p); | |
| R < r && (p = r - R, R = r, ua -= p, c += p, f -= p); | |
| Ga < t && (p = t - Ga, Ga = t, la -= p, e += p, g -= p); | |
| R + ua > r + x && (p = R + ua - (r + x), ua -= p, f -= p); | |
| Ga + la > t + fa && (p = Ga + la - (t + fa), la -= p, g -= p); | |
| b = this.imagePreloaders_[v(b) ? b : b[0]]; | |
| if (!b.isLoaded()) throw Error("o"); | |
| 0 < ua && 0 < la && a.drawImage(b.image, R, Ga, ua, la, c, e, f, g) | |
| }; | |
| var Xg = function(a, b) { | |
| this.preloaders_ = $a(b, function(b) { | |
| return new Ra(a + b) | |
| }); | |
| this.canvases_ = new Map | |
| }; | |
| Xg.prototype.preload = function(a, b) { | |
| var c = Yg(this, a); | |
| Qa(c, b); | |
| c.preload() | |
| }; | |
| var Yg = function(a, b) { | |
| return "number" == typeof b ? a.preloaders_[b] : a.preloaders_[b[0]] | |
| }; | |
| Xg.prototype.getHeight = function(a) { | |
| return a[4] | |
| }; | |
| Xg.prototype.getWidth = function(a) { | |
| return a[3] | |
| }; | |
| var $g = function(a, b, c) { | |
| c = void 0 === c ? 1 : c; | |
| var e = b + "," + c; | |
| if (!a.canvases_.has(e)) { | |
| var f = Yg(a, b[0]); | |
| if (!f.isLoaded()) return null; | |
| a.canvases_.set(e, Zg(b, f.image, c)) | |
| } | |
| return a.canvases_.get(e) | |
| }, | |
| Zg = function(a, b, c) { | |
| var e = document.createElement("canvas"), | |
| f = a[3] + 10, | |
| g = a[4] + 10; | |
| e.width = Math.ceil(f * c); | |
| e.height = Math.ceil(g * c); | |
| var h = e.getContext("2d"); | |
| h.scale(c, c); | |
| h.drawImage(b, a[1] - 5, a[2] - 5, f, g, 0, 0, f, g); | |
| return e | |
| }; | |
| Xg.prototype.unload = function(a) { | |
| Yg(this, a).unload() | |
| }; | |
| var ah = function() { | |
| this.wasFinished_ = this.wasStarted_ = !1 | |
| }; | |
| d = ah.prototype; | |
| d.update = function(a) { | |
| this.wasStarted_ || (this.onStart(), this.wasStarted_ = !0); | |
| if (this.module$exports$logo17$action_Action_prototype$isFinished()) this.wasFinished_ || (this.onFinish(), this.wasFinished_ = !0); | |
| else this.onUpdate(a) | |
| }; | |
| d.module$exports$logo17$action_Action_prototype$isFinished = function() { | |
| return !0 | |
| }; | |
| d.onStart = function() {}; | |
| d.onUpdate = function() {}; | |
| d.onFinish = function() {}; | |
| var bh = function(a) { | |
| ah.call(this); | |
| this.module$exports$logo17$action_CallbackAction$callback_ = a | |
| }; | |
| k(bh, ah); | |
| bh.prototype.onFinish = function() { | |
| ah.prototype.onFinish.call(this); | |
| this.module$exports$logo17$action_CallbackAction$callback_() | |
| }; | |
| var ch = function(a) { | |
| ah.call(this); | |
| this.module$exports$logo17$action_ActionSequence$actions_ = a; | |
| this.activeIndex_ = 0 | |
| }; | |
| k(ch, ah); | |
| ch.prototype.module$exports$logo17$action_Action_prototype$isFinished = function() { | |
| return this.activeIndex_ >= this.module$exports$logo17$action_ActionSequence$actions_.length | |
| }; | |
| ch.prototype.onUpdate = function(a) { | |
| this.module$exports$logo17$action_Action_prototype$isFinished() || (this.module$exports$logo17$action_ActionSequence$actions_[this.activeIndex_].update(a), this.module$exports$logo17$action_ActionSequence$actions_[this.activeIndex_].module$exports$logo17$action_Action_prototype$isFinished() && this.activeIndex_++) | |
| }; | |
| var dh = function(a) { | |
| ah.call(this); | |
| this.module$exports$logo17$action_ActionGroup$actions_ = a | |
| }; | |
| k(dh, ah); | |
| dh.prototype.module$exports$logo17$action_Action_prototype$isFinished = function() { | |
| for (var a = l(this.module$exports$logo17$action_ActionGroup$actions_), b = a.next(); !b.done; b = a.next()) | |
| if (!b.value.module$exports$logo17$action_Action_prototype$isFinished()) return !1; | |
| return !0 | |
| }; | |
| dh.prototype.onUpdate = function(a) { | |
| if (!this.module$exports$logo17$action_Action_prototype$isFinished()) | |
| for (var b = l(this.module$exports$logo17$action_ActionGroup$actions_), c = b.next(); !c.done; c = b.next()) c.value.update(a) | |
| }; | |
| var eh = function() { | |
| this.module$exports$logo17$ActionManager$actions_ = [] | |
| }; | |
| eh.prototype.update = function(a) { | |
| for (var b = this.module$exports$logo17$ActionManager$actions_.length - 1; 0 <= b; b--) this.module$exports$logo17$ActionManager$actions_[b].update(a), this.module$exports$logo17$ActionManager$actions_[b].module$exports$logo17$action_Action_prototype$isFinished() && this.module$exports$logo17$ActionManager$actions_.splice(b, 1) | |
| }; | |
| var fh = function(a, b) { | |
| a.module$exports$logo17$ActionManager$actions_.push(b) | |
| }; | |
| var gh = function(a, b, c) { | |
| this.x = a; | |
| this.y = b; | |
| this.z = c | |
| }, | |
| hh = function(a) { | |
| return D(a.x, a.y, a.z) | |
| }; | |
| gh.prototype.scale = function(a) { | |
| this.x *= a; | |
| this.y *= a; | |
| this.z *= a; | |
| return this | |
| }; | |
| var ih = function(a) { | |
| return a.set(a.x - a.z, (a.x + a.z) / 2 + a.y, 0) | |
| }, | |
| jh = function(a, b) { | |
| return a.set(a.x / 2 + a.y, void 0 === b ? 0 : b, a.y - a.x / 2) | |
| }, | |
| kh = function(a, b) { | |
| a.x += b.x; | |
| a.y += b.y; | |
| a.z += b.z; | |
| return a | |
| }; | |
| gh.prototype.add = function(a, b, c) { | |
| this.x += a; | |
| this.y += b; | |
| this.z += c; | |
| return this | |
| }; | |
| gh.prototype.set = function(a, b, c) { | |
| this.x = a; | |
| this.y = b; | |
| this.z = c; | |
| return this | |
| }; | |
| var lh = function(a, b) { | |
| a.x = b.x; | |
| a.y = b.y; | |
| a.z = b.z | |
| }; | |
| gh.prototype.release = function() { | |
| 0 > mh.indexOf(this) && mh.push(this) | |
| }; | |
| gh.prototype.equals = function(a) { | |
| return this == a || !!a && this.x == a.x && this.y == a.y && this.z == a.z | |
| }; | |
| var D = function(a, b, c) { | |
| var e = mh.shift(); | |
| return e ? e.set(a, b, c) : new gh(a, b, c) | |
| }, | |
| nh = function(a) { | |
| try { | |
| var b = JSON.parse(a); | |
| return va(b.x) && va(b.y) && va(b.z) ? D(b.x, b.y, b.z) : null | |
| } catch (c) { | |
| return null | |
| } | |
| }, | |
| oh = function(a, b) { | |
| var c = a.x - b.x, | |
| e = a.y - b.y, | |
| f = a.z - b.z; | |
| return Math.sqrt(c * c + e * e + f * f) | |
| }, | |
| ph = function(a, b, c) { | |
| return D(Nb(a.x, b.x, c), Nb(a.y, b.y, c), Nb(a.z, b.z, c)) | |
| }, | |
| mh = []; | |
| var rh = function(a, b, c, e, f, g) { | |
| if (6 == arguments.length) qh(this, a, b, c, e, f, g); | |
| else { | |
| if (0 != arguments.length) throw Error("p"); | |
| this.m00_ = this.m11_ = 1; | |
| this.m10_ = this.m01_ = this.m02_ = this.m12_ = 0 | |
| } | |
| }, | |
| qh = function(a, b, c, e, f, g, h) { | |
| if (!(v(b) && v(c) && v(e) && v(f) && v(g) && v(h))) throw Error("q"); | |
| a.m00_ = b; | |
| a.m10_ = c; | |
| a.m01_ = e; | |
| a.m11_ = f; | |
| a.m02_ = g; | |
| a.m12_ = h | |
| }; | |
| d = rh.prototype; | |
| d.scale = function(a, b) { | |
| this.m00_ *= a; | |
| this.m10_ *= a; | |
| this.m01_ *= b; | |
| this.m11_ *= b; | |
| return this | |
| }; | |
| d.translate = function(a, b) { | |
| this.m02_ += a * this.m00_ + b * this.m01_; | |
| this.m12_ += a * this.m10_ + b * this.m11_; | |
| return this | |
| }; | |
| d.toString = function() { | |
| return "matrix(" + [this.m00_, this.m10_, this.m01_, this.m11_, this.m02_, this.m12_].join() + ")" | |
| }; | |
| d.transform = function(a, b, c, e, f) { | |
| var g = b; | |
| for (b += 2 * f; g < b;) { | |
| f = a[g++]; | |
| var h = a[g++]; | |
| c[e++] = f * this.m00_ + h * this.m01_ + this.m02_; | |
| c[e++] = f * this.m10_ + h * this.m11_ + this.m12_ | |
| } | |
| }; | |
| d.equals = function(a) { | |
| return this == a ? !0 : a ? this.m00_ == a.m00_ && this.m01_ == a.m01_ && this.m02_ == a.m02_ && this.m10_ == a.m10_ && this.m11_ == a.m11_ && this.m12_ == a.m12_ : !1 | |
| }; | |
| var E = function(a) { | |
| a = void 0 === a ? D(0, 0, 0) : a; | |
| Ed.call(this); | |
| this.worldPosition = D(0, 0, 0); | |
| this.position = a; | |
| this.initialPosition_ = hh(this.position); | |
| this.objectAnchor_ = null; | |
| this.opacity = this.scale = 1; | |
| this.renderTransform = new rh; | |
| this.renderOpacity = this.opacity; | |
| this.forceIsometric = !1; | |
| this.children = []; | |
| this.childrenChanged_ = !1; | |
| this.descendants_ = []; | |
| this.actionManager = new eh | |
| }; | |
| k(E, Ed); | |
| d = E.prototype; | |
| d.disposeInternal = function() { | |
| Ed.prototype.disposeInternal.call(this); | |
| this.actionManager.module$exports$logo17$ActionManager$actions_ = []; | |
| this.position.release(); | |
| this.initialPosition_.release(); | |
| this.worldPosition.release() | |
| }; | |
| d.update = function(a) { | |
| for (var b = l(this.children), c = b.next(); !c.done; c = b.next()) c.value.update(a); | |
| this.actionManager.update(a) | |
| }; | |
| d.render = function(a) { | |
| 0 < this.renderOpacity && this.renderInternal(a); | |
| if (0 < this.children.length) | |
| for (var b = l(this.children), c = b.next(); !c.done; c = b.next()) c.value.render(a) | |
| }; | |
| d.renderInternal = function() {}; | |
| d.reset = function() { | |
| lh(this.position, this.initialPosition_); | |
| for (var a = l(this.children), b = a.next(); !b.done; b = a.next()) b.value.reset(); | |
| this.actionManager.module$exports$logo17$ActionManager$actions_ = [] | |
| }; | |
| var sh = function(a, b, c, e, f) { | |
| if (b) { | |
| var g = a.renderTransform; | |
| g.m00_ = b.m00_; | |
| g.m10_ = b.m10_; | |
| g.m01_ = b.m01_; | |
| g.m11_ = b.m11_; | |
| g.m02_ = b.m02_; | |
| g.m12_ = b.m12_ | |
| } else qh(a.renderTransform, 1, 0, 0, 1, 0, 0); | |
| c ? a.worldPosition.set(a.position.x + c.x, a.position.y + c.y, a.position.z + c.z) : lh(a.worldPosition, a.position); | |
| (e = e || a.forceIsometric) ? (b = ih(hh(a.position)), a.renderTransform.translate(b.x, b.y), b.release()) : a.renderTransform.translate(a.position.x, a.position.y); | |
| a.renderTransform.scale(a.scale, a.scale); | |
| a.renderOpacity = f * a.opacity; | |
| f = l(a.children); | |
| for (b = f.next(); !b.done; b = f.next()) sh(b.value, a.renderTransform, a.worldPosition, e, a.renderOpacity) | |
| }; | |
| E.prototype.getWidth = function() { | |
| return 0 | |
| }; | |
| E.prototype.getHeight = function() { | |
| return 0 | |
| }; | |
| E.prototype.getCenterPosition = function() { | |
| return hh(this.position) | |
| }; | |
| var th = function(a) { | |
| return a.objectAnchor_ ? hh(a.objectAnchor_) : a.getCenterPosition() | |
| }, | |
| F = function(a, b) { | |
| a.children.push(b); | |
| Gd(a, b); | |
| a.childrenChanged_ = !0 | |
| }, | |
| uh = function(a, b) { | |
| jb(a.children, 0, 0, b); | |
| Gd(a, b); | |
| a.childrenChanged_ = !0 | |
| }; | |
| E.prototype.removeChild = function(a) { | |
| eb(this.children, a); | |
| this.childrenChanged_ = !0 | |
| }; | |
| E.prototype.getChildren = function() { | |
| return this.children | |
| }; | |
| E.prototype.getDescendants = function() { | |
| if (this.childrenChanged_) { | |
| this.descendants_ = [].concat(qa(this.children)); | |
| for (var a = l(this.children), b = a.next(); !b.done; b = a.next()) this.descendants_.push.apply(this.descendants_, [].concat(qa(b.value.getDescendants()))) | |
| } | |
| return this.descendants_ | |
| }; | |
| var wh = function() { | |
| Wg.call(this, "/logos/2017/logo17/", vh) | |
| }; | |
| w(wh, Wg); | |
| var vh = [{ | |
| filename: "main-sprite.png", | |
| size: [20, 20] | |
| }]; | |
| xa(wh); | |
| var yh = function() { | |
| Xg.call(this, "/logos/2017/logo17/", xh) | |
| }; | |
| k(yh, Xg); | |
| var xh = "loading-sprite.svg shared-sprite.svg one-sprite.svg one-six-sprite.svg two-sprite.svg three-sprite.svg three-five-sprite.svg four-sprite.svg four-five-sprite.svg four-six-sprite.svg five-sprite.svg six-sprite.svg".split(" "), | |
| G = { | |
| BLOCK01_DECOR: [11, 20, 37050, 68.2, 34.9], | |
| BLOCK02_06_DECOR: [11, 20, 37105, 54.8, 27.8], | |
| BLOCK04_08_DECOR: [11, 20, 37153, 53.8, 26.8], | |
| BUNNY_EAST_0: [1, 20, 20, 128, 169], | |
| BUNNY_EAST_1: [1, 20, 209, 128, 169], | |
| BUNNY_EAST_10: [1, 20, 398, 128, 169], | |
| BUNNY_EAST_11: [1, 20, 587, 128, 169], | |
| BUNNY_EAST_12: [1, | |
| 20, 776, 128, 169 | |
| ], | |
| BUNNY_EAST_13: [1, 20, 965, 128, 169], | |
| BUNNY_EAST_14: [1, 20, 1154, 128, 169], | |
| BUNNY_EAST_15: [1, 20, 1343, 128, 169], | |
| BUNNY_EAST_16: [1, 20, 1532, 128, 169], | |
| BUNNY_EAST_17: [1, 20, 1721, 128, 169], | |
| BUNNY_EAST_18: [1, 20, 1910, 128, 169], | |
| BUNNY_EAST_2: [1, 20, 2099, 128, 169], | |
| BUNNY_EAST_3: [1, 20, 2288, 128, 169], | |
| BUNNY_EAST_4: [1, 20, 2477, 128, 169], | |
| BUNNY_EAST_5: [1, 20, 2666, 128, 169], | |
| BUNNY_EAST_6: [1, 20, 2855, 128, 169], | |
| BUNNY_EAST_7: [1, 20, 3044, 128, 169], | |
| BUNNY_EAST_8: [1, 20, 3233, 128, 169], | |
| BUNNY_EAST_9: [1, 20, 3422, 128, 169], | |
| BUNNY_NORTH_0: [1, 20, | |
| 3611, 128, 170 | |
| ], | |
| BUNNY_NORTH_1: [1, 20, 3801, 128, 170], | |
| BUNNY_NORTH_10: [1, 20, 3991, 128, 170], | |
| BUNNY_NORTH_11: [1, 20, 4181, 128, 170], | |
| BUNNY_NORTH_12: [1, 20, 4371, 128, 170], | |
| BUNNY_NORTH_13: [1, 20, 4561, 128, 170], | |
| BUNNY_NORTH_14: [1, 20, 4751, 128, 170], | |
| BUNNY_NORTH_15: [1, 20, 4941, 128, 170], | |
| BUNNY_NORTH_16: [1, 20, 5131, 128, 170], | |
| BUNNY_NORTH_17: [1, 20, 5321, 128, 170], | |
| BUNNY_NORTH_18: [1, 20, 5511, 128, 170], | |
| BUNNY_NORTH_2: [1, 20, 5701, 128, 170], | |
| BUNNY_NORTH_3: [1, 20, 5891, 128, 170], | |
| BUNNY_NORTH_4: [1, 20, 6081, 128, 170], | |
| BUNNY_NORTH_5: [1, 20, 6271, 128, 170], | |
| BUNNY_NORTH_6: [1, | |
| 20, 6461, 128, 170 | |
| ], | |
| BUNNY_NORTH_7: [1, 20, 6651, 128, 170], | |
| BUNNY_NORTH_8: [1, 20, 6841, 128, 170], | |
| BUNNY_NORTH_9: [1, 20, 7031, 128, 170], | |
| BUNNY_SOUTH_0: [1, 20, 7221, 128, 170], | |
| BUNNY_SOUTH_1: [1, 20, 7411, 128, 170], | |
| BUNNY_SOUTH_10: [1, 20, 7601, 128, 170], | |
| BUNNY_SOUTH_11: [1, 20, 7791, 128, 170], | |
| BUNNY_SOUTH_12: [1, 20, 7981, 128, 170], | |
| BUNNY_SOUTH_13: [1, 20, 8171, 128, 170], | |
| BUNNY_SOUTH_14: [1, 20, 8361, 128, 170], | |
| BUNNY_SOUTH_15: [1, 20, 8551, 128, 170], | |
| BUNNY_SOUTH_16: [1, 20, 8741, 128, 170], | |
| BUNNY_SOUTH_17: [1, 20, 8931, 128, 170], | |
| BUNNY_SOUTH_18: [1, 20, 9121, 128, 170], | |
| BUNNY_SOUTH_2: [1, 20, 9311, 128, 170], | |
| BUNNY_SOUTH_3: [1, 20, 9501, 128, 170], | |
| BUNNY_SOUTH_4: [1, 20, 9691, 128, 170], | |
| BUNNY_SOUTH_5: [1, 20, 9881, 128, 170], | |
| BUNNY_SOUTH_6: [1, 20, 10071, 128, 170], | |
| BUNNY_SOUTH_7: [1, 20, 10261, 128, 170], | |
| BUNNY_SOUTH_8: [1, 20, 10451, 128, 170], | |
| BUNNY_SOUTH_9: [1, 20, 10641, 128, 170], | |
| BUNNY_WEST_0: [1, 20, 10831, 128, 170], | |
| BUNNY_WEST_1: [1, 20, 11021, 128, 170], | |
| BUNNY_WEST_10: [1, 20, 11211, 128, 170], | |
| BUNNY_WEST_11: [1, 20, 11401, 128, 170], | |
| BUNNY_WEST_12: [1, 20, 11591, 128, 170], | |
| BUNNY_WEST_13: [1, 20, 11781, 128, 170], | |
| BUNNY_WEST_14: [1, | |
| 20, 11971, 128, 170 | |
| ], | |
| BUNNY_WEST_15: [1, 20, 12161, 128, 170], | |
| BUNNY_WEST_16: [1, 20, 12351, 128, 170], | |
| BUNNY_WEST_17: [1, 20, 12541, 128, 170], | |
| BUNNY_WEST_18: [1, 20, 12731, 128, 170], | |
| BUNNY_WEST_2: [1, 20, 12921, 128, 170], | |
| BUNNY_WEST_3: [1, 20, 13111, 128, 170], | |
| BUNNY_WEST_4: [1, 20, 13301, 128, 170], | |
| BUNNY_WEST_5: [1, 20, 13491, 128, 170], | |
| BUNNY_WEST_6: [1, 20, 13681, 128, 170], | |
| BUNNY_WEST_7: [1, 20, 13871, 128, 170], | |
| BUNNY_WEST_8: [1, 20, 14061, 128, 170], | |
| BUNNY_WEST_9: [1, 20, 14251, 128, 170], | |
| CARROT: [1, 20, 14545, 128, 128], | |
| CARROT_1: [0, 20, 20, 55, 90], | |
| CARROT_10: [0, 20, 130, | |
| 55, 90 | |
| ], | |
| CARROT_11: [0, 20, 240, 55, 90], | |
| CARROT_12: [0, 20, 350, 55, 90], | |
| CARROT_13: [0, 20, 460, 55, 90], | |
| CARROT_14: [0, 20, 570, 55, 90], | |
| CARROT_15: [0, 20, 680, 55, 90], | |
| CARROT_16: [0, 20, 790, 55, 90], | |
| CARROT_17: [0, 20, 900, 55, 90], | |
| CARROT_18: [0, 20, 1010, 55, 90], | |
| CARROT_19: [0, 20, 1120, 55, 90], | |
| CARROT_2: [0, 20, 1230, 55, 90], | |
| CARROT_20: [0, 20, 1340, 55, 90], | |
| CARROT_21: [0, 20, 1450, 55, 90], | |
| CARROT_22: [0, 20, 1560, 55, 90], | |
| CARROT_23: [0, 20, 1670, 55, 90], | |
| CARROT_24: [0, 20, 1780, 55, 90], | |
| CARROT_25: [0, 20, 1890, 55, 90], | |
| CARROT_26: [0, 20, 2E3, 55, 90], | |
| CARROT_27: [0, 20, 2110, 55, 90], | |
| CARROT_28: [0, 20, 2220, 55, 90], | |
| CARROT_29: [0, 20, 2330, 55, 90], | |
| CARROT_3: [0, 20, 2440, 55, 90], | |
| CARROT_30: [0, 20, 2550, 55, 90], | |
| CARROT_31: [0, 20, 2660, 55, 90], | |
| CARROT_32: [0, 20, 2770, 55, 90], | |
| CARROT_33: [0, 20, 2880, 55, 90], | |
| CARROT_34: [0, 20, 2990, 55, 90], | |
| CARROT_35: [0, 20, 3100, 55, 90], | |
| CARROT_36: [0, 20, 3210, 55, 90], | |
| CARROT_37: [0, 20, 3320, 55, 90], | |
| CARROT_38: [0, 20, 3430, 55, 90], | |
| CARROT_39: [0, 20, 3540, 55, 90], | |
| CARROT_4: [0, 20, 3650, 55, 90], | |
| CARROT_40: [0, 20, 3760, 55, 90], | |
| CARROT_41: [0, 20, 3870, 55, 90], | |
| CARROT_42: [0, 20, 3980, 55, 90], | |
| CARROT_43: [0, 20, 4090, 55, 90], | |
| CARROT_44: [0, 20, 4200, 55, 90], | |
| CARROT_45: [0, 20, 4310, 55, 90], | |
| CARROT_46: [0, 20, 4420, 55, 90], | |
| CARROT_47: [0, 20, 4530, 55, 90], | |
| CARROT_48: [0, 20, 4640, 55, 90], | |
| CARROT_5: [0, 20, 4750, 55, 90], | |
| CARROT_6: [0, 20, 4860, 55, 90], | |
| CARROT_7: [0, 20, 4970, 55, 90], | |
| CARROT_8: [0, 20, 5080, 55, 90], | |
| CARROT_9: [0, 20, 5190, 55, 90], | |
| CARROT_EAT_1: [1, 20, 14693, 55, 61], | |
| CARROT_EAT_10: [1, 20, 14774, 55, 61], | |
| CARROT_EAT_11: [1, 20, 14855, 55, 61], | |
| CARROT_EAT_12: [1, 20, 14936, 55, 61], | |
| CARROT_EAT_2: [1, 20, 15017, 55, 61], | |
| CARROT_EAT_3: [1, 20, 15098, 55, 61], | |
| CARROT_EAT_4: [1, 20, 15179, 55, 61], | |
| CARROT_EAT_5: [1, 20, 15260, 55, 61], | |
| CARROT_EAT_6: [1, 20, 15341, 55, 61], | |
| CARROT_EAT_7: [1, 20, 15422, 55, 61], | |
| CARROT_EAT_8: [1, 20, 15503, 55, 61], | |
| CARROT_EAT_9: [1, 20, 15584, 55, 61], | |
| CARROT_SHADOW: [1, 20, 15665, 64, 32], | |
| CLOUD_01: [2, 20, 20, 97, 84], | |
| CLOUD_02: [2, 20, 124, 47, 33], | |
| CLOUD_03: [2, 20, 177, 57, 34], | |
| CLOUD_04: [2, 20, 231, 115, 71], | |
| CTA_PLAY: [0, 20, 5300, 67.6, 102.5], | |
| CTA_PLAY_BG: [0, 20, 5423, 137.9, 137.9], | |
| CUBE_1: [1, 20, 17917, 128, 128], | |
| CUBE_2: [1, 20, 18065, 128, 128], | |
| CUBE_3: [1, 20, 18213, 128, 128], | |
| FLOWER_001: [2, 20, 322, 24, 14], | |
| FLOWER_002: [2, 20, 356, 24, | |
| 14 | |
| ], | |
| FLOWER_003: [2, 20, 390, 24, 14], | |
| FLOWER_004: [2, 20, 424, 24, 14], | |
| FLOWER_005: [2, 20, 458, 24, 14], | |
| FLOWER_006: [2, 20, 492, 24, 14], | |
| FLOWER_007: [2, 20, 526, 24, 14], | |
| FLOWER_008: [2, 20, 560, 24, 14], | |
| FLOWER_009: [2, 20, 594, 24, 14], | |
| FLOWER_010: [2, 20, 628, 24, 14], | |
| FLOWER_011: [2, 20, 662, 24, 14], | |
| FLOWER_012: [2, 20, 696, 24, 14], | |
| FLOWER_013: [2, 20, 730, 24, 14], | |
| FLOWER_TALL_001: [2, 20, 764, 90, 61], | |
| FLOWER_TALL_002: [2, 20, 845, 90, 61], | |
| FLOWER_TALL_003: [2, 20, 926, 90, 61], | |
| FLOWER_TALL_004: [2, 20, 1007, 90, 61], | |
| FLOWER_TALL_005: [2, 20, 1088, 90, 61], | |
| FLOWER_TALL_006: [2, 20, | |
| 1169, 90, 61 | |
| ], | |
| FLOWER_TALL_007: [2, 20, 1250, 90, 61], | |
| FLOWER_TALL_008: [2, 20, 1331, 90, 61], | |
| FLOWER_TALL_009: [2, 20, 1412, 90, 61], | |
| FLOWER_TALL_010: [2, 20, 1493, 90, 61], | |
| FLOWER_TALL_011: [2, 20, 1574, 90, 61], | |
| FLOWER_TALL_012: [2, 20, 1655, 90, 61], | |
| FLOWER_TALL_013: [2, 20, 1736, 90, 61], | |
| FLOWER_TALL_014: [2, 20, 1817, 90, 61], | |
| FLOWER_YELLOW_001: [2, 20, 1898, 18, 10], | |
| FLOWER_YELLOW_002: [2, 20, 1928, 18, 10], | |
| FLOWER_YELLOW_003: [2, 20, 1958, 18, 10], | |
| FLOWER_YELLOW_004: [2, 20, 1988, 18, 10], | |
| FLOWER_YELLOW_005: [2, 20, 2018, 18, 10], | |
| FLOWER_YELLOW_006: [2, 20, 2048, 18, 10], | |
| FLOWER_YELLOW_007: [2, | |
| 20, 2078, 18, 10 | |
| ], | |
| FLOWER_YELLOW_008: [2, 20, 2108, 18, 10], | |
| FLOWER_YELLOW_009: [2, 20, 2138, 18, 10], | |
| FLOWER_YELLOW_010: [2, 20, 2168, 18, 10], | |
| FOUNTAIN: [2, 20, 2198, 150, 156], | |
| FOUNTAIN_ALT: [2, 20, 2374, 133, 152], | |
| FOUNTAIN_RIPPLE_001: [2, 20, 2546, 44, 20], | |
| FOUNTAIN_RIPPLE_002: [2, 20, 2586, 44, 20], | |
| FOUNTAIN_RIPPLE_003: [2, 20, 2626, 44, 20], | |
| FOUNTAIN_RIPPLE_004: [2, 20, 2666, 44, 20], | |
| FOUNTAIN_RIPPLE_005: [2, 20, 2706, 44, 20], | |
| FOUNTAIN_RIPPLE_006: [2, 20, 2746, 44, 20], | |
| FOUNTAIN_RIPPLE_007: [2, 20, 2786, 44, 20], | |
| FOUNTAIN_RIPPLE_008: [2, 20, 2826, 44, 20], | |
| FOUNTAIN_RIPPLE_009: [2, | |
| 20, 2866, 44, 20 | |
| ], | |
| FOUNTAIN_RIPPLE_010: [2, 20, 2906, 44, 20], | |
| FOUNTAIN_RIPPLE_011: [2, 20, 2946, 44, 20], | |
| FOUNTAIN_RIPPLE_012: [2, 20, 2986, 44, 20], | |
| FOUNTAIN_RIPPLE_013: [2, 20, 3026, 44, 20], | |
| FOUNTAIN_RIPPLE_014: [2, 20, 3066, 44, 20], | |
| FOUNTAIN_RIPPLE_015: [2, 20, 3106, 44, 20], | |
| FOUNTAIN_RIPPLE_016: [2, 20, 3146, 44, 20], | |
| FOUNTAIN_RIPPLE_017: [2, 20, 3186, 44, 20], | |
| FOUNTAIN_RIPPLE_018: [2, 20, 3226, 44, 20], | |
| FOUNTAIN_RIPPLE_019: [2, 20, 3266, 44, 20], | |
| FOUNTAIN_RIPPLE_020: [2, 20, 3306, 44, 20], | |
| FOUNTAIN_RIPPLE_021: [2, 20, 3346, 44, 20], | |
| FOUNTAIN_WATER_0: [2, 20, 3386, 80, | |
| 80 | |
| ], | |
| FOUNTAIN_WATER_1: [2, 20, 3486, 80, 80], | |
| FOUNTAIN_WATER_10: [2, 20, 3586, 80, 80], | |
| FOUNTAIN_WATER_11: [2, 20, 3686, 80, 80], | |
| FOUNTAIN_WATER_12: [2, 20, 3786, 80, 80], | |
| FOUNTAIN_WATER_13: [2, 20, 3886, 80, 80], | |
| FOUNTAIN_WATER_14: [2, 20, 3986, 80, 80], | |
| FOUNTAIN_WATER_15: [2, 20, 4086, 80, 80], | |
| FOUNTAIN_WATER_16: [2, 20, 4186, 80, 80], | |
| FOUNTAIN_WATER_17: [2, 20, 4286, 80, 80], | |
| FOUNTAIN_WATER_18: [2, 20, 4386, 80, 80], | |
| FOUNTAIN_WATER_19: [2, 20, 4486, 80, 80], | |
| FOUNTAIN_WATER_2: [2, 20, 4586, 80, 80], | |
| FOUNTAIN_WATER_20: [2, 20, 4686, 80, 80], | |
| FOUNTAIN_WATER_21: [2, 20, 4786, 80, | |
| 80 | |
| ], | |
| FOUNTAIN_WATER_22: [2, 20, 4886, 80, 80], | |
| FOUNTAIN_WATER_23: [2, 20, 4986, 80, 80], | |
| FOUNTAIN_WATER_24: [2, 20, 5086, 80, 80], | |
| FOUNTAIN_WATER_25: [2, 20, 5186, 80, 80], | |
| FOUNTAIN_WATER_26: [2, 20, 5286, 80, 80], | |
| FOUNTAIN_WATER_27: [2, 20, 5386, 80, 80], | |
| FOUNTAIN_WATER_28: [2, 20, 5486, 80, 80], | |
| FOUNTAIN_WATER_3: [2, 20, 5586, 80, 80], | |
| FOUNTAIN_WATER_4: [2, 20, 5686, 80, 80], | |
| FOUNTAIN_WATER_5: [2, 20, 5786, 80, 80], | |
| FOUNTAIN_WATER_6: [2, 20, 5886, 80, 80], | |
| FOUNTAIN_WATER_7: [2, 20, 5986, 80, 80], | |
| FOUNTAIN_WATER_8: [2, 20, 6086, 80, 80], | |
| FOUNTAIN_WATER_9: [2, 20, 6186, 80, 80], | |
| GATE: [2, 20, 6286, 153, 195], | |
| LOADING_E: [0, 20, 5581, 41, 36], | |
| LOADING_G1: [0, 20, 5637, 41, 36], | |
| LOADING_G2: [0, 20, 5693, 41, 36], | |
| LOADING_L: [0, 20, 5749, 41, 36], | |
| LOADING_O1: [0, 20, 5805, 41, 36], | |
| LOADING_O2: [0, 20, 5861, 41, 36], | |
| N027_L2_BLOCK01_001: [4, 20, 20, 99, 174], | |
| N027_L2_BLOCK01_002: [4, 20, 214, 99, 174], | |
| N027_L2_BLOCK01_003: [4, 20, 408, 99, 174], | |
| N027_L2_BLOCK01_004: [4, 20, 602, 99, 174], | |
| N027_L2_BLOCK01_005: [4, 20, 796, 99, 174], | |
| N027_L2_BLOCK01_006: [4, 20, 990, 99, 174], | |
| N027_L2_BLOCK01_007: [4, 20, 1184, 99, 174], | |
| N027_L2_BLOCK01_008: [4, 20, 1378, 99, 174], | |
| N027_L2_BLOCK01_009: [4, 20, 1572, 99, 174], | |
| N027_L2_BLOCK01_010: [4, 20, 1766, 99, 174], | |
| N027_L2_BLOCK01_011: [4, 20, 1960, 99, 174], | |
| N027_L2_BLOCK01_012: [4, 20, 2154, 99, 174], | |
| N027_L2_BLOCK01_013: [4, 20, 2348, 99, 174], | |
| N027_L2_BLOCK01_014: [4, 20, 2542, 99, 174], | |
| N027_L2_BLOCK01_015: [4, 20, 2736, 99, 174], | |
| N027_L2_BLOCK01_016: [4, 20, 2930, 99, 174], | |
| N027_L2_BLOCK01_017: [4, 20, 3124, 99, 174], | |
| N027_L2_BLOCK01_018: [4, 20, 3318, 99, 174], | |
| N028_L2_BLOCK02_001: [4, 20, 3512, 52, 65], | |
| N028_L2_BLOCK02_002: [4, 20, 3597, 52, 65], | |
| N028_L2_BLOCK02_003: [4, 20, 3682, 52, 65], | |
| N028_L2_BLOCK02_004: [4, 20, 3767, 52, 65], | |
| N028_L2_BLOCK02_005: [4, 20, 3852, 52, 65], | |
| N028_L2_BLOCK02_006: [4, 20, 3937, 52, 65], | |
| N028_L2_BLOCK02_007: [4, 20, 4022, 52, 65], | |
| N028_L2_BLOCK02_008: [4, 20, 4107, 52, 65], | |
| N028_L2_BLOCK02_009: [4, 20, 4192, 52, 65], | |
| N028_L2_BLOCK02_010: [4, 20, 4277, 52, 65], | |
| N028_L2_BLOCK02_011: [4, 20, 4362, 52, 65], | |
| N028_L2_BLOCK02_012: [4, 20, 4447, 52, 65], | |
| N028_L2_BLOCK02_013: [4, 20, 4532, 52, 65], | |
| N028_L2_BLOCK02_014: [4, 20, 4617, 52, 65], | |
| N028_L2_BLOCK02_015: [4, 20, 4702, 52, 65], | |
| N028_L2_BLOCK02_016: [4, 20, 4787, 52, 65], | |
| N028_L2_BLOCK02_017: [4, | |
| 20, 4872, 52, 65 | |
| ], | |
| N028_L2_BLOCK02_018: [4, 20, 4957, 52, 65], | |
| N029_L2_BLOCK03_001: [4, 20, 5042, 123, 202], | |
| N029_L2_BLOCK03_002: [4, 20, 5264, 123, 202], | |
| N029_L2_BLOCK03_003: [4, 20, 5486, 123, 202], | |
| N029_L2_BLOCK03_004: [4, 20, 5708, 123, 202], | |
| N029_L2_BLOCK03_005: [4, 20, 5930, 123, 202], | |
| N029_L2_BLOCK03_006: [4, 20, 6152, 123, 202], | |
| N029_L2_BLOCK03_007: [4, 20, 6374, 123, 202], | |
| N029_L2_BLOCK03_008: [4, 20, 6596, 123, 202], | |
| N029_L2_BLOCK03_009: [4, 20, 6818, 123, 202], | |
| N029_L2_BLOCK03_010: [4, 20, 7040, 123, 202], | |
| N029_L2_BLOCK03_011: [4, 20, 7262, 123, 202], | |
| N029_L2_BLOCK03_012: [4, | |
| 20, 7484, 123, 202 | |
| ], | |
| N029_L2_BLOCK03_013: [4, 20, 7706, 123, 202], | |
| N029_L2_BLOCK03_014: [4, 20, 7928, 123, 202], | |
| N029_L2_BLOCK03_015: [4, 20, 8150, 123, 202], | |
| N029_L2_BLOCK03_016: [4, 20, 8372, 123, 202], | |
| N029_L2_BLOCK03_017: [4, 20, 8594, 123, 202], | |
| N029_L2_BLOCK03_018: [4, 20, 8816, 123, 202], | |
| N030_L2_BLOCK04_001: [4, 20, 9038, 77, 42], | |
| N030_L2_BLOCK04_002: [4, 20, 9100, 77, 42], | |
| N030_L2_BLOCK04_003: [4, 20, 9162, 77, 42], | |
| N030_L2_BLOCK04_004: [4, 20, 9224, 77, 42], | |
| N030_L2_BLOCK04_005: [4, 20, 9286, 77, 42], | |
| N030_L2_BLOCK04_006: [4, 20, 9348, 77, 42], | |
| N030_L2_BLOCK04_007: [4, | |
| 20, 9410, 77, 42 | |
| ], | |
| N030_L2_BLOCK04_008: [4, 20, 9472, 77, 42], | |
| N030_L2_BLOCK04_009: [4, 20, 9534, 77, 42], | |
| N030_L2_BLOCK04_010: [4, 20, 9596, 77, 42], | |
| N030_L2_BLOCK04_011: [4, 20, 9658, 77, 42], | |
| N030_L2_BLOCK04_012: [4, 20, 9720, 77, 42], | |
| N030_L2_BLOCK04_013: [4, 20, 9782, 77, 42], | |
| N030_L2_BLOCK04_014: [4, 20, 9844, 77, 42], | |
| N030_L2_BLOCK04_015: [4, 20, 9906, 77, 42], | |
| N030_L2_BLOCK04_016: [4, 20, 9968, 77, 42], | |
| N030_L2_BLOCK04_017: [4, 20, 10030, 77, 42], | |
| N030_L2_BLOCK04_018: [4, 20, 10092, 77, 42], | |
| N030_L2_BLOCK04_019: [4, 20, 10154, 77, 42], | |
| N032_L2_ISLAND01_APPLE: [4, 20, | |
| 10216, 128, 201 | |
| ], | |
| N033_L2_APPLETREESPIN_1: [4, 20, 10437, 119, 103], | |
| N033_L2_APPLETREESPIN_10: [4, 20, 10560, 119, 103], | |
| N033_L2_APPLETREESPIN_11: [4, 20, 10683, 119, 103], | |
| N033_L2_APPLETREESPIN_12: [4, 20, 10806, 119, 103], | |
| N033_L2_APPLETREESPIN_13: [4, 20, 10929, 119, 103], | |
| N033_L2_APPLETREESPIN_14: [4, 20, 11052, 119, 103], | |
| N033_L2_APPLETREESPIN_15: [4, 20, 11175, 119, 103], | |
| N033_L2_APPLETREESPIN_16: [4, 20, 11298, 119, 103], | |
| N033_L2_APPLETREESPIN_17: [4, 20, 11421, 119, 103], | |
| N033_L2_APPLETREESPIN_18: [4, 20, 11544, 119, 103], | |
| N033_L2_APPLETREESPIN_19: [4, | |
| 20, 11667, 119, 103 | |
| ], | |
| N033_L2_APPLETREESPIN_2: [4, 20, 11790, 119, 103], | |
| N033_L2_APPLETREESPIN_20: [4, 20, 11913, 119, 103], | |
| N033_L2_APPLETREESPIN_21: [4, 20, 12036, 119, 103], | |
| N033_L2_APPLETREESPIN_22: [4, 20, 12159, 119, 103], | |
| N033_L2_APPLETREESPIN_23: [4, 20, 12282, 119, 103], | |
| N033_L2_APPLETREESPIN_24: [4, 20, 12405, 119, 103], | |
| N033_L2_APPLETREESPIN_25: [4, 20, 12528, 119, 103], | |
| N033_L2_APPLETREESPIN_26: [4, 20, 12651, 119, 103], | |
| N033_L2_APPLETREESPIN_27: [4, 20, 12774, 119, 103], | |
| N033_L2_APPLETREESPIN_28: [4, 20, 12897, 119, 103], | |
| N033_L2_APPLETREESPIN_29: [4, | |
| 20, 13020, 119, 103 | |
| ], | |
| N033_L2_APPLETREESPIN_3: [4, 20, 13143, 119, 103], | |
| N033_L2_APPLETREESPIN_30: [4, 20, 13266, 119, 103], | |
| N033_L2_APPLETREESPIN_31: [4, 20, 13389, 119, 103], | |
| N033_L2_APPLETREESPIN_32: [4, 20, 13512, 119, 103], | |
| N033_L2_APPLETREESPIN_33: [4, 20, 13635, 119, 103], | |
| N033_L2_APPLETREESPIN_34: [4, 20, 13758, 119, 103], | |
| N033_L2_APPLETREESPIN_35: [4, 20, 13881, 119, 103], | |
| N033_L2_APPLETREESPIN_36: [4, 20, 14004, 119, 103], | |
| N033_L2_APPLETREESPIN_37: [4, 20, 14127, 119, 103], | |
| N033_L2_APPLETREESPIN_38: [4, 20, 14250, 119, 103], | |
| N033_L2_APPLETREESPIN_39: [4, | |
| 20, 14373, 119, 103 | |
| ], | |
| N033_L2_APPLETREESPIN_4: [4, 20, 14496, 119, 103], | |
| N033_L2_APPLETREESPIN_40: [4, 20, 14619, 119, 103], | |
| N033_L2_APPLETREESPIN_41: [4, 20, 14742, 119, 103], | |
| N033_L2_APPLETREESPIN_42: [4, 20, 14865, 119, 103], | |
| N033_L2_APPLETREESPIN_43: [4, 20, 14988, 119, 103], | |
| N033_L2_APPLETREESPIN_44: [4, 20, 15111, 119, 103], | |
| N033_L2_APPLETREESPIN_45: [4, 20, 15234, 119, 103], | |
| N033_L2_APPLETREESPIN_46: [4, 20, 15357, 119, 103], | |
| N033_L2_APPLETREESPIN_47: [4, 20, 15480, 119, 103], | |
| N033_L2_APPLETREESPIN_48: [4, 20, 15603, 119, 103], | |
| N033_L2_APPLETREESPIN_5: [4, | |
| 20, 15726, 119, 103 | |
| ], | |
| N033_L2_APPLETREESPIN_6: [4, 20, 15849, 119, 103], | |
| N033_L2_APPLETREESPIN_7: [4, 20, 15972, 119, 103], | |
| N033_L2_APPLETREESPIN_8: [4, 20, 16095, 119, 103], | |
| N033_L2_APPLETREESPIN_9: [4, 20, 16218, 119, 103], | |
| N034_L2_ISLAND02_PEAR_1: [4, 20, 16341, 128, 141], | |
| N035_L2_ISLAND03_STAIRS: [4, 20, 16502, 128, 149], | |
| N036_L2_ISLAND06_CHERRY: [4, 20, 16671, 133, 233], | |
| N037_L2_ISLAND05_STRAWBERRY: [4, 20, 20324, 128, 98], | |
| N037_L2_STRAWBERRYSPIN_001: [4, 20, 16924, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_002: [4, 20, 17009, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_003: [4, | |
| 20, 17094, 68, 65 | |
| ], | |
| N037_L2_STRAWBERRYSPIN_004: [4, 20, 17179, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_005: [4, 20, 17264, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_006: [4, 20, 17349, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_007: [4, 20, 17434, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_008: [4, 20, 17519, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_009: [4, 20, 17604, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_010: [4, 20, 17689, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_011: [4, 20, 17774, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_012: [4, 20, 17859, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_013: [4, 20, 17944, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_014: [4, | |
| 20, 18029, 68, 65 | |
| ], | |
| N037_L2_STRAWBERRYSPIN_015: [4, 20, 18114, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_016: [4, 20, 18199, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_017: [4, 20, 18284, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_018: [4, 20, 18369, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_019: [4, 20, 18454, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_020: [4, 20, 18539, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_021: [4, 20, 18624, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_022: [4, 20, 18709, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_023: [4, 20, 18794, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_024: [4, 20, 18879, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_025: [4, | |
| 20, 18964, 68, 65 | |
| ], | |
| N037_L2_STRAWBERRYSPIN_026: [4, 20, 19049, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_027: [4, 20, 19134, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_028: [4, 20, 19219, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_029: [4, 20, 19304, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_030: [4, 20, 19389, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_031: [4, 20, 19474, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_032: [4, 20, 19559, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_033: [4, 20, 19644, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_034: [4, 20, 19729, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_035: [4, 20, 19814, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_036: [4, | |
| 20, 19899, 68, 65 | |
| ], | |
| N037_L2_STRAWBERRYSPIN_037: [4, 20, 19984, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_038: [4, 20, 20069, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_039: [4, 20, 20154, 68, 65], | |
| N037_L2_STRAWBERRYSPIN_040: [4, 20, 20239, 68, 65], | |
| N039_L2_CLOUD01: [4, 20, 20442, 108, 69], | |
| N040_L2_CLOUD02: [4, 20, 20531, 52, 58], | |
| N041_L2_CLOUD03: [4, 20, 20609, 100, 77], | |
| N042_L2_CLOUD04: [4, 20, 20706, 110, 99], | |
| N043_L2_TILE01_002: [1, 20, 15717, 128, 128], | |
| N044_L2_TILE02_008: [4, 20, 20825, 128, 128], | |
| N045_L2_TILE03_008: [1, 20, 15865, 128, 128], | |
| N046_L2_TILE04_13: [4, 20, 20973, 128, 128], | |
| N047_L2_TILE05_013: [4, 20, 21121, 128, 128], | |
| N049_L3_BLOCK01_001: [5, 20, 20, 88, 46], | |
| N049_L3_BLOCK01_002: [5, 20, 86, 88, 46], | |
| N049_L3_BLOCK01_003: [5, 20, 152, 88, 46], | |
| N049_L3_BLOCK01_004: [5, 20, 218, 88, 46], | |
| N049_L3_BLOCK01_005: [5, 20, 284, 88, 46], | |
| N049_L3_BLOCK01_006: [5, 20, 350, 88, 46], | |
| N049_L3_BLOCK01_007: [5, 20, 416, 88, 46], | |
| N049_L3_BLOCK01_008: [5, 20, 482, 88, 46], | |
| N049_L3_BLOCK01_009: [5, 20, 548, 88, 46], | |
| N049_L3_BLOCK01_010: [5, 20, 614, 88, 46], | |
| N049_L3_BLOCK01_011: [5, 20, 680, 88, 46], | |
| N049_L3_BLOCK01_012: [5, 20, 746, 88, 46], | |
| N049_L3_BLOCK01_013: [5, | |
| 20, 812, 88, 46 | |
| ], | |
| N049_L3_BLOCK01_014: [5, 20, 878, 88, 46], | |
| N049_L3_BLOCK01_015: [5, 20, 944, 88, 46], | |
| N049_L3_BLOCK01_016: [5, 20, 1010, 88, 46], | |
| N049_L3_BLOCK01_017: [5, 20, 1076, 88, 46], | |
| N050_L3_BLOCK02_001: [5, 20, 1142, 33, 59], | |
| N050_L3_BLOCK02_002: [5, 20, 1221, 33, 59], | |
| N050_L3_BLOCK02_003: [5, 20, 1300, 33, 59], | |
| N050_L3_BLOCK02_004: [5, 20, 1379, 33, 59], | |
| N050_L3_BLOCK02_005: [5, 20, 1458, 33, 59], | |
| N050_L3_BLOCK02_006: [5, 20, 1537, 33, 59], | |
| N050_L3_BLOCK02_007: [5, 20, 1616, 33, 59], | |
| N050_L3_BLOCK02_008: [5, 20, 1695, 33, 59], | |
| N050_L3_BLOCK02_009: [5, 20, 1774, 33, | |
| 59 | |
| ], | |
| N050_L3_BLOCK02_010: [5, 20, 1853, 33, 59], | |
| N050_L3_BLOCK02_011: [5, 20, 1932, 33, 59], | |
| N050_L3_BLOCK02_012: [5, 20, 2011, 33, 59], | |
| N050_L3_BLOCK02_013: [5, 20, 2090, 33, 59], | |
| N050_L3_BLOCK02_014: [5, 20, 2169, 33, 59], | |
| N050_L3_BLOCK02_015: [5, 20, 2248, 33, 59], | |
| N050_L3_BLOCK02_016: [5, 20, 2327, 33, 59], | |
| N050_L3_BLOCK02_017: [5, 20, 2406, 33, 59], | |
| N050_L3_BLOCK02_018: [5, 20, 2485, 33, 59], | |
| N051_L3_BLOCK03_001: [5, 20, 2564, 76, 206], | |
| N051_L3_BLOCK03_002: [5, 20, 2790, 76, 206], | |
| N051_L3_BLOCK03_003: [5, 20, 3016, 76, 206], | |
| N051_L3_BLOCK03_004: [5, 20, 3242, 76, 206], | |
| N051_L3_BLOCK03_005: [5, 20, 3468, 76, 206], | |
| N051_L3_BLOCK03_006: [5, 20, 3694, 76, 206], | |
| N051_L3_BLOCK03_007: [5, 20, 3920, 76, 206], | |
| N051_L3_BLOCK03_008: [5, 20, 4146, 76, 206], | |
| N051_L3_BLOCK03_009: [5, 20, 4372, 76, 206], | |
| N051_L3_BLOCK03_010: [5, 20, 4598, 76, 206], | |
| N051_L3_BLOCK03_011: [5, 20, 4824, 76, 206], | |
| N051_L3_BLOCK03_012: [5, 20, 5050, 76, 206], | |
| N052_L3_BLOCK04_001: [5, 20, 5276, 111, 73], | |
| N052_L3_BLOCK04_002: [5, 20, 5369, 111, 73], | |
| N052_L3_BLOCK04_003: [5, 20, 5462, 111, 73], | |
| N052_L3_BLOCK04_004: [5, 20, 5555, 111, 73], | |
| N052_L3_BLOCK04_005: [5, 20, 5648, 111, | |
| 73 | |
| ], | |
| N052_L3_BLOCK04_006: [5, 20, 5741, 111, 73], | |
| N052_L3_BLOCK04_007: [5, 20, 5834, 111, 73], | |
| N052_L3_BLOCK04_008: [5, 20, 5927, 111, 73], | |
| N052_L3_BLOCK04_009: [5, 20, 6020, 111, 73], | |
| N052_L3_BLOCK04_010: [5, 20, 6113, 111, 73], | |
| N052_L3_BLOCK04_011: [5, 20, 6206, 111, 73], | |
| N052_L3_BLOCK04_012: [5, 20, 6299, 111, 73], | |
| N052_L3_BLOCK04_013: [5, 20, 6392, 111, 73], | |
| N052_L3_BLOCK04_014: [5, 20, 6485, 111, 73], | |
| N052_L3_BLOCK04_015: [5, 20, 6578, 111, 73], | |
| N052_L3_BLOCK04_016: [5, 20, 6671, 111, 73], | |
| N052_L3_BLOCK04_017: [5, 20, 6764, 111, 73], | |
| N052_L3_BLOCK04_018: [5, 20, 6857, | |
| 111, 73 | |
| ], | |
| N052_L3_BLOCK04_019: [5, 20, 6950, 111, 73], | |
| N052_L3_BLOCK04_020: [5, 20, 7043, 111, 73], | |
| N052_L3_BLOCK04_021: [5, 20, 7136, 111, 73], | |
| N052_L3_BLOCK04_022: [5, 20, 7229, 111, 73], | |
| N052_L3_BLOCK04_023: [5, 20, 7322, 111, 73], | |
| N052_L3_BLOCK04_024: [5, 20, 7415, 111, 73], | |
| N052_L3_BLOCK04_025: [5, 20, 7508, 111, 73], | |
| N052_L3_BLOCK04_026: [5, 20, 7601, 111, 73], | |
| N052_L3_BLOCK04_027: [5, 20, 7694, 111, 73], | |
| N052_L3_BLOCK04_028: [5, 20, 7787, 111, 73], | |
| N052_L3_BLOCK04_029: [5, 20, 7880, 111, 73], | |
| N052_L3_BLOCK04_030: [5, 20, 7973, 111, 73], | |
| N052_L3_BLOCK04_031: [5, 20, | |
| 8066, 111, 73 | |
| ], | |
| N052_L3_BLOCK04_032: [5, 20, 8159, 111, 73], | |
| N052_L3_BLOCK04_033: [5, 20, 8252, 111, 73], | |
| N052_L3_BLOCK04_034: [5, 20, 8345, 111, 73], | |
| N052_L3_BLOCK04_035: [5, 20, 8438, 111, 73], | |
| N052_L3_BLOCK04_036: [5, 20, 8531, 111, 73], | |
| N052_L3_BLOCK04_037: [5, 20, 8624, 111, 73], | |
| N052_L3_BLOCK04_038: [5, 20, 8717, 111, 73], | |
| N052_L3_BLOCK04_039: [5, 20, 8810, 111, 73], | |
| N052_L3_BLOCK04_040: [5, 20, 8903, 111, 73], | |
| N052_L3_BLOCK04_041: [5, 20, 8996, 111, 73], | |
| N052_L3_BLOCK04_042: [5, 20, 9089, 111, 73], | |
| N054_L3_WATERFALL_BLOCK05_001: [5, 20, 9182, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_002: [5, | |
| 20, 9279, 91, 77 | |
| ], | |
| N054_L3_WATERFALL_BLOCK05_003: [5, 20, 9376, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_004: [5, 20, 9473, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_005: [5, 20, 9570, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_006: [5, 20, 9667, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_007: [5, 20, 9764, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_008: [5, 20, 9861, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_009: [5, 20, 9958, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_010: [5, 20, 10055, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_011: [5, 20, 10152, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_012: [5, 20, 10249, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_013: [5, | |
| 20, 10346, 91, 77 | |
| ], | |
| N054_L3_WATERFALL_BLOCK05_014: [5, 20, 10443, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_015: [5, 20, 10540, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_016: [5, 20, 10637, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_017: [5, 20, 10734, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_018: [5, 20, 10831, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_019: [5, 20, 10928, 91, 77], | |
| N054_L3_WATERFALL_BLOCK05_020: [5, 20, 11025, 91, 77], | |
| N055_L3_WATERFALL_BLOCK06_001: [5, 20, 11122, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_002: [5, 20, 11249, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_003: [5, 20, 11376, | |
| 90, 107 | |
| ], | |
| N055_L3_WATERFALL_BLOCK06_004: [5, 20, 11503, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_005: [5, 20, 11630, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_006: [5, 20, 11757, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_007: [5, 20, 11884, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_008: [5, 20, 12011, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_009: [5, 20, 12138, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_010: [5, 20, 12265, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_011: [5, 20, 12392, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_012: [5, 20, 12519, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_013: [5, 20, 12646, 90, | |
| 107 | |
| ], | |
| N055_L3_WATERFALL_BLOCK06_014: [5, 20, 12773, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_015: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_016: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_017: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_018: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_019: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_020: [5, 20, 12900, 90, 107], | |
| N055_L3_WATERFALL_BLOCK06_021: [5, 20, 12900, 90, 107], | |
| N056_L3_WATERFALL_BLOCK07_001: [5, 20, 13027, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_002: [5, 20, 13199, 132, | |
| 152 | |
| ], | |
| N056_L3_WATERFALL_BLOCK07_003: [5, 20, 13371, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_004: [5, 20, 13543, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_005: [5, 20, 13715, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_006: [5, 20, 13887, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_007: [5, 20, 14059, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_008: [5, 20, 14231, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_009: [5, 20, 14403, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_010: [5, 20, 14575, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_011: [5, 20, 14747, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_012: [5, 20, 14919, | |
| 132, 152 | |
| ], | |
| N056_L3_WATERFALL_BLOCK07_013: [5, 20, 15091, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_014: [5, 20, 15263, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_015: [5, 20, 15435, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_016: [5, 20, 15607, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_017: [5, 20, 15779, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_018: [5, 20, 15951, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_019: [5, 20, 16123, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_020: [5, 20, 16295, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_021: [5, 20, 16467, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_022: [5, | |
| 20, 16639, 132, 152 | |
| ], | |
| N056_L3_WATERFALL_BLOCK07_023: [5, 20, 16811, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_024: [5, 20, 16983, 132, 152], | |
| N056_L3_WATERFALL_BLOCK07_025: [5, 20, 17155, 132, 152], | |
| N057_L3_WATERFALL_BLOCK08_001: [5, 20, 17327, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_002: [5, 20, 17406, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_003: [5, 20, 17485, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_004: [5, 20, 17564, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_005: [5, 20, 17643, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_006: [5, 20, 17722, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_007: [5, 20, | |
| 17801, 70, 59 | |
| ], | |
| N057_L3_WATERFALL_BLOCK08_008: [5, 20, 17880, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_009: [5, 20, 17959, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_010: [5, 20, 18038, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_011: [5, 20, 18117, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_012: [5, 20, 18196, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_013: [5, 20, 18275, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_014: [5, 20, 18354, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_015: [5, 20, 18433, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_016: [5, 20, 18512, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_017: [5, 20, 18591, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_018: [5, 20, 18670, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_019: [5, 20, 18749, 70, 59], | |
| N057_L3_WATERFALL_BLOCK08_020: [5, 20, 18828, 70, 59], | |
| N062_L3_TILE05_012: [1, 20, 16013, 128, 128], | |
| N063_L3_TILE06_013: [1, 20, 16161, 128, 128], | |
| N064_L3_TILE07_009: [1, 20, 16309, 128, 128], | |
| N065_L3_TILE08_010: [1, 20, 16457, 128, 128], | |
| N066_L3_CLOUD01: [5, 20, 19499, 51.6, 40.3], | |
| N067_L3_CLOUD02: [5, 20, 19560, 100.6, 67.2], | |
| N068_L3_CLOUD03: [5, 20, 19648, 62.1, 54.3], | |
| N069_L3_CLOUD04: [5, 20, 19723, 122.4, 94.5], | |
| N070_L3_WINDMILLBUILDING: [5, 20, 19838, | |
| 145.7, 270.8 | |
| ], | |
| N071_L3_WINDMILL_PROPELLER_001: [5, 20, 20129, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_002: [5, 20, 20327, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_003: [5, 20, 20525, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_004: [5, 20, 20723, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_005: [5, 20, 20921, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_006: [5, 20, 21119, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_007: [5, 20, 21317, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_008: [5, 20, 21515, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_009: [5, 20, 21713, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_010: [5, | |
| 20, 21911, 137, 178 | |
| ], | |
| N071_L3_WINDMILL_PROPELLER_011: [5, 20, 22109, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_012: [5, 20, 22307, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_013: [5, 20, 22505, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_014: [5, 20, 22703, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_015: [5, 20, 22901, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_016: [5, 20, 23099, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_017: [5, 20, 23297, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_018: [5, 20, 23495, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_019: [5, 20, 23693, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_020: [5, | |
| 20, 23891, 137, 178 | |
| ], | |
| N071_L3_WINDMILL_PROPELLER_021: [5, 20, 24089, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_022: [5, 20, 24287, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_023: [5, 20, 24485, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_024: [5, 20, 24683, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_025: [5, 20, 24881, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_026: [5, 20, 25079, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_027: [5, 20, 25277, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_028: [5, 20, 25475, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_029: [5, 20, 25673, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_030: [5, | |
| 20, 25871, 137, 178 | |
| ], | |
| N071_L3_WINDMILL_PROPELLER_031: [5, 20, 26069, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_032: [5, 20, 26267, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_033: [5, 20, 26465, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_034: [5, 20, 26663, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_035: [5, 20, 26861, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_036: [5, 20, 27059, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_037: [5, 20, 27257, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_038: [5, 20, 27455, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_039: [5, 20, 27653, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_040: [5, | |
| 20, 27851, 137, 178 | |
| ], | |
| N071_L3_WINDMILL_PROPELLER_041: [5, 20, 28049, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_042: [5, 20, 28247, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_043: [5, 20, 28445, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_044: [5, 20, 28643, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_045: [5, 20, 28841, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_046: [5, 20, 29039, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_047: [5, 20, 29237, 137, 178], | |
| N071_L3_WINDMILL_PROPELLER_048: [5, 20, 29435, 137, 178], | |
| N072_L3_ISLAND01: [5, 20, 29633, 98.3, 77.8], | |
| N074_L3_ISLAND03: [5, 20, 29731, | |
| 98.3, 77.8 | |
| ], | |
| N075_L3_ISLAND04: [5, 20, 29829, 98.3, 188], | |
| N076_L3_ISLAND05: [5, 20, 30037, 98.4, 94.3], | |
| N077_L3_ISLAND06: [5, 20, 30152, 98.4, 77.8], | |
| N078_L3_LEAVES_001: [5, 20, 30250, 86, 78], | |
| N078_L3_LEAVES_002: [5, 20, 30348, 86, 78], | |
| N078_L3_LEAVES_003: [5, 20, 30446, 86, 78], | |
| N078_L3_LEAVES_004: [5, 20, 30544, 86, 78], | |
| N078_L3_LEAVES_005: [5, 20, 30642, 86, 78], | |
| N078_L3_LEAVES_006: [5, 20, 30740, 86, 78], | |
| N078_L3_LEAVES_007: [5, 20, 30838, 86, 78], | |
| N078_L3_LEAVES_008: [5, 20, 30936, 86, 78], | |
| N078_L3_LEAVES_009: [5, 20, 31034, 86, 78], | |
| N078_L3_LEAVES_010: [5, 20, 31132, | |
| 86, 78 | |
| ], | |
| N078_L3_LEAVES_011: [5, 20, 31230, 86, 78], | |
| N078_L3_LEAVES_012: [5, 20, 31328, 86, 78], | |
| N078_L3_LEAVES_013: [5, 20, 31426, 86, 78], | |
| N078_L3_LEAVES_014: [5, 20, 31524, 86, 78], | |
| N078_L3_LEAVES_015: [5, 20, 31622, 86, 78], | |
| N078_L3_LEAVES_016: [5, 20, 31720, 86, 78], | |
| N078_L3_LEAVES_017: [5, 20, 31818, 86, 78], | |
| N078_L3_LEAVES_018: [5, 20, 31916, 86, 78], | |
| N078_L3_LEAVES_019: [5, 20, 32014, 86, 78], | |
| N078_L3_LEAVES_020: [5, 20, 32112, 86, 78], | |
| N078_L3_LEAVES_021: [5, 20, 32210, 86, 78], | |
| N078_L3_LEAVES_022: [5, 20, 32308, 86, 78], | |
| N078_L3_LEAVES_023: [5, 20, 32406, 86, 78], | |
| N080_L3_BIRDLOOP_001: [5, 20, 32504, 51, 100], | |
| N080_L3_BIRDLOOP_002: [5, 20, 32624, 51, 100], | |
| N080_L3_BIRDLOOP_003: [5, 20, 32744, 51, 100], | |
| N080_L3_BIRDLOOP_004: [5, 20, 32864, 51, 100], | |
| N080_L3_BIRDLOOP_005: [5, 20, 32984, 51, 100], | |
| N080_L3_BIRDLOOP_006: [5, 20, 33104, 51, 100], | |
| N080_L3_BIRDLOOP_007: [5, 20, 33224, 51, 100], | |
| N080_L3_BIRDLOOP_008: [5, 20, 33344, 51, 100], | |
| N080_L3_BIRDLOOP_009: [5, 20, 33464, 51, 100], | |
| N080_L3_BIRDLOOP_010: [5, 20, 33584, 51, 100], | |
| N080_L3_BIRDLOOP_011: [5, 20, 33704, 51, 100], | |
| N080_L3_BIRDLOOP_012: [5, 20, 33824, 51, 100], | |
| N080_L3_BIRDLOOP_013: [5, | |
| 20, 33944, 51, 100 | |
| ], | |
| N080_L3_BIRDLOOP_014: [5, 20, 34064, 51, 100], | |
| N080_L3_BIRDLOOP_015: [5, 20, 34184, 51, 100], | |
| N080_L3_BIRDLOOP_016: [5, 20, 34304, 51, 100], | |
| N080_L3_BIRDLOOP_017: [5, 20, 34424, 51, 100], | |
| N080_L3_BIRDLOOP_018: [5, 20, 34544, 51, 100], | |
| N080_L3_BIRDLOOP_019: [5, 20, 34664, 51, 100], | |
| N080_L3_BIRDLOOP_020: [5, 20, 34784, 51, 100], | |
| N080_L3_BIRDLOOP_021: [5, 20, 34904, 51, 100], | |
| N080_L3_BIRDLOOP_022: [5, 20, 35024, 51, 100], | |
| N080_L3_BIRDLOOP_023: [5, 20, 35144, 51, 100], | |
| N080_L3_BIRDLOOP_024: [5, 20, 35264, 51, 100], | |
| N080_L3_BIRDLOOP_025: [5, 20, 35384, | |
| 51, 100 | |
| ], | |
| N080_L3_BIRDLOOP_026: [5, 20, 35504, 51, 100], | |
| N080_L3_BIRDLOOP_027: [5, 20, 35624, 51, 100], | |
| N080_L3_BIRDLOOP_028: [5, 20, 35744, 51, 100], | |
| N080_L3_BIRDLOOP_029: [5, 20, 35864, 51, 100], | |
| N080_L3_BIRDLOOP_030: [5, 20, 35984, 51, 100], | |
| N080_L3_BIRDLOOP_031: [5, 20, 36104, 51, 100], | |
| N080_L3_BIRDLOOP_032: [5, 20, 36224, 51, 100], | |
| N080_L3_BIRDLOOP_033: [5, 20, 36344, 51, 100], | |
| N080_L3_BIRDLOOP_034: [5, 20, 36464, 51, 100], | |
| N080_L3_BIRDLOOP_035: [5, 20, 36584, 51, 100], | |
| N080_L3_BIRDLOOP_036: [5, 20, 36704, 51, 100], | |
| N080_L3_BIRDLOOP_037: [5, 20, 36824, 51, 100], | |
| N080_L3_BIRDLOOP_038: [5, | |
| 20, 36944, 51, 100 | |
| ], | |
| N080_L3_BIRDLOOP_039: [5, 20, 37064, 51, 100], | |
| N080_L3_BIRDLOOP_040: [5, 20, 37184, 51, 100], | |
| N080_L3_BIRDLOOP_041: [5, 20, 37304, 51, 100], | |
| N080_L3_BIRDLOOP_042: [5, 20, 37424, 51, 100], | |
| N080_L3_BIRDLOOP_043: [5, 20, 37544, 51, 100], | |
| N080_L3_BIRDLOOP_044: [5, 20, 37664, 51, 100], | |
| N080_L3_BIRDLOOP_045: [5, 20, 37784, 51, 100], | |
| N080_L3_BIRDLOOP_046: [5, 20, 37904, 51, 100], | |
| N080_L3_BIRDLOOP_047: [5, 20, 38024, 51, 100], | |
| N080_L3_BIRDLOOP_048: [5, 20, 38144, 51, 100], | |
| N080_L3_BIRDLOOP_049: [5, 20, 38264, 51, 100], | |
| N080_L3_BIRDLOOP_050: [5, 20, 38384, | |
| 51, 100 | |
| ], | |
| N080_L3_BIRDLOOP_051: [5, 20, 38504, 51, 100], | |
| N080_L3_BIRDLOOP_052: [5, 20, 38624, 51, 100], | |
| N080_L3_BIRDLOOP_053: [5, 20, 38744, 51, 100], | |
| N080_L3_BIRDLOOP_054: [5, 20, 38864, 51, 100], | |
| N080_L3_BIRDLOOP_055: [5, 20, 38984, 51, 100], | |
| N080_L3_BIRDLOOP_056: [5, 20, 39104, 51, 100], | |
| N080_L3_BIRDLOOP_057: [5, 20, 39224, 51, 100], | |
| N080_L3_BIRDLOOP_058: [5, 20, 39344, 51, 100], | |
| N080_L3_BIRDLOOP_059: [5, 20, 39464, 51, 100], | |
| N080_L3_BIRDLOOP_060: [5, 20, 39584, 51, 100], | |
| N080_L3_BIRDLOOP_061: [5, 20, 39704, 51, 100], | |
| N080_L3_BIRDLOOP_062: [5, 20, 39824, 51, 100], | |
| N080_L3_BIRDLOOP_063: [5, | |
| 20, 39944, 51, 100 | |
| ], | |
| N080_L3_BIRDLOOP_064: [5, 20, 40064, 51, 100], | |
| N080_L3_BIRDLOOP_065: [5, 20, 40184, 51, 100], | |
| N093_L4_CLOUD01: [7, 20, 20, 110.4, 77.8], | |
| N094_L4_CLOUD02: [7, 20, 118, 129.9, 65.5], | |
| N095_L4_CLOUD03: [7, 20, 204, 83.6, 62.4], | |
| N096_L4_OWL_TREE: [7, 20, 287, 140, 190], | |
| N097_L4_SQUIRREL_TREE: [7, 20, 497, 144, 346.4], | |
| N098_L4_WATER: [1, 20, 16605, 128, 108], | |
| N099_L4_TILE01_002: [1, 20, 16733, 128, 128], | |
| N101_L4_TILE03_007: [1, 20, 16881, 128, 128], | |
| N105_L4_TILE07_009: [1, 20, 17029, 128, 128], | |
| N106_L4_TILE08_010: [1, 20, 17177, 128, 128], | |
| N107_L4_TILE09_013: [1, | |
| 20, 17325, 128, 128 | |
| ], | |
| N109_L4_TILE11_010: [1, 20, 17473, 128, 128], | |
| N110_L4_TILE12_012: [1, 20, 17621, 128, 128], | |
| N111_L4_TILE13_007: [1, 20, 17769, 128, 128], | |
| N114_L4_BLOCK01_FLOWER_001: [7, 20, 864, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_002: [7, 20, 918, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_003: [7, 20, 972, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_004: [7, 20, 1026, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_005: [7, 20, 1080, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_006: [7, 20, 1134, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_007: [7, 20, 1188, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_008: [7, 20, 1242, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_009: [7, | |
| 20, 1296, 70, 34 | |
| ], | |
| N114_L4_BLOCK01_FLOWER_010: [7, 20, 1350, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_011: [7, 20, 1404, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_012: [7, 20, 1458, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_013: [7, 20, 1512, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_014: [7, 20, 1566, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_015: [7, 20, 1620, 70, 34], | |
| N114_L4_BLOCK01_FLOWER_016: [7, 20, 1674, 70, 34], | |
| N115_L4_BLOCK02_08_FLOWER_0: [7, 20, 1728, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_1: [7, 20, 1781, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_10: [7, 20, 1834, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_11: [7, | |
| 20, 1887, 65, 33 | |
| ], | |
| N115_L4_BLOCK02_08_FLOWER_12: [7, 20, 1940, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_13: [7, 20, 1993, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_14: [7, 20, 2046, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_15: [7, 20, 2099, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_16: [7, 20, 2152, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_2: [7, 20, 2205, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_3: [7, 20, 2258, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_4: [7, 20, 2311, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_5: [7, 20, 2364, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_6: [7, 20, 2417, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_7: [7, | |
| 20, 2470, 65, 33 | |
| ], | |
| N115_L4_BLOCK02_08_FLOWER_8: [7, 20, 2523, 65, 33], | |
| N115_L4_BLOCK02_08_FLOWER_9: [7, 20, 2576, 65, 33], | |
| N116_L4_BLOCK03_MOLE_001: [7, 20, 2629, 78, 115], | |
| N116_L4_BLOCK03_MOLE_002: [7, 20, 2764, 78, 115], | |
| N116_L4_BLOCK03_MOLE_003: [7, 20, 2899, 78, 115], | |
| N116_L4_BLOCK03_MOLE_004: [7, 20, 3034, 78, 115], | |
| N116_L4_BLOCK03_MOLE_005: [7, 20, 3169, 78, 115], | |
| N116_L4_BLOCK03_MOLE_006: [7, 20, 3304, 78, 115], | |
| N116_L4_BLOCK03_MOLE_007: [7, 20, 3439, 78, 115], | |
| N116_L4_BLOCK03_MOLE_008: [7, 20, 3574, 78, 115], | |
| N116_L4_BLOCK03_MOLE_009: [7, 20, 3709, 78, 115], | |
| N116_L4_BLOCK03_MOLE_010: [7, 20, 3844, 78, 115], | |
| N116_L4_BLOCK03_MOLE_011: [7, 20, 3979, 78, 115], | |
| N116_L4_BLOCK03_MOLE_012: [7, 20, 4114, 78, 115], | |
| N116_L4_BLOCK03_MOLE_013: [7, 20, 4249, 78, 115], | |
| N116_L4_BLOCK03_MOLE_014: [7, 20, 4384, 78, 115], | |
| N116_L4_BLOCK03_MOLE_015: [7, 20, 4519, 78, 115], | |
| N116_L4_BLOCK03_MOLE_016: [7, 20, 4654, 78, 115], | |
| N116_L4_BLOCK03_MOLE_017: [7, 20, 4789, 78, 115], | |
| N116_L4_BLOCK03_MOLE_018: [7, 20, 4924, 78, 115], | |
| N116_L4_BLOCK03_MOLE_019: [7, 20, 5059, 78, 115], | |
| N116_L4_BLOCK03_MOLE_020: [7, 20, 5194, 78, 115], | |
| N116_L4_BLOCK03_MOLE_021: [7, | |
| 20, 5329, 78, 115 | |
| ], | |
| N116_L4_BLOCK03_MOLE_022: [7, 20, 5464, 78, 115], | |
| N116_L4_BLOCK03_MOLE_023: [7, 20, 5599, 78, 115], | |
| N116_L4_BLOCK03_MOLE_024: [7, 20, 5734, 78, 115], | |
| N116_L4_BLOCK03_MOLE_025: [7, 20, 5869, 78, 115], | |
| N116_L4_BLOCK03_MOLE_026: [7, 20, 6004, 78, 115], | |
| N116_L4_BLOCK03_MOLE_027: [7, 20, 6139, 78, 115], | |
| N116_L4_BLOCK03_MOLE_028: [7, 20, 6274, 78, 115], | |
| N116_L4_BLOCK03_MOLE_029: [7, 20, 6409, 78, 115], | |
| N116_L4_BLOCK03_MOLE_030: [7, 20, 6544, 78, 115], | |
| N116_L4_BLOCK03_MOLE_031: [7, 20, 6679, 78, 115], | |
| N116_L4_BLOCK03_MOLE_032: [7, 20, 6814, 78, 115], | |
| N116_L4_BLOCK03_MOLE_033: [7, | |
| 20, 6949, 78, 115 | |
| ], | |
| N116_L4_BLOCK03_MOLE_034: [7, 20, 7084, 78, 115], | |
| N116_L4_BLOCK03_MOLE_035: [7, 20, 7219, 78, 115], | |
| N116_L4_BLOCK03_MOLE_036: [7, 20, 7354, 78, 115], | |
| N116_L4_BLOCK03_MOLE_037: [7, 20, 7489, 78, 115], | |
| N116_L4_BLOCK03_MOLE_038: [7, 20, 7624, 78, 115], | |
| N116_L4_BLOCK03_MOLE_039: [7, 20, 7759, 78, 115], | |
| N116_L4_BLOCK03_MOLE_040: [7, 20, 7894, 78, 115], | |
| N116_L4_BLOCK03_MOLE_041: [7, 20, 8029, 78, 115], | |
| N116_L4_BLOCK03_MOLE_042: [7, 20, 8164, 78, 115], | |
| N116_L4_BLOCK03_MOLE_043: [7, 20, 8299, 78, 115], | |
| N116_L4_BLOCK03_MOLE_044: [7, 20, 8434, 78, 115], | |
| N116_L4_BLOCK03_MOLE_045: [7, | |
| 20, 8569, 78, 115 | |
| ], | |
| N116_L4_BLOCK03_MOLE_046: [7, 20, 8704, 78, 115], | |
| N116_L4_BLOCK03_MOLE_047: [7, 20, 8839, 78, 115], | |
| N116_L4_BLOCK03_MOLE_048: [7, 20, 8974, 78, 115], | |
| N116_L4_BLOCK03_MOLE_049: [7, 20, 9109, 78, 115], | |
| N116_L4_BLOCK03_MOLE_050: [7, 20, 9244, 78, 115], | |
| N116_L4_BLOCK03_MOLE_051: [7, 20, 9379, 78, 115], | |
| N116_L4_BLOCK03_MOLE_052: [7, 20, 9514, 78, 115], | |
| N116_L4_BLOCK03_MOLE_053: [7, 20, 9649, 78, 115], | |
| N116_L4_BLOCK03_MOLE_054: [7, 20, 9784, 78, 115], | |
| N116_L4_BLOCK03_MOLE_055: [7, 20, 9919, 78, 115], | |
| N116_L4_BLOCK03_MOLE_056: [7, 20, 10054, 78, 115], | |
| N116_L4_BLOCK03_MOLE_057: [7, 20, 10189, 78, 115], | |
| N117_L4_BLOCK04_FLOWER_001: [8, 20, 20, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_002: [8, 20, 90, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_003: [8, 20, 160, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_004: [8, 20, 230, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_005: [8, 20, 300, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_006: [8, 20, 370, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_007: [8, 20, 440, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_008: [8, 20, 510, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_009: [8, 20, 580, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_010: [8, 20, 650, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_011: [8, | |
| 20, 720, 92, 50 | |
| ], | |
| N117_L4_BLOCK04_FLOWER_012: [8, 20, 790, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_013: [8, 20, 860, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_014: [8, 20, 930, 92, 50], | |
| N117_L4_BLOCK04_FLOWER_015: [8, 20, 1E3, 92, 50], | |
| N118_L4_BLOCK05_LOGS_0: [7, 20, 10324, 58, 86], | |
| N118_L4_BLOCK05_LOGS_1: [7, 20, 10430, 58, 86], | |
| N118_L4_BLOCK05_LOGS_10: [7, 20, 10536, 58, 86], | |
| N118_L4_BLOCK05_LOGS_11: [7, 20, 10642, 58, 86], | |
| N118_L4_BLOCK05_LOGS_12: [7, 20, 10748, 58, 86], | |
| N118_L4_BLOCK05_LOGS_13: [7, 20, 10854, 58, 86], | |
| N118_L4_BLOCK05_LOGS_14: [7, 20, 10960, 58, 86], | |
| N118_L4_BLOCK05_LOGS_15: [7, | |
| 20, 11066, 58, 86 | |
| ], | |
| N118_L4_BLOCK05_LOGS_16: [7, 20, 11172, 58, 86], | |
| N118_L4_BLOCK05_LOGS_17: [7, 20, 11278, 58, 86], | |
| N118_L4_BLOCK05_LOGS_18: [7, 20, 11384, 58, 86], | |
| N118_L4_BLOCK05_LOGS_19: [7, 20, 11490, 58, 86], | |
| N118_L4_BLOCK05_LOGS_2: [7, 20, 11596, 58, 86], | |
| N118_L4_BLOCK05_LOGS_20: [7, 20, 11702, 58, 86], | |
| N118_L4_BLOCK05_LOGS_21: [7, 20, 11808, 58, 86], | |
| N118_L4_BLOCK05_LOGS_22: [7, 20, 11914, 58, 86], | |
| N118_L4_BLOCK05_LOGS_23: [7, 20, 12020, 58, 86], | |
| N118_L4_BLOCK05_LOGS_3: [7, 20, 12126, 58, 86], | |
| N118_L4_BLOCK05_LOGS_4: [7, 20, 12232, 58, 86], | |
| N118_L4_BLOCK05_LOGS_5: [7, | |
| 20, 12338, 58, 86 | |
| ], | |
| N118_L4_BLOCK05_LOGS_6: [7, 20, 12444, 58, 86], | |
| N118_L4_BLOCK05_LOGS_7: [7, 20, 12550, 58, 86], | |
| N118_L4_BLOCK05_LOGS_8: [7, 20, 12656, 58, 86], | |
| N118_L4_BLOCK05_LOGS_9: [7, 20, 12762, 58, 86], | |
| N119_L4_BLOCK06_FLOWER_001: [7, 20, 12868, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_002: [7, 20, 12951, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_003: [7, 20, 13034, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_004: [7, 20, 13117, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_005: [7, 20, 13200, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_006: [7, 20, 13283, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_007: [7, 20, 13366, 91, | |
| 63 | |
| ], | |
| N119_L4_BLOCK06_FLOWER_008: [7, 20, 13449, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_009: [7, 20, 13532, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_010: [7, 20, 13615, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_011: [7, 20, 13698, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_012: [7, 20, 13781, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_013: [7, 20, 13864, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_014: [7, 20, 13947, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_015: [7, 20, 14030, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_016: [7, 20, 14113, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_017: [7, 20, 14196, 91, 63], | |
| N119_L4_BLOCK06_FLOWER_018: [7, 20, 14279, | |
| 91, 63 | |
| ], | |
| N120_L4_BLOCK07_FLOWER_001: [8, 20, 1070, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_002: [8, 20, 1175, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_003: [8, 20, 1280, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_004: [8, 20, 1385, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_005: [8, 20, 1490, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_006: [8, 20, 1595, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_007: [8, 20, 1700, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_008: [8, 20, 1805, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_009: [8, 20, 1910, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_010: [8, 20, 2015, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_011: [8, 20, 2120, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_012: [8, 20, 2225, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_013: [8, 20, 2330, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_014: [8, 20, 2435, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_015: [8, 20, 2540, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_016: [8, 20, 2645, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_017: [8, 20, 2750, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_018: [8, 20, 2855, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_019: [8, 20, 2960, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_020: [8, 20, 3065, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_021: [8, 20, 3170, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_022: [8, 20, 3275, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_023: [8, | |
| 20, 3380, 93, 85 | |
| ], | |
| N120_L4_BLOCK07_FLOWER_024: [8, 20, 3485, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_025: [8, 20, 3590, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_026: [8, 20, 3695, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_027: [8, 20, 3800, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_028: [8, 20, 3905, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_029: [8, 20, 4010, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_030: [8, 20, 4115, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_031: [8, 20, 4220, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_032: [8, 20, 4325, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_033: [8, 20, 4430, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_034: [8, 20, 4535, | |
| 93, 85 | |
| ], | |
| N120_L4_BLOCK07_FLOWER_035: [8, 20, 4640, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_036: [8, 20, 4745, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_037: [8, 20, 4850, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_038: [8, 20, 4955, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_039: [8, 20, 5060, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_040: [8, 20, 5165, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_041: [8, 20, 5270, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_042: [8, 20, 5375, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_043: [8, 20, 5480, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_044: [8, 20, 5585, 93, 85], | |
| N120_L4_BLOCK07_FLOWER_045: [8, 20, 5690, 93, 85], | |
| N121_L4_BLOCK09_15_MUSH01_001: [7, 20, 14362, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_002: [7, 20, 14439, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_003: [7, 20, 14516, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_004: [7, 20, 14593, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_005: [7, 20, 14670, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_006: [7, 20, 14747, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_007: [7, 20, 14824, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_008: [7, 20, 14901, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_009: [7, 20, 14978, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_010: [7, 20, 15055, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_011: [7, | |
| 20, 15132, 37, 57 | |
| ], | |
| N121_L4_BLOCK09_15_MUSH01_012: [7, 20, 15209, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_013: [7, 20, 15286, 37, 57], | |
| N121_L4_BLOCK09_15_MUSH01_014: [7, 20, 15363, 37, 57], | |
| N122_L4_BLOCK09_15_MUSH02_001: [7, 20, 15440, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_002: [7, 20, 15485, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_003: [7, 20, 15530, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_004: [7, 20, 15575, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_005: [7, 20, 15620, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_006: [7, 20, 15665, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_007: [7, 20, 15710, 19, | |
| 25 | |
| ], | |
| N122_L4_BLOCK09_15_MUSH02_008: [7, 20, 15755, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_009: [7, 20, 15800, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_010: [7, 20, 15845, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_011: [7, 20, 15890, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_012: [7, 20, 15935, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_013: [7, 20, 15980, 19, 25], | |
| N122_L4_BLOCK09_15_MUSH02_014: [7, 20, 16025, 19, 25], | |
| N123_L4_BLOCK10_FLOWER_TREE_001: [9, 20, 20, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_002: [9, 20, 215, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_003: [9, 20, 410, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_004: [9, | |
| 20, 605, 60, 175 | |
| ], | |
| N123_L4_BLOCK10_FLOWER_TREE_005: [9, 20, 800, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_006: [9, 20, 995, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_007: [9, 20, 1190, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_008: [9, 20, 1385, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_009: [9, 20, 1580, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_010: [9, 20, 1775, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_011: [9, 20, 1970, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_012: [9, 20, 2165, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_013: [9, 20, 2360, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_014: [9, | |
| 20, 2555, 60, 175 | |
| ], | |
| N123_L4_BLOCK10_FLOWER_TREE_015: [9, 20, 2750, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_016: [9, 20, 2945, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_017: [9, 20, 3140, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_018: [9, 20, 3335, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_019: [9, 20, 3530, 60, 175], | |
| N123_L4_BLOCK10_FLOWER_TREE_020: [9, 20, 3725, 60, 175], | |
| N124_L4_FISH_001: [9, 20, 3920, 97, 94], | |
| N124_L4_FISH_002: [9, 20, 4034, 97, 94], | |
| N124_L4_FISH_003: [9, 20, 4148, 97, 94], | |
| N124_L4_FISH_004: [9, 20, 4262, 97, 94], | |
| N124_L4_FISH_005: [9, 20, 4376, 97, 94], | |
| N124_L4_FISH_006: [9, | |
| 20, 4490, 97, 94 | |
| ], | |
| N124_L4_FISH_007: [9, 20, 4604, 97, 94], | |
| N124_L4_FISH_008: [9, 20, 4718, 97, 94], | |
| N124_L4_FISH_009: [9, 20, 4832, 97, 94], | |
| N124_L4_FISH_010: [9, 20, 4946, 97, 94], | |
| N124_L4_FISH_011: [9, 20, 5060, 97, 94], | |
| N124_L4_FISH_012: [9, 20, 5174, 97, 94], | |
| N124_L4_FISH_013: [9, 20, 5288, 97, 94], | |
| N124_L4_FISH_014: [9, 20, 5402, 97, 94], | |
| N124_L4_FISH_015: [9, 20, 5516, 97, 94], | |
| N124_L4_FISH_016: [9, 20, 5630, 97, 94], | |
| N124_L4_FISH_017: [9, 20, 5744, 97, 94], | |
| N124_L4_FISH_018: [9, 20, 5858, 97, 94], | |
| N124_L4_FISH_019: [9, 20, 5972, 97, 94], | |
| N124_L4_FISH_020: [9, 20, 6086, 97, | |
| 94 | |
| ], | |
| N124_L4_FISH_021: [9, 20, 6200, 97, 94], | |
| N124_L4_FISH_022: [9, 20, 6314, 97, 94], | |
| N124_L4_FISH_023: [9, 20, 6428, 97, 94], | |
| N124_L4_FISH_024: [9, 20, 6542, 97, 94], | |
| N124_L4_FISH_025: [9, 20, 6656, 97, 94], | |
| N124_L4_FISH_026: [9, 20, 6770, 97, 94], | |
| N124_L4_FISH_027: [9, 20, 6884, 97, 94], | |
| N124_L4_FISH_028: [9, 20, 6998, 97, 94], | |
| N124_L4_FISH_029: [9, 20, 7112, 97, 94], | |
| N124_L4_FISH_030: [9, 20, 7226, 97, 94], | |
| N124_L4_FISH_031: [9, 20, 7340, 97, 94], | |
| N124_L4_FISH_032: [9, 20, 7454, 97, 94], | |
| N124_L4_FISH_033: [9, 20, 7568, 97, 94], | |
| N124_L4_FISH_034: [9, 20, 7682, 97, 94], | |
| N125_L4_BLOCK11_POND_001: [9, | |
| 20, 7796, 68, 77 | |
| ], | |
| N125_L4_BLOCK11_POND_002: [9, 20, 7893, 68, 77], | |
| N125_L4_BLOCK11_POND_003: [9, 20, 7990, 68, 77], | |
| N125_L4_BLOCK11_POND_004: [9, 20, 8087, 68, 77], | |
| N125_L4_BLOCK11_POND_005: [9, 20, 8184, 68, 77], | |
| N125_L4_BLOCK11_POND_006: [9, 20, 8281, 68, 77], | |
| N125_L4_BLOCK11_POND_007: [9, 20, 8378, 68, 77], | |
| N125_L4_BLOCK11_POND_008: [9, 20, 8475, 68, 77], | |
| N125_L4_BLOCK11_POND_009: [9, 20, 8572, 68, 77], | |
| N125_L4_BLOCK11_POND_010: [9, 20, 8669, 68, 77], | |
| N125_L4_BLOCK11_POND_011: [9, 20, 8766, 68, 77], | |
| N125_L4_BLOCK11_POND_012: [9, 20, 8863, 68, 77], | |
| N125_L4_BLOCK11_POND_013: [9, | |
| 20, 8960, 68, 77 | |
| ], | |
| N125_L4_BLOCK11_POND_014: [9, 20, 9057, 68, 77], | |
| N125_L4_BLOCK11_POND_015: [9, 20, 9154, 68, 77], | |
| N125_L4_BLOCK11_POND_016: [9, 20, 9251, 68, 77], | |
| N125_L4_BLOCK11_POND_017: [9, 20, 9348, 68, 77], | |
| N125_L4_BLOCK11_POND_018: [9, 20, 9445, 68, 77], | |
| N125_L4_BLOCK11_POND_019: [9, 20, 9542, 68, 77], | |
| N125_L4_BLOCK11_POND_020: [9, 20, 9639, 68, 77], | |
| N125_L4_BLOCK11_POND_021: [9, 20, 9736, 68, 77], | |
| N125_L4_BLOCK11_POND_022: [9, 20, 9833, 68, 77], | |
| N125_L4_BLOCK11_POND_023: [9, 20, 9930, 68, 77], | |
| N125_L4_BLOCK11_POND_024: [9, 20, 10027, 68, 77], | |
| N126_L4_BLOCK11_DECO_001: [7, | |
| 20, 16070, 59, 12 | |
| ], | |
| N126_L4_BLOCK11_DECO_002: [7, 20, 16102, 59, 12], | |
| N126_L4_BLOCK11_DECO_003: [7, 20, 16134, 59, 12], | |
| N126_L4_BLOCK11_DECO_004: [7, 20, 16166, 59, 12], | |
| N126_L4_BLOCK11_DECO_005: [7, 20, 16198, 59, 12], | |
| N126_L4_BLOCK11_DECO_006: [7, 20, 16230, 59, 12], | |
| N126_L4_BLOCK11_DECO_007: [7, 20, 16262, 59, 12], | |
| N126_L4_BLOCK11_DECO_008: [7, 20, 16294, 59, 12], | |
| N126_L4_BLOCK11_DECO_009: [7, 20, 16326, 59, 12], | |
| N126_L4_BLOCK11_DECO_010: [7, 20, 16358, 59, 12], | |
| N126_L4_BLOCK11_DECO_011: [7, 20, 16390, 59, 12], | |
| N126_L4_BLOCK11_DECO_012: [7, 20, 16422, 59, 12], | |
| N126_L4_BLOCK11_DECO_013: [7, | |
| 20, 16454, 59, 12 | |
| ], | |
| N126_L4_BLOCK11_DECO_014: [7, 20, 16486, 59, 12], | |
| N127_L4_BLOCK13_FLOWER001: [7, 20, 16518, 59, 62], | |
| N127_L4_BLOCK13_FLOWER002: [7, 20, 16600, 59, 62], | |
| N127_L4_BLOCK13_FLOWER003: [7, 20, 16682, 59, 62], | |
| N127_L4_BLOCK13_FLOWER004: [7, 20, 16764, 59, 62], | |
| N127_L4_BLOCK13_FLOWER005: [7, 20, 16846, 59, 62], | |
| N127_L4_BLOCK13_FLOWER006: [7, 20, 16928, 59, 62], | |
| N127_L4_BLOCK13_FLOWER007: [7, 20, 17010, 59, 62], | |
| N127_L4_BLOCK13_FLOWER008: [7, 20, 17092, 59, 62], | |
| N127_L4_BLOCK13_FLOWER009: [7, 20, 17174, 59, 62], | |
| N127_L4_BLOCK13_FLOWER010: [7, 20, 17256, | |
| 59, 62 | |
| ], | |
| N128_L4_BLOCK14_FLOWER_TREE_001: [9, 20, 10124, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_002: [9, 20, 10311, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_003: [9, 20, 10498, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_004: [9, 20, 10685, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_005: [9, 20, 10872, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_006: [9, 20, 11059, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_007: [9, 20, 11246, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_008: [9, 20, 11433, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_009: [9, 20, 11620, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_010: [9, | |
| 20, 11807, 60, 167 | |
| ], | |
| N128_L4_BLOCK14_FLOWER_TREE_011: [9, 20, 11994, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_012: [9, 20, 12181, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_013: [9, 20, 12368, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_014: [9, 20, 12555, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_015: [9, 20, 12742, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_016: [9, 20, 12929, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_017: [9, 20, 13116, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_018: [9, 20, 13303, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_019: [9, 20, 13490, 60, 167], | |
| N128_L4_BLOCK14_FLOWER_TREE_020: [9, | |
| 20, 13677, 60, 167 | |
| ], | |
| N128_L4_BLOCK14_FLOWER_TREE_021: [9, 20, 13864, 60, 167], | |
| N129_L4_SQUIRREL_001: [7, 20, 17338, 59, 111], | |
| N129_L4_SQUIRREL_002: [7, 20, 17469, 59, 111], | |
| N129_L4_SQUIRREL_003: [7, 20, 17600, 59, 111], | |
| N129_L4_SQUIRREL_004: [7, 20, 17731, 59, 111], | |
| N129_L4_SQUIRREL_005: [7, 20, 17862, 59, 111], | |
| N129_L4_SQUIRREL_006: [7, 20, 17993, 59, 111], | |
| N129_L4_SQUIRREL_007: [7, 20, 18124, 59, 111], | |
| N129_L4_SQUIRREL_008: [7, 20, 18255, 59, 111], | |
| N129_L4_SQUIRREL_009: [7, 20, 18386, 59, 111], | |
| N129_L4_SQUIRREL_010: [7, 20, 18517, 59, 111], | |
| N129_L4_SQUIRREL_011: [7, | |
| 20, 18648, 59, 111 | |
| ], | |
| N129_L4_SQUIRREL_012: [7, 20, 18779, 59, 111], | |
| N129_L4_SQUIRREL_013: [7, 20, 18910, 59, 111], | |
| N129_L4_SQUIRREL_014: [7, 20, 19041, 59, 111], | |
| N129_L4_SQUIRREL_015: [7, 20, 19172, 59, 111], | |
| N129_L4_SQUIRREL_016: [7, 20, 19303, 59, 111], | |
| N129_L4_SQUIRREL_017: [7, 20, 19434, 59, 111], | |
| N129_L4_SQUIRREL_018: [7, 20, 17338, 59, 111], | |
| N130_L4_OWL_HEAD_001: [7, 20, 19565, 92, 83], | |
| N130_L4_OWL_HEAD_004: [7, 20, 19668, 92, 83], | |
| N130_L4_OWL_HEAD_005: [7, 20, 19771, 92, 83], | |
| N130_L4_OWL_HEAD_006: [7, 20, 19874, 92, 83], | |
| N130_L4_OWL_HEAD_007: [7, 20, 19977, 92, 83], | |
| N130_L4_OWL_HEAD_011: [7, 20, 20080, 92, 83], | |
| N130_L4_OWL_HEAD_012: [7, 20, 20183, 92, 83], | |
| N130_L4_OWL_HEAD_013: [7, 20, 20286, 92, 83], | |
| N130_L4_OWL_HEAD_014: [7, 20, 20389, 92, 83], | |
| N130_L4_OWL_HEAD_015: [7, 20, 20492, 92, 83], | |
| N130_L4_OWL_HEAD_019: [7, 20, 20595, 92, 83], | |
| N130_L4_OWL_HEAD_020: [7, 20, 20698, 92, 83], | |
| N130_L4_OWL_HEAD_021: [7, 20, 20801, 92, 83], | |
| N130_L4_OWL_HEAD_028: [7, 20, 20904, 92, 83], | |
| N130_L4_OWL_HEAD_029: [7, 20, 21007, 92, 83], | |
| N130_L4_OWL_HEAD_030: [7, 20, 21110, 92, 83], | |
| N130_L4_OWL_HEAD_031: [7, 20, 21213, 92, 83], | |
| N130_L4_OWL_HEAD_032: [7, | |
| 20, 21316, 92, 83 | |
| ], | |
| N130_L4_OWL_HEAD_033: [7, 20, 21419, 92, 83], | |
| N130_L4_OWL_HEAD_034: [7, 20, 21522, 92, 83], | |
| N130_L4_OWL_HEAD_035: [7, 20, 21625, 92, 83], | |
| N130_L4_OWL_HEAD_037: [7, 20, 21728, 92, 83], | |
| N130_L4_OWL_HEAD_038: [7, 20, 21831, 92, 83], | |
| N131_L5_CLOUD01: [10, 20, 20, 101.7, 100], | |
| N132_L5_CLOUD02: [10, 20, 140, 101.4, 69.8], | |
| N133_L5_CLOUD03: [10, 20, 230, 55.2, 44.4], | |
| N134_L5_CLOUD04: [10, 20, 295, 166.5, 100.5], | |
| N135_L5_CLOUD05: [10, 20, 416, 89.9, 109.6], | |
| N158_L5_BLOCK01_FLOORDECO_001: [10, 20, 546, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_002: [10, 20, 600, 70, | |
| 34 | |
| ], | |
| N158_L5_BLOCK01_FLOORDECO_003: [10, 20, 654, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_004: [10, 20, 708, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_005: [10, 20, 762, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_006: [10, 20, 816, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_007: [10, 20, 870, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_008: [10, 20, 924, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_009: [10, 20, 978, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_010: [10, 20, 1032, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_011: [10, 20, 1086, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_012: [10, 20, 1140, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_013: [10, | |
| 20, 1194, 70, 34 | |
| ], | |
| N158_L5_BLOCK01_FLOORDECO_014: [10, 20, 1248, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_015: [10, 20, 1302, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_016: [10, 20, 1356, 70, 34], | |
| N158_L5_BLOCK01_FLOORDECO_017: [10, 20, 1410, 70, 34], | |
| N159_L5_BLOCK02_FLOWER_001: [10, 20, 1464, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_002: [10, 20, 1517, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_003: [10, 20, 1570, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_004: [10, 20, 1623, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_005: [10, 20, 1676, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_006: [10, 20, 1729, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_007: [10, | |
| 20, 1782, 65, 33 | |
| ], | |
| N159_L5_BLOCK02_FLOWER_008: [10, 20, 1835, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_009: [10, 20, 1888, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_010: [10, 20, 1941, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_011: [10, 20, 1994, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_012: [10, 20, 2047, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_013: [10, 20, 2100, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_014: [10, 20, 2153, 65, 33], | |
| N159_L5_BLOCK02_FLOWER_015: [10, 20, 2206, 65, 33], | |
| N160_L5_BLOCK03_FLOWER_001: [10, 20, 2259, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_002: [10, 20, 2311, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_003: [10, | |
| 20, 2363, 62, 32 | |
| ], | |
| N160_L5_BLOCK03_FLOWER_004: [10, 20, 2415, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_005: [10, 20, 2467, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_006: [10, 20, 2519, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_007: [10, 20, 2571, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_008: [10, 20, 2623, 62, 32], | |
| N160_L5_BLOCK03_FLOWER_009: [10, 20, 2675, 62, 32], | |
| N161_L5_BLOCK04_FLOWER_001: [8, 20, 5795, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_002: [8, 20, 5856, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_003: [8, 20, 5917, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_004: [8, 20, 5978, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_005: [8, | |
| 20, 6039, 57, 41 | |
| ], | |
| N161_L5_BLOCK04_FLOWER_006: [8, 20, 6100, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_007: [8, 20, 6161, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_008: [8, 20, 6222, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_009: [8, 20, 6283, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_010: [8, 20, 6344, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_011: [8, 20, 6405, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_012: [8, 20, 6466, 57, 41], | |
| N161_L5_BLOCK04_FLOWER_013: [8, 20, 6527, 57, 41], | |
| N167_L5_BLOCK10_FLOORDECO_001: [10, 20, 2727, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_002: [10, 20, 2782, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_003: [10, | |
| 20, 2837, 70, 35 | |
| ], | |
| N167_L5_BLOCK10_FLOORDECO_004: [10, 20, 2892, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_005: [10, 20, 2947, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_006: [10, 20, 3002, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_007: [10, 20, 3057, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_008: [10, 20, 3112, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_009: [10, 20, 3167, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_010: [10, 20, 3222, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_011: [10, 20, 3277, 70, 35], | |
| N167_L5_BLOCK10_FLOORDECO_012: [10, 20, 3332, 70, 35], | |
| N169_L5_BLOCK12_TREE_001: [10, 20, 3387, 95, 168], | |
| N169_L5_BLOCK12_TREE_002: [10, 20, 3575, 95, 168], | |
| N169_L5_BLOCK12_TREE_003: [10, 20, 3763, 95, 168], | |
| N169_L5_BLOCK12_TREE_004: [10, 20, 3951, 95, 168], | |
| N169_L5_BLOCK12_TREE_005: [10, 20, 4139, 95, 168], | |
| N169_L5_BLOCK12_TREE_006: [10, 20, 4327, 95, 168], | |
| N169_L5_BLOCK12_TREE_007: [10, 20, 4515, 95, 168], | |
| N169_L5_BLOCK12_TREE_008: [10, 20, 4703, 95, 168], | |
| N169_L5_BLOCK12_TREE_009: [10, 20, 4891, 95, 168], | |
| N169_L5_BLOCK12_TREE_010: [10, 20, 5079, 95, 168], | |
| N169_L5_BLOCK12_TREE_011: [10, 20, 5267, 95, 168], | |
| N169_L5_BLOCK12_TREE_012: [10, 20, 5455, 95, 168], | |
| N169_L5_BLOCK12_TREE_013: [10, | |
| 20, 5643, 95, 168 | |
| ], | |
| N169_L5_BLOCK12_TREE_014: [10, 20, 5831, 95, 168], | |
| N173_L5_BLOCK16_FROG_001: [10, 20, 6019, 41, 51], | |
| N173_L5_BLOCK16_FROG_002: [10, 20, 6090, 41, 51], | |
| N173_L5_BLOCK16_FROG_003: [10, 20, 6161, 41, 51], | |
| N173_L5_BLOCK16_FROG_004: [10, 20, 6232, 41, 51], | |
| N173_L5_BLOCK16_FROG_005: [10, 20, 6303, 41, 51], | |
| N173_L5_BLOCK16_FROG_006: [10, 20, 6374, 41, 51], | |
| N173_L5_BLOCK16_FROG_007: [10, 20, 6445, 41, 51], | |
| N173_L5_BLOCK16_FROG_008: [10, 20, 6516, 41, 51], | |
| N173_L5_BLOCK16_FROG_009: [10, 20, 6587, 41, 51], | |
| N173_L5_BLOCK16_FROG_010: [10, 20, 6658, 41, 51], | |
| N173_L5_BLOCK16_FROG_011: [10, 20, 6729, 41, 51], | |
| N173_L5_BLOCK16_FROG_012: [10, 20, 6800, 41, 51], | |
| N173_L5_BLOCK16_FROG_013: [10, 20, 6871, 41, 51], | |
| N173_L5_BLOCK16_FROG_014: [10, 20, 6942, 41, 51], | |
| N173_L5_BLOCK16_FROG_015: [10, 20, 7013, 41, 51], | |
| N173_L5_BLOCK16_FROG_016: [10, 20, 7084, 41, 51], | |
| N173_L5_BLOCK16_FROG_017: [10, 20, 7155, 41, 51], | |
| N173_L5_BLOCK16_FROG_018: [10, 20, 7226, 41, 51], | |
| N173_L5_BLOCK16_FROG_019: [10, 20, 7297, 41, 51], | |
| N173_L5_BLOCK16_FROG_020: [10, 20, 7368, 41, 51], | |
| N173_L5_BLOCK16_FROG_021: [10, 20, 7439, 41, 51], | |
| N173_L5_BLOCK16_FROG_022: [10, | |
| 20, 7510, 41, 51 | |
| ], | |
| N173_L5_BLOCK16_FROG_023: [10, 20, 7581, 41, 51], | |
| N173_L5_BLOCK16_FROG_024: [10, 20, 7652, 41, 51], | |
| N173_L5_BLOCK16_FROG_025: [10, 20, 7723, 41, 51], | |
| N173_L5_BLOCK16_FROG_026: [10, 20, 7794, 41, 51], | |
| N173_L5_BLOCK16_FROG_027: [10, 20, 7865, 41, 51], | |
| N173_L5_BLOCK16_FROG_028: [10, 20, 7936, 41, 51], | |
| N173_L5_BLOCK16_FROG_029: [10, 20, 8007, 41, 51], | |
| N173_L5_BLOCK16_FROG_030: [10, 20, 8078, 41, 51], | |
| N173_L5_BLOCK16_FROG_031: [10, 20, 8149, 41, 51], | |
| N173_L5_BLOCK16_FROG_032: [10, 20, 8220, 41, 51], | |
| N173_L5_BLOCK16_FROG_033: [10, 20, 8291, 41, 51], | |
| N173_L5_BLOCK16_FROG_034: [10, | |
| 20, 8362, 41, 51 | |
| ], | |
| N173_L5_BLOCK16_FROG_035: [10, 20, 8433, 41, 51], | |
| N174_L5_BLOCK17_PONDFROG_001: [10, 20, 8504, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_002: [10, 20, 8662, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_003: [10, 20, 8820, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_004: [10, 20, 8978, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_005: [10, 20, 9136, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_006: [10, 20, 9294, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_007: [10, 20, 9452, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_008: [10, 20, 9610, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_009: [10, 20, 9768, 110, | |
| 138 | |
| ], | |
| N174_L5_BLOCK17_PONDFROG_010: [10, 20, 9926, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_011: [10, 20, 10084, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_012: [10, 20, 10242, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_013: [10, 20, 10400, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_014: [10, 20, 10558, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_015: [10, 20, 10716, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_016: [10, 20, 10874, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_017: [10, 20, 11032, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_018: [10, 20, 11190, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_019: [10, 20, 11348, | |
| 110, 138 | |
| ], | |
| N174_L5_BLOCK17_PONDFROG_020: [10, 20, 11506, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_021: [10, 20, 11664, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_022: [10, 20, 11822, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_023: [10, 20, 11980, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_024: [10, 20, 12138, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_025: [10, 20, 12296, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_026: [10, 20, 12454, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_027: [10, 20, 12612, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_028: [10, 20, 12770, 110, 138], | |
| N174_L5_BLOCK17_PONDFROG_029: [10, | |
| 20, 12928, 110, 138 | |
| ], | |
| N174_L5_BLOCK17_PONDFROG_030: [10, 20, 13086, 110, 138], | |
| N175_L5_BLOCK17_POND_001: [10, 20, 13244, 82, 40], | |
| N175_L5_BLOCK17_POND_002: [10, 20, 13304, 82, 40], | |
| N175_L5_BLOCK17_POND_003: [10, 20, 13364, 82, 40], | |
| N175_L5_BLOCK17_POND_004: [10, 20, 13424, 82, 40], | |
| N175_L5_BLOCK17_POND_005: [10, 20, 13484, 82, 40], | |
| N175_L5_BLOCK17_POND_006: [10, 20, 13544, 82, 40], | |
| N175_L5_BLOCK17_POND_007: [10, 20, 13604, 82, 40], | |
| N175_L5_BLOCK17_POND_008: [10, 20, 13664, 82, 40], | |
| N175_L5_BLOCK17_POND_009: [10, 20, 13724, 82, 40], | |
| N175_L5_BLOCK17_POND_010: [10, | |
| 20, 13784, 82, 40 | |
| ], | |
| N175_L5_BLOCK17_POND_011: [10, 20, 13844, 82, 40], | |
| N175_L5_BLOCK17_POND_012: [10, 20, 13904, 82, 40], | |
| N176_L5_BLOCK17_WATERFALL_001: [6, 20, 20, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_002: [6, 20, 184, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_003: [6, 20, 348, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_004: [6, 20, 512, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_005: [6, 20, 676, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_006: [6, 20, 840, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_007: [6, 20, 1004, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_008: [6, 20, 1168, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_009: [6, | |
| 20, 1332, 30, 144 | |
| ], | |
| N176_L5_BLOCK17_WATERFALL_010: [6, 20, 1496, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_011: [6, 20, 1660, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_012: [6, 20, 1824, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_013: [6, 20, 1988, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_014: [6, 20, 2152, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_015: [6, 20, 2316, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_016: [6, 20, 2480, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_017: [6, 20, 2644, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_018: [6, 20, 2808, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_019: [6, 20, 2972, 30, | |
| 144 | |
| ], | |
| N176_L5_BLOCK17_WATERFALL_020: [6, 20, 3136, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_021: [6, 20, 3300, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_022: [6, 20, 3464, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_023: [6, 20, 3628, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_024: [6, 20, 3792, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_025: [6, 20, 3956, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_026: [6, 20, 4120, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_027: [6, 20, 4284, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_028: [6, 20, 4448, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_029: [6, 20, 4612, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_030: [6, | |
| 20, 4776, 30, 144 | |
| ], | |
| N176_L5_BLOCK17_WATERFALL_031: [6, 20, 4940, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_032: [6, 20, 5104, 30, 144], | |
| N176_L5_BLOCK17_WATERFALL_033: [6, 20, 5268, 30, 144], | |
| N178_L5_BLOCK19_DUCKLINGS_001: [10, 20, 13964, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_002: [10, 20, 14042, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_003: [10, 20, 14120, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_004: [10, 20, 14198, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_005: [10, 20, 14276, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_006: [10, 20, 14354, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_007: [10, 20, 14432, | |
| 82, 58 | |
| ], | |
| N178_L5_BLOCK19_DUCKLINGS_008: [10, 20, 14510, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_009: [10, 20, 14588, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_010: [10, 20, 14666, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_011: [10, 20, 14744, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_012: [10, 20, 14822, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_013: [10, 20, 14666, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_014: [10, 20, 14666, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_015: [10, 20, 14666, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_016: [10, 20, 14666, 82, 58], | |
| N178_L5_BLOCK19_DUCKLINGS_017: [10, 20, 14666, 82, | |
| 58 | |
| ], | |
| N179_L5_BLOCK20_DUCK_001: [10, 20, 14900, 93, 104], | |
| N179_L5_BLOCK20_DUCK_002: [10, 20, 15024, 93, 104], | |
| N179_L5_BLOCK20_DUCK_003: [10, 20, 15148, 93, 104], | |
| N179_L5_BLOCK20_DUCK_004: [10, 20, 15272, 93, 104], | |
| N179_L5_BLOCK20_DUCK_005: [10, 20, 15396, 93, 104], | |
| N179_L5_BLOCK20_DUCK_006: [10, 20, 15520, 93, 104], | |
| N179_L5_BLOCK20_DUCK_007: [10, 20, 15644, 93, 104], | |
| N179_L5_BLOCK20_DUCK_008: [10, 20, 15768, 93, 104], | |
| N179_L5_BLOCK20_DUCK_009: [10, 20, 15892, 93, 104], | |
| N179_L5_BLOCK20_DUCK_010: [10, 20, 16016, 93, 104], | |
| N179_L5_BLOCK20_DUCK_011: [10, 20, 16140, | |
| 93, 104 | |
| ], | |
| N179_L5_BLOCK20_DUCK_012: [10, 20, 16264, 93, 104], | |
| N179_L5_BLOCK20_DUCK_013: [10, 20, 16388, 93, 104], | |
| N179_L5_BLOCK20_DUCK_014: [10, 20, 16512, 93, 104], | |
| N179_L5_BLOCK20_DUCK_015: [10, 20, 16636, 93, 104], | |
| N179_L5_BLOCK20_DUCK_016: [10, 20, 16760, 93, 104], | |
| N179_L5_BLOCK20_DUCK_017: [10, 20, 16884, 93, 104], | |
| N179_L5_BLOCK20_DUCK_018: [10, 20, 17008, 93, 104], | |
| N179_L5_BLOCK20_DUCK_019: [10, 20, 17132, 93, 104], | |
| N179_L5_BLOCK20_DUCK_020: [10, 20, 17256, 93, 104], | |
| N179_L5_BLOCK20_DUCK_021: [10, 20, 17380, 93, 104], | |
| N179_L5_BLOCK20_DUCK_022: [10, 20, 17504, | |
| 93, 104 | |
| ], | |
| N179_L5_BLOCK20_DUCK_023: [10, 20, 17628, 93, 104], | |
| N179_L5_BLOCK20_DUCK_024: [10, 20, 17752, 93, 104], | |
| N179_L5_BLOCK20_DUCK_025: [10, 20, 17876, 93, 104], | |
| N179_L5_BLOCK20_DUCK_026: [10, 20, 18E3, 93, 104], | |
| N179_L5_BLOCK20_DUCK_027: [10, 20, 18124, 93, 104], | |
| N179_L5_BLOCK20_DUCK_028: [10, 20, 18248, 93, 104], | |
| N179_L5_BLOCK20_DUCK_029: [10, 20, 18372, 93, 104], | |
| N179_L5_BLOCK20_DUCK_030: [10, 20, 18496, 93, 104], | |
| N179_L5_BLOCK20_DUCK_031: [10, 20, 18620, 93, 104], | |
| N179_L5_BLOCK20_DUCK_032: [10, 20, 18744, 93, 104], | |
| N179_L5_BLOCK20_DUCK_033: [10, 20, 18868, | |
| 93, 104 | |
| ], | |
| N179_L5_BLOCK20_DUCK_034: [10, 20, 18992, 93, 104], | |
| N179_L5_BLOCK20_DUCK_035: [10, 20, 19116, 93, 104], | |
| N179_L5_BLOCK20_DUCK_036: [10, 20, 19240, 93, 104], | |
| N179_L5_BLOCK20_DUCK_037: [10, 20, 19364, 93, 104], | |
| N179_L5_BLOCK20_DUCK_038: [10, 20, 19488, 93, 104], | |
| N183_L5_ISLAND01: [10, 20, 19612, 191.9, 157.4], | |
| N184_L5_ISLAND01_DRAGONFLY_001: [10, 20, 19790, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_002: [10, 20, 19952, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_003: [10, 20, 20114, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_004: [10, 20, 20276, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_005: [10, | |
| 20, 20438, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_006: [10, 20, 20600, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_007: [10, 20, 20762, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_008: [10, 20, 20924, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_009: [10, 20, 21086, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_010: [10, 20, 21248, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_011: [10, 20, 21410, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_012: [10, 20, 21572, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_013: [10, 20, 21734, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_014: [10, 20, 21896, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_015: [10, | |
| 20, 22058, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_016: [10, 20, 22220, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_017: [10, 20, 22382, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_018: [10, 20, 22544, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_019: [10, 20, 22706, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_020: [10, 20, 22868, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_021: [10, 20, 23030, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_022: [10, 20, 23192, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_023: [10, 20, 23354, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_024: [10, 20, 23516, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_025: [10, | |
| 20, 23678, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_026: [10, 20, 23840, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_027: [10, 20, 24002, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_028: [10, 20, 24164, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_029: [10, 20, 24326, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_030: [10, 20, 24488, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_031: [10, 20, 24650, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_032: [10, 20, 24812, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_033: [10, 20, 24974, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_034: [10, 20, 25136, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_035: [10, | |
| 20, 25298, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_036: [10, 20, 25460, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_037: [10, 20, 25622, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_038: [10, 20, 25784, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_039: [10, 20, 25946, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_040: [10, 20, 26108, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_041: [10, 20, 26270, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_042: [10, 20, 26432, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_043: [10, 20, 26594, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_044: [10, 20, 26756, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_045: [10, | |
| 20, 26918, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_046: [10, 20, 27080, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_047: [10, 20, 27242, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_048: [10, 20, 27404, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_049: [10, 20, 27566, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_050: [10, 20, 27728, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_051: [10, 20, 27890, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_052: [10, 20, 28052, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_053: [10, 20, 28214, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_054: [10, 20, 28376, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_055: [10, | |
| 20, 28538, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_056: [10, 20, 28700, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_057: [10, 20, 28862, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_058: [10, 20, 29024, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_059: [10, 20, 29186, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_060: [10, 20, 29348, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_061: [10, 20, 29510, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_062: [10, 20, 29672, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_063: [10, 20, 29834, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_064: [10, 20, 29996, 238, 142], | |
| N184_L5_ISLAND01_DRAGONFLY_065: [10, | |
| 20, 30158, 238, 142 | |
| ], | |
| N184_L5_ISLAND01_DRAGONFLY_066: [10, 20, 30320, 238, 142], | |
| N185_L5_ISLAND02: [10, 20, 30482, 180, 280.7], | |
| N186_L5_ISLAND02_TURBINE_001: [10, 20, 30783, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_002: [10, 20, 30903, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_003: [10, 20, 31023, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_004: [10, 20, 31143, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_005: [10, 20, 31263, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_006: [10, 20, 31383, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_007: [10, 20, 31503, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_008: [10, 20, 31623, | |
| 82, 100 | |
| ], | |
| N186_L5_ISLAND02_TURBINE_009: [10, 20, 31743, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_010: [10, 20, 31863, 82, 100], | |
| N186_L5_ISLAND02_TURBINE_011: [10, 20, 31983, 82, 100], | |
| N187_L5_ISLAND02_WATERFALL_001: [10, 20, 32103, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_002: [10, 20, 32221, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_003: [10, 20, 32339, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_004: [10, 20, 32457, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_005: [10, 20, 32575, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_006: [10, 20, 32693, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_007: [10, 20, | |
| 32811, 23, 98 | |
| ], | |
| N187_L5_ISLAND02_WATERFALL_008: [10, 20, 32929, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_009: [10, 20, 33047, 23, 98], | |
| N187_L5_ISLAND02_WATERFALL_010: [10, 20, 33165, 23, 98], | |
| N188_L5_LAKE_FROG_002: [10, 20, 33283, 110, 143], | |
| N188_L5_LAKE_FROG_003: [10, 20, 33446, 110, 143], | |
| N188_L5_LAKE_FROG_004: [10, 20, 33609, 110, 143], | |
| N188_L5_LAKE_FROG_006: [10, 20, 33772, 110, 143], | |
| N188_L5_LAKE_FROG_007: [10, 20, 33935, 110, 143], | |
| N188_L5_LAKE_FROG_008: [10, 20, 34098, 110, 143], | |
| N188_L5_LAKE_FROG_009: [10, 20, 34261, 110, 143], | |
| N188_L5_LAKE_FROG_011: [10, 20, | |
| 34424, 110, 143 | |
| ], | |
| N188_L5_LAKE_FROG_013: [10, 20, 34587, 110, 143], | |
| N188_L5_LAKE_FROG_014: [10, 20, 34750, 110, 143], | |
| N188_L5_LAKE_FROG_016: [10, 20, 34913, 110, 143], | |
| N188_L5_LAKE_FROG_017: [10, 20, 35076, 110, 143], | |
| N188_L5_LAKE_FROG_018: [10, 20, 35239, 110, 143], | |
| N188_L5_LAKE_FROG_019: [10, 20, 35402, 110, 143], | |
| N188_L5_LAKE_FROG_020: [10, 20, 35565, 110, 143], | |
| N188_L5_LAKE_FROG_021: [10, 20, 35728, 110, 143], | |
| N188_L5_LAKE_FROG_022: [10, 20, 35891, 110, 143], | |
| N188_L5_LAKE_FROG_023: [10, 20, 36054, 110, 143], | |
| N188_L5_LAKE_FROG_024: [10, 20, 36217, 110, 143], | |
| N191_L5_WATER_LILLY_001: [10, | |
| 20, 36380, 48, 26 | |
| ], | |
| N191_L5_WATER_LILLY_002: [10, 20, 36426, 48, 26], | |
| N191_L5_WATER_LILLY_003: [10, 20, 36472, 48, 26], | |
| N191_L5_WATER_LILLY_004: [10, 20, 36518, 48, 26], | |
| N191_L5_WATER_LILLY_005: [10, 20, 36564, 48, 26], | |
| N191_L5_WATER_LILLY_006: [10, 20, 36610, 48, 26], | |
| N191_L5_WATER_LILLY_007: [10, 20, 36656, 48, 26], | |
| N191_L5_WATER_LILLY_008: [10, 20, 36702, 48, 26], | |
| N191_L5_WATER_LILLY_009: [10, 20, 36748, 48, 26], | |
| N191_L5_WATER_LILLY_010: [10, 20, 36794, 48, 26], | |
| N191_L5_WATER_LILLY_011: [10, 20, 36840, 48, 26], | |
| N191_L5_WATER_LILLY_012: [10, 20, 36886, 48, 26], | |
| N191_L5_WATER_LILLY_013: [10, | |
| 20, 36932, 48, 26 | |
| ], | |
| N191_L5_WATER_LILLY_014: [10, 20, 36978, 48, 26], | |
| N191_L5_WATER_LILLY_015: [10, 20, 37024, 48, 26], | |
| N191_L5_WATER_LILLY_016: [10, 20, 37070, 48, 26], | |
| N191_L5_WATER_LILLY_017: [10, 20, 37116, 48, 26], | |
| N191_L5_WATER_LILLY_018: [10, 20, 37162, 48, 26], | |
| N191_L5_WATER_LILLY_019: [10, 20, 37208, 48, 26], | |
| N191_L5_WATER_LILLY_020: [10, 20, 37254, 48, 26], | |
| N191_L5_WATER_LILLY_021: [10, 20, 37300, 48, 26], | |
| N192_L5_ISLAND02_STREAM_001: [10, 20, 37346, 96, 26], | |
| N192_L5_ISLAND02_STREAM_002: [10, 20, 37392, 96, 26], | |
| N192_L5_ISLAND02_STREAM_003: [10, 20, 37438, | |
| 96, 26 | |
| ], | |
| N192_L5_ISLAND02_STREAM_004: [10, 20, 37484, 96, 26], | |
| N192_L5_ISLAND02_STREAM_005: [10, 20, 37530, 96, 26], | |
| N192_L5_ISLAND02_STREAM_006: [10, 20, 37576, 96, 26], | |
| N192_L5_ISLAND02_STREAM_007: [10, 20, 37622, 96, 26], | |
| N192_L5_ISLAND02_STREAM_008: [10, 20, 37668, 96, 26], | |
| N192_L5_ISLAND02_STREAM_009: [10, 20, 37714, 96, 26], | |
| N192_L5_ISLAND02_STREAM_010: [10, 20, 37760, 96, 26], | |
| N192_L5_ISLAND02_STREAM_011: [10, 20, 37806, 96, 26], | |
| N192_L5_ISLAND02_STREAM_012: [10, 20, 37852, 96, 26], | |
| N192_L5_ISLAND02_STREAM_013: [10, 20, 37898, 96, 26], | |
| N192_L5_ISLAND02_STREAM_014: [10, | |
| 20, 37944, 96, 26 | |
| ], | |
| N192_L5_ISLAND02_STREAM_015: [10, 20, 37990, 96, 26], | |
| N192_L5_ISLAND02_STREAM_016: [10, 20, 38036, 96, 26], | |
| N192_L5_ISLAND02_STREAM_017: [10, 20, 38082, 96, 26], | |
| N192_L5_ISLAND02_STREAM_018: [10, 20, 38128, 96, 26], | |
| N192_L5_ISLAND02_STREAM_019: [10, 20, 38174, 96, 26], | |
| N192_L5_ISLAND02_STREAM_020: [10, 20, 38220, 96, 26], | |
| N192_L5_ISLAND02_STREAM_021: [10, 20, 38266, 96, 26], | |
| N192_L5_ISLAND02_STREAM_022: [10, 20, 38312, 96, 26], | |
| N192_L5_ISLAND02_STREAM_023: [10, 20, 38358, 96, 26], | |
| N192_L5_ISLAND02_STREAM_024: [10, 20, 38404, 96, 26], | |
| N192_L5_ISLAND02_STREAM_025: [10, | |
| 20, 38450, 96, 26 | |
| ], | |
| N192_L5_ISLAND02_STREAM_026: [10, 20, 38496, 96, 26], | |
| N192_L5_ISLAND02_STREAM_027: [10, 20, 38542, 96, 26], | |
| N192_L5_ISLAND02_STREAM_028: [10, 20, 38588, 96, 26], | |
| N192_L5_ISLAND02_STREAM_029: [10, 20, 38634, 96, 26], | |
| N192_L5_ISLAND02_STREAM_030: [10, 20, 38680, 96, 26], | |
| N192_L5_ISLAND02_STREAM_031: [10, 20, 38726, 96, 26], | |
| N192_L5_ISLAND02_STREAM_032: [10, 20, 38772, 96, 26], | |
| N192_L5_ISLAND02_STREAM_033: [10, 20, 38818, 96, 26], | |
| N193_L6_CLOUD01: [11, 20, 20, 104.6, 91.5], | |
| N194_L6_CLOUD02: [11, 20, 132, 97.4, 58.2], | |
| N195_L6_CLOUD03: [11, 20, 211, | |
| 42.4, 22.2 | |
| ], | |
| N196_L6_CLOUD04: [11, 20, 254, 52.4, 82.3], | |
| N197_L6_CLOUD05: [11, 20, 357, 122.5, 148.6], | |
| N198_L6_CLOUD06: [11, 20, 526, 56.4, 60.3], | |
| N199_L6_CLOUD07: [11, 20, 607, 121.5, 102.6], | |
| N200_L6_ISLAND04_SHEEP_004: [11, 20, 730, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_005: [11, 20, 830, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_006: [11, 20, 930, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_007: [11, 20, 1030, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_008: [11, 20, 1130, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_009: [11, 20, 1230, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_010: [11, 20, 1330, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_011: [11, | |
| 20, 1430, 59, 80 | |
| ], | |
| N200_L6_ISLAND04_SHEEP_012: [11, 20, 1530, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_013: [11, 20, 1630, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_014: [11, 20, 1730, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_015: [11, 20, 1830, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_016: [11, 20, 1930, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_017: [11, 20, 2030, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_018: [11, 20, 2130, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_019: [11, 20, 2230, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_020: [11, 20, 2330, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_021: [11, 20, 2430, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_022: [11, | |
| 20, 2530, 59, 80 | |
| ], | |
| N200_L6_ISLAND04_SHEEP_023: [11, 20, 2630, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_024: [11, 20, 2730, 59, 80], | |
| N200_L6_ISLAND04_SHEEP_025: [11, 20, 2830, 59, 80], | |
| N202_L6_ISLAND03_STRINGHAY_001: [11, 20, 2930, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_002: [11, 20, 3134, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_003: [11, 20, 3338, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_004: [11, 20, 3542, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_005: [11, 20, 3746, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_006: [11, 20, 3950, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_007: [11, 20, 4154, | |
| 41, 184 | |
| ], | |
| N202_L6_ISLAND03_STRINGHAY_008: [11, 20, 4358, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_009: [11, 20, 4562, 41, 184], | |
| N202_L6_ISLAND03_STRINGHAY_010: [11, 20, 4766, 41, 184], | |
| N205_L6_ISLAND01_PIG_001: [11, 20, 4970, 137, 117], | |
| N205_L6_ISLAND01_PIG_002: [11, 20, 5107, 137, 117], | |
| N205_L6_ISLAND01_PIG_003: [11, 20, 5244, 137, 117], | |
| N205_L6_ISLAND01_PIG_004: [11, 20, 5381, 137, 117], | |
| N205_L6_ISLAND01_PIG_005: [11, 20, 5518, 137, 117], | |
| N205_L6_ISLAND01_PIG_006: [11, 20, 5655, 137, 117], | |
| N205_L6_ISLAND01_PIG_007: [11, 20, 5792, 137, 117], | |
| N205_L6_ISLAND01_PIG_008: [11, | |
| 20, 5929, 137, 117 | |
| ], | |
| N205_L6_ISLAND01_PIG_009: [11, 20, 6066, 137, 117], | |
| N205_L6_ISLAND01_PIG_010: [11, 20, 6203, 137, 117], | |
| N205_L6_ISLAND01_PIG_011: [11, 20, 6340, 137, 117], | |
| N205_L6_ISLAND01_PIG_012: [11, 20, 6477, 137, 117], | |
| N205_L6_ISLAND01_PIG_013: [11, 20, 6614, 137, 117], | |
| N205_L6_ISLAND01_PIG_014: [11, 20, 6751, 137, 117], | |
| N205_L6_ISLAND01_PIG_015: [11, 20, 6888, 137, 117], | |
| N205_L6_ISLAND01_PIG_016: [11, 20, 7025, 137, 117], | |
| N205_L6_ISLAND01_PIG_017: [11, 20, 7162, 137, 117], | |
| N205_L6_ISLAND01_PIG_018: [11, 20, 7299, 137, 117], | |
| N205_L6_ISLAND01_PIG_019: [11, | |
| 20, 7436, 137, 117 | |
| ], | |
| N205_L6_ISLAND01_PIG_020: [11, 20, 7573, 137, 117], | |
| N205_L6_ISLAND01_PIG_021: [11, 20, 7710, 137, 117], | |
| N205_L6_ISLAND01_PIG_022: [11, 20, 7847, 137, 117], | |
| N205_L6_ISLAND01_PIG_023: [11, 20, 7984, 137, 117], | |
| N205_L6_ISLAND01_PIG_024: [11, 20, 8121, 137, 117], | |
| N205_L6_ISLAND01_PIG_025: [11, 20, 8258, 137, 117], | |
| N205_L6_ISLAND01_PIG_026: [11, 20, 8395, 137, 117], | |
| N205_L6_ISLAND01_PIG_027: [11, 20, 8532, 137, 117], | |
| N205_L6_ISLAND01_PIG_028: [11, 20, 8669, 137, 117], | |
| N205_L6_ISLAND01_PIG_029: [11, 20, 8806, 137, 117], | |
| N205_L6_ISLAND01_PIG_030: [11, | |
| 20, 8943, 137, 117 | |
| ], | |
| N205_L6_ISLAND01_PIG_031: [11, 20, 9080, 137, 117], | |
| N205_L6_ISLAND01_PIG_032: [11, 20, 9217, 137, 117], | |
| N205_L6_ISLAND01_PIG_033: [11, 20, 9354, 137, 117], | |
| N205_L6_ISLAND01_PIG_034: [11, 20, 9491, 137, 117], | |
| N205_L6_ISLAND01_PIG_035: [11, 20, 9628, 137, 117], | |
| N205_L6_ISLAND01_PIG_036: [11, 20, 9765, 137, 117], | |
| N205_L6_ISLAND01_PIG_037: [11, 20, 9902, 137, 117], | |
| N205_L6_ISLAND01_PIG_038: [11, 20, 10039, 137, 117], | |
| N205_L6_ISLAND01_PIG_039: [11, 20, 10176, 137, 117], | |
| N205_L6_ISLAND01_PIG_040: [11, 20, 10313, 137, 117], | |
| N205_L6_ISLAND01_PIG_041: [11, | |
| 20, 10450, 137, 117 | |
| ], | |
| N205_L6_ISLAND01_PIG_042: [11, 20, 10587, 137, 117], | |
| N205_L6_ISLAND01_PIG_043: [11, 20, 10724, 137, 117], | |
| N205_L6_ISLAND01_PIG_044: [11, 20, 10861, 137, 117], | |
| N205_L6_ISLAND01_PIG_045: [11, 20, 10998, 137, 117], | |
| N205_L6_ISLAND01_PIG_046: [11, 20, 11135, 137, 117], | |
| N205_L6_ISLAND01_PIG_047: [11, 20, 11272, 137, 117], | |
| N205_L6_ISLAND01_PIG_048: [11, 20, 11409, 137, 117], | |
| N205_L6_ISLAND01_PIG_049: [11, 20, 11546, 137, 117], | |
| N205_L6_ISLAND01_PIG_050: [11, 20, 11683, 137, 117], | |
| N205_L6_ISLAND01_PIG_051: [11, 20, 11820, 137, 117], | |
| N205_L6_ISLAND01_PIG_052: [11, | |
| 20, 11957, 137, 117 | |
| ], | |
| N205_L6_ISLAND01_PIG_053: [11, 20, 12094, 137, 117], | |
| N205_L6_ISLAND01_PIG_054: [11, 20, 12231, 137, 117], | |
| N205_L6_ISLAND01_PIG_055: [11, 20, 12368, 137, 117], | |
| N205_L6_ISLAND01_PIG_056: [11, 20, 12505, 137, 117], | |
| N205_L6_ISLAND01_PIG_057: [11, 20, 12642, 137, 117], | |
| N205_L6_ISLAND01_PIG_058: [11, 20, 12779, 137, 117], | |
| N205_L6_ISLAND01_PIG_059: [11, 20, 12916, 137, 117], | |
| N205_L6_ISLAND01_PIG_060: [11, 20, 13053, 137, 117], | |
| N205_L6_ISLAND01_PIG_061: [11, 20, 13190, 137, 117], | |
| N205_L6_ISLAND01_PIG_062: [11, 20, 13327, 137, 117], | |
| N205_L6_ISLAND01_PIG_063: [11, | |
| 20, 13464, 137, 117 | |
| ], | |
| N210_L6_BLOCK10_MILL_001: [11, 20, 13601, 66, 142], | |
| N210_L6_BLOCK10_MILL_002: [11, 20, 13763, 66, 142], | |
| N210_L6_BLOCK10_MILL_003: [11, 20, 13925, 66, 142], | |
| N210_L6_BLOCK10_MILL_004: [11, 20, 14087, 66, 142], | |
| N210_L6_BLOCK10_MILL_005: [11, 20, 14249, 66, 142], | |
| N210_L6_BLOCK10_MILL_006: [11, 20, 14411, 66, 142], | |
| N210_L6_BLOCK10_MILL_007: [11, 20, 14573, 66, 142], | |
| N210_L6_BLOCK10_MILL_008: [11, 20, 14735, 66, 142], | |
| N210_L6_BLOCK10_MILL_009: [11, 20, 14897, 66, 142], | |
| N210_L6_BLOCK10_MILL_010: [11, 20, 15059, 66, 142], | |
| N210_L6_BLOCK10_MILL_011: [11, | |
| 20, 15221, 66, 142 | |
| ], | |
| N210_L6_BLOCK10_MILL_012: [11, 20, 15383, 66, 142], | |
| N210_L6_BLOCK10_MILL_013: [11, 20, 15545, 66, 142], | |
| N210_L6_BLOCK10_MILL_014: [11, 20, 15707, 66, 142], | |
| N210_L6_BLOCK10_MILL_015: [11, 20, 15869, 66, 142], | |
| N210_L6_BLOCK10_MILL_016: [11, 20, 16031, 66, 142], | |
| N210_L6_BLOCK10_MILL_017: [11, 20, 16193, 66, 142], | |
| N210_L6_BLOCK10_MILL_018: [11, 20, 16355, 66, 142], | |
| N210_L6_BLOCK10_MILL_019: [11, 20, 16517, 66, 142], | |
| N210_L6_BLOCK10_MILL_020: [11, 20, 16679, 66, 142], | |
| N210_L6_BLOCK10_MILL_021: [11, 20, 16841, 66, 142], | |
| N210_L6_BLOCK10_MILL_022: [11, | |
| 20, 17003, 66, 142 | |
| ], | |
| N210_L6_BLOCK10_MILL_023: [11, 20, 17165, 66, 142], | |
| N211_L6_BLOCK11_BUCKETS_001: [11, 20, 17327, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_002: [11, 20, 17407, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_003: [11, 20, 17487, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_004: [11, 20, 17567, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_005: [11, 20, 17647, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_006: [11, 20, 17727, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_007: [11, 20, 17807, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_008: [11, 20, 17887, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_009: [11, 20, 17967, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_010: [11, | |
| 20, 18047, 66, 60 | |
| ], | |
| N211_L6_BLOCK11_BUCKETS_011: [11, 20, 18127, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_012: [11, 20, 18207, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_013: [11, 20, 18287, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_014: [11, 20, 18367, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_015: [11, 20, 18447, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_016: [11, 20, 18527, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_017: [11, 20, 18607, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_018: [11, 20, 18687, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_019: [11, 20, 18767, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_020: [11, 20, 18847, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_021: [11, | |
| 20, 18927, 66, 60 | |
| ], | |
| N211_L6_BLOCK11_BUCKETS_022: [11, 20, 19007, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_023: [11, 20, 19087, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_024: [11, 20, 19167, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_025: [11, 20, 19247, 66, 60], | |
| N211_L6_BLOCK11_BUCKETS_026: [11, 20, 19327, 66, 60], | |
| N212_L6_BLOCK12_SHEEP_001: [11, 20, 19407, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_002: [11, 20, 19509, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_003: [11, 20, 19611, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_004: [11, 20, 19713, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_005: [11, 20, 19815, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_006: [11, | |
| 20, 19917, 59, 82 | |
| ], | |
| N212_L6_BLOCK12_SHEEP_007: [11, 20, 20019, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_008: [11, 20, 20121, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_009: [11, 20, 20223, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_010: [11, 20, 20325, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_011: [11, 20, 20427, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_012: [11, 20, 20529, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_013: [11, 20, 20631, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_014: [11, 20, 20733, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_015: [11, 20, 20835, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_016: [11, 20, 20937, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_017: [11, | |
| 20, 21039, 59, 82 | |
| ], | |
| N212_L6_BLOCK12_SHEEP_018: [11, 20, 21141, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_019: [11, 20, 21243, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_020: [11, 20, 21345, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_021: [11, 20, 21447, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_022: [11, 20, 21549, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_023: [11, 20, 21651, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_024: [11, 20, 21753, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_025: [11, 20, 21855, 59, 82], | |
| N212_L6_BLOCK12_SHEEP_026: [11, 20, 21957, 59, 82], | |
| N213_L6_BLOCK13_15_CHICKS_001: [11, 20, 22059, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_002: [11, | |
| 20, 22141, 80, 62 | |
| ], | |
| N213_L6_BLOCK13_15_CHICKS_003: [11, 20, 22223, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_004: [11, 20, 22305, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_005: [11, 20, 22387, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_006: [11, 20, 22469, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_007: [11, 20, 22551, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_008: [11, 20, 22633, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_009: [11, 20, 22715, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_010: [11, 20, 22797, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_011: [11, 20, 22879, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_012: [11, 20, | |
| 22961, 80, 62 | |
| ], | |
| N213_L6_BLOCK13_15_CHICKS_013: [11, 20, 23043, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_014: [11, 20, 23125, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_015: [11, 20, 23207, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_016: [11, 20, 23289, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_017: [11, 20, 23371, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_018: [11, 20, 23453, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_019: [11, 20, 23535, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_020: [11, 20, 23617, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_021: [11, 20, 23699, 80, 62], | |
| N213_L6_BLOCK13_15_CHICKS_022: [11, 20, 23781, | |
| 80, 62 | |
| ], | |
| N213_L6_BLOCK13_15_CHICKS_023: [11, 20, 23617, 80, 62], | |
| N214_L6_BLOCK14_CHICKEN_001: [11, 20, 23863, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_002: [11, 20, 23955, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_003: [11, 20, 24047, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_004: [11, 20, 24139, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_005: [11, 20, 24231, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_006: [11, 20, 24323, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_007: [11, 20, 24415, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_008: [11, 20, 24507, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_009: [11, 20, 24599, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_010: [11, | |
| 20, 24691, 41, 72 | |
| ], | |
| N214_L6_BLOCK14_CHICKEN_011: [11, 20, 24783, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_012: [11, 20, 24875, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_013: [11, 20, 24967, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_014: [11, 20, 25059, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_015: [11, 20, 25151, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_016: [11, 20, 25243, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_017: [11, 20, 25335, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_018: [11, 20, 25427, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_019: [11, 20, 25519, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_020: [11, 20, 25611, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_021: [11, | |
| 20, 25703, 41, 72 | |
| ], | |
| N214_L6_BLOCK14_CHICKEN_022: [11, 20, 25795, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_023: [11, 20, 25887, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_024: [11, 20, 25979, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_025: [11, 20, 26071, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_026: [11, 20, 26163, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_027: [11, 20, 26255, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_028: [11, 20, 26347, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_029: [11, 20, 26439, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_030: [11, 20, 26531, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_031: [11, 20, 26623, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_032: [11, | |
| 20, 24783, 41, 72 | |
| ], | |
| N214_L6_BLOCK14_CHICKEN_033: [11, 20, 26715, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_034: [11, 20, 26807, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_035: [11, 20, 26899, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_036: [11, 20, 26991, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_037: [11, 20, 27083, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_038: [11, 20, 24783, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_039: [11, 20, 27175, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_040: [11, 20, 27267, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_041: [11, 20, 27359, 41, 72], | |
| N214_L6_BLOCK14_CHICKEN_042: [11, 20, 25427, 41, 72], | |
| N215_L6_BLOCK16_18_PIGLET_001: [11, | |
| 20, 27451, 117, 92 | |
| ], | |
| N215_L6_BLOCK16_18_PIGLET_002: [11, 20, 27563, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_003: [11, 20, 27675, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_004: [11, 20, 27787, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_005: [11, 20, 27899, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_006: [11, 20, 28011, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_007: [11, 20, 28123, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_008: [11, 20, 28235, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_009: [11, 20, 28347, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_010: [11, 20, 28459, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_011: [11, | |
| 20, 28571, 117, 92 | |
| ], | |
| N215_L6_BLOCK16_18_PIGLET_012: [11, 20, 28683, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_013: [11, 20, 28795, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_014: [11, 20, 28907, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_015: [11, 20, 29019, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_016: [11, 20, 29131, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_017: [11, 20, 29243, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_018: [11, 20, 29355, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_019: [11, 20, 29467, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_020: [11, 20, 29579, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_021: [11, | |
| 20, 29691, 117, 92 | |
| ], | |
| N215_L6_BLOCK16_18_PIGLET_022: [11, 20, 29803, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_023: [11, 20, 29915, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_024: [11, 20, 30027, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_025: [11, 20, 30139, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_026: [11, 20, 30251, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_027: [11, 20, 30363, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_028: [11, 20, 30475, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_029: [11, 20, 30587, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_030: [11, 20, 30699, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_031: [11, | |
| 20, 30811, 117, 92 | |
| ], | |
| N215_L6_BLOCK16_18_PIGLET_032: [11, 20, 30923, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_033: [11, 20, 31035, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_034: [11, 20, 31147, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_035: [11, 20, 31259, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_036: [11, 20, 31371, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_037: [11, 20, 31483, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_038: [11, 20, 30923, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_039: [11, 20, 31595, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_040: [11, 20, 31707, 117, 92], | |
| N215_L6_BLOCK16_18_PIGLET_041: [11, | |
| 20, 30699, 117, 92 | |
| ], | |
| N216_L6_BLOCK17_PIG_001: [11, 20, 31819, 137, 105], | |
| N216_L6_BLOCK17_PIG_002: [11, 20, 31944, 137, 105], | |
| N216_L6_BLOCK17_PIG_003: [11, 20, 32069, 137, 105], | |
| N216_L6_BLOCK17_PIG_004: [11, 20, 32194, 137, 105], | |
| N216_L6_BLOCK17_PIG_005: [11, 20, 32319, 137, 105], | |
| N216_L6_BLOCK17_PIG_006: [11, 20, 32444, 137, 105], | |
| N216_L6_BLOCK17_PIG_007: [11, 20, 32569, 137, 105], | |
| N216_L6_BLOCK17_PIG_008: [11, 20, 32694, 137, 105], | |
| N216_L6_BLOCK17_PIG_009: [11, 20, 32819, 137, 105], | |
| N216_L6_BLOCK17_PIG_010: [11, 20, 32944, 137, 105], | |
| N216_L6_BLOCK17_PIG_011: [11, | |
| 20, 33069, 137, 105 | |
| ], | |
| N216_L6_BLOCK17_PIG_012: [11, 20, 33194, 137, 105], | |
| N216_L6_BLOCK17_PIG_013: [11, 20, 33319, 137, 105], | |
| N216_L6_BLOCK17_PIG_014: [11, 20, 33444, 137, 105], | |
| N216_L6_BLOCK17_PIG_015: [11, 20, 33569, 137, 105], | |
| N216_L6_BLOCK17_PIG_016: [11, 20, 33694, 137, 105], | |
| N216_L6_BLOCK17_PIG_017: [11, 20, 33819, 137, 105], | |
| N216_L6_BLOCK17_PIG_018: [11, 20, 33944, 137, 105], | |
| N216_L6_BLOCK17_PIG_019: [11, 20, 34069, 137, 105], | |
| N216_L6_BLOCK17_PIG_020: [11, 20, 34194, 137, 105], | |
| N216_L6_BLOCK17_PIG_021: [11, 20, 34319, 137, 105], | |
| N216_L6_BLOCK17_PIG_022: [11, | |
| 20, 34444, 137, 105 | |
| ], | |
| N216_L6_BLOCK17_PIG_023: [11, 20, 34569, 137, 105], | |
| N216_L6_BLOCK17_PIG_024: [11, 20, 34694, 137, 105], | |
| N216_L6_BLOCK17_PIG_025: [11, 20, 34819, 137, 105], | |
| N216_L6_BLOCK17_PIG_026: [11, 20, 34944, 137, 105], | |
| N216_L6_BLOCK17_PIG_027: [11, 20, 35069, 137, 105], | |
| N216_L6_BLOCK17_PIG_028: [11, 20, 35194, 137, 105], | |
| N216_L6_BLOCK17_PIG_029: [11, 20, 35319, 137, 105], | |
| N216_L6_BLOCK17_PIG_030: [11, 20, 35444, 137, 105], | |
| N216_L6_BLOCK17_PIG_031: [11, 20, 35569, 137, 105], | |
| N218_L6_BLOCK21_FLOWER_001: [11, 20, 35694, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_002: [11, | |
| 20, 35739, 39, 25 | |
| ], | |
| N218_L6_BLOCK21_FLOWER_003: [11, 20, 35784, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_004: [11, 20, 35829, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_005: [11, 20, 35874, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_006: [11, 20, 35919, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_007: [11, 20, 35964, 39, 25], | |
| N218_L6_BLOCK21_FLOWER_008: [11, 20, 36009, 39, 25], | |
| N219_L6_BLOCK21_FENCE_001: [11, 20, 36054, 45, 63], | |
| N219_L6_BLOCK21_FENCE_002: [11, 20, 36137, 45, 63], | |
| N219_L6_BLOCK21_FENCE_003: [11, 20, 36220, 45, 63], | |
| N219_L6_BLOCK21_FENCE_004: [11, 20, 36303, 45, 63], | |
| N219_L6_BLOCK21_FENCE_005: [11, | |
| 20, 36386, 45, 63 | |
| ], | |
| N219_L6_BLOCK21_FENCE_006: [11, 20, 36469, 45, 63], | |
| N219_L6_BLOCK21_FENCE_007: [11, 20, 36552, 45, 63], | |
| N219_L6_BLOCK21_FENCE_008: [11, 20, 36635, 45, 63], | |
| N219_L6_BLOCK21_FENCE_009: [11, 20, 36718, 45, 63], | |
| N219_L6_BLOCK21_FENCE_010: [11, 20, 36801, 45, 63], | |
| N219_L6_BLOCK21_FENCE_011: [11, 20, 36884, 45, 63], | |
| N219_L6_BLOCK21_FENCE_012: [11, 20, 36967, 45, 63], | |
| PIG_ISLAND: [11, 20, 37200, 171.1, 124.4], | |
| PLANT_001: [3, 20, 20, 41, 51], | |
| PLANT_002: [3, 20, 91, 41, 51], | |
| PLANT_003: [3, 20, 162, 41, 51], | |
| PLANT_004: [3, 20, 233, 41, 51], | |
| PLANT_005: [3, 20, 304, | |
| 41, 51 | |
| ], | |
| PLANT_006: [3, 20, 375, 41, 51], | |
| PLANT_007: [3, 20, 446, 41, 51], | |
| PLANT_008: [3, 20, 517, 41, 51], | |
| PLANT_009: [3, 20, 588, 41, 51], | |
| PLANT_010: [3, 20, 659, 41, 51], | |
| PLANT_011: [3, 20, 730, 41, 51], | |
| PLANT_012: [3, 20, 801, 41, 51], | |
| PLANT_013: [3, 20, 872, 41, 51], | |
| PLANT_014: [3, 20, 943, 41, 51], | |
| PLANT_015: [3, 20, 1014, 41, 51], | |
| PLANT_016: [3, 20, 1085, 41, 51], | |
| PLANT_017: [3, 20, 1156, 41, 51], | |
| PLANT_018: [3, 20, 1227, 41, 51], | |
| POND_ISLAND: [11, 20, 37345, 238.5, 276.9], | |
| PURPLE_DARK_LEFT_0: [1, 20, 18361, 128, 128], | |
| PURPLE_DARK_LEFT_1: [1, 20, 18509, 128, 128], | |
| PURPLE_DARK_LEFT_2: [1, | |
| 20, 18657, 128, 128 | |
| ], | |
| PURPLE_DARK_LEFT_3: [1, 20, 18805, 128, 128], | |
| PURPLE_DARK_LEFT_4: [1, 20, 18953, 128, 128], | |
| PURPLE_DARK_LEFT_5: [1, 20, 19101, 128, 128], | |
| PURPLE_DARK_LEFT_6: [1, 20, 19249, 128, 128], | |
| PURPLE_DARK_LEFT_7: [1, 20, 19397, 128, 128], | |
| PURPLE_DARK_LEFT_8: [1, 20, 19545, 128, 128], | |
| PURPLE_DARK_RIGHT_0: [1, 20, 19693, 128, 128], | |
| PURPLE_DARK_RIGHT_1: [1, 20, 19841, 128, 128], | |
| PURPLE_DARK_RIGHT_2: [1, 20, 19989, 128, 128], | |
| PURPLE_DARK_RIGHT_3: [1, 20, 20137, 128, 128], | |
| PURPLE_DARK_RIGHT_4: [1, 20, 20285, 128, 128], | |
| PURPLE_DARK_RIGHT_5: [1, 20, 20433, 128, 128], | |
| PURPLE_DARK_RIGHT_6: [1, 20, 20581, 128, 128], | |
| PURPLE_DARK_TOP_0: [1, 20, 20729, 128, 128], | |
| PURPLE_DARK_TOP_1: [1, 20, 20877, 128, 128], | |
| PURPLE_DARK_TOP_2: [1, 20, 21025, 128, 128], | |
| PURPLE_DARK_TOP_3: [1, 20, 21173, 128, 128], | |
| PURPLE_DARK_TOP_4: [1, 20, 21321, 128, 128], | |
| PURPLE_DARK_TOP_5: [1, 20, 21469, 128, 128], | |
| PURPLE_DARK_TOP_6: [1, 20, 21617, 128, 128], | |
| PURPLE_DARK_TOP_7: [1, 20, 21765, 128, 128], | |
| PURPLE_DARK_TOP_8: [1, 20, 21913, 128, 128], | |
| PURPLE_DARK_TOP_9: [1, 20, 22061, 128, 128], | |
| PURPLE_LIGHT_LEFT_0: [1, 20, 22209, 128, 128], | |
| PURPLE_LIGHT_LEFT_1: [1, 20, 22357, | |
| 128, 128 | |
| ], | |
| PURPLE_LIGHT_LEFT_10: [1, 20, 22505, 128, 128], | |
| PURPLE_LIGHT_LEFT_11: [1, 20, 22653, 128, 128], | |
| PURPLE_LIGHT_LEFT_12: [1, 20, 22801, 128, 128], | |
| PURPLE_LIGHT_LEFT_2: [1, 20, 22949, 128, 128], | |
| PURPLE_LIGHT_LEFT_3: [1, 20, 23097, 128, 128], | |
| PURPLE_LIGHT_LEFT_4: [1, 20, 23245, 128, 128], | |
| PURPLE_LIGHT_LEFT_5: [1, 20, 23393, 128, 128], | |
| PURPLE_LIGHT_LEFT_6: [1, 20, 23541, 128, 128], | |
| PURPLE_LIGHT_LEFT_7: [1, 20, 23689, 128, 128], | |
| PURPLE_LIGHT_LEFT_8: [1, 20, 23837, 128, 128], | |
| PURPLE_LIGHT_LEFT_9: [1, 20, 23985, 128, 128], | |
| PURPLE_LIGHT_RIGHT_0: [1, 20, 24133, 128, 128], | |
| PURPLE_LIGHT_RIGHT_1: [1, 20, 24281, 128, 128], | |
| PURPLE_LIGHT_RIGHT_2: [1, 20, 24429, 128, 128], | |
| PURPLE_LIGHT_RIGHT_3: [1, 20, 24577, 128, 128], | |
| PURPLE_LIGHT_RIGHT_4: [1, 20, 24725, 128, 128], | |
| PURPLE_LIGHT_RIGHT_5: [1, 20, 24873, 128, 128], | |
| PURPLE_LIGHT_RIGHT_6: [1, 20, 20581, 128, 128], | |
| PURPLE_LIGHT_TOP_0: [1, 20, 25021, 128, 128], | |
| PURPLE_LIGHT_TOP_1: [1, 20, 25169, 128, 128], | |
| PURPLE_LIGHT_TOP_2: [1, 20, 25317, 128, 128], | |
| PURPLE_LIGHT_TOP_3: [1, 20, 25465, 128, 128], | |
| PURPLE_LIGHT_TOP_4: [1, 20, 25613, 128, 128], | |
| PURPLE_LIGHT_TOP_5: [1, 20, 25761, 128, 128], | |
| PURPLE_LIGHT_TOP_6: [1, | |
| 20, 20581, 128, 128 | |
| ], | |
| SHADOW_LEFT: [1, 20, 14441, 64, 32], | |
| SHADOW_RIGHT: [1, 20, 14493, 64, 32], | |
| SHED_ISLAND: [11, 20, 37642, 198, 253.9], | |
| SHEEP_ISLAND: [11, 20, 37916, 116.2, 103.9], | |
| THREE_SPRITE_N062_L3_TILE05_012: [5, 20, 18907, 128, 128], | |
| THREE_SPRITE_N063_L3_TILE06_013: [5, 20, 19055, 128, 128], | |
| THREE_SPRITE_N064_L3_TILE07_009: [5, 20, 19203, 128, 128], | |
| THREE_SPRITE_N065_L3_TILE08_010: [5, 20, 19351, 128, 128], | |
| TREE_0: [2, 20, 6501, 120, 170], | |
| TREE_1: [2, 20, 6691, 114, 182], | |
| TREE_10: [2, 20, 6893, 114, 182], | |
| TREE_11: [2, 20, 7095, 114, 182], | |
| TREE_12: [2, 20, 7297, 114, | |
| 182 | |
| ], | |
| TREE_13: [2, 20, 7499, 114, 182], | |
| TREE_14: [2, 20, 7701, 114, 182], | |
| TREE_15: [2, 20, 7903, 114, 182], | |
| TREE_16: [2, 20, 8105, 114, 182], | |
| TREE_17: [2, 20, 8307, 114, 182], | |
| TREE_18: [2, 20, 8509, 114, 182], | |
| TREE_19: [2, 20, 8711, 114, 182], | |
| TREE_2: [2, 20, 8913, 114, 182], | |
| TREE_20: [2, 20, 9115, 114, 182], | |
| TREE_21: [2, 20, 9317, 114, 182], | |
| TREE_3: [2, 20, 9519, 114, 182], | |
| TREE_4: [2, 20, 9721, 114, 182], | |
| TREE_5: [2, 20, 9923, 114, 182], | |
| TREE_6: [2, 20, 10125, 114, 182], | |
| TREE_7: [2, 20, 10327, 114, 182], | |
| TREE_8: [2, 20, 10529, 114, 182], | |
| TREE_9: [2, 20, 10731, 114, 182] | |
| }; | |
| xa(yh); | |
| var zh = 1E3 / 60, | |
| Ah = window.google && window.google.doodle && window.google.doodle.isDemoHtml ? "" : "/logos/2017/logo17/", | |
| Bh = "L1.json L2.json L3.json L4.json L5.json L6.json".split(" "), | |
| Ch = [ | |
| [2, 3], | |
| [4], | |
| [5, 6], | |
| [7, 8, 9], | |
| [10, 6, 8], | |
| [11, 3, 9] | |
| ], | |
| Dh = [2, 5, 4, 7, 6, 6], | |
| Eh = ["T1.json", "T2.json", "T3.json"]; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2013 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var Fh, Gh, H = {}; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2016 Massachusetts Institute of Technology | |
| All rights reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var I = { | |
| motion: { | |
| primary: "#A4DD4A", | |
| secondary: "#009444", | |
| tertiary: "#A4DD4A", | |
| turn: "#26A2F6", | |
| turnSecondary: "#007ec4" | |
| }, | |
| looks: { | |
| primary: "#9966FF", | |
| secondary: "#855CD6", | |
| tertiary: "#774DCB" | |
| }, | |
| sounds: { | |
| primary: "#CF63CF", | |
| secondary: "#C94FC9", | |
| tertiary: "#BD42BD" | |
| }, | |
| control: { | |
| primary: "#F7941D", | |
| secondary: "#c16500", | |
| tertiary: "#c16500" | |
| }, | |
| event: { | |
| primary: "#14A795", | |
| secondary: "#338c7b", | |
| tertiary: "#338c7b" | |
| }, | |
| sensing: { | |
| primary: "#5CB1D6", | |
| secondary: "#47A8D1", | |
| tertiary: "#2E8EB8" | |
| }, | |
| pen: { | |
| primary: "#0fBD8C", | |
| secondary: "#0DA57A", | |
| tertiary: "#0B8E69" | |
| }, | |
| operators: { | |
| primary: "#59C059", | |
| secondary: "#46B946", | |
| tertiary: "#389438" | |
| }, | |
| data: { | |
| primary: "#FF8C1A", | |
| secondary: "#FF8000", | |
| tertiary: "#DB6E00" | |
| }, | |
| more: { | |
| primary: "#FF6680", | |
| secondary: "#FF4D6A", | |
| tertiary: "#FF3355" | |
| }, | |
| text: "#575E75", | |
| workspace: "#F9F9F9", | |
| topBorder: "transparent", | |
| toolboxHover: "#4C97FF", | |
| toolboxSelected: "#e9eef2", | |
| toolboxText: "#575E75", | |
| toolbox: "#FFFFFF", | |
| flyout: "#F9F9F9", | |
| scrollbar: "#CECDCE", | |
| scrollbarHover: "#CECDCE", | |
| textField: "#FFFFFF", | |
| insertionMarker: "#000000", | |
| insertionMarkerOpacity: .2, | |
| dragShadowOpacity: .3, | |
| stackGlow: "#FFF200", | |
| stackGlowOpacity: 1, | |
| replacementGlow: "#FFFFFF", | |
| replacementGlowOpacity: 1, | |
| colourPickerStroke: "#FFFFFF", | |
| fieldShadow: "rgba(0,0,0,0.1)", | |
| dropDownShadow: "rgba(0, 0, 0, .3)", | |
| numPadBackground: "#547AB2", | |
| numPadBorder: "#435F91", | |
| numPadActiveBackground: "#435F91", | |
| numPadText: "#FFFFFF", | |
| valueReportBackground: "#FFFFFF", | |
| valueReportBorder: "#AAAAAA" | |
| }; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2016 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var J = null, | |
| Hh = null, | |
| Ih = {}; | |
| Cd && (Ih = { | |
| mousedown: ["touchstart"], | |
| mousemove: ["touchmove"], | |
| mouseup: ["touchend", "touchcancel"] | |
| }); | |
| var Jh = 0, | |
| Lh = function(a, b) { | |
| Kh(); | |
| 1 == a.changedTouches.length && (Jh = setTimeout(function() { | |
| a.button = 2; | |
| a.clientX = a.changedTouches[0].clientX; | |
| a.clientY = a.changedTouches[0].clientY; | |
| b.onMouseDown_(a) | |
| }, 750)) | |
| }, | |
| Kh = function() { | |
| Jh && (clearTimeout(Jh), Jh = 0) | |
| }, | |
| Ph = function() { | |
| var a = K; | |
| 0 != a.dragMode_ && (J = null, Mh(a), Nh("handopen"), a.dragMode_ = 0, Hh && (Oh(Hh), Hh = null), Fh && (Oh(Fh), Fh = null)) | |
| }, | |
| Rh = function(a) { | |
| var b = K; | |
| if (0 != b.dragMode_) { | |
| var c = a.clientX - b.startDragMouseX, | |
| e = a.clientY - b.startDragMouseY; | |
| Qh(b, b.startScrollX + c, b.startScrollY + | |
| e); | |
| 3 < Math.sqrt(c * c + e * e) && (Kh(), b.dragMode_ = 2); | |
| a.stopPropagation(); | |
| a.preventDefault() | |
| } | |
| }, | |
| Sh = function(a) { | |
| var b = []; | |
| if (a.changedTouches) | |
| for (var c = 0; c < a.changedTouches.length; c++) b[c] = { | |
| type: a.type, | |
| changedTouches: [a.changedTouches[c]], | |
| target: a.target, | |
| stopPropagation: function() { | |
| a.stopPropagation() | |
| }, | |
| preventDefault: function() { | |
| a.preventDefault() | |
| } | |
| }; | |
| else b.push(a); | |
| return b | |
| }; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2012 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var Wh = function(a) { | |
| this.id = Th(); | |
| Uh[this.id] = this; | |
| this.options = a || new Vh({}); | |
| this.RTL = !!this.options.RTL; | |
| this.horizontalLayout = !!this.options.horizontalLayout; | |
| this.toolboxPosition = this.options.toolboxPosition; | |
| this.topBlocks_ = []; | |
| this.Blockly_Workspace$listeners_ = []; | |
| this.undoStack = []; | |
| this.redoStack = []; | |
| this.blockDB = Object.create(null); | |
| this.variableList = [] | |
| }; | |
| Wh.prototype.rendered = !1; | |
| Wh.prototype.dispose = function() { | |
| this.Blockly_Workspace$listeners_.length = 0; | |
| this.Blockly_Workspace_prototype$clear(); | |
| delete Uh[this.id] | |
| }; | |
| var Yh = function(a, b) { | |
| a.topBlocks_.push(b); | |
| if (a.isFlyout) | |
| for (var c = Xh(b), e = 0; e < c.length; e++) - 1 == a.variableList.indexOf(c[e]) && a.variableList.push(c[e]) | |
| }, | |
| Zh = function(a, b) { | |
| if (!eb(a.topBlocks_, b)) throw "Block not present in workspace's list of top-most blocks."; | |
| }, | |
| $h = function(a, b) { | |
| var c = [].concat(a.topBlocks_); | |
| if (b && 1 < c.length) { | |
| var e = Math.sin(3 * Math.PI / 180); | |
| a.RTL && (e *= -1); | |
| c.sort(function(a, b) { | |
| var c = a.getRelativeToSurfaceXY(), | |
| f = b.getRelativeToSurfaceXY(); | |
| return c.y + e * c.x - (f.y + e * f.x) | |
| }) | |
| } | |
| return c | |
| }, | |
| ai = function(a) { | |
| a = | |
| $h(a, !1); | |
| for (var b = 0; b < a.length; b++) a.push.apply(a, a[b].getChildren()); | |
| return a | |
| }; | |
| Wh.prototype.Blockly_Workspace_prototype$clear = function() { | |
| var a = bi; | |
| for (a || ci(!0); this.topBlocks_.length;) this.topBlocks_[0].dispose(!1); | |
| a || ci(!1); | |
| this.variableList.length = 0; | |
| di && ei(); | |
| fi && L(!0) | |
| }; | |
| Wh.prototype.renameVariable = function(a, b) { | |
| var c = gi(this, a), | |
| e = gi(this, b); | |
| if (-1 != e && this.variableList[e] != b) var f = this.variableList[e]; | |
| ci(!0); | |
| for (var g = ai(this), h = 0; h < g.length; h++) hi(g[h], a, b), f && hi(g[h], f, b); | |
| ci(!1); | |
| c == e || -1 != c && -1 == e ? this.variableList[c] = b : -1 != c && -1 != e ? (this.variableList[e] = b, this.variableList.splice(c, 1)) : (this.variableList.push(b), console.log("Tried to rename an non-existent variable.")) | |
| }; | |
| Wh.prototype.createVariable = function(a) { | |
| "No variable selected" != a.toLowerCase() && -1 == gi(this, a) && this.variableList.push(a) | |
| }; | |
| var ji = function(a, b) { | |
| for (var c = [], e = ai(a), f = 0; f < e.length; f++) { | |
| var g = ii(e[f]); | |
| if (g) | |
| for (var h = 0; h < g.length; h++) { | |
| var m = g[h]; | |
| m && m.toLowerCase() == b.toLowerCase() && c.push(e[f]) | |
| } | |
| } | |
| return c | |
| }, | |
| ni = function(a, b) { | |
| function c() { | |
| ci(!0); | |
| for (var a = 0; a < f.length; a++) f[a].dispose(!0, !1); | |
| ci(!1); | |
| m.variableList.splice(e, 1) | |
| } | |
| var e = gi(a, b); | |
| if (-1 != e) { | |
| for (var f = ji(a, b), g = 0, h; h = f[g]; g++) | |
| if ("procedures_defnoreturn" == h.type || "procedures_defreturn" == h.type) { | |
| g = ki(h, "NAME"); | |
| li(M.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1", b).replace("%2", | |
| g)); | |
| return | |
| } var m = a; | |
| 1 < f.length ? mi(M.DELETE_VARIABLE_CONFIRMATION.replace("%1", String(f.length)).replace("%2", b), function(a) { | |
| a && c() | |
| }) : c() | |
| } | |
| }, | |
| gi = function(a, b) { | |
| for (var c = 0, e; e = a.variableList[c]; c++) | |
| if (e.toLowerCase() == b.toLowerCase()) return c; | |
| return -1 | |
| }; | |
| d = Wh.prototype; | |
| d.getWidth = function() { | |
| return 0 | |
| }; | |
| d.newBlock = function(a, b) { | |
| return new oi(this, a, b) | |
| }; | |
| d.clearUndo = function() { | |
| this.undoStack.length = 0; | |
| for (var a = this.redoStack.length = 0, b; b = pi[a]; a++) b.recordUndo = !1 | |
| }; | |
| d.addChangeListener = function(a) { | |
| this.Blockly_Workspace$listeners_.push(a); | |
| return a | |
| }; | |
| d.removeChangeListener = function(a) { | |
| eb(this.Blockly_Workspace$listeners_, a) | |
| }; | |
| var qi = function(a, b) { | |
| var c = a.blockDB[b]; | |
| !c && a.getFlyout() && a.getFlyout().workspace && (c = a.getFlyout().workspace.blockDB[b]); | |
| return c || null | |
| }; | |
| Wh.prototype.getFlyout = function() { | |
| return null | |
| }; | |
| var Uh = Object.create(null); | |
| Wh.prototype.clear = Wh.prototype.Blockly_Workspace_prototype$clear; | |
| Wh.prototype.clearUndo = Wh.prototype.clearUndo; | |
| Wh.prototype.addChangeListener = Wh.prototype.addChangeListener; | |
| Wh.prototype.removeChangeListener = Wh.prototype.removeChangeListener; | |
| var ui = function(a, b, c, e, f, g) { | |
| this.workspace_ = a; | |
| this.Blockly_Bubble$content_ = b; | |
| this.shape_ = c; | |
| c = 20; | |
| this.workspace_.RTL && (c = -c); | |
| this.arrow_radians_ = c * Math.PI / 180; | |
| a.svgBubbleCanvas_.appendChild(ri(this, b, !(!f || !g))); | |
| this.anchorXY_ = e; | |
| this.rendered_ && si(this); | |
| f && g || (b = this.Blockly_Bubble$content_.getBBox(), f = b.width + 12, g = b.height + 12); | |
| this.setBubbleSize(f, g); | |
| si(this); | |
| ti(this); | |
| this.rendered_ = !0; | |
| a.options.readOnly || (N(this.bubbleBack_, "mousedown", this, this.bubbleMouseDown_), this.resizeGroup_ && N(this.resizeGroup_, | |
| "mousedown", this, this.resizeMouseDown_)) | |
| }, | |
| vi = null, | |
| wi = null; | |
| ui.prototype.resizeCallback_ = null; | |
| var xi = function() { | |
| vi && (Oh(vi), vi = null); | |
| wi && (Oh(wi), wi = null) | |
| }, | |
| yi = function() { | |
| J = null; | |
| Nh("handopen"); | |
| xi() | |
| }; | |
| d = ui.prototype; | |
| d.rendered_ = !1; | |
| d.anchorXY_ = null; | |
| d.relativeLeft_ = 0; | |
| d.relativeTop_ = 0; | |
| d.Blockly_Bubble_prototype$width_ = 0; | |
| d.Blockly_Bubble_prototype$height_ = 0; | |
| d.autoLayout_ = !0; | |
| var ri = function(a, b, c) { | |
| a.bubbleGroup_ = O("g", {}, null); | |
| var e = { | |
| filter: "url(#" + a.workspace_.options.embossFilterId + ")" | |
| }; - 1 != ad.indexOf("JavaFX") && (e = {}); | |
| e = O("g", e, a.bubbleGroup_); | |
| a.bubbleArrow_ = O("path", {}, e); | |
| a.bubbleBack_ = O("rect", { | |
| "class": "blocklyDraggable", | |
| x: 0, | |
| y: 0, | |
| rx: 6, | |
| ry: 6 | |
| }, e); | |
| c ? (a.resizeGroup_ = O("g", { | |
| "class": a.workspace_.RTL ? "blocklyResizeSW" : "blocklyResizeSE" | |
| }, a.bubbleGroup_), O("polygon", { | |
| points: "0,x x,x x,0".replace(/x/g, (12).toString()) | |
| }, a.resizeGroup_), O("line", { | |
| "class": "blocklyResizeLine", | |
| x1: 4, | |
| y1: 11, | |
| x2: 11, | |
| y2: 4 | |
| }, a.resizeGroup_), O("line", { | |
| "class": "blocklyResizeLine", | |
| x1: 8, | |
| y1: 11, | |
| x2: 11, | |
| y2: 8 | |
| }, a.resizeGroup_)) : a.resizeGroup_ = null; | |
| a.bubbleGroup_.appendChild(b); | |
| return a.bubbleGroup_ | |
| }; | |
| ui.prototype.bubbleMouseDown_ = function(a) { | |
| zi(this); | |
| xi(); | |
| Ai(a) ? a.stopPropagation() : Bi(a) || (Nh("handclosed"), Ci(this.workspace_, a, new A(this.workspace_.RTL ? -this.relativeLeft_ : this.relativeLeft_, this.relativeTop_)), vi = N(document, "mouseup", this, yi), wi = N(document, "mousemove", this, this.bubbleMouseMove_), Di(), a.stopPropagation()) | |
| }; | |
| ui.prototype.bubbleMouseMove_ = function(a) { | |
| this.autoLayout_ = !1; | |
| a = Ei(this.workspace_, a); | |
| this.relativeLeft_ = this.workspace_.RTL ? -a.x : a.x; | |
| this.relativeTop_ = a.y; | |
| si(this); | |
| ti(this) | |
| }; | |
| ui.prototype.resizeMouseDown_ = function(a) { | |
| zi(this); | |
| xi(); | |
| Ai(a) || (Nh("handclosed"), Ci(this.workspace_, a, new A(this.workspace_.RTL ? -this.Blockly_Bubble_prototype$width_ : this.Blockly_Bubble_prototype$width_, this.Blockly_Bubble_prototype$height_)), vi = N(document, "mouseup", this, yi), wi = N(document, "mousemove", this, this.resizeMouseMove_), Di()); | |
| a.stopPropagation() | |
| }; | |
| ui.prototype.resizeMouseMove_ = function(a) { | |
| this.autoLayout_ = !1; | |
| a = Ei(this.workspace_, a); | |
| this.setBubbleSize(this.workspace_.RTL ? -a.x : a.x, a.y); | |
| this.workspace_.RTL && si(this) | |
| }; | |
| var zi = function(a) { | |
| a.bubbleGroup_.parentNode.appendChild(a.bubbleGroup_) | |
| }, | |
| si = function(a) { | |
| var b = a.anchorXY_.x; | |
| b = a.workspace_.RTL ? b - (a.relativeLeft_ + a.Blockly_Bubble_prototype$width_) : b + a.relativeLeft_; | |
| a.bubbleGroup_.setAttribute("transform", "translate(" + b + "," + (a.relativeTop_ + a.anchorXY_.y) + ")") | |
| }; | |
| ui.prototype.getBubbleSize = function() { | |
| return { | |
| width: this.Blockly_Bubble_prototype$width_, | |
| height: this.Blockly_Bubble_prototype$height_ | |
| } | |
| }; | |
| ui.prototype.setBubbleSize = function(a, b) { | |
| a = Math.max(a, 57); | |
| b = Math.max(b, 32); | |
| this.Blockly_Bubble_prototype$width_ = a; | |
| this.Blockly_Bubble_prototype$height_ = b; | |
| this.bubbleBack_.setAttribute("width", a); | |
| this.bubbleBack_.setAttribute("height", b); | |
| this.resizeGroup_ && (this.workspace_.RTL ? this.resizeGroup_.setAttribute("transform", "translate(12," + (b - 12) + ") scale(-1 1)") : this.resizeGroup_.setAttribute("transform", "translate(" + (a - 12) + "," + (b - 12) + ")")); | |
| if (this.rendered_) { | |
| if (this.autoLayout_) { | |
| var c = -this.Blockly_Bubble_prototype$width_ / | |
| 4, | |
| e = -this.Blockly_Bubble_prototype$height_ - 64, | |
| f = this.workspace_.getMetrics(); | |
| f.viewWidth /= this.workspace_.scale; | |
| f.viewLeft /= this.workspace_.scale; | |
| var g = this.anchorXY_.x; | |
| this.workspace_.RTL ? g - f.viewLeft - c - this.Blockly_Bubble_prototype$width_ < Fi ? c = g - f.viewLeft - this.Blockly_Bubble_prototype$width_ - Fi : g - f.viewLeft - c > f.viewWidth && (c = g - f.viewLeft - f.viewWidth) : g + c < f.viewLeft ? c = f.viewLeft - g : f.viewLeft + f.viewWidth < g + c + this.Blockly_Bubble_prototype$width_ + 12 + Fi && (c = f.viewLeft + f.viewWidth - g - this.Blockly_Bubble_prototype$width_ - | |
| Fi); | |
| this.anchorXY_.y + e < f.viewTop && (e = this.shape_.getBBox().height); | |
| this.relativeLeft_ = c; | |
| this.relativeTop_ = e | |
| } | |
| si(this); | |
| ti(this) | |
| } | |
| this.resizeCallback_ && this.resizeCallback_() | |
| }; | |
| var ti = function(a) { | |
| var b = [], | |
| c = a.Blockly_Bubble_prototype$width_ / 2, | |
| e = a.Blockly_Bubble_prototype$height_ / 2, | |
| f = -a.relativeLeft_, | |
| g = -a.relativeTop_; | |
| if (c == f && e == g) b.push("M " + c + "," + e); | |
| else { | |
| g -= e; | |
| f -= c; | |
| a.workspace_.RTL && (f *= -1); | |
| var h = Math.sqrt(g * g + f * f), | |
| m = Math.acos(f / h); | |
| 0 > g && (m = 2 * Math.PI - m); | |
| var n = m + Math.PI / 2; | |
| n > 2 * Math.PI && (n -= 2 * Math.PI); | |
| var p = Math.sin(n), | |
| r = Math.cos(n), | |
| t = a.getBubbleSize(); | |
| n = (t.width + t.height) / 5; | |
| n = Math.min(n, t.width, t.height) / 4; | |
| t = 1 - 8 / h; | |
| f = c + t * f; | |
| g = e + t * g; | |
| t = c + n * r; | |
| var x = e + n * p; | |
| c -= n * r; | |
| e -= n * p; | |
| p = m + a.arrow_radians_; | |
| p > 2 * Math.PI && (p -= 2 * Math.PI); | |
| m = Math.sin(p) * h / 4; | |
| h = Math.cos(p) * h / 4; | |
| b.push("M" + t + "," + x); | |
| b.push("C" + (t + h) + "," + (x + m) + " " + f + "," + g + " " + f + "," + g); | |
| b.push("C" + f + "," + g + " " + (c + h) + "," + (e + m) + " " + c + "," + e) | |
| } | |
| b.push("z"); | |
| a.bubbleArrow_.setAttribute("d", b.join(" ")) | |
| }; | |
| ui.prototype.setColour = function(a) { | |
| this.bubbleBack_.setAttribute("fill", a); | |
| this.bubbleArrow_.setAttribute("fill", a) | |
| }; | |
| ui.prototype.dispose = function() { | |
| xi(); | |
| C(this.bubbleGroup_); | |
| this.shape_ = this.Blockly_Bubble$content_ = this.workspace_ = this.resizeGroup_ = this.bubbleBack_ = this.bubbleArrow_ = this.bubbleGroup_ = null | |
| }; | |
| var Gi = function(a) { | |
| this.block_ = a | |
| }; | |
| Gi.prototype.bubble = null; | |
| var Ii = function(a) { | |
| a.iconGroup_ || (a.iconGroup_ = O("g", { | |
| "class": "blocklyIconGroup" | |
| }, null), a.block_.isInFlyout && Hi(a.iconGroup_, "blocklyIconGroupReadonly"), a.drawIcon_(a.iconGroup_), a.block_.getSvgRoot().appendChild(a.iconGroup_), N(a.iconGroup_, "mouseup", a, a.iconClick), a.updateEditable()) | |
| }; | |
| Gi.prototype.dispose = function() { | |
| C(this.iconGroup_); | |
| this.iconGroup_ = null; | |
| this.setVisible(!1); | |
| this.block_ = null | |
| }; | |
| Gi.prototype.updateEditable = function() {}; | |
| Gi.prototype.isVisible = function() { | |
| return !!this.bubble_ | |
| }; | |
| Gi.prototype.iconClick = function(a) { | |
| Ji(this.block_.workspace) || this.block_.isInFlyout || Ai(a) || this.setVisible(!this.isVisible()) | |
| }; | |
| var Ki = function(a) { | |
| a.isVisible() && a.bubble_.setColour(a.block_.colour_) | |
| }; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2011 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var Li = function(a) { | |
| Li.superClass_.constructor.call(this, a); | |
| Ii(this) | |
| }; | |
| w(Li, Gi); | |
| Li.prototype.text_ = ""; | |
| Li.prototype.Blockly_Comment_prototype$width_ = 160; | |
| Li.prototype.Blockly_Comment_prototype$height_ = 80; | |
| Li.prototype.drawIcon_ = function(a) { | |
| O("circle", { | |
| "class": "blocklyIconShape", | |
| r: "8", | |
| cx: "8", | |
| cy: "8" | |
| }, a); | |
| O("path", { | |
| "class": "blocklyIconSymbol", | |
| d: "m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405 0.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25 -1.201,0.998 -1.201,1.528 -1.204,2.19z" | |
| }, a); | |
| O("rect", { | |
| "class": "blocklyIconSymbol", | |
| x: "6.8", | |
| y: "10.78", | |
| height: "2", | |
| width: "2" | |
| }, a) | |
| }; | |
| var Ni = function(a) { | |
| a.foreignObject_ = O("foreignObject", { | |
| x: 6, | |
| y: 6 | |
| }, null); | |
| var b = document.createElementNS("http://www.w3.org/1999/xhtml", "body"); | |
| b.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"); | |
| b.className = "blocklyMinimalBody"; | |
| var c = document.createElementNS("http://www.w3.org/1999/xhtml", "textarea"); | |
| c.className = "blocklyCommentTextarea"; | |
| c.setAttribute("dir", a.block_.RTL ? "RTL" : "LTR"); | |
| b.appendChild(c); | |
| a.textarea_ = c; | |
| a.foreignObject_.appendChild(b); | |
| N(c, "mouseup", a, a.textareaFocus_); | |
| N(c, "wheel", a, function(a) { | |
| a.stopPropagation() | |
| }); | |
| N(c, "change", a, function() { | |
| this.text_ != c.value && (P(new Mi(this.block_, "comment", null, this.text_, c.value)), this.text_ = c.value) | |
| }); | |
| setTimeout(function() { | |
| c.focus() | |
| }, 0); | |
| return a.foreignObject_ | |
| }; | |
| d = Li.prototype; | |
| d.updateEditable = function() { | |
| this.isVisible() && (this.setVisible(!1), this.setVisible(!0)); | |
| Gi.prototype.updateEditable.call(this) | |
| }; | |
| d.resizeBubble_ = function() { | |
| if (this.isVisible()) { | |
| var a = this.bubble_.getBubbleSize(); | |
| this.foreignObject_.setAttribute("width", a.width - 12); | |
| this.foreignObject_.setAttribute("height", a.height - 12); | |
| this.textarea_.style.width = a.width - 12 - 4 + "px"; | |
| this.textarea_.style.height = a.height - 12 - 4 + "px" | |
| } | |
| }; | |
| d.setVisible = function(a) { | |
| if (a != this.isVisible()) | |
| if (P(new Oi(this.block_, "commentOpen", !a, a)), !Pi(this.block_) && !this.textarea_ || z) { | |
| if (a != this.isVisible()) | |
| if (P(new Oi(this.block_, "warningOpen", !a, a)), a) { | |
| a = Qi(Ri(this)); | |
| this.bubble = new ui(this.block_.workspace, a, this.block_.svgPath_, null, null, null); | |
| if (this.block_.RTL) | |
| for (var b = a.getBBox().width, c = 0, e; e = a.childNodes[c]; c++) e.setAttribute("text-anchor", "end"), e.setAttribute("x", b + 6); | |
| Ki(this); | |
| a = this.bubble.getBubbleSize(); | |
| this.bubble.setBubbleSize(a.width, | |
| a.height) | |
| } else this.bubble.dispose(), this.bubble = null | |
| } else b = Ri(this), c = this.getBubbleSize(), a ? (this.bubble_ = new ui(this.block_.workspace, Ni(this), this.block_.svgPath_, this.iconXY_, this.Blockly_Comment_prototype$width_, this.Blockly_Comment_prototype$height_), this.bubble_.resizeCallback_ = this.resizeBubble_.bind(this), Ki(this)) : (this.bubble_.dispose(), this.foreignObject_ = this.textarea_ = this.bubble_ = null), Si(this, b), this.setBubbleSize(c.width, c.height) | |
| }; | |
| d.textareaFocus_ = function() { | |
| zi(this.bubble_); | |
| this.textarea_.focus() | |
| }; | |
| d.getBubbleSize = function() { | |
| return this.isVisible() ? this.bubble_.getBubbleSize() : { | |
| width: this.Blockly_Comment_prototype$width_, | |
| height: this.Blockly_Comment_prototype$height_ | |
| } | |
| }; | |
| d.setBubbleSize = function(a, b) { | |
| this.textarea_ ? this.bubble_.setBubbleSize(a, b) : (this.Blockly_Comment_prototype$width_ = a, this.Blockly_Comment_prototype$height_ = b) | |
| }; | |
| var Ri = function(a) { | |
| return a.textarea_ ? a.textarea_.value : a.text_ | |
| }, | |
| Si = function(a, b) { | |
| a.text_ != b && (P(new Mi(a.block_, "comment", null, a.text_, b)), a.text_ = b); | |
| a.textarea_ && (a.textarea_.value = b) | |
| }; | |
| Li.prototype.dispose = function() { | |
| 0 == Q && Si(this, ""); | |
| this.block_.comment = null; | |
| Gi.prototype.dispose.call(this) | |
| }; | |
| var Ui = function(a, b) { | |
| this.Blockly_Connection$sourceBlock = a; | |
| this.type = b; | |
| a.workspace.connectionDBList && (this.Blockly_Connection_prototype$db = a.workspace.connectionDBList[b], this.dbOpposite = a.workspace.connectionDBList[Ti[b]], this.Blockly_Connection_prototype$hidden = !this.Blockly_Connection_prototype$db) | |
| }; | |
| d = Ui.prototype; | |
| d.targetConnection = null; | |
| d.check_ = null; | |
| d.shadowDom_ = null; | |
| d.x = 0; | |
| d.y = 0; | |
| d.inDB = !1; | |
| d.Blockly_Connection_prototype$db = null; | |
| d.dbOpposite = null; | |
| d.Blockly_Connection_prototype$hidden = null; | |
| d.connectInternal = function(a) { | |
| var b = this, | |
| c = b.Blockly_Connection$sourceBlock, | |
| e = a.Blockly_Connection$sourceBlock, | |
| f = !1; | |
| b == Vi(c) && (f = !0); | |
| if (a.targetConnection) { | |
| if (f) var g = a.targetConnection; | |
| a.disconnect() | |
| } | |
| if (b.targetConnection) { | |
| var h = S(b), | |
| m = b.shadowDom_; | |
| b.shadowDom_ = null; | |
| if (h.isShadowBlock) m = Wi(h), h.dispose(), h = null; | |
| else if (3 == b.type) { | |
| if (!h.previousConnection) throw "Orphan block does not have a previous connection."; | |
| for (var n = e; n.nextConnection;) { | |
| var p = Xi(n); | |
| if (p && !p.isShadowBlock) n = p; | |
| else { | |
| Yi(h.previousConnection, | |
| n.nextConnection) && (n.nextConnection.connect(h.previousConnection), h = null); | |
| break | |
| } | |
| } | |
| } | |
| if (h && (b.disconnect(), Zi)) { | |
| var r = bi; | |
| setTimeout(function() { | |
| h.workspace && !h.parentBlock && (ci(r), h.outputConnection ? $i(h.outputConnection, b) : h.previousConnection && $i(h.previousConnection, b), ci(!1)) | |
| }, 0) | |
| } | |
| b.shadowDom_ = m | |
| } | |
| f && g && g.connect(c.previousConnection); | |
| var t; | |
| 0 == Q && (t = new aj(e)); | |
| bj(b, a); | |
| e.Blockly_Block_prototype$setParent(c); | |
| t && (cj(t), P(t)) | |
| }; | |
| d.dispose = function() { | |
| if (this.targetConnection) throw "Disconnect connection before disposing of it."; | |
| this.inDB && dj(this.Blockly_Connection_prototype$db, this); | |
| ej == this && (ej = null); | |
| fj == this && (fj = null); | |
| this.dbOpposite = this.Blockly_Connection_prototype$db = null | |
| }; | |
| var gj = function(a) { | |
| return 1 == a.type || 3 == a.type | |
| }, | |
| hj = function(a, b) { | |
| if (!b) return 3; | |
| if (gj(a)) var c = a.Blockly_Connection$sourceBlock, | |
| e = b.Blockly_Connection$sourceBlock; | |
| else e = a.Blockly_Connection$sourceBlock, c = b.Blockly_Connection$sourceBlock; | |
| return c && c == e ? 1 : b.type != Ti[a.type] ? 2 : c && e && c.workspace !== e.workspace ? 5 : Yi(a, b) ? c.isShadowBlock && !e.isShadowBlock ? 6 : 0 : 4 | |
| }; | |
| Ui.prototype.isConnectionAllowed = function(a) { | |
| if (a.Blockly_Connection$sourceBlock.isInsertionMarker_ || 0 != hj(this, a)) return !1; | |
| var b = Vi(this.Blockly_Connection$sourceBlock); | |
| switch (a.type) { | |
| case 4: | |
| if (!b || this != b) { | |
| if (this.targetConnection) return !1; | |
| if (a.targetConnection) return a.targetConnection == ij ? !0 : !1 | |
| } | |
| if (b) | |
| if (this == b) { | |
| if (this.targetConnection) return !1 | |
| } else if (this == this.Blockly_Connection$sourceBlock.nextConnection && a.targetConnection && !S(a).isInsertionMarker_) return !1; | |
| break; | |
| case 2: | |
| return !1; | |
| case 1: | |
| if (a.targetConnection && | |
| !jj(S(a)) && !S(a).isShadowBlock) return !1; | |
| break; | |
| case 3: | |
| if (b && this == this.Blockly_Connection$sourceBlock.previousConnection && a.targetConnection && !S(a).isInsertionMarker_ && !b.targetConnection || a.targetConnection && !S(a).isInsertionMarker_ && !this.Blockly_Connection$sourceBlock.nextConnection && !S(a).isShadowBlock && S(a).nextConnection) return !1; | |
| break; | |
| default: | |
| throw "Unknown connection type in isConnectionAllowed"; | |
| } | |
| return -1 != kj.indexOf(a) ? !1 : !0 | |
| }; | |
| Ui.prototype.connect = function(a) { | |
| if (this.targetConnection != a) { | |
| switch (hj(this, a)) { | |
| case 0: | |
| break; | |
| case 1: | |
| throw "Attempted to connect a block to itself."; | |
| case 5: | |
| throw "Blocks not on same workspace."; | |
| case 2: | |
| throw "Attempt to connect incompatible types."; | |
| case 3: | |
| throw "Target connection is null."; | |
| case 4: | |
| throw "Connection checks failed. " + (this + " expected " + this.check_ + ", found " + a.check_); | |
| case 6: | |
| throw "Connecting non-shadow to shadow block."; | |
| default: | |
| throw "Unknown connection failure: this should never happen!"; | |
| } | |
| gj(this) ? this.connectInternal(a) : a.connectInternal(this) | |
| } | |
| }; | |
| var bj = function(a, b) { | |
| a.targetConnection = b; | |
| b.targetConnection = a | |
| }; | |
| Ui.prototype.disconnect = function() { | |
| var a = this.targetConnection; | |
| if (gj(this)) { | |
| var b = this.Blockly_Connection$sourceBlock; | |
| var c = a.Blockly_Connection$sourceBlock; | |
| a = this | |
| } else b = a.Blockly_Connection$sourceBlock, c = this.Blockly_Connection$sourceBlock; | |
| this.disconnectInternal(b, c); | |
| a.respawnShadow() | |
| }; | |
| Ui.prototype.disconnectInternal = function(a, b) { | |
| var c; | |
| 0 == Q && (c = new aj(b)); | |
| this.targetConnection = this.targetConnection.targetConnection = null; | |
| b.Blockly_Block_prototype$setParent(null); | |
| c && (cj(c), P(c)) | |
| }; | |
| Ui.prototype.respawnShadow = function() { | |
| var a = this.Blockly_Connection$sourceBlock, | |
| b = this.shadowDom_; | |
| if (a.workspace && b && Zi) | |
| if (a = lj(b, a.workspace), a.outputConnection) this.connect(a.outputConnection); | |
| else if (a.previousConnection) this.connect(a.previousConnection); | |
| else throw "Child block does not have output or previous statement."; | |
| }; | |
| var S = function(a) { | |
| return a.targetConnection ? a.targetConnection.Blockly_Connection$sourceBlock : null | |
| }, | |
| Yi = function(a, b) { | |
| if (!a.check_ || !b.check_) return !0; | |
| for (var c = 0; c < a.check_.length; c++) | |
| if (-1 != b.check_.indexOf(a.check_[c])) return !0; | |
| return !1 | |
| }; | |
| Ui.prototype.onCheckChanged = function() { | |
| this.targetConnection && !Yi(this, this.targetConnection) && mj(gj(this) ? S(this) : this.Blockly_Connection$sourceBlock) | |
| }; | |
| var nj = function(a, b) { | |
| b ? (za(b) || (b = [b]), a.check_ = b, a.onCheckChanged()) : a.check_ = null | |
| }; | |
| Ui.prototype.neighbours = function() { | |
| return [] | |
| }; | |
| Ui.prototype.toString = function() { | |
| var a = this.Blockly_Connection$sourceBlock; | |
| if (a) | |
| if (a.outputConnection == this) var b = "Output Connection of "; | |
| else if (a.previousConnection == this) b = "Previous Connection of "; | |
| else if (a.nextConnection == this) b = "Next Connection of "; | |
| else if (b = bb(a.inputList, function(a) { | |
| return a.connection == this | |
| }, this)) b = 'Input "' + b.name + '" connection on '; | |
| else return console.warn("Connection not actually connected to sourceBlock"), "Orphan Connection"; | |
| else return "Orphan Connection"; | |
| return b + | |
| oj(a) | |
| }; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2017 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var pj = {}, | |
| sj = function() { | |
| this.tooltipWhenNotConnected_ = this.tooltip; | |
| qj(this, function() { | |
| var a = this.parentBlock; | |
| return a && rj(a) && a.tooltip || this.tooltipWhenNotConnected_ | |
| }.bind(this)) | |
| }, | |
| tj; | |
| (tj = !u("parent_tooltip_when_inline")) || (tj = /^[\s\xa0]*$/.test("parent_tooltip_when_inline")); | |
| if (tj) throw Error("s`parent_tooltip_when_inline"); | |
| if (pj.parent_tooltip_when_inline) throw Error("t`parent_tooltip_when_inline"); | |
| if (!Ba(sj)) throw Error("u`parent_tooltip_when_inline"); | |
| pj.parent_tooltip_when_inline = sj; | |
| var uj = function(a, b, c, e) { | |
| this.top = a; | |
| this.right = b; | |
| this.bottom = c; | |
| this.left = e | |
| }; | |
| d = uj.prototype; | |
| d.getWidth = function() { | |
| return this.right - this.left | |
| }; | |
| d.getHeight = function() { | |
| return this.bottom - this.top | |
| }; | |
| d.contains = function(a) { | |
| return this && a ? a instanceof uj ? a.left >= this.left && a.right <= this.right && a.top >= this.top && a.bottom <= this.bottom : a.x >= this.left && a.x <= this.right && a.y >= this.top && a.y <= this.bottom : !1 | |
| }; | |
| d.ceil = function() { | |
| this.top = Math.ceil(this.top); | |
| this.right = Math.ceil(this.right); | |
| this.bottom = Math.ceil(this.bottom); | |
| this.left = Math.ceil(this.left); | |
| return this | |
| }; | |
| d.floor = function() { | |
| this.top = Math.floor(this.top); | |
| this.right = Math.floor(this.right); | |
| this.bottom = Math.floor(this.bottom); | |
| this.left = Math.floor(this.left); | |
| return this | |
| }; | |
| d.round = function() { | |
| this.top = Math.round(this.top); | |
| this.right = Math.round(this.right); | |
| this.bottom = Math.round(this.bottom); | |
| this.left = Math.round(this.left); | |
| return this | |
| }; | |
| d.translate = function(a, b) { | |
| a instanceof A ? (this.left += a.x, this.right += a.x, this.top += a.y, this.bottom += a.y) : (this.left += a, this.right += a, v(b) && (this.top += b, this.bottom += b)); | |
| return this | |
| }; | |
| d.scale = function(a, b) { | |
| var c = v(b) ? b : a; | |
| this.left *= a; | |
| this.right *= a; | |
| this.top *= c; | |
| this.bottom *= c; | |
| return this | |
| }; | |
| var vj = function(a, b, c, e) { | |
| this.left = a; | |
| this.top = b; | |
| this.width = c; | |
| this.height = e | |
| }; | |
| d = vj.prototype; | |
| d.contains = function(a) { | |
| return a instanceof A ? a.x >= this.left && a.x <= this.left + this.width && a.y >= this.top && a.y <= this.top + this.height : this.left <= a.left && this.left + this.width >= a.left + a.width && this.top <= a.top && this.top + this.height >= a.top + a.height | |
| }; | |
| d.getSize = function() { | |
| return new $f(this.width, this.height) | |
| }; | |
| d.ceil = function() { | |
| this.left = Math.ceil(this.left); | |
| this.top = Math.ceil(this.top); | |
| this.width = Math.ceil(this.width); | |
| this.height = Math.ceil(this.height); | |
| return this | |
| }; | |
| d.floor = function() { | |
| this.left = Math.floor(this.left); | |
| this.top = Math.floor(this.top); | |
| this.width = Math.floor(this.width); | |
| this.height = Math.floor(this.height); | |
| return this | |
| }; | |
| d.round = function() { | |
| this.left = Math.round(this.left); | |
| this.top = Math.round(this.top); | |
| this.width = Math.round(this.width); | |
| this.height = Math.round(this.height); | |
| return this | |
| }; | |
| d.translate = function(a, b) { | |
| a instanceof A ? (this.left += a.x, this.top += a.y) : (this.left += a, v(b) && (this.top += b)); | |
| return this | |
| }; | |
| d.scale = function(a, b) { | |
| var c = v(b) ? b : a; | |
| this.left *= a; | |
| this.width *= a; | |
| this.top *= c; | |
| this.height *= c; | |
| return this | |
| }; | |
| var wj = {}, | |
| xj = function(a, b) { | |
| var c = bg(a); | |
| return c.defaultView && c.defaultView.getComputedStyle && (c = c.defaultView.getComputedStyle(a, null)) ? c[b] || c.getPropertyValue(b) || "" : "" | |
| }, | |
| yj = function(a, b) { | |
| return xj(a, b) || (a.currentStyle ? a.currentStyle[b] : null) || a.style && a.style[b] | |
| }, | |
| zj = function() { | |
| var a = document, | |
| b = a.body; | |
| a = a.documentElement; | |
| return new A(b.scrollLeft || a.scrollLeft, b.scrollTop || a.scrollTop) | |
| }, | |
| Aj = function(a) { | |
| try { | |
| var b = a.getBoundingClientRect() | |
| } catch (c) { | |
| return { | |
| left: 0, | |
| top: 0, | |
| right: 0, | |
| bottom: 0 | |
| } | |
| } | |
| z && a.ownerDocument.body && | |
| (a = a.ownerDocument, b.left -= a.documentElement.clientLeft + a.body.clientLeft, b.top -= a.documentElement.clientTop + a.body.clientTop); | |
| return b | |
| }, | |
| Bj = function(a) { | |
| var b = bg(a), | |
| c = new A(0, 0); | |
| var e = b ? bg(b) : document; | |
| e = !z || 9 <= Number(xd) || "CSS1Compat" == cg(e).document_.compatMode ? e.documentElement : e.body; | |
| if (a == e) return c; | |
| a = Aj(a); | |
| b = jg(cg(b).document_); | |
| c.x = a.left + b.x; | |
| c.y = a.top + b.y; | |
| return c | |
| }, | |
| Dj = function(a) { | |
| var b = Cj; | |
| if ("none" != yj(a, "display")) return b(a); | |
| var c = a.style, | |
| e = c.display, | |
| f = c.visibility, | |
| g = c.position; | |
| c.visibility = | |
| "hidden"; | |
| c.position = "absolute"; | |
| c.display = "inline"; | |
| a = b(a); | |
| c.display = e; | |
| c.position = g; | |
| c.visibility = f; | |
| return a | |
| }, | |
| Cj = function(a) { | |
| var b = a.offsetWidth, | |
| c = a.offsetHeight, | |
| e = kd && !b && !c; | |
| return va(b) && !e || !a.getBoundingClientRect ? new $f(b, c) : (a = Aj(a), new $f(a.right - a.left, a.bottom - a.top)) | |
| }, | |
| Ej = function(a, b) { | |
| a.style.display = b ? "" : "none" | |
| }, | |
| Fj = jd ? "MozUserSelect" : kd || id ? "WebkitUserSelect" : null, | |
| Gj = function(a, b) { | |
| var c = b ? null : a.getElementsByTagName("*"); | |
| if (Fj) { | |
| var e = "none"; | |
| a.style && (a.style[Fj] = e); | |
| if (c) | |
| for (var f = 0, g; g = c[f]; f++) g.style && | |
| (g.style[Fj] = e) | |
| } else if (z || hd) | |
| if (e = "on", a.setAttribute("unselectable", e), c) | |
| for (f = 0; g = c[f]; f++) g.setAttribute("unselectable", e) | |
| }, | |
| Hj = { | |
| thin: 2, | |
| medium: 4, | |
| thick: 6 | |
| }, | |
| Ij = function(a, b) { | |
| if ("none" == (a.currentStyle ? a.currentStyle[b + "Style"] : null)) return 0; | |
| var c = a.currentStyle ? a.currentStyle[b + "Width"] : null; | |
| if (c in Hj) var e = Hj[c]; | |
| else if (/^\d+px?$/.test(c)) e = parseInt(c, 10); | |
| else { | |
| e = a.style.left; | |
| var f = a.runtimeStyle.left; | |
| a.runtimeStyle.left = a.currentStyle.left; | |
| a.style.left = c; | |
| c = a.style.pixelLeft; | |
| a.style.left = e; | |
| a.runtimeStyle.left = | |
| f; | |
| e = +c | |
| } | |
| return e | |
| }; | |
| var di = function() {}, | |
| Jj, Kj, Lj = null, | |
| Mj = null, | |
| Nj = null, | |
| Oj = null, | |
| Pj = null, | |
| Qj = function(a, b) { | |
| Lj.style.backgroundColor = a; | |
| Lj.style.borderColor = b | |
| }, | |
| Rj = function(a) { | |
| Lj.setAttribute("data-category", a) | |
| }, | |
| Uj = function(a, b, c, e) { | |
| var f = b.workspace.scale, | |
| g = b.width, | |
| h = b.height; | |
| g *= f; | |
| h *= f; | |
| f = b.getSvgRoot().getBoundingClientRect(); | |
| g = f.left + g / 2; | |
| h = f.top + h; | |
| f = f.top; | |
| e && (f += e); | |
| Mj = Sj(b.workspace).parentNode; | |
| return Tj(a, g, h, g, f, c) | |
| }, | |
| Tj = function(a, b, c, e, f, g) { | |
| Nj = a; | |
| Pj = g ? g : null; | |
| g = a = Lj; | |
| var h = Mj.getBoundingClientRect(); | |
| var m = Dj(Mj); | |
| g = Dj(g); | |
| if (c + | |
| g.height > h.top + m.height) { | |
| var n = e; | |
| var p = f - g.height - 20; | |
| e = !0 | |
| } else n = b, p = c + 20, e = !1; | |
| b = Math.max(h.left, Math.min(n - 8, h.left + m.width)); | |
| n -= g.width / 2; | |
| n = Math.max(h.left, Math.min(n, h.left + m.width - g.width)); | |
| b = Math.max(12, Math.min(b - n, g.width - 12 - 16)); | |
| h = n; | |
| c = e ? f - g.height : c; | |
| f = n; | |
| m = p; | |
| g = (e ? g.height - 1 : 0) - 9; | |
| e = !e; | |
| Kj.style.transform = "translate(" + b + "px," + g + "px) rotate(45deg)"; | |
| Kj.setAttribute("class", e ? "blocklyDropDownArrow arrowTop" : "blocklyDropDownArrow arrowBottom"); | |
| a.style.left = h + "px"; | |
| a.style.top = c + "px"; | |
| a.style.display = | |
| "block"; | |
| a.style.opacity = 1; | |
| a.style.transform = "translate(" + (f - h) + "px," + (m - c) + "px)"; | |
| return e | |
| }, | |
| Vj = function() { | |
| var a = Lj; | |
| a.style.transform = "translate(0px, 0px)"; | |
| a.style.opacity = 0; | |
| Oj = setTimeout(function() { | |
| ei() | |
| }, 250); | |
| Pj && (Pj(), Pj = null) | |
| }, | |
| ei = function() { | |
| if (Nj) { | |
| var a = Lj; | |
| Oj && window.clearTimeout(Oj); | |
| a.style.transform = ""; | |
| a.style.top = ""; | |
| a.style.left = ""; | |
| a.style.display = "none"; | |
| Jj.innerHTML = ""; | |
| Nj = null; | |
| Pj && (Pj(), Pj = null) | |
| } | |
| }; | |
| var Wj = function(a, b) { | |
| this.Blockly_Field$size_ = new $f(48, 32); | |
| this.Blockly_Field_prototype$setValue(a); | |
| this.validator_ = b ? b : null | |
| }, | |
| Xj = null, | |
| Yj = 0; | |
| d = Wj.prototype; | |
| d.name = null; | |
| d.text = ""; | |
| d.Blockly_Field_prototype$sourceBlock = null; | |
| d.Blockly_Field_prototype$visible = !0; | |
| d.argType_ = null; | |
| d.validator_ = null; | |
| d.EDITABLE = !0; | |
| d.init = function() { | |
| if (!this.fieldGroup_) { | |
| this.fieldGroup_ = O("g", {}, null); | |
| this.Blockly_Field_prototype$visible || (this.fieldGroup_.style.display = "none"); | |
| var a = null === this.argType_ || 0 === this.argType_.length ? null : this.argType_.join(" "); | |
| null !== a && (this.Blockly_Field_prototype$sourceBlock.isShadowBlock ? this.Blockly_Field_prototype$sourceBlock.svgGroup.setAttribute("data-argument-type", a) : this.fieldGroup_.setAttribute("data-argument-type", a)); | |
| a = this.getSize(); | |
| this.textElement_ = O("text", { | |
| "class": "blocklyText", | |
| x: this.Blockly_Field_prototype$sourceBlock.RTL ? -a.width / 2 : a.width / 2, | |
| y: a.height / 2 + 1, | |
| "dominant-baseline": "middle", | |
| "text-anchor": "middle" | |
| }, this.fieldGroup_); | |
| this.updateEditable(); | |
| this.Blockly_Field_prototype$sourceBlock.getSvgRoot().appendChild(this.fieldGroup_); | |
| this.mouseUpWrapper_ = N(Zj(this), "mouseup", this, this.Blockly_Field_prototype$onMouseUp_); | |
| this.render(); | |
| this.Blockly_Field$size_.width = 0 | |
| } | |
| }; | |
| d.dispose = function() { | |
| this.mouseUpWrapper_ && (Oh(this.mouseUpWrapper_), this.mouseUpWrapper_ = null); | |
| this.Blockly_Field_prototype$sourceBlock = null; | |
| C(this.fieldGroup_); | |
| this.validator_ = this.textElement_ = this.fieldGroup_ = null | |
| }; | |
| d.updateEditable = function() { | |
| var a = this.fieldGroup_; | |
| this.EDITABLE && a && (Pi(this.Blockly_Field_prototype$sourceBlock) ? (Hi(a, "blocklyEditableText"), ak(a, "blocklyNonEditableText"), this.fieldGroup_.style.cursor = this.CURSOR) : (Hi(a, "blocklyNonEditableText"), ak(a, "blocklyEditableText"), this.fieldGroup_.style.cursor = "")) | |
| }; | |
| d.isVisible = function() { | |
| return this.Blockly_Field_prototype$visible | |
| }; | |
| d.setVisible = function(a) { | |
| if (this.Blockly_Field_prototype$visible != a) { | |
| this.Blockly_Field_prototype$visible = a; | |
| var b = this.getSvgRoot(); | |
| b && (b.style.display = a ? "block" : "none", this.render()) | |
| } | |
| }; | |
| var bk = function(a, b) { | |
| null == a.argType_ && (a.argType_ = []); | |
| a.argType_.push(b) | |
| }; | |
| Wj.prototype.classValidator = function(a) { | |
| return a | |
| }; | |
| var ck = function(a, b) { | |
| var c = a.classValidator(b); | |
| if (null === c) return null; | |
| void 0 !== c && (b = c); | |
| if (c = a.validator_) { | |
| c = c.call(a, b); | |
| if (null === c) return null; | |
| void 0 !== c && (b = c) | |
| } | |
| return b | |
| }; | |
| Wj.prototype.getSvgRoot = function() { | |
| return this.fieldGroup_ | |
| }; | |
| Wj.prototype.render = function() { | |
| if (this.Blockly_Field_prototype$visible && this.textElement_) { | |
| ng(this.textElement_); | |
| var a = document.createTextNode(dk(this)); | |
| this.textElement_.appendChild(a); | |
| ek(this.textElement_); | |
| a = ek(this.textElement_); | |
| this.EDITABLE && (a += 0); | |
| this.arrowWidth_ = 0; | |
| this.positionArrow && (this.arrowWidth_ = this.positionArrow(a), a += this.arrowWidth_); | |
| this.box_ && (a += 0); | |
| this.Blockly_Field$size_.width = a; | |
| a = (this.Blockly_Field$size_.width - this.arrowWidth_) / 2; | |
| this.Blockly_Field_prototype$sourceBlock.RTL && | |
| (a += this.arrowWidth_); | |
| this.Blockly_Field_prototype$sourceBlock.isShadowBlock && !this.positionArrow && (a = this.Blockly_Field_prototype$sourceBlock.RTL ? Math.min(this.Blockly_Field$size_.width - 24, a) : Math.max(24, a)); | |
| this.textElement_.setAttribute("x", a) | |
| } | |
| this.box_ && (this.box_.setAttribute("width", this.Blockly_Field$size_.width), this.box_.setAttribute("height", this.Blockly_Field$size_.height)) | |
| }; | |
| var ek = function(a) { | |
| var b = a.textContent + "\n" + a.className.baseVal, | |
| c; | |
| if (Xj && (c = Xj[b])) return c; | |
| try { | |
| c = a.getComputedTextLength() | |
| } catch (e) { | |
| return 8 * a.textContent.length | |
| } | |
| Xj && (Xj[b] = c); | |
| return c | |
| }, | |
| fk = function() { | |
| Yj++; | |
| Xj || (Xj = {}) | |
| }, | |
| gk = function() { | |
| Yj--; | |
| Yj || (Xj = null) | |
| }; | |
| Wj.prototype.getSize = function() { | |
| this.Blockly_Field$size_.width || this.render(); | |
| return this.Blockly_Field$size_ | |
| }; | |
| var hk = function(a) { | |
| var b = a.getSize(); | |
| return new $f(b.width * a.Blockly_Field_prototype$sourceBlock.workspace.scale, b.height * a.Blockly_Field_prototype$sourceBlock.workspace.scale) | |
| }, | |
| dk = function(a) { | |
| var b = a.text; | |
| if (!b) return "\u00a0"; | |
| 4 < b.length && (b = b.substring(0, 2) + "\u2026"); | |
| b = b.replace(/\s/g, "\u00a0"); | |
| a.Blockly_Field_prototype$sourceBlock.RTL && (b += "\u200f"); | |
| return b | |
| }; | |
| d = Wj.prototype; | |
| d.Blockly_Field_prototype$getText = function() { | |
| return this.text | |
| }; | |
| d.Blockly_Field_prototype$setText = function(a) { | |
| null !== a && (a = String(a), a !== this.text && (this.text = a, this.Blockly_Field$size_.width = 0, this.Blockly_Field_prototype$sourceBlock && this.Blockly_Field_prototype$sourceBlock.rendered && (this.Blockly_Field_prototype$sourceBlock.render(), ik(this.Blockly_Field_prototype$sourceBlock)))) | |
| }; | |
| d.getValue = function() { | |
| return this.Blockly_Field_prototype$getText() | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| if (null !== a) { | |
| var b = this.getValue(); | |
| b != a && (this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, b, a)), this.Blockly_Field_prototype$setText(a)) | |
| } | |
| }; | |
| d.Blockly_Field_prototype$onMouseUp_ = function(a) { | |
| if (!od && !pd || wd("537.51.2") || 0 === a.layerX || 0 === a.layerY) Ai(a) || Ji(this.Blockly_Field_prototype$sourceBlock.workspace) || Pi(this.Blockly_Field_prototype$sourceBlock) && this.showEditor() | |
| }; | |
| d.Blockly_Field_prototype$setTooltip = function() {}; | |
| var Zj = function(a) { | |
| for (var b = 0, c = 0, e; e = a.Blockly_Field_prototype$sourceBlock.inputList[c]; c++) b += e.fieldRow.length; | |
| return 1 >= b ? a.Blockly_Field_prototype$sourceBlock.getSvgRoot() : a.getSvgRoot() | |
| }; | |
| var Hi = function(a, b) { | |
| var c = a.getAttribute("class") || ""; | |
| if (-1 != (" " + c + " ").indexOf(" " + b + " ")) return !1; | |
| c && (c += " "); | |
| a.setAttribute("class", c + b); | |
| return !0 | |
| }, | |
| ak = function(a, b) { | |
| var c = a.getAttribute("class"); | |
| if (-1 == (" " + c + " ").indexOf(" " + b + " ")) return !1; | |
| c = c.split(/\s+/); | |
| for (var e = 0; e < c.length; e++) c[e] && c[e] != b || (c.splice(e, 1), e--); | |
| c.length ? a.setAttribute("class", c.join(" ")) : a.removeAttribute("class"); | |
| return !0 | |
| }, | |
| jk = function(a) { | |
| a.preventDefault(); | |
| a.stopPropagation() | |
| }, | |
| Bi = function(a) { | |
| return "textarea" == a.target.type || | |
| "text" == a.target.type || "number" == a.target.type || "email" == a.target.type || "password" == a.target.type || "search" == a.target.type || "tel" == a.target.type || "url" == a.target.type || a.target.isContentEditable | |
| }, | |
| nk = function(a) { | |
| var b = new A(0, 0), | |
| c = a.getAttribute("x"); | |
| c && (b.x = parseInt(c, 10)); | |
| if (c = a.getAttribute("y")) b.y = parseInt(c, 10); | |
| if (c = (c = a.getAttribute("transform")) && c.match(kk)) b.x += parseFloat(c[1]), c[3] && (b.y += parseFloat(c[3])); | |
| (a = a.getAttribute("style")) && -1 < a.indexOf("translate") && ((c = a.match(lk)) || (c = a.match(mk)), | |
| c && (b.x += parseFloat(c[1]), c[3] && (b.y += parseFloat(c[3])))); | |
| return b | |
| }, | |
| pk = function(a) { | |
| for (var b = 0, c = 0, e; a;) { | |
| var f = nk(a); | |
| e = 1; | |
| var g = a.getAttribute("transform"); | |
| g && (g = g.match(ok)) && g[1] && (e = parseFloat(g[1])); | |
| b = b * e + f.x; | |
| c = c * e + f.y; | |
| if (-1 != (" " + (a.getAttribute("class") || "") + " ").indexOf(" injectionDiv ")) break; | |
| a = a.parentNode | |
| } | |
| return new A(b, c) | |
| }, | |
| kk = /translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*\))?/, | |
| ok = /scale\(\s*([-+\d.e]+)\s*\)/, | |
| mk = /transform:\s*translate3d\(\s*([-+\d.e]+)px([ ,]\s*([-+\d.e]+)\s*)px([ ,]\s*([-+\d.e]+)\s*)px\)?/, | |
| lk = /transform:\s*translate\(\s*([-+\d.e]+)px([ ,]\s*([-+\d.e]+)\s*)px\)?/, | |
| O = function(a, b, c) { | |
| a = document.createElementNS("http://www.w3.org/2000/svg", a); | |
| for (var e in b) a.setAttribute(e, b[e]); | |
| document.body.runtimeStyle && (a.runtimeStyle = a.currentStyle = a.style); | |
| c && c.appendChild(a); | |
| return a | |
| }, | |
| Ai = function(a) { | |
| return a.ctrlKey && md ? !0 : 2 == a.button | |
| }, | |
| qk = function(a, b, c) { | |
| var e = b.createSVGPoint(); | |
| e.x = a.clientX; | |
| e.y = a.clientY; | |
| c || (c = b.getScreenCTM().inverse()); | |
| return e.matrixTransform(c) | |
| }, | |
| rk = function(a) { | |
| return a.length ? | |
| a.reduce(function(a, c) { | |
| return a.length < c.length ? a : c | |
| }).length : 0 | |
| }, | |
| sk = function(a, b) { | |
| if (!a.length) return 0; | |
| if (1 == a.length) return a[0].length; | |
| for (var c = 0, e = b || rk(a), f = 0; f < e; f++) { | |
| for (var g = a[0][f], h = 1; h < a.length; h++) | |
| if (g != a[h][f]) return c; | |
| " " == g && (c = f + 1) | |
| } | |
| for (h = 1; h < a.length; h++) | |
| if ((g = a[h][f]) && " " != g) return c; | |
| return e | |
| }, | |
| tk = function(a, b) { | |
| if (!a.length) return 0; | |
| if (1 == a.length) return a[0].length; | |
| for (var c = 0, e = b || rk(a), f = 0; f < e; f++) { | |
| for (var g = a[0].substr(-f - 1, 1), h = 1; h < a.length; h++) | |
| if (g != a[h].substr(-f - 1, 1)) return c; | |
| " " == g && (c = f + 1) | |
| } | |
| for (h = 1; h < a.length; h++) | |
| if ((g = a[h].charAt(a[h].length - f - 1)) && " " != g) return c; | |
| return e | |
| }, | |
| vk = function(a) { | |
| if (!u(a)) return a; | |
| a = uk(a, !1); | |
| return a.length ? a[0] : "" | |
| }, | |
| uk = function(a, b) { | |
| var c = [], | |
| e = a.split(""); | |
| e.push(""); | |
| for (var f = 0, g = [], h = null, m = 0; m < e.length; m++) { | |
| var n = e[m]; | |
| 0 == f ? "%" == n ? ((n = g.join("")) && c.push(n), g.length = 0, f = 1) : g.push(n) : 1 == f ? "%" == n ? (g.push(n), f = 0) : b && "0" <= n && "9" >= n ? (f = 2, h = n, (n = g.join("")) && c.push(n), g.length = 0) : "{" == n ? f = 3 : (g.push("%", n), f = 0) : 2 == f ? "0" <= n && "9" >= n ? h += n : (c.push(parseInt(h, | |
| 10)), m--, f = 0) : 3 == f && ("" == n ? (g.splice(0, 0, "%{"), m--, f = 0) : "}" != n ? g.push(n) : (f = g.join(""), /[a-zA-Z][a-zA-Z0-9_]*/.test(f) ? (n = f.toUpperCase(), (n = 0 == n.lastIndexOf("BKY_", 0) ? n.substring(4) : null) && n in M ? (f = M[n], f = u(f) ? uk(f, !0) : b ? String(f) : f, c = c.concat(f)) : c.push("%{" + f + "}")) : c.push("%{" + f + "}"), f = g.length = 0)) | |
| }(n = g.join("")) && c.push(n); | |
| e = []; | |
| for (m = g.length = 0; m < c.length; ++m) "string" == typeof c[m] ? g.push(c[m]) : ((n = g.join("")) && e.push(n), g.length = 0, e.push(c[m])); | |
| (n = g.join("")) && e.push(n); | |
| g.length = 0; | |
| return e | |
| }, | |
| Th = function() { | |
| for (var a = wk.length, b = [], c = 0; 20 > c; c++) b[c] = wk.charAt(Math.random() * a); | |
| return b.join("") | |
| }, | |
| wk = "!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", | |
| xk = function(a, b, c) { | |
| for (var e = [0], f = [], g = 0; g < a.length; g++) e[e.length - 1] += a[g].length, !0 === b[g] ? (e.push(0), f.push(a[g].charAt(a[g].length - 1))) : !1 === b[g] && e[e.length - 1]++; | |
| a = Math.max.apply(Math, e); | |
| for (g = b = 0; g < e.length; g++) b -= 2 * Math.pow(Math.abs(c - e[g]), 1.5), b -= Math.pow(a - e[g], 1.5), -1 != ".?!".indexOf(f[g]) ? b += | |
| c / 3 : -1 != ",;)]}".indexOf(f[g]) && (b += c / 4); | |
| 1 < e.length && e[e.length - 1] <= e[e.length - 2] && (b += .5); | |
| return b | |
| }, | |
| yk = function(a, b, c) { | |
| for (var e = xk(a, b, c), f, g = 0; g < b.length - 1; g++) | |
| if (b[g] != b[g + 1]) { | |
| var h = [].concat(b); | |
| h[g] = !h[g]; | |
| h[g + 1] = !h[g + 1]; | |
| var m = xk(a, h, c); | |
| m > e && (e = m, f = h) | |
| } return f ? yk(a, f, c) : b | |
| }, | |
| Ak = function() { | |
| if (void 0 !== zk) return zk; | |
| if (!q.getComputedStyle) return !1; | |
| var a = document.createElement("p"), | |
| b = "none", | |
| c = { | |
| webkitTransform: "-webkit-transform", | |
| OTransform: "-o-transform", | |
| msTransform: "-ms-transform", | |
| MozTransform: "-moz-transform", | |
| transform: "transform" | |
| }; | |
| document.body.insertBefore(a, null); | |
| for (var e in c) | |
| if (void 0 !== a.style[e]) { | |
| a.style[e] = "translate3d(1px,1px,1px)"; | |
| b = q.getComputedStyle(a); | |
| if (!b) return document.body.removeChild(a), !1; | |
| b = b.getPropertyValue(c[e]) | |
| } document.body.removeChild(a); | |
| return zk = "none" !== b | |
| }, | |
| zk, Bk = function(a, b) { | |
| var c = b.nextSibling, | |
| e = b.parentNode; | |
| if (!e) throw "Reference node has no parent."; | |
| c ? e.insertBefore(a, c) : e.appendChild(a) | |
| }, | |
| Ck = function(a, b) { | |
| a.style.transform = b; | |
| a.style["-webkit-transform"] = b | |
| }; | |
| var Dk = function(a, b, c) { | |
| Dk.superClass_.constructor.call(this, a, b); | |
| this.restrictor_ = c ? c : null; | |
| bk(this, "text"); | |
| this.Blockly_FieldTextInput$arrowSize_ = this.Blockly_FieldTextInput$arrowY_ = 0 | |
| }, | |
| Ek; | |
| w(Dk, Wj); | |
| d = Dk.prototype; | |
| d.CURSOR = "text"; | |
| d.spellcheck_ = !0; | |
| d.init = function() { | |
| Dk.superClass_.init.call(this); | |
| this.Blockly_Field_prototype$sourceBlock.isShadowBlock || (this.box_ = O("rect", { | |
| rx: 4, | |
| ry: 4, | |
| x: 0, | |
| y: 0, | |
| width: this.Blockly_Field$size_.width, | |
| height: this.Blockly_Field$size_.height, | |
| fill: I.textField, | |
| stroke: this.Blockly_Field_prototype$sourceBlock.colourTertiary_ | |
| }), this.fieldGroup_.insertBefore(this.box_, this.textElement_)) | |
| }; | |
| d.dispose = function() { | |
| Fk(this); | |
| Dk.superClass_.dispose.call(this) | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| if (null !== a) { | |
| if (this.Blockly_Field_prototype$sourceBlock) { | |
| var b = ck(this, a); | |
| null !== b && (a = b) | |
| } | |
| Wj.prototype.Blockly_Field_prototype$setValue.call(this, a) | |
| } | |
| }; | |
| d.Blockly_Field_prototype$setText = function(a) { | |
| null !== a && (a = String(a), a !== this.text && (this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.text, a)), Wj.prototype.Blockly_Field_prototype$setText.call(this, a))) | |
| }; | |
| d.showEditor = function(a, b, c, e) { | |
| this.workspace_ = this.Blockly_Field_prototype$sourceBlock.workspace; | |
| a = a || !1; | |
| var f = b || !1; | |
| Gk(this, this.Blockly_Field_prototype$sourceBlock.RTL, Hk(this), Ik(), .25); | |
| b = Jk; | |
| b.className += " fieldTextInput"; | |
| var g = B("INPUT", "blocklyHtmlInput"); | |
| g.setAttribute("spellcheck", this.spellcheck_); | |
| f && g.setAttribute("readonly", "true"); | |
| Ek = g; | |
| b.appendChild(g); | |
| c && (this.Blockly_Field_prototype$sourceBlock.RTL ? g.style.paddingLeft = this.Blockly_FieldTextInput$arrowSize_ + 0 + "px" : g.style.paddingRight = | |
| this.Blockly_FieldTextInput$arrowSize_ + 0 + "px", c = B("IMG", "blocklyTextDropDownArrow"), c.setAttribute("src", K.options.pathToMedia + "dropdown-arrow-dark.svg"), c.style.width = this.Blockly_FieldTextInput$arrowSize_ + "px", c.style.height = this.Blockly_FieldTextInput$arrowSize_ + "px", c.style.top = this.Blockly_FieldTextInput$arrowY_ + "px", c.style.cursor = "pointer", this.Blockly_Field_prototype$sourceBlock.RTL ? c.style.left = "11px" : c.style.right = "11px", e && (g.dropDownArrowMouseWrapper_ = T(c, "mousedown", this, e)), b.appendChild(c)); | |
| g.value = g.defaultValue = this.text; | |
| g.oldValue_ = null; | |
| Kk(this); | |
| this.resizeEditor(); | |
| a || (g.focus(), g.select(), g.setSelectionRange(0, 99999)); | |
| g.onKeyDownWrapper_ = N(g, "keydown", this, this.onHtmlInputKeyDown_); | |
| g.onKeyUpWrapper_ = N(g, "keyup", this, this.onHtmlInputChange_); | |
| g.onKeyPressWrapper_ = N(g, "keypress", this, this.onHtmlInputChange_); | |
| g.onInputWrapper_ = T(g, "input", this, this.onHtmlInputChange_); | |
| g.onWorkspaceChangeWrapper_ = this.resizeEditor.bind(this); | |
| this.workspace_.addChangeListener(g.onWorkspaceChangeWrapper_); | |
| b.style.transition += ",padding 0.25s,width 0.25s,height 0.25s,margin-left 0.25s"; | |
| b.style.transition = "box-shadow 0.25s"; | |
| g.style.transition = "font-size 0.25s"; | |
| g.style.fontSize = "14pt"; | |
| b.style.boxShadow = "0px 0px 0px 4px " + I.fieldShadow | |
| }; | |
| d.onHtmlInputKeyDown_ = function(a) { | |
| var b = Ek; | |
| 13 == a.keyCode ? L() : 27 == a.keyCode ? (b.value = b.defaultValue, L()) : 9 == a.keyCode && (L(), this.Blockly_Field_prototype$sourceBlock.tab(this, !a.shiftKey), a.preventDefault()) | |
| }; | |
| var Lk = [97, 99, 118, 120]; | |
| Dk.prototype.onHtmlInputChange_ = function(a) { | |
| if ("keypress" === a.type && this.restrictor_) { | |
| var b = !1; | |
| if (jd) { | |
| var c = a.charCode; | |
| if (32 > c || 127 == c) b = !0; | |
| else if (a.metaKey || a.ctrlKey) b = -1 < Lk.indexOf(c) | |
| } else c = a.keyCode; | |
| c = String.fromCharCode(c); | |
| if (!b && !this.restrictor_.test(c) && a.preventDefault) { | |
| a.preventDefault(); | |
| return | |
| } | |
| } | |
| a = Ek; | |
| b = a.value; | |
| b !== a.oldValue_ ? (a.oldValue_ = b, this.Blockly_Field_prototype$setText(b), Kk(this)) : kd && this.Blockly_Field_prototype$sourceBlock.render(); | |
| this.resizeEditor() | |
| }; | |
| var Kk = function(a) { | |
| var b = !0, | |
| c = Ek; | |
| a.Blockly_Field_prototype$sourceBlock && (b = ck(a, c.value)); | |
| null === b ? Hi(c, "blocklyInvalidInput") : ak(c, "blocklyInvalidInput") | |
| }; | |
| Dk.prototype.resizeEditor = function() { | |
| var a = this.Blockly_Field_prototype$sourceBlock.workspace.scale, | |
| b = Jk; | |
| var c = String(Ek.style.fontSize); | |
| var e = Ek.style.fontFamily, | |
| f = Ek.style.fontWeight, | |
| g = Ek.value, | |
| h = document.createElement("canvas").getContext("2d"); | |
| h.font = f + " " + c + " " + e; | |
| c = (h.measureText(g).width + 45) * a; | |
| c = Math.max(c, 52 * a); | |
| c = Math.min(c, 96 * a); | |
| b.style.width = c / a + 1 + "px"; | |
| b.style.height = "41px"; | |
| b.style.transform = "scale(" + a + ")"; | |
| b.style.marginLeft = -.5 * (c - Mk(this.Blockly_Field_prototype$sourceBlock).width * a) + "px"; | |
| e = (2 == this.Blockly_Field_prototype$sourceBlock.outputShape_ ? 16 : 4) + .5; | |
| b.style.borderRadius = e + "px"; | |
| Ek.style.borderRadius = e + "px"; | |
| b.style.borderColor = this.Blockly_Field_prototype$sourceBlock.colourTertiary_; | |
| e = Bj(Zj(this)); | |
| e.x -= a / 2; | |
| e.y -= a / 2; | |
| this.Blockly_Field_prototype$sourceBlock.RTL && (e.x += c, e.x -= b.offsetWidth * a, e.x += 1 * a); | |
| e.y += 1 * a; | |
| jd && Jk.style.top && (e.x += 2 * a, e.y += 1 * a); | |
| kd && (e.y -= 1 * a); | |
| b.style.left = e.x + "px"; | |
| b.style.top = e.y + "px" | |
| }; | |
| var Hk = function(a) { | |
| return function() { | |
| var b = Jk, | |
| c = Ek, | |
| e = c.value; | |
| if (a.Blockly_Field_prototype$sourceBlock) | |
| if (e = ck(a, e), null === e) e = c.defaultValue; | |
| else if (a.onFinishEditing_) a.onFinishEditing_(e); | |
| a.Blockly_Field_prototype$setText(e); | |
| a.Blockly_Field_prototype$sourceBlock.rendered && a.render(); | |
| Oh(c.onKeyDownWrapper_); | |
| Oh(c.onKeyUpWrapper_); | |
| Oh(c.onKeyPressWrapper_); | |
| Oh(c.onInputWrapper_); | |
| c.dropDownArrowMouseWrapper_ && Oh(c.dropDownArrowMouseWrapper_); | |
| a.workspace_.removeChangeListener(c.onWorkspaceChangeWrapper_); | |
| ci(!1); | |
| c.style.fontSize = "12pt"; | |
| b.style.boxShadow = ""; | |
| a.Blockly_Field_prototype$sourceBlock && (c = Mk(a.Blockly_Field_prototype$sourceBlock), b.style.width = c.width + 1 + "px", b.style.height = c.height + 1 + "px"); | |
| b.style.marginLeft = 0 | |
| } | |
| }, | |
| Ik = function() { | |
| return function() { | |
| var a = Jk.style; | |
| a.width = "auto"; | |
| a.height = "auto"; | |
| a.fontSize = ""; | |
| Jk.className = "blocklyWidgetDiv"; | |
| Jk.removeAttribute("style"); | |
| Ek.style.transition = ""; | |
| Ek = null | |
| } | |
| }; | |
| var Nk = function(a, b) { | |
| this.symbol_ = O("tspan", {}, null); | |
| this.symbol_.appendChild(document.createTextNode("\u00b0")); | |
| a = a && !isNaN(a) ? String(a) : "0"; | |
| Nk.superClass_.constructor.call(this, a, b); | |
| bk(this, "angle") | |
| }; | |
| w(Nk, Dk); | |
| Nk.prototype.showEditor = function() { | |
| Nk.superClass_.showEditor.call(this, ld || nd || pd); | |
| ei(); | |
| Jj.innerHTML = ""; | |
| var a = O("svg", { | |
| xmlns: "http://www.w3.org/2000/svg", | |
| "xmlns:html": "http://www.w3.org/1999/xhtml", | |
| "xmlns:xlink": "http://www.w3.org/1999/xlink", | |
| version: "1.1", | |
| height: "100px", | |
| width: "100px" | |
| }, Jj); | |
| O("circle", { | |
| cx: 50, | |
| cy: 50, | |
| r: 49, | |
| "class": "blocklyAngleCircle" | |
| }, a); | |
| this.gauge_ = O("path", { | |
| "class": "blocklyAngleGauge" | |
| }, a); | |
| this.line_ = O("line", { | |
| x1: 50, | |
| y1: 50, | |
| "class": "blocklyAngleLine" | |
| }, a); | |
| for (var b = 0; 360 > b; b += 15) O("line", { | |
| x1: 99, | |
| y1: 50, | |
| x2: 99 - (0 == b % 45 ? 10 : 5), | |
| y2: 50, | |
| "class": "blocklyAngleMarks", | |
| transform: "rotate(" + b + ",50,50)" | |
| }, a); | |
| Qj(this.Blockly_Field_prototype$sourceBlock.parentBlock.colour_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_); | |
| Rj(this.Blockly_Field_prototype$sourceBlock.parentBlock.category_); | |
| Uj(this, this.Blockly_Field_prototype$sourceBlock); | |
| T(a, "click", this, function() { | |
| L(); | |
| Vj(); | |
| Oh(this.moveWrapper_) | |
| }); | |
| this.moveWrapper_ = T(a, "mousemove", this, this.Blockly_FieldAngle_prototype$onMouseMove); | |
| Ok(this) | |
| }; | |
| Nk.prototype.Blockly_FieldAngle_prototype$onMouseMove = function(a) { | |
| var b = this.gauge_.ownerSVGElement.getBoundingClientRect(), | |
| c = a.clientX - b.left - 50; | |
| a = a.clientY - b.top - 50; | |
| b = Math.atan(-a / c); | |
| isNaN(b) || (b = 180 * b / Math.PI, 0 > c ? b += 180 : 0 < a && (b += 360), b = 15 * Math.round((450 - b) / 15), b = ck(this, String(b)), Ek.value = b, this.Blockly_Field_prototype$setValue(b), Kk(this), this.resizeEditor()) | |
| }; | |
| Nk.prototype.Blockly_Field_prototype$setText = function(a) { | |
| Nk.superClass_.Blockly_Field_prototype$setText.call(this, a); | |
| this.textElement_ && (Ok(this), this.Blockly_Field_prototype$sourceBlock.RTL ? this.textElement_.insertBefore(this.symbol_, this.textElement_.firstChild) : this.textElement_.appendChild(this.symbol_), this.Blockly_Field$size_.width = 0) | |
| }; | |
| var Ok = function(a) { | |
| if (a.gauge_) { | |
| var b = (Number(a.Blockly_Field_prototype$getText()) + 90) * Math.PI / 180, | |
| c = ["M ", 50, ",", 50], | |
| e = 50, | |
| f = 50; | |
| if (!isNaN(b)) { | |
| var g = 90 * Math.PI / 180, | |
| h = 49 * Math.cos(g), | |
| m = -49 * Math.sin(g); | |
| b = 2 * g - b; | |
| e += 49 * Math.cos(b); | |
| f -= 49 * Math.sin(b); | |
| c.push(" l ", h, ",", m, " A ", 49, ",", 49, " 0 ", 1 - Math.abs(Math.floor((b - g) / Math.PI) % 2), " ", Number(!0), " ", e, ",", f, " z") | |
| } | |
| a.gauge_.setAttribute("d", c.join("")); | |
| a.line_.setAttribute("x2", e); | |
| a.line_.setAttribute("y2", f) | |
| } | |
| }; | |
| Nk.prototype.classValidator = function(a) { | |
| if (null === a) return null; | |
| a = parseFloat(a || 0); | |
| if (isNaN(a)) return null; | |
| a %= 360; | |
| 0 > a && (a += 360); | |
| 180 < a && (a -= 360); | |
| return String(a) | |
| }; | |
| var Pk = function(a, b) { | |
| Pk.superClass_.constructor.call(this, "", b); | |
| this.Blockly_Field_prototype$setValue(a); | |
| bk(this, "checkbox") | |
| }; | |
| w(Pk, Wj); | |
| d = Pk.prototype; | |
| d.CURSOR = "default"; | |
| d.init = function() { | |
| this.fieldGroup_ || (Pk.superClass_.init.call(this), this.checkElement_ = O("text", { | |
| "class": "blocklyText blocklyCheckbox", | |
| x: -3, | |
| y: 14 | |
| }, this.fieldGroup_), this.checkElement_.appendChild(document.createTextNode("\u2713")), this.checkElement_.style.display = this.state_ ? "block" : "none") | |
| }; | |
| d.getValue = function() { | |
| return String(this.state_).toUpperCase() | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| a = "string" == typeof a ? "TRUE" == a.toUpperCase() : !!a; | |
| this.state_ !== a && (this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.state_, String(a))), this.state_ = a, this.checkElement_ && (this.checkElement_.style.display = a ? "block" : "none")) | |
| }; | |
| d.showEditor = function() { | |
| var a = !this.state_; | |
| this.Blockly_Field_prototype$sourceBlock && (a = ck(this, String(a))); | |
| null !== a && this.Blockly_Field_prototype$setValue(String(a).toUpperCase()) | |
| }; | |
| var Qk = { | |
| 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" | |
| }; | |
| var Vk = function(a) { | |
| var b = {}; | |
| a = String(a); | |
| var c = "#" == a.charAt(0) ? a : "#" + a; | |
| if (Rk.test(c)) return b.hex = Sk(c), b.type = "hex", b; | |
| a: { | |
| var e = a.match(Tk); | |
| if (e) { | |
| c = Number(e[1]); | |
| var f = Number(e[2]); | |
| e = Number(e[3]); | |
| if (0 <= c && 255 >= c && 0 <= f && 255 >= f && 0 <= e && 255 >= e) { | |
| c = [c, f, e]; | |
| break a | |
| } | |
| } | |
| c = [] | |
| } | |
| if (c.length) return b.hex = Uk(c), b.type = "rgb", b; | |
| if (Qk && (c = Qk[a.toLowerCase()])) return b.hex = c, b.type = "named", b; | |
| throw Error("v`" + a); | |
| }, | |
| Wk = /#(.)(.)(.)/, | |
| Sk = function(a) { | |
| if (!Rk.test(a)) throw Error("w`" + a); | |
| 4 == a.length && (a = a.replace(Wk, "#$1$1$2$2$3$3")); | |
| return a.toLowerCase() | |
| }, | |
| Xk = function(a) { | |
| a = Sk(a); | |
| return [parseInt(a.substr(1, 2), 16), parseInt(a.substr(3, 2), 16), parseInt(a.substr(5, 2), 16)] | |
| }, | |
| Uk = function(a) { | |
| var b = a[0], | |
| c = a[1]; | |
| a = a[2]; | |
| b = Number(b); | |
| c = Number(c); | |
| a = Number(a); | |
| if (b != (b & 255) || c != (c & 255) || a != (a & 255)) throw Error("x`" + b + "`" + c + "`" + a); | |
| b = Yk(b.toString(16)); | |
| c = Yk(c.toString(16)); | |
| a = Yk(a.toString(16)); | |
| return "#" + b + c + a | |
| }, | |
| Rk = /^#(?:[0-9a-f]{3}){1,2}$/i, | |
| Tk = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i, | |
| Yk = function(a) { | |
| return 1 == a.length ? | |
| "0" + a : a | |
| }, | |
| Zk = function(a) { | |
| var b = 0, | |
| c = 0, | |
| e = 0, | |
| f = Math.floor(a / 60), | |
| g = a / 60 - f; | |
| a = 165.75 * .55; | |
| var h = 165.75 * (1 - .45 * g); | |
| g = 165.75 * (1 - .45 * (1 - g)); | |
| switch (f) { | |
| case 1: | |
| b = h; | |
| c = 165.75; | |
| e = a; | |
| break; | |
| case 2: | |
| b = a; | |
| c = 165.75; | |
| e = g; | |
| break; | |
| case 3: | |
| b = a; | |
| c = h; | |
| e = 165.75; | |
| break; | |
| case 4: | |
| b = g; | |
| c = a; | |
| e = 165.75; | |
| break; | |
| case 5: | |
| b = 165.75; | |
| c = a; | |
| e = h; | |
| break; | |
| case 6: | |
| case 0: | |
| b = 165.75, c = g, e = a | |
| } | |
| return [Math.floor(b), Math.floor(c), Math.floor(e)] | |
| }, | |
| $k = function(a, b) { | |
| var c = [0, 0, 0]; | |
| b = Mb(b, 1); | |
| return [Math.round(b * c[0] + (1 - b) * a[0]), Math.round(b * c[1] + (1 - b) * a[1]), Math.round(b * c[2] + (1 - b) * | |
| a[2])] | |
| }; | |
| var al = function() {}; | |
| xa(al); | |
| al.prototype.nextId_ = 0; | |
| var cl = function(a) { | |
| le.call(this); | |
| this.goog_ui_Component$dom_ = a || cg(); | |
| this.rightToLeft_ = bl; | |
| this.goog_ui_Component$id_ = null; | |
| this.inDocument_ = !1; | |
| this.goog_ui_Component$element_ = null; | |
| this.googUiComponentHandler_ = void 0; | |
| this.childIndex_ = this.children_ = this.goog_ui_Component$parent_ = this.model_ = null; | |
| this.wasDecorated_ = !1 | |
| }; | |
| w(cl, le); | |
| cl.prototype.idGenerator_ = al.getInstance(); | |
| var bl = null, | |
| dl = function(a, b) { | |
| switch (a) { | |
| case 1: | |
| return b ? "disable" : "enable"; | |
| case 2: | |
| return b ? "highlight" : "unhighlight"; | |
| case 4: | |
| return b ? "activate" : "deactivate"; | |
| case 8: | |
| return b ? "select" : "unselect"; | |
| case 16: | |
| return b ? "check" : "uncheck"; | |
| case 32: | |
| return b ? "focus" : "blur"; | |
| case 64: | |
| return b ? "open" : "close" | |
| } | |
| throw Error("y"); | |
| }; | |
| cl.prototype.getId = function() { | |
| return this.goog_ui_Component$id_ || (this.goog_ui_Component$id_ = ":" + (this.idGenerator_.nextId_++).toString(36)) | |
| }; | |
| var el = function(a, b) { | |
| if (a.goog_ui_Component$parent_ && a.goog_ui_Component$parent_.childIndex_) { | |
| var c = a.goog_ui_Component$parent_.childIndex_, | |
| e = a.goog_ui_Component$id_; | |
| e in c && delete c[e]; | |
| c = a.goog_ui_Component$parent_.childIndex_; | |
| if (null !== c && b in c) throw Error("d`" + b); | |
| c[b] = a | |
| } | |
| a.goog_ui_Component$id_ = b | |
| }; | |
| cl.prototype.getElement = function() { | |
| return this.goog_ui_Component$element_ | |
| }; | |
| var fl = function(a) { | |
| a.googUiComponentHandler_ || (a.googUiComponentHandler_ = new Lg(a)); | |
| return a.googUiComponentHandler_ | |
| }, | |
| hl = function(a, b) { | |
| if (a == b) throw Error("z"); | |
| if (b && a.goog_ui_Component$parent_ && a.goog_ui_Component$id_ && gl(a.goog_ui_Component$parent_, a.goog_ui_Component$id_) && a.goog_ui_Component$parent_ != b) throw Error("z"); | |
| a.goog_ui_Component$parent_ = b; | |
| cl.superClass_.setParentEventTarget.call(a, b) | |
| }; | |
| cl.prototype.goog_ui_Component_prototype$getParent = function() { | |
| return this.goog_ui_Component$parent_ | |
| }; | |
| cl.prototype.setParentEventTarget = function(a) { | |
| if (this.goog_ui_Component$parent_ && this.goog_ui_Component$parent_ != a) throw Error("A"); | |
| cl.superClass_.setParentEventTarget.call(this, a) | |
| }; | |
| cl.prototype.createDom = function() { | |
| this.goog_ui_Component$element_ = zg(this.goog_ui_Component$dom_, "DIV") | |
| }; | |
| cl.prototype.render = function(a) { | |
| il(this, a) | |
| }; | |
| var il = function(a, b, c) { | |
| if (a.inDocument_) throw Error("B"); | |
| a.goog_ui_Component$element_ || a.createDom(); | |
| b ? b.insertBefore(a.goog_ui_Component$element_, c || null) : a.goog_ui_Component$dom_.document_.body.appendChild(a.goog_ui_Component$element_); | |
| a.goog_ui_Component$parent_ && !a.goog_ui_Component$parent_.inDocument_ || a.enterDocument() | |
| }; | |
| d = cl.prototype; | |
| d.goog_ui_Component_prototype$decorate = function(a) { | |
| if (this.inDocument_) throw Error("B"); | |
| if (a && this.goog_ui_Component_prototype$canDecorate(a)) { | |
| this.wasDecorated_ = !0; | |
| var b = bg(a); | |
| this.goog_ui_Component$dom_ && this.goog_ui_Component$dom_.document_ == b || (this.goog_ui_Component$dom_ = cg(a)); | |
| this.decorateInternal(a); | |
| this.enterDocument() | |
| } else throw Error("C"); | |
| }; | |
| d.goog_ui_Component_prototype$canDecorate = function() { | |
| return !0 | |
| }; | |
| d.decorateInternal = function(a) { | |
| this.goog_ui_Component$element_ = a | |
| }; | |
| d.enterDocument = function() { | |
| this.inDocument_ = !0; | |
| jl(this, function(a) { | |
| !a.inDocument_ && a.getElement() && a.enterDocument() | |
| }) | |
| }; | |
| d.exitDocument = function() { | |
| jl(this, function(a) { | |
| a.inDocument_ && a.exitDocument() | |
| }); | |
| this.googUiComponentHandler_ && Ng(this.googUiComponentHandler_); | |
| this.inDocument_ = !1 | |
| }; | |
| d.disposeInternal = function() { | |
| this.inDocument_ && this.exitDocument(); | |
| this.googUiComponentHandler_ && (this.googUiComponentHandler_.dispose(), delete this.googUiComponentHandler_); | |
| jl(this, function(a) { | |
| a.dispose() | |
| }); | |
| !this.wasDecorated_ && this.goog_ui_Component$element_ && C(this.goog_ui_Component$element_); | |
| this.goog_ui_Component$parent_ = this.model_ = this.goog_ui_Component$element_ = this.childIndex_ = this.children_ = null; | |
| cl.superClass_.disposeInternal.call(this) | |
| }; | |
| d.goog_ui_Component_prototype$addChildAt = function(a, b, c) { | |
| if (a.inDocument_ && (c || !this.inDocument_)) throw Error("B"); | |
| if (0 > b || b > kl(this)) throw Error("D"); | |
| this.childIndex_ && this.children_ || (this.childIndex_ = {}, this.children_ = []); | |
| if (a.goog_ui_Component_prototype$getParent() == this) { | |
| var e = a.getId(); | |
| this.childIndex_[e] = a; | |
| eb(this.children_, a) | |
| } else { | |
| e = this.childIndex_; | |
| var f = a.getId(); | |
| if (null !== e && f in e) throw Error("d`" + f); | |
| e[f] = a | |
| } | |
| hl(a, this); | |
| jb(this.children_, b, 0, a); | |
| a.inDocument_ && this.inDocument_ && a.goog_ui_Component_prototype$getParent() == | |
| this ? (c = this.goog_ui_Component_prototype$getContentElement(), b = c.childNodes[b] || null, b != a.getElement() && c.insertBefore(a.getElement(), b)) : c ? (this.goog_ui_Component$element_ || this.createDom(), b = ll(this, b + 1), il(a, this.goog_ui_Component_prototype$getContentElement(), b ? b.goog_ui_Component$element_ : null)) : this.inDocument_ && !a.inDocument_ && a.goog_ui_Component$element_ && a.goog_ui_Component$element_.parentNode && 1 == a.goog_ui_Component$element_.parentNode.nodeType && a.enterDocument() | |
| }; | |
| d.goog_ui_Component_prototype$getContentElement = function() { | |
| return this.goog_ui_Component$element_ | |
| }; | |
| var ml = function(a) { | |
| null == a.rightToLeft_ && (a.rightToLeft_ = "rtl" == yj(a.inDocument_ ? a.goog_ui_Component$element_ : a.goog_ui_Component$dom_.document_.body, "direction")); | |
| return a.rightToLeft_ | |
| }; | |
| cl.prototype.goog_ui_Component_prototype$setRightToLeft = function(a) { | |
| if (this.inDocument_) throw Error("B"); | |
| this.rightToLeft_ = a | |
| }; | |
| var kl = function(a) { | |
| return a.children_ ? a.children_.length : 0 | |
| }, | |
| gl = function(a, b) { | |
| if (a.childIndex_ && b) { | |
| var c = a.childIndex_; | |
| c = (null !== c && b in c ? c[b] : void 0) || null | |
| } else c = null; | |
| return c | |
| }, | |
| ll = function(a, b) { | |
| return a.children_ ? a.children_[b] || null : null | |
| }, | |
| jl = function(a, b, c) { | |
| a.children_ && Ya(a.children_, b, c) | |
| }, | |
| nl = function(a, b) { | |
| return a.children_ && b ? Wa(a.children_, b) : -1 | |
| }; | |
| cl.prototype.removeChild = function(a, b) { | |
| if (a) { | |
| var c = u(a) ? a : a.getId(); | |
| a = gl(this, c); | |
| if (c && a) { | |
| var e = this.childIndex_; | |
| c in e && delete e[c]; | |
| eb(this.children_, a); | |
| b && (a.exitDocument(), a.goog_ui_Component$element_ && C(a.goog_ui_Component$element_)); | |
| hl(a, null) | |
| } | |
| } | |
| if (!a) throw Error("E"); | |
| return a | |
| }; | |
| var pl = function(a, b) { | |
| le.call(this); | |
| a && ol(this, a, b) | |
| }; | |
| w(pl, le); | |
| d = pl.prototype; | |
| d.goog_events_KeyHandler_prototype$element_ = null; | |
| d.keyPressKey_ = null; | |
| d.keyDownKey_ = null; | |
| d.keyUpKey_ = null; | |
| d.lastKey_ = -1; | |
| d.keyCode_ = -1; | |
| d.altKey_ = !1; | |
| var ql = { | |
| 3: 13, | |
| 12: 144, | |
| 63232: 38, | |
| 63233: 40, | |
| 63234: 37, | |
| 63235: 39, | |
| 63236: 112, | |
| 63237: 113, | |
| 63238: 114, | |
| 63239: 115, | |
| 63240: 116, | |
| 63241: 117, | |
| 63242: 118, | |
| 63243: 119, | |
| 63244: 120, | |
| 63245: 121, | |
| 63246: 122, | |
| 63247: 123, | |
| 63248: 44, | |
| 63272: 46, | |
| 63273: 36, | |
| 63275: 35, | |
| 63276: 33, | |
| 63277: 34, | |
| 63289: 144, | |
| 63302: 45 | |
| }, | |
| rl = { | |
| Up: 38, | |
| Down: 40, | |
| Left: 37, | |
| Right: 39, | |
| Enter: 13, | |
| F1: 112, | |
| F2: 113, | |
| F3: 114, | |
| F4: 115, | |
| F5: 116, | |
| F6: 117, | |
| F7: 118, | |
| F8: 119, | |
| F9: 120, | |
| F10: 121, | |
| F11: 122, | |
| F12: 123, | |
| "U+007F": 46, | |
| Home: 36, | |
| End: 35, | |
| PageUp: 33, | |
| PageDown: 34, | |
| Insert: 45 | |
| }, | |
| sl = z || id || kd && wd("525"), | |
| tl = md && jd; | |
| pl.prototype.handleKeyDown_ = function(a) { | |
| if (kd || id) | |
| if (17 == this.lastKey_ && !a.ctrlKey || 18 == this.lastKey_ && !a.altKey || md && 91 == this.lastKey_ && !a.metaKey) this.keyCode_ = this.lastKey_ = -1; - 1 == this.lastKey_ && (a.ctrlKey && 17 != a.goog_events_BrowserEvent$keyCode ? this.lastKey_ = 17 : a.altKey && 18 != a.goog_events_BrowserEvent$keyCode ? this.lastKey_ = 18 : a.metaKey && 91 != a.goog_events_BrowserEvent$keyCode && (this.lastKey_ = 91)); | |
| sl && !Jg(a.goog_events_BrowserEvent$keyCode, this.lastKey_, a.shiftKey, a.ctrlKey, a.altKey, a.metaKey) ? | |
| this.handleEvent(a) : (this.keyCode_ = Ig(a.goog_events_BrowserEvent$keyCode), tl && (this.altKey_ = a.altKey)) | |
| }; | |
| pl.prototype.handleKeyup_ = function(a) { | |
| this.keyCode_ = this.lastKey_ = -1; | |
| this.altKey_ = a.altKey | |
| }; | |
| pl.prototype.handleEvent = function(a) { | |
| var b = a.event_, | |
| c = b.altKey; | |
| if (z && "keypress" == a.type) { | |
| var e = this.keyCode_; | |
| var f = 13 != e && 27 != e ? b.keyCode : 0 | |
| } else(kd || id) && "keypress" == a.type ? (e = this.keyCode_, f = 0 <= b.charCode && 63232 > b.charCode && Hg(e) ? b.charCode : 0) : hd && !kd ? (e = this.keyCode_, f = Hg(e) ? b.keyCode : 0) : (e = b.keyCode || this.keyCode_, f = b.charCode || 0, tl && (c = this.altKey_), md && 63 == f && 224 == e && (e = 191)); | |
| var g = e = Ig(e); | |
| e ? 63232 <= e && e in ql ? g = ql[e] : 25 == e && a.shiftKey && (g = 9) : b.keyIdentifier && b.keyIdentifier in rl && (g = rl[b.keyIdentifier]); | |
| a = g == this.lastKey_; | |
| this.lastKey_ = g; | |
| b = new ul(g, f, a, b); | |
| b.altKey = c; | |
| ne(this, b) | |
| }; | |
| pl.prototype.getElement = function() { | |
| return this.goog_events_KeyHandler_prototype$element_ | |
| }; | |
| var ol = function(a, b, c) { | |
| a.keyUpKey_ && vl(a); | |
| a.goog_events_KeyHandler_prototype$element_ = b; | |
| a.keyPressKey_ = $d(a.goog_events_KeyHandler_prototype$element_, "keypress", a, c); | |
| a.keyDownKey_ = $d(a.goog_events_KeyHandler_prototype$element_, "keydown", a.handleKeyDown_, c, a); | |
| a.keyUpKey_ = $d(a.goog_events_KeyHandler_prototype$element_, "keyup", a.handleKeyup_, c, a) | |
| }, | |
| vl = function(a) { | |
| a.keyPressKey_ && (he(a.keyPressKey_), he(a.keyDownKey_), he(a.keyUpKey_), a.keyPressKey_ = null, a.keyDownKey_ = null, a.keyUpKey_ = null); | |
| a.goog_events_KeyHandler_prototype$element_ = | |
| null; | |
| a.lastKey_ = -1; | |
| a.keyCode_ = -1 | |
| }; | |
| pl.prototype.disposeInternal = function() { | |
| pl.superClass_.disposeInternal.call(this); | |
| vl(this) | |
| }; | |
| var ul = function(a, b, c, e) { | |
| Jd.call(this, e); | |
| this.type = "key"; | |
| this.goog_events_BrowserEvent$keyCode = a; | |
| this.repeat = c | |
| }; | |
| w(ul, Jd); | |
| var wl; | |
| Xb("A AREA BUTTON HEAD INPUT LINK MENU META OPTGROUP OPTION PROGRESS STYLE SELECT SOURCE TEXTAREA TITLE TRACK".split(" ")); | |
| var xl = function(a, b) { | |
| b ? a.setAttribute("role", b) : a.removeAttribute("role") | |
| }, | |
| yl = function(a, b, c) { | |
| za(c) && (c = c.join(" ")); | |
| var e = "aria-" + b; | |
| "" === c || void 0 == c ? (wl || (wl = { | |
| atomic: !1, | |
| autocomplete: "none", | |
| dropeffect: "none", | |
| haspopup: !1, | |
| live: "off", | |
| multiline: !1, | |
| multiselectable: !1, | |
| orientation: "vertical", | |
| readonly: !1, | |
| relevant: "additions text", | |
| required: !1, | |
| sort: "none", | |
| busy: !1, | |
| disabled: !1, | |
| hidden: !1, | |
| invalid: "false" | |
| }), c = wl, b in c ? a.setAttribute(e, c[b]) : a.removeAttribute(e)) : a.setAttribute(e, c) | |
| }, | |
| zl = function(a) { | |
| a.removeAttribute("aria-activedescendant") | |
| }, | |
| Al = function(a, b) { | |
| var c = a.getAttribute("aria-" + b); | |
| return null == c || void 0 == c ? "" : String(c) | |
| }; | |
| var Bl = function() {}, | |
| Cl; | |
| xa(Bl); | |
| var Dl = { | |
| button: "pressed", | |
| checkbox: "checked", | |
| menuitem: "selected", | |
| menuitemcheckbox: "checked", | |
| menuitemradio: "checked", | |
| radio: "checked", | |
| tab: "selected", | |
| treeitem: "selected" | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$getAriaRole = function() {}; | |
| Bl.prototype.createDom = function(a) { | |
| return a.goog_ui_Component$dom_.createDom("DIV", El(this, a).join(" "), a.goog_ui_Control_prototype$content_) | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$getContentElement = function(a) { | |
| return a | |
| }; | |
| var Gl = function(a, b, c) { | |
| if (a = a.getElement ? a.getElement() : a) { | |
| var e = [b]; | |
| z && !wd("7") && (e = Fl(kb(a), b), e.push(b)); | |
| (c ? nb : pb)(a, e) | |
| } | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$canDecorate = function() { | |
| return !0 | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$decorate = function(a, b) { | |
| b.id && el(a, b.id); | |
| var c = this.goog_ui_ControlRenderer_prototype$getContentElement(b); | |
| c && c.firstChild ? a.setContentInternal(c.firstChild.nextSibling ? gb(c.childNodes) : c.firstChild) : a.setContentInternal(null); | |
| var e = 0, | |
| f = this.goog_ui_ControlRenderer_prototype$getCssClass(), | |
| g = this.goog_ui_ControlRenderer_prototype$getCssClass(), | |
| h = !1, | |
| m = !1, | |
| n = !1, | |
| p = gb(kb(b)); | |
| Ya(p, function(a) { | |
| h || a != f ? m || a != g ? e |= this.getStateFromClass(a) : m = !0 : (h = !0, g == f && (m = !0)); | |
| 1 == this.getStateFromClass(a) && ug(c) && vg(c) && tg(c, !1) | |
| }, this); | |
| a.state_ = e; | |
| h || (p.push(f), g == f && (m = !0)); | |
| m || p.push(g); | |
| var r = a.extraClassNames_; | |
| r && p.push.apply(p, r); | |
| if (z && !wd("7")) { | |
| var t = Fl(p); | |
| 0 < t.length && (p.push.apply(p, t), n = !0) | |
| } | |
| if (!h || !m || r || n) b.className = p.join(" "); | |
| return b | |
| }; | |
| var Hl = function(a, b, c) { | |
| if (a = c || a.goog_ui_ControlRenderer_prototype$getAriaRole()) c = b.getAttribute("role") || null, a != c && xl(b, a) | |
| }, | |
| Jl = function(a, b) { | |
| a.isVisible() || yl(b, "hidden", !a.isVisible()); | |
| a.isEnabled() || Il(b, 1, !a.isEnabled()); | |
| a.supportedStates_ & 8 && Il(b, 8, !!(a.state_ & 8)); | |
| a.supportedStates_ & 16 && Il(b, 16, !!(a.state_ & 16)); | |
| a.supportedStates_ & 64 && Il(b, 64, !!(a.state_ & 64)) | |
| }, | |
| Kl = function(a, b) { | |
| var c; | |
| if (a.supportedStates_ & 32 && (c = a.getElement())) { | |
| if (!b && a.state_ & 32) { | |
| try { | |
| c.blur() | |
| } catch (e) {} | |
| a.state_ & 32 && a.goog_ui_Control_prototype$handleBlur(null) | |
| }(ug(c) && | |
| vg(c)) != b && tg(c, b) | |
| } | |
| }; | |
| Bl.prototype.setVisible = function(a, b) { | |
| Ej(a, b); | |
| a && yl(a, "hidden", !b) | |
| }; | |
| var Il = function(a, b, c) { | |
| Cl || (Cl = { | |
| 1: "disabled", | |
| 8: "selected", | |
| 16: "checked", | |
| 64: "expanded" | |
| }); | |
| b = Cl[b]; | |
| var e = a.getAttribute("role") || null; | |
| e && (e = Dl[e] || b, b = "checked" == b || "selected" == b ? e : b); | |
| b && yl(a, b, c) | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$setContent = function(a, b) { | |
| var c = this.goog_ui_ControlRenderer_prototype$getContentElement(a); | |
| if (c && (ng(c), b)) | |
| if (u(b)) qg(c, b); | |
| else { | |
| var e = function(a) { | |
| if (a) { | |
| var b = bg(c); | |
| c.appendChild(u(a) ? b.createTextNode(a) : a) | |
| } | |
| }; | |
| za(b) ? Ya(b, e) : !Aa(b) || "nodeType" in b ? e(b) : Ya(gb(b), e) | |
| } | |
| }; | |
| Bl.prototype.goog_ui_ControlRenderer_prototype$getCssClass = function() { | |
| return "goog-control" | |
| }; | |
| var El = function(a, b) { | |
| var c = a.goog_ui_ControlRenderer_prototype$getCssClass(), | |
| e = [c], | |
| f = a.goog_ui_ControlRenderer_prototype$getCssClass(); | |
| f != c && e.push(f); | |
| c = b.getState(); | |
| for (f = []; c;) { | |
| var g = c & -c; | |
| f.push(a.getClassForState(g)); | |
| c &= ~g | |
| } | |
| e.push.apply(e, f); | |
| (c = b.extraClassNames_) && e.push.apply(e, c); | |
| z && !wd("7") && e.push.apply(e, Fl(e)); | |
| return e | |
| }, | |
| Fl = function(a, b) { | |
| var c = []; | |
| b && (a = fb(a, [b])); | |
| Ya([], function(e) { | |
| !ab(e, Ka(db, a)) || b && !db(e, b) || c.push(e.join("_")) | |
| }); | |
| return c | |
| }; | |
| Bl.prototype.getClassForState = function(a) { | |
| this.classByState_ || Ll(this); | |
| return this.classByState_[a] | |
| }; | |
| Bl.prototype.getStateFromClass = function(a) { | |
| if (!this.stateByClass_) { | |
| this.classByState_ || Ll(this); | |
| var b = this.classByState_, | |
| c = {}, | |
| e; | |
| for (e in b) c[b[e]] = e; | |
| this.stateByClass_ = c | |
| } | |
| a = parseInt(this.stateByClass_[a], 10); | |
| return isNaN(a) ? 0 : a | |
| }; | |
| var Ll = function(a) { | |
| var b = a.goog_ui_ControlRenderer_prototype$getCssClass(); | |
| b.replace(/\xa0|\s/g, " "); | |
| a.classByState_ = { | |
| 1: b + "-disabled", | |
| 2: b + "-hover", | |
| 4: b + "-active", | |
| 8: b + "-selected", | |
| 16: b + "-checked", | |
| 32: b + "-focused", | |
| 64: b + "-open" | |
| } | |
| }; | |
| var Nl = function(a, b) { | |
| if (!a) throw Error("F`" + a); | |
| if (!Ba(b)) throw Error("G`" + b); | |
| Ml[a] = b | |
| }, | |
| Ol = {}, | |
| Ml = {}; | |
| var U = function(a, b, c) { | |
| cl.call(this, c); | |
| if (!b) { | |
| b = this.constructor; | |
| for (var e; b;) { | |
| e = Fa(b); | |
| if (e = Ol[e]) break; | |
| b = b.superClass_ ? b.superClass_.constructor : null | |
| } | |
| b = e ? Ba(e.getInstance) ? e.getInstance() : new e : null | |
| } | |
| this.goog_ui_Control_prototype$renderer_ = b; | |
| this.setContentInternal(va(a) ? a : null) | |
| }; | |
| w(U, cl); | |
| d = U.prototype; | |
| d.goog_ui_Control_prototype$content_ = null; | |
| d.state_ = 0; | |
| d.supportedStates_ = 39; | |
| d.autoStates_ = 255; | |
| d.statesWithTransitionEvents_ = 0; | |
| d.goog_ui_Control_prototype$visible_ = !0; | |
| d.extraClassNames_ = null; | |
| d.handleMouseEvents_ = !0; | |
| d.createDom = function() { | |
| var a = this.goog_ui_Control_prototype$renderer_.createDom(this); | |
| this.goog_ui_Component$element_ = a; | |
| Hl(this.goog_ui_Control_prototype$renderer_, a, this.getPreferredAriaRole()); | |
| Gj(a, !z && !hd); | |
| this.isVisible() || this.goog_ui_Control_prototype$renderer_.setVisible(a, !1) | |
| }; | |
| d.getPreferredAriaRole = function() { | |
| return null | |
| }; | |
| d.goog_ui_Component_prototype$getContentElement = function() { | |
| return this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$getContentElement(this.getElement()) | |
| }; | |
| d.goog_ui_Component_prototype$canDecorate = function() { | |
| return this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$canDecorate() | |
| }; | |
| d.decorateInternal = function(a) { | |
| this.goog_ui_Component$element_ = a = this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$decorate(this, a); | |
| Hl(this.goog_ui_Control_prototype$renderer_, a, this.getPreferredAriaRole()); | |
| Gj(a, !z && !hd); | |
| this.goog_ui_Control_prototype$visible_ = "none" != a.style.display | |
| }; | |
| d.enterDocument = function() { | |
| U.superClass_.enterDocument.call(this); | |
| Jl(this, this.goog_ui_Component$element_); | |
| var a = this.goog_ui_Control_prototype$renderer_; | |
| if (ml(this)) { | |
| var b = this.getElement(); | |
| Gl(b, a.goog_ui_ControlRenderer_prototype$getCssClass() + "-rtl", !0) | |
| } | |
| this.isEnabled() && Kl(this, this.isVisible()); | |
| this.supportedStates_ & -2 && (this.handleMouseEvents_ && Pl(this, !0), this.supportedStates_ & 32 && (a = this.getElement())) && (b = this.goog_ui_Control_prototype$keyHandler_ || (this.goog_ui_Control_prototype$keyHandler_ = | |
| new pl), ol(b, a), fl(this).listen(b, "key", this.handleKeyEvent).listen(a, "focus", this.goog_ui_Control_prototype$handleFocus).listen(a, "blur", this.goog_ui_Control_prototype$handleBlur)) | |
| }; | |
| var Pl = function(a, b) { | |
| var c = fl(a), | |
| e = a.getElement(); | |
| b ? (c.listen(e, "mouseover", a.handleMouseOver).listen(e, "mousedown", a.handleMouseDown).listen(e, "mouseup", a.handleMouseUp).listen(e, "mouseout", a.handleMouseOut), a.handleContextMenu != wa && c.listen(e, "contextmenu", a.handleContextMenu), z && (wd(9) || c.listen(e, "dblclick", a.handleDblClick), a.ieMouseEventSequenceSimulator_ || (a.ieMouseEventSequenceSimulator_ = new Ql(a), Gd(a, a.ieMouseEventSequenceSimulator_)))) : (c.unlisten(e, "mouseover", a.handleMouseOver).unlisten(e, | |
| "mousedown", a.handleMouseDown).unlisten(e, "mouseup", a.handleMouseUp).unlisten(e, "mouseout", a.handleMouseOut), a.handleContextMenu != wa && c.unlisten(e, "contextmenu", a.handleContextMenu), z && (wd(9) || c.unlisten(e, "dblclick", a.handleDblClick), Fd(a.ieMouseEventSequenceSimulator_), a.ieMouseEventSequenceSimulator_ = null)) | |
| }; | |
| d = U.prototype; | |
| d.exitDocument = function() { | |
| U.superClass_.exitDocument.call(this); | |
| this.goog_ui_Control_prototype$keyHandler_ && vl(this.goog_ui_Control_prototype$keyHandler_); | |
| this.isVisible() && this.isEnabled() && Kl(this, !1) | |
| }; | |
| d.disposeInternal = function() { | |
| U.superClass_.disposeInternal.call(this); | |
| this.goog_ui_Control_prototype$keyHandler_ && (this.goog_ui_Control_prototype$keyHandler_.dispose(), delete this.goog_ui_Control_prototype$keyHandler_); | |
| delete this.goog_ui_Control_prototype$renderer_; | |
| this.ieMouseEventSequenceSimulator_ = this.extraClassNames_ = this.goog_ui_Control_prototype$content_ = null | |
| }; | |
| d.setContentInternal = function(a) { | |
| this.goog_ui_Control_prototype$content_ = a | |
| }; | |
| d.getCaption = function() { | |
| var a = this.goog_ui_Control_prototype$content_; | |
| if (!a) return ""; | |
| a = u(a) ? a : za(a) ? $a(a, yg).join("") : xg(a); | |
| return vb(a) | |
| }; | |
| d.goog_ui_Component_prototype$setRightToLeft = function(a) { | |
| U.superClass_.goog_ui_Component_prototype$setRightToLeft.call(this, a); | |
| var b = this.getElement(); | |
| b && Gl(b, this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$getCssClass() + "-rtl", a) | |
| }; | |
| d.isVisible = function() { | |
| return this.goog_ui_Control_prototype$visible_ | |
| }; | |
| d.setVisible = function(a, b) { | |
| if (b || this.goog_ui_Control_prototype$visible_ != a && ne(this, a ? "show" : "hide")) { | |
| var c = this.getElement(); | |
| c && this.goog_ui_Control_prototype$renderer_.setVisible(c, a); | |
| this.isEnabled() && Kl(this, a); | |
| this.goog_ui_Control_prototype$visible_ = a; | |
| return !0 | |
| } | |
| return !1 | |
| }; | |
| d.isEnabled = function() { | |
| return !(this.state_ & 1) | |
| }; | |
| d.setEnabled = function(a) { | |
| var b = this.goog_ui_Component_prototype$getParent(); | |
| b && "function" == typeof b.isEnabled && !b.isEnabled() || !Rl(this, 1, !a) || (a || (Sl(this, !1), this.goog_ui_Control_prototype$setHighlighted(!1)), this.isVisible() && Kl(this, a), Tl(this, 1, !a, !0)) | |
| }; | |
| d.goog_ui_Control_prototype$setHighlighted = function(a) { | |
| Rl(this, 2, a) && Tl(this, 2, a) | |
| }; | |
| var Sl = function(a, b) { | |
| Rl(a, 4, b) && Tl(a, 4, b) | |
| }; | |
| U.prototype.setSelected = function(a) { | |
| Rl(this, 8, a) && Tl(this, 8, a) | |
| }; | |
| var Ul = function(a, b) { | |
| Rl(a, 16, b) && Tl(a, 16, b) | |
| }, | |
| Vl = function(a, b) { | |
| Rl(a, 64, b) && Tl(a, 64, b) | |
| }; | |
| U.prototype.getState = function() { | |
| return this.state_ | |
| }; | |
| var Tl = function(a, b, c, e) { | |
| if (!e && 1 == b) a.setEnabled(!c); | |
| else if (a.supportedStates_ & b && c != !!(a.state_ & b)) { | |
| var f = a.goog_ui_Control_prototype$renderer_; | |
| if (e = a.getElement())(f = f.getClassForState(b)) && Gl(a, f, c), Il(e, b, c); | |
| a.state_ = c ? a.state_ | b : a.state_ & ~b | |
| } | |
| }; | |
| U.prototype.setSupportedState = function(a, b) { | |
| if (this.inDocument_ && this.state_ & a && !b) throw Error("B"); | |
| !b && this.state_ & a && Tl(this, a, !1); | |
| this.supportedStates_ = b ? this.supportedStates_ | a : this.supportedStates_ & ~a | |
| }; | |
| var Wl = function(a, b) { | |
| return !!(a.autoStates_ & b) && !!(a.supportedStates_ & b) | |
| }, | |
| Rl = function(a, b, c) { | |
| return !!(a.supportedStates_ & b) && !!(a.state_ & b) != c && (!(a.statesWithTransitionEvents_ & b) || ne(a, dl(b, c))) && !a.disposed_ | |
| }; | |
| U.prototype.handleMouseOver = function(a) { | |
| !Xl(a, this.getElement()) && ne(this, "enter") && this.isEnabled() && Wl(this, 2) && this.goog_ui_Control_prototype$setHighlighted(!0) | |
| }; | |
| U.prototype.handleMouseOut = function(a) { | |
| !Xl(a, this.getElement()) && ne(this, "leave") && (Wl(this, 4) && Sl(this, !1), Wl(this, 2) && this.goog_ui_Control_prototype$setHighlighted(!1)) | |
| }; | |
| U.prototype.handleContextMenu = wa; | |
| var Xl = function(a, b) { | |
| return !!a.relatedTarget && pg(b, a.relatedTarget) | |
| }; | |
| d = U.prototype; | |
| d.handleMouseDown = function(a) { | |
| if (this.isEnabled() && (Wl(this, 2) && this.goog_ui_Control_prototype$setHighlighted(!0), Md(a) && !(kd && md && a.ctrlKey))) { | |
| Wl(this, 4) && Sl(this, !0); | |
| var b; | |
| if (b = this.goog_ui_Control_prototype$renderer_) { | |
| var c; | |
| b = this.supportedStates_ & 32 && (c = this.getElement()) ? ug(c) && vg(c) : !1 | |
| } | |
| b && this.getElement().focus() | |
| }!Md(a) || kd && md && a.ctrlKey || a.preventDefault() | |
| }; | |
| d.handleMouseUp = function(a) { | |
| this.isEnabled() && (Wl(this, 2) && this.goog_ui_Control_prototype$setHighlighted(!0), this.state_ & 4 && this.performActionInternal(a) && Wl(this, 4) && Sl(this, !1)) | |
| }; | |
| d.handleDblClick = function(a) { | |
| this.isEnabled() && this.performActionInternal(a) | |
| }; | |
| d.performActionInternal = function(a) { | |
| Wl(this, 16) && Ul(this, !(this.state_ & 16)); | |
| Wl(this, 8) && this.setSelected(!0); | |
| Wl(this, 64) && Vl(this, !(this.state_ & 64)); | |
| var b = new Hd("action", this); | |
| a && (b.altKey = a.altKey, b.ctrlKey = a.ctrlKey, b.metaKey = a.metaKey, b.shiftKey = a.shiftKey, b.platformModifierKey = a.platformModifierKey); | |
| return ne(this, b) | |
| }; | |
| d.goog_ui_Control_prototype$handleFocus = function() { | |
| Wl(this, 32) && Rl(this, 32, !0) && Tl(this, 32, !0) | |
| }; | |
| d.goog_ui_Control_prototype$handleBlur = function() { | |
| Wl(this, 4) && Sl(this, !1); | |
| Wl(this, 32) && Rl(this, 32, !1) && Tl(this, 32, !1) | |
| }; | |
| d.handleKeyEvent = function(a) { | |
| return this.isVisible() && this.isEnabled() && this.goog_ui_Control_prototype$handleKeyEventInternal(a) ? (a.preventDefault(), a.stopPropagation(), !0) : !1 | |
| }; | |
| d.goog_ui_Control_prototype$handleKeyEventInternal = function(a) { | |
| return 13 == a.goog_events_BrowserEvent$keyCode && this.performActionInternal(a) | |
| }; | |
| if (!Ba(U)) throw Error("H`" + U); | |
| if (!Ba(Bl)) throw Error("I`" + Bl); | |
| var Yl = Fa(U); | |
| Ol[Yl] = Bl; | |
| Nl("goog-control", function() { | |
| return new U(null) | |
| }); | |
| var Ql = function(a) { | |
| Ed.call(this); | |
| this.control_ = a; | |
| this.clickExpected_ = !1; | |
| this.goog_ui_Control_IeMouseEventSequenceSimulator_$handler_ = new Lg(this); | |
| Gd(this, this.goog_ui_Control_IeMouseEventSequenceSimulator_$handler_); | |
| a = this.control_.goog_ui_Component$element_; | |
| this.goog_ui_Control_IeMouseEventSequenceSimulator_$handler_.listen(a, "mousedown", this.handleMouseDown_).listen(a, "mouseup", this.handleMouseUp_).listen(a, "click", this.handleClick_) | |
| }; | |
| w(Ql, Ed); | |
| var Zl = !z || 9 <= Number(xd); | |
| Ql.prototype.handleMouseDown_ = function() { | |
| this.clickExpected_ = !1 | |
| }; | |
| Ql.prototype.handleMouseUp_ = function() { | |
| this.clickExpected_ = !0 | |
| }; | |
| var $l = function(a, b) { | |
| if (!Zl) return a.button = 0, a.type = b, a; | |
| var c = document.createEvent("MouseEvents"); | |
| c.initMouseEvent(b, a.bubbles, a.cancelable, a.view || null, a.detail, a.screenX, a.screenY, a.clientX, a.clientY, a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, 0, a.relatedTarget || null); | |
| return c | |
| }; | |
| Ql.prototype.handleClick_ = function(a) { | |
| if (this.clickExpected_) this.clickExpected_ = !1; | |
| else { | |
| var b = a.event_, | |
| c = b.button, | |
| e = b.type, | |
| f = $l(b, "mousedown"); | |
| this.control_.handleMouseDown(new Jd(f, a.goog_events_Event$currentTarget)); | |
| f = $l(b, "mouseup"); | |
| this.control_.handleMouseUp(new Jd(f, a.goog_events_Event$currentTarget)); | |
| Zl || (b.button = c, b.type = e) | |
| } | |
| }; | |
| Ql.prototype.disposeInternal = function() { | |
| this.control_ = null; | |
| Ql.superClass_.disposeInternal.call(this) | |
| }; | |
| var bm = function(a, b, c, e, f) { | |
| this.reversed = !!b; | |
| this.node = null; | |
| this.tagType = 0; | |
| this.started_ = !1; | |
| this.constrained = !c; | |
| a && am(this, a, e); | |
| this.goog_dom_TagIterator$depth = void 0 != f ? f : this.tagType || 0; | |
| this.reversed && (this.goog_dom_TagIterator$depth *= -1) | |
| }; | |
| w(bm, Pb); | |
| var am = function(a, b, c) { | |
| if (a.node = b) a.tagType = v(c) ? c : 1 != a.node.nodeType ? 0 : a.reversed ? -1 : 1; | |
| v(void 0) && (a.goog_dom_TagIterator$depth = void 0) | |
| }; | |
| bm.prototype.next = function() { | |
| if (this.started_) { | |
| if (!this.node || this.constrained && 0 == this.goog_dom_TagIterator$depth) throw Ob; | |
| var a = this.node; | |
| var b = this.reversed ? -1 : 1; | |
| if (this.tagType == b) { | |
| var c = this.reversed ? a.lastChild : a.firstChild; | |
| c ? am(this, c) : am(this, a, -1 * b) | |
| } else(c = this.reversed ? a.previousSibling : a.nextSibling) ? am(this, c) : am(this, a.parentNode, -1 * b); | |
| this.goog_dom_TagIterator$depth += this.tagType * (this.reversed ? -1 : 1) | |
| } else this.started_ = !0; | |
| a = this.node; | |
| if (!this.node) throw Ob; | |
| return a | |
| }; | |
| bm.prototype.equals = function(a) { | |
| return a.node == this.node && (!this.node || a.tagType == this.tagType) | |
| }; | |
| bm.prototype.splice = function(a) { | |
| var b = this.node, | |
| c = this.reversed ? 1 : -1; | |
| this.tagType == c && (this.tagType = -1 * c, this.goog_dom_TagIterator$depth += this.tagType * (this.reversed ? -1 : 1)); | |
| this.reversed = !this.reversed; | |
| bm.prototype.next.call(this); | |
| this.reversed = !this.reversed; | |
| c = Aa(arguments[0]) ? arguments[0] : arguments; | |
| for (var e = c.length - 1; 0 <= e; e--) b.parentNode && b.parentNode.insertBefore(c[e], b.nextSibling); | |
| C(b) | |
| }; | |
| var cm = function(a, b, c, e) { | |
| bm.call(this, a, b, c, null, e) | |
| }; | |
| w(cm, bm); | |
| cm.prototype.next = function() { | |
| do cm.superClass_.next.call(this); while (-1 == this.tagType); | |
| return this.node | |
| }; | |
| var dm = function() {}; | |
| w(dm, Bl); | |
| xa(dm); | |
| var em = 0; | |
| dm.prototype.createDom = function(a) { | |
| var b = El(this, a); | |
| a = a.goog_ui_Component$dom_.createDom("DIV", b, fm(this, a.goog_ui_Control_prototype$content_, a.getSize(), a.goog_ui_Component$dom_)); | |
| xl(a, "grid"); | |
| return a | |
| }; | |
| var fm = function(a, b, c, e) { | |
| for (var f = [], g = 0, h = 0; g < c.height; g++) { | |
| for (var m = [], n = 0; n < c.width; n++) { | |
| var p = b && b[h++]; | |
| m.push(gm(a, p, e)) | |
| } | |
| f.push(hm(a, m, e)) | |
| } | |
| a = e.createDom("TABLE", a.goog_ui_ControlRenderer_prototype$getCssClass() + "-table", e.createDom("TBODY", a.goog_ui_ControlRenderer_prototype$getCssClass() + "-body", f)); | |
| a.cellSpacing = "0"; | |
| a.cellPadding = "0"; | |
| return a | |
| }, | |
| hm = function(a, b, c) { | |
| a = c.createDom("TR", a.goog_ui_ControlRenderer_prototype$getCssClass() + "-row", b); | |
| xl(a, "row"); | |
| return a | |
| }, | |
| gm = function(a, b, c) { | |
| a = c.createDom("TD", { | |
| "class": a.goog_ui_ControlRenderer_prototype$getCssClass() + "-cell", | |
| id: a.goog_ui_ControlRenderer_prototype$getCssClass() + "-cell-" + em++ | |
| }, b); | |
| xl(a, "gridcell"); | |
| yl(a, "selected", !1); | |
| if (!xg(a) && !Al(a, "label")) { | |
| var e; | |
| b = new cm(a); | |
| for (c = ""; !c && (e = Rb(b));) 1 == e.nodeType && (c = Al(e, "label") || e.title); | |
| (e = c) && yl(a, "label", e) | |
| } | |
| return a | |
| }; | |
| dm.prototype.goog_ui_ControlRenderer_prototype$canDecorate = function() { | |
| return !1 | |
| }; | |
| dm.prototype.goog_ui_ControlRenderer_prototype$decorate = function() { | |
| return null | |
| }; | |
| dm.prototype.goog_ui_ControlRenderer_prototype$setContent = function(a, b) { | |
| if (a) { | |
| var c = dg(document, "TBODY", this.goog_ui_ControlRenderer_prototype$getCssClass() + "-body", a)[0]; | |
| if (c) { | |
| var e = 0; | |
| Ya(c.rows, function(a) { | |
| Ya(a.cells, function(a) { | |
| ng(a); | |
| if (b) { | |
| var c = b[e++]; | |
| c && a.appendChild(c) | |
| } | |
| }) | |
| }); | |
| if (e < b.length) { | |
| for (var f = [], g = cg(a), h = c.rows[0].cells.length; e < b.length;) { | |
| var m = b[e++]; | |
| f.push(gm(this, m, g)); | |
| f.length == h && (m = hm(this, f, g), c.appendChild(m), f.length = 0) | |
| } | |
| if (0 < f.length) { | |
| for (; f.length < h;) f.push(gm(this, "", g)); | |
| m = | |
| hm(this, f, g); | |
| c.appendChild(m) | |
| } | |
| } | |
| } | |
| Gj(a, jd) | |
| } | |
| }; | |
| var im = function(a, b, c) { | |
| for (b = b.getElement(); c && 1 == c.nodeType && c != b;) { | |
| if ("TD" == c.tagName && lb(c, a.goog_ui_ControlRenderer_prototype$getCssClass() + "-cell")) return c.firstChild; | |
| c = c.parentNode | |
| } | |
| return null | |
| }; | |
| dm.prototype.goog_ui_ControlRenderer_prototype$getCssClass = function() { | |
| return "goog-palette" | |
| }; | |
| var km = function(a) { | |
| le.call(this); | |
| this.items_ = []; | |
| jm(this, a) | |
| }; | |
| w(km, le); | |
| km.prototype.goog_ui_SelectionModel_prototype$selectedItem_ = null; | |
| km.prototype.selectionHandler_ = null; | |
| var jm = function(a, b) { | |
| b && (Ya(b, function(a) { | |
| lm(this, a, !1) | |
| }, a), hb(a.items_, b)) | |
| }; | |
| km.prototype.setSelectedItem = function(a) { | |
| a != this.goog_ui_SelectionModel_prototype$selectedItem_ && (lm(this, this.goog_ui_SelectionModel_prototype$selectedItem_, !1), this.goog_ui_SelectionModel_prototype$selectedItem_ = a, lm(this, a, !0)); | |
| ne(this, "select") | |
| }; | |
| var mm = function(a, b) { | |
| a.setSelectedItem(a.items_[b] || null) | |
| }; | |
| km.prototype.disposeInternal = function() { | |
| km.superClass_.disposeInternal.call(this); | |
| delete this.items_; | |
| this.goog_ui_SelectionModel_prototype$selectedItem_ = null | |
| }; | |
| var lm = function(a, b, c) { | |
| b && ("function" == typeof a.selectionHandler_ ? a.selectionHandler_(b, c) : "function" == typeof b.setSelected && b.setSelected(c)) | |
| }; | |
| var om = function(a, b, c) { | |
| U.call(this, a, b || dm.getInstance(), c); | |
| this.autoStates_ &= -89; | |
| this.currentCellControl_ = new nm; | |
| this.currentCellControl_.setParentEventTarget(this); | |
| this.lastHighlightedIndex_ = -1 | |
| }; | |
| w(om, U); | |
| d = om.prototype; | |
| d.goog_ui_Palette_prototype$size_ = null; | |
| d.goog_ui_Palette_prototype$highlightedIndex_ = -1; | |
| d.selectionModel_ = null; | |
| d.disposeInternal = function() { | |
| om.superClass_.disposeInternal.call(this); | |
| this.selectionModel_ && (this.selectionModel_.dispose(), this.selectionModel_ = null); | |
| this.goog_ui_Palette_prototype$size_ = null; | |
| this.currentCellControl_.dispose() | |
| }; | |
| d.setContentInternal = function(a) { | |
| om.superClass_.setContentInternal.call(this, a); | |
| pm(this); | |
| if (this.selectionModel_) { | |
| var b = this.selectionModel_, | |
| c = b.items_; | |
| if (!za(c)) | |
| for (var e = c.length - 1; 0 <= e; e--) delete c[e]; | |
| c.length = 0; | |
| b.goog_ui_SelectionModel_prototype$selectedItem_ = null; | |
| jm(this.selectionModel_, a) | |
| } else this.selectionModel_ = new km(a), a = Ja(this.goog_ui_Palette_prototype$selectItem_, this), this.selectionModel_.selectionHandler_ = a, fl(this).listen(this.selectionModel_, "select", this.handleSelectionChange); | |
| this.goog_ui_Palette_prototype$highlightedIndex_ = -1 | |
| }; | |
| d.getCaption = function() { | |
| return "" | |
| }; | |
| d.handleMouseOver = function(a) { | |
| om.superClass_.handleMouseOver.call(this, a); | |
| var b = im(this.goog_ui_Control_prototype$renderer_, this, a.target); | |
| b && a.relatedTarget && pg(b, a.relatedTarget) || b == qm(this) || (a = this.goog_ui_Control_prototype$content_, rm(this, a && b ? Wa(a, b) : -1)) | |
| }; | |
| d.handleMouseDown = function(a) { | |
| om.superClass_.handleMouseDown.call(this, a); | |
| if (this.state_ & 4 && (a = im(this.goog_ui_Control_prototype$renderer_, this, a.target), a != qm(this))) { | |
| var b = this.goog_ui_Control_prototype$content_; | |
| rm(this, b && a ? Wa(b, a) : -1) | |
| } | |
| }; | |
| d.performActionInternal = function(a) { | |
| var b = qm(this); | |
| return b ? (a && (this.selectionModel_ && this.selectionModel_.goog_ui_SelectionModel_prototype$selectedItem_ ? "mouseup" != a.type || im(this.goog_ui_Control_prototype$renderer_, this, a.target) : 1) && this.setSelectedItem(b), om.superClass_.performActionInternal.call(this, a)) : !1 | |
| }; | |
| d.handleKeyEvent = function(a) { | |
| var b = this.goog_ui_Control_prototype$content_; | |
| b = b ? b.length : 0; | |
| var c = this.goog_ui_Palette_prototype$size_.width; | |
| if (0 == b || !this.isEnabled()) return !1; | |
| if (13 == a.goog_events_BrowserEvent$keyCode || 32 == a.goog_events_BrowserEvent$keyCode) return this.performActionInternal(a); | |
| if (36 == a.goog_events_BrowserEvent$keyCode) return rm(this, 0), !0; | |
| if (35 == a.goog_events_BrowserEvent$keyCode) return rm(this, b - 1), !0; | |
| if (0 > this.goog_ui_Palette_prototype$highlightedIndex_) | |
| if (this.selectionModel_) { | |
| var e = | |
| this.selectionModel_; | |
| var f = e.goog_ui_SelectionModel_prototype$selectedItem_; | |
| e = f ? Wa(e.items_, f) : -1 | |
| } else e = -1; | |
| else e = this.goog_ui_Palette_prototype$highlightedIndex_; | |
| switch (a.goog_events_BrowserEvent$keyCode) { | |
| case 37: | |
| if (-1 == e || 0 == e) e = b; | |
| rm(this, e - 1); | |
| a.preventDefault(); | |
| return !0; | |
| case 39: | |
| return e == b - 1 && (e = -1), rm(this, e + 1), a.preventDefault(), !0; | |
| case 38: | |
| -1 == e && (e = b + c - 1); | |
| if (e >= c) return rm(this, e - c), a.preventDefault(), !0; | |
| break; | |
| case 40: | |
| if (-1 == e && (e = -c), e < b - c) return rm(this, e + c), a.preventDefault(), !0 | |
| } | |
| return !1 | |
| }; | |
| d.handleSelectionChange = function() {}; | |
| d.getSize = function() { | |
| return this.goog_ui_Palette_prototype$size_ | |
| }; | |
| var sm = function(a, b) { | |
| if (a.getElement()) throw Error("B"); | |
| a.goog_ui_Palette_prototype$size_ = v(b) ? new $f(b, void 0) : b; | |
| pm(a) | |
| }, | |
| qm = function(a) { | |
| var b = a.goog_ui_Control_prototype$content_; | |
| return b && b[a.goog_ui_Palette_prototype$highlightedIndex_] | |
| }, | |
| rm = function(a, b) { | |
| b != a.goog_ui_Palette_prototype$highlightedIndex_ && (tm(a, a.goog_ui_Palette_prototype$highlightedIndex_, !1), a.lastHighlightedIndex_ = a.goog_ui_Palette_prototype$highlightedIndex_, a.goog_ui_Palette_prototype$highlightedIndex_ = b, tm(a, b, !0), ne(a, "a")) | |
| }; | |
| om.prototype.setSelectedItem = function(a) { | |
| this.selectionModel_ && this.selectionModel_.setSelectedItem(a) | |
| }; | |
| var tm = function(a, b, c) { | |
| if (a.getElement()) { | |
| var e = a.goog_ui_Control_prototype$content_; | |
| if (e && 0 <= b && b < e.length) { | |
| var f = (f = qm(a)) ? f.parentNode : null; | |
| a.currentCellControl_.getElement() != f && (a.currentCellControl_.goog_ui_Component$element_ = f); | |
| f = a.currentCellControl_; | |
| f.goog_ui_Control_prototype$setHighlighted(c); | |
| !!(f.state_ & 2) == c && (f = a.goog_ui_Control_prototype$renderer_, b = e[b]) && (b = b ? b.parentNode : null, e = f.goog_ui_ControlRenderer_prototype$getCssClass() + "-cell-hover", c ? mb(b, e) : ob(b, e), c ? yl(a.goog_ui_Component$element_, | |
| "activedescendant", b.id) : b.id == Al(a.goog_ui_Component$element_, "activedescendant") && zl(a.goog_ui_Component$element_)) | |
| } | |
| } | |
| }; | |
| om.prototype.goog_ui_Control_prototype$setHighlighted = function(a) { | |
| a && -1 == this.goog_ui_Palette_prototype$highlightedIndex_ ? rm(this, -1 < this.lastHighlightedIndex_ ? this.lastHighlightedIndex_ : 0) : a || rm(this, -1); | |
| om.superClass_.goog_ui_Control_prototype$setHighlighted.call(this, a) | |
| }; | |
| om.prototype.goog_ui_Palette_prototype$selectItem_ = function(a, b) { | |
| if (this.getElement() && a) { | |
| var c = a.parentNode, | |
| e = this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$getCssClass() + "-cell-selected"; | |
| b ? mb(c, e) : ob(c, e); | |
| yl(c, "selected", b) | |
| } | |
| }; | |
| var pm = function(a) { | |
| var b = a.goog_ui_Control_prototype$content_; | |
| if (b) | |
| if (a.goog_ui_Palette_prototype$size_ && a.goog_ui_Palette_prototype$size_.width) { | |
| if (b = Math.ceil(b.length / a.goog_ui_Palette_prototype$size_.width), !v(a.goog_ui_Palette_prototype$size_.height) || a.goog_ui_Palette_prototype$size_.height < b) a.goog_ui_Palette_prototype$size_.height = b | |
| } else b = Math.ceil(Math.sqrt(b.length)), a.goog_ui_Palette_prototype$size_ = new $f(b, b); | |
| else a.goog_ui_Palette_prototype$size_ = new $f(0, 0) | |
| }, | |
| nm = function() { | |
| U.call(this, | |
| null); | |
| this.statesWithTransitionEvents_ |= 2 | |
| }; | |
| w(nm, U); | |
| var vm = function(a, b, c) { | |
| this.colors_ = a || []; | |
| om.call(this, null, b || dm.getInstance(), c); | |
| um(this, this.colors_) | |
| }; | |
| w(vm, om); | |
| vm.prototype.normalizedColors_ = null; | |
| vm.prototype.labels_ = null; | |
| var um = function(a, b) { | |
| a.colors_ = b; | |
| a.labels_ = null; | |
| a.normalizedColors_ = null; | |
| var c = wm(a); | |
| a.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$setContent(a.getElement(), c); | |
| a.setContentInternal(c) | |
| }; | |
| vm.prototype.getSelectedColor = function() { | |
| var a = this.selectionModel_ ? this.selectionModel_.goog_ui_SelectionModel_prototype$selectedItem_ : null; | |
| if (a) { | |
| var b = a.style[Kb()]; | |
| if ("undefined" !== typeof b) a = b; | |
| else { | |
| b = a.style; | |
| var c = wj["background-color"]; | |
| if (!c) { | |
| var e = Kb(); | |
| c = e; | |
| void 0 === a.style[e] && (e = (kd ? "Webkit" : jd ? "Moz" : z ? "ms" : hd ? "O" : null) + Lb(e), void 0 !== a.style[e] && (c = e)); | |
| wj["background-color"] = c | |
| } | |
| a = b[c] || "" | |
| } | |
| return xm(a) | |
| } | |
| return null | |
| }; | |
| var ym = function(a, b) { | |
| var c = xm(b); | |
| a.normalizedColors_ || (a.normalizedColors_ = $a(a.colors_, function(a) { | |
| return xm(a) | |
| })); | |
| a.selectionModel_ && mm(a.selectionModel_, c ? Wa(a.normalizedColors_, c) : -1) | |
| }, | |
| wm = function(a) { | |
| return $a(a.colors_, function(a, c) { | |
| var b = this.goog_ui_Component$dom_.createDom("DIV", { | |
| "class": this.goog_ui_Control_prototype$renderer_.goog_ui_ControlRenderer_prototype$getCssClass() + "-colorswatch", | |
| style: "background-color:" + a | |
| }); | |
| b.title = this.labels_ && this.labels_[c] ? this.labels_[c] : "#" == a.charAt(0) ? | |
| "RGB (" + Xk(a).join(", ") + ")" : a; | |
| return b | |
| }, a) | |
| }, | |
| xm = function(a) { | |
| if (a) try { | |
| return Vk(a).hex | |
| } catch (b) {} | |
| return null | |
| }; | |
| var zm = function(a, b) { | |
| cl.call(this, a); | |
| this.colorPalette_ = b || null; | |
| fl(this).listen(this, "action", this.onColorPaletteAction_) | |
| }; | |
| w(zm, cl); | |
| var Cm = function(a) { | |
| var b = Am; | |
| a.colorPalette_ ? um(a.colorPalette_, b) : Bm(a, b) | |
| }, | |
| Dm = function(a) { | |
| a.colorPalette_ || Bm(a, []); | |
| sm(a.colorPalette_, 7) | |
| }; | |
| zm.prototype.getSize = function() { | |
| return this.colorPalette_ ? this.colorPalette_.getSize() : null | |
| }; | |
| zm.prototype.getSelectedColor = function() { | |
| return this.colorPalette_ ? this.colorPalette_.getSelectedColor() : null | |
| }; | |
| var Em = function(a, b) { | |
| a.colorPalette_ && ym(a.colorPalette_, b) | |
| }; | |
| d = zm.prototype; | |
| d.goog_ui_Component_prototype$canDecorate = function() { | |
| return !1 | |
| }; | |
| d.enterDocument = function() { | |
| zm.superClass_.enterDocument.call(this); | |
| this.colorPalette_ && this.colorPalette_.render(this.getElement()); | |
| this.getElement().unselectable = "on" | |
| }; | |
| d.disposeInternal = function() { | |
| zm.superClass_.disposeInternal.call(this); | |
| this.colorPalette_ && (this.colorPalette_.dispose(), this.colorPalette_ = null) | |
| }; | |
| d.focus = function() { | |
| this.colorPalette_ && this.colorPalette_.getElement().focus() | |
| }; | |
| d.onColorPaletteAction_ = function(a) { | |
| a.stopPropagation(); | |
| ne(this, "change") | |
| }; | |
| var Bm = function(a, b) { | |
| var c = new vm(b, null, a.goog_ui_Component$dom_); | |
| sm(c, 5); | |
| c.setSupportedState(32, !0); | |
| a.goog_ui_Component_prototype$addChildAt(c, kl(a), void 0); | |
| a.colorPalette_ = c; | |
| a.inDocument_ && a.colorPalette_.render(a.getElement()) | |
| }, | |
| Am = "#ffffff #cccccc #c0c0c0 #999999 #666666 #333333 #000000 #ffcccc #ff6666 #ff0000 #cc0000 #990000 #660000 #330000 #ffcc99 #ff9966 #ff9900 #ff6600 #cc6600 #993300 #663300 #ffff99 #ffff66 #ffcc66 #ffcc33 #cc9933 #996633 #663333 #ffffcc #ffff33 #ffff00 #ffcc00 #999900 #666600 #333300 #99ff99 #66ff99 #33ff33 #33cc00 #009900 #006600 #003300 #99ffff #33ffff #66cccc #00cccc #339999 #336666 #003333 #ccffff #66ffff #33ccff #3366ff #3333ff #000099 #000066 #ccccff #9999ff #6666cc #6633ff #6600cc #333399 #330099 #ffccff #ff99ff #cc66cc #cc33cc #993399 #663366 #330033".split(" "); | |
| var Fm = function(a, b) { | |
| Fm.superClass_.constructor.call(this, a, b); | |
| bk(this, "colour") | |
| }, | |
| Gm; | |
| w(Fm, Wj); | |
| d = Fm.prototype; | |
| d.init = function(a) { | |
| Fm.superClass_.init.call(this, a); | |
| this.Blockly_Field_prototype$setValue(this.getValue()) | |
| }; | |
| d.CURSOR = "default"; | |
| d.dispose = function() { | |
| Fk(this); | |
| Fm.superClass_.dispose.call(this) | |
| }; | |
| d.getValue = function() { | |
| return this.colour_ | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| this.Blockly_Field_prototype$sourceBlock && 0 == Q && this.colour_ != a && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.colour_, a)); | |
| this.colour_ = a; | |
| this.Blockly_Field_prototype$sourceBlock && this.Blockly_Field_prototype$sourceBlock.setColour(a, this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_) | |
| }; | |
| d.Blockly_Field_prototype$getText = function() { | |
| var a = this.colour_, | |
| b = a.match(/^#(.)\1(.)\2(.)\3$/); | |
| b && (a = "#" + b[1] + b[2] + b[3]); | |
| return a | |
| }; | |
| d.getSize = function() { | |
| return new $f(48, 32) | |
| }; | |
| d.showEditor = function() { | |
| Gk(this, this.Blockly_Field_prototype$sourceBlock.RTL, Hm); | |
| var a = new zm; | |
| Dm(a); | |
| Cm(a); | |
| var b = hg(), | |
| c = zj(), | |
| e = Bj(Zj(this)), | |
| f = hk(this); | |
| a.render(Jk); | |
| Em(a, this.getValue()); | |
| var g = Dj(a.getElement()); | |
| e.y = e.y + g.height + f.height >= b.height + c.y ? e.y - (g.height - 1) : e.y + (f.height - 1); | |
| this.Blockly_Field_prototype$sourceBlock.RTL ? (e.x += f.width, e.x -= g.width, e.x < c.x && (e.x = c.x)) : e.x > b.width + c.x - g.width && (e.x = b.width + c.x - g.width); | |
| Im(e.x, e.y, b, c, this.Blockly_Field_prototype$sourceBlock.RTL); | |
| var h = this; | |
| Gm = | |
| $d(a, "change", function(a) { | |
| a = a.target.getSelectedColor() || "#000000"; | |
| L(); | |
| h.Blockly_Field_prototype$sourceBlock && (a = ck(h, a)); | |
| null !== a && h.Blockly_Field_prototype$setValue(a) | |
| }) | |
| }; | |
| var Hm = function() { | |
| Gm && he(Gm); | |
| ci(!1) | |
| }; | |
| var Jm = function(a, b, c, e, f) { | |
| this.Blockly_Field_prototype$sourceBlock = null; | |
| this.Blockly_FieldImage$height_ = Number(c); | |
| this.Blockly_FieldImage$width_ = Number(b); | |
| this.Blockly_Field$size_ = new $f(this.Blockly_FieldImage$width_, this.Blockly_FieldImage$height_); | |
| this.text = e || ""; | |
| this.flipRTL_ = !!f; | |
| this.Blockly_Field_prototype$setValue(a) | |
| }; | |
| w(Jm, Wj); | |
| d = Jm.prototype; | |
| d.EDITABLE = !1; | |
| d.init = function() { | |
| this.fieldGroup_ || (this.fieldGroup_ = O("g", {}, null), this.Blockly_Field_prototype$visible || (this.fieldGroup_.style.display = "none"), this.Blockly_FieldImage$imageElement_ = O("image", { | |
| height: this.Blockly_FieldImage$height_ + "px", | |
| width: this.Blockly_FieldImage$width_ + "px" | |
| }, this.fieldGroup_), this.Blockly_Field_prototype$setValue(this.src_), this.Blockly_Field_prototype$sourceBlock.getSvgRoot().appendChild(this.fieldGroup_), this.Blockly_Field_prototype$setTooltip(this.Blockly_Field_prototype$sourceBlock), | |
| Km(this.Blockly_FieldImage$imageElement_)) | |
| }; | |
| d.dispose = function() { | |
| C(this.fieldGroup_); | |
| this.Blockly_FieldImage$imageElement_ = this.fieldGroup_ = null | |
| }; | |
| d.Blockly_Field_prototype$setTooltip = function(a) { | |
| this.Blockly_FieldImage$imageElement_.tooltip = a | |
| }; | |
| d.getValue = function() { | |
| return this.src_ | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| null !== a && (this.src_ = a, this.Blockly_FieldImage$imageElement_ && this.Blockly_FieldImage$imageElement_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a || "")) | |
| }; | |
| d.Blockly_Field_prototype$setText = function(a) { | |
| null !== a && (this.text = a) | |
| }; | |
| d.render = function() {}; | |
| var Lm = function(a, b, c, e, f) { | |
| b = this.Blockly_FieldNumber_prototype$getNumRestrictor(b, c, e); | |
| a = a && !isNaN(a) ? String(a) : "0"; | |
| Lm.superClass_.constructor.call(this, a, f, b); | |
| bk(this, "number") | |
| }; | |
| w(Lm, Dk); | |
| var Mm = "789456123.0- ".split(""), | |
| Nm = 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><path d="M28.89,11.45H16.79a2.86,2.86,0,0,0-2,.84L9.09,18a2.85,2.85,0,0,0,0,4l5.69,5.69a2.86,2.86,0,0,0,2,.84h12.1a2.86,2.86,0,0,0,2.86-2.86V14.31A2.86,2.86,0,0,0,28.89,11.45ZM27.15,22.73a1,1,0,0,1,0,1.41,1,1,0,0,1-.71.3,1,1,0,0,1-.71-0.3L23,21.41l-2.73,2.73a1,1,0,0,1-1.41,0,1,1,0,0,1,0-1.41L21.59,20l-2.73-2.73a1,1,0,0,1,0-1.41,1,1,0,0,1,1.41,0L23,18.59l2.73-2.73a1,1,0,1,1,1.42,1.41L24.42,20Z" fill="' + I.numPadText + | |
| '"/></svg>', | |
| Om = null; | |
| Lm.prototype.Blockly_FieldNumber_prototype$getNumRestrictor = function(a, b, c) { | |
| a = Number(a); | |
| c = Number(c); | |
| this.decimalAllowed_ = "undefined" == typeof c || isNaN(c) || 0 == c || Math.floor(c) != c; | |
| this.negativeAllowed_ = "undefined" == typeof a || isNaN(a) || 0 > a; | |
| c = "[\\d]"; | |
| this.decimalAllowed_ && (c += "|[\\.]"); | |
| this.negativeAllowed_ && (c += "|[-]"); | |
| return new RegExp(c) | |
| }; | |
| Lm.prototype.showEditor = function() { | |
| Om = this; | |
| var a = ld || nd || pd; | |
| Lm.superClass_.showEditor.call(this, !1, a); | |
| if (a) { | |
| ei(); | |
| Jj.innerHTML = ""; | |
| a = Jj; | |
| a.setAttribute("role", "menu"); | |
| a.setAttribute("aria-haspopup", "true"); | |
| for (var b = 0, c; c = Mm[b]; b++) { | |
| var e = document.createElement("button"); | |
| e.setAttribute("role", "menuitem"); | |
| e.setAttribute("class", "blocklyNumPadButton"); | |
| e.title = c; | |
| e.innerHTML = c; | |
| T(e, "mousedown", e, Lm.prototype.numPadButtonTouch); | |
| if ("." != c || this.decimalAllowed_) | |
| if ("-" != c || this.negativeAllowed_) | |
| if (" " != c || this.negativeAllowed_) " " == | |
| c && this.negativeAllowed_ && e.setAttribute("style", "visibility: hidden"); | |
| else continue; | |
| else continue; | |
| else e.setAttribute("style", "visibility: hidden"); | |
| a.appendChild(e) | |
| } | |
| b = document.createElement("button"); | |
| b.setAttribute("role", "menuitem"); | |
| b.setAttribute("class", "blocklyNumPadButton"); | |
| b.title = "Delete"; | |
| c = document.createElement("img"); | |
| c.src = Nm; | |
| b.appendChild(c); | |
| T(b, "mousedown", null, Pm); | |
| a.appendChild(b); | |
| Qj(I.numPadBackground, I.numPadBorder); | |
| a.style.width = "168px"; | |
| b = this.Blockly_Field_prototype$sourceBlock.workspace.scale; | |
| e = Mk(this.Blockly_Field_prototype$sourceBlock); | |
| e.width *= b; | |
| e.height *= b; | |
| c = Bj(Zj(this)); | |
| a = c.x + e.width / 2; | |
| e = c.y + e.height + 8; | |
| b = c.y - 64 * b - -8 * b; | |
| Mj = Sj(this.Blockly_Field_prototype$sourceBlock.workspace).parentNode; | |
| Tj(this, a, e, a, b, this.Blockly_FieldNumber_prototype$onHide_.bind(this)) | |
| } | |
| }; | |
| Lm.prototype.numPadButtonTouch = function() { | |
| var a = Ek.value; | |
| Qm(a.slice(0, Ek.selectionStart) + this.innerHTML + a.slice(Ek.selectionEnd)); | |
| J = null | |
| }; | |
| var Pm = function() { | |
| var a = Ek.value, | |
| b = Ek.selectionStart, | |
| c = Ek.selectionEnd, | |
| e = a.slice(0, b) + a.slice(c); | |
| 0 == c - b && (e = a.slice(0, b - 1) + a.slice(b)); | |
| Qm(e); | |
| J = null | |
| }, | |
| Qm = function(a) { | |
| Ek.value = a; | |
| Lm.superClass_.resizeEditor.call(Om); | |
| Ek.setSelectionRange(a.length, a.length); | |
| Ek.scrollLeft = Ek.scrollWidth; | |
| Kk(Om) | |
| }; | |
| Lm.prototype.Blockly_FieldNumber_prototype$onHide_ = function() { | |
| Jj.removeAttribute("role"); | |
| Jj.removeAttribute("aria-haspopup") | |
| }; | |
| var Rm = function(a) { | |
| this.ariaRole_ = a | |
| }; | |
| xa(Rm); | |
| var Sm = function(a, b) { | |
| a && (a.tabIndex = b ? 0 : -1) | |
| }; | |
| Rm.prototype.createDom = function(a) { | |
| return a.goog_ui_Component$dom_.createDom("DIV", Tm(this, a).join(" ")) | |
| }; | |
| Rm.prototype.goog_ui_ContainerRenderer_prototype$canDecorate = function(a) { | |
| return "DIV" == a.tagName | |
| }; | |
| var Vm = function(a, b, c) { | |
| c.id && el(b, c.id); | |
| var e = a.goog_ui_ContainerRenderer_prototype$getCssClass(), | |
| f = !1, | |
| g = kb(c); | |
| g && Ya(g, function(a) { | |
| if (a == e) f = !0; | |
| else if (a) | |
| if (a == e + "-disabled") b.setEnabled(!1); | |
| else if (a == e + "-horizontal") { | |
| if (b.getElement()) throw Error("B"); | |
| b.goog_ui_Container_prototype$orientation_ = "horizontal" | |
| } else if (a == e + "-vertical") { | |
| if (b.getElement()) throw Error("B"); | |
| b.goog_ui_Container_prototype$orientation_ = "vertical" | |
| } | |
| }, a); | |
| f || mb(c, e); | |
| Um(a, b, c); | |
| return c | |
| }, | |
| Um = function(a, b, c) { | |
| if (c) | |
| for (var e = c.firstChild, | |
| f; e && e.parentNode == c;) { | |
| f = e.nextSibling; | |
| if (1 == e.nodeType) { | |
| var g = a.getDecoratorForChild(e); | |
| g && (g.goog_ui_Component$element_ = e, b.isEnabled() || g.setEnabled(!1), b.goog_ui_Component_prototype$addChildAt(g, kl(b), void 0), g.goog_ui_Component_prototype$decorate(e)) | |
| } else e.nodeValue && "" != wb(e.nodeValue) || c.removeChild(e); | |
| e = f | |
| } | |
| }; | |
| Rm.prototype.getDecoratorForChild = function(a) { | |
| a: { | |
| a = kb(a); | |
| for (var b = 0, c = a.length; b < c; b++) { | |
| var e = a[b]; | |
| if (e = e in Ml ? Ml[e]() : null) { | |
| a = e; | |
| break a | |
| } | |
| } | |
| a = null | |
| } | |
| return a | |
| }; | |
| Rm.prototype.goog_ui_ContainerRenderer_prototype$initializeDom = function(a) { | |
| a = a.getElement(); | |
| Gj(a, jd); | |
| z && (a.hideFocus = !0); | |
| var b = this.ariaRole_; | |
| b && xl(a, b) | |
| }; | |
| Rm.prototype.goog_ui_ContainerRenderer_prototype$getCssClass = function() { | |
| return "goog-container" | |
| }; | |
| var Tm = function(a, b) { | |
| var c = a.goog_ui_ContainerRenderer_prototype$getCssClass(), | |
| e = [c, "horizontal" == b.goog_ui_Container_prototype$orientation_ ? c + "-horizontal" : c + "-vertical"]; | |
| b.isEnabled() || e.push(c + "-disabled"); | |
| return e | |
| }; | |
| var Wm = function(a, b, c) { | |
| cl.call(this, c); | |
| this.goog_ui_Container_prototype$renderer_ = b || Rm.getInstance(); | |
| this.goog_ui_Container_prototype$orientation_ = a || "vertical" | |
| }; | |
| w(Wm, cl); | |
| d = Wm.prototype; | |
| d.keyEventTarget_ = null; | |
| d.goog_ui_Container_prototype$keyHandler_ = null; | |
| d.goog_ui_Container_prototype$renderer_ = null; | |
| d.goog_ui_Container_prototype$orientation_ = null; | |
| d.goog_ui_Container_prototype$visible_ = !0; | |
| d.enabled_ = !0; | |
| d.goog_ui_Container_prototype$focusable_ = !0; | |
| d.goog_ui_Container_prototype$highlightedIndex_ = -1; | |
| d.openItem_ = null; | |
| d.mouseButtonPressed_ = !1; | |
| d.childElementIdMap_ = null; | |
| var Xm = function(a) { | |
| return a.keyEventTarget_ || a.getElement() | |
| }; | |
| d = Wm.prototype; | |
| d.createDom = function() { | |
| this.goog_ui_Component$element_ = this.goog_ui_Container_prototype$renderer_.createDom(this) | |
| }; | |
| d.goog_ui_Component_prototype$getContentElement = function() { | |
| return this.getElement() | |
| }; | |
| d.goog_ui_Component_prototype$canDecorate = function(a) { | |
| return this.goog_ui_Container_prototype$renderer_.goog_ui_ContainerRenderer_prototype$canDecorate(a) | |
| }; | |
| d.decorateInternal = function(a) { | |
| this.goog_ui_Component$element_ = Vm(this.goog_ui_Container_prototype$renderer_, this, a); | |
| "none" == a.style.display && (this.goog_ui_Container_prototype$visible_ = !1) | |
| }; | |
| d.enterDocument = function() { | |
| Wm.superClass_.enterDocument.call(this); | |
| jl(this, function(a) { | |
| a.inDocument_ && Ym(this, a) | |
| }, this); | |
| var a = this.getElement(); | |
| this.goog_ui_Container_prototype$renderer_.goog_ui_ContainerRenderer_prototype$initializeDom(this); | |
| this.setVisible(this.goog_ui_Container_prototype$visible_, !0); | |
| fl(this).listen(this, "enter", this.handleEnterItem).listen(this, "highlight", this.handleHighlightItem).listen(this, "unhighlight", this.handleUnHighlightItem).listen(this, "open", this.handleOpenItem).listen(this, | |
| "close", this.handleCloseItem).listen(a, "mousedown", this.handleMouseDown).listen(bg(a), "mouseup", this.handleDocumentMouseUp).listen(a, ["mousedown", "mouseup", "mouseover", "mouseout", "contextmenu"], this.handleChildMouseEvents); | |
| this.goog_ui_Container_prototype$focusable_ && Zm(this, !0) | |
| }; | |
| var Zm = function(a, b) { | |
| var c = fl(a), | |
| e = Xm(a); | |
| b ? c.listen(e, "focus", a.goog_ui_Container_prototype$handleFocus).listen(e, "blur", a.goog_ui_Container_prototype$handleBlur).listen(a.goog_ui_Container_prototype$keyHandler_ || (a.goog_ui_Container_prototype$keyHandler_ = new pl(Xm(a))), "key", a.handleKeyEvent) : c.unlisten(e, "focus", a.goog_ui_Container_prototype$handleFocus).unlisten(e, "blur", a.goog_ui_Container_prototype$handleBlur).unlisten(a.goog_ui_Container_prototype$keyHandler_ || (a.goog_ui_Container_prototype$keyHandler_ = | |
| new pl(Xm(a))), "key", a.handleKeyEvent) | |
| }; | |
| d = Wm.prototype; | |
| d.exitDocument = function() { | |
| this.goog_ui_Container_prototype$setHighlightedIndex(-1); | |
| this.openItem_ && Vl(this.openItem_, !1); | |
| this.mouseButtonPressed_ = !1; | |
| Wm.superClass_.exitDocument.call(this) | |
| }; | |
| d.disposeInternal = function() { | |
| Wm.superClass_.disposeInternal.call(this); | |
| this.goog_ui_Container_prototype$keyHandler_ && (this.goog_ui_Container_prototype$keyHandler_.dispose(), this.goog_ui_Container_prototype$keyHandler_ = null); | |
| this.goog_ui_Container_prototype$renderer_ = this.openItem_ = this.childElementIdMap_ = this.keyEventTarget_ = null | |
| }; | |
| d.handleEnterItem = function() { | |
| return !0 | |
| }; | |
| d.handleHighlightItem = function(a) { | |
| var b = nl(this, a.target); | |
| if (-1 < b && b != this.goog_ui_Container_prototype$highlightedIndex_) { | |
| var c = ll(this, this.goog_ui_Container_prototype$highlightedIndex_); | |
| c && c.goog_ui_Control_prototype$setHighlighted(!1); | |
| this.goog_ui_Container_prototype$highlightedIndex_ = b; | |
| c = ll(this, this.goog_ui_Container_prototype$highlightedIndex_); | |
| this.mouseButtonPressed_ && Sl(c, !0); | |
| this.openItem_ && c != this.openItem_ && (c.supportedStates_ & 64 ? Vl(c, !0) : Vl(this.openItem_, !1)) | |
| } | |
| b = this.getElement(); | |
| null != | |
| a.target.getElement() && yl(b, "activedescendant", a.target.getElement().id) | |
| }; | |
| d.handleUnHighlightItem = function(a) { | |
| a.target == ll(this, this.goog_ui_Container_prototype$highlightedIndex_) && (this.goog_ui_Container_prototype$highlightedIndex_ = -1); | |
| a = this.getElement(); | |
| zl(a) | |
| }; | |
| d.handleOpenItem = function(a) { | |
| (a = a.target) && a != this.openItem_ && a.goog_ui_Component_prototype$getParent() == this && (this.openItem_ && Vl(this.openItem_, !1), this.openItem_ = a) | |
| }; | |
| d.handleCloseItem = function(a) { | |
| a.target == this.openItem_ && (this.openItem_ = null); | |
| var b = this.getElement(), | |
| c = a.target.getElement(); | |
| b && a.target.state_ & 2 && c && (a = "", c && (a = c.id), yl(b, "activedescendant", a)) | |
| }; | |
| d.handleMouseDown = function(a) { | |
| this.enabled_ && (this.mouseButtonPressed_ = !0); | |
| var b = Xm(this); | |
| b && ug(b) && vg(b) ? b.focus() : a.preventDefault() | |
| }; | |
| d.handleDocumentMouseUp = function() { | |
| this.mouseButtonPressed_ = !1 | |
| }; | |
| d.handleChildMouseEvents = function(a) { | |
| var b = $m(this, a.target); | |
| if (b) switch (a.type) { | |
| case "mousedown": | |
| b.handleMouseDown(a); | |
| break; | |
| case "mouseup": | |
| b.handleMouseUp(a); | |
| break; | |
| case "mouseover": | |
| b.handleMouseOver(a); | |
| break; | |
| case "mouseout": | |
| b.handleMouseOut(a); | |
| break; | |
| case "contextmenu": | |
| b.handleContextMenu(a) | |
| } | |
| }; | |
| var $m = function(a, b) { | |
| if (a.childElementIdMap_) | |
| for (var c = a.getElement(); b && b !== c;) { | |
| var e = b.id; | |
| if (e in a.childElementIdMap_) return a.childElementIdMap_[e]; | |
| b = b.parentNode | |
| } | |
| return null | |
| }; | |
| Wm.prototype.goog_ui_Container_prototype$handleFocus = function() {}; | |
| Wm.prototype.goog_ui_Container_prototype$handleBlur = function() { | |
| this.goog_ui_Container_prototype$setHighlightedIndex(-1); | |
| this.mouseButtonPressed_ = !1; | |
| this.openItem_ && Vl(this.openItem_, !1) | |
| }; | |
| Wm.prototype.handleKeyEvent = function(a) { | |
| return this.isEnabled() && this.isVisible() && (0 != kl(this) || this.keyEventTarget_) && this.goog_ui_Container_prototype$handleKeyEventInternal(a) ? (a.preventDefault(), a.stopPropagation(), !0) : !1 | |
| }; | |
| Wm.prototype.goog_ui_Container_prototype$handleKeyEventInternal = function(a) { | |
| var b = ll(this, this.goog_ui_Container_prototype$highlightedIndex_); | |
| if (b && "function" == typeof b.handleKeyEvent && b.handleKeyEvent(a) || this.openItem_ && this.openItem_ != b && "function" == typeof this.openItem_.handleKeyEvent && this.openItem_.handleKeyEvent(a)) return !0; | |
| if (a.shiftKey || a.ctrlKey || a.metaKey || a.altKey) return !1; | |
| switch (a.goog_events_BrowserEvent$keyCode) { | |
| case 27: | |
| if (this.goog_ui_Container_prototype$focusable_) Xm(this).blur(); | |
| else return !1; | |
| break; | |
| case 36: | |
| an(this); | |
| break; | |
| case 35: | |
| bn(this); | |
| break; | |
| case 38: | |
| if ("vertical" == this.goog_ui_Container_prototype$orientation_) cn(this); | |
| else return !1; | |
| break; | |
| case 37: | |
| if ("horizontal" == this.goog_ui_Container_prototype$orientation_) ml(this) ? dn(this) : cn(this); | |
| else return !1; | |
| break; | |
| case 40: | |
| if ("vertical" == this.goog_ui_Container_prototype$orientation_) dn(this); | |
| else return !1; | |
| break; | |
| case 39: | |
| if ("horizontal" == this.goog_ui_Container_prototype$orientation_) ml(this) ? cn(this) : dn(this); | |
| else return !1; | |
| break; | |
| default: | |
| return !1 | |
| } | |
| return !0 | |
| }; | |
| var Ym = function(a, b) { | |
| var c = b.getElement(); | |
| c = c.id || (c.id = b.getId()); | |
| a.childElementIdMap_ || (a.childElementIdMap_ = {}); | |
| a.childElementIdMap_[c] = b | |
| }; | |
| d = Wm.prototype; | |
| d.goog_ui_Component_prototype$addChildAt = function(a, b, c) { | |
| a.statesWithTransitionEvents_ |= 2; | |
| a.statesWithTransitionEvents_ |= 64; | |
| a.setSupportedState(32, !1); | |
| a.inDocument_ && 0 != a.handleMouseEvents_ && Pl(a, !1); | |
| a.handleMouseEvents_ = !1; | |
| var e = a.goog_ui_Component_prototype$getParent() == this ? nl(this, a) : -1; | |
| Wm.superClass_.goog_ui_Component_prototype$addChildAt.call(this, a, b, c); | |
| a.inDocument_ && this.inDocument_ && Ym(this, a); | |
| a = e; - 1 == a && (a = kl(this)); | |
| a == this.goog_ui_Container_prototype$highlightedIndex_ ? this.goog_ui_Container_prototype$highlightedIndex_ = | |
| Math.min(kl(this) - 1, b) : a > this.goog_ui_Container_prototype$highlightedIndex_ && b <= this.goog_ui_Container_prototype$highlightedIndex_ ? this.goog_ui_Container_prototype$highlightedIndex_++ : a < this.goog_ui_Container_prototype$highlightedIndex_ && b > this.goog_ui_Container_prototype$highlightedIndex_ && this.goog_ui_Container_prototype$highlightedIndex_-- | |
| }; | |
| d.removeChild = function(a, b) { | |
| if (a = u(a) ? gl(this, a) : a) { | |
| var c = nl(this, a); - 1 != c && (c == this.goog_ui_Container_prototype$highlightedIndex_ ? (a.goog_ui_Control_prototype$setHighlighted(!1), this.goog_ui_Container_prototype$highlightedIndex_ = -1) : c < this.goog_ui_Container_prototype$highlightedIndex_ && this.goog_ui_Container_prototype$highlightedIndex_--); | |
| var e = a.getElement(); | |
| e && e.id && this.childElementIdMap_ && (c = this.childElementIdMap_, e = e.id, e in c && delete c[e]) | |
| } | |
| c = a = Wm.superClass_.removeChild.call(this, a, b); | |
| c.inDocument_ && | |
| 1 != c.handleMouseEvents_ && Pl(c, !0); | |
| c.handleMouseEvents_ = !0; | |
| return a | |
| }; | |
| d.isVisible = function() { | |
| return this.goog_ui_Container_prototype$visible_ | |
| }; | |
| d.setVisible = function(a, b) { | |
| if (b || this.goog_ui_Container_prototype$visible_ != a && ne(this, a ? "show" : "hide")) { | |
| this.goog_ui_Container_prototype$visible_ = a; | |
| var c = this.getElement(); | |
| c && (Ej(c, a), this.goog_ui_Container_prototype$focusable_ && Sm(Xm(this), this.enabled_ && this.goog_ui_Container_prototype$visible_), b || ne(this, this.goog_ui_Container_prototype$visible_ ? "aftershow" : "afterhide")); | |
| return !0 | |
| } | |
| return !1 | |
| }; | |
| d.isEnabled = function() { | |
| return this.enabled_ | |
| }; | |
| d.setEnabled = function(a) { | |
| this.enabled_ != a && ne(this, a ? "enable" : "disable") && (a ? (this.enabled_ = !0, jl(this, function(a) { | |
| a.wasDisabled ? delete a.wasDisabled : a.setEnabled(!0) | |
| })) : (jl(this, function(a) { | |
| a.isEnabled() ? a.setEnabled(!1) : a.wasDisabled = !0 | |
| }), this.mouseButtonPressed_ = this.enabled_ = !1), this.goog_ui_Container_prototype$focusable_ && Sm(Xm(this), a && this.goog_ui_Container_prototype$visible_)) | |
| }; | |
| var en = function(a, b) { | |
| b != a.goog_ui_Container_prototype$focusable_ && a.inDocument_ && Zm(a, b); | |
| a.goog_ui_Container_prototype$focusable_ = b; | |
| a.enabled_ && a.goog_ui_Container_prototype$visible_ && Sm(Xm(a), b) | |
| }; | |
| Wm.prototype.goog_ui_Container_prototype$setHighlightedIndex = function(a) { | |
| (a = ll(this, a)) ? a.goog_ui_Control_prototype$setHighlighted(!0): -1 < this.goog_ui_Container_prototype$highlightedIndex_ && ll(this, this.goog_ui_Container_prototype$highlightedIndex_).goog_ui_Control_prototype$setHighlighted(!1) | |
| }; | |
| var an = function(a) { | |
| fn(a, function(a, c) { | |
| return (a + 1) % c | |
| }, kl(a) - 1) | |
| }, | |
| bn = function(a) { | |
| fn(a, function(a, c) { | |
| a--; | |
| return 0 > a ? c - 1 : a | |
| }, 0) | |
| }, | |
| dn = function(a) { | |
| fn(a, function(a, c) { | |
| return (a + 1) % c | |
| }, a.goog_ui_Container_prototype$highlightedIndex_) | |
| }, | |
| cn = function(a) { | |
| fn(a, function(a, c) { | |
| a--; | |
| return 0 > a ? c - 1 : a | |
| }, a.goog_ui_Container_prototype$highlightedIndex_) | |
| }, | |
| fn = function(a, b, c) { | |
| c = 0 > c ? nl(a, a.openItem_) : c; | |
| var e = kl(a); | |
| c = b.call(a, c, e); | |
| for (var f = 0; f <= e;) { | |
| var g = ll(a, c); | |
| if (g && a.canHighlightItem(g)) { | |
| a.goog_ui_Container_prototype$setHighlightedIndex(c); | |
| break | |
| } | |
| f++; | |
| c = b.call(a, c, e) | |
| } | |
| }; | |
| Wm.prototype.canHighlightItem = function(a) { | |
| return a.isVisible() && a.isEnabled() && !!(a.supportedStates_ & 2) | |
| }; | |
| var gn = function() {}; | |
| w(gn, Bl); | |
| xa(gn); | |
| gn.prototype.goog_ui_ControlRenderer_prototype$getCssClass = function() { | |
| return "goog-menuheader" | |
| }; | |
| var hn = function(a, b, c) { | |
| U.call(this, a, c || gn.getInstance(), b); | |
| this.setSupportedState(1, !1); | |
| this.setSupportedState(2, !1); | |
| this.setSupportedState(4, !1); | |
| this.setSupportedState(32, !1); | |
| this.state_ = 1 | |
| }; | |
| w(hn, U); | |
| Nl("goog-menuheader", function() { | |
| return new hn(null) | |
| }); | |
| var jn = function() { | |
| this.classNameCache_ = [] | |
| }; | |
| w(jn, Bl); | |
| xa(jn); | |
| var kn = function(a, b) { | |
| var c = a.classNameCache_[b]; | |
| if (!c) { | |
| switch (b) { | |
| case 0: | |
| c = a.goog_ui_ControlRenderer_prototype$getCssClass() + "-highlight"; | |
| break; | |
| case 1: | |
| c = a.goog_ui_ControlRenderer_prototype$getCssClass() + "-checkbox"; | |
| break; | |
| case 2: | |
| c = a.goog_ui_ControlRenderer_prototype$getCssClass() + "-content" | |
| } | |
| a.classNameCache_[b] = c | |
| } | |
| return c | |
| }; | |
| d = jn.prototype; | |
| d.goog_ui_ControlRenderer_prototype$getAriaRole = function() { | |
| return "menuitem" | |
| }; | |
| d.createDom = function(a) { | |
| var b = a.goog_ui_Component$dom_.createDom("DIV", El(this, a).join(" "), ln(this, a.goog_ui_Control_prototype$content_, a.goog_ui_Component$dom_)); | |
| mn(this, a, b, !!(a.supportedStates_ & 8) || !!(a.supportedStates_ & 16)); | |
| return b | |
| }; | |
| d.goog_ui_ControlRenderer_prototype$getContentElement = function(a) { | |
| return a && a.firstChild | |
| }; | |
| d.goog_ui_ControlRenderer_prototype$decorate = function(a, b) { | |
| if (va(b.firstElementChild)) var c = b.firstElementChild; | |
| else | |
| for (c = b.firstChild; c && 1 != c.nodeType;) c = c.nextSibling; | |
| var e = kn(this, 2); | |
| c && lb(c, e) || b.appendChild(ln(this, b.childNodes, a.goog_ui_Component$dom_)); | |
| lb(b, "goog-option") && (a.setSupportedState(16, !0), a && b && mn(this, a, b, !0)); | |
| return jn.superClass_.goog_ui_ControlRenderer_prototype$decorate.call(this, a, b) | |
| }; | |
| d.goog_ui_ControlRenderer_prototype$setContent = function(a, b) { | |
| var c = this.goog_ui_ControlRenderer_prototype$getContentElement(a), | |
| e = nn(this, a) ? c.firstChild : null; | |
| jn.superClass_.goog_ui_ControlRenderer_prototype$setContent.call(this, a, b); | |
| e && !nn(this, a) && c.insertBefore(e, c.firstChild || null) | |
| }; | |
| var ln = function(a, b, c) { | |
| a = kn(a, 2); | |
| return c.createDom("DIV", a, b) | |
| }, | |
| nn = function(a, b) { | |
| var c = a.goog_ui_ControlRenderer_prototype$getContentElement(b); | |
| if (c) { | |
| c = c.firstChild; | |
| var e = kn(a, 1); | |
| return !!c && Ca(c) && 1 == c.nodeType && lb(c, e) | |
| } | |
| return !1 | |
| }, | |
| mn = function(a, b, c, e) { | |
| Hl(a, c, b.getPreferredAriaRole()); | |
| Jl(b, c); | |
| e != nn(a, c) && (e ? mb(c, "goog-option") : ob(c, "goog-option"), c = a.goog_ui_ControlRenderer_prototype$getContentElement(c), e ? (a = kn(a, 1), c.insertBefore(b.goog_ui_Component$dom_.createDom("DIV", a), c.firstChild || null)) : c.removeChild(c.firstChild)) | |
| }; | |
| jn.prototype.getClassForState = function(a) { | |
| switch (a) { | |
| case 2: | |
| return kn(this, 0); | |
| case 16: | |
| case 8: | |
| return "goog-option-selected"; | |
| default: | |
| return jn.superClass_.getClassForState.call(this, a) | |
| } | |
| }; | |
| jn.prototype.getStateFromClass = function(a) { | |
| var b = kn(this, 0); | |
| switch (a) { | |
| case "goog-option-selected": | |
| return 16; | |
| case b: | |
| return 2; | |
| default: | |
| return jn.superClass_.getStateFromClass.call(this, a) | |
| } | |
| }; | |
| jn.prototype.goog_ui_ControlRenderer_prototype$getCssClass = function() { | |
| return "goog-menuitem" | |
| }; | |
| var on = function(a, b, c, e) { | |
| U.call(this, a, e || jn.getInstance(), c); | |
| this.model_ = b | |
| }; | |
| w(on, U); | |
| d = on.prototype; | |
| d.getValue = function() { | |
| var a = this.model_; | |
| return null != a ? a : this.getCaption() | |
| }; | |
| d.setSupportedState = function(a, b) { | |
| on.superClass_.setSupportedState.call(this, a, b); | |
| switch (a) { | |
| case 8: | |
| this.state_ & 16 && !b && Ul(this, !1); | |
| var c = this.getElement(); | |
| c && this && c && mn(this.goog_ui_Control_prototype$renderer_, this, c, b); | |
| break; | |
| case 16: | |
| (c = this.getElement()) && this && c && mn(this.goog_ui_Control_prototype$renderer_, this, c, b) | |
| } | |
| }; | |
| d.getCaption = function() { | |
| var a = this.goog_ui_Control_prototype$content_; | |
| return za(a) ? (a = $a(a, function(a) { | |
| return Ca(a) && 1 == a.nodeType && (lb(a, "goog-menuitem-accel") || lb(a, "goog-menuitem-mnemonic-separator")) ? "" : yg(a) | |
| }).join(""), vb(a)) : on.superClass_.getCaption.call(this) | |
| }; | |
| d.handleMouseUp = function(a) { | |
| var b = this.goog_ui_Component_prototype$getParent(); | |
| if (b) { | |
| var c = b.openingCoords; | |
| b.openingCoords = null; | |
| if (c && v(a.clientX) && Ye(c, new A(a.clientX, a.clientY))) return | |
| } | |
| on.superClass_.handleMouseUp.call(this, a) | |
| }; | |
| d.goog_ui_Control_prototype$handleKeyEventInternal = function(a) { | |
| return a.goog_events_BrowserEvent$keyCode == this.mnemonicKey_ && this.performActionInternal(a) ? !0 : on.superClass_.goog_ui_Control_prototype$handleKeyEventInternal.call(this, a) | |
| }; | |
| d.getMnemonic = function() { | |
| return this.mnemonicKey_ | |
| }; | |
| Nl("goog-menuitem", function() { | |
| return new on(null) | |
| }); | |
| on.prototype.getPreferredAriaRole = function() { | |
| return this.supportedStates_ & 16 ? "menuitemcheckbox" : this.supportedStates_ & 8 ? "menuitemradio" : on.superClass_.getPreferredAriaRole.call(this) | |
| }; | |
| on.prototype.goog_ui_Component_prototype$getParent = function() { | |
| return U.prototype.goog_ui_Component_prototype$getParent.call(this) | |
| }; | |
| on.prototype.getParentEventTarget = function() { | |
| return U.prototype.getParentEventTarget.call(this) | |
| }; | |
| var pn = function() {}; | |
| w(pn, Bl); | |
| xa(pn); | |
| pn.prototype.createDom = function(a) { | |
| return a.goog_ui_Component$dom_.createDom("DIV", this.goog_ui_ControlRenderer_prototype$getCssClass()) | |
| }; | |
| pn.prototype.goog_ui_ControlRenderer_prototype$decorate = function(a, b) { | |
| b.id && el(a, b.id); | |
| if ("HR" == b.tagName) { | |
| var c = b; | |
| b = this.createDom(a); | |
| c.parentNode && c.parentNode.insertBefore(b, c); | |
| C(c) | |
| } else mb(b, this.goog_ui_ControlRenderer_prototype$getCssClass()); | |
| return b | |
| }; | |
| pn.prototype.goog_ui_ControlRenderer_prototype$setContent = function() {}; | |
| pn.prototype.goog_ui_ControlRenderer_prototype$getCssClass = function() { | |
| return "goog-menuseparator" | |
| }; | |
| var qn = function(a, b) { | |
| U.call(this, null, a || pn.getInstance(), b); | |
| this.setSupportedState(1, !1); | |
| this.setSupportedState(2, !1); | |
| this.setSupportedState(4, !1); | |
| this.setSupportedState(32, !1); | |
| this.state_ = 1 | |
| }; | |
| w(qn, U); | |
| qn.prototype.enterDocument = function() { | |
| qn.superClass_.enterDocument.call(this); | |
| var a = this.getElement(); | |
| xl(a, "separator") | |
| }; | |
| Nl("goog-menuseparator", function() { | |
| return new qn | |
| }); | |
| var rn = function(a) { | |
| this.ariaRole_ = a || "menu" | |
| }; | |
| w(rn, Rm); | |
| xa(rn); | |
| rn.prototype.goog_ui_ContainerRenderer_prototype$canDecorate = function(a) { | |
| return "UL" == a.tagName || rn.superClass_.goog_ui_ContainerRenderer_prototype$canDecorate.call(this, a) | |
| }; | |
| rn.prototype.getDecoratorForChild = function(a) { | |
| return "HR" == a.tagName ? new qn : rn.superClass_.getDecoratorForChild.call(this, a) | |
| }; | |
| rn.prototype.goog_ui_ContainerRenderer_prototype$getCssClass = function() { | |
| return "goog-menu" | |
| }; | |
| rn.prototype.goog_ui_ContainerRenderer_prototype$initializeDom = function(a) { | |
| rn.superClass_.goog_ui_ContainerRenderer_prototype$initializeDom.call(this, a); | |
| a = a.getElement(); | |
| yl(a, "haspopup", "true") | |
| }; | |
| Nl("goog-menuseparator", function() { | |
| return new qn | |
| }); | |
| var sn = function(a, b) { | |
| Wm.call(this, "vertical", b || rn.getInstance(), a); | |
| en(this, !1) | |
| }; | |
| w(sn, Wm); | |
| sn.prototype.allowAutoFocus_ = !0; | |
| var tn = function(a) { | |
| a.allowAutoFocus_ = !0; | |
| en(a, !0) | |
| }; | |
| d = sn.prototype; | |
| d.setVisible = function(a, b, c) { | |
| (b = sn.superClass_.setVisible.call(this, a, b)) && a && this.inDocument_ && this.allowAutoFocus_ && Xm(this).focus(); | |
| a && c && v(c.clientX) ? this.openingCoords = new A(c.clientX, c.clientY) : this.openingCoords = null; | |
| return b | |
| }; | |
| d.handleEnterItem = function(a) { | |
| this.allowAutoFocus_ && Xm(this).focus(); | |
| return sn.superClass_.handleEnterItem.call(this, a) | |
| }; | |
| d.canHighlightItem = function(a) { | |
| return a.isEnabled() && a.isVisible() && !!(a.supportedStates_ & 2) | |
| }; | |
| d.decorateInternal = function(a) { | |
| for (var b = this.goog_ui_Container_prototype$renderer_, c = dg(this.goog_ui_Component$dom_.document_, "DIV", b.goog_ui_ContainerRenderer_prototype$getCssClass() + "-content", a), e = c.length, f = 0; f < e; f++) Um(b, this, c[f]); | |
| sn.superClass_.decorateInternal.call(this, a) | |
| }; | |
| d.goog_ui_Container_prototype$handleKeyEventInternal = function(a) { | |
| var b = sn.superClass_.goog_ui_Container_prototype$handleKeyEventInternal.call(this, a); | |
| b || jl(this, function(c) { | |
| !b && c.getMnemonic && c.mnemonicKey_ == a.goog_events_BrowserEvent$keyCode && (this.isEnabled() && this.goog_ui_Container_prototype$setHighlightedIndex(nl(this, c)), b = c.handleKeyEvent(a)) | |
| }, this); | |
| return b | |
| }; | |
| d.goog_ui_Container_prototype$setHighlightedIndex = function(a) { | |
| sn.superClass_.goog_ui_Container_prototype$setHighlightedIndex.call(this, a); | |
| if (a = ll(this, a)) { | |
| var b = a.getElement(); | |
| a = this.getElement() || ig(document); | |
| var c = a || ig(document); | |
| var e = Bj(b), | |
| f = Bj(c); | |
| if (!z || 9 <= Number(xd)) { | |
| h = xj(c, "borderLeftWidth"); | |
| var g = xj(c, "borderRightWidth"); | |
| m = xj(c, "borderTopWidth"); | |
| n = xj(c, "borderBottomWidth"); | |
| g = new uj(parseFloat(m), parseFloat(g), parseFloat(n), parseFloat(h)) | |
| } else { | |
| var h = Ij(c, "borderLeft"); | |
| g = Ij(c, "borderRight"); | |
| var m = Ij(c, "borderTop"), | |
| n = Ij(c, "borderBottom"); | |
| g = new uj(m, g, n, h) | |
| } | |
| c == ig(document) ? (h = e.x - c.scrollLeft, e = e.y - c.scrollTop, !z || 10 <= Number(xd) || (h += g.left, e += g.top)) : (h = e.x - f.x - g.left, e = e.y - f.y - g.top); | |
| b = Cj(b); | |
| f = c.clientHeight - b.height; | |
| g = c.scrollLeft; | |
| m = c.scrollTop; | |
| g += Math.min(h, Math.max(h - (c.clientWidth - b.width), 0)); | |
| m += Math.min(e, Math.max(e - f, 0)); | |
| c = new A(g, m); | |
| a.scrollLeft = c.x; | |
| a.scrollTop = c.y | |
| } | |
| }; | |
| var vn = function(a, b) { | |
| this.Blockly_FieldDropdown$menuGenerator_ = a; | |
| this.Blockly_FieldDropdown_prototype$trimOptions(); | |
| var c = un(this)[0]; | |
| vn.superClass_.constructor.call(this, c[1], b); | |
| bk(this, "dropdown") | |
| }; | |
| w(vn, Wj); | |
| d = vn.prototype; | |
| d.CURSOR = "default"; | |
| d.selectedItem = null; | |
| d.value = ""; | |
| d.disableColourChange_ = !1; | |
| d.init = function() { | |
| if (!this.fieldGroup_) { | |
| this.Blockly_FieldDropdown$arrowSize_ = 12; | |
| this.Blockly_FieldDropdown$arrowX_ = 0; | |
| this.Blockly_FieldDropdown$arrowY_ = 11; | |
| this.arrow_ = O("image", { | |
| height: this.Blockly_FieldDropdown$arrowSize_ + "px", | |
| width: this.Blockly_FieldDropdown$arrowSize_ + "px" | |
| }); | |
| this.arrow_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", K.options.pathToMedia + "dropdown-arrow.svg"); | |
| vn.superClass_.init.call(this); | |
| this.Blockly_Field_prototype$sourceBlock.isShadowBlock || (this.box_ = O("rect", { | |
| rx: 4, | |
| ry: 4, | |
| x: 0, | |
| y: 0, | |
| width: this.Blockly_Field$size_.width, | |
| height: this.Blockly_Field$size_.height, | |
| stroke: this.Blockly_Field_prototype$sourceBlock.colourTertiary_, | |
| fill: this.Blockly_Field_prototype$sourceBlock.colour_, | |
| "class": "blocklyBlockBackground", | |
| "fill-opacity": 1 | |
| }, null), this.fieldGroup_.insertBefore(this.box_, this.textElement_)); | |
| var a = this.text; | |
| this.text = null; | |
| this.Blockly_Field_prototype$setText(a) | |
| } | |
| }; | |
| d.showEditor = function() { | |
| this.dropDownOpen_ = !0; | |
| ei(); | |
| Jj.innerHTML = ""; | |
| var a = Jj, | |
| b = this, | |
| c = new sn; | |
| c.goog_ui_Component_prototype$setRightToLeft(this.Blockly_Field_prototype$sourceBlock.RTL); | |
| for (var e = un(this), f = 0; f < e.length; f++) { | |
| var g = e[f][0], | |
| h = e[f][1]; | |
| if ("object" == typeof g) { | |
| var m = new Image(g.width, g.height); | |
| m.src = g.src; | |
| m.alt = g.alt || ""; | |
| g = m | |
| } | |
| g = new on(g); | |
| g.goog_ui_Component_prototype$setRightToLeft(this.Blockly_Field_prototype$sourceBlock.RTL); | |
| g.model_ = h; | |
| g.setSupportedState(16, !0); | |
| c.goog_ui_Component_prototype$addChildAt(g, | |
| kl(c), !0); | |
| h = h == this.value; | |
| Ul(g, h); | |
| h && (this.selectedItem = g) | |
| } | |
| $d(c, "action", function(a) { | |
| if (a = a.target) b.onItemSelected(this, a); | |
| Vj(); | |
| ci(!1) | |
| }); | |
| $d(c, "touchstart", function(a) { | |
| $m(this, a.target).handleMouseDown(a) | |
| }); | |
| $d(c, "touchend", function(a) { | |
| $m(this, a.target).performActionInternal(a) | |
| }); | |
| c.render(a); | |
| a = c.getElement(); | |
| Hi(a, "blocklyDropdownMenu"); | |
| Dj(a).height = a.scrollHeight; | |
| Qj(this.Blockly_Field_prototype$sourceBlock.isShadowBlock ? this.Blockly_Field_prototype$sourceBlock.parentBlock.colour_ : this.Blockly_Field_prototype$sourceBlock.colour_, | |
| this.Blockly_Field_prototype$sourceBlock.colourTertiary_); | |
| Rj(this.Blockly_Field_prototype$sourceBlock.isShadowBlock ? this.Blockly_Field_prototype$sourceBlock.parentBlock.category_ : this.Blockly_Field_prototype$sourceBlock.category_); | |
| f = this.Blockly_Field_prototype$sourceBlock.workspace.scale; | |
| h = this.Blockly_Field$size_.width; | |
| e = this.Blockly_Field$size_.height; | |
| h *= f; | |
| e *= f; | |
| f = this.fieldGroup_.getBoundingClientRect(); | |
| h = f.left + h / 2; | |
| e = f.top + e; | |
| f = f.top; | |
| Mj = Sj(this.Blockly_Field_prototype$sourceBlock.workspace).parentNode; | |
| Tj(this, h, e, h, f, this.Blockly_FieldDropdown_prototype$onHide.bind(this)); | |
| tn(c); | |
| a.focus(); | |
| this.disableColourChange_ || (this.Blockly_Field_prototype$sourceBlock.isShadowBlock ? (this.savedPrimary_ = this.Blockly_Field_prototype$sourceBlock.colour_, this.Blockly_Field_prototype$sourceBlock.setColour(this.Blockly_Field_prototype$sourceBlock.colourTertiary_, this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_)) : this.box_ && this.box_.setAttribute("fill", | |
| this.Blockly_Field_prototype$sourceBlock.colourTertiary_)) | |
| }; | |
| d.Blockly_FieldDropdown_prototype$onHide = function() { | |
| this.dropDownOpen_ = !1; | |
| !this.disableColourChange_ && this.Blockly_Field_prototype$sourceBlock && (this.Blockly_Field_prototype$sourceBlock.isShadowBlock ? this.Blockly_Field_prototype$sourceBlock.setColour(this.savedPrimary_, this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_) : this.box_ && this.box_.setAttribute("fill", this.Blockly_Field_prototype$sourceBlock.colour_)) | |
| }; | |
| d.onItemSelected = function(a, b) { | |
| var c = b.getValue(); | |
| this.Blockly_Field_prototype$sourceBlock && (c = ck(this, c)); | |
| null !== c && this.Blockly_Field_prototype$setValue(c) | |
| }; | |
| d.Blockly_FieldDropdown_prototype$trimOptions = function() { | |
| this.suffixField = this.prefixField = null; | |
| var a = this.Blockly_FieldDropdown$menuGenerator_; | |
| if (za(a)) { | |
| for (var b = !1, c = 0; c < a.length; c++) { | |
| var e = a[c][0]; | |
| "string" == typeof e ? a[c][0] = vk(e) : (null != e.alt && (a[c][0].alt = vk(e.alt)), b = !0) | |
| } | |
| if (!(b || 2 > a.length)) { | |
| var f = []; | |
| for (c = 0; c < a.length; c++) f.push(a[c][0]); | |
| c = rk(f); | |
| b = sk(f, c); | |
| e = tk(f, c); | |
| if ((b || e) && !(c <= b + e)) { | |
| b && (this.prefixField = f[0].substring(0, b - 1)); | |
| e && (this.suffixField = f[0].substr(1 - e)); | |
| f = []; | |
| for (c = 0; c < a.length; c++) { | |
| var g = | |
| a[c][0], | |
| h = a[c][1]; | |
| g = g.substring(b, g.length - e); | |
| f[c] = [g, h] | |
| } | |
| this.Blockly_FieldDropdown$menuGenerator_ = f | |
| } | |
| } | |
| } | |
| }; | |
| var un = function(a) { | |
| return Ba(a.Blockly_FieldDropdown$menuGenerator_) ? a.Blockly_FieldDropdown$menuGenerator_.call(a) : a.Blockly_FieldDropdown$menuGenerator_ | |
| }; | |
| d = vn.prototype; | |
| d.getValue = function() { | |
| return this.value | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| if (null !== a && a !== this.value) { | |
| this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.value, a)); | |
| this.selectedItem && (Ul(this.selectedItem, !1), this.selectedItem = null); | |
| this.value = a; | |
| for (var b = un(this), c = 0; c < b.length; c++) | |
| if (b[c][1] == a) { | |
| a = b[c][0]; | |
| "object" == typeof a ? this.Blockly_Field_prototype$setText(a.alt) : this.Blockly_Field_prototype$setText(a); | |
| return | |
| } this.Blockly_Field_prototype$setText(a) | |
| } | |
| }; | |
| d.Blockly_Field_prototype$setText = function(a) { | |
| null !== a && a !== this.text && (this.text = a, this.textElement_ && (a = this.text, 4 < a.length ? (a = a.substring(0, 2) + "\u2026", this.textElement_.setAttribute("class", "blocklyText blocklyTextTruncated")) : this.textElement_.setAttribute("class", "blocklyText"), ng(this.textElement_), a = a.replace(/\s/g, "\u00a0"), this.Blockly_Field_prototype$sourceBlock.RTL && a && (a += "\u200f"), a || (a = "\u00a0"), this.textElement_.appendChild(document.createTextNode(a)), this.Blockly_Field$size_.width = | |
| 0), this.textElement_ && (this.textElement_.setAttribute("class", this.textElement_.getAttribute("class") + " blocklyDropdownText"), this.textElement_.parentNode.appendChild(this.arrow_)), this.Blockly_Field_prototype$sourceBlock && this.Blockly_Field_prototype$sourceBlock.rendered && (this.Blockly_Field_prototype$sourceBlock.render(), ik(this.Blockly_Field_prototype$sourceBlock))) | |
| }; | |
| d.positionArrow = function(a) { | |
| if (!this.arrow_) return 0; | |
| this.Blockly_FieldDropdown$arrowX_ = this.Blockly_Field_prototype$sourceBlock.RTL ? this.Blockly_FieldDropdown$arrowSize_ - 0 : a + 0; | |
| a = this.Blockly_FieldDropdown$arrowSize_ + 0; | |
| this.box_ && (this.Blockly_FieldDropdown$arrowX_ += 0); | |
| this.arrow_.setAttribute("transform", "translate(" + this.Blockly_FieldDropdown$arrowX_ + "," + this.Blockly_FieldDropdown$arrowY_ + ")"); | |
| return a | |
| }; | |
| d.dispose = function() { | |
| this.selectedItem = null; | |
| Fk(this); | |
| vn.superClass_.dispose.call(this) | |
| }; | |
| var wn = function(a, b, c, e) { | |
| this.dropDownOpen_ = !1; | |
| this.Blockly_FieldTextDropdown_prototype$trimOptions(); | |
| wn.superClass_.constructor.call(this, a, c, e); | |
| bk(this, "textdropdown") | |
| }; | |
| w(wn, Dk); | |
| d = wn.prototype; | |
| d.init = function() { | |
| wn.superClass_.init.call(this); | |
| this.arrow_ || (this.Blockly_FieldTextInput$arrowSize_ = 12, this.Blockly_FieldTextInput$arrowY_ = 11, this.arrow_ = O("image", { | |
| height: this.Blockly_FieldTextInput$arrowSize_ + "px", | |
| width: this.Blockly_FieldTextInput$arrowSize_ + "px" | |
| }), this.arrow_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", K.options.pathToMedia + "dropdown-arrow-dark.svg"), this.arrow_.style.cursor = "pointer", this.fieldGroup_.appendChild(this.arrow_), this.mouseUpWrapper_ = T(this.arrow_, | |
| "mouseup", this, this.showDropdown_)); | |
| this.disableColourChange_ = !0 | |
| }; | |
| d.Blockly_FieldTextDropdown_prototype$trimOptions = vn.prototype.Blockly_FieldDropdown_prototype$trimOptions; | |
| d.dispose = function() { | |
| this.mouseUpWrapper_ && (Oh(this.mouseUpWrapper_), J = this.mouseUpWrapper_ = null); | |
| wn.superClass_.dispose.call(this) | |
| }; | |
| d.showEditor = function() { | |
| this.dropDownOpen_ || wn.superClass_.showEditor.call(this, void 0, void 0, !0, function() { | |
| L(); | |
| this.showDropdown_(); | |
| J = null | |
| }) | |
| }; | |
| d.positionArrow = vn.prototype.positionArrow; | |
| d.showDropdown_ = vn.prototype.showEditor; | |
| var xn = function(a, b, c, e, f, g) { | |
| c = this.Blockly_FieldNumberDropdown_prototype$getNumRestrictor(c, e, f); | |
| xn.superClass_.constructor.call(this, a, b, g, c); | |
| bk(this, "numberdropdown") | |
| }; | |
| xn.prototype.Blockly_FieldNumberDropdown_prototype$getNumRestrictor = Lm.prototype.Blockly_FieldNumber_prototype$getNumRestrictor; | |
| w(xn, wn); | |
| var M = {}; | |
| var Ti = [, 2, 1, 4, 3]; | |
| var Xh = function(a) { | |
| if (a instanceof oi) var b = a.getDescendants(); | |
| else if (a instanceof Wh || a instanceof V) b = ai(a); | |
| else throw "Not Block or Workspace: " + a; | |
| a = Object.create(null); | |
| for (var c = 0; c < b.length; c++) { | |
| var e = ii(b[c]); | |
| if (e) | |
| for (var f = 0; f < e.length; f++) { | |
| var g = e[f]; | |
| g && "No variable selected" != g.toLowerCase() && (a[g.toLowerCase()] = g) | |
| } | |
| } | |
| b = []; | |
| for (var h in a) b.push(a[h]); | |
| return b | |
| }, | |
| Dn = function(a) { | |
| var b = a.variableList; | |
| b.sort(xb); | |
| var c = [], | |
| e = B("button"); | |
| e.setAttribute("text", M.NEW_VARIABLE); | |
| e.setAttribute("callbackKey", | |
| "CREATE_VARIABLE"); | |
| yn(a, function(a) { | |
| zn(a.targetWorkspace_) | |
| }); | |
| c.push(e); | |
| for (a = 0; a < b.length; a++) | |
| if (H.data_variable) { | |
| e = B("block"); | |
| e.setAttribute("type", "data_variable"); | |
| e.setAttribute("gap", 8); | |
| var f = B("field", null, b[a]); | |
| f.setAttribute("name", "VARIABLE"); | |
| e.appendChild(f); | |
| c.push(e) | |
| } 1 < c.length && (c[c.length - 1].setAttribute("gap", 24), H.data_setvariableto && (e = B("block"), e.setAttribute("type", "data_setvariableto"), e.setAttribute("gap", 8), e.appendChild(An(b[0])), e.appendChild(Bn()), c.push(e)), H.data_changevariableby && | |
| (e = B("block"), e.setAttribute("type", "data_changevariableby"), e.setAttribute("gap", 8), e.appendChild(An(b[0])), e.appendChild(Cn()), c.push(e)), H.data_showvariable && (e = B("block"), e.setAttribute("type", "data_showvariable"), e.setAttribute("gap", 8), e.appendChild(An(b[0])), c.push(e)), H.data_hidevariable && (e = B("block"), e.setAttribute("type", "data_hidevariable"), e.appendChild(An(b[0])), c.push(e))); | |
| return c | |
| }, | |
| En = function(a) { | |
| var b = B("value"); | |
| b.setAttribute("name", a); | |
| return b | |
| }, | |
| Fn = function(a) { | |
| var b = B("shadow"); | |
| b.setAttribute("type", a); | |
| return b | |
| }, | |
| An = function(a) { | |
| var b = En("VARIABLE"), | |
| c = Fn("data_variablemenu"); | |
| a = B("field", null, a); | |
| a.setAttribute("name", "VARIABLE"); | |
| c.appendChild(a); | |
| b.appendChild(c); | |
| return b | |
| }, | |
| Bn = function() { | |
| var a = En("VALUE"), | |
| b = Fn("text"), | |
| c = B("field", null, "0"); | |
| c.setAttribute("name", "TEXT"); | |
| b.appendChild(c); | |
| a.appendChild(b); | |
| return a | |
| }, | |
| Cn = function() { | |
| var a = En("VALUE"), | |
| b = Fn("math_number"), | |
| c = B("field", null, "1"); | |
| c.setAttribute("name", "NUM"); | |
| b.appendChild(c); | |
| a.appendChild(b); | |
| return a | |
| }, | |
| Gn = function(a) { | |
| a = a.variableList; | |
| var b = ""; | |
| if (a.length) | |
| for (var c = 1, e = 0, f = "ijkmnopqrstuvwxyzabcdefgh".charAt(e); !b;) { | |
| for (var g = !1, h = 0; h < a.length; h++) | |
| if (a[h].toLowerCase() == f) { | |
| g = !0; | |
| break | |
| } g ? (e++, 25 == e && (e = 0, c++), f = "ijkmnopqrstuvwxyzabcdefgh".charAt(e), 1 < c && (f += c)) : b = f | |
| } else b = "i"; | |
| return b | |
| }, | |
| zn = function(a) { | |
| var b = function(c) { | |
| Hn(M.NEW_VARIABLE_TITLE, c, function(c) { | |
| c && (-1 != gi(a, c) ? li(M.VARIABLE_ALREADY_EXISTS.replace("%1", c.toLowerCase()), function() { | |
| b(c) | |
| }) : a.createVariable(c)) | |
| }) | |
| }; | |
| b("") | |
| }, | |
| Hn = function(a, b, c) { | |
| In(a, b, function(a) { | |
| a && (a = a.replace(/[\s\xa0]+/g, | |
| " ").replace(/^ | $/g, ""), a == M.RENAME_VARIABLE || a == M.NEW_VARIABLE) && (a = null); | |
| c(a) | |
| }) | |
| }; | |
| var Jn = function(a, b) { | |
| Jn.superClass_.constructor.call(this, Kn, b); | |
| this.Blockly_Field_prototype$setValue(a || ""); | |
| bk(this, "variable") | |
| }; | |
| w(Jn, vn); | |
| d = Jn.prototype; | |
| d.renameVarItemIndex_ = -1; | |
| d.deleteVarItemIndex_ = -1; | |
| d.init = function() { | |
| this.fieldGroup_ || (Jn.superClass_.init.call(this), this.getValue() || this.Blockly_Field_prototype$setValue(Gn(this.Blockly_Field_prototype$sourceBlock.isInFlyout ? this.Blockly_Field_prototype$sourceBlock.workspace.targetWorkspace : this.Blockly_Field_prototype$sourceBlock.workspace)), this.Blockly_Field_prototype$sourceBlock.isInFlyout || this.Blockly_Field_prototype$sourceBlock.workspace.createVariable(this.getValue())) | |
| }; | |
| d.getValue = function() { | |
| return this.Blockly_Field_prototype$getText() | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.value, a)); | |
| this.value = a; | |
| this.Blockly_Field_prototype$setText(a) | |
| }; | |
| var Kn = function() { | |
| var a = this.Blockly_Field_prototype$sourceBlock && this.Blockly_Field_prototype$sourceBlock.workspace ? this.Blockly_Field_prototype$sourceBlock.workspace.variableList.slice(0) : [], | |
| b = this.Blockly_Field_prototype$getText(); | |
| b && -1 == a.indexOf(b) && a.push(b); | |
| a.sort(xb); | |
| this.renameVarItemIndex_ = a.length; | |
| a.push(M.RENAME_VARIABLE); | |
| this.deleteVarItemIndex_ = a.length; | |
| a.push(M.DELETE_VARIABLE.replace("%1", b)); | |
| b = []; | |
| for (var c = 0; c < a.length; c++) b[c] = [a[c], a[c]]; | |
| return b | |
| }; | |
| Jn.prototype.onItemSelected = function(a, b) { | |
| var c = b.getValue(); | |
| if (this.Blockly_Field_prototype$sourceBlock) { | |
| var e = this.Blockly_Field_prototype$sourceBlock.workspace; | |
| if (0 <= this.renameVarItemIndex_ && ll(a, this.renameVarItemIndex_) === b) { | |
| var f = this.Blockly_Field_prototype$getText(); | |
| Di(); | |
| Hn(M.RENAME_VARIABLE_TITLE.replace("%1", f), f, function(a) { | |
| a && e.renameVariable(f, a) | |
| }); | |
| return | |
| } | |
| if (0 <= this.deleteVarItemIndex_ && ll(a, this.deleteVarItemIndex_) === b) { | |
| ni(e, this.Blockly_Field_prototype$getText()); | |
| return | |
| } | |
| c = ck(this, | |
| c) | |
| } | |
| null !== c && this.Blockly_Field_prototype$setValue(c) | |
| }; | |
| var Ln = function(a) { | |
| Ln.superClass_.constructor.call(this, a) | |
| }; | |
| w(Ln, Wj); | |
| Ln.prototype.EDITABLE = !0; | |
| Ln.prototype.init = function() { | |
| this.fieldGroup_ || (Ln.superClass_.init.call(this), this.getValue() || this.Blockly_Field_prototype$setValue(Gn(this.Blockly_Field_prototype$sourceBlock.isInFlyout ? this.Blockly_Field_prototype$sourceBlock.workspace.targetWorkspace : this.Blockly_Field_prototype$sourceBlock.workspace)), this.Blockly_Field_prototype$sourceBlock.isInFlyout || this.Blockly_Field_prototype$sourceBlock.workspace.createVariable(this.getValue())) | |
| }; | |
| Ln.prototype.showEditor = function() {}; | |
| Ln.prototype.updateEditable = function() {}; | |
| var Mn = !1, | |
| Nn = 0, | |
| On = 0, | |
| Pn = 0, | |
| Qn = 0, | |
| Rn = null, | |
| Sn = null, | |
| Tn = null, | |
| Km = function(a) { | |
| T(a, "mouseover", null, Un); | |
| T(a, "mouseout", null, Vn); | |
| a.addEventListener("mousemove", Wn, !1) | |
| }, | |
| Un = function(a) { | |
| for (a = a.target; !u(a.tooltip) && !Ba(a.tooltip);) a = a.tooltip; | |
| Rn != a && (Xn(), Sn = null, Rn = a); | |
| clearTimeout(Nn) | |
| }, | |
| Vn = function() { | |
| Nn = setTimeout(function() { | |
| Sn = Rn = null; | |
| Xn() | |
| }, 1); | |
| clearTimeout(On) | |
| }, | |
| Wn = function(a) { | |
| if (Rn && Rn.tooltip && 0 == Yn && !Zn) | |
| if (Mn) { | |
| var b = Pn - a.pageX; | |
| a = Qn - a.pageY; | |
| 10 < Math.sqrt(b * b + a * a) && Xn() | |
| } else Sn != Rn && (clearTimeout(On), Pn = a.pageX, | |
| Qn = a.pageY, On = setTimeout($n, 750)) | |
| }, | |
| Xn = function() { | |
| Mn && (Mn = !1, Tn && (Tn.style.display = "none")); | |
| clearTimeout(On) | |
| }, | |
| $n = function() { | |
| Sn = Rn; | |
| if (Tn) { | |
| ng(Tn); | |
| for (var a = Rn.tooltip; Ba(a);) a = a(); | |
| a = a.split("\n"); | |
| for (var b = 0; b < a.length; b++) { | |
| var c = b; | |
| var e = a[b], | |
| f = 50; | |
| if (e.length <= f) var g = e; | |
| else { | |
| for (var h = e.trim().split(/\s+/), m = 0; m < h.length; m++) h[m].length > f && (f = h[m].length); | |
| m = -Infinity; | |
| var n = 1; | |
| do { | |
| var p = m; | |
| g = e; | |
| e = []; | |
| var r = h.length / n, | |
| t = 1; | |
| for (m = 0; m < h.length - 1; m++) t < (m + 1.5) / r ? (t++, e[m] = !0) : e[m] = !1; | |
| e = yk(h, e, f); | |
| m = xk(h, e, f); | |
| r = | |
| h; | |
| t = []; | |
| for (var x = 0; x < r.length; x++) t.push(r[x]), void 0 !== e[x] && t.push(e[x] ? "\n" : " "); | |
| e = t.join(""); | |
| n++ | |
| } while (m > p) | |
| } | |
| a[c] = g | |
| } | |
| a = a.join("\n"); | |
| a = a.split("\n"); | |
| for (b = 0; b < a.length; b++) c = document.createElement("div"), c.appendChild(document.createTextNode(a[b])), Tn.appendChild(c); | |
| a = Rn.RTL; | |
| b = hg(); | |
| Tn.style.direction = a ? "rtl" : "ltr"; | |
| Tn.style.display = "block"; | |
| Mn = !0; | |
| c = Pn; | |
| c = a ? c - (0 + Tn.offsetWidth) : c + 0; | |
| g = Qn + 10; | |
| g + Tn.offsetHeight > b.height + window.scrollY && (g -= Tn.offsetHeight + 20); | |
| a ? c = Math.max(5 - window.scrollX, c) : c + Tn.offsetWidth > | |
| b.width + window.scrollX - 10 && (c = b.width - Tn.offsetWidth - 10); | |
| Tn.style.top = g + "px"; | |
| Tn.style.left = c + "px" | |
| } | |
| }; | |
| var ao = function(a, b) { | |
| this.Blockly_Field$size_ = new $f(0, 0); | |
| this.class_ = b; | |
| this.Blockly_Field_prototype$setValue(a) | |
| }; | |
| w(ao, Wj); | |
| d = ao.prototype; | |
| d.EDITABLE = !1; | |
| d.init = function() { | |
| this.textElement_ || (this.textElement_ = O("text", { | |
| "class": "blocklyText", | |
| y: 1, | |
| "text-anchor": "middle", | |
| "dominant-baseline": "middle" | |
| }, null), this.class_ && Hi(this.textElement_, this.class_), this.Blockly_Field_prototype$visible || (this.textElement_.style.display = "none"), this.Blockly_Field_prototype$sourceBlock.getSvgRoot().appendChild(this.textElement_), this.textElement_.tooltip = this.Blockly_Field_prototype$sourceBlock, Km(this.textElement_), this.render()) | |
| }; | |
| d.dispose = function() { | |
| C(this.textElement_); | |
| this.textElement_ = null | |
| }; | |
| d.getSvgRoot = function() { | |
| return this.textElement_ | |
| }; | |
| d.Blockly_Field_prototype$setTooltip = function(a) { | |
| this.textElement_.tooltip = a | |
| }; | |
| var bo = function(a, b, c, e) { | |
| this.type = a; | |
| this.name = b; | |
| this.Blockly_Input$sourceBlock = c; | |
| this.connection = e; | |
| this.fieldRow = [] | |
| }; | |
| bo.prototype.Blockly_Input_prototype$visible_ = !0; | |
| var eo = function(a, b, c) { | |
| co(a, a.fieldRow.length, b, c); | |
| return a | |
| }, | |
| co = function(a, b, c, e) { | |
| if (0 > b || b > a.fieldRow.length) throw Error("J`" + b); | |
| if (!c && !e) throw Error("K"); | |
| u(c) && (c = new ao(c)); | |
| c.Blockly_Field_prototype$sourceBlock = a.Blockly_Input$sourceBlock; | |
| a.Blockly_Input$sourceBlock.rendered && c.init(); | |
| c.name = e ? e : null; | |
| c.prefixField && (b = co(a, b, c.prefixField)); | |
| a.fieldRow.splice(b, 0, c); | |
| ++b; | |
| c.suffixField && (b = co(a, b, c.suffixField)); | |
| a.Blockly_Input$sourceBlock.rendered && (a.Blockly_Input$sourceBlock.render(), ik(a.Blockly_Input$sourceBlock)); | |
| return b | |
| }; | |
| bo.prototype.isVisible = function() { | |
| return this.Blockly_Input_prototype$visible_ | |
| }; | |
| bo.prototype.setVisible = function(a) { | |
| var b = []; | |
| if (this.Blockly_Input_prototype$visible_ == a) return b; | |
| for (var c = (this.Blockly_Input_prototype$visible_ = a) ? "block" : "none", e = 0, f; f = this.fieldRow[e]; e++) f.setVisible(a); | |
| if (this.connection) { | |
| if (a) b = fo(this.connection); | |
| else if (e = this.connection, go(e, !0), e.targetConnection) | |
| for (e = S(e).getDescendants(), f = 0; f < e.length; f++) { | |
| for (var g = e[f], h = g.getConnections(!0), m = 0; m < h.length; m++) go(h[m], !0); | |
| g = ho(g); | |
| for (m = 0; m < g.length; m++) g[m].setVisible(!1) | |
| } | |
| if (e = S(this.connection)) e.getSvgRoot().style.display = | |
| c, a || (e.rendered = !1) | |
| } | |
| return b | |
| }; | |
| bo.prototype.init = function() { | |
| if (this.Blockly_Input$sourceBlock.workspace.rendered) | |
| for (var a = 0; a < this.fieldRow.length; a++) this.fieldRow[a].init(this.Blockly_Input$sourceBlock) | |
| }; | |
| bo.prototype.dispose = function() { | |
| for (var a = 0, b; b = this.fieldRow[a]; a++) b.dispose(); | |
| this.connection && this.connection.dispose(); | |
| this.Blockly_Input$sourceBlock = null | |
| }; | |
| var oi = function(a, b, c) { | |
| var e = a && a.getFlyout && a.getFlyout() ? a.getFlyout().workspace : null; | |
| this.id = !c || qi(a, c) || e && qi(e, c) ? Th() : c; | |
| a.blockDB[this.id] = this; | |
| this.previousConnection = this.nextConnection = this.outputConnection = null; | |
| this.inputList = []; | |
| this.inputsInline = !0; | |
| this.disabled = !1; | |
| this.tooltip = ""; | |
| this.Blockly_Block$contextMenu = !0; | |
| this.parentBlock = null; | |
| this.childBlocks = []; | |
| this.editable_ = this.movable_ = this.deletable_ = !0; | |
| this.checkboxInFlyout_ = this.Blockly_Block$collapsed = this.isShadowBlock = !1; | |
| this.category_ = | |
| this.outputShape_ = this.comment = null; | |
| this.xy_ = new A(0, 0); | |
| this.workspace = a; | |
| this.isInFlyout = a.isFlyout; | |
| this.isInMutator = a.isMutator; | |
| this.RTL = a.RTL; | |
| this.isInsertionMarker_ = !1; | |
| if (b) { | |
| this.type = b; | |
| b = H[b]; | |
| for (var f in b) this[f] = b[f] | |
| } | |
| Yh(a, this); | |
| Ba(this.init) ? this.init() : null != this.json && io(this, this.json); | |
| this.inputsInlineDefault = this.inputsInline; | |
| 0 == Q && P(new jo(this)); | |
| if (Ba(this.onchange)) { | |
| if ((a = this.onchange) && !Ba(a)) throw Error("L"); | |
| this.onchangeWrapper_ && this.workspace.removeChangeListener(this.onchangeWrapper_); | |
| if (this.onchange = a) this.onchangeWrapper_ = a.bind(this), this.workspace.addChangeListener(this.onchangeWrapper_) | |
| } | |
| }; | |
| d = oi.prototype; | |
| d.data = null; | |
| d.colour_ = "#FF0000"; | |
| d.colourSecondary_ = "#FF0000"; | |
| d.colourTertiary_ = "#FF0000"; | |
| d.dispose = function(a) { | |
| if (this.workspace) { | |
| this.onchangeWrapper_ && this.workspace.removeChangeListener(this.onchangeWrapper_); | |
| mj(this, a); | |
| 0 == Q && P(new ko(this)); | |
| Q++; | |
| try { | |
| this.workspace && (Zh(this.workspace, this), delete this.workspace.blockDB[this.id], this.workspace = null); | |
| lo == this && (lo = null); | |
| for (var b = this.childBlocks.length - 1; 0 <= b; b--) this.childBlocks[b].dispose(!1); | |
| b = 0; | |
| for (var c; c = this.inputList[b]; b++) c.dispose(); | |
| this.inputList.length = 0; | |
| var e = this.getConnections(!0); | |
| for (b = 0; b < e.length; b++) { | |
| var f = e[b]; | |
| f.targetConnection && f.disconnect(); | |
| e[b].dispose() | |
| } | |
| } finally { | |
| Q-- | |
| } | |
| } | |
| }; | |
| var mj = function(a, b) { | |
| if (a.outputConnection) a.outputConnection.targetConnection && a.outputConnection.disconnect(); | |
| else if (a.previousConnection) { | |
| var c = null; | |
| a.previousConnection.targetConnection && (c = a.previousConnection.targetConnection, a.previousConnection.disconnect()); | |
| var e = Xi(a); | |
| b && e && (e = a.nextConnection.targetConnection, e.disconnect(), c && Yi(c, e) && c.connect(e)) | |
| } | |
| }; | |
| oi.prototype.getConnections = function() { | |
| var a = []; | |
| this.outputConnection && a.push(this.outputConnection); | |
| this.previousConnection && a.push(this.previousConnection); | |
| this.nextConnection && a.push(this.nextConnection); | |
| for (var b = 0, c; c = this.inputList[b]; b++) c.connection && a.push(c.connection); | |
| return a | |
| }; | |
| var mo = function(a) { | |
| for (a = a.nextConnection; a;) { | |
| var b = S(a); | |
| if (!b) return a; | |
| a = b.nextConnection | |
| } | |
| return null | |
| }, | |
| ik = function(a) { | |
| if (a.workspace && 0 == Yn) { | |
| var b = no(a); | |
| if (!b.isInFlyout) { | |
| a = a.getConnections(!1); | |
| for (var c = 0, e; e = a[c]; c++) { | |
| e.targetConnection && gj(e) && ik(S(e)); | |
| for (var f = e.neighbours(48), g = 0, h; h = f[g]; g++) e.targetConnection && h.targetConnection || no(h.Blockly_Connection$sourceBlock) != b && (gj(e) ? $i(h, e) : $i(e, h)) | |
| } | |
| } | |
| } | |
| }, | |
| Xi = function(a) { | |
| return a.nextConnection && S(a.nextConnection) | |
| }, | |
| Vi = function(a) { | |
| for (var b = 0, c; c = | |
| a.inputList[b]; b++) | |
| if (c.connection && 3 == c.connection.type) return c.connection; | |
| return null | |
| }, | |
| no = function(a) { | |
| var b = a; | |
| do a = b, b = a.parentBlock; while (b); | |
| return a | |
| }; | |
| oi.prototype.getChildren = function() { | |
| return this.childBlocks | |
| }; | |
| oi.prototype.Blockly_Block_prototype$setParent = function(a) { | |
| if (a != this.parentBlock) { | |
| if (this.parentBlock) { | |
| eb(this.parentBlock.childBlocks, this); | |
| if (this.previousConnection && this.previousConnection.targetConnection) throw "Still connected to previous block."; | |
| if (this.outputConnection && this.outputConnection.targetConnection) throw "Still connected to parent block."; | |
| this.parentBlock = null | |
| } else Zh(this.workspace, this); | |
| (this.parentBlock = a) ? a.childBlocks.push(this): Yh(this.workspace, this) | |
| } | |
| }; | |
| oi.prototype.getDescendants = function(a) { | |
| for (var b = [this], c, e = 0; c = this.childBlocks[e]; e++) a && c.isShadowBlock || b.push.apply(b, c.getDescendants(a)); | |
| return b | |
| }; | |
| var oo = function(a) { | |
| return a.deletable_ && !a.isShadowBlock && !(a.workspace && a.workspace.options.readOnly) | |
| }, | |
| jj = function(a) { | |
| return a.movable_ && !a.isShadowBlock && !(a.workspace && a.workspace.options.readOnly) | |
| }; | |
| oi.prototype.setMovable = function(a) { | |
| this.movable_ = a | |
| }; | |
| oi.prototype.setShadow = function(a) { | |
| this.isShadowBlock = a | |
| }; | |
| oi.prototype.setInsertionMarker = function(a) { | |
| this.isInsertionMarker_ != a && (this.isInsertionMarker_ = a) && (this.setColour(I.insertionMarker, void 0, void 0), this.opacity_ = I.insertionMarkerOpacity, this.rendered && po(this), Hi(this.svgGroup, "blocklyInsertionMarker")) | |
| }; | |
| var Pi = function(a) { | |
| return a.editable_ && !(a.workspace && a.workspace.options.readOnly) | |
| }; | |
| oi.prototype.setEditable = function(a) { | |
| this.editable_ = a; | |
| a = 0; | |
| for (var b; b = this.inputList[a]; a++) | |
| for (var c = 0, e; e = b.fieldRow[c]; c++) e.updateEditable() | |
| }; | |
| var qo = function(a, b) { | |
| if (!b && a.Blockly_Block$collapsed) { | |
| if (a.outputConnection && go(a.outputConnection, b), a.previousConnection && go(a.previousConnection, b), a.nextConnection) { | |
| go(a.nextConnection, b); | |
| var c = S(a.nextConnection); | |
| c && qo(c, b) | |
| } | |
| } else | |
| for (var e = a.getConnections(!0), f = 0; c = e[f]; f++) go(c, b), gj(c) && (c = S(c)) && qo(c, b) | |
| }, | |
| qj = function(a, b) { | |
| a.tooltip = b | |
| }, | |
| ro = function(a) { | |
| var b = Number(a); | |
| if (isNaN(b)) { | |
| if (u(a) && a.match(/^#[0-9a-fA-F]{6}$/)) return a; | |
| throw "Invalid colour: " + a; | |
| } | |
| return Uk(Zk(b)) | |
| }; | |
| oi.prototype.setColour = function(a, b, c) { | |
| this.colour_ = ro(a); | |
| void 0 !== b ? a = ro(b) : (a = Xk(this.colour_), a = Uk($k(a, .1))); | |
| this.colourSecondary_ = a; | |
| void 0 !== c ? c = ro(c) : (c = Xk(this.colour_), c = Uk($k(c, .2))); | |
| this.colourTertiary_ = c; | |
| this.rendered && po(this) | |
| }; | |
| var so = function(a, b) { | |
| for (var c = 0, e; e = a.inputList[c]; c++) | |
| for (var f = 0, g; g = e.fieldRow[f]; f++) | |
| if (g.name === b) return g; | |
| return null | |
| }, | |
| ii = function(a) { | |
| for (var b = [], c = 0, e; e = a.inputList[c]; c++) | |
| for (var f = 0, g; g = e.fieldRow[f]; f++)(g instanceof Jn || g instanceof Ln) && b.push(g.getValue()); | |
| return b | |
| }, | |
| hi = function(a, b, c) { | |
| for (var e = 0, f; f = a.inputList[e]; e++) | |
| for (var g = 0, h; h = f.fieldRow[g]; g++) { | |
| var m; | |
| if (m = h instanceof Jn || h instanceof Ln) m = h.getValue(), m = b.toLowerCase() == m.toLowerCase(); | |
| m && h.Blockly_Field_prototype$setValue(c) | |
| } | |
| }, | |
| ki = function(a, b) { | |
| var c = so(a, b); | |
| return c ? c.getValue() : null | |
| }; | |
| oi.prototype.setPreviousStatement = function(a, b) { | |
| a ? (void 0 === b && (b = null), this.previousConnection || (this.previousConnection = this.makeConnection(4)), nj(this.previousConnection, b)) : this.previousConnection && (this.previousConnection.dispose(), this.previousConnection = null) | |
| }; | |
| oi.prototype.setNextStatement = function(a, b) { | |
| a ? (void 0 === b && (b = null), this.nextConnection || (this.nextConnection = this.makeConnection(3)), nj(this.nextConnection, b)) : this.nextConnection && (this.nextConnection.dispose(), this.nextConnection = null) | |
| }; | |
| oi.prototype.setOutput = function(a, b) { | |
| a ? (void 0 === b && (b = null), this.outputConnection || (this.outputConnection = this.makeConnection(2)), nj(this.outputConnection, b)) : this.outputConnection && (this.outputConnection.dispose(), this.outputConnection = null) | |
| }; | |
| oi.prototype.setInputsInline = function(a) { | |
| this.inputsInline != a && (P(new Mi(this, "inline", null, this.inputsInline, a)), this.inputsInline = a) | |
| }; | |
| var rj = function(a) { | |
| if (void 0 != a.inputsInline) return a.inputsInline; | |
| for (var b = 1; b < a.inputList.length; b++) | |
| if (5 == a.inputList[b - 1].type && 5 == a.inputList[b].type) return !1; | |
| for (b = 1; b < a.inputList.length; b++) | |
| if (1 == a.inputList[b - 1].type && 5 == a.inputList[b].type) return !0; | |
| return !1 | |
| }; | |
| oi.prototype.setDisabled = function(a) { | |
| this.disabled != a && (P(new Mi(this, "disabled", null, this.disabled, a)), this.disabled = a) | |
| }; | |
| oi.prototype.setCollapsed = function(a) { | |
| this.Blockly_Block$collapsed != a && (P(new Mi(this, "collapsed", null, this.Blockly_Block$collapsed, a)), this.Blockly_Block$collapsed = a) | |
| }; | |
| oi.prototype.toString = function(a, b) { | |
| var c = [], | |
| e = b || "?"; | |
| if (this.Blockly_Block$collapsed) c.push(to(this, "_TEMP_COLLAPSED_INPUT").fieldRow[0].text); | |
| else | |
| for (var f = 0, g; g = this.inputList[f]; f++) { | |
| for (var h = 0, m; m = g.fieldRow[h]; h++) m instanceof vn && !m.getValue() ? c.push(e) : c.push(m.Blockly_Field_prototype$getText()); | |
| g.connection && ((g = S(g.connection)) ? c.push(g.toString(void 0, b)) : c.push(e)) | |
| } | |
| c = wb(c.join(" ")) || "???"; | |
| a && c.length > a && (c = c.substring(0, a - 3) + "..."); | |
| return c | |
| }; | |
| var io = function(a, b) { | |
| if (void 0 !== b.colour) { | |
| var c = b.colour, | |
| e = u(c) ? vk(c) : c; | |
| c = b.colourSecondary; | |
| var f = u(c) ? vk(c) : c; | |
| c = b.colourTertiary; | |
| c = u(c) ? vk(c) : c; | |
| a.setColour(e, f, c) | |
| } | |
| for (e = 0; void 0 !== b["message" + e];) { | |
| f = a; | |
| var g = b["args" + e] || [], | |
| h = b["lastDummyAlign" + e], | |
| m = uk(b["message" + e], !0), | |
| n = 0; | |
| c = []; | |
| for (var p = 0; p < m.length; p++) { | |
| var r = m[p]; | |
| "number" == typeof r ? (n++, c.push(g[r - 1])) : (r = r.trim()) && c.push(r) | |
| }!c.length || "string" != typeof c[c.length - 1] && 0 != c[c.length - 1].type.lastIndexOf("field_", 0) || (p = { | |
| type: "input_dummy" | |
| }, h && | |
| (p.align = h), c.push(p)); | |
| h = []; | |
| for (p = 0; p < c.length; p++) | |
| if (m = c[p], "string" == typeof m) h.push([m, void 0]); | |
| else { | |
| g = r = null; | |
| do | |
| if (n = !1, "string" == typeof m) r = new ao(m); | |
| else switch (m.type) { | |
| case "input_value": | |
| g = f.appendInput(1, m.name); | |
| break; | |
| case "input_statement": | |
| g = f.appendInput(3, m.name); | |
| break; | |
| case "input_dummy": | |
| g = f.appendInput(5, m.name || ""); | |
| break; | |
| case "field_label": | |
| r = m; | |
| var t = vk(r.text); | |
| r = new ao(String(t), r["class"]); | |
| break; | |
| case "field_input": | |
| r = m; | |
| t = vk(r.text); | |
| t = new Dk(String(t), r["class"]); | |
| "boolean" == typeof r.spellcheck && | |
| (t.spellcheck_ = r.spellcheck); | |
| r = t; | |
| break; | |
| case "field_textdropdown": | |
| r = new wn(m.text, m.options); | |
| "boolean" == typeof m.spellcheck && (r.spellcheck_ = m.spellcheck); | |
| break; | |
| case "field_numberdropdown": | |
| r = new xn(m.value, m.options, m.min, m.max, m.precision); | |
| break; | |
| case "field_angle": | |
| r = new Nk(m.angle); | |
| break; | |
| case "field_checkbox": | |
| r = new Pk(m.checked ? "TRUE" : "FALSE"); | |
| break; | |
| case "field_colour": | |
| r = new Fm(m.colour); | |
| break; | |
| case "field_variable": | |
| r = vk(m.variable); | |
| r = new Jn(String(r)); | |
| break; | |
| case "field_dropdown": | |
| r = new vn(m.options); | |
| break; | |
| case "field_iconmenu": | |
| r = new uo(m.options); | |
| break; | |
| case "field_image": | |
| var x = m; | |
| r = vk(x.src); | |
| t = Number(vk(x.width)); | |
| var fa = Number(vk(x.height)), | |
| R = vk(x.alt); | |
| x = vk(x.flip_rtl); | |
| r = new Jm(String(r), t, fa, String(R), !!x); | |
| break; | |
| case "field_number": | |
| r = new Lm(m.value, m.min, m.max, m.precision); | |
| break; | |
| case "field_variable_getter": | |
| r = m; | |
| t = vk(r.text); | |
| r = new Ln(String(t), r.name); | |
| break; | |
| case "field_date": | |
| if (vo) { | |
| r = new vo(m.date); | |
| break | |
| } | |
| default: | |
| m.alt && (m = m.alt, n = !0) | |
| } | |
| while (n); | |
| if (r) h.push([r, m.name]); | |
| else if (g) { | |
| if (m.check) { | |
| if (!g.connection) throw "This input does not have a connection."; | |
| nj(g.connection, m.check) | |
| } | |
| m.align && g.Blockly_Input$sourceBlock.rendered && g.Blockly_Input$sourceBlock.render(); | |
| for (m = 0; m < h.length; m++) eo(g, h[m][0], h[m][1]); | |
| h.length = 0 | |
| } | |
| } e++ | |
| } | |
| void 0 !== b.inputsInline && a.setInputsInline(b.inputsInline); | |
| void 0 !== b.output && a.setOutput(!0, b.output); | |
| void 0 !== b.previousStatement && a.setPreviousStatement(!0, b.previousStatement); | |
| void 0 !== b.nextStatement && a.setNextStatement(!0, b.nextStatement); | |
| void 0 !== b.tooltip && (c = b.tooltip, e = vk(c), a.tooltip = String(e)); | |
| void 0 !== b.enableContextMenu && | |
| (c = b.enableContextMenu, a.Blockly_Block$contextMenu = !!c); | |
| void 0 !== b.helpUrl && (c = b.helpUrl, e = vk(c), a.helpUrl = String(e)); | |
| u(b.extensions) && (console.warn("JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '" + b.type + "' block."), b.extensions = [b.extensions]); | |
| if (Array.isArray(b.extensions)) | |
| for (f = b.extensions, e = 0; e < f.length; ++e) { | |
| c = f[e]; | |
| p = a; | |
| h = pj[c]; | |
| if (!Ba(h)) throw Error("r`" + c); | |
| h.apply(p) | |
| } | |
| void 0 !== b.outputShape && (a.outputShape_ = b.outputShape); | |
| void 0 !== b.checkboxInFlyout && | |
| (a.checkboxInFlyout_ = b.checkboxInFlyout); | |
| void 0 !== b.category && (a.category_ = b.category) | |
| }; | |
| oi.prototype.appendInput = function(a, b) { | |
| var c = null; | |
| if (1 == a || 3 == a) c = this.makeConnection(a); | |
| c = new bo(a, b, this, c); | |
| this.inputList.push(c); | |
| return c | |
| }; | |
| oi.prototype.removeInput = function(a) { | |
| for (var b = 0, c; c = this.inputList[b]; b++) | |
| if (c.name == a) { | |
| c.connection && c.connection.targetConnection && (c.connection.shadowDom_ = null, a = S(c.connection), a.isShadowBlock ? a.dispose() : mj(a)); | |
| c.dispose(); | |
| this.inputList.splice(b, 1); | |
| break | |
| } | |
| }; | |
| var to = function(a, b) { | |
| for (var c = 0, e; e = a.inputList[c]; c++) | |
| if (e.name == b) return e; | |
| return null | |
| }; | |
| d = oi.prototype; | |
| d.getCommentText = function() { | |
| return this.comment || "" | |
| }; | |
| d.setCommentText = function(a) { | |
| this.comment != a && (P(new Mi(this, "comment", null, this.comment, a || "")), this.comment = a) | |
| }; | |
| d.setWarningText = function() {}; | |
| d.getRelativeToSurfaceXY = function() { | |
| return this.xy_ | |
| }; | |
| d.moveBy = function(a, b) { | |
| var c = new aj(this); | |
| this.xy_.translate(a, b); | |
| cj(c); | |
| P(c) | |
| }; | |
| d.makeConnection = function(a) { | |
| return new Ui(this, a) | |
| }; | |
| var oj = function(a) { | |
| var b = a.type ? '"' + a.type + '" block' : "Block"; | |
| a.id && (b += ' (id="' + a.id + '")'); | |
| return b | |
| }; | |
| oi.prototype.getProcedureDef = function() { | |
| return [] | |
| }; | |
| oi.prototype.mutationToDom = function() { | |
| return null | |
| }; | |
| oi.prototype.domToMutation = function() {}; | |
| var wo = function(a) { | |
| this.Blockly_BlockDragSurfaceSvg_prototype$container_ = a; | |
| this.createDom() | |
| }; | |
| d = wo.prototype; | |
| d.Blockly_BlockDragSurfaceSvg_prototype$SVG_ = null; | |
| d.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_ = null; | |
| d.Blockly_BlockDragSurfaceSvg_prototype$container_ = null; | |
| d.Blockly_BlockDragSurfaceSvg_prototype$scale_ = 1; | |
| d.createDom = function() { | |
| this.Blockly_BlockDragSurfaceSvg_prototype$SVG_ || (this.Blockly_BlockDragSurfaceSvg_prototype$SVG_ = O("svg", { | |
| xmlns: "http://www.w3.org/2000/svg", | |
| "xmlns:html": "http://www.w3.org/1999/xhtml", | |
| "xmlns:xlink": "http://www.w3.org/1999/xlink", | |
| version: "1.1", | |
| "class": "blocklyBlockDragSurface" | |
| }, this.Blockly_BlockDragSurfaceSvg_prototype$container_), this.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_ = O("g", {}, this.Blockly_BlockDragSurfaceSvg_prototype$SVG_)) | |
| }; | |
| d.translateSurface = function(a, b) { | |
| a *= this.Blockly_BlockDragSurfaceSvg_prototype$scale_; | |
| b *= this.Blockly_BlockDragSurfaceSvg_prototype$scale_; | |
| a = Number(a.toFixed(0)); | |
| b = Number(b.toFixed(0)); | |
| this.Blockly_BlockDragSurfaceSvg_prototype$SVG_.style.display = "block"; | |
| Ck(this.Blockly_BlockDragSurfaceSvg_prototype$SVG_, "translate3d(" + a + "px, " + b + "px, 0px)") | |
| }; | |
| d.getSurfaceTranslation = function() { | |
| var a = nk(this.Blockly_BlockDragSurfaceSvg_prototype$SVG_); | |
| return new A(a.x / this.Blockly_BlockDragSurfaceSvg_prototype$scale_, a.y / this.Blockly_BlockDragSurfaceSvg_prototype$scale_) | |
| }; | |
| d.clearAndHide = function(a) { | |
| a.appendChild(this.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_.firstChild); | |
| this.Blockly_BlockDragSurfaceSvg_prototype$SVG_.style.display = "none"; | |
| document.getElementsByClassName("injectionDiv")[0].style.overflow = "hidden" | |
| }; | |
| var xo = { | |
| ERAS: ["BC", "AD"], | |
| ERANAMES: ["Before Christ", "Anno Domini"], | |
| NARROWMONTHS: "JFMAMJJASOND".split(""), | |
| STANDALONENARROWMONTHS: "JFMAMJJASOND".split(""), | |
| MONTHS: "January February March April May June July August September October November December".split(" "), | |
| STANDALONEMONTHS: "January February March April May June July August September October November December".split(" "), | |
| SHORTMONTHS: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), | |
| STANDALONESHORTMONTHS: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), | |
| WEEKDAYS: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), | |
| STANDALONEWEEKDAYS: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), | |
| SHORTWEEKDAYS: "Sun Mon Tue Wed Thu Fri Sat".split(" "), | |
| STANDALONESHORTWEEKDAYS: "Sun Mon Tue Wed Thu Fri Sat".split(" "), | |
| NARROWWEEKDAYS: "SMTWTFS".split(""), | |
| STANDALONENARROWWEEKDAYS: "SMTWTFS".split(""), | |
| SHORTQUARTERS: ["Q1", "Q2", "Q3", "Q4"], | |
| QUARTERS: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], | |
| AMPMS: ["AM", "PM"], | |
| DATEFORMATS: ["EEEE, MMMM d, y", | |
| "MMMM d, y", "MMM d, y", "M/d/yy" | |
| ], | |
| TIMEFORMATS: ["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], | |
| DATETIMEFORMATS: ["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], | |
| FIRSTDAYOFWEEK: 6, | |
| WEEKENDRANGE: [5, 6], | |
| FIRSTWEEKCUTOFFDAY: 5 | |
| }, | |
| yo = xo; | |
| yo = xo; | |
| var zo = /^(\d{4})(?:(?:-?(\d{2})(?:-?(\d{2}))?)|(?:-?(\d{3}))|(?:-?W(\d{2})(?:-?([1-7]))?))?$/, | |
| Ao = /^(\d{2})(?::?(\d{2})(?::?(\d{2})(\.\d+)?)?)?$/, | |
| Bo = /Z|(?:([-+])(\d{2})(?::?(\d{2}))?)$/, | |
| Co = function(a, b) { | |
| switch (b) { | |
| case 1: | |
| return 0 != a % 4 || 0 == a % 100 && 0 != a % 400 ? 28 : 29; | |
| case 5: | |
| case 8: | |
| case 10: | |
| case 3: | |
| return 30 | |
| } | |
| return 31 | |
| }, | |
| Do = function(a, b, c) { | |
| u(a) ? (this.years = "y" == a ? b : 0, this.months = "m" == a ? b : 0, this.days = "d" == a ? b : 0, this.hours = "h" == a ? b : 0, this.minutes = "n" == a ? b : 0, this.seconds = "s" == a ? b : 0) : (this.years = a || 0, this.months = b || | |
| 0, this.days = c || 0, this.seconds = this.minutes = this.hours = 0) | |
| }; | |
| Do.prototype.toIsoString = function(a) { | |
| var b = Math.min(this.years, this.months, this.days, this.hours, this.minutes, this.seconds), | |
| c = Math.max(this.years, this.months, this.days, this.hours, this.minutes, this.seconds); | |
| if (0 > b && 0 < c) return null; | |
| if (!a && 0 == b && 0 == c) return "PT0S"; | |
| c = []; | |
| 0 > b && c.push("-"); | |
| c.push("P"); | |
| (this.years || a) && c.push(Math.abs(this.years) + "Y"); | |
| (this.months || a) && c.push(Math.abs(this.months) + "M"); | |
| (this.days || a) && c.push(Math.abs(this.days) + "D"); | |
| if (this.hours || this.minutes || this.seconds || a) c.push("T"), | |
| (this.hours || a) && c.push(Math.abs(this.hours) + "H"), (this.minutes || a) && c.push(Math.abs(this.minutes) + "M"), (this.seconds || a) && c.push(Math.abs(this.seconds) + "S"); | |
| return c.join("") | |
| }; | |
| Do.prototype.equals = function(a) { | |
| return a.years == this.years && a.months == this.months && a.days == this.days && a.hours == this.hours && a.minutes == this.minutes && a.seconds == this.seconds | |
| }; | |
| Do.prototype.add = function(a) { | |
| this.years += a.years; | |
| this.months += a.months; | |
| this.days += a.days; | |
| this.hours += a.hours; | |
| this.minutes += a.minutes; | |
| this.seconds += a.seconds | |
| }; | |
| var Go = function(a, b, c) { | |
| v(a) ? (this.date = Eo(a, b || 0, c || 1), Fo(this, c || 1)) : Ca(a) ? (this.date = Eo(a.getFullYear(), a.getMonth(), a.getDate()), Fo(this, a.getDate())) : (this.date = new Date(La()), a = this.date.getDate(), this.date.setHours(0), this.date.setMinutes(0), this.date.setSeconds(0), this.date.setMilliseconds(0), Fo(this, a)) | |
| }, | |
| Eo = function(a, b, c) { | |
| b = new Date(a, b, c); | |
| 0 <= a && 100 > a && b.setFullYear(b.getFullYear() - 1900); | |
| return b | |
| }; | |
| d = Go.prototype; | |
| d.firstDayOfWeek_ = yo.FIRSTDAYOFWEEK; | |
| d.firstWeekCutOffDay_ = yo.FIRSTWEEKCUTOFFDAY; | |
| d.goog_date_Date_prototype$clone = function() { | |
| var a = new Go(this.date); | |
| a.firstDayOfWeek_ = this.firstDayOfWeek_; | |
| a.firstWeekCutOffDay_ = this.firstWeekCutOffDay_; | |
| return a | |
| }; | |
| d.getFullYear = function() { | |
| return this.date.getFullYear() | |
| }; | |
| d.getMonth = function() { | |
| return this.date.getMonth() | |
| }; | |
| d.getDate = function() { | |
| return this.date.getDate() | |
| }; | |
| d.getTime = function() { | |
| return this.date.getTime() | |
| }; | |
| d.getDay = function() { | |
| return this.date.getDay() | |
| }; | |
| d.getUTCFullYear = function() { | |
| return this.date.getUTCFullYear() | |
| }; | |
| d.getUTCMonth = function() { | |
| return this.date.getUTCMonth() | |
| }; | |
| d.getUTCDate = function() { | |
| return this.date.getUTCDate() | |
| }; | |
| d.getUTCHours = function() { | |
| return this.date.getUTCHours() | |
| }; | |
| d.getUTCMinutes = function() { | |
| return this.date.getUTCMinutes() | |
| }; | |
| d.getTimezoneOffset = function() { | |
| return this.date.getTimezoneOffset() | |
| }; | |
| d.set = function(a) { | |
| this.date = new Date(a.getFullYear(), a.getMonth(), a.getDate()) | |
| }; | |
| var Ho = function(a, b) { | |
| a.date.setDate(b) | |
| }; | |
| Go.prototype.add = function(a) { | |
| if (a.years || a.months) { | |
| var b = this.getMonth() + a.months + 12 * a.years, | |
| c = this.getFullYear() + Math.floor(b / 12); | |
| b %= 12; | |
| 0 > b && (b += 12); | |
| var e = Math.min(Co(c, b), this.getDate()); | |
| Ho(this, 1); | |
| this.date.setFullYear(c); | |
| this.date.setMonth(b); | |
| Ho(this, e) | |
| } | |
| a.days && (a = new Date((new Date(this.getFullYear(), this.getMonth(), this.getDate(), 12)).getTime() + 864E5 * a.days), Ho(this, 1), this.date.setFullYear(a.getFullYear()), this.date.setMonth(a.getMonth()), Ho(this, a.getDate()), Fo(this, a.getDate())) | |
| }; | |
| Go.prototype.toIsoString = function(a) { | |
| return [this.getFullYear(), Ib(this.getMonth() + 1, 2), Ib(this.getDate(), 2)].join(a ? "-" : "") + "" | |
| }; | |
| Go.prototype.equals = function(a) { | |
| return !(!a || this.getFullYear() != a.getFullYear() || this.getMonth() != a.getMonth() || this.getDate() != a.getDate()) | |
| }; | |
| Go.prototype.toString = function() { | |
| return this.toIsoString() | |
| }; | |
| var Fo = function(a, b) { | |
| a.getDate() != b && a.date.setUTCHours(a.date.getUTCHours() + (a.getDate() < b ? 1 : -1)) | |
| }; | |
| Go.prototype.valueOf = function() { | |
| return this.date.valueOf() | |
| }; | |
| var Io = function(a, b, c, e, f, g, h) { | |
| this.date = v(a) ? new Date(a, b || 0, c || 1, e || 0, f || 0, g || 0, h || 0) : new Date(a && a.getTime ? a.getTime() : La()) | |
| }; | |
| w(Io, Go); | |
| d = Io.prototype; | |
| d.getHours = function() { | |
| return this.date.getHours() | |
| }; | |
| d.getMinutes = function() { | |
| return this.date.getMinutes() | |
| }; | |
| d.getSeconds = function() { | |
| return this.date.getSeconds() | |
| }; | |
| d.getUTCHours = function() { | |
| return this.date.getUTCHours() | |
| }; | |
| d.getUTCMinutes = function() { | |
| return this.date.getUTCMinutes() | |
| }; | |
| d.add = function(a) { | |
| Go.prototype.add.call(this, a); | |
| a.hours && this.date.setUTCHours(this.date.getUTCHours() + a.hours); | |
| a.minutes && this.date.setUTCMinutes(this.date.getUTCMinutes() + a.minutes); | |
| a.seconds && this.date.setUTCSeconds(this.date.getUTCSeconds() + a.seconds) | |
| }; | |
| d.toIsoString = function(a) { | |
| var b = Go.prototype.toIsoString.call(this, a); | |
| return a ? b + " " + Ib(this.getHours(), 2) + ":" + Ib(this.getMinutes(), 2) + ":" + Ib(this.getSeconds(), 2) + "" : b + "T" + Ib(this.getHours(), 2) + Ib(this.getMinutes(), 2) + Ib(this.getSeconds(), 2) + "" | |
| }; | |
| d.equals = function(a) { | |
| return this.getTime() == a.getTime() | |
| }; | |
| d.toString = function() { | |
| return this.toIsoString() | |
| }; | |
| d.goog_date_Date_prototype$clone = function() { | |
| var a = new Io(this.date); | |
| a.firstDayOfWeek_ = this.firstDayOfWeek_; | |
| a.firstWeekCutOffDay_ = this.firstWeekCutOffDay_; | |
| return a | |
| }; | |
| var Jo = function(a) { | |
| var b = new Io(2E3); | |
| a = wb(a); | |
| a = a.split(-1 == a.indexOf("T") ? " " : "T"); | |
| var c = a[0].match(zo); | |
| if (c) { | |
| var e = Number(c[2]), | |
| f = Number(c[3]), | |
| g = Number(c[4]); | |
| var h = Number(c[5]); | |
| var m = Number(c[6]) || 1; | |
| b.date.setFullYear(Number(c[1])); | |
| g ? (Ho(b, 1), b.date.setMonth(0), b.add(new Do("d", g - 1))) : h ? (b.date.setMonth(0), Ho(b, 1), c = b.getDay() || 7, b.add(new Do("d", (4 >= c ? 1 - c : 8 - c) + (Number(m) + 7 * (Number(h) - 1)) - 1))) : (e && (Ho(b, 1), b.date.setMonth(e - 1)), f && Ho(b, f)); | |
| h = !0 | |
| } else h = !1; | |
| h && !(h = 2 > a.length) && (a = a[1], h = a.match(Bo), | |
| m = 0, h && ("Z" != h[0] && (m = 60 * Number(h[2]) + Number(h[3]), m *= "-" == h[1] ? 1 : -1), m -= b.getTimezoneOffset(), a = a.substr(0, a.length - h[0].length)), (h = a.match(Ao)) ? (b.date.setHours(Number(h[1])), b.date.setMinutes(Number(h[2]) || 0), b.date.setSeconds(Number(h[3]) || 0), b.date.setMilliseconds(h[4] ? 1E3 * Number(h[4]) : 0), 0 != m && b.date.setTime(b.getTime() + 6E4 * m), h = !0) : h = !1); | |
| return h ? b : null | |
| }; | |
| var Mo = function() { | |
| var a = Ko; | |
| this.startDate_ = Lo; | |
| this.goog_date_DateRange$endDate_ = a | |
| }, | |
| Lo = new Go(0, 0, 1), | |
| Ko = new Go(9999, 11, 31); | |
| Mo.prototype.contains = function(a) { | |
| return a.valueOf() >= this.startDate_.valueOf() && a.valueOf() <= this.goog_date_DateRange$endDate_.valueOf() | |
| }; | |
| Mo.prototype.iterator = function() { | |
| return new No(this) | |
| }; | |
| var No = function(a) { | |
| this.nextDate_ = a.startDate_.goog_date_Date_prototype$clone(); | |
| this.goog_date_DateRange_Iterator$endDate_ = Number(a.goog_date_DateRange$endDate_.toIsoString()) | |
| }; | |
| w(No, Pb); | |
| No.prototype.next = function() { | |
| if (Number(this.nextDate_.toIsoString()) > this.goog_date_DateRange_Iterator$endDate_) throw Ob; | |
| var a = this.nextDate_.goog_date_Date_prototype$clone(); | |
| this.nextDate_.add(new Do("d", 1)); | |
| return a | |
| }; | |
| var Oo = function() {}, | |
| Qo = function(a) { | |
| if ("number" == typeof a) { | |
| var b = new Oo; | |
| b.standardOffset_ = a; | |
| var c = a; | |
| if (0 == c) c = "Etc/GMT"; | |
| else { | |
| var e = ["Etc/GMT", 0 > c ? "-" : "+"]; | |
| c = Math.abs(c); | |
| e.push(Math.floor(c / 60) % 100); | |
| c %= 60; | |
| 0 != c && e.push(":", Ib(c, 2)); | |
| c = e.join("") | |
| } | |
| b.timeZoneId_ = c; | |
| c = a; | |
| 0 == c ? c = "UTC" : (e = ["UTC", 0 > c ? "+" : "-"], c = Math.abs(c), e.push(Math.floor(c / 60) % 100), c %= 60, 0 != c && e.push(":", c), c = e.join("")); | |
| a = Po(a); | |
| b.tzNames_ = [c, c]; | |
| b.tzNamesExt_ = { | |
| STD_LONG_NAME_GMT: a, | |
| STD_GENERIC_LOCATION: a | |
| }; | |
| b.transitions_ = []; | |
| return b | |
| } | |
| b = new Oo; | |
| b.timeZoneId_ = a.id; | |
| b.standardOffset_ = -a.std_offset; | |
| b.tzNames_ = a.names; | |
| b.tzNamesExt_ = a.names_ext; | |
| b.transitions_ = a.transitions; | |
| return b | |
| }, | |
| Po = function(a) { | |
| var b = ["GMT"]; | |
| b.push(0 >= a ? "+" : "-"); | |
| a = Math.abs(a); | |
| b.push(Ib(Math.floor(a / 60) % 100, 2), ":", Ib(a % 60, 2)); | |
| return b.join("") | |
| }, | |
| Ro = function(a, b) { | |
| for (var c = Date.UTC(b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate(), b.getUTCHours(), b.getUTCMinutes()) / 36E5, e = 0; e < a.transitions_.length && c >= a.transitions_[e];) e += 2; | |
| return 0 == e ? 0 : a.transitions_[e - 1] | |
| }; | |
| var Uo = function(a, b) { | |
| this.patternParts_ = []; | |
| this.dateTimeSymbols_ = b || yo; | |
| "number" == typeof a ? So(this, a) : To(this, a) | |
| }, | |
| Vo = [/^'(?:[^']|'')*('|$)/, /^(?:G+|y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|V+|w+|z+|Z+)/, /^[^'GyMkSEahKHcLQdmsvVwzZ]+/], | |
| Wo = function(a) { | |
| return a.getHours ? a.getHours() : 0 | |
| }, | |
| To = function(a, b) { | |
| for (Xo && (b = b.replace(/\u200f/g, "")); b;) { | |
| for (var c = b, e = 0; e < Vo.length; ++e) { | |
| var f = b.match(Vo[e]); | |
| if (f) { | |
| var g = f[0]; | |
| b = b.substring(g.length); | |
| 0 == e && ("''" == g ? g = "'" : (g = g.substring(1, "'" == f[1] ? g.length - 1 : g.length), | |
| g = g.replace(/''/g, "'"))); | |
| a.patternParts_.push({ | |
| text: g, | |
| type: e | |
| }); | |
| break | |
| } | |
| } | |
| if (c === b) throw Error("M`" + b); | |
| } | |
| }, | |
| Zo = function(a, b) { | |
| if (!b) throw Error("N"); | |
| for (var c = [], e = 0; e < a.patternParts_.length; ++e) { | |
| var f = a.patternParts_[e].text; | |
| 1 == a.patternParts_[e].type ? c.push(Yo(a, f, b, b, b)) : c.push(f) | |
| } | |
| return c.join("") | |
| }, | |
| So = function(a, b) { | |
| if (4 > b) var c = a.dateTimeSymbols_.DATEFORMATS[b]; | |
| else if (8 > b) c = a.dateTimeSymbols_.TIMEFORMATS[b - 4]; | |
| else if (12 > b) c = a.dateTimeSymbols_.DATETIMEFORMATS[b - 8], c = c.replace("{1}", a.dateTimeSymbols_.DATEFORMATS[b - | |
| 8]), c = c.replace("{0}", a.dateTimeSymbols_.TIMEFORMATS[b - 8]); | |
| else { | |
| So(a, 10); | |
| return | |
| } | |
| To(a, c) | |
| }, | |
| $o = function(a, b) { | |
| var c = String(b); | |
| var e = a.dateTimeSymbols_ || yo; | |
| if (void 0 !== e.ZERODIGIT) { | |
| for (var f = [], g = 0; g < c.length; g++) { | |
| var h = c.charCodeAt(g); | |
| f.push(48 <= h && 57 >= h ? String.fromCharCode(e.ZERODIGIT + h - 48) : c.charAt(g)) | |
| } | |
| c = f.join("") | |
| } | |
| return c | |
| }, | |
| Xo = !1, | |
| ap = function(a) { | |
| if (!(a.getHours && a.getSeconds && a.getMinutes)) throw Error("O"); | |
| }, | |
| Yo = function(a, b, c, e, f) { | |
| var g = b.length; | |
| switch (b.charAt(0)) { | |
| case "G": | |
| return c = 0 < e.getFullYear() ? | |
| 1 : 0, 4 <= g ? a.dateTimeSymbols_.ERANAMES[c] : a.dateTimeSymbols_.ERAS[c]; | |
| case "y": | |
| return c = e.getFullYear(), 0 > c && (c = -c), 2 == g && (c %= 100), $o(a, Ib(c, g)); | |
| case "M": | |
| a: switch (c = e.getMonth(), g) { | |
| case 5: | |
| g = a.dateTimeSymbols_.NARROWMONTHS[c]; | |
| break a; | |
| case 4: | |
| g = a.dateTimeSymbols_.MONTHS[c]; | |
| break a; | |
| case 3: | |
| g = a.dateTimeSymbols_.SHORTMONTHS[c]; | |
| break a; | |
| default: | |
| g = $o(a, Ib(c + 1, g)) | |
| } | |
| return g; | |
| case "k": | |
| return ap(f), $o(a, Ib(Wo(f) || 24, g)); | |
| case "S": | |
| return $o(a, (f.getTime() % 1E3 / 1E3).toFixed(Math.min(3, g)).substr(2) + (3 < g ? Ib(0, g - 3) : "")); | |
| case "E": | |
| return c = e.getDay(), 4 <= g ? a.dateTimeSymbols_.WEEKDAYS[c] : a.dateTimeSymbols_.SHORTWEEKDAYS[c]; | |
| case "a": | |
| return ap(f), g = Wo(f), a.dateTimeSymbols_.AMPMS[12 <= g && 24 > g ? 1 : 0]; | |
| case "h": | |
| return ap(f), $o(a, Ib(Wo(f) % 12 || 12, g)); | |
| case "K": | |
| return ap(f), $o(a, Ib(Wo(f) % 12, g)); | |
| case "H": | |
| return ap(f), $o(a, Ib(Wo(f), g)); | |
| case "c": | |
| a: switch (c = e.getDay(), g) { | |
| case 5: | |
| g = a.dateTimeSymbols_.STANDALONENARROWWEEKDAYS[c]; | |
| break a; | |
| case 4: | |
| g = a.dateTimeSymbols_.STANDALONEWEEKDAYS[c]; | |
| break a; | |
| case 3: | |
| g = a.dateTimeSymbols_.STANDALONESHORTWEEKDAYS[c]; | |
| break a; | |
| default: | |
| g = $o(a, Ib(c, 1)) | |
| } | |
| return g; | |
| case "L": | |
| a: switch (c = e.getMonth(), g) { | |
| case 5: | |
| g = a.dateTimeSymbols_.STANDALONENARROWMONTHS[c]; | |
| break a; | |
| case 4: | |
| g = a.dateTimeSymbols_.STANDALONEMONTHS[c]; | |
| break a; | |
| case 3: | |
| g = a.dateTimeSymbols_.STANDALONESHORTMONTHS[c]; | |
| break a; | |
| default: | |
| g = $o(a, Ib(c + 1, g)) | |
| } | |
| return g; | |
| case "Q": | |
| return c = Math.floor(e.getMonth() / 3), 4 > g ? a.dateTimeSymbols_.SHORTQUARTERS[c] : a.dateTimeSymbols_.QUARTERS[c]; | |
| case "d": | |
| return $o(a, Ib(e.getDate(), g)); | |
| case "m": | |
| return ap(f), $o(a, Ib(f.getMinutes(), g)); | |
| case "s": | |
| return ap(f), | |
| $o(a, Ib(f.getSeconds(), g)); | |
| case "v": | |
| return g = Qo(c.getTimezoneOffset()), g.timeZoneId_; | |
| case "V": | |
| return a = Qo(c.getTimezoneOffset()), 2 >= g ? a.timeZoneId_ : 0 < Ro(a, c) ? va(a.tzNamesExt_.DST_GENERIC_LOCATION) ? a.tzNamesExt_.DST_GENERIC_LOCATION : a.tzNamesExt_.DST_GENERIC_LOCATION : va(a.tzNamesExt_.STD_GENERIC_LOCATION) ? a.tzNamesExt_.STD_GENERIC_LOCATION : a.tzNamesExt_.STD_GENERIC_LOCATION; | |
| case "w": | |
| return c = a.dateTimeSymbols_.FIRSTWEEKCUTOFFDAY, f = new Date(f.getFullYear(), f.getMonth(), f.getDate()), b = a.dateTimeSymbols_.FIRSTDAYOFWEEK || | |
| 0, c = f.valueOf() + 864E5 * (((va(c) ? c : 3) - b + 7) % 7 - ((f.getDay() + 6) % 7 - b + 7) % 7), $o(a, Ib(Math.floor(Math.round((c - (new Date((new Date(c)).getFullYear(), 0, 1)).valueOf()) / 864E5) / 7) + 1, g)); | |
| case "z": | |
| return a = Qo(c.getTimezoneOffset()), 4 > g ? a.tzNames_[0 < Ro(a, c) ? 2 : 0] : a.tzNames_[0 < Ro(a, c) ? 3 : 1]; | |
| case "Z": | |
| return f = Qo(c.getTimezoneOffset()), 4 > g ? (g = -(f.standardOffset_ - Ro(f, c)), a = [0 > g ? "-" : "+"], g = Math.abs(g), a.push(Ib(Math.floor(g / 60) % 100, 2), Ib(g % 60, 2)), g = a.join("")) : g = $o(a, Po(f.standardOffset_ - Ro(f, c))), g; | |
| default: | |
| return "" | |
| } | |
| }; | |
| var bp = { | |
| YEAR_FULL: "y", | |
| YEAR_FULL_WITH_ERA: "y G", | |
| YEAR_MONTH_ABBR: "MMM y", | |
| YEAR_MONTH_FULL: "MMMM y", | |
| MONTH_DAY_ABBR: "MMM d", | |
| MONTH_DAY_FULL: "MMMM dd", | |
| MONTH_DAY_SHORT: "M/d", | |
| MONTH_DAY_MEDIUM: "MMMM d", | |
| MONTH_DAY_YEAR_MEDIUM: "MMM d, y", | |
| WEEKDAY_MONTH_DAY_MEDIUM: "EEE, MMM d", | |
| WEEKDAY_MONTH_DAY_YEAR_MEDIUM: "EEE, MMM d, y", | |
| DAY_ABBR: "d" | |
| }, | |
| cp = bp; | |
| cp = bp; | |
| var dp = function(a) { | |
| this.baseCssClass_ = W(); | |
| this.goog_ui_DefaultDatePickerRenderer$dom_ = a || cg() | |
| }, | |
| ep = function(a, b, c, e) { | |
| var f = [a.baseCssClass_ + "-btn"]; | |
| e && f.push(e); | |
| e = zg(a.goog_ui_DefaultDatePickerRenderer$dom_, "BUTTON"); | |
| e.className = f.join(" "); | |
| e.appendChild(a.goog_ui_DefaultDatePickerRenderer$dom_.document_.createTextNode(String(c))); | |
| b.appendChild(e) | |
| }; | |
| var fp = function(a, b, c, e) { | |
| cl.call(this, c); | |
| this.symbols_ = b || yo; | |
| this.wdayNames_ = this.symbols_.STANDALONESHORTWEEKDAYS; | |
| this.i18nDateFormatterDay_ = new Uo("d", this.symbols_); | |
| new Uo("dd", this.symbols_); | |
| this.i18nDateFormatterWeek_ = new Uo("w", this.symbols_); | |
| this.i18nDateFormatterDayAriaLabel_ = new Uo("d MMM", this.symbols_); | |
| this.i18nDateFormatterYear_ = new Uo(cp.YEAR_FULL || "y", this.symbols_); | |
| this.i18nDateFormatterMonthYear_ = new Uo(cp.YEAR_MONTH_FULL || "MMMM y", this.symbols_); | |
| this.goog_ui_DatePicker$renderer_ = | |
| e || new dp(this.goog_ui_Component$dom_); | |
| this.date_ = new Go(a); | |
| this.date_.firstWeekCutOffDay_ = this.symbols_.FIRSTWEEKCUTOFFDAY; | |
| this.date_.firstDayOfWeek_ = this.symbols_.FIRSTDAYOFWEEK; | |
| this.activeMonth_ = this.date_.goog_date_Date_prototype$clone(); | |
| Ho(this.activeMonth_, 1); | |
| this.wdayStyles_ = " ".split(" "); | |
| this.wdayStyles_[this.symbols_.WEEKENDRANGE[0]] = W() + "-wkend-start"; | |
| this.wdayStyles_[this.symbols_.WEEKENDRANGE[1]] = W() + "-wkend-end"; | |
| this.keyHandlers_ = {}; | |
| this.grid_ = [] | |
| }; | |
| w(fp, cl); | |
| d = fp.prototype; | |
| d.userSelectableDateRange_ = new Mo; | |
| d.showWeekNum_ = !0; | |
| d.allowNone_ = !0; | |
| d.elNavRow_ = null; | |
| d.elMonthYear_ = null; | |
| d.elFootRow_ = null; | |
| d.cellIdGenerator_ = al.getInstance(); | |
| var W = function() { | |
| return "goog-date-picker" | |
| }, | |
| jp = function(a) { | |
| a.showWeekNum_ = !1; | |
| gp(a); | |
| hp(a); | |
| ip(a) | |
| }, | |
| lp = function(a) { | |
| a.allowNone_ = !1; | |
| a.elNone_ && kp(a) | |
| }, | |
| kp = function(a) { | |
| Ej(a.elToday_, !0); | |
| Ej(a.elNone_, a.allowNone_); | |
| Ej(a.tableFoot_, !0) | |
| }; | |
| d = fp.prototype; | |
| d.previousMonth = function() { | |
| this.activeMonth_.add(new Do("m", -1)); | |
| ip(this); | |
| mp(this) | |
| }; | |
| d.nextMonth = function() { | |
| this.activeMonth_.add(new Do("m", 1)); | |
| ip(this); | |
| mp(this) | |
| }; | |
| d.previousYear = function() { | |
| this.activeMonth_.add(new Do("y", -1)); | |
| ip(this); | |
| mp(this) | |
| }; | |
| d.nextYear = function() { | |
| this.activeMonth_.add(new Do("y", 1)); | |
| ip(this); | |
| mp(this) | |
| }; | |
| d.selectToday = function() { | |
| np(this, new Go) | |
| }; | |
| d.selectNone = function() { | |
| this.allowNone_ && np(this, null) | |
| }; | |
| var np = function(a, b) { | |
| op(a, b, !0) | |
| }, | |
| op = function(a, b, c) { | |
| var e = b == a.date_ || b && a.date_ && b.getFullYear() == a.date_.getFullYear() && b.getMonth() == a.date_.getMonth(), | |
| f = b == a.date_ || e && b.getDate() == a.date_.getDate(); | |
| a.date_ = b && new Go(b); | |
| b && (a.activeMonth_.set(a.date_), a.activeMonth_.date.setFullYear(a.date_.getFullYear()), Ho(a.activeMonth_, 1)); | |
| ip(a); | |
| c && ne(a, new pp("select", a, a.date_)); | |
| f || ne(a, new pp("change", a, a.date_)); | |
| e || mp(a) | |
| }, | |
| gp = function(a) { | |
| if (a.elNavRow_) { | |
| for (var b = a.elNavRow_; b.firstChild;) b.removeChild(b.firstChild); | |
| var c = a.goog_ui_DatePicker$renderer_, | |
| e = a.symbols_.DATEFORMATS[0].toLowerCase(); | |
| var f = zg(c.goog_ui_DefaultDatePickerRenderer$dom_, "TD"); | |
| f.colSpan = 5; | |
| ep(c, f, "\u00ab", c.baseCssClass_ + "-previousMonth"); | |
| ep(c, f, "", c.baseCssClass_ + "-month"); | |
| ep(c, f, "\u00bb", c.baseCssClass_ + "-nextMonth"); | |
| var g = zg(c.goog_ui_DefaultDatePickerRenderer$dom_, "TD"); | |
| g.colSpan = 3; | |
| ep(c, g, "\u00ab", c.baseCssClass_ + "-previousYear"); | |
| ep(c, g, "", c.baseCssClass_ + "-year"); | |
| ep(c, g, "\u00bb", c.baseCssClass_ + "-nextYear"); | |
| e.indexOf("y") < e.indexOf("m") ? | |
| (b.appendChild(g), b.appendChild(f)) : (b.appendChild(f), b.appendChild(g)); | |
| qp(a, b, W() + "-previousMonth", a.previousMonth); | |
| qp(a, b, W() + "-nextMonth", a.nextMonth); | |
| qp(a, b, W() + "-month", a.showMonthMenu_); | |
| qp(a, b, W() + "-previousYear", a.previousYear); | |
| qp(a, b, W() + "-nextYear", a.nextYear); | |
| qp(a, b, W() + "-year", a.showYearMenu_); | |
| a.elMonth_ = eg(W() + "-month", b); | |
| c = cg(); | |
| a.elYear_ = eg(W() + "-year", b || c.document_) | |
| } | |
| }, | |
| qp = function(a, b, c, e) { | |
| b = eg(c, b); | |
| fl(a).listen(b, "click", function(a) { | |
| a.preventDefault(); | |
| e.call(this, a) | |
| }) | |
| }, | |
| hp = function(a) { | |
| if (a.elFootRow_) { | |
| var b = | |
| a.elFootRow_; | |
| ng(b); | |
| var c = a.goog_ui_DatePicker$renderer_, | |
| e = a.showWeekNum_, | |
| f = zg(c.goog_ui_DefaultDatePickerRenderer$dom_, "TD"); | |
| f.colSpan = e ? 2 : 3; | |
| f.className = c.baseCssClass_ + "-today-cont"; | |
| ep(c, f, "Today", c.baseCssClass_ + "-today-btn"); | |
| b.appendChild(f); | |
| f = zg(c.goog_ui_DefaultDatePickerRenderer$dom_, "TD"); | |
| f.colSpan = e ? 4 : 3; | |
| b.appendChild(f); | |
| f = zg(c.goog_ui_DefaultDatePickerRenderer$dom_, "TD"); | |
| f.colSpan = 2; | |
| f.className = c.baseCssClass_ + "-none-cont"; | |
| ep(c, f, "None", c.baseCssClass_ + "-none-btn"); | |
| b.appendChild(f); | |
| qp(a, b, | |
| W() + "-today-btn", a.selectToday); | |
| qp(a, b, W() + "-none-btn", a.selectNone); | |
| a.elToday_ = eg(W() + "-today-btn", b); | |
| a.elNone_ = eg(W() + "-none-btn", b); | |
| kp(a) | |
| } | |
| }; | |
| d = fp.prototype; | |
| d.decorateInternal = function(a) { | |
| fp.superClass_.decorateInternal.call(this, a); | |
| mb(a, W()); | |
| var b = this.goog_ui_Component$dom_.createDom("TABLE", { | |
| role: "presentation" | |
| }), | |
| c = this.goog_ui_Component$dom_.createDom("THEAD"), | |
| e = this.goog_ui_Component$dom_.createDom("TBODY", { | |
| role: "grid" | |
| }), | |
| f = this.goog_ui_Component$dom_.createDom("TFOOT"); | |
| e.tabIndex = 0; | |
| this.tableBody_ = e; | |
| this.tableFoot_ = f; | |
| var g = this.goog_ui_Component$dom_.createDom("TR", { | |
| role: "row" | |
| }); | |
| g.className = W() + "-head"; | |
| this.elNavRow_ = g; | |
| gp(this); | |
| c.appendChild(g); | |
| this.elTable_ = []; | |
| for (var h = 0; 7 > h; h++) { | |
| g = zg(this.goog_ui_Component$dom_, "TR"); | |
| this.elTable_[h] = []; | |
| for (var m = 0; 8 > m; m++) { | |
| var n = zg(this.goog_ui_Component$dom_, 0 == m || 0 == h ? "th" : "td"); | |
| 0 != m && 0 != h || m == h ? 0 !== h && 0 !== m && (xl(n, "gridcell"), n.setAttribute("tabindex", "-1")) : (n.className = 0 == m ? W() + "-week" : W() + "-wday", xl(n, 0 == m ? "rowheader" : "columnheader")); | |
| g.appendChild(n); | |
| this.elTable_[h][m] = n | |
| } | |
| e.appendChild(g) | |
| } | |
| g = zg(this.goog_ui_Component$dom_, "TR"); | |
| g.className = W() + "-foot"; | |
| this.elFootRow_ = g; | |
| hp(this); | |
| f.appendChild(g); | |
| b.cellSpacing = "0"; | |
| b.cellPadding = "0"; | |
| b.appendChild(c); | |
| b.appendChild(e); | |
| b.appendChild(f); | |
| a.appendChild(b); | |
| if (this.getElement()) { | |
| for (b = 0; 7 > b; b++) qg(this.elTable_[0][b + 1], this.wdayNames_[((b + this.activeMonth_.firstDayOfWeek_ + 7) % 7 + 1) % 7]); | |
| Ej(this.elTable_[0][0].parentElement || this.elTable_[0][0].parentNode, !0) | |
| } | |
| ip(this); | |
| a.tabIndex = 0 | |
| }; | |
| d.createDom = function() { | |
| fp.superClass_.createDom.call(this); | |
| this.decorateInternal(this.getElement()) | |
| }; | |
| d.enterDocument = function() { | |
| fp.superClass_.enterDocument.call(this); | |
| var a = fl(this); | |
| a.listen(this.tableBody_, "click", this.handleGridClick_); | |
| a.listen(rp(this, this.getElement()), "key", this.handleGridKeyPress_) | |
| }; | |
| d.exitDocument = function() { | |
| fp.superClass_.exitDocument.call(this); | |
| this.destroyMenu_(); | |
| for (var a in this.keyHandlers_) this.keyHandlers_[a].dispose(); | |
| this.keyHandlers_ = {} | |
| }; | |
| d.create = fp.prototype.goog_ui_Component_prototype$decorate; | |
| d.disposeInternal = function() { | |
| fp.superClass_.disposeInternal.call(this); | |
| this.elNone_ = this.elToday_ = this.elYear_ = this.elMonthYear_ = this.elMonth_ = this.elFootRow_ = this.elNavRow_ = this.tableFoot_ = this.tableBody_ = this.elTable_ = null | |
| }; | |
| d.handleGridClick_ = function(a) { | |
| if ("TD" == a.target.tagName) { | |
| var b, c = -2, | |
| e = -2; | |
| for (b = a.target; b; b = b.previousSibling, c++); | |
| for (b = a.target.parentNode; b; b = b.previousSibling, e++); | |
| a = this.grid_[e][c]; | |
| this.userSelectableDateRange_.contains(a) && np(this, a.goog_date_Date_prototype$clone()) | |
| } | |
| }; | |
| d.handleGridKeyPress_ = function(a) { | |
| switch (a.goog_events_BrowserEvent$keyCode) { | |
| case 33: | |
| a.preventDefault(); | |
| var b = -1; | |
| break; | |
| case 34: | |
| a.preventDefault(); | |
| b = 1; | |
| break; | |
| case 37: | |
| a.preventDefault(); | |
| var c = -1; | |
| break; | |
| case 39: | |
| a.preventDefault(); | |
| c = 1; | |
| break; | |
| case 38: | |
| a.preventDefault(); | |
| c = -7; | |
| break; | |
| case 40: | |
| a.preventDefault(); | |
| c = 7; | |
| break; | |
| case 36: | |
| a.preventDefault(), this.selectToday(); | |
| case 46: | |
| a.preventDefault(); | |
| this.selectNone(); | |
| break; | |
| case 13: | |
| case 32: | |
| a.preventDefault(), op(this, this.date_, !0); | |
| default: | |
| return | |
| } | |
| this.date_ ? (a = this.date_.goog_date_Date_prototype$clone(), | |
| a.add(new Do(0, b, c))) : (a = this.activeMonth_.goog_date_Date_prototype$clone(), Ho(a, 1)); | |
| this.userSelectableDateRange_.contains(a) && (op(this, a, !1), this.selectedCell_.focus()) | |
| }; | |
| d.showMonthMenu_ = function(a) { | |
| a.stopPropagation(); | |
| a = []; | |
| for (var b = 0; 12 > b; b++) a.push(this.symbols_.STANDALONEMONTHS[b]); | |
| sp(this, this.elMonth_, a, this.handleMonthMenuClick_, this.symbols_.STANDALONEMONTHS[this.activeMonth_.getMonth()]) | |
| }; | |
| d.showYearMenu_ = function(a) { | |
| a.stopPropagation(); | |
| a = []; | |
| for (var b = this.activeMonth_.getFullYear(), c = this.activeMonth_.goog_date_Date_prototype$clone(), e = -5; 5 >= e; e++) c.date.setFullYear(b + e), a.push(Zo(this.i18nDateFormatterYear_, c)); | |
| sp(this, this.elYear_, a, this.handleYearMenuClick_, Zo(this.i18nDateFormatterYear_, this.activeMonth_)) | |
| }; | |
| d.handleMonthMenuClick_ = function(a) { | |
| a = Number(a.getAttribute("itemIndex")); | |
| this.activeMonth_.date.setMonth(a); | |
| ip(this); | |
| this.elMonth_.focus && this.elMonth_.focus() | |
| }; | |
| d.handleYearMenuClick_ = function(a) { | |
| 3 == a.firstChild.nodeType && (a = Number(a.getAttribute("itemIndex")), this.activeMonth_.date.setFullYear(this.activeMonth_.getFullYear() + a - 5), ip(this)); | |
| this.elYear_.focus() | |
| }; | |
| var sp = function(a, b, c, e, f) { | |
| a.destroyMenu_(); | |
| var g = zg(a.goog_ui_Component$dom_, "DIV"); | |
| g.className = W() + "-menu"; | |
| a.menuSelected_ = null; | |
| for (var h = zg(a.goog_ui_Component$dom_, "UL"), m = 0; m < c.length; m++) { | |
| var n = a.goog_ui_Component$dom_.createDom("LI", null, c[m]); | |
| n.setAttribute("itemIndex", m); | |
| c[m] == f && (a.menuSelected_ = n); | |
| h.appendChild(n) | |
| } | |
| g.appendChild(h); | |
| g.style.left = b.offsetLeft + b.parentNode.offsetLeft + "px"; | |
| g.style.top = b.offsetTop + "px"; | |
| g.style.width = b.clientWidth + "px"; | |
| a.elMonth_.parentNode.appendChild(g); | |
| a.menu_ = | |
| g; | |
| a.menuSelected_ || (a.menuSelected_ = h.firstChild); | |
| a.menuSelected_.className = W() + "-menu-selected"; | |
| a.menuCallback_ = e; | |
| b = fl(a); | |
| b.listen(a.menu_, "click", a.handleMenuClick_); | |
| b.listen(rp(a, a.menu_), "key", a.handleMenuKeyPress_); | |
| b.listen(a.goog_ui_Component$dom_.document_, "click", a.destroyMenu_); | |
| g.tabIndex = 0; | |
| g.focus() | |
| }; | |
| fp.prototype.handleMenuClick_ = function(a) { | |
| a.stopPropagation(); | |
| this.destroyMenu_(); | |
| this.menuCallback_ && this.menuCallback_(a.target) | |
| }; | |
| fp.prototype.handleMenuKeyPress_ = function(a) { | |
| a.stopPropagation(); | |
| var b = this.menuSelected_; | |
| switch (a.goog_events_BrowserEvent$keyCode) { | |
| case 35: | |
| a.preventDefault(); | |
| var c = b.parentNode.lastChild; | |
| break; | |
| case 36: | |
| a.preventDefault(); | |
| c = b.parentNode.firstChild; | |
| break; | |
| case 38: | |
| a.preventDefault(); | |
| c = b.previousSibling; | |
| break; | |
| case 40: | |
| a.preventDefault(); | |
| c = b.nextSibling; | |
| break; | |
| case 13: | |
| case 9: | |
| case 0: | |
| a.preventDefault(), this.destroyMenu_(), this.menuCallback_(b) | |
| } | |
| c && c != b && (b.className = "", c.className = W() + "-menu-selected", this.menuSelected_ = | |
| c) | |
| }; | |
| fp.prototype.destroyMenu_ = function() { | |
| if (this.menu_) { | |
| var a = fl(this); | |
| a.unlisten(this.menu_, "click", this.handleMenuClick_); | |
| a.unlisten(rp(this, this.menu_), "key", this.handleMenuKeyPress_); | |
| a.unlisten(this.goog_ui_Component$dom_.document_, "click", this.destroyMenu_); | |
| C(this.menu_); | |
| delete this.menu_ | |
| } | |
| }; | |
| var ip = function(a) { | |
| if (a.getElement()) { | |
| var b = a.activeMonth_.goog_date_Date_prototype$clone(); | |
| Ho(b, 1); | |
| a.elMonthYear_ && qg(a.elMonthYear_, Zo(a.i18nDateFormatterMonthYear_, b)); | |
| a.elMonth_ && qg(a.elMonth_, a.symbols_.STANDALONEMONTHS[b.getMonth()]); | |
| a.elYear_ && qg(a.elYear_, Zo(a.i18nDateFormatterYear_, b)); | |
| var c = ((b.getDay() + 6) % 7 - b.firstDayOfWeek_ + 7) % 7; | |
| b.add(new Do("m", -1)); | |
| Ho(b, Co(b.getFullYear(), b.getMonth()) - (c - 1)); | |
| c = new Do("d", 1); | |
| a.grid_ = []; | |
| for (var e = 0; 6 > e; e++) { | |
| a.grid_[e] = []; | |
| for (var f = 0; 7 > f; f++) { | |
| a.grid_[e][f] = | |
| b.goog_date_Date_prototype$clone(); | |
| var g = b.getFullYear(); | |
| b.add(c); | |
| 0 == b.getMonth() && 1 == b.getDate() && g++; | |
| b.date.setFullYear(g) | |
| } | |
| } | |
| if (a.getElement()) | |
| for (b = a.activeMonth_.getMonth(), f = new Go, c = f.getFullYear(), e = f.getMonth(), f = f.getDate(), g = 0; 6 > g; g++) { | |
| a.showWeekNum_ ? (qg(a.elTable_[g + 1][0], Zo(a.i18nDateFormatterWeek_, a.grid_[g][0])), a.elTable_[g + 1][0].className = W() + "-week") : (qg(a.elTable_[g + 1][0], ""), a.elTable_[g + 1][0].className = ""); | |
| for (var h = 0; 7 > h; h++) { | |
| var m = a.grid_[g][h], | |
| n = a.elTable_[g + 1][h + 1]; | |
| n.id || (n.id = | |
| ":" + (a.cellIdGenerator_.nextId_++).toString(36)); | |
| xl(n, "gridcell"); | |
| var p = Zo(a.i18nDateFormatterDayAriaLabel_, m); | |
| yl(n, "label", p); | |
| p = [W() + "-date"]; | |
| a.userSelectableDateRange_.contains(m) || p.push(W() + "-unavailable-date"); | |
| m.getMonth() != b && p.push(W() + "-other-month"); | |
| var r = (h + a.activeMonth_.firstDayOfWeek_ + 7) % 7; | |
| a.wdayStyles_[r] && p.push(a.wdayStyles_[r]); | |
| m.getDate() == f && m.getMonth() == e && m.getFullYear() == c && p.push(W() + "-today"); | |
| a.date_ && m.getDate() == a.date_.getDate() && m.getMonth() == a.date_.getMonth() && m.getFullYear() == | |
| a.date_.getFullYear() && (p.push(W() + "-selected"), a.selectedCell_ = n); | |
| m = Zo(a.i18nDateFormatterDay_, m); | |
| qg(n, m); | |
| n.className = p.join(" ") | |
| } | |
| 4 <= g && Ej(a.elTable_[g + 1][0].parentElement || a.elTable_[g + 1][0].parentNode, a.grid_[g][0].getMonth() == b || !0) | |
| } | |
| } | |
| }, | |
| mp = function(a) { | |
| var b = new pp("changeActiveMonth", a, a.activeMonth_.goog_date_Date_prototype$clone()); | |
| ne(a, b) | |
| }, | |
| rp = function(a, b) { | |
| var c = Fa(b); | |
| c in a.keyHandlers_ || (a.keyHandlers_[c] = new pl(b)); | |
| return a.keyHandlers_[c] | |
| }, | |
| pp = function(a, b, c) { | |
| Hd.call(this, a, b); | |
| this.date = | |
| c | |
| }; | |
| w(pp, Hd); | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2015 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var vo = function(a, b) { | |
| a || (a = (new Go).toIsoString(!0)); | |
| vo.superClass_.constructor.call(this, a, b); | |
| this.Blockly_Field_prototype$setValue(a); | |
| bk(this, "date") | |
| }, | |
| tp; | |
| w(vo, Wj); | |
| d = vo.prototype; | |
| d.CURSOR = "text"; | |
| d.dispose = function() { | |
| Fk(this); | |
| vo.superClass_.dispose.call(this) | |
| }; | |
| d.getValue = function() { | |
| return this.date_ | |
| }; | |
| d.Blockly_Field_prototype$setValue = function(a) { | |
| if (this.Blockly_Field_prototype$sourceBlock) { | |
| var b = ck(this, a); | |
| null !== b && (a = b) | |
| } | |
| this.date_ = a; | |
| Wj.prototype.Blockly_Field_prototype$setText.call(this, a) | |
| }; | |
| d.showEditor = function() { | |
| Gk(this, this.Blockly_Field_prototype$sourceBlock.RTL, up); | |
| var a = new fp; | |
| lp(a); | |
| jp(a); | |
| var b = hg(), | |
| c = zj(), | |
| e = Bj(Zj(this)), | |
| f = hk(this); | |
| a.render(Jk); | |
| np(a, Jo(this.getValue())); | |
| var g = Dj(a.getElement()); | |
| e.y = e.y + g.height + f.height >= b.height + c.y ? e.y - (g.height - 1) : e.y + (f.height - 1); | |
| this.Blockly_Field_prototype$sourceBlock.RTL ? (e.x += f.width, e.x -= g.width, e.x < c.x && (e.x = c.x)) : e.x > b.width + c.x - g.width && (e.x = b.width + c.x - g.width); | |
| Im(e.x, e.y, b, c, this.Blockly_Field_prototype$sourceBlock.RTL); | |
| var h = this; | |
| tp = $d(a, "change", function(a) { | |
| a = a.date ? a.date.toIsoString(!0) : ""; | |
| L(); | |
| h.Blockly_Field_prototype$sourceBlock && (a = ck(h, a)); | |
| h.Blockly_Field_prototype$setValue(a) | |
| }) | |
| }; | |
| var up = function() { | |
| tp && he(tp); | |
| ci(!1) | |
| }, | |
| vp = [".blocklyWidgetDiv .goog-date-picker,", ".blocklyWidgetDiv .goog-date-picker th,", ".blocklyWidgetDiv .goog-date-picker td {", " font: 13px Arial, sans-serif;", "}", ".blocklyWidgetDiv .goog-date-picker {", " -moz-user-focus: normal;", " -moz-user-select: none;", " position: relative;", " border: 1px solid #000;", " float: left;", " padding: 2px;", " color: #000;", " background: #c3d9ff;", " cursor: default;", "}", ".blocklyWidgetDiv .goog-date-picker th {", " text-align: center;", | |
| "}", ".blocklyWidgetDiv .goog-date-picker td {", " text-align: center;", " vertical-align: middle;", " padding: 1px 3px;", "}", ".blocklyWidgetDiv .goog-date-picker-menu {", " position: absolute;", " background: threedface;", " border: 1px solid gray;", " -moz-user-focus: normal;", " z-index: 1;", " outline: none;", "}", ".blocklyWidgetDiv .goog-date-picker-menu ul {", " list-style: none;", " margin: 0px;", " padding: 0px;", "}", ".blocklyWidgetDiv .goog-date-picker-menu ul li {", " cursor: default;", "}", | |
| ".blocklyWidgetDiv .goog-date-picker-menu-selected {", " background: #ccf;", "}", ".blocklyWidgetDiv .goog-date-picker th {", " font-size: .9em;", "}", ".blocklyWidgetDiv .goog-date-picker td div {", " float: left;", "}", ".blocklyWidgetDiv .goog-date-picker button {", " padding: 0px;", " margin: 1px 0;", " border: 0;", " color: #20c;", " font-weight: bold;", " background: transparent;", "}", ".blocklyWidgetDiv .goog-date-picker-date {", " background: #fff;", "}", ".blocklyWidgetDiv .goog-date-picker-week,", | |
| ".blocklyWidgetDiv .goog-date-picker-wday {", " padding: 1px 3px;", " border: 0;", " border-color: #a2bbdd;", " border-style: solid;", "}", ".blocklyWidgetDiv .goog-date-picker-week {", " border-right-width: 1px;", "}", ".blocklyWidgetDiv .goog-date-picker-wday {", " border-bottom-width: 1px;", "}", ".blocklyWidgetDiv .goog-date-picker-head td {", " text-align: center;", "}", ".blocklyWidgetDiv td.goog-date-picker-today-cont {", " text-align: center;", "}", ".blocklyWidgetDiv td.goog-date-picker-none-cont {", | |
| " text-align: center;", "}", ".blocklyWidgetDiv .goog-date-picker-month {", " min-width: 11ex;", " white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-date-picker-year {", " min-width: 6ex;", " white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-date-picker-monthyear {", " white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-date-picker table {", " border-collapse: collapse;", "}", ".blocklyWidgetDiv .goog-date-picker-other-month {", " color: #888;", "}", ".blocklyWidgetDiv .goog-date-picker-wkend-start,", | |
| ".blocklyWidgetDiv .goog-date-picker-wkend-end {", " background: #eee;", "}", ".blocklyWidgetDiv td.goog-date-picker-selected {", " background: #c3d9ff;", "}", ".blocklyWidgetDiv .goog-date-picker-today {", " background: #9ab;", " font-weight: bold !important;", " border-color: #246 #9bd #9bd #246;", " color: #fff;", "}" | |
| ]; | |
| var wp = "", | |
| xp = null, | |
| yp = [], | |
| zp = "", | |
| Ap = function(a) { | |
| document.head.insertBefore(a, document.head.firstChild); | |
| xp = a.sheet; | |
| Nh("handopen") | |
| }, | |
| Bp = function() { | |
| 0 < yp.length && yp[yp.length - 1].remove() | |
| }, | |
| Cp = function() { | |
| Bp(); | |
| var a = yp.pop(); | |
| 0 < yp.length && Ap(yp[yp.length - 1]); | |
| return a | |
| }, | |
| Nh = function(a) { | |
| if (!(ld || nd || pd) && wp != a) { | |
| wp = a; | |
| var b = "handopen" == a ? "default" : "url(" + zp + "/" + a + ".cur), auto"; | |
| var c = ".blocklyDraggable {\n cursor: " + b + ";\n}\n"; | |
| xp.deleteRule(0); | |
| xp.insertRule(c, 0); | |
| c = document.getElementsByClassName("blocklyToolboxDiv"); | |
| for (var e = 0, f; f = c[e]; e++) f.style.cursor = "handdelete" == a ? b : ""; | |
| document.body.parentNode.style.cursor = "handopen" == a ? "" : b | |
| } | |
| }, | |
| Dp = [".blocklySvg {", "outline: none;", "overflow: hidden;", "position: absolute;", "display: block;", "box-sizing: border-box;", "}", ".blocklyRelativeWrapper {", "position: relative;", "width: 100%;", "height: 100%;", "}", ".blocklyWidgetDiv {", "display: none;", "position: absolute;", "z-index: 99999;", "}", ".injectionDiv {", "height: 100%;", "position: relative;", "overflow: hidden;", "}", ".blocklyNonSelectable {", | |
| "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "-ms-user-select: none;", "}", ".blocklyWidgetDiv.fieldTextInput {", "overflow: hidden;", "border: 1px solid;", "box-sizing: border-box;", "transform-origin: 0 0;", "-ms-transform-origin: 0 0;", "-moz-transform-origin: 0 0;", "-webkit-transform-origin: 0 0;", "}", ".blocklyTextDropDownArrow {", "position: absolute;", "}", ".blocklyNonSelectable {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "-ms-user-select: none;", | |
| "}", ".blocklyWsDragSurface {", "display: none;", "position: absolute;", "overflow: visible;", "top: 0;", "left: 0;", "}", ".blocklyBlockDragSurface {", "display: none;", "position: absolute;", "top: 0;", "left: 0;", "right: 0;", "bottom: 0;", "overflow: visible !important;", "z-index: 50;", "}", ".blocklyTooltipDiv {", "background-color: #ffffc7;", "border: 1px solid #ddc;", "box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);", "color: #000;", "display: none;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: 9pt;", | |
| "opacity: 0.9;", "padding: 2px;", "position: absolute;", "z-index: 100000;", "}", ".blocklyDropDownDiv {", "position: fixed;", "left: 0;", "top: 0;", "z-index: 1000;", "display: none;", "border: 1px solid;", "border-radius: 4px;", "box-shadow: 0px 0px 8px 1px " + I.dropDownShadow + ";", "padding: 4px;", "-webkit-user-select: none;", "}", ".blocklyDropDownContent {", "max-height: 300px;", "overflow: auto;", "}", ".blocklyDropDownArrow {", "position: absolute;", "left: 0;", "top: 0;", "width: 16px;", "height: 16px;", "z-index: -1;", | |
| "background-color: inherit;", "border-color: inherit;", "}", ".blocklyDropDownButton {", "display: inline-block;", "float: left;", "padding: 0;", "margin: 4px;", "border-radius: 4px;", "outline: none;", "border: 1px solid;", "transition: box-shadow .1s;", "cursor: pointer;", "}", ".blocklyDropDownButtonHover {", "box-shadow: 0px 0px 0px 4px " + I.fieldShadow + ";", "}", ".blocklyDropDownButton:active {", "box-shadow: 0px 0px 0px 6px " + I.fieldShadow + ";", "}", ".blocklyDropDownButton > img {", "width: 80%;", "height: 80%;", | |
| "margin-top: 5%", "}", ".blocklyDropDownPlaceholder {", "display: inline-block;", "float: left;", "padding: 0;", "margin: 4px;", "}", ".blocklyNumPadButton {", "display: inline-block;", "float: left;", "padding: 0;", "width: 48px;", "height: 48px;", "margin: 4px;", "border-radius: 4px;", "background: $colour_numPadBackground;", "color: $colour_numPadText;", "outline: none;", "border: 1px solid $colour_numPadBorder;", "cursor: pointer;", "font-weight: 600;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: 12pt;", | |
| "-webkit-tap-highlight-color: rgba(0,0,0,0);", "}", ".blocklyNumPadButton > img {", "margin-top: 10%;", "width: 80%;", "height: 80%;", "}", ".blocklyNumPadButton:active {", "background: $colour_numPadActiveBackground;", "-webkit-tap-highlight-color: rgba(0,0,0,0);", "}", ".arrowTop {", "border-top: 1px solid;", "border-left: 1px solid;", "border-top-left-radius: 4px;", "border-color: inherit;", "}", ".arrowBottom {", "border-bottom: 1px solid;", "border-right: 1px solid;", "border-bottom-right-radius: 4px;", "border-color: inherit;", | |
| "}", ".valueReportBox {", "min-width: 50px;", "max-width: 300px;", "max-height: 200px;", "overflow: auto;", "word-wrap: break-word;", "text-align: center;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: .8em;", "}", ".blocklyResizeSE {", "cursor: se-resize;", "fill: #aaa;", "}", ".blocklyResizeSW {", "cursor: sw-resize;", "fill: #aaa;", "}", ".blocklyResizeLine {", "stroke: #888;", "stroke-width: 1;", "}", ".blocklyHighlightedConnectionPath {", "fill: none;", "stroke: #fc3;", "stroke-width: 4px;", "}", | |
| ".blocklyPath {", "stroke-width: 0px;", "}", ".blocklySelected>.blocklyPath {", "}", ".blocklyDragging>.blocklyPath {", "}", ".blocklyDisabled>.blocklyPath {", "fill-opacity: .5;", "stroke-opacity: .5;", "}", ".blocklyInsertionMarker>.blocklyPath {", "stroke: none;", "}", ".blocklyText {", "fill: #fff;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: 12pt;", "font-weight: 500;", "}", ".blocklyTextTruncated {", "font-size: 11pt;", "}", ".blocklyNonEditableText>text {", "pointer-events: none;", "}", ".blocklyNonEditableText>text,", | |
| ".blocklyEditableText>text {", "fill: $colour_text;", "}", ".blocklyDropdownText {", "fill: #fff !important;", "}", ".blocklyBubbleText {", "fill: $colour_text;", "}", ".blocklyFlyout {", "position: absolute;", "z-index: 20;", "}", ".blocklyFlyoutButton {", "fill: #888;", "cursor: default;", "}", ".blocklyFlyoutButtonShadow {", "fill: #666;", "}", ".blocklyFlyoutButton:hover {", "fill: #aaa;", "}", ".blocklyFlyoutLabel {", "cursor: default;", "}", ".blocklyFlyoutLabelBackground {", "opacity: 0;", "}", ".blocklyFlyoutLabelText {", | |
| "fill: #000;", "}", ".blocklySvg text, .blocklyBlockDragSurface text {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "cursor: inherit;", "}", ".blocklyHidden {", "display: none;", "}", ".blocklyFieldDropdown:not(.blocklyHidden) {", "display: block;", "}", ".blocklyIconGroup {", "cursor: default;", "}", ".blocklyIconGroup:not(:hover),", ".blocklyIconGroupReadonly {", "opacity: .6;", "}", ".blocklyIconShape {", "fill: #00f;", "stroke: #fff;", "stroke-width: 1px;", "}", ".blocklyIconSymbol {", | |
| "fill: #fff;", "}", ".blocklyMinimalBody {", "margin: 0;", "padding: 0;", "}", ".blocklyCommentTextarea {", "background-color: #ffc;", "border: 0;", "margin: 0;", "padding: 2px;", "resize: none;", "}", ".blocklyHtmlInput {", "border: none;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: 12pt;", "height: 100%;", "margin: 0;", "outline: none;", "box-sizing: border-box;", "width: 100%;", "text-align: center;", "color: $colour_text;", "font-weight: 500;", "}", ".blocklyMainBackground {", "stroke: none;", | |
| "}", ".blocklyMutatorBackground {", "fill: #fff;", "stroke: #ddd;", "stroke-width: 1;", "}", ".blocklyFlyoutBackground {", "fill: $colour_flyout;", "fill-opacity: .8;", "}", ".blocklyMainWorkspaceScrollbar {", "z-index: 21;", "}", ".blocklyFlyoutScrollbar {", "z-index: 30;", "}", ".blocklyScrollbarHorizontal, .blocklyScrollbarVertical {", "position: absolute;", "left: 0;", "outline: none;", "}", ".blocklyScrollbarBackground {", "opacity: 0;", "}", ".blocklyScrollbarHandle {", "fill: $colour_scrollbar;", "}", ".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", | |
| ".blocklyScrollbarHandle:hover {", "fill: $colour_scrollbarHover;", "}", ".blocklyZoom>image {", "opacity: 1;", "}", ".blocklyFlyout .blocklyScrollbarHandle {", "fill: #bbb;", "}", ".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", ".blocklyFlyout .blocklyScrollbarHandle:hover {", "fill: #aaa;", "}", ".blocklyInvalidInput {", "background: #faa;", "}", ".blocklyAngleCircle {", "stroke: #444;", "stroke-width: 1;", "fill: #ddd;", "fill-opacity: .8;", "}", ".blocklyAngleMarks {", "stroke: #444;", "stroke-width: 1;", | |
| "}", ".blocklyAngleGauge {", "fill: #f88;", "fill-opacity: .8;", "}", ".blocklyAngleLine {", "stroke: #f00;", "stroke-width: 2;", "stroke-linecap: round;", "}", ".blocklyContextMenu {", "border-radius: 4px;", "}", ".blocklyDropdownMenu {", "padding: 0 !important;", "}", ".blocklyDropDownNumPad {", "background-color: $colour_numPadBackground;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {", "background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px !important;", | |
| "}", ".blocklyToolboxDiv {", "background-color: $colour_toolbox;", "color: $colour_toolboxText;", "overflow-x: visible;", "overflow-y: auto;", "position: absolute;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "z-index: 40;", "}", ".blocklyTreeRoot {", "padding: 4px 0;", "}", ".blocklyTreeRoot:focus {", "outline: none;", "}", ".blocklyTreeRow {", "height: 22px;", "line-height: 22px;", "margin-bottom: 3px;", "padding-right: 8px;", "white-space: nowrap;", "}", ".blocklyHorizontalTree {", "float: left;", "margin: 1px 5px 8px 0;", | |
| "}", ".blocklyHorizontalTreeRtl {", "float: right;", "margin: 1px 0 8px 5px;", "}", '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {', "margin-left: 8px;", "}", ".blocklyTreeRow:not(.blocklyTreeSelected):hover {", "background-color: #e4e4e4;", "}", ".blocklyTreeSeparator {", "border-bottom: solid #e5e5e5 1px;", "height: 0;", "margin: 5px 0;", "}", ".blocklyTreeSeparatorHorizontal {", "border-right: solid #e5e5e5 1px;", "width: 0;", "padding: 5px 0;", "margin: 0 5px;", "}", ".blocklyTreeIcon {", "background-image: url(<<<PATH>>>/sprites.png);", | |
| "height: 16px;", "vertical-align: middle;", "width: 16px;", "}", ".blocklyTreeIconClosedLtr {", "background-position: -32px -1px;", "}", ".blocklyTreeIconClosedRtl {", "background-position: 0px -1px;", "}", ".blocklyTreeIconOpen {", "background-position: -16px -1px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedLtr {", "background-position: -32px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedRtl {", "background-position: 0px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconOpen {", "background-position: -16px -17px;", | |
| "}", ".blocklyTreeIconNone,", ".blocklyTreeSelected>.blocklyTreeIconNone {", "background-position: -48px -1px;", "}", ".blocklyTreeLabel {", "cursor: default;", 'font-family: "Helvetica Neue", Helvetica, sans-serif;', "font-size: 16px;", "padding: 0 3px;", "vertical-align: middle;", "}", ".blocklyTreeSelected .blocklyTreeLabel {", "color: #fff;", "}", ".blocklyWidgetDiv .goog-palette {", "outline: none;", "cursor: default;", "}", ".blocklyWidgetDiv .goog-palette-table {", "border-collapse: collapse;", "}", ".blocklyWidgetDiv .goog-palette-cell {", | |
| "height: 13px;", "width: 15px;", "margin: 0;", "border: 0;", "text-align: center;", "vertical-align: middle;", "font-size: 1px;", "}", ".blocklyWidgetDiv .goog-palette-colorswatch {", "position: relative;", "height: 13px;", "width: 15px;", "}", ".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {", "border: 1px solid #FFF;", "box-sizing: border-box;", "}", ".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {", "border: 1px solid #000;", "box-sizing: border-box;", "color: #fff;", | |
| "}", ".blocklyWidgetDiv .goog-menu {", "background: #fff;", "border-color: #ccc #666 #666 #ccc;", "border-style: solid;", "border-width: 1px;", "cursor: default;", 'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;', "margin: 0;", "outline: none;", "padding: 4px 0;", "position: absolute;", "overflow-y: auto;", "overflow-x: hidden;", "max-height: 100%;", "z-index: 20000;", "}", ".blocklyDropDownDiv .goog-menu {", "cursor: default;", 'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;', "outline: none;", | |
| "z-index: 20000;", "}", ".blocklyWidgetDiv .goog-menuitem {", "color: #000;", 'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;', "list-style: none;", "margin: 0;", "padding: 4px 7em 4px 28px;", "white-space: nowrap;", "}", ".blocklyDropDownDiv .goog-menuitem {", "color: #fff;", 'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;', "font-weight: bold;", "list-style: none;", "margin: 0;", "padding: 4px 7em 4px 28px;", "white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl, ", | |
| ".blocklyDropDownDiv .goog-menuitem.goog-menuitem-rtl {", "padding-left: 7em;", "padding-right: 28px;", "}", ".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,", ".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem, ", ".blocklyDropDownDiv .goog-menu-nocheckbox .goog-menuitem,", ".blocklyDropDownDiv .goog-menu-noicon .goog-menuitem { ", "padding-left: 12px;", "}", ".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem, ", ".blocklyDropDownDiv .goog-menu-noaccel .goog-menuitem {", "padding-right: 20px;", "}", | |
| ".blocklyWidgetDiv .goog-menuitem-content ", ".blocklyDropDownDiv .goog-menuitem-content {", "color: #000;", 'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;', "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content, ", ".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-accel,", ".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-content {", "color: #ccc !important;", "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon, ", | |
| ".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-icon {", "opacity: 0.3;", "-moz-opacity: 0.3;", "filter: alpha(opacity=30);", "}", ".blocklyWidgetDiv .goog-menuitem-highlight,", ".blocklyWidgetDiv .goog-menuitem-hover {", "background-color: #d6e9f8;", "border-color: #d6e9f8;", "border-style: dotted;", "border-width: 1px 0;", "padding-bottom: 3px;", "padding-top: 3px;", "}", ".blocklyDropDownDiv .goog-menuitem-highlight,", ".blocklyDropDownDiv .goog-menuitem-hover {", "background-color: rgba(0, 0, 0, 0.2);", | |
| "}", ".blocklyWidgetDiv .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-icon, ", ".blocklyDropDownDiv .goog-menuitem-checkbox,", ".blocklyDropDownDiv .goog-menuitem-icon {", "background-repeat: no-repeat;", "height: 16px;", "left: 6px;", "position: absolute;", "right: auto;", "vertical-align: middle;", "width: 16px;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon,", ".blocklyDropDownDiv .goog-option-selected .goog-menuitem-checkbox,", | |
| ".blocklyDropDownDiv .goog-option-selected .goog-menuitem-icon {", "background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px !important;", "position: static;", "float: left;", "margin-left: -24px;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon,", ".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-checkbox,", ".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-icon {", "float: right;", "margin-left: 6px;", "}", ".blocklyWidgetDiv .goog-menuitem-accel, ", | |
| ".blocklyDropDownDiv .goog-menuitem-accel {", "color: #999;", "direction: ltr;", "left: auto;", "padding: 0 6px;", "position: absolute;", "right: 0;", "text-align: right;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel, ", ".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-accel {", "left: 0;", "right: auto;", "text-align: left;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-hint, ", ".blocklyDropDownDiv .goog-menuitem-mnemonic-hint {", "text-decoration: underline;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-separator, ", | |
| ".blocklyDropDownDiv .goog-menuitem-mnemonic-separator {", "color: #999;", "font-size: 12px;", "padding-left: 4px;", "}", ".blocklyWidgetDiv .goog-menuseparator, ", ".blocklyDropDownDiv .goog-menuseparator {", "border-top: 1px solid #ccc;", "margin: 4px 0;", "padding: 0;", "}", ".blocklyFlyoutCheckbox {", "fill: red;", "}", ".blocklyFlyoutCheckbox.checked {", "fill: blue;", "}", ".scratchCategoryMenu {", "width: 250px;", "background: $colour_toolbox;", "color: $colour_toolboxText;", "font-size: .9em;", "user-select: none;", | |
| "-webkit-user-select: none;", "-moz-user-select: none;", "-ms-user-select: none;", "}", ".scratchCategoryRow {", "width: 50%;", "}", ".scratchCategoryMenuItem {", "padding: 4px;", "width: 50%;", "cursor: pointer;", "}", ".scratchCategoryMenuItem.categorySelected {", "background: $colour_toolboxSelected;", "border-radius: 16px;", "}", ".scratchCategoryItemBubbleLTR {", "width: 14px;", "height: 14px;", "border: 1px solid;", "border-radius: 8px;", "float: left;", "margin-right: 8px;", "}", ".scratchCategoryItemBubbleRTL {", | |
| "width: 14px;", "height: 14px;", "border: 1px solid;", "border-radius: 8px;", "float: right;", "margin-left: 8px;", "}", ".scratchCategoryMenuItem:hover {", "color: $colour_toolboxHover !important;", "}", "" | |
| ]; | |
| H.math = {}; | |
| H.math_number = { | |
| init: function() { | |
| io(this, { | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_number", | |
| name: "NUM", | |
| value: "0" | |
| }], | |
| output: "Number", | |
| outputShape: 2, | |
| colour: I.textField | |
| }) | |
| } | |
| }; | |
| H.math_integer = { | |
| init: function() { | |
| io(this, { | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_number", | |
| name: "NUM", | |
| precision: 1 | |
| }], | |
| output: "Number", | |
| outputShape: 2, | |
| colour: I.textField | |
| }) | |
| } | |
| }; | |
| H.math_whole_number = { | |
| init: function() { | |
| io(this, { | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_number", | |
| name: "NUM", | |
| min: 0, | |
| precision: 1 | |
| }], | |
| output: "Number", | |
| outputShape: 2, | |
| colour: I.textField | |
| }) | |
| } | |
| }; | |
| H.math_positive_number = { | |
| init: function() { | |
| io(this, { | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_number", | |
| name: "NUM", | |
| min: 0 | |
| }], | |
| output: "Number", | |
| outputShape: 2, | |
| colour: I.textField | |
| }) | |
| } | |
| }; | |
| H.math_angle = { | |
| init: function() { | |
| io(this, { | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_angle", | |
| name: "NUM", | |
| value: 90 | |
| }], | |
| output: "Number", | |
| outputShape: 2, | |
| colour: I.textField | |
| }) | |
| } | |
| }; | |
| H.control = {}; | |
| H.control_repeat = { | |
| init: function() { | |
| io(this, { | |
| id: "control_repeat", | |
| message0: "%1 %2 %3", | |
| args0: [{ | |
| type: "input_statement", | |
| name: "SUBSTACK" | |
| }, { | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/control_repeat.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "*", | |
| flip_rtl: !0 | |
| }, { | |
| type: "input_value", | |
| name: "TIMES", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: "control", | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary | |
| }) | |
| } | |
| }; | |
| H.control_forever = { | |
| init: function() { | |
| io(this, { | |
| id: "control_forever", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "input_statement", | |
| name: "SUBSTACK" | |
| }, { | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/control_forever.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "*", | |
| flip_rtl: !0 | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| category: "control", | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary | |
| }) | |
| } | |
| }; | |
| H.control_repeat = { | |
| init: function() { | |
| io(this, { | |
| id: "control_repeat", | |
| message0: "%1 %2 %3", | |
| args0: [{ | |
| type: "input_statement", | |
| name: "SUBSTACK" | |
| }, { | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/control_repeat.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "*", | |
| flip_rtl: !0 | |
| }, { | |
| type: "input_value", | |
| name: "TIMES", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: "control", | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary | |
| }) | |
| } | |
| }; | |
| H.control_stop = { | |
| init: function() { | |
| io(this, { | |
| id: "control_stop", | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/control_stop.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "Stop" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| category: "control", | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary | |
| }) | |
| } | |
| }; | |
| H.control_wait = { | |
| init: function() { | |
| io(this, { | |
| id: "control_wait", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/control_wait.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "Wait" | |
| }, { | |
| type: "input_value", | |
| name: "DURATION", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: "control", | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary | |
| }) | |
| } | |
| }; | |
| H.event = {}; | |
| H.event_whenflagclicked = { | |
| init: function() { | |
| io(this, { | |
| id: "event_whenflagclicked", | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/event_whenflagclicked.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "When green flag clicked", | |
| flip_rtl: !0 | |
| }], | |
| inputsInline: !0, | |
| nextStatement: null, | |
| category: "events", | |
| colour: I.event.primary, | |
| colourSecondary: I.event.secondary, | |
| colourTertiary: I.event.tertiary | |
| }) | |
| } | |
| }; | |
| H.dropdown_whenbroadcast = { | |
| init: function() { | |
| eo(this.appendInput(5, ""), new uo([{ | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_blue.svg", | |
| value: "blue", | |
| width: 48, | |
| height: 48, | |
| alt: "Blue" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_green.svg", | |
| value: "green", | |
| width: 48, | |
| height: 48, | |
| alt: "Green" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_coral.svg", | |
| value: "coral", | |
| width: 48, | |
| height: 48, | |
| alt: "Coral" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_magenta.svg", | |
| value: "magenta", | |
| width: 48, | |
| height: 48, | |
| alt: "Magenta" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_orange.svg", | |
| value: "orange", | |
| width: 48, | |
| height: 48, | |
| alt: "Orange" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_purple.svg", | |
| value: "purple", | |
| width: 48, | |
| height: 48, | |
| alt: "Purple" | |
| }]), "CHOICE"); | |
| this.setOutput(!0); | |
| this.setColour(I.event.primary, I.event.secondary, I.event.tertiary) | |
| } | |
| }; | |
| H.event_whenbroadcastreceived = { | |
| init: function() { | |
| io(this, { | |
| id: "event_whenbroadcastreceived", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/event_when-broadcast-received_blue.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "Broadcast received" | |
| }, { | |
| type: "input_value", | |
| name: "CHOICE" | |
| }], | |
| inputsInline: !0, | |
| nextStatement: null, | |
| category: "events", | |
| colour: I.event.primary, | |
| colourSecondary: I.event.secondary, | |
| colourTertiary: I.event.tertiary | |
| }) | |
| } | |
| }; | |
| H.dropdown_broadcast = { | |
| init: function() { | |
| eo(this.appendInput(5, ""), new uo([{ | |
| src: K.options.pathToMedia + "icons/event_broadcast_blue.svg", | |
| value: "blue", | |
| width: 48, | |
| height: 48, | |
| alt: "Blue" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_broadcast_green.svg", | |
| value: "green", | |
| width: 48, | |
| height: 48, | |
| alt: "Green" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_broadcast_coral.svg", | |
| value: "coral", | |
| width: 48, | |
| height: 48, | |
| alt: "Coral" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_broadcast_magenta.svg", | |
| value: "magenta", | |
| width: 48, | |
| height: 48, | |
| alt: "Magenta" | |
| }, | |
| { | |
| src: K.options.pathToMedia + "icons/event_broadcast_orange.svg", | |
| value: "orange", | |
| width: 48, | |
| height: 48, | |
| alt: "Orange" | |
| }, { | |
| src: K.options.pathToMedia + "icons/event_broadcast_purple.svg", | |
| value: "purple", | |
| width: 48, | |
| height: 48, | |
| alt: "Purple" | |
| } | |
| ]), "CHOICE"); | |
| this.setOutput(!0); | |
| this.setColour(I.event.primary, I.event.secondary, I.event.tertiary) | |
| } | |
| }; | |
| H.event_broadcast = { | |
| init: function() { | |
| io(this, { | |
| id: "event_broadcast", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: K.options.pathToMedia + "icons/event_broadcast_blue.svg", | |
| width: 40, | |
| height: 40, | |
| alt: "Broadcast" | |
| }, { | |
| type: "input_value", | |
| name: "CHOICE" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: "events", | |
| colour: I.event.primary, | |
| colourSecondary: I.event.secondary, | |
| colourTertiary: I.event.tertiary | |
| }) | |
| } | |
| }; | |
| H.defaultToolbox = '<xml id="toolbox-categories" style="display: none"></xml>'; | |
| H.defaultToolboxSimple = '<xml id="toolbox-simple" style="display: none"><block type="event_whenflagclicked"></block><block type="event_whenbroadcastreceived"><value name="CHOICE"><shadow type="dropdown_whenbroadcast"><field name="CHOICE">blue</field></shadow></value></block><block type="event_broadcast"><value name="CHOICE"><shadow type="dropdown_broadcast"><field name="CHOICE">blue</field></shadow></value></block><block type="control_forever"></block><block type="control_repeat"><value name="TIMES"><shadow type="math_whole_number"><field name="NUM">4</field></shadow></value></block><block type="control_stop"></block><block type="control_wait"><value name="DURATION"><shadow type="math_positive_number"><field name="NUM">1</field></shadow></value></block></xml>'; | |
| var Vh = function(a) { | |
| var b = !!a.readOnly; | |
| if (b) var c = null, | |
| e = !1, | |
| f = !1, | |
| g = !1, | |
| h = !1, | |
| m = !1, | |
| n = !1; | |
| else { | |
| if (!a.toolbox) { | |
| var p = (new DOMParser).parseFromString(H.defaultToolbox, "text/xml"); | |
| a.toolbox = p.documentElement | |
| } | |
| c = Ep(a.toolbox); | |
| e = !(!c || !c.getElementsByTagName("category").length); | |
| f = a.trashcan; | |
| void 0 === f && (f = !1); | |
| g = a.collapse; | |
| void 0 === g && (g = e); | |
| h = a.comments; | |
| void 0 === h && (h = e); | |
| m = a.disable; | |
| void 0 === m && (m = e); | |
| n = a.sounds; | |
| void 0 === n && (n = !0) | |
| } | |
| var r = !!a.rtl, | |
| t = a.horizontalLayout; | |
| void 0 === t && (t = !1); | |
| p = a.toolboxPosition; | |
| p = "end" === | |
| p ? !1 : !0; | |
| p = t ? p ? 0 : 1 : p == r ? 3 : 2; | |
| var x = a.scrollbars; | |
| void 0 === x && (x = e); | |
| var fa = a.css; | |
| void 0 === fa && (fa = !0); | |
| var R = "https://blockly-demo.appspot.com/static/media/"; | |
| a.media ? R = a.media : a.path && (R = a.path + "media/"); | |
| var Ga = void 0 === a.oneBasedIndex ? !0 : !!a.oneBasedIndex, | |
| ua = a.colours; | |
| if (ua) | |
| for (var la in ua) ua.hasOwnProperty(la) && I.hasOwnProperty(la) && (I[la] = ua[la]); | |
| this.RTL = r; | |
| this.oneBasedIndex = Ga; | |
| this.collapse = g; | |
| this.comments = h; | |
| this.disable = m; | |
| this.readOnly = b; | |
| this.pathToMedia = R; | |
| this.hasCategories = e; | |
| this.hasScrollbars = | |
| x; | |
| this.hasTrashcan = f; | |
| this.hasSounds = n; | |
| this.hasCss = fa; | |
| this.horizontalLayout = t; | |
| this.languageTree = c; | |
| b = a.grid || {}; | |
| la = {}; | |
| la.spacing = parseFloat(b.spacing) || 0; | |
| la.colour = b.colour || "#888"; | |
| la.length = parseFloat(b.length) || 1; | |
| la.snap = 0 < la.spacing && !!b.snap; | |
| this.gridOptions = la; | |
| a = a.zoom || {}; | |
| b = {}; | |
| b.controls = void 0 === a.controls ? !1 : !!a.controls; | |
| b.wheel = void 0 === a.wheel ? !1 : !!a.wheel; | |
| b.startScale = void 0 === a.startScale ? 1 : parseFloat(a.startScale); | |
| b.maxScale = void 0 === a.maxScale ? 3 : parseFloat(a.maxScale); | |
| b.minScale = void 0 === | |
| a.minScale ? .3 : parseFloat(a.minScale); | |
| b.scaleSpeed = void 0 === a.scaleSpeed ? 1.2 : parseFloat(a.scaleSpeed); | |
| this.zoomOptions = b; | |
| this.toolboxPosition = p; | |
| this.insetShadowFilterId = this.embossFilterId = void 0 | |
| }; | |
| Vh.prototype.parentWorkspace = null; | |
| Vh.prototype.setMetrics = null; | |
| Vh.prototype.getMetrics = null; | |
| var Ep = function(a) { | |
| a ? ("string" != typeof a && ("undefined" == typeof XSLTProcessor && a.outerHTML ? a = a.outerHTML : a instanceof Element || (a = null)), "string" == typeof a && (a = Fp(a))) : a = null; | |
| return a | |
| }; | |
| var Gp = function(a) { | |
| this.Blockly_WorkspaceDragSurfaceSvg_prototype$container_ = a; | |
| this.createDom() | |
| }; | |
| d = Gp.prototype; | |
| d.Blockly_WorkspaceDragSurfaceSvg_prototype$container_ = null; | |
| d.createDom = function() { | |
| this.Blockly_WorkspaceDragSurfaceSvg$SVG_ || (this.Blockly_WorkspaceDragSurfaceSvg$SVG_ = O("svg", { | |
| xmlns: "http://www.w3.org/2000/svg", | |
| "xmlns:html": "http://www.w3.org/1999/xhtml", | |
| "xmlns:xlink": "http://www.w3.org/1999/xlink", | |
| version: "1.1", | |
| "class": "blocklyWsDragSurface" | |
| }, null), this.Blockly_WorkspaceDragSurfaceSvg_prototype$container_.appendChild(this.Blockly_WorkspaceDragSurfaceSvg$SVG_)) | |
| }; | |
| d.translateSurface = function(a, b) { | |
| var c = a.toFixed(0), | |
| e = b.toFixed(0); | |
| this.Blockly_WorkspaceDragSurfaceSvg$SVG_.style.display = "block"; | |
| Ck(this.Blockly_WorkspaceDragSurfaceSvg$SVG_, "translate3d(" + c + "px, " + e + "px, 0px)") | |
| }; | |
| d.getSurfaceTranslation = function() { | |
| return nk(this.Blockly_WorkspaceDragSurfaceSvg$SVG_) | |
| }; | |
| d.clearAndHide = function(a) { | |
| var b = this.Blockly_WorkspaceDragSurfaceSvg$SVG_.childNodes[0], | |
| c = this.Blockly_WorkspaceDragSurfaceSvg$SVG_.childNodes[1]; | |
| if (!b || !c || -1 == (" " + b.getAttribute("class") + " ").indexOf(" blocklyBlockCanvas ") || -1 == (" " + c.getAttribute("class") + " ").indexOf(" blocklyBubbleCanvas ")) throw "Couldn't clear and hide the drag surface. A node was missing."; | |
| null != this.previousSibling_ ? Bk(b, this.previousSibling_) : a.insertBefore(b, a.firstChild); | |
| Bk(c, b); | |
| this.Blockly_WorkspaceDragSurfaceSvg$SVG_.style.display = | |
| "none"; | |
| Ck(this.Blockly_WorkspaceDragSurfaceSvg$SVG_, ""); | |
| this.previousSibling_ = null | |
| }; | |
| var Hp = { | |
| currentBlock: null, | |
| show: function(a, b, c) { | |
| Gk(Hp, c, null); | |
| if (b.length) { | |
| var e = new sn; | |
| e.goog_ui_Component_prototype$setRightToLeft(c); | |
| for (var f = 0, g; g = b[f]; f++) { | |
| var h = new on(g.text); | |
| h.goog_ui_Component_prototype$setRightToLeft(c); | |
| e.goog_ui_Component_prototype$addChildAt(h, kl(e), !0); | |
| h.setEnabled(g.enabled); | |
| g.enabled && ($d(h, "action", g.callback), h.handleContextMenu = function() { | |
| ne(this, "action") | |
| }) | |
| } | |
| $d(e, "action", Hp.hide); | |
| b = hg(); | |
| f = zj(); | |
| e.render(Jk); | |
| var m = e.getElement(); | |
| Hi(m, "blocklyContextMenu"); | |
| N(m, "contextmenu", | |
| null, jk); | |
| g = Dj(m); | |
| h = a.clientX + f.x; | |
| var n = a.clientY + f.y; | |
| a.clientY + g.height >= b.height && (n -= g.height); | |
| c ? g.width >= a.clientX && (h += g.width) : a.clientX + g.width >= b.width && (h -= g.width); | |
| Im(h, n, b, f, c); | |
| tn(e); | |
| setTimeout(function() { | |
| m.focus() | |
| }, 1); | |
| Hp.currentBlock = null | |
| } else Hp.hide() | |
| }, | |
| hide: function() { | |
| Fk(Hp); | |
| Hp.currentBlock = null | |
| }, | |
| callbackFactory: function(a, b) { | |
| return function() { | |
| Q++; | |
| try { | |
| var c = lj(b, a.workspace), | |
| e = a.getRelativeToSurfaceXY(); | |
| e.x = a.RTL ? e.x - 48 : e.x + 48; | |
| e.y += 96; | |
| c.moveBy(e.x, e.y) | |
| } finally { | |
| Q-- | |
| } | |
| 0 == Q && !c.isShadowBlock && | |
| P(new jo(c)); | |
| Ip(c) | |
| } | |
| } | |
| }; | |
| var Jp = function(a, b) { | |
| Jp.superClass_.constructor.call(this, a, b) | |
| }; | |
| w(Jp, Ui); | |
| var Kp = function(a, b) { | |
| var c = a.x - b.x, | |
| e = a.y - b.y; | |
| return Math.sqrt(c * c + e * e) | |
| }, | |
| $i = function(a, b) { | |
| if (0 == Yn) { | |
| var c = no(a.Blockly_Connection$sourceBlock); | |
| if (!c.isInFlyout) { | |
| var e = !1; | |
| if (!jj(c)) { | |
| c = no(b.Blockly_Connection$sourceBlock); | |
| if (!jj(c)) return; | |
| b = a; | |
| e = !0 | |
| } | |
| var f = lo == c; | |
| f || c.addSelect(); | |
| var g = b.x + 48 - a.x, | |
| h = b.y + 48 - a.y; | |
| e && (h = -h); | |
| c.RTL && (g = -g); | |
| c.moveBy(g, h); | |
| f || c.removeSelect() | |
| } | |
| } | |
| }; | |
| Jp.prototype.moveTo = function(a, b) { | |
| this.inDB && dj(this.Blockly_Connection_prototype$db, this); | |
| this.x = a; | |
| this.y = b; | |
| this.Blockly_Connection_prototype$hidden || Lp(this.Blockly_Connection_prototype$db, this) | |
| }; | |
| Jp.prototype.moveBy = function(a, b) { | |
| this.moveTo(this.x + a, this.y + b) | |
| }; | |
| var Np = function(a) { | |
| var b = a.targetConnection.x - a.x, | |
| c = a.targetConnection.y - a.y; | |
| if (0 != b || 0 != c) { | |
| a = S(a); | |
| var e = a.getSvgRoot(); | |
| if (!e) throw "block is not rendered."; | |
| e = nk(e); | |
| a.getSvgRoot().setAttribute("transform", "translate(" + (e.x - b) + "," + (e.y - c) + ")"); | |
| Mp(a, -b, -c) | |
| } | |
| }; | |
| Jp.prototype.closest = function(a, b) { | |
| var c = this.dbOpposite; | |
| if (c.length) { | |
| var e = this.y, | |
| f = this.x; | |
| this.x = f + b.x; | |
| this.y = e + b.y; | |
| for (var g = Op(c, this), h = null, m = a, n, p = g - 1; 0 <= p && Math.abs(c[p].y - this.y) <= a;) n = c[p], this.isConnectionAllowed(n, m) && (h = n, m = Kp(n, this)), p--; | |
| for (; g < c.length && Math.abs(c[g].y - this.y) <= a;) n = c[g], this.isConnectionAllowed(n, m) && (h = n, m = Kp(n, this)), g++; | |
| this.x = f; | |
| this.y = e; | |
| c = { | |
| connection: h, | |
| radius: m | |
| } | |
| } else c = { | |
| connection: null, | |
| radius: a | |
| }; | |
| return c | |
| }; | |
| var fo = function(a) { | |
| go(a, !1); | |
| var b = []; | |
| if (1 != a.type && 3 != a.type) return b; | |
| if (a = S(a)) { | |
| if (a.Blockly_Block$collapsed) { | |
| var c = []; | |
| a.outputConnection && c.push(a.outputConnection); | |
| a.nextConnection && c.push(a.nextConnection); | |
| a.previousConnection && c.push(a.previousConnection) | |
| } else c = a.getConnections(!0); | |
| for (var e = 0; e < c.length; e++) b.push.apply(b, fo(c[e])); | |
| b.length || (b[0] = a) | |
| } | |
| return b | |
| }, | |
| go = function(a, b) { | |
| (a.Blockly_Connection_prototype$hidden = b) && a.inDB ? dj(a.Blockly_Connection_prototype$db, a) : b || a.inDB || Lp(a.Blockly_Connection_prototype$db, | |
| a) | |
| }; | |
| d = Jp.prototype; | |
| d.isConnectionAllowed = function(a, b) { | |
| return Kp(this, a) > b ? !1 : Jp.superClass_.isConnectionAllowed.call(this, a) | |
| }; | |
| d.disconnectInternal = function(a, b) { | |
| Jp.superClass_.disconnectInternal.call(this, a, b); | |
| a.rendered && a.render(); | |
| b.rendered && (Pp(b), b.render()) | |
| }; | |
| d.respawnShadow = function() { | |
| var a = this.Blockly_Connection$sourceBlock, | |
| b = this.shadowDom_; | |
| if (a.workspace && b && Zi) { | |
| Jp.superClass_.respawnShadow.call(this); | |
| b = S(this); | |
| if (!b) throw "Couldn't respawn the shadow block that should exist here."; | |
| b.initSvg(); | |
| b.render(!1); | |
| a.rendered && a.render() | |
| } | |
| }; | |
| d.neighbours = function(a) { | |
| return Qp(this.dbOpposite, this, a) | |
| }; | |
| d.connectInternal = function(a) { | |
| Jp.superClass_.connectInternal.call(this, a); | |
| var b = this.Blockly_Connection$sourceBlock; | |
| a = a.Blockly_Connection$sourceBlock; | |
| b.rendered && Pp(b); | |
| a.rendered && Pp(a); | |
| b.rendered && a.rendered && (3 == this.type || 4 == this.type ? a.render() : b.render()) | |
| }; | |
| d.onCheckChanged = function() { | |
| this.targetConnection && !Yi(this, this.targetConnection) && (mj(gj(this) ? S(this) : this.Blockly_Connection$sourceBlock), ik(this.Blockly_Connection$sourceBlock)) | |
| }; | |
| var Rp = function(a) { | |
| Rp.superClass_.constructor.call(this, a); | |
| Ii(this); | |
| this.text_ = {} | |
| }; | |
| w(Rp, Gi); | |
| Rp.prototype.drawIcon_ = function(a) { | |
| O("path", { | |
| "class": "blocklyIconShape", | |
| d: "M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z" | |
| }, a); | |
| O("path", { | |
| "class": "blocklyIconSymbol", | |
| d: "m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z" | |
| }, a); | |
| O("rect", { | |
| "class": "blocklyIconSymbol", | |
| x: "7", | |
| y: "11", | |
| height: "2", | |
| width: "2" | |
| }, a) | |
| }; | |
| var Qi = function(a) { | |
| var b = O("text", { | |
| "class": "blocklyText blocklyBubbleText", | |
| y: 6 | |
| }, null); | |
| a = a.split("\n"); | |
| for (var c = 0; c < a.length; c++) O("tspan", { | |
| dy: "1em", | |
| x: 6 | |
| }, b).appendChild(document.createTextNode(a[c])); | |
| return b | |
| }; | |
| Rp.prototype.setVisible = function(a) { | |
| if (a != this.isVisible()) | |
| if (P(new Oi(this.block_, "warningOpen", !a, a)), a) { | |
| a = Qi(Sp(this)); | |
| this.bubble = new ui(this.block_.workspace, a, this.block_.svgPath_, null, null, null); | |
| if (this.block_.RTL) | |
| for (var b = a.getBBox().width, c = 0, e; e = a.childNodes[c]; c++) e.setAttribute("text-anchor", "end"), e.setAttribute("x", b + 6); | |
| Ki(this); | |
| a = this.bubble.getBubbleSize(); | |
| this.bubble.setBubbleSize(a.width, a.height) | |
| } else this.bubble.dispose(), this.bubble = null | |
| }; | |
| var Tp = function(a, b, c) { | |
| a.text_[c] != b && (b ? a.text_[c] = b : delete a.text_[c], a.isVisible() && (a.setVisible(!1), a.setVisible(!0))) | |
| }, | |
| Sp = function(a) { | |
| var b = [], | |
| c; | |
| for (c in a.text_) b.push(a.text_[c]); | |
| return b.join("\n") | |
| }; | |
| Rp.prototype.dispose = function() { | |
| this.block_.warning = null; | |
| Gi.prototype.dispose.call(this) | |
| }; | |
| var X = function(a, b, c) { | |
| this.svgGroup = O("g", {}, null); | |
| this.maskIdTop = Math.floor(1E3 * Math.random()); | |
| this.maskIdBottom = Math.floor(1E3 * Math.random()); | |
| this.svgShadowClipPathBottom_ = O("clipPath", { | |
| "class": "clippingPath", | |
| id: "bottomClip" + this.maskIdBottom | |
| }, this.svgGroup); | |
| this.svgShadowClipRectBottom_ = O("rect", { | |
| "class": "clippingRectangle" | |
| }, this.svgShadowClipPathBottom_); | |
| this.svgShadowClipPathTop_ = O("clipPath", { | |
| "class": "clippingPath", | |
| id: "topClip" + this.maskIdTop | |
| }, this.svgGroup); | |
| this.svgShadowClipRectTop_ = O("rect", { | |
| "class": "clippingRectangle" | |
| }, this.svgShadowClipPathTop_); | |
| this.svgShadowPathBottom_ = O("path", { | |
| "class": "shadowPathBottom" | |
| }, this.svgGroup); | |
| this.svgShadowPathTop_ = O("path", { | |
| "class": "shadowPathTop" | |
| }, this.svgGroup); | |
| this.svgPath_ = O("path", { | |
| "class": "blocklyPath blocklyBlockBackground" | |
| }, this.svgGroup); | |
| this.svgPath_.tooltip = this; | |
| this.rendered = !1; | |
| this.inputShapes_ = {}; | |
| this.useDragSurface_ = Ak() && a.blockDragSurface; | |
| Km(this.svgPath_); | |
| X.superClass_.constructor.call(this, a, b, c) | |
| }; | |
| w(X, oi); | |
| d = X.prototype; | |
| d.height = 0; | |
| d.width = 0; | |
| d.opacity_ = 1; | |
| d.dragStartXY_ = null; | |
| d.initSvg = function() { | |
| if (!this.isInsertionMarker_) { | |
| for (var a = 0, b; b = this.inputList[a]; a++) b.init(), 1 === b.type && (this.inputShapes_[b.name] || b.connection.shadowDom_ || (this.inputShapes_[b.name] = O("path", { | |
| "class": "blocklyPath", | |
| style: "visibility: hidden" | |
| }, this.svgGroup))); | |
| b = ho(this); | |
| for (a = 0; a < b.length; a++) Ii(b[a]) | |
| } | |
| po(this); | |
| Up(this); | |
| if (!this.workspace.options.readOnly && !this.eventsInit_) { | |
| N(this.getSvgRoot(), "mousedown", this, this.onMouseDown_); | |
| var c = this; | |
| T(this.getSvgRoot(), "touchstart", null, function(a) { | |
| Lh(a, | |
| c) | |
| }) | |
| } | |
| this.eventsInit_ = !0; | |
| this.getSvgRoot().parentNode || this.workspace.svgBlockCanvas_.appendChild(this.getSvgRoot()) | |
| }; | |
| var Ip = function(a) { | |
| if (a.isShadowBlock && a.parentBlock) Ip(a.parentBlock); | |
| else if (lo != a) { | |
| var b = null; | |
| if (lo) { | |
| b = lo.id; | |
| Q++; | |
| try { | |
| Vp(lo) | |
| } finally { | |
| Q-- | |
| } | |
| } | |
| b = new Oi(null, "selected", b, a.id); | |
| b.workspaceId = a.workspace.id; | |
| P(b); | |
| lo = a; | |
| a.addSelect() | |
| } | |
| }, | |
| Vp = function(a) { | |
| if (lo == a) { | |
| var b = new Oi(null, "selected", a.id, void 0); | |
| b.workspaceId = a.workspace.id; | |
| P(b); | |
| lo = null; | |
| a.removeSelect() | |
| } | |
| }; | |
| X.prototype.mutator = null; | |
| X.prototype.comment = null; | |
| X.prototype.warning = null; | |
| var ho = function(a) { | |
| var b = []; | |
| a.comment && b.push(a.comment); | |
| a.warning && b.push(a.warning); | |
| return b | |
| }, | |
| Wp = null, | |
| Xp = null, | |
| dq = function() { | |
| Wp && (Oh(Wp), Wp = null); | |
| Xp && (Oh(Xp), Xp = null); | |
| var a = lo; | |
| if (2 == Yn && a) { | |
| Yp ? Zp() : $p && (Q++, ij && aq(), $p.dispose(), $p = null, Q--); | |
| var b = a.getRelativeToSurfaceXY(); | |
| b = Ze(b, a.dragStartXY_); | |
| var c = new aj(a); | |
| c.oldCoordinate = a.dragStartXY_; | |
| cj(c); | |
| P(c); | |
| Mp(a, b.x, b.y); | |
| delete a.draggedBubbles_; | |
| bq(a, !1); | |
| cq(a); | |
| a.render(); | |
| a.workspace.setResizesEnabled(!0); | |
| var e = bi; | |
| setTimeout(function() { | |
| ci(e); | |
| if (a.workspace && | |
| 0 == Yn && !a.parentBlock && !a.isInFlyout && a.workspace.options.gridOptions && a.workspace.options.gridOptions.snap) { | |
| var b = a.workspace.options.gridOptions.spacing, | |
| c = b / 2, | |
| h = a.getRelativeToSurfaceXY(), | |
| m = Math.round((h.x - c) / b) * b + c - h.x; | |
| b = Math.round((h.y - c) / b) * b + c - h.y; | |
| m = Math.round(m); | |
| b = Math.round(b); | |
| 0 == m && 0 == b || a.moveBy(m, b) | |
| } | |
| ci(!1) | |
| }, 0); | |
| setTimeout(function() { | |
| ci(e); | |
| ik(a); | |
| ci(!1) | |
| }, 0) | |
| } | |
| Yn = 0; | |
| Nh("handopen") | |
| }; | |
| X.prototype.Blockly_Block_prototype$setParent = function(a) { | |
| if (a != this.parentBlock) { | |
| var b = this.getSvgRoot(); | |
| if (this.parentBlock && b) { | |
| var c = this.getRelativeToSurfaceXY(); | |
| lo != this && (this.workspace.svgBlockCanvas_.appendChild(b), this.translate(c.x, c.y)) | |
| } | |
| fk(); | |
| X.superClass_.Blockly_Block_prototype$setParent.call(this, a); | |
| gk(); | |
| a && (c = this.getRelativeToSurfaceXY(), a.getSvgRoot().appendChild(b), b = this.getRelativeToSurfaceXY(), Mp(this, b.x - c.x, b.y - c.y), this.isShadowBlock && this.setColour(this.colour_, this.colourSecondary_, | |
| a.colourTertiary_)) | |
| } | |
| }; | |
| X.prototype.getRelativeToSurfaceXY = function() { | |
| var a = 0, | |
| b = 0, | |
| c = this.useDragSurface_ ? this.workspace.blockDragSurface.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_ : null, | |
| e = this.getSvgRoot(); | |
| if (e) { | |
| do { | |
| var f = nk(e); | |
| a += f.x; | |
| b += f.y; | |
| this.useDragSurface_ && this.workspace.blockDragSurface.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_.firstChild == e && (f = this.workspace.blockDragSurface.getSurfaceTranslation(), a += f.x, b += f.y); | |
| e = e.parentNode | |
| } while (e && e != this.workspace.svgBlockCanvas_ && e != c) | |
| } | |
| return new A(a, b) | |
| }; | |
| X.prototype.moveBy = function(a, b) { | |
| var c = 0 == Q; | |
| if (c) var e = new aj(this); | |
| var f = this.getRelativeToSurfaceXY(); | |
| this.translate(f.x + a, f.y + b); | |
| Mp(this, a, b); | |
| c && (cj(e), P(e)); | |
| eq(this.workspace) | |
| }; | |
| X.prototype.translate = function(a, b, c) { | |
| c ? this.getSvgRoot().setAttribute("style", "transform: translate3d(" + a + "px," + b + "px, 0px)") : this.getSvgRoot().setAttribute("transform", "translate(" + a + "," + b + ")") | |
| }; | |
| var fq = function(a) { | |
| if (a.useDragSurface_) { | |
| var b = a.getRelativeToSurfaceXY(); | |
| a.getSvgRoot().removeAttribute("transform"); | |
| a.workspace.blockDragSurface.translateSurface(b.x, b.y); | |
| b = a.workspace.blockDragSurface; | |
| b.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_.appendChild(a.getSvgRoot()); | |
| b.Blockly_BlockDragSurfaceSvg_prototype$SVG_.style.display = "block"; | |
| document.getElementsByClassName("injectionDiv")[0].style.overflow = "visible" | |
| } | |
| }, | |
| gq = function(a) { | |
| var b = a.getRelativeToSurfaceXY(), | |
| c = Mk(a); | |
| a.RTL ? (a = new A(b.x - | |
| c.width, b.y), b = new A(b.x, b.y + c.height)) : (a = new A(b.x, b.y), b = new A(b.x + c.width, b.y + c.height)); | |
| return { | |
| topLeft: a, | |
| bottomRight: b | |
| } | |
| }; | |
| X.prototype.setCollapsed = function(a) { | |
| if (this.Blockly_Block$collapsed != a) { | |
| for (var b = [], c = 0, e; e = this.inputList[c]; c++) b.push.apply(b, e.setVisible(!a)); | |
| if (a) { | |
| e = ho(this); | |
| for (c = 0; c < e.length; c++) e[c].setVisible(!1); | |
| c = this.toString(30); | |
| eo(this.appendInput(5, "_TEMP_COLLAPSED_INPUT"), c).init() | |
| } else this.removeInput("_TEMP_COLLAPSED_INPUT"), this.setWarningText(null); | |
| X.superClass_.setCollapsed.call(this, a); | |
| b.length || (b[0] = this); | |
| if (this.rendered) | |
| for (c = 0; a = b[c]; c++) a.render() | |
| } | |
| }; | |
| X.prototype.tab = function(a, b) { | |
| for (var c = [], e = 0, f; f = this.inputList[e]; e++) { | |
| for (var g = 0, h; h = f.fieldRow[g]; g++) h instanceof Dk && c.push(h); | |
| f.connection && (f = S(f.connection)) && c.push(f) | |
| } | |
| e = c.indexOf(a); - 1 == e && (e = b ? -1 : c.length); | |
| (c = c[b ? e + 1 : e - 1]) ? c instanceof Wj ? c.showEditor() : c.tab(null, b): (c = this.parentBlock) && c.tab(this, b) | |
| }; | |
| X.prototype.onMouseDown_ = function(a) { | |
| if (!this.workspace.options.readOnly) | |
| if (this.isInFlyout) "touchstart" == a.type && Ai(a) && (hq(), L(!0), ei(), Di(!0), iq(this, a), J = null, a.stopPropagation(), a.preventDefault()); | |
| else { | |
| this.isInMutator && this.workspace.resize(); | |
| var b = this.workspace, | |
| c = jg(document); | |
| Ye(b.lastRecordedPageScroll_, c) || (b.lastRecordedPageScroll_ = c, jq(b), kq(b)); | |
| this.workspace.markFocused(); | |
| hq(); | |
| Ip(this); | |
| Di(); | |
| ei(); | |
| if (Ai(a)) iq(this, a), J = null; | |
| else if (jj(this)) { | |
| bi || ci(!0); | |
| this.dragStartXY_ = this.getRelativeToSurfaceXY(); | |
| Ci(this.workspace, a, this.dragStartXY_); | |
| Yn = 1; | |
| Wp = N(document, "mouseup", this, this.Blockly_BlockSvg_prototype$onMouseUp_); | |
| Xp = N(document, "mousemove", this, this.onMouseMove_); | |
| this.draggedBubbles_ = []; | |
| b = this.getDescendants(); | |
| c = 0; | |
| for (var e; e = b[c]; c++) { | |
| e = ho(e); | |
| for (var f = 0; f < e.length; f++) { | |
| var g = e[f].iconXY_; | |
| g.bubble = e[f]; | |
| this.draggedBubbles_.push(g) | |
| } | |
| } | |
| } else return; | |
| a.stopPropagation(); | |
| a.preventDefault() | |
| } | |
| }; | |
| X.prototype.Blockly_BlockSvg_prototype$onMouseUp_ = function(a) { | |
| var b = !!Zn || !!Nj; | |
| J = null; | |
| 2 == Yn || b || (P(new Oi(this, "click", void 0, void 0)), P(new Oi(no(qi(this.workspace, this.id)), "stackclick", void 0, void 0))); | |
| hq(); | |
| a = lq(this.workspace, a); | |
| lo && ej && 2 != a ? (fj.connect(ej), this.svgShadowPathTop_.setAttribute("fill-opacity", 0), this.rendered && mq((gj(fj) ? ej : fj).Blockly_Connection$sourceBlock.workspace, "click"), this.workspace.trashcan && this.workspace.trashcan.close()) : a && !this.parentBlock && oo(lo) && ((a = this.workspace.trashcan) && | |
| ue(a.close, 100, a), lo.dispose(!1, !0)); | |
| ej && (ej = null); | |
| Nh("handopen"); | |
| Zn || ci(!1) | |
| }; | |
| var iq = function(a, b) { | |
| if (!a.workspace.options.readOnly && a.Blockly_Block$contextMenu) { | |
| var c = []; | |
| if (oo(a) && jj(a) && !a.isInFlyout) { | |
| c.push({ | |
| text: M.DUPLICATE_BLOCK, | |
| enabled: !0, | |
| callback: function() { | |
| var b = nq, | |
| c = oq; | |
| pq(a); | |
| qq(a.workspace); | |
| nq = b; | |
| oq = c | |
| } | |
| }); | |
| if (Pi(a) && a.workspace.options.comments) { | |
| var e = { | |
| enabled: !z | |
| }; | |
| a.comment ? (e.text = M.REMOVE_COMMENT, e.callback = function() { | |
| a.setCommentText(null) | |
| }) : (e.text = M.ADD_COMMENT, e.callback = function() { | |
| a.setCommentText("") | |
| }); | |
| c.push(e) | |
| } | |
| e = a.getDescendants(!0).length; | |
| var f = Xi(a); | |
| f && (e -= | |
| f.getDescendants(!0).length); | |
| e = { | |
| text: 1 == e ? M.DELETE_BLOCK : M.DELETE_X_BLOCKS.replace("%1", String(e)), | |
| enabled: !0, | |
| callback: function() { | |
| ci(!0); | |
| a.dispose(!0, !0); | |
| ci(!1) | |
| } | |
| }; | |
| c.push(e) | |
| } | |
| e = { | |
| enabled: !(Ba(a.helpUrl) ? !a.helpUrl() : !a.helpUrl) | |
| }; | |
| e.text = M.HELP; | |
| e.callback = function() { | |
| var b = Ba(a.helpUrl) ? a.helpUrl() : a.helpUrl; | |
| b && alert(b) | |
| }; | |
| c.push(e); | |
| a.customContextMenu && !a.isInFlyout && a.customContextMenu(c); | |
| Hp.show(b, c, a.RTL); | |
| Hp.currentBlock = a | |
| } | |
| }, | |
| Mp = function(a, b, c) { | |
| if (a.rendered) { | |
| for (var e = a.getConnections(!1), f = 0; f < e.length; f++) e[f].moveBy(b, | |
| c); | |
| e = ho(a); | |
| for (f = 0; f < e.length; f++) { | |
| var g = e[f], | |
| h = g.block_.getRelativeToSurfaceXY(), | |
| m = nk(g.iconGroup_); | |
| h = new A(h.x + m.x + 8.5, h.y + m.y + 8.5); | |
| Ye(g.iconXY_, h) || (g.iconXY_ = h, g.isVisible() && (g = g.bubble_, g.anchorXY_ = h, g.rendered_ && si(g))) | |
| } | |
| for (f = 0; f < a.childBlocks.length; f++) Mp(a.childBlocks[f], b, c) | |
| } | |
| }, | |
| bq = function(a, b) { | |
| if (b) { | |
| var c = a.getSvgRoot(); | |
| c.translate_ = ""; | |
| c.skew_ = ""; | |
| kj = kj.concat(a.getConnections(!0)); | |
| Hi(a.svgGroup, "blocklyDragging") | |
| } else kj = [], ak(a.svgGroup, "blocklyDragging"); | |
| for (c = 0; c < a.childBlocks.length; c++) bq(a.childBlocks[c], | |
| b) | |
| }, | |
| cq = function(a) { | |
| var b = a.getRelativeToSurfaceXY(); | |
| a.getSvgRoot().removeAttribute("transform"); | |
| a.translate(b.x, b.y, !1); | |
| a.workspace.blockDragSurface.clearAndHide(a.workspace.svgBlockCanvas_) | |
| }; | |
| X.prototype.onMouseMove_ = function(a) { | |
| if ("mousemove" == a.type && 1 >= a.clientX && 0 == a.clientY && 0 == a.button) a.stopPropagation(); | |
| else { | |
| var b = this.getRelativeToSurfaceXY(), | |
| c = Ei(this.workspace, a), | |
| e; | |
| if (e = 1 == Yn) { | |
| e = b.x - c.x; | |
| var f = b.y - c.y; | |
| e = 3 < Math.sqrt(e * e + f * f) * this.workspace.scale | |
| } | |
| e && (Nh("handclosed"), Yn = 2, Kh(), this.workspace.setResizesEnabled(!1), L(!0), ei(), this.parentBlock && mj(this), bq(this, !0), fq(this)); | |
| if (2 == Yn) { | |
| b = Ze(b, this.dragStartXY_); | |
| e = this.getSvgRoot(); | |
| this.useDragSurface_ ? this.workspace.blockDragSurface.translateSurface(c.x, | |
| c.y) : (e.translate_ = "translate(" + c.x + "," + c.y + ")", e.setAttribute("transform", e.translate_ + e.skew_)); | |
| for (f = 0; f < this.draggedBubbles_.length; f++) e = this.draggedBubbles_[f], c = e.bubble, e = new A(e.x + b.x, e.y + b.y), c.iconXY_ = e, c.isVisible() && (c = c.bubble_, c.anchorXY_ = e, c.rendered_ && si(c)); | |
| var g = this.getConnections(!1); | |
| (c = mo(this)) && c != this.nextConnection && g.push(c); | |
| var h = null; | |
| e = null; | |
| var m = 48; | |
| fj && ej && (m = 96); | |
| for (f = 0; f < g.length; f++) { | |
| var n = g[f], | |
| p = n.closest(m, b); | |
| p.connection && (h = p.connection, e = n, m = p.radius) | |
| } | |
| f = !0; | |
| e && | |
| 2 == e.type ? f = !0 : fj && ej && (g = fj.x + b.x - ej.x, b = fj.y + b.y - ej.y, b = Math.sqrt(g * g + b * b), h && m > b - 20 && (f = !1)); | |
| if (f) { | |
| b = h; | |
| f = e; | |
| c = e == c; | |
| Q++; | |
| ej && ej != b && (Yp ? Zp() : $p && ij && aq(), $p && (c && fj.Blockly_Connection$sourceBlock == this || !c && fj.Blockly_Connection$sourceBlock != this) && ($p.dispose(), $p = null), fj = ej = null); | |
| c = lq(this.workspace, a); | |
| e = lo && b && 2 != c; | |
| c && !this.parentBlock && oo(lo) && !e ? (Nh("handdelete"), 1 == c && this.workspace.trashcan && rq(this.workspace.trashcan, !0), c = !0) : (Nh("handclosed"), this.workspace.trashcan && rq(this.workspace.trashcan, | |
| !1), c = !1); | |
| if (!c && b && b != ej && !b.Blockly_Connection$sourceBlock.isInsertionMarker_) | |
| if (ej = b, fj = f, 2 == f.type || 4 == f.type && b.targetConnection && !this.nextConnection) S(b) ? (Yp = S(b), sq(!0)) : 2 == f.type && (Yp = b.Blockly_Connection$sourceBlock); | |
| else { | |
| c = fj.Blockly_Connection$sourceBlock; | |
| $p || ($p = this.workspace.newBlock(c.type), $p.setInsertionMarker(!0), $p.initSvg()); | |
| c = $p; | |
| a: { | |
| h = f.Blockly_Connection$sourceBlock;e = c.getConnections(!0);h = h.getConnections(!0); | |
| if (e.length != h.length) throw "Connection lists did not match in length."; | |
| for (m = 0; m < h.length; m++) | |
| if (h[m] == f) { | |
| e = e[m]; | |
| break a | |
| } e = null | |
| } | |
| e != ij && (c.rendered = !0, c.render(), c.getSvgRoot().setAttribute("visibility", "visible"), 3 == e.type && (f = b.x - e.x, h = b.y - e.y, e == Vi(c) && (h -= Mk(b.Blockly_Connection$sourceBlock, !0).height - 64), c.moveBy(f, h)), e.connect(b), ij = e) | |
| } Q--; | |
| oo(this) && lq(this.workspace, a) | |
| } | |
| } | |
| a.stopPropagation(); | |
| a.preventDefault() | |
| } | |
| }; | |
| var Zp = function() { | |
| (1 != ej.type || ej.targetConnection) && sq(!1); | |
| Yp = null | |
| }, | |
| aq = function() { | |
| if (ij != $p.nextConnection || $p.previousConnection && $p.previousConnection.targetConnection) | |
| if (3 == ij.type && ij != $p.nextConnection) { | |
| var a = ij.targetConnection; | |
| mj(a.Blockly_Connection$sourceBlock, !1); | |
| var b = $p.previousConnection ? $p.previousConnection.targetConnection : null; | |
| mj($p, !0); | |
| b && b.connect(a) | |
| } else mj($p, !0); | |
| else mj(S(ij), !1); | |
| if (ij.targetConnection) throw "insertionMarkerConnection still connected at the end of disconnectInsertionMarker"; | |
| ij = null; | |
| $p.getSvgRoot().setAttribute("visibility", "hidden") | |
| }, | |
| Up = function(a) { | |
| jj(a) ? Hi(a.svgGroup, "blocklyDraggable") : ak(a.svgGroup, "blocklyDraggable") | |
| }; | |
| d = X.prototype; | |
| d.setMovable = function(a) { | |
| X.superClass_.setMovable.call(this, a); | |
| Up(this) | |
| }; | |
| d.setEditable = function(a) { | |
| X.superClass_.setEditable.call(this, a); | |
| a = ho(this); | |
| for (var b = 0; b < a.length; b++) a[b].updateEditable() | |
| }; | |
| d.setShadow = function(a) { | |
| X.superClass_.setShadow.call(this, a); | |
| po(this) | |
| }; | |
| d.setInsertionMarker = function(a) { | |
| X.superClass_.setInsertionMarker.call(this, a); | |
| po(this) | |
| }; | |
| d.getSvgRoot = function() { | |
| return this.svgGroup | |
| }; | |
| d.dispose = function(a, b) { | |
| if (this.workspace) { | |
| Xn(); | |
| fk(); | |
| var c = this.workspace; | |
| lo == this && (Vp(this), hq()); | |
| Hp.currentBlock == this && Hp.hide(); | |
| if (b && this.rendered) { | |
| mj(this, a); | |
| mq(this.workspace, "delete"); | |
| var e = this.workspace; | |
| var f = this.svgGroup, | |
| g = 0, | |
| h = 0, | |
| m = 1; | |
| if (pg(e.svgBlockCanvas_, f) || pg(e.svgBubbleCanvas_, f)) m = e.scale; | |
| do { | |
| var n = nk(f); | |
| if (f == e.svgBlockCanvas_ || f == e.svgBubbleCanvas_) m = 1; | |
| g += n.x * m; | |
| h += n.y * m; | |
| f = f.parentNode | |
| } while (f && f != Sj(e)); | |
| e = new A(g, h); | |
| g = this.svgGroup.cloneNode(!0); | |
| g.translateX_ = e.x; | |
| g.translateY_ = | |
| e.y; | |
| g.setAttribute("transform", "translate(" + g.translateX_ + "," + g.translateY_ + ")"); | |
| Sj(this.workspace).appendChild(g); | |
| g.bBox_ = g.getBBox(); | |
| tq(g, this.RTL, new Date, this.workspace.scale) | |
| } | |
| this.rendered = !1; | |
| Q++; | |
| try { | |
| var p = ho(this); | |
| for (e = 0; e < p.length; e++) p[e].dispose() | |
| } finally { | |
| Q-- | |
| } | |
| X.superClass_.dispose.call(this, a); | |
| C(this.svgGroup); | |
| eq(c); | |
| this.svgPath_ = this.svgGroup = null; | |
| gk() | |
| } | |
| }; | |
| var tq = function(a, b, c, e) { | |
| var f = (new Date - c) / 150; | |
| 1 < f ? C(a) : (a.setAttribute("transform", "translate(" + (a.translateX_ + (b ? -1 : 1) * a.bBox_.width * e / 2 * f) + "," + (a.translateY_ + a.bBox_.height * e * f) + ") scale(" + (1 - f) * e + ")"), setTimeout(function() { | |
| tq(a, b, c, e) | |
| }, 10)) | |
| }; | |
| X.prototype.setDisabled = function(a) { | |
| this.disabled != a && (X.superClass_.setDisabled.call(this, a), this.rendered && Pp(this)) | |
| }; | |
| var Pp = function(a) { | |
| var b; | |
| if (!(b = a.disabled)) a: for (b = a;;) { | |
| b: { | |
| do { | |
| var c = b; | |
| b = b.parentBlock; | |
| if (!b) { | |
| b = null; | |
| break b | |
| } | |
| } while (Xi(b) == c) | |
| } | |
| if (!b) { | |
| b = !1; | |
| break a | |
| } | |
| if (b.disabled) { | |
| b = !0; | |
| break a | |
| } | |
| } | |
| b ? Hi(a.svgGroup, "blocklyDisabled") && a.svgPath_.setAttribute("fill", "url(#" + a.workspace.options.disabledPatternId + ")") : ak(a.svgGroup, "blocklyDisabled") && po(a); | |
| a = a.getChildren(); | |
| for (b = 0; c = a[b]; b++) Pp(c) | |
| }; | |
| X.prototype.getCommentText = function() { | |
| return this.comment ? Ri(this.comment).replace(/\s+$/, "").replace(/ +\n/g, "\n") : "" | |
| }; | |
| X.prototype.setCommentText = function(a) { | |
| var b = !1; | |
| u(a) ? (this.comment || (this.comment = new Li(this), b = !0), Si(this.comment, a)) : this.comment && (this.comment.dispose(), b = !0); | |
| b && this.rendered && (this.render(), ik(this)) | |
| }; | |
| X.prototype.setWarningText = function(a, b) { | |
| this.setWarningText.pid_ || (this.setWarningText.pid_ = Object.create(null)); | |
| var c = b || ""; | |
| if (c) this.setWarningText.pid_[c] && (clearTimeout(this.setWarningText.pid_[c]), delete this.setWarningText.pid_[c]); | |
| else | |
| for (var e in this.setWarningText.pid_) clearTimeout(this.setWarningText.pid_[e]), delete this.setWarningText.pid_[e]; | |
| if (2 == Yn) { | |
| var f = this; | |
| this.setWarningText.pid_[c] = setTimeout(function() { | |
| f.workspace && (delete f.setWarningText.pid_[c], f.setWarningText(a, c)) | |
| }, 100) | |
| } else { | |
| this.isInFlyout && | |
| (a = null); | |
| e = !1; | |
| if (u(a)) this.warning || (this.warning = new Rp(this), e = !0), Tp(this.warning, a, c); | |
| else if (this.warning && !c) this.warning.dispose(), e = !0; | |
| else if (this.warning) { | |
| e = Sp(this.warning); | |
| Tp(this.warning, "", c); | |
| var g = Sp(this.warning); | |
| g || this.warning.dispose(); | |
| e = e != g | |
| } | |
| e && this.rendered && (this.render(), ik(this)) | |
| } | |
| }; | |
| var uq = function(a, b) { | |
| if (a.rendered) | |
| if (b) a.svgPath_.setAttribute("filter", "url(#" + a.workspace.options.embossFilterId + ")"); | |
| else { | |
| var c = a.svgPath_; | |
| z && wd("10.0") ? c.setAttribute("filter", "") : c.removeAttribute("filter") | |
| } | |
| }; | |
| d = X.prototype; | |
| d.addSelect = function() { | |
| Hi(this.svgGroup, "blocklySelected"); | |
| var a = this; | |
| do { | |
| var b = a.getSvgRoot(); | |
| b.parentNode.appendChild(b); | |
| a = a.parentBlock | |
| } while (a) | |
| }; | |
| d.removeSelect = function() { | |
| ak(this.svgGroup, "blocklySelected") | |
| }; | |
| d.setColour = function(a, b, c) { | |
| X.superClass_.setColour.call(this, a, b, c); | |
| this.rendered && po(this) | |
| }; | |
| d.setPreviousStatement = function(a, b) { | |
| X.superClass_.setPreviousStatement.call(this, a, b); | |
| this.rendered && (this.render(), ik(this)) | |
| }; | |
| d.setNextStatement = function(a, b) { | |
| X.superClass_.setNextStatement.call(this, a, b); | |
| this.rendered && (this.render(), ik(this)) | |
| }; | |
| d.setOutput = function(a, b) { | |
| X.superClass_.setOutput.call(this, a, b); | |
| this.rendered && (this.render(), ik(this)) | |
| }; | |
| d.setInputsInline = function(a) { | |
| X.superClass_.setInputsInline.call(this, a); | |
| this.rendered && (this.render(), ik(this)) | |
| }; | |
| d.removeInput = function(a, b) { | |
| X.superClass_.removeInput.call(this, a, b); | |
| this.rendered && (this.render(), ik(this)) | |
| }; | |
| d.appendInput = function(a, b) { | |
| var c = X.superClass_.appendInput.call(this, a, b); | |
| this.rendered && (this.render(), ik(this)); | |
| return c | |
| }; | |
| d.getConnections = function(a) { | |
| var b = []; | |
| if (a || this.rendered) | |
| if (this.outputConnection && b.push(this.outputConnection), this.previousConnection && b.push(this.previousConnection), this.nextConnection && b.push(this.nextConnection), a || !this.Blockly_Block$collapsed) { | |
| a = 0; | |
| for (var c; c = this.inputList[a]; a++) c.connection && b.push(c.connection) | |
| } return b | |
| }; | |
| d.makeConnection = function(a) { | |
| return new Jp(this, a) | |
| }; | |
| var bi = "", | |
| Zi = !0, | |
| Q = 0, | |
| pi = [], | |
| P = function(a) { | |
| 0 == Q && (pi.length || setTimeout(vq, 0), pi.push(a)) | |
| }, | |
| vq = function() { | |
| for (var a = wq(pi, !0), b = pi.length = 0, c; c = a[b]; b++) { | |
| var e = Uh[c.workspaceId] || null; | |
| if (e) { | |
| c.recordUndo && (e.undoStack.push(c), e.redoStack.length = 0, 1024 < e.undoStack.length && e.undoStack.unshift()); | |
| for (var f = e.Blockly_Workspace$listeners_.slice(), g = 0; e = f[g]; g++) e(c) | |
| } | |
| } | |
| }, | |
| wq = function(a, b) { | |
| var c = gb(a); | |
| b || c.reverse(); | |
| for (var e = 0, f; f = c[e]; e++) | |
| for (var g = e + 1, h; h = c[g]; g++) f.type == h.type && f.blockId == h.blockId && f.workspaceId == | |
| h.workspaceId && ("move" == f.type ? (f.newParentId = h.newParentId, f.newInputName = h.newInputName, f.newCoordinate = h.newCoordinate, c.splice(g, 1), g--) : "change" == f.type && f.element == h.element && f.name == h.name ? (f.newValue = h.newValue, c.splice(g, 1), g--) : "ui" != f.type || "click" != h.element || "commentOpen" != f.element && "mutatorOpen" != f.element && "warningOpen" != f.element || (f.newValue = h.newValue, c.splice(g, 1), g--)); | |
| for (e = c.length - 1; 0 <= e; e--) c[e].isNull() && c.splice(e, 1); | |
| b || c.reverse(); | |
| for (e = 1; f = c[e]; e++) "change" == f.type && "mutation" == | |
| f.element && c.unshift(c.splice(e, 1)[0]); | |
| return c | |
| }, | |
| ci = function(a) { | |
| bi = "boolean" == typeof a ? a ? Th() : "" : a | |
| }, | |
| xq = function(a) { | |
| var b = []; | |
| a = a.getDescendants(); | |
| for (var c = 0, e; e = a[c]; c++) b[c] = e.id; | |
| return b | |
| }, | |
| yq = function(a) { | |
| a && (this.blockId = a.id, this.workspaceId = a.workspace.id); | |
| this.Blockly_Events_Abstract$group = bi; | |
| this.recordUndo = Zi | |
| }; | |
| yq.prototype.isNull = function() { | |
| return !1 | |
| }; | |
| yq.prototype.Blockly_Events_Abstract_prototype$run = function() {}; | |
| var jo = function(a) { | |
| a && (jo.superClass_.constructor.call(this, a), this.Blockly_Events_Create$xml = a.workspace.rendered ? zq(a) : Wi(a), this.Blockly_Events_Create$ids = xq(a)) | |
| }; | |
| w(jo, yq); | |
| jo.prototype.type = "create"; | |
| jo.prototype.Blockly_Events_Abstract_prototype$run = function(a) { | |
| var b = Uh[this.workspaceId] || null; | |
| if (a) a = B("xml"), a.appendChild(this.Blockly_Events_Create$xml), Aq(a, b); | |
| else { | |
| a = 0; | |
| for (var c; c = this.Blockly_Events_Create$ids[a]; a++) { | |
| var e = qi(b, c); | |
| e ? e.dispose(!1, !1) : c == this.blockId && console.warn("Can't uncreate non-existant block: " + c) | |
| } | |
| } | |
| }; | |
| var ko = function(a) { | |
| if (a) { | |
| if (a.parentBlock) throw "Connected blocks cannot be deleted."; | |
| ko.superClass_.constructor.call(this, a); | |
| this.oldXml = a.workspace.rendered ? zq(a) : Wi(a); | |
| this.Blockly_Events_Delete$ids = xq(a) | |
| } | |
| }; | |
| w(ko, yq); | |
| ko.prototype.type = "delete"; | |
| ko.prototype.Blockly_Events_Abstract_prototype$run = function(a) { | |
| var b = Uh[this.workspaceId] || null; | |
| if (a) { | |
| a = 0; | |
| for (var c; c = this.Blockly_Events_Delete$ids[a]; a++) { | |
| var e = qi(b, c); | |
| e ? e.dispose(!1, !1) : c == this.blockId && console.warn("Can't delete non-existant block: " + c) | |
| } | |
| } else a = B("xml"), a.appendChild(this.oldXml), Aq(a, b) | |
| }; | |
| var Mi = function(a, b, c, e, f) { | |
| a && (Mi.superClass_.constructor.call(this, a), this.element = b, this.name = c, this.Blockly_Events_Change$oldValue = e, this.newValue = f) | |
| }; | |
| w(Mi, yq); | |
| Mi.prototype.type = "change"; | |
| Mi.prototype.isNull = function() { | |
| return this.Blockly_Events_Change$oldValue == this.newValue | |
| }; | |
| Mi.prototype.Blockly_Events_Abstract_prototype$run = function(a) { | |
| var b = qi(Uh[this.workspaceId] || null, this.blockId); | |
| if (b) switch (b.mutator && b.mutator.setVisible(!1), a = a ? this.newValue : this.Blockly_Events_Change$oldValue, this.element) { | |
| case "field": | |
| (b = so(b, this.name)) ? (ck(b, a), b.Blockly_Field_prototype$setValue(a)) : console.warn("Can't set non-existant field: " + this.name); | |
| break; | |
| case "comment": | |
| b.setCommentText(a || null); | |
| break; | |
| case "collapsed": | |
| b.setCollapsed(a); | |
| break; | |
| case "disabled": | |
| b.setDisabled(a); | |
| break; | |
| case "inline": | |
| b.setInputsInline(a); | |
| break; | |
| case "mutation": | |
| var c = ""; | |
| b.mutationToDom && (c = null); | |
| b.domToMutation && (a = a || "<mutation></mutation>", Fp("<xml>" + a + "</xml>")); | |
| P(new Mi(b, "mutation", null, c, a)); | |
| break; | |
| default: | |
| console.warn("Unknown change type: " + this.element) | |
| } else console.warn("Can't change non-existant block: " + this.blockId) | |
| }; | |
| var aj = function(a) { | |
| a && (aj.superClass_.constructor.call(this, a), a = Bq(this), this.oldParentId = a.parentId, this.oldInputName = a.inputName, this.oldCoordinate = a.coordinate) | |
| }; | |
| w(aj, yq); | |
| aj.prototype.type = "move"; | |
| var cj = function(a) { | |
| var b = Bq(a); | |
| a.newParentId = b.parentId; | |
| a.newInputName = b.inputName; | |
| a.newCoordinate = b.coordinate | |
| }, | |
| Bq = function(a) { | |
| var b = qi(Uh[a.workspaceId] || null, a.blockId); | |
| a = {}; | |
| var c = b.parentBlock; | |
| if (c) { | |
| a.parentId = c.id; | |
| a: { | |
| for (var e = 0, f; f = c.inputList[e]; e++) | |
| if (f.connection && S(f.connection) == b) { | |
| b = f; | |
| break a | |
| } b = null | |
| } | |
| b && (a.inputName = b.name) | |
| } else a.coordinate = b.getRelativeToSurfaceXY(); | |
| return a | |
| }; | |
| aj.prototype.isNull = function() { | |
| return this.oldParentId == this.newParentId && this.oldInputName == this.newInputName && Ye(this.oldCoordinate, this.newCoordinate) | |
| }; | |
| aj.prototype.Blockly_Events_Abstract_prototype$run = function(a) { | |
| var b = Uh[this.workspaceId] || null, | |
| c = qi(b, this.blockId); | |
| if (c) { | |
| var e = a ? this.newParentId : this.oldParentId, | |
| f = a ? this.newInputName : this.oldInputName; | |
| a = a ? this.newCoordinate : this.oldCoordinate; | |
| var g = null; | |
| if (e && (g = qi(b, e), !g)) { | |
| console.warn("Can't connect to non-existant block: " + e); | |
| return | |
| } | |
| c.parentBlock && mj(c); | |
| if (a) f = c.getRelativeToSurfaceXY(), c.moveBy(a.x - f.x, a.y - f.y); | |
| else { | |
| c = c.outputConnection || c.previousConnection; | |
| if (f) { | |
| if (b = to(g, f)) var h = b.connection | |
| } else 4 == | |
| c.type && (h = g.nextConnection); | |
| h ? c.connect(h) : console.warn("Can't connect to non-existant input: " + f) | |
| } | |
| } else console.warn("Can't move non-existant block: " + this.blockId) | |
| }; | |
| var Oi = function(a, b, c, e) { | |
| Oi.superClass_.constructor.call(this, a); | |
| this.element = b; | |
| this.newValue = e; | |
| this.recordUndo = !1 | |
| }; | |
| w(Oi, yq); | |
| Oi.prototype.type = "ui"; | |
| var fi = {}, | |
| Jk = null, | |
| Zn = null, | |
| Cq = null, | |
| Dq = null, | |
| Eq = null, | |
| Fq = 0, | |
| Gk = function(a, b, c, e, f) { | |
| L(); | |
| Zn = a; | |
| Cq = va(c) ? c : null; | |
| Dq = va(e) ? e : null; | |
| Fq = null != f ? f : 0; | |
| Jk.style.top = zj().y + "px"; | |
| Jk.style.direction = b ? "rtl" : "ltr"; | |
| Jk.style.display = "block" | |
| }, | |
| L = function(a) { | |
| Eq ? (window.clearTimeout(Eq), Dq && Dq(), Zn = Eq = Dq = null, Gq()) : Zn && (Cq && Cq(), Cq = null, Dq && !a ? Eq = window.setTimeout(L, 1E3 * Fq) : (Dq && Dq(), Zn = Dq = null, Gq()), ci(!1)) | |
| }, | |
| Gq = function() { | |
| Jk.style.display = "none"; | |
| Jk.style.left = ""; | |
| Jk.style.top = ""; | |
| Jk.style.height = ""; | |
| ng(Jk) | |
| }, | |
| Fk = function(a) { | |
| Zn == | |
| a && L() | |
| }, | |
| Im = function(a, b, c, e, f) { | |
| b < e.y && (b = e.y); | |
| f ? a > c.width + e.x && (a = c.width + e.x) : a < e.x && (a = e.x); | |
| Jk.style.left = a + "px"; | |
| Jk.style.top = b + "px"; | |
| Jk.style.height = c.height + "px" | |
| }; | |
| var K = null, | |
| lo = null, | |
| ej = null, | |
| fj = null, | |
| kj = [], | |
| ij = null, | |
| $p = null, | |
| Yp = null, | |
| nq = null, | |
| oq = null, | |
| Yn = 0, | |
| Hq = function(a) { | |
| return { | |
| width: a.cachedWidth_, | |
| height: a.cachedHeight_ | |
| } | |
| }, | |
| Iq = function(a) { | |
| for (; a.options.parentWorkspace;) a = a.options.parentWorkspace; | |
| var b = Sj(a), | |
| c = b.parentNode; | |
| if (c) { | |
| var e = c.offsetWidth; | |
| c = c.offsetHeight; | |
| b.cachedWidth_ != e && (b.setAttribute("width", e + "px"), b.cachedWidth_ = e); | |
| b.cachedHeight_ != c && (b.setAttribute("height", c + "px"), b.cachedHeight_ = c); | |
| a.resize() | |
| } | |
| }, | |
| Jq = function(a) { | |
| if (!K.options.readOnly && !Bi(a)) | |
| if (27 == | |
| a.keyCode) Di(), Vj(); | |
| else if (8 == a.keyCode || 46 == a.keyCode) a.preventDefault(); | |
| else if (a.altKey || a.ctrlKey || a.metaKey) | |
| if (lo && oo(lo) && jj(lo) && (67 == a.keyCode ? (Di(), pq(lo)) : 88 == a.keyCode && (pq(lo), Di(), lo.dispose(2 != Yn, !0), ej && (C(Ui.highlightedPath_), delete Ui.highlightedPath_, ej = null))), 86 == a.keyCode) nq && (ci(!0), qq(oq), ci(!1)); | |
| else if (90 == a.keyCode) { | |
| Di(); | |
| a = a.shiftKey; | |
| var b = K, | |
| c = a ? b.redoStack : b.undoStack; | |
| b = a ? b.undoStack : b.redoStack; | |
| var e = c.pop(); | |
| if (e) { | |
| for (var f = [e]; c.length && e.Blockly_Events_Abstract$group && | |
| e.Blockly_Events_Abstract$group == c[c.length - 1].Blockly_Events_Abstract$group;) f.push(c.pop()); | |
| for (c = 0; e = f[c]; c++) b.push(e); | |
| f = wq(f, a); | |
| Zi = !1; | |
| for (c = 0; e = f[c]; c++) e.Blockly_Events_Abstract_prototype$run(a); | |
| Zi = !0 | |
| } | |
| } | |
| }, | |
| hq = function() { | |
| dq(); | |
| Kq() | |
| }, | |
| pq = function(a) { | |
| var b = Wi(a), | |
| c = a.getRelativeToSurfaceXY(); | |
| b.setAttribute("x", a.RTL ? -c.x : c.x); | |
| b.setAttribute("y", c.y); | |
| nq = b; | |
| oq = a.workspace | |
| }, | |
| Di = function(a) { | |
| Xn(); | |
| L(); | |
| a || (a = K, a.toolbox_ && a.toolbox_.flyout_ && a.toolbox_.flyout_.autoClose && a.toolbox_.setSelectedItem(null)) | |
| }, | |
| li = | |
| function(a, b) { | |
| window.alert(a); | |
| b && b() | |
| }, | |
| mi = function(a, b) { | |
| b(window.confirm(a)) | |
| }, | |
| In = function(a, b, c) { | |
| c(window.prompt(a, b)) | |
| }, | |
| N = function(a, b, c, e, f) { | |
| var g = !1, | |
| h = function(a) { | |
| var b = !f; | |
| a = Sh(a); | |
| for (var h = 0, m; m = a[h]; h++) { | |
| var n; | |
| (n = !b) || (n = !(0 == m.type.lastIndexOf("touch", 0) || 0 == m.type.lastIndexOf("mouse", 0))) || (n = m.changedTouches && m.changedTouches[0] && void 0 != m.changedTouches[0].identifier && null != m.changedTouches[0].identifier ? m.changedTouches[0].identifier : "mouse", void 0 != J && null != J ? n = J == n : "mousedown" == m.type || | |
| "touchstart" == m.type ? (J = n, n = !0) : n = !1); | |
| if (n) { | |
| n = m; | |
| if (0 == n.type.lastIndexOf("touch", 0)) { | |
| var p = n.changedTouches[0]; | |
| n.clientX = p.clientX; | |
| n.clientY = p.clientY | |
| } | |
| c ? e.call(c, m) : e(m); | |
| g = !0 | |
| } | |
| } | |
| }; | |
| a.addEventListener(b, h, !1); | |
| var m = [ | |
| [a, b, h] | |
| ]; | |
| if (b in Ih) | |
| for (var n = function(a) { | |
| h(a); | |
| g && a.preventDefault() | |
| }, p = 0, r; r = Ih[b][p]; p++) a.addEventListener(r, n, !1), m.push([a, r, n]); | |
| return m | |
| }, | |
| T = function(a, b, c, e) { | |
| var f = function(a) { | |
| c ? e.call(c, a) : e(a) | |
| }; | |
| a.addEventListener(b, f, !1); | |
| var g = [ | |
| [a, b, f] | |
| ]; | |
| if (b in Ih) | |
| for (var h = function(a) { | |
| if (1 == a.changedTouches.length) { | |
| var b = | |
| a.changedTouches[0]; | |
| a.clientX = b.clientX; | |
| a.clientY = b.clientY | |
| } | |
| f(a); | |
| a.preventDefault() | |
| }, m = 0, n; n = Ih[b][m]; m++) a.addEventListener(n, h, !1), g.push([a, n, h]); | |
| return g | |
| }, | |
| Oh = function(a) { | |
| for (; a.length;) { | |
| var b = a.pop(); | |
| b[0].removeEventListener(b[1], b[2], !1) | |
| } | |
| }; | |
| q.console || (q.console = { | |
| log: function() {}, | |
| warn: function() {} | |
| }); | |
| q.Blockly || (q.Blockly = {}); | |
| q.Blockly.getMainWorkspace = function() { | |
| return K | |
| }; | |
| var Lq = function() {}; | |
| Lq.prototype = []; | |
| var Lp = function(a, b) { | |
| if (b.inDB) throw "Connection already in database."; | |
| b.Blockly_Connection$sourceBlock.isInFlyout || (a.splice(Op(a, b), 0, b), b.inDB = !0) | |
| }, | |
| Mq = function(a, b) { | |
| if (!a.length) return -1; | |
| var c = Op(a, b); | |
| if (c >= a.length) return -1; | |
| for (var e = b.y, f = c; 0 <= f && a[f].y == e;) { | |
| if (a[f] == b) return f; | |
| f-- | |
| } | |
| for (; c < a.length && a[c].y == e;) { | |
| if (a[c] == b) return c; | |
| c++ | |
| } | |
| return -1 | |
| }, | |
| Op = function(a, b) { | |
| if (!a.length) return 0; | |
| for (var c = 0, e = a.length; c < e;) { | |
| var f = Math.floor((c + e) / 2); | |
| if (a[f].y < b.y) c = f + 1; | |
| else if (a[f].y > b.y) e = f; | |
| else { | |
| c = f; | |
| break | |
| } | |
| } | |
| return c | |
| }, | |
| dj = function(a, b) { | |
| if (!b.inDB) throw "Connection not in database."; | |
| var c = Mq(a, b); | |
| if (-1 == c) throw "Unable to find connection in connectionDB."; | |
| b.inDB = !1; | |
| a.splice(c, 1) | |
| }, | |
| Qp = function(a, b, c) { | |
| function e(a) { | |
| var b = g - f[a].x, | |
| e = h - f[a].y; | |
| Math.sqrt(b * b + e * e) <= c && n.push(f[a]); | |
| return e < c | |
| } | |
| var f = a, | |
| g = b.x, | |
| h = b.y; | |
| a = 0; | |
| for (var m = b = f.length - 2; a < m;) f[m].y < h ? a = m : b = m, m = Math.floor((a + b) / 2); | |
| var n = []; | |
| b = a = m; | |
| if (f.length) { | |
| for (; 0 <= a && e(a);) a--; | |
| do b++; while (b < f.length && e(b)) | |
| } | |
| return n | |
| }; | |
| var Oq = function(a, b, c, e) { | |
| this.workspace_ = a; | |
| this.targetWorkspace_ = b; | |
| this.text_ = c.getAttribute("text"); | |
| this.Blockly_FlyoutButton$position_ = new A(0, 0); | |
| this.isLabel_ = e; | |
| this.Blockly_FlyoutButton$callback_ = null; | |
| a = c.getAttribute("callbackKey"); | |
| this.isLabel_ && a ? console.warn("Labels should not have callbacks. Label text: " + this.text_) : this.isLabel_ || a && Nq(b, a) ? this.Blockly_FlyoutButton$callback_ = Nq(b, a) : console.warn("Buttons should have callbacks. Button text: " + this.text_); | |
| this.cssClass_ = c.getAttribute("web-class") || | |
| null | |
| }; | |
| Oq.prototype.width = 0; | |
| Oq.prototype.height = 0; | |
| Oq.prototype.createDom = function() { | |
| var a = this.isLabel_ ? "blocklyFlyoutLabel" : "blocklyFlyoutButton"; | |
| this.cssClass_ && (a += " " + this.cssClass_); | |
| this.svgGroup_ = O("g", { | |
| "class": a | |
| }, this.workspace_.svgBlockCanvas_); | |
| if (!this.isLabel_) var b = O("rect", { | |
| "class": "blocklyFlyoutButtonShadow", | |
| rx: 4, | |
| ry: 4, | |
| x: 1, | |
| y: 1 | |
| }, this.svgGroup_); | |
| a = O("rect", { | |
| "class": this.isLabel_ ? "blocklyFlyoutLabelBackground" : "blocklyFlyoutButtonBackground", | |
| rx: 4, | |
| ry: 4 | |
| }, this.svgGroup_); | |
| var c = O("text", { | |
| "class": this.isLabel_ ? "blocklyFlyoutLabelText" : "blocklyText", | |
| x: 0, | |
| y: 0, | |
| "text-anchor": "middle" | |
| }, this.svgGroup_); | |
| c.textContent = this.text_; | |
| this.width = c.getComputedTextLength() + 10; | |
| this.height = 20; | |
| this.isLabel_ || (b.setAttribute("width", this.width), b.setAttribute("height", this.height)); | |
| a.setAttribute("width", this.width); | |
| a.setAttribute("height", this.height); | |
| c.setAttribute("x", this.width / 2); | |
| c.setAttribute("y", this.height - 5); | |
| Pq(this); | |
| return this.svgGroup_ | |
| }; | |
| Oq.prototype.show = function() { | |
| Pq(this); | |
| this.svgGroup_.setAttribute("display", "block") | |
| }; | |
| var Pq = function(a) { | |
| a.svgGroup_.setAttribute("transform", "translate(" + a.Blockly_FlyoutButton$position_.x + "," + a.Blockly_FlyoutButton$position_.y + ")") | |
| }; | |
| Oq.prototype.moveTo = function(a, b) { | |
| this.Blockly_FlyoutButton$position_.x = a; | |
| this.Blockly_FlyoutButton$position_.y = b; | |
| Pq(this) | |
| }; | |
| Oq.prototype.dispose = function() { | |
| this.svgGroup_ && (C(this.svgGroup_), this.svgGroup_ = null); | |
| this.targetWorkspace_ = this.workspace_ = null | |
| }; | |
| Oq.prototype.onMouseUp = function(a) { | |
| a.preventDefault(); | |
| a.stopPropagation(); | |
| Kq(); | |
| this.Blockly_FlyoutButton$callback_ && this.Blockly_FlyoutButton$callback_(this) | |
| }; | |
| var Qq = function(a) { | |
| a.getMetrics = this.getMetrics_.bind(this); | |
| a.setMetrics = this.setMetrics_.bind(this); | |
| this.workspace = new V(a); | |
| this.workspace.isFlyout = !0; | |
| this.RTL = !!a.RTL; | |
| this.horizontalLayout = a.horizontalLayout; | |
| this.toolboxPosition = a.toolboxPosition; | |
| this.eventWrappers_ = []; | |
| this.backgroundButtons = []; | |
| this.buttons = []; | |
| this.Blockly_Flyout$listeners = []; | |
| this.permanentlyDisabled_ = []; | |
| this.startDragMouseX = this.startDragMouseY = 0; | |
| this.parentToolbox = null | |
| }, | |
| Rq = null, | |
| Sq = null, | |
| Tq = null, | |
| Uq = null, | |
| Vq = null, | |
| Wq = null; | |
| d = Qq.prototype; | |
| d.autoClose = !0; | |
| d.Blockly_Flyout_prototype$isVisible_ = !1; | |
| d.Blockly_Flyout_prototype$containerVisible_ = !0; | |
| d.CORNER_RADIUS = 0; | |
| d.MARGIN = 12; | |
| d.GAP_X = 3 * Qq.prototype.MARGIN; | |
| d.GAP_Y = Qq.prototype.MARGIN; | |
| d.width = 0; | |
| d.height = 0; | |
| d.dragMode = 0; | |
| d.createDom = function(a) { | |
| this.svgGroup_ = O(a, { | |
| "class": "blocklyFlyout", | |
| style: "display: none" | |
| }, null); | |
| this.svgBackground_ = O("path", { | |
| "class": "blocklyFlyoutBackground" | |
| }, this.svgGroup_); | |
| this.svgGroup_.appendChild(this.workspace.createDom()); | |
| return this.svgGroup_ | |
| }; | |
| d.init = function(a) { | |
| this.targetWorkspace_ = a; | |
| this.workspace.targetWorkspace = a; | |
| this.scrollbar_ = new Xq(this.workspace, this.horizontalLayout, "blocklyFlyoutScrollbar"); | |
| this.position(); | |
| Array.prototype.push.apply(this.eventWrappers_, T(this.svgGroup_, "wheel", this, this.wheel_)); | |
| Array.prototype.push.apply(this.eventWrappers_, T(this.svgGroup_, "mousedown", this, this.onMouseDown_)) | |
| }; | |
| d.dispose = function() { | |
| this.hide(); | |
| Oh(this.eventWrappers_); | |
| this.scrollbar_ && (this.scrollbar_.dispose(), this.scrollbar_ = null); | |
| this.workspace && (this.workspace.targetWorkspace = null, this.workspace.dispose(), this.workspace = null); | |
| this.svgGroup_ && (C(this.svgGroup_), this.svgGroup_ = null); | |
| this.targetWorkspace_ = this.svgBackground_ = this.parentToolbox = null | |
| }; | |
| d.getWidth = function() { | |
| return this.parentToolbox ? this.parentToolbox.getWidth() : this.DEFAULT_WIDTH | |
| }; | |
| d.getHeight = function() { | |
| return this.height | |
| }; | |
| d.isVisible = function() { | |
| return this.Blockly_Flyout_prototype$isVisible_ | |
| }; | |
| d.setVisible = function(a) { | |
| var b = a != this.isVisible(); | |
| this.Blockly_Flyout_prototype$isVisible_ = a; | |
| b && Yq(this) | |
| }; | |
| d.setContainerVisible = function(a) { | |
| var b = a != this.Blockly_Flyout_prototype$containerVisible_; | |
| this.Blockly_Flyout_prototype$containerVisible_ = a; | |
| b && Yq(this) | |
| }; | |
| var Yq = function(a) { | |
| var b = a.Blockly_Flyout_prototype$containerVisible_ ? a.isVisible() : !1; | |
| a.svgGroup_.style.display = b ? "block" : "none"; | |
| a.scrollbar_.setContainerVisible(b) | |
| }; | |
| Qq.prototype.hide = function() { | |
| if (this.isVisible()) { | |
| this.setVisible(!1); | |
| for (var a = 0, b; b = this.Blockly_Flyout$listeners[a]; a++) Oh(b); | |
| this.Blockly_Flyout$listeners.length = 0; | |
| this.reflowWrapper_ && (this.workspace.removeChangeListener(this.reflowWrapper_), this.reflowWrapper_ = null) | |
| } | |
| }; | |
| Qq.prototype.show = function(a) { | |
| this.workspace.setResizesEnabled(!1); | |
| this.hide(); | |
| this.clearOldBlocks(); | |
| "string" == typeof a && (a = Zq(this.workspace.targetWorkspace, a)(this.workspace.targetWorkspace)); | |
| this.setVisible(!0); | |
| for (var b = [], c = [], e = this.permanentlyDisabled_.length = 0, f; f = a[e]; e++) | |
| if (f.tagName) { | |
| var g = f.tagName.toUpperCase(), | |
| h = this.horizontalLayout ? this.GAP_X : this.GAP_Y; | |
| if ("BLOCK" == g) g = lj(f, this.workspace), g.disabled && this.permanentlyDisabled_.push(g), b.push({ | |
| type: "block", | |
| block: g | |
| }), f = parseInt(f.getAttribute("gap"), | |
| 10), c.push(isNaN(f) ? h : f); | |
| else if ("SEP" == f.tagName.toUpperCase()) f = parseInt(f.getAttribute("gap"), 10), !isNaN(f) && 0 < c.length ? c[c.length - 1] = f : c.push(h); | |
| else if ("BUTTON" == g || "LABEL" == g) f = new Oq(this.workspace, this.targetWorkspace_, f, "LABEL" == g), b.push({ | |
| type: "button", | |
| button: f | |
| }), c.push(h) | |
| } this.layout_(b, c); | |
| this.Blockly_Flyout$listeners.push(T(this.svgBackground_, "mouseover", this, function() { | |
| for (var a = $h(this.workspace, !1), b = 0, c; c = a[b]; b++) c.removeSelect() | |
| })); | |
| this.workspace.setResizesEnabled(!0); | |
| this.reflow(); | |
| this.position(); | |
| this.reflowWrapper_ = this.reflow.bind(this); | |
| this.workspace.addChangeListener(this.reflowWrapper_) | |
| }; | |
| Qq.prototype.clearOldBlocks = function() { | |
| for (var a = $h(this.workspace, !1), b = 0, c; c = a[b]; b++) c.workspace == this.workspace && c.dispose(!1, !1); | |
| for (b = 0; a = this.backgroundButtons[b]; b++) C(a); | |
| for (b = this.backgroundButtons.length = 0; a = this.buttons[b]; b++) a.dispose(); | |
| this.buttons.length = 0 | |
| }; | |
| Qq.prototype.addBlockListeners = function(a, b, c) { | |
| this.autoClose ? (this.Blockly_Flyout$listeners.push(N(a, "mousedown", null, $q(this, b))), this.Blockly_Flyout$listeners.push(N(c, "mousedown", null, $q(this, b)))) : (this.Blockly_Flyout$listeners.push(N(a, "mousedown", null, ar(this, b))), this.Blockly_Flyout$listeners.push(N(c, "mousedown", null, ar(this, b)))); | |
| this.Blockly_Flyout$listeners.push(T(a, "mouseover", b, b.addSelect)); | |
| this.Blockly_Flyout$listeners.push(T(a, "mouseout", b, b.removeSelect)); | |
| this.Blockly_Flyout$listeners.push(T(c, | |
| "mouseover", b, b.addSelect)); | |
| this.Blockly_Flyout$listeners.push(T(c, "mouseout", b, b.removeSelect)) | |
| }; | |
| var ar = function(a, b) { | |
| return function(c) { | |
| Ai(c) ? (hq(), L(!0), ei(), Di(!0), iq(b, c), J = null) : (a.dragMode_ = 0, hq(), L(!0), ei(), Di(), a.startDragMouseY = c.clientY, a.startDragMouseX = c.clientX, Sq = c, Tq = b, Rq = a, Uq = T(document, "mouseup", a, a.Blockly_Flyout_prototype$onMouseUp_), Wq = T(document, "mousemove", a, a.onMouseMoveBlock_)); | |
| c.stopPropagation(); | |
| c.preventDefault() | |
| } | |
| }; | |
| Qq.prototype.onMouseDown_ = function(a) { | |
| this.dragMode_ = 2; | |
| Ai(a) ? J = null : (L(!0), ei(), Di(!0), this.dragMode_ = 2, this.startDragMouseY = a.clientY, this.startDragMouseX = a.clientX, Rq = this, Vq = T(document, "mousemove", this, this.Blockly_Flyout_prototype$onMouseMove), Uq = T(document, "mouseup", this, Kq), a.preventDefault(), a.stopPropagation()) | |
| }; | |
| Qq.prototype.Blockly_Flyout_prototype$onMouseUp_ = function() { | |
| if (!Ji(this.workspace)) { | |
| J = null; | |
| var a = !!Zn || !!Nj; | |
| this.autoClose ? $q(this, Tq)(Sq) : a || (P(new Oi(Tq, "click", void 0, void 0)), P(new Oi(Tq, "stackclick", void 0, void 0))) | |
| } | |
| hq() | |
| }; | |
| Qq.prototype.Blockly_Flyout_prototype$onMouseMove = function(a) { | |
| var b = this.getMetrics_(); | |
| if (this.horizontalLayout) { | |
| if (!(0 > b.contentWidth - b.viewWidth)) { | |
| var c = a.clientX - this.startDragMouseX; | |
| this.startDragMouseX = a.clientX; | |
| a = b.viewLeft - c; | |
| a = Mb(a, b.contentWidth - b.viewWidth); | |
| this.scrollbar_.set(a) | |
| } | |
| } else 0 > b.contentHeight - b.viewHeight || (c = a.clientY - this.startDragMouseY, this.startDragMouseY = a.clientY, a = b.viewTop - c, a = Mb(a, b.contentHeight - b.viewHeight), this.scrollbar_.set(a)) | |
| }; | |
| Qq.prototype.onMouseMoveBlock_ = function(a) { | |
| if (!("mousemove" == a.type && 1 >= a.clientX && 0 == a.clientY && 0 == a.button)) { | |
| Nh("handclosed"); | |
| var b = a.clientX - Sq.clientX; | |
| var c = a.clientY - Sq.clientY; | |
| 2 == this.dragMode_ ? b = !1 : 10 > Math.sqrt(b * b + c * c) ? (this.dragMode_ = 1, b = !1) : this.isDragTowardWorkspace_(b, c) || !this.scrollbar_.isVisible() ? b = !0 : (this.dragMode_ = 2, b = !1); | |
| Kh(); | |
| b ? $q(this, Tq)(Sq) : 2 == this.dragMode_ && this.Blockly_Flyout_prototype$onMouseMove(a) | |
| } | |
| a.stopPropagation() | |
| }; | |
| var $q = function(a, b) { | |
| return function(c) { | |
| L(!0); | |
| ei(); | |
| if (!Ai(c) && !b.disabled) { | |
| Q++; | |
| a.targetWorkspace_.setResizesEnabled(!1); | |
| try { | |
| var e = a.placeNewBlock_(b) | |
| } finally { | |
| Q-- | |
| } | |
| 0 == Q && (ci(!0), P(new jo(e))); | |
| a.autoClose && a.hide(); | |
| e.onMouseDown_(c); | |
| Yn = 2; | |
| bq(e, !0); | |
| fq(e) | |
| } | |
| } | |
| }, | |
| Kq = function() { | |
| Rq && (2 == Rq.dragMode && (J = null), Rq.dragMode = 0, Rq = null); | |
| Uq && (Oh(Uq), Uq = null); | |
| Wq && (Oh(Wq), Wq = null); | |
| Vq && (Oh(Vq), Vq = null); | |
| Tq = Sq = null | |
| }; | |
| Qq.prototype.reflow = function() { | |
| this.reflowWrapper_ && this.workspace.removeChangeListener(this.reflowWrapper_); | |
| var a = $h(this.workspace, !1); | |
| this.reflowInternal_(a); | |
| this.reflowWrapper_ && this.workspace.addChangeListener(this.reflowWrapper_) | |
| }; | |
| var cr = function(a) { | |
| a = ai(a); | |
| for (var b = [], c = [], e = 0; e < a.length; e++) | |
| if (a[e].getProcedureDef) { | |
| var f = []; | |
| f[2] ? b.push(f) : c.push(f) | |
| } c.sort(br); | |
| b.sort(br); | |
| return [c, b] | |
| }, | |
| br = function(a, b) { | |
| return a[0].toLowerCase().localeCompare(b[0].toLowerCase()) | |
| }, | |
| dr = function(a) { | |
| function b(a, b) { | |
| for (var e = 0; e < a.length; e++) { | |
| var f = a[e][0], | |
| g = a[e][1], | |
| h = B("block"); | |
| h.setAttribute("type", b); | |
| h.setAttribute("gap", 16); | |
| var t = B("mutation"); | |
| t.setAttribute("name", f); | |
| h.appendChild(t); | |
| for (f = 0; f < g.length; f++) { | |
| var x = B("arg"); | |
| x.setAttribute("name", | |
| g[f]); | |
| t.appendChild(x) | |
| } | |
| c.push(h) | |
| } | |
| } | |
| var c = []; | |
| if (H.procedures_defnoreturn) { | |
| var e = B("block"); | |
| e.setAttribute("type", "procedures_defnoreturn"); | |
| e.setAttribute("gap", 16); | |
| var f = B("field", null, M.PROCEDURES_DEFNORETURN_PROCEDURE); | |
| f.setAttribute("name", "NAME"); | |
| e.appendChild(f); | |
| c.push(e) | |
| } | |
| H.procedures_defreturn && (e = B("block"), e.setAttribute("type", "procedures_defreturn"), e.setAttribute("gap", 16), f = B("field", null, M.PROCEDURES_DEFRETURN_PROCEDURE), f.setAttribute("name", "NAME"), e.appendChild(f), c.push(e)); | |
| H.procedures_report && | |
| (e = B("block"), e.setAttribute("type", "procedures_report"), e.setAttribute("gap", 16), c.push(e)); | |
| c.length && c[c.length - 1].setAttribute("gap", 24); | |
| a = cr(a); | |
| b(a[0], "procedures_callnoreturn"); | |
| b(a[1], "procedures_callreturn"); | |
| return c | |
| }; | |
| var fr = function(a) { | |
| this.workspace_ = a; | |
| this.hScroll = new Xq(a, !0, "blocklyMainWorkspaceScrollbar"); | |
| this.corner_ = this.vScroll = null; | |
| a.addChangeListener(er(a)) | |
| }; | |
| fr.prototype.Blockly_ScrollbarPair_prototype$oldHostMetrics_ = null; | |
| var er = function(a) { | |
| return function() { | |
| if (!Ji(a)) { | |
| var b = a.getMetrics(), | |
| c = b.viewTop + b.absoluteTop; | |
| if (b.contentTop < c || b.contentTop + b.contentHeight > b.viewHeight + c) | |
| for (var e = $h(a, !1), f = 0, g; g = e[f]; f++) { | |
| var h = g.getRelativeToSurfaceXY(), | |
| m = c + 25 - Mk(g).height - h.y; | |
| 0 < m && g.moveBy(0, m); | |
| h = c + b.viewHeight - 25 - h.y; | |
| 0 > h && g.moveBy(0, h) | |
| } | |
| } | |
| } | |
| }; | |
| fr.prototype.dispose = function() { | |
| this.corner_ && (C(this.corner_), this.corner_ = null); | |
| this.Blockly_ScrollbarPair_prototype$oldHostMetrics_ = this.workspace_ = null; | |
| this.hScroll.dispose(); | |
| this.hScroll = null; | |
| this.vScroll && (this.vScroll.dispose(), this.vScroll = null) | |
| }; | |
| fr.prototype.resize = function() { | |
| var a = this.workspace_.getMetrics(); | |
| if (a) { | |
| var b = !1; | |
| this.Blockly_ScrollbarPair_prototype$oldHostMetrics_ && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.viewWidth == a.viewWidth && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.viewHeight == a.viewHeight && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.absoluteTop == a.absoluteTop && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.absoluteLeft == a.absoluteLeft ? this.Blockly_ScrollbarPair_prototype$oldHostMetrics_ && | |
| this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.contentWidth == a.contentWidth && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.viewLeft == a.viewLeft && this.Blockly_ScrollbarPair_prototype$oldHostMetrics_.contentLeft == a.contentLeft || (b = !0) : b = !0; | |
| b && this.hScroll.resize(a); | |
| this.Blockly_ScrollbarPair_prototype$oldHostMetrics_ = a | |
| } | |
| }; | |
| fr.prototype.set = function(a) { | |
| this.hScroll.set(a) | |
| }; | |
| var Xq = function(a, b, c) { | |
| this.workspace_ = a; | |
| this.horizontal_ = b; | |
| this.Blockly_Scrollbar$oldHostMetrics_ = null; | |
| a = "blocklyScrollbar" + (this.horizontal_ ? "Horizontal" : "Vertical"); | |
| c && (a += " " + c); | |
| this.outerSvg_ = O("svg", { | |
| "class": a | |
| }, null); | |
| this.svgGroup_ = O("g", {}, this.outerSvg_); | |
| this.svgBackground_ = O("rect", { | |
| "class": "blocklyScrollbarBackground" | |
| }, this.svgGroup_); | |
| c = Math.floor((Fi - 5) / 2); | |
| this.svgHandle_ = O("rect", { | |
| "class": "blocklyScrollbarHandle", | |
| rx: c, | |
| ry: c | |
| }, this.svgGroup_); | |
| Bk(this.outerSvg_, Sj(this.workspace_)); | |
| this.Blockly_Scrollbar$position_ = | |
| new A(0, 0); | |
| b ? (this.svgBackground_.setAttribute("height", Fi), this.outerSvg_.setAttribute("height", Fi), this.svgHandle_.setAttribute("height", Fi - 5), this.svgHandle_.setAttribute("y", 2.5), this.lengthAttribute_ = "width", this.positionAttribute_ = "x") : (this.svgBackground_.setAttribute("width", Fi), this.outerSvg_.setAttribute("width", Fi), this.svgHandle_.setAttribute("width", Fi - 5), this.svgHandle_.setAttribute("x", 2.5), this.lengthAttribute_ = "height", this.positionAttribute_ = "y"); | |
| this.onMouseDownBarWrapper_ = N(this.svgBackground_, | |
| "mousedown", this, this.onMouseDownBar_); | |
| this.onMouseDownHandleWrapper_ = N(this.svgHandle_, "mousedown", this, this.onMouseDownHandle_) | |
| }, | |
| gr, hr; | |
| d = Xq.prototype; | |
| d.origin_ = new A(0, 0); | |
| d.originHasChanged_ = !0; | |
| d.scrollViewSize_ = 0; | |
| d.handleLength_ = 0; | |
| d.handlePosition_ = 0; | |
| d.Blockly_Scrollbar_prototype$isVisible_ = !0; | |
| d.Blockly_Scrollbar_prototype$containerVisible_ = !0; | |
| var Fi = 5; | |
| Xq.prototype.dispose = function() { | |
| ir(); | |
| Oh(this.onMouseDownBarWrapper_); | |
| this.onMouseDownBarWrapper_ = null; | |
| Oh(this.onMouseDownHandleWrapper_); | |
| this.onMouseDownHandleWrapper_ = null; | |
| C(this.outerSvg_); | |
| this.workspace_ = this.svgHandle_ = this.svgBackground_ = this.svgGroup_ = this.outerSvg_ = null | |
| }; | |
| var jr = function(a, b) { | |
| a.handlePosition_ = b; | |
| a.svgHandle_.setAttribute(a.positionAttribute_, a.handlePosition_) | |
| }, | |
| kr = function(a, b) { | |
| a.scrollViewSize_ = b; | |
| a.outerSvg_.setAttribute(a.lengthAttribute_, a.scrollViewSize_); | |
| a.svgBackground_.setAttribute(a.lengthAttribute_, a.scrollViewSize_) | |
| }; | |
| fr.prototype.setContainerVisible = function(a) { | |
| this.hScroll.setContainerVisible(a); | |
| this.vScroll.setContainerVisible(a) | |
| }; | |
| var lr = function(a, b, c) { | |
| a.Blockly_Scrollbar$position_.x = b; | |
| a.Blockly_Scrollbar$position_.y = c; | |
| Ck(a.outerSvg_, "translate(" + (a.Blockly_Scrollbar$position_.x + a.origin_.x) + "px," + (a.Blockly_Scrollbar$position_.y + a.origin_.y) + "px)") | |
| }; | |
| Xq.prototype.resize = function(a) { | |
| if (!a && (a = this.workspace_.getMetrics(), !a)) return; | |
| if (this.originHasChanged_) this.originHasChanged_ = !1; | |
| else { | |
| var b = this.Blockly_Scrollbar$oldHostMetrics_; | |
| if (a && b && a.viewWidth == b.viewWidth && a.viewHeight == b.viewHeight && a.viewLeft == b.viewLeft && a.viewTop == b.viewTop && a.absoluteTop == b.absoluteTop && a.absoluteLeft == b.absoluteLeft && a.contentWidth == b.contentWidth && a.contentHeight == b.contentHeight && a.contentLeft == b.contentLeft && a.contentTop == b.contentTop) return | |
| } | |
| this.Blockly_Scrollbar$oldHostMetrics_ = | |
| a; | |
| if (this.horizontal_) { | |
| kr(this, Math.max(0, a.viewWidth - 1)); | |
| lr(this, a.absoluteLeft + .5, a.absoluteTop + a.viewHeight - Fi - .5); | |
| this.setVisible(this.scrollViewSize_ < a.contentWidth); | |
| this.ratio_ = this.scrollViewSize_ / a.contentWidth; | |
| if (-Infinity == this.ratio_ || Infinity == this.ratio_ || isNaN(this.ratio_)) this.ratio_ = 0; | |
| this.handleLength_ = Math.max(0, a.viewWidth * this.ratio_); | |
| this.svgHandle_.setAttribute(this.lengthAttribute_, this.handleLength_); | |
| jr(this, mr(this, (a.viewLeft - a.contentLeft) * this.ratio_)) | |
| } else { | |
| kr(this, Math.max(0, | |
| a.viewHeight - 1)); | |
| b = a.absoluteLeft + .5; | |
| this.workspace_.RTL || (b += a.viewWidth - Fi - 1); | |
| lr(this, b, a.absoluteTop + .5); | |
| this.setVisible(this.scrollViewSize_ < a.contentHeight); | |
| this.ratio_ = this.scrollViewSize_ / a.contentHeight; | |
| if (-Infinity == this.ratio_ || Infinity == this.ratio_ || isNaN(this.ratio_)) this.ratio_ = 0; | |
| this.handleLength_ = Math.max(0, a.viewHeight * this.ratio_); | |
| this.svgHandle_.setAttribute(this.lengthAttribute_, this.handleLength_); | |
| jr(this, mr(this, (a.viewTop - a.contentTop) * this.ratio_)) | |
| } | |
| nr(this) | |
| }; | |
| Xq.prototype.isVisible = function() { | |
| return this.Blockly_Scrollbar_prototype$isVisible_ | |
| }; | |
| Xq.prototype.setContainerVisible = function(a) { | |
| var b = a != this.Blockly_Scrollbar_prototype$containerVisible_; | |
| this.Blockly_Scrollbar_prototype$containerVisible_ = a; | |
| b && or(this) | |
| }; | |
| Xq.prototype.setVisible = function(a) { | |
| var b = a != this.isVisible(); | |
| this.Blockly_Scrollbar_prototype$isVisible_ = a; | |
| b && or(this) | |
| }; | |
| var or = function(a) { | |
| a.Blockly_Scrollbar_prototype$containerVisible_ && a.isVisible() ? a.outerSvg_.setAttribute("display", "block") : a.outerSvg_.setAttribute("display", "none") | |
| }; | |
| Xq.prototype.onMouseDownBar_ = function(a) { | |
| this.workspace_.markFocused(); | |
| J = null; | |
| ir(); | |
| if (Ai(a)) a.stopPropagation(); | |
| else { | |
| var b = qk(a, Sj(this.workspace_), this.workspace_.inverseScreenCTM_); | |
| b = this.horizontal_ ? b.x : b.y; | |
| var c = pk(this.svgHandle_); | |
| c = this.horizontal_ ? c.x : c.y; | |
| var e = this.handlePosition_, | |
| f = .95 * this.handleLength_; | |
| b <= c ? e -= f : b >= c + this.handleLength_ && (e += f); | |
| L(!0); | |
| ei(); | |
| jr(this, mr(this, e)); | |
| nr(this); | |
| a.stopPropagation(); | |
| a.preventDefault() | |
| } | |
| }; | |
| Xq.prototype.onMouseDownHandle_ = function(a) { | |
| this.workspace_.markFocused(); | |
| ir(); | |
| Ai(a) ? a.stopPropagation() : (this.startDragHandle = this.handlePosition_, pr(this.workspace_), this.startDragMouse = this.horizontal_ ? a.clientX : a.clientY, gr = N(document, "mouseup", this, this.onMouseUpHandle_), hr = N(document, "mousemove", this, this.onMouseMoveHandle_), L(!0), ei(), a.stopPropagation(), a.preventDefault()) | |
| }; | |
| Xq.prototype.onMouseMoveHandle_ = function(a) { | |
| jr(this, mr(this, this.startDragHandle + ((this.horizontal_ ? a.clientX : a.clientY) - this.startDragMouse))); | |
| nr(this) | |
| }; | |
| Xq.prototype.onMouseUpHandle_ = function() { | |
| Mh(this.workspace_); | |
| J = null; | |
| ir() | |
| }; | |
| var ir = function() { | |
| Di(!0); | |
| gr && (Oh(gr), gr = null); | |
| hr && (Oh(hr), hr = null) | |
| }, | |
| mr = function(a, b) { | |
| return b = 0 >= b || isNaN(b) || a.scrollViewSize_ < a.handleLength_ ? 0 : Math.min(b, a.scrollViewSize_ - a.handleLength_) | |
| }, | |
| nr = function(a) { | |
| var b = a.handlePosition_ / a.scrollViewSize_; | |
| isNaN(b) && (b = 0); | |
| var c = {}; | |
| a.horizontal_ ? c.x = b : c.y = b; | |
| a.workspace_.setMetrics(c) | |
| }; | |
| Xq.prototype.set = function(a) { | |
| jr(this, mr(this, a * this.ratio_)); | |
| nr(this) | |
| }; | |
| var qr = function(a, b, c) { | |
| if (b != a.origin_.x || c != a.origin_.y) a.origin_ = new A(b, c), a.originHasChanged_ = !0 | |
| }; | |
| var rr = function(a) { | |
| a.getMetrics = this.getMetrics_.bind(this); | |
| a.setMetrics = this.setMetrics_.bind(this); | |
| rr.superClass_.constructor.call(this, a); | |
| this.horizontalLayout = !0 | |
| }; | |
| w(rr, Qq); | |
| d = rr.prototype; | |
| d.getMetrics_ = function() { | |
| if (!this.isVisible()) return null; | |
| try { | |
| var a = this.workspace.svgBlockCanvas_.getBBox() | |
| } catch (e) { | |
| a = { | |
| height: 0, | |
| y: 0, | |
| width: 0, | |
| x: 0 | |
| } | |
| } | |
| var b = 2; | |
| 1 == this.toolboxPosition && (b = 0); | |
| var c = this.height; | |
| 0 == this.toolboxPosition && (c += this.MARGIN); | |
| return { | |
| viewHeight: c, | |
| viewWidth: this.width - 4, | |
| contentHeight: a.height * this.workspace.scale + 2 * this.MARGIN, | |
| contentWidth: a.width * this.workspace.scale + 2 * this.MARGIN, | |
| viewTop: -this.workspace.scrollY, | |
| viewLeft: -this.workspace.scrollX, | |
| contentTop: a.y, | |
| contentLeft: a.x, | |
| absoluteTop: b, | |
| absoluteLeft: 2 | |
| } | |
| }; | |
| d.setMetrics_ = function(a) { | |
| var b = this.getMetrics_(); | |
| b && (v(a.x) && (this.workspace.scrollX = -b.contentWidth * a.x), this.workspace.translate(this.workspace.scrollX + b.absoluteLeft, this.workspace.scrollY + b.absoluteTop)) | |
| }; | |
| d.position = function() { | |
| if (this.isVisible()) { | |
| var a = this.targetWorkspace_.getMetrics(); | |
| if (a) { | |
| var b = this.horizontalLayout ? a.viewWidth - 0 : this.width - 0, | |
| c = this.horizontalLayout ? this.height - 0 : a.viewHeight - 0, | |
| e = ["M 0,0"]; | |
| 0 == this.toolboxPosition ? (e.push("h", b + 0), e.push("v", c), e.push("a", 0, 0, 0, 0, 1, -0, 0), e.push("h", -1 * b), e.push("a", 0, 0, 0, 0, 1, -0, -0)) : (e.push("a", 0, 0, 0, 0, 1, 0, -0), e.push("h", b), e.push("a", 0, 0, 0, 0, 1, 0, 0), e.push("v", c), e.push("h", -b - 0)); | |
| e.push("z"); | |
| this.svgBackground_.setAttribute("d", e.join(" ")); | |
| b = | |
| a.absoluteLeft; | |
| 3 == this.toolboxPosition && (b += a.viewWidth, b -= this.width); | |
| c = a.absoluteTop; | |
| 1 == this.toolboxPosition && (c += a.viewHeight, c -= this.height); | |
| this.horizontalLayout ? this.width = a.viewWidth : this.height = a.viewHeight; | |
| this.svgGroup_.setAttribute("width", this.width); | |
| this.svgGroup_.setAttribute("height", this.height); | |
| Ck(this.svgGroup_, "translate(" + b + "px," + c + "px)"); | |
| this.scrollbar_ && (qr(this.scrollbar_, b, c), this.scrollbar_.resize()); | |
| this.svgGroup_.style.opacity = 1 | |
| } | |
| } | |
| }; | |
| d.scrollToStart = function() { | |
| this.scrollbar_.set(this.RTL ? Infinity : 0) | |
| }; | |
| d.wheel_ = function(a) { | |
| var b = a.deltaX; | |
| if (b) { | |
| jd && (b *= 10); | |
| var c = this.getMetrics_(); | |
| b = c.viewLeft + b; | |
| b = Math.min(b, c.contentWidth - c.viewWidth); | |
| b = Math.max(b, 0); | |
| this.scrollbar_.set(b); | |
| L(!0); | |
| ei() | |
| } | |
| a.preventDefault(); | |
| a.stopPropagation() | |
| }; | |
| d.layout_ = function(a, b) { | |
| this.workspace.scale = this.targetWorkspace_.scale; | |
| var c = this.MARGIN, | |
| e = c; | |
| this.RTL && (a = a.reverse()); | |
| for (var f = 0, g; g = a[f]; f++) | |
| if ("block" == g.type) { | |
| g = g.block; | |
| for (var h = g.getDescendants(), m = 0, n; n = h[m]; m++) n.isInFlyout = !0; | |
| h = g.getSvgRoot(); | |
| m = Mk(g); | |
| n = e; | |
| this.RTL && (n += m.width); | |
| g.moveBy(n, c); | |
| e += m.width + b[f]; | |
| m = O("rect", { | |
| "fill-opacity": 0 | |
| }, null); | |
| m.tooltip = g; | |
| Km(m); | |
| this.workspace.svgBlockCanvas_.insertBefore(m, g.getSvgRoot()); | |
| g.flyoutRect_ = m; | |
| this.backgroundButtons[f] = m; | |
| this.addBlockListeners(h, | |
| g, m) | |
| } else "button" == g.type && (g = g.button, h = g.createDom(), g.moveTo(e, c), g.show(), T(h, "mouseup", g, g.onMouseUp), this.buttons.push(g), e += g.width + b[f]) | |
| }; | |
| d.Blockly_Flyout_prototype$onMouseMove = function(a) { | |
| var b = this.getMetrics_(); | |
| if (!(0 > b.contentWidth - b.viewWidth)) { | |
| var c = a.clientX - this.startDragMouseX; | |
| this.startDragMouseX = a.clientX; | |
| a = b.viewLeft - c; | |
| a = Mb(a, b.contentWidth - b.viewWidth); | |
| this.scrollbar_.set(a) | |
| } | |
| }; | |
| d.isDragTowardWorkspace_ = function(a, b) { | |
| var c = Math.atan2(b, a) / Math.PI * 180, | |
| e = !1; | |
| 0 == this.toolboxPosition ? 160 > c && 20 < c && (e = !0) : -160 < c && -20 > c && (e = !0); | |
| return e | |
| }; | |
| d.placeNewBlock_ = function(a) { | |
| var b = this.targetWorkspace_, | |
| c = a.getSvgRoot(); | |
| if (!c) throw "originBlock is not rendered."; | |
| c = pk(c); | |
| var e = this.workspace.scrollX, | |
| f = this.workspace.scale; | |
| c.x += e / f - e; | |
| 3 == this.toolboxPosition && (e = b.getMetrics().viewWidth - this.width, f = b.scale, c.x += e / f - e); | |
| e = this.workspace.scrollY; | |
| f = this.workspace.scale; | |
| c.y += e / f - e; | |
| 1 == this.toolboxPosition && (e = b.getMetrics().viewHeight - this.height, f = b.scale, c.y += e / f - e, c.x += c.x / f - c.x); | |
| a = Wi(a); | |
| a = lj(a, b); | |
| f = a.getSvgRoot(); | |
| if (!f) throw "block is not rendered."; | |
| f = pk(f); | |
| f.x += b.scrollX / b.scale - b.scrollX; | |
| f.y += b.scrollY / b.scale - b.scrollY; | |
| b.toolbox_ && !b.scrollbar && (f.x += b.toolbox_.getWidth() / b.scale, f.y += b.toolbox_.getHeight() / b.scale); | |
| a.moveBy(c.x - f.x, c.y - f.y); | |
| return a | |
| }; | |
| d.getClientRect = function() { | |
| if (!this.svgGroup_) return null; | |
| var a = this.svgGroup_.getBoundingClientRect(), | |
| b = a.top; | |
| a = a.height; | |
| return 0 == this.toolboxPosition ? new vj(-1E9, b - 1E9, 2E9, 1E9 + a) : 1 == this.toolboxPosition ? new vj(-1E9, b, 2E9, 1E9 + a) : null | |
| }; | |
| d.reflowInternal_ = function(a) { | |
| this.workspace.scale = this.targetWorkspace_.scale; | |
| for (var b = 0, c = 0, e; e = a[c]; c++) b = Math.max(b, Mk(e).height); | |
| b += 1.5 * this.MARGIN; | |
| b *= this.workspace.scale; | |
| b += Fi; | |
| if (this.height != b) { | |
| for (c = 0; e = a[c]; c++) { | |
| var f = Mk(e); | |
| if (e.flyoutRect_) { | |
| e.flyoutRect_.setAttribute("width", f.width); | |
| e.flyoutRect_.setAttribute("height", f.height); | |
| var g = e.getRelativeToSurfaceXY(); | |
| e.flyoutRect_.setAttribute("y", g.y); | |
| e.flyoutRect_.setAttribute("x", this.RTL ? g.x - f.width : g.x); | |
| e.flyoutRect_.setAttribute("y", g.y) | |
| } | |
| } | |
| this.height = | |
| b; | |
| this.targetWorkspace_.resize() | |
| } | |
| }; | |
| var sr = function(a) { | |
| a.getMetrics = this.getMetrics_.bind(this); | |
| a.setMetrics = this.setMetrics_.bind(this); | |
| sr.superClass_.constructor.call(this, a); | |
| this.horizontalLayout = !1; | |
| this.checkboxes_ = [] | |
| }; | |
| w(sr, Qq); | |
| d = sr.prototype; | |
| d.autoClose = !1; | |
| d.DEFAULT_WIDTH = 250; | |
| d.CHECKBOX_MARGIN = Qq.prototype.MARGIN; | |
| d.init = function(a) { | |
| sr.superClass_.init.call(this, a); | |
| this.workspace.scale = a.scale | |
| }; | |
| d.createDom = function(a) { | |
| sr.superClass_.createDom.call(this, a); | |
| this.defs_ = O("defs", {}, this.svgGroup_); | |
| a = O("clipPath", { | |
| id: "blocklyBlockMenuClipPath" | |
| }, this.defs_); | |
| this.clipRect_ = O("rect", { | |
| id: "blocklyBlockMenuClipRect", | |
| height: "0", | |
| width: "0", | |
| y: "0", | |
| x: "0" | |
| }, a); | |
| this.workspace.svgGroup_.setAttribute("clip-path", "url(#blocklyBlockMenuClipPath)"); | |
| return this.svgGroup_ | |
| }; | |
| d.getMetrics_ = function() { | |
| if (!this.isVisible()) return null; | |
| try { | |
| var a = this.workspace.svgBlockCanvas_.getBBox() | |
| } catch (e) { | |
| a = { | |
| height: 0, | |
| y: 0, | |
| width: 0, | |
| x: 0 | |
| } | |
| } | |
| var b = this.height - 4, | |
| c = this.getWidth() - 2; | |
| return { | |
| viewHeight: b, | |
| viewWidth: c, | |
| contentHeight: a.height * this.workspace.scale + 2 * this.MARGIN, | |
| contentWidth: a.width * this.workspace.scale + 2 * this.MARGIN, | |
| viewTop: -this.workspace.scrollY, | |
| viewLeft: -this.workspace.scrollX, | |
| contentTop: a.y, | |
| contentLeft: a.x, | |
| absoluteTop: 2, | |
| absoluteLeft: 0 | |
| } | |
| }; | |
| d.setMetrics_ = function(a) { | |
| var b = this.getMetrics_(); | |
| b && (v(a.y) && (this.workspace.scrollY = -b.contentHeight * a.y), this.workspace.translate(this.workspace.scrollX + b.absoluteLeft, this.workspace.scrollY + b.absoluteTop), this.clipRect_.setAttribute("height", b.viewHeight + "px"), this.clipRect_.setAttribute("width", b.viewWidth + "px")) | |
| }; | |
| d.position = function() { | |
| if (this.isVisible()) { | |
| var a = this.targetWorkspace_.getMetrics(); | |
| if (a) { | |
| this.width = this.getWidth(); | |
| if (this.parentToolbox) var b = this.parentToolbox.HtmlDiv.offsetLeft, | |
| c = this.parentToolbox.HtmlDiv.offsetTop + this.parentToolbox.getHeight(); | |
| else b = 3 == this.toolboxPosition ? a.viewWidth - this.width : 0, c = 0; | |
| this.height = a.viewHeight - c; | |
| a = this.width; | |
| var e = this.height, | |
| f = 3 == this.toolboxPosition, | |
| g = ["M 0,0"]; | |
| g.push("h", a); | |
| g.push("a", 0, 0, 0, 0, f ? 0 : 1, f ? -0 : 0, 0); | |
| g.push("v", Math.max(0, e - 0)); | |
| g.push("a", 0, 0, | |
| 0, 0, f ? 0 : 1, f ? 0 : -0, 0); | |
| g.push("h", -a); | |
| g.push("z"); | |
| this.svgBackground_.setAttribute("d", g.join(" ")); | |
| this.svgGroup_.setAttribute("width", this.width); | |
| this.svgGroup_.setAttribute("height", this.height); | |
| Ck(this.svgGroup_, "translate(" + b + "px," + c + "px)"); | |
| this.scrollbar_ && (qr(this.scrollbar_, b, c), this.scrollbar_.resize()); | |
| this.svgGroup_.style.opacity = 1 | |
| } | |
| } | |
| }; | |
| d.scrollToStart = function() { | |
| this.scrollbar_.set(0) | |
| }; | |
| d.wheel_ = function(a) { | |
| var b = a.deltaY; | |
| if (b) { | |
| jd && (b *= 10); | |
| var c = this.getMetrics_(); | |
| b = c.viewTop + b; | |
| b = Math.min(b, c.contentHeight - c.viewHeight); | |
| b = Math.max(b, 0); | |
| this.scrollbar_.set(b); | |
| L(!0); | |
| ei() | |
| } | |
| a.preventDefault(); | |
| a.stopPropagation() | |
| }; | |
| d.clearOldBlocks = function() { | |
| sr.superClass_.clearOldBlocks.call(this); | |
| for (var a = 0, b; b = this.checkboxes_[a]; a++) b.block.flyoutCheckbox = null, C(b.svgRoot); | |
| this.checkboxes_ = [] | |
| }; | |
| d.addBlockListeners = function(a, b, c) { | |
| sr.superClass_.addBlockListeners.call(this, a, b, c); | |
| b.flyoutCheckbox && this.Blockly_Flyout$listeners.push(T(b.flyoutCheckbox.svgRoot, "mousedown", null, tr(b.flyoutCheckbox))) | |
| }; | |
| d.layout_ = function(a, b) { | |
| for (var c = this.MARGIN, e = this.getWidth() / this.workspace.scale, f = c, g = 0, h; h = a[g]; g++) | |
| if ("block" == h.type) { | |
| h = h.block; | |
| for (var m = h.getDescendants(), n = 0, p; p = m[n]; n++) p.isInFlyout = !0; | |
| m = h.getSvgRoot(); | |
| n = Mk(h); | |
| p = h.getRelativeToSurfaceXY().x; | |
| var r = e - this.MARGIN; | |
| p = this.RTL ? r - p : c; | |
| if (h.checkboxInFlyout_) { | |
| r = h; | |
| var t = c, | |
| x = f, | |
| fa = n, | |
| R = r.getSvgRoot(), | |
| Ga = 20 + this.CHECKBOX_MARGIN; | |
| t = O("rect", { | |
| "class": "blocklyFlyoutCheckbox", | |
| height: 20, | |
| width: 20, | |
| x: this.RTL ? this.getWidth() / this.workspace.scale - Ga : t, | |
| y: x + fa.height / | |
| 2 - 10 | |
| }, null); | |
| x = { | |
| svgRoot: t, | |
| clicked: !1, | |
| block: r | |
| }; | |
| r.flyoutCheckbox = x; | |
| this.workspace.svgBlockCanvas_.insertBefore(t, R); | |
| this.checkboxes_.push(x); | |
| p = this.RTL ? p - (20 + this.CHECKBOX_MARGIN) : p + (20 + this.CHECKBOX_MARGIN) | |
| } | |
| h.moveBy(p, f + 0); | |
| r = h; | |
| R = g; | |
| p = O("rect", { | |
| "fill-opacity": 0, | |
| x: p, | |
| y: f, | |
| height: n.height, | |
| width: n.width | |
| }, null); | |
| p.tooltip = r; | |
| Km(p); | |
| this.workspace.svgBlockCanvas_.insertBefore(p, r.getSvgRoot()); | |
| r.flyoutRect_ = p; | |
| this.backgroundButtons[R] = p; | |
| this.addBlockListeners(m, h, p); | |
| f += n.height + b[g] + 0 | |
| } else "button" == h.type && (h = | |
| h.button, m = h.createDom(), h.moveTo(c, f), h.show(), T(m, "mouseup", h, h.onMouseUp), this.buttons.push(h), f += h.height + b[g]) | |
| }; | |
| var tr = function(a) { | |
| return function(b) { | |
| a.clicked = !a.clicked; | |
| a.clicked ? Hi(a.svgRoot, "checked") : ak(a.svgRoot, "checked"); | |
| b.stopPropagation(); | |
| b.preventDefault() | |
| } | |
| }; | |
| d = sr.prototype; | |
| d.Blockly_Flyout_prototype$onMouseMove = function(a) { | |
| var b = this.getMetrics_(); | |
| if (!(0 > b.contentHeight - b.viewHeight)) { | |
| var c = a.clientY - this.startDragMouseY; | |
| this.startDragMouseY = a.clientY; | |
| a = b.viewTop - c; | |
| a = Mb(a, b.contentHeight - b.viewHeight); | |
| this.scrollbar_.set(a) | |
| } | |
| }; | |
| d.isDragTowardWorkspace_ = function(a, b) { | |
| var c = Math.atan2(b, a) / Math.PI * 180, | |
| e = !1; | |
| if (2 == this.toolboxPosition) 70 > c && -70 < c && (e = !0); | |
| else if (-110 > c || 110 < c) e = !0; | |
| return e | |
| }; | |
| d.placeNewBlock_ = function(a) { | |
| var b = this.targetWorkspace_, | |
| c = a.getSvgRoot(); | |
| if (!c) throw "originBlock is not rendered."; | |
| c = pk(c); | |
| var e = this.workspace.scale, | |
| f = b.getMetrics(); | |
| 3 == this.toolboxPosition && (f = f.viewWidth - this.width, c.x += f / e - f); | |
| this.parentToolbox && (c.y += this.parentToolbox.getHeight() / b.scale - this.parentToolbox.getHeight(), f = this.parentToolbox.getWidth() / b.scale - this.parentToolbox.getWidth(), c.x = 3 == this.toolboxPosition ? c.x + f : c.x - f); | |
| f = this.workspace.scrollY; | |
| c.y += f / e - f; | |
| a = Wi(a); | |
| b.setResizesEnabled(!1); | |
| a = lj(a, b); | |
| f = a.getSvgRoot(); | |
| if (!f) throw "block is not rendered."; | |
| f = pk(f); | |
| f.x += b.scrollX / b.scale - b.scrollX; | |
| f.y += b.scrollY / b.scale - b.scrollY; | |
| a.moveBy((e * c.x - b.scale * f.x) / b.scale, (e * c.y - b.scale * f.y) / b.scale); | |
| return a | |
| }; | |
| d.getClientRect = function() { | |
| if (!this.svgGroup_) return null; | |
| var a = this.svgGroup_.getBoundingClientRect(), | |
| b = a.left; | |
| a = a.width; | |
| return 2 == this.toolboxPosition ? new vj(b - 1E9, -1E9, 1E9 + a, 2E9) : new vj(b, -1E9, 1E9 + a, 2E9) | |
| }; | |
| d.reflowInternal_ = function() {}; | |
| var ur = function(a) { | |
| this.workspace_ = a; | |
| this.RTL = a.options.RTL; | |
| this.horizontalLayout_ = a.options.horizontalLayout; | |
| this.toolboxPosition = a.options.toolboxPosition | |
| }; | |
| d = ur.prototype; | |
| d.width = 250; | |
| d.height = 0; | |
| d.Blockly_Toolbox_prototype$selectedItem_ = null; | |
| d.init = function() { | |
| var a = this.workspace_, | |
| b = Sj(this.workspace_); | |
| this.HtmlDiv = B("DIV", "blocklyToolboxDiv"); | |
| this.HtmlDiv.setAttribute("dir", a.RTL ? "RTL" : "LTR"); | |
| b.parentNode.insertBefore(this.HtmlDiv, b); | |
| N(this.HtmlDiv, "mousedown", this, function(a) { | |
| Vj(); | |
| Ai(a) || a.target == this.HtmlDiv ? Di(!1) : Di(!0); | |
| J = null | |
| }); | |
| vr(this); | |
| this.categoryMenu_ = new wr(this, this.HtmlDiv); | |
| this.populate(a.options.languageTree); | |
| this.position() | |
| }; | |
| d.dispose = function() { | |
| this.flyout_.dispose(); | |
| this.categoryMenu_.dispose(); | |
| this.categoryMenu_ = null; | |
| C(this.HtmlDiv); | |
| this.workspace_ = null | |
| }; | |
| var vr = function(a) { | |
| var b = a.workspace_, | |
| c = { | |
| disabledPatternId: b.options.disabledPatternId, | |
| parentWorkspace: b, | |
| RTL: b.RTL, | |
| oneBasedIndex: b.options.oneBasedIndex, | |
| horizontalLayout: b.horizontalLayout, | |
| toolboxPosition: b.options.toolboxPosition | |
| }; | |
| b.horizontalLayout ? a.flyout_ = new rr(c) : a.flyout_ = new sr(c); | |
| a.flyout_.parentToolbox = a; | |
| c = a.flyout_.createDom("svg"); | |
| var e = Sj(a.workspace_); | |
| e.parentNode && e.parentNode.insertBefore(c, e.nextSibling); | |
| a.flyout_.init(b) | |
| }; | |
| d = ur.prototype; | |
| d.populate = function(a) { | |
| this.categoryMenu_.populate(a); | |
| this.setSelectedItem(this.categoryMenu_.categories_[0]) | |
| }; | |
| d.getWidth = function() { | |
| return this.width | |
| }; | |
| d.getHeight = function() { | |
| return this.categoryMenu_ ? this.categoryMenu_.getHeight() : 0 | |
| }; | |
| d.position = function() { | |
| var a = this.HtmlDiv; | |
| if (a) { | |
| var b = Sj(this.workspace_); | |
| b = Hq(b); | |
| this.horizontalLayout_ ? (a.style.left = "0", a.style.height = "auto", a.style.width = b.width + "px", this.height = a.offsetHeight, 0 == this.toolboxPosition ? a.style.top = "0" : a.style.bottom = "0") : (3 == this.toolboxPosition ? a.style.right = "0" : a.style.left = "0", a.style.height = this.getHeight() + "px", a.style.width = this.width + "px"); | |
| this.flyout_.position() | |
| } | |
| }; | |
| d.getClientRect = function() { | |
| if (!this.HtmlDiv) return null; | |
| var a = this.HtmlDiv.getBoundingClientRect(), | |
| b = a.left, | |
| c = a.top, | |
| e = a.width; | |
| a = a.height; | |
| return 2 == this.toolboxPosition ? new vj(-1E7, -1E7, 1E7 + b + e, 2E7) : 3 == this.toolboxPosition ? new vj(b, -1E7, 1E7 + e, 2E7) : 0 == this.toolboxPosition ? new vj(-1E7, -1E7, 2E7, 1E7 + c + a) : new vj(0, c, 2E7, 1E7 + e) | |
| }; | |
| var xr = function(a) { | |
| var b = a.Blockly_Toolbox_prototype$selectedItem_; | |
| b && (b.custom_ || b.contents_) && a.flyout_.show(b.custom_ ? b.custom_ : b.contents_) | |
| }; | |
| ur.prototype.setSelectedItem = function(a) { | |
| if (this.Blockly_Toolbox_prototype$selectedItem_) { | |
| if (this.Blockly_Toolbox_prototype$selectedItem_ == a) return; | |
| this.Blockly_Toolbox_prototype$selectedItem_.setSelected(!1) | |
| } | |
| this.Blockly_Toolbox_prototype$selectedItem_ = a; | |
| null != this.Blockly_Toolbox_prototype$selectedItem_ && (this.Blockly_Toolbox_prototype$selectedItem_.setSelected(!0), this.flyout_.show(a.custom_ ? a.custom_ : a.contents_), this.flyout_.scrollToStart()) | |
| }; | |
| var yr = function(a) { | |
| return function() { | |
| this.setSelectedItem(a); | |
| J = null | |
| } | |
| }, | |
| wr = function(a, b) { | |
| this.Blockly_Toolbox_CategoryMenu$parent_ = a; | |
| this.Blockly_Toolbox_CategoryMenu$height_ = 0; | |
| this.Blockly_Toolbox_CategoryMenu$parentHtml_ = b; | |
| this.createDom(); | |
| this.categories_ = [] | |
| }; | |
| wr.prototype.getHeight = function() { | |
| return this.Blockly_Toolbox_CategoryMenu$height_ | |
| }; | |
| wr.prototype.createDom = function() { | |
| this.table = B("table", "scratchCategoryMenu"); | |
| this.Blockly_Toolbox_CategoryMenu$parentHtml_.appendChild(this.table) | |
| }; | |
| wr.prototype.populate = function(a) { | |
| if (a) { | |
| this.dispose(); | |
| this.createDom(); | |
| for (var b = [], c = 0, e; e = a.childNodes[c]; c++) e.tagName && "CATEGORY" == e.tagName.toUpperCase() && b.push(e); | |
| a = Math.ceil(b.length / 2); | |
| for (c = 0; c < a; c += 1) { | |
| e = b[c]; | |
| var f = B("tr", "scratchCategoryMenuRow"); | |
| this.table.appendChild(f); | |
| e && this.categories_.push(new zr(this, f, e)); | |
| b[c + a] && this.categories_.push(new zr(this, f, b[c + a])) | |
| } | |
| this.Blockly_Toolbox_CategoryMenu$height_ = this.table.offsetHeight | |
| } | |
| }; | |
| wr.prototype.dispose = function() { | |
| for (var a = 0, b; b = this.categories_[a]; a++) b.dispose(); | |
| this.table && (C(this.table), this.table = null) | |
| }; | |
| var zr = function(a, b, c) { | |
| this.Blockly_Toolbox_Category$parent_ = a; | |
| this.Blockly_Toolbox_Category$parentHtml_ = b; | |
| this.Blockly_Toolbox_Category$name_ = c.getAttribute("name"); | |
| this.setColour(c); | |
| this.custom_ = c.getAttribute("custom"); | |
| this.contents_ = []; | |
| if (!this.custom_) | |
| for (a = 0; b = c.childNodes[a]; a++) | |
| if (b.tagName) switch (b.tagName.toUpperCase()) { | |
| case "BLOCK": | |
| case "SHADOW": | |
| case "LABEL": | |
| case "BUTTON": | |
| case "TEXT": | |
| this.contents_.push(b) | |
| } | |
| this.createDom() | |
| }; | |
| zr.prototype.dispose = function() { | |
| this.item_ && (C(this.item_), this.item = null); | |
| this.contents_ = this.Blockly_Toolbox_Category$parentHtml_ = this.Blockly_Toolbox_Category$parent_ = null | |
| }; | |
| zr.prototype.createDom = function() { | |
| var a = this.Blockly_Toolbox_Category$parent_.Blockly_Toolbox_CategoryMenu$parent_; | |
| this.item_ = B("td", { | |
| "class": "scratchCategoryMenuItem" | |
| }, this.Blockly_Toolbox_Category$name_); | |
| this.bubble_ = B("div", { | |
| "class": a.RTL ? "scratchCategoryItemBubbleRTL" : "scratchCategoryItemBubbleLTR" | |
| }); | |
| this.bubble_.style.backgroundColor = this.colour_; | |
| this.bubble_.style.borderColor = this.secondaryColour_; | |
| this.item_.appendChild(this.bubble_); | |
| this.Blockly_Toolbox_Category$parentHtml_.appendChild(this.item_); | |
| T(this.item_, "mousedown", a, yr(this)) | |
| }; | |
| zr.prototype.setSelected = function(a) { | |
| this.item_.className = a ? "scratchCategoryMenuItem categorySelected" : "scratchCategoryMenuItem" | |
| }; | |
| zr.prototype.setColour = function(a) { | |
| var b = a.getAttribute("colour"); | |
| a = a.getAttribute("secondaryColour"); | |
| u(b) ? (b.match(/^#[0-9a-fA-F]{6}$/) ? this.colour_ = b : this.colour_ = Uk(Zk(Number(b))), a.match(/^#[0-9a-fA-F]{6}$/) ? this.secondaryColour_ = a : this.secondaryColour_ = Uk(Zk(a))) : this.secondaryColour_ = this.colour_ = "#000000" | |
| }; | |
| var Ar = function(a) { | |
| this.workspace_ = a | |
| }; | |
| d = Ar.prototype; | |
| d.Blockly_Trashcan_prototype$isOpen = !1; | |
| d.svgGroup_ = null; | |
| d.svgLid_ = null; | |
| d.lidTask_ = 0; | |
| d.lidOpen_ = 0; | |
| d.Blockly_Trashcan_prototype$left_ = 0; | |
| d.Blockly_Trashcan_prototype$top_ = 0; | |
| d.createDom = function() { | |
| this.svgGroup_ = O("g", { | |
| "class": "blocklyTrash" | |
| }, null); | |
| var a = String(Math.random()).substring(2), | |
| b = O("clipPath", { | |
| id: "blocklyTrashBodyClipPath" + a | |
| }, this.svgGroup_); | |
| O("rect", { | |
| width: 47, | |
| height: 44, | |
| y: 16 | |
| }, b); | |
| O("image", { | |
| width: 96, | |
| x: -0, | |
| height: 124, | |
| y: -32, | |
| "clip-path": "url(#blocklyTrashBodyClipPath" + a + ")" | |
| }, this.svgGroup_).setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.workspace_.options.pathToMedia + "sprites.png"); | |
| b = O("clipPath", { | |
| id: "blocklyTrashLidClipPath" + a | |
| }, this.svgGroup_); | |
| O("rect", { | |
| width: 47, | |
| height: 16 | |
| }, b); | |
| this.svgLid_ = O("image", { | |
| width: 96, | |
| x: -0, | |
| height: 124, | |
| y: -32, | |
| "clip-path": "url(#blocklyTrashLidClipPath" + a + ")" | |
| }, this.svgGroup_); | |
| this.svgLid_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.workspace_.options.pathToMedia + "sprites.png"); | |
| N(this.svgGroup_, "mouseup", this, this.click); | |
| this.animateLid_(); | |
| return this.svgGroup_ | |
| }; | |
| d.init = function(a) { | |
| this.bottom_ = 20 + a; | |
| rq(this, !1); | |
| return this.bottom_ + 44 + 16 | |
| }; | |
| d.dispose = function() { | |
| this.svgGroup_ && (C(this.svgGroup_), this.svgGroup_ = null); | |
| this.workspace_ = this.svgLid_ = null; | |
| clearTimeout(this.lidTask_) | |
| }; | |
| d.position = function() { | |
| var a = this.workspace_.getMetrics(); | |
| a && (this.workspace_.RTL ? (this.Blockly_Trashcan_prototype$left_ = 20 + Fi, 2 == a.toolboxPosition && (this.Blockly_Trashcan_prototype$left_ += a.flyoutWidth, this.workspace_.toolbox_ && (this.Blockly_Trashcan_prototype$left_ += a.absoluteLeft))) : (this.Blockly_Trashcan_prototype$left_ = a.viewWidth + a.absoluteLeft - 47 - 20 - Fi, 3 == a.toolboxPosition && (this.Blockly_Trashcan_prototype$left_ -= a.flyoutWidth)), this.Blockly_Trashcan_prototype$top_ = a.viewHeight + a.absoluteTop - | |
| 60 - this.bottom_, 1 == a.toolboxPosition && (this.Blockly_Trashcan_prototype$top_ -= a.flyoutHeight), this.svgGroup_.setAttribute("transform", "translate(" + this.Blockly_Trashcan_prototype$left_ + "," + this.Blockly_Trashcan_prototype$top_ + ")")) | |
| }; | |
| d.getClientRect = function() { | |
| if (!this.svgGroup_) return null; | |
| var a = this.svgGroup_.getBoundingClientRect(); | |
| return new vj(a.left + 0 - 10, a.top + 32 - 10, 67, 80) | |
| }; | |
| var rq = function(a, b) { | |
| a.Blockly_Trashcan_prototype$isOpen != b && (clearTimeout(a.lidTask_), a.Blockly_Trashcan_prototype$isOpen = b, a.animateLid_()) | |
| }; | |
| Ar.prototype.animateLid_ = function() { | |
| this.lidOpen_ += this.Blockly_Trashcan_prototype$isOpen ? .2 : -.2; | |
| this.lidOpen_ = Mb(this.lidOpen_, 1); | |
| var a = 45 * this.lidOpen_; | |
| this.svgLid_.setAttribute("transform", "rotate(" + (this.workspace_.RTL ? -a : a) + "," + (this.workspace_.RTL ? 4 : 43) + ",14)"); | |
| this.svgGroup_.style.opacity = Nb(.4, .8, this.lidOpen_); | |
| 0 < this.lidOpen_ && 1 > this.lidOpen_ && (this.lidTask_ = setTimeout(this.animateLid_.bind(this), 20)) | |
| }; | |
| Ar.prototype.close = function() { | |
| rq(this, !1) | |
| }; | |
| Ar.prototype.click = function() { | |
| var a = this.workspace_.startScrollX - this.workspace_.scrollX, | |
| b = this.workspace_.startScrollY - this.workspace_.scrollY; | |
| 3 < Math.sqrt(a * a + b * b) || console.log("TODO: Inspect trash.") | |
| }; | |
| var uo = function(a) { | |
| this.icons_ = a; | |
| uo.superClass_.constructor.call(this, a[0].value); | |
| bk(this, "iconmenu") | |
| }; | |
| w(uo, Wj); | |
| uo.prototype.init = function(a) { | |
| this.Blockly_FieldIconMenu$arrowX_ = 18; | |
| this.Blockly_FieldIconMenu$arrowY_ = 10; | |
| a.RTL && (this.Blockly_FieldIconMenu$arrowX_ = -this.Blockly_FieldIconMenu$arrowX_ - 12); | |
| this.arrowIcon_ = O("image", { | |
| height: "12px", | |
| width: "12px", | |
| transform: "translate(" + this.Blockly_FieldIconMenu$arrowX_ + "," + this.Blockly_FieldIconMenu$arrowY_ + ")" | |
| }); | |
| this.arrowIcon_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", K.options.pathToMedia + "dropdown-arrow.svg"); | |
| a.getSvgRoot().appendChild(this.arrowIcon_); | |
| uo.superClass_.init.call(this, a) | |
| }; | |
| uo.prototype.CURSOR = "default"; | |
| uo.prototype.Blockly_Field_prototype$setValue = function(a) { | |
| null !== a && a !== this.value_ && (this.Blockly_Field_prototype$sourceBlock && 0 == Q && P(new Mi(this.Blockly_Field_prototype$sourceBlock, "field", this.name, this.value_, a)), this.value_ = a, Br(this, Cr(this, this.value_))) | |
| }; | |
| var Br = function(a, b) { | |
| if (a.Blockly_Field_prototype$sourceBlock && a.Blockly_Field_prototype$sourceBlock.parentBlock) | |
| for (var c = a.Blockly_Field_prototype$sourceBlock.parentBlock, e = 0, f; f = c.inputList[e]; e++) | |
| for (var g = 0, h; h = f.fieldRow[g]; g++) | |
| if (h instanceof Jm) { | |
| h.Blockly_Field_prototype$setValue(b); | |
| return | |
| } | |
| }; | |
| uo.prototype.getValue = function() { | |
| return this.value_ | |
| }; | |
| var Cr = function(a, b) { | |
| for (var c = 0, e; e = a.icons_[c]; c++) | |
| if (e.value === b) return e.src; | |
| return "" | |
| }; | |
| uo.prototype.showEditor = function() { | |
| if (Nj === this) { | |
| Vj(); | |
| var a = !0 | |
| } else a = !1; | |
| if (!a) { | |
| ei(); | |
| Jj.innerHTML = ""; | |
| var b = Jj; | |
| b.setAttribute("role", "menu"); | |
| b.setAttribute("aria-haspopup", "true"); | |
| a = 0; | |
| for (var c; c = this.icons_[a]; a++) { | |
| if ("placeholder" == c.type) { | |
| var e = document.createElement("span"); | |
| e.setAttribute("class", "blocklyDropDownPlaceholder"); | |
| e.style.width = c.width + "px"; | |
| e.style.height = c.height + "px" | |
| } else { | |
| e = document.createElement("button"); | |
| e.setAttribute("id", ":" + a); | |
| e.setAttribute("role", "menuitem"); | |
| e.setAttribute("class", | |
| "blocklyDropDownButton"); | |
| e.title = c.alt; | |
| e.style.width = c.width + "px"; | |
| e.style.height = c.height + "px"; | |
| var f = this.Blockly_Field_prototype$sourceBlock.colour_; | |
| c.value == this.getValue() && (f = this.Blockly_Field_prototype$sourceBlock.colourTertiary_, e.setAttribute("aria-selected", "true")); | |
| e.style.backgroundColor = f; | |
| e.style.borderColor = this.Blockly_Field_prototype$sourceBlock.colourTertiary_; | |
| T(e, "click", this, this.buttonClick_); | |
| T(e, "mouseup", this, this.buttonClick_); | |
| T(e, "mousedown", e, function(a) { | |
| this.setAttribute("class", | |
| "blocklyDropDownButton blocklyDropDownButtonHover"); | |
| a.preventDefault() | |
| }); | |
| T(e, "mouseover", e, function() { | |
| this.setAttribute("class", "blocklyDropDownButton blocklyDropDownButtonHover"); | |
| b.setAttribute("aria-activedescendant", this.id) | |
| }); | |
| T(e, "mouseout", e, function() { | |
| this.setAttribute("class", "blocklyDropDownButton"); | |
| b.removeAttribute("aria-activedescendant") | |
| }); | |
| f = document.createElement("img"); | |
| f.src = c.src; | |
| e.setAttribute("data-value", c.value); | |
| f.setAttribute("data-value", c.value); | |
| e.appendChild(f) | |
| } | |
| b.appendChild(e) | |
| } | |
| b.style.width = | |
| "168px"; | |
| Qj(this.Blockly_Field_prototype$sourceBlock.colour_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_); | |
| Rj(this.Blockly_Field_prototype$sourceBlock.parentBlock.category_); | |
| this.savedPrimary_ = this.Blockly_Field_prototype$sourceBlock.colour_; | |
| this.Blockly_Field_prototype$sourceBlock.setColour(this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_); | |
| a = this.Blockly_Field_prototype$sourceBlock.workspace.scale; | |
| Uj(this, this.Blockly_Field_prototype$sourceBlock, this.Blockly_FieldIconMenu_prototype$onHide_.bind(this), -(64 * a) - -8 * a) || this.arrowIcon_.setAttribute("transform", "translate(" + (this.Blockly_FieldIconMenu$arrowX_ + 16 / 1.5 + 1) + "," + (this.Blockly_FieldIconMenu$arrowY_ + 16 / 1.5) + ") rotate(180)") | |
| } | |
| }; | |
| uo.prototype.buttonClick_ = function(a) { | |
| a = a.target.getAttribute("data-value"); | |
| this.Blockly_Field_prototype$setValue(a); | |
| Vj() | |
| }; | |
| uo.prototype.Blockly_FieldIconMenu_prototype$onHide_ = function() { | |
| this.Blockly_Field_prototype$sourceBlock && this.Blockly_Field_prototype$sourceBlock.setColour(this.savedPrimary_, this.Blockly_Field_prototype$sourceBlock.colourSecondary_, this.Blockly_Field_prototype$sourceBlock.colourTertiary_); | |
| Jj.removeAttribute("role"); | |
| Jj.removeAttribute("aria-haspopup"); | |
| Jj.removeAttribute("aria-activedescendant"); | |
| this.arrowIcon_.setAttribute("transform", "translate(" + this.Blockly_FieldIconMenu$arrowX_ + "," + this.Blockly_FieldIconMenu$arrowY_ + | |
| ")") | |
| }; | |
| var po = function(a) { | |
| var b = a.colourSecondary_; | |
| a.svgPath_.setAttribute("stroke", a.colourTertiary_); | |
| a.svgShadowPathTop_.setAttribute("transform", "translate(0,3)"); | |
| a.svgShadowPathBottom_.setAttribute("transform", "translate(0,3)"); | |
| a.svgPath_.setAttribute("fill", a.colour_); | |
| a.svgShadowPathTop_.setAttribute("fill", b); | |
| a.svgShadowPathBottom_.setAttribute("fill", b); | |
| a.svgPath_.setAttribute("fill-opacity", a.opacity_); | |
| a.svgShadowPathTop_.setAttribute("fill-opacity", a.opacity_); | |
| a.svgShadowPathBottom_.setAttribute("fill-opacity", | |
| a.opacity_); | |
| b = 0; | |
| for (var c; c = a.inputList[b]; b++) | |
| for (var e = 0, f; f = c.fieldRow[e]; e++) f.Blockly_Field_prototype$setText(null) | |
| }, | |
| sq = function(a) { | |
| var b = Yp; | |
| a ? (b.svgPath_.setAttribute("filter", "url(#blocklyReplacementGlowFilter)"), Hi(b.svgGroup, "blocklyReplaceable")) : (b.svgPath_.removeAttribute("filter"), ak(b.svgGroup, "blocklyReplaceable")) | |
| }, | |
| Mk = function(a, b) { | |
| var c = a.height, | |
| e = a.width; | |
| !b && Dr(a) && (c = c + -8 + 32); | |
| var f = Xi(a); | |
| f && (f = Mk(f, b), e += f.width, e -= 8, c = Math.max(c, f.height)); | |
| return { | |
| height: c, | |
| width: e | |
| } | |
| }; | |
| X.prototype.render = function(a) { | |
| fk(); | |
| this.rendered = !0; | |
| for (var b = this.renderingMetrics_, c = { | |
| statement: null, | |
| imageField: null, | |
| iconMenu: null, | |
| width: 0, | |
| height: 0, | |
| bayHeight: 0, | |
| bayWidth: 0, | |
| bayNotchAtRight: !0, | |
| fieldRadius: 0, | |
| startHat: !1, | |
| endCap: !1 | |
| }, e = 0, f; f = this.inputList[e]; e++) { | |
| if (3 == f.type) { | |
| c.statement = f; | |
| c.bayHeight = 64; | |
| c.bayWidth = 32; | |
| if (f.connection && f.connection.targetConnection) { | |
| var g = S(f.connection); | |
| g = Mk(g, !0); | |
| c.bayHeight = Math.max(c.bayHeight, g.height); | |
| c.bayWidth = Math.max(c.bayWidth, g.width) | |
| }(g = S(f.connection)) && | |
| !mo(g) ? c.bayNotchAtRight = !1 : c.bayWidth -= 8 | |
| } | |
| g = 0; | |
| for (var h; h = f.fieldRow[g]; g++) h instanceof Jm && (c.imageField = h), h instanceof uo && (c.iconMenu = h), c.fieldRadius = h instanceof Dk ? 2 == h.Blockly_Field_prototype$sourceBlock.outputShape_ ? 16 : 4 : 16 | |
| } | |
| this.nextConnection && !this.previousConnection && (c.startHat = !0); | |
| this.nextConnection || !this.previousConnection || this.outputConnection || c.statement || (c.endCap = !0); | |
| c.iconMenu && (e = c.iconMenu, (f = Cr(e, e.getValue())) && Br(e, f)); | |
| c.width = 64; | |
| c.height = 64; | |
| this.outputConnection && (c.height = | |
| 32, c.width = 48); | |
| c.statement && (c.width += c.bayWidth + 16 + 8, c.height = c.bayHeight + 12); | |
| c.startHat && (c.width += 4); | |
| c.endCap && (c.width += 4); | |
| if (b && b.statement == c.statement && b.imageField == c.imageField && b.height == c.height && b.width == c.width && b.bayHeight == c.bayHeight && b.bayWidth == c.bayWidth && b.fieldRadius == c.fieldRadius && b.startHat == c.startHat) c.statement && c.statement.connection && c.statement.targetConnection && Np(c.statement.connection), this.nextConnection && this.nextConnection.targetConnection && Np(this.nextConnection); | |
| else { | |
| this.height = c.height; | |
| this.width = c.width; | |
| b = this.getRelativeToSurfaceXY(); | |
| e = []; | |
| c.startHat ? (e.push("m 32,0"), e.push("A 32,32 0 0,0 0,32")) : this.previousConnection ? (e.push("m 4,0"), e.push("A 4,4 0 0,0 0,4"), e.push("V", String(c.height - 4 - 12 - 34)), e.push("c 0,2 1,3 2,4 l 4,4 c 1,1 2,2 2,4 v 12 c 0,2 -1,3 -2,4 l -4,4 c -1,1 -2,2 -2,4"), this.previousConnection.moveTo(b.x, b.y + c.height - 8), e.push("V", String(c.height - 4))) : (e.push("m", c.fieldRadius + ",0"), e.push("A", c.fieldRadius + "," + c.fieldRadius, "0", "0,0", | |
| "0," + c.fieldRadius), e.push("V", String(c.height - c.fieldRadius))); | |
| c.startHat ? e.push("a", "32,32 0 0,0 32,32") : this.previousConnection ? e.push("a", "4,4 0 0,0 4,4") : e.push("a", c.fieldRadius + "," + c.fieldRadius, "0", "0,0", c.fieldRadius + "," + c.fieldRadius); | |
| c.statement && (e.push("h", "16"), e.push("a", "4,4 0 0,0 4,-4"), e.push("v", "-10"), e.push("c 0,-2 1,-3 2,-4 l 4,-4 c 1,-1 2,-2 2,-4 v -12 c 0,-2 -1,-3 -2,-4 l -4,-4 c -1,-1 -2,-2 -2,-4"), e.push("v", String(-c.bayHeight + 54)), e.push("a", "4,4 0 0,1 4,-4"), e.push("h", | |
| String(c.bayWidth - 8)), e.push("a", "4,4 0 0,1 4,4"), c.bayNotchAtRight && (e.push("v", String(c.bayHeight - 12 - 34 - 8)), e.push("c 0,2 1,3 2,4 l 4,4 c 1,1 2,2 2,4 v 12 c 0,2 -1,3 -2,4 l -4,4 c -1,1 -2,2 -2,4")), e.push("V", c.bayHeight + 8), e.push("a", "4,4 0 0,0 4,4"), f = b.x + 8 + 16, this.RTL && (f = b.x - 8 - 16), c.statement.connection.moveTo(f, b.y + c.height - 8), c.statement.connection.targetConnection && Np(c.statement.connection)); | |
| this.isShadowBlock ? e.push("H", String(c.width - c.fieldRadius)) : e.push("H", String(c.width - 4)); | |
| this.isShadowBlock ? | |
| (e.push("a", c.fieldRadius + "," + c.fieldRadius, "0", "0,0", c.fieldRadius + "," + -1 * c.fieldRadius), e.push("v", String(-1 * (c.height - 2 * c.fieldRadius)))) : (e.push("a", "4,4 0 0,0 4,-4"), e.push("v", "-10")); | |
| if (this.nextConnection) { | |
| e.push("c 0,-2 1,-3 2,-4 l 4,-4 c 1,-1 2,-2 2,-4 v -12 c 0,-2 -1,-3 -2,-4 l -4,-4 c -1,-1 -2,-2 -2,-4"); | |
| this.width += 8; | |
| var m; | |
| this.RTL ? m = b.x - c.width : m = b.x + c.width; | |
| this.nextConnection.moveTo(m, b.y + c.height - 8); | |
| this.nextConnection.targetConnection && Np(this.nextConnection); | |
| e.push("V", "4") | |
| } else this.isShadowBlock || | |
| e.push("V", "4"); | |
| this.isShadowBlock ? e.push("a", c.fieldRadius + "," + c.fieldRadius, "0", "0,0", "-" + c.fieldRadius + ",-" + c.fieldRadius) : e.push("a", "4,4 0 0,0 -4,-4"); | |
| e.push("z"); | |
| m = e.join(" "); | |
| this.svgPath_.setAttribute("d", m); | |
| this.svgShadowPathBottom_.setAttribute("d", m); | |
| this.svgShadowClipRectBottom_.setAttribute("y", c.height / 2); | |
| this.svgShadowClipRectBottom_.setAttribute("width", c.width + .5 * c.width); | |
| this.svgShadowClipRectBottom_.setAttribute("height", c.height); | |
| this.svgShadowPathBottom_.setAttribute("clip-path", | |
| "url(#bottomClip" + this.maskIdBottom + ")"); | |
| this.svgShadowPathTop_.setAttribute("d", m); | |
| this.svgShadowClipRectTop_.setAttribute("y", "0"); | |
| this.svgShadowClipRectTop_.setAttribute("width", c.width + .5 * c.width); | |
| this.svgShadowClipRectTop_.setAttribute("height", c.height / 2); | |
| this.svgShadowPathTop_.setAttribute("clip-path", "url(#topClip" + this.maskIdTop + ")"); | |
| this.RTL && this.svgPath_.setAttribute("transform", "scale(-1 1)"); | |
| c.imageField && (m = c.imageField.getSvgRoot(), b = c.imageField.getSize(), e = c.width - b.width - 8, f = c.height - | |
| b.height - 12, c.endCap && (e -= 4), g = "scale(1 1)", this.RTL && (c.imageField.flipRTL_ ? (g = "scale(-1 1)", e = -c.width + b.width + 8) : e = -c.width + 8), m && (this.isInsertionMarker_ && m.setAttribute("display", "none"), m.setAttribute("transform", "translate(" + e + "," + f + ") " + g))); | |
| Dr(this) && (m = Dr(this).getSvgRoot(), b = 8 + (c.bayWidth ? 24 : 0) + c.bayWidth, c.startHat && (b += 8), this.RTL && (b = -b), m.setAttribute("transform", "translate(" + b + "," + (c.height + -8) + ")")); | |
| m = []; | |
| this.isShadowBlock ? m.push("argument") : (c.statement && m.push("c-block"), c.startHat ? | |
| m.push("hat") : c.statement || m.push("stack"), this.nextConnection || m.push("end")); | |
| this.svgGroup.setAttribute("data-shapes", m.join(" ")); | |
| this.category_ && this.svgGroup.setAttribute("data-category", this.category_); | |
| this.renderingMetrics_ = c | |
| }!1 !== a && ((a = this.parentBlock) ? a.render(!0) : eq(this.workspace)); | |
| gk() | |
| }; | |
| var Dr = function(a) { | |
| for (var b = 0, c; c = a.childBlocks[b]; b++) | |
| if (c.isShadowBlock) return c; | |
| return null | |
| }; | |
| var zq = function(a, b) { | |
| var c; | |
| a.workspace.RTL && (c = a.workspace.getWidth()); | |
| var e = Wi(a, b), | |
| f = a.getRelativeToSurfaceXY(); | |
| e.setAttribute("x", Math.round(a.workspace.RTL ? c - f.x : f.x)); | |
| e.setAttribute("y", Math.round(f.y)); | |
| return e | |
| }, | |
| Wi = function(a, b) { | |
| var c = B(a.isShadowBlock ? "shadow" : "block"); | |
| c.setAttribute("type", a.type); | |
| b || c.setAttribute("id", a.id); | |
| for (var e = 0, f; f = a.inputList[e]; e++) | |
| for (var g = 0, h; h = f.fieldRow[g]; g++) | |
| if (h.name && h.EDITABLE) { | |
| var m = B("field", null, h.getValue()); | |
| m.setAttribute("name", h.name); | |
| c.appendChild(m) | |
| } if (e = | |
| a.getCommentText()) e = B("comment", null, e), "object" == typeof a.comment && (e.setAttribute("pinned", a.comment.isVisible()), f = a.comment.getBubbleSize(), e.setAttribute("h", f.height), e.setAttribute("w", f.width)), c.appendChild(e); | |
| a.data && (e = B("data", null, a.data), c.appendChild(e)); | |
| for (e = 0; f = a.inputList[e]; e++) { | |
| var n; | |
| h = !0; | |
| 5 != f.type && (m = S(f.connection), 1 == f.type ? n = B("value") : 3 == f.type && (n = B("statement")), g = f.connection.shadowDom_, !g || m && m.isShadowBlock || n.appendChild(Er(g)), m && (n.appendChild(Wi(m, b)), h = !1), n.setAttribute("name", | |
| f.name), h || c.appendChild(n)) | |
| } | |
| a.inputsInlineDefault != a.inputsInline && c.setAttribute("inline", a.inputsInline); | |
| a.Blockly_Block$collapsed && c.setAttribute("collapsed", !0); | |
| a.disabled && c.setAttribute("disabled", !0); | |
| oo(a) || a.isShadowBlock || c.setAttribute("deletable", !1); | |
| jj(a) || a.isShadowBlock || c.setAttribute("movable", !1); | |
| Pi(a) || c.setAttribute("editable", !1); | |
| if (e = Xi(a)) n = B("next", null, Wi(e, b)), c.appendChild(n); | |
| g = a.nextConnection && a.nextConnection.shadowDom_; | |
| !g || e && e.isShadowBlock || n.appendChild(Er(g)); | |
| return c | |
| }, | |
| Er = function(a) { | |
| for (var b = a = a.cloneNode(!0), c; b;) | |
| if (b.firstChild) b = b.firstChild; | |
| else { | |
| for (; b && !b.nextSibling;) c = b, b = b.parentNode, 3 == c.nodeType && "" == c.data.trim() && b.firstChild != c && C(c); | |
| b && (c = b, b = b.nextSibling, 3 == c.nodeType && "" == c.data.trim() && C(c)) | |
| } return a | |
| }, | |
| Fp = function(a) { | |
| return (new DOMParser).parseFromString(a, "text/xml").firstChild | |
| }, | |
| Aq = function(a, b) { | |
| var c; | |
| b.RTL && (c = b.getWidth()); | |
| fk(); | |
| var e = a.childNodes.length, | |
| f = bi; | |
| f || ci(!0); | |
| b.setResizesEnabled && b.setResizesEnabled(!1); | |
| for (var g = 0; g < e; g++) { | |
| var h = | |
| a.childNodes[g], | |
| m = h.nodeName.toLowerCase(); | |
| if ("block" == m || "shadow" == m && !Zi) { | |
| m = lj(h, b); | |
| var n = parseInt(h.getAttribute("x"), 10); | |
| h = parseInt(h.getAttribute("y"), 10); | |
| isNaN(n) || isNaN(h) || m.moveBy(b.RTL ? c - n : n, h) | |
| } | |
| } | |
| f || ci(!1); | |
| gk(); | |
| if (!b.isFlyout) | |
| for (c = Xh(b), e = 0; e < c.length; e++) b.createVariable(c[e]); | |
| b.setResizesEnabled && b.setResizesEnabled(!0) | |
| }, | |
| lj = function(a, b) { | |
| Q++; | |
| try { | |
| var c = Fr(a, b); | |
| if (b.rendered) { | |
| qo(c, !0); | |
| for (var e = c.getDescendants(), f = e.length - 1; 0 <= f; f--) e[f].initSvg(); | |
| for (f = e.length - 1; 0 <= f; f--) e[f].render(!1); | |
| b.isFlyout ? setTimeout(function() { | |
| c.workspace && (z || id) && c.render() | |
| }, 1) : setTimeout(function() { | |
| c.workspace && (qo(c, !1), (z || id) && c.render()) | |
| }, 1); | |
| Pp(c); | |
| eq(b) | |
| } | |
| } finally { | |
| Q-- | |
| } | |
| 0 == Q && P(new jo(c)); | |
| return c | |
| }, | |
| Fr = function(a, b) { | |
| var c = null, | |
| e = a.getAttribute("type"), | |
| f = a.getAttribute("id"); | |
| c = b.newBlock(e, f); | |
| var g = null; | |
| f = 0; | |
| for (var h; h = a.childNodes[f]; f++) | |
| if (3 != h.nodeType) { | |
| for (var m = g = null, n = 0, p; p = h.childNodes[n]; n++) 1 == p.nodeType && ("block" == p.nodeName.toLowerCase() ? g = p : "shadow" == p.nodeName.toLowerCase() && (m = p)); | |
| !g && m && | |
| (g = m); | |
| n = h.getAttribute("name"); | |
| switch (h.nodeName.toLowerCase()) { | |
| case "mutation": | |
| c.domToMutation && c.initSvg && c.initSvg(); | |
| break; | |
| case "comment": | |
| c.setCommentText(h.textContent); | |
| var r = h.getAttribute("pinned"); | |
| r && !c.isInFlyout && setTimeout(function() { | |
| c.comment && c.comment.setVisible && c.comment.setVisible("true" == r) | |
| }, 1); | |
| g = parseInt(h.getAttribute("w"), 10); | |
| h = parseInt(h.getAttribute("h"), 10); | |
| !isNaN(g) && !isNaN(h) && c.comment && c.comment.setVisible && c.comment.setBubbleSize(g, h); | |
| break; | |
| case "data": | |
| c.data = h.textContent; | |
| break; | |
| case "title": | |
| case "field": | |
| g = so(c, n); | |
| if (!g) { | |
| console.warn("Ignoring non-existent field " + n + " in block " + e); | |
| break | |
| } | |
| g.Blockly_Field_prototype$setValue(h.textContent); | |
| break; | |
| case "value": | |
| case "statement": | |
| h = to(c, n); | |
| if (!h) { | |
| console.warn("Ignoring non-existent input " + n + " in block " + e); | |
| break | |
| } | |
| m && (h.connection.shadowDom_ = m); | |
| g && (g = Fr(g, b), g.outputConnection ? h.connection.connect(g.outputConnection) : g.previousConnection && h.connection.connect(g.previousConnection)); | |
| break; | |
| case "next": | |
| m && c.nextConnection && (c.nextConnection.shadowDom_ = | |
| m); | |
| g && (g = Fr(g, b), c.nextConnection.connect(g.previousConnection)); | |
| break; | |
| default: | |
| console.warn("Ignoring unknown tag: " + h.nodeName) | |
| } | |
| }(e = a.getAttribute("inline")) && c.setInputsInline("true" == e); | |
| (e = a.getAttribute("disabled")) && c.setDisabled("true" == e); | |
| if (e = a.getAttribute("deletable")) c.deletable_ = "true" == e; | |
| (e = a.getAttribute("movable")) && c.setMovable("true" == e); | |
| (e = a.getAttribute("editable")) && c.setEditable("true" == e); | |
| (e = a.getAttribute("collapsed")) && c.setCollapsed("true" == e); | |
| if ("shadow" == a.nodeName.toLowerCase()) { | |
| e = | |
| c.getChildren(); | |
| for (f = 0; e[f]; f++); | |
| c.setShadow(!0) | |
| } | |
| return c | |
| }; | |
| q.Blockly || (q.Blockly = {}); | |
| q.Blockly.Xml || (q.Blockly.Xml = {}); | |
| q.Blockly.Xml.domToText = function(a) { | |
| return (new XMLSerializer).serializeToString(a) | |
| }; | |
| q.Blockly.Xml.domToWorkspace = Aq; | |
| q.Blockly.Xml.textToDom = Fp; | |
| q.Blockly.Xml.workspaceToDom = function(a, b) { | |
| for (var c = B("xml"), e = $h(a, !0), f = 0, g; g = e[f]; f++) c.appendChild(zq(g, b)); | |
| return c | |
| }; | |
| var Gr = function(a) { | |
| this.workspace_ = a | |
| }; | |
| d = Gr.prototype; | |
| d.svgGroup_ = null; | |
| d.Blockly_ZoomControls_prototype$left_ = 0; | |
| d.Blockly_ZoomControls_prototype$top_ = 0; | |
| d.createDom = function() { | |
| var a = this.workspace_; | |
| this.svgGroup_ = O("g", { | |
| "class": "blocklyZoom" | |
| }, null); | |
| var b = O("image", { | |
| width: 36, | |
| height: 36, | |
| y: 0 | |
| }, this.svgGroup_); | |
| b.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a.options.pathToMedia + "zoom-in.svg"); | |
| var c = O("image", { | |
| width: 36, | |
| height: 36, | |
| y: 44 | |
| }, this.svgGroup_); | |
| c.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a.options.pathToMedia + "zoom-out.svg"); | |
| var e = O("image", { | |
| width: 36, | |
| height: 36, | |
| y: 88 | |
| }, this.svgGroup_); | |
| e.setAttributeNS("http://www.w3.org/1999/xlink", | |
| "xlink:href", a.options.pathToMedia + "zoom-reset.svg"); | |
| N(b, "mousedown", null, function(b) { | |
| a.markFocused(); | |
| Hr(a, 1); | |
| J = null; | |
| b.stopPropagation(); | |
| b.preventDefault() | |
| }); | |
| N(c, "mousedown", null, function(b) { | |
| a.markFocused(); | |
| Hr(a, -1); | |
| J = null; | |
| b.stopPropagation(); | |
| b.preventDefault() | |
| }); | |
| N(e, "mousedown", null, function(b) { | |
| a.markFocused(); | |
| Ir(a, a.options.zoomOptions.startScale); | |
| if (a.scrollbar) { | |
| L(!0); | |
| ei(); | |
| Di(!1); | |
| var c = a.getMetrics(), | |
| e = (c.contentWidth - c.viewWidth) / 2; | |
| a.flyout_ && (e -= a.flyout_.width / 2); | |
| a.scrollbar.set(e, (c.contentHeight - | |
| c.viewHeight) / 2) | |
| } | |
| J = null; | |
| b.stopPropagation(); | |
| b.preventDefault() | |
| }); | |
| return this.svgGroup_ | |
| }; | |
| d.init = function(a) { | |
| this.bottom_ = 12 + a; | |
| return this.bottom_ + 124 | |
| }; | |
| d.dispose = function() { | |
| this.svgGroup_ && (C(this.svgGroup_), this.svgGroup_ = null); | |
| this.workspace_ = null | |
| }; | |
| d.position = function() { | |
| var a = this.workspace_.getMetrics(); | |
| a && (this.workspace_.RTL ? (this.Blockly_ZoomControls_prototype$left_ = 12 + Fi, 2 == a.toolboxPosition && (this.Blockly_ZoomControls_prototype$left_ += a.flyoutWidth, this.workspace_.toolbox_ && (this.Blockly_ZoomControls_prototype$left_ += a.absoluteLeft))) : (this.Blockly_ZoomControls_prototype$left_ = a.viewWidth + a.absoluteLeft - 36 - 12 - Fi, 3 == a.toolboxPosition && (this.Blockly_ZoomControls_prototype$left_ -= a.flyoutWidth)), this.Blockly_ZoomControls_prototype$top_ = a.viewHeight + | |
| a.absoluteTop - 124 - this.bottom_, 1 == a.toolboxPosition && (this.Blockly_ZoomControls_prototype$top_ -= a.flyoutHeight), this.svgGroup_.setAttribute("transform", "translate(" + this.Blockly_ZoomControls_prototype$left_ + "," + this.Blockly_ZoomControls_prototype$top_ + ")")) | |
| }; | |
| /* | |
| Visual Blocks Language | |
| Copyright 2012 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| M.en = {}; | |
| M.LOGIC_HUE = "210"; | |
| M.LOOPS_HUE = "120"; | |
| M.MATH_HUE = "230"; | |
| M.TEXTS_HUE = "160"; | |
| M.LISTS_HUE = "260"; | |
| M.COLOUR_HUE = "20"; | |
| M.VARIABLES_HUE = "330"; | |
| M.PROCEDURES_HUE = "290"; | |
| M.VARIABLES_DEFAULT_NAME = "item"; | |
| M.TODAY = "Today"; | |
| M.DUPLICATE_BLOCK = "Duplicate"; | |
| M.ADD_COMMENT = "Add Comment"; | |
| M.REMOVE_COMMENT = "Remove Comment"; | |
| M.EXTERNAL_INPUTS = "External Inputs"; | |
| M.INLINE_INPUTS = "Inline Inputs"; | |
| M.DELETE_BLOCK = "Delete Block"; | |
| M.DELETE_X_BLOCKS = "Delete %1 Blocks"; | |
| M.DELETE_ALL_BLOCKS = "Delete all %1 blocks?"; | |
| M.CLEAN_UP = "Clean up Blocks"; | |
| M.COLLAPSE_BLOCK = "Collapse Block"; | |
| M.COLLAPSE_ALL = "Collapse Blocks"; | |
| M.EXPAND_BLOCK = "Expand Block"; | |
| M.EXPAND_ALL = "Expand Blocks"; | |
| M.DISABLE_BLOCK = "Disable Block"; | |
| M.ENABLE_BLOCK = "Enable Block"; | |
| M.HELP = "Help"; | |
| M.UNDO = "Undo"; | |
| M.REDO = "Redo"; | |
| M.CHANGE_VALUE_TITLE = "Change value:"; | |
| M.RENAME_VARIABLE = "Rename variable..."; | |
| M.RENAME_VARIABLE_TITLE = 'Rename all "%1" variables to:'; | |
| M.NEW_VARIABLE = "Create variable..."; | |
| M.NEW_VARIABLE_TITLE = "New variable name:"; | |
| M.VARIABLE_ALREADY_EXISTS = 'A variable named "%1" already exists.'; | |
| M.DELETE_VARIABLE_CONFIRMATION = 'Delete %1 uses of the "%2" variable?'; | |
| M.CANNOT_DELETE_VARIABLE_PROCEDURE = 'Can\'t delete the variable "%1" because it is part of the definition of the procedure "%2"'; | |
| M.DELETE_VARIABLE = 'Delete the "%1" variable'; | |
| M.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color"; | |
| M.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette."; | |
| M.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; | |
| M.COLOUR_RANDOM_TITLE = "random colour"; | |
| M.COLOUR_RANDOM_TOOLTIP = "Choose a colour at random."; | |
| M.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; | |
| M.COLOUR_RGB_TITLE = "colour with"; | |
| M.COLOUR_RGB_RED = "red"; | |
| M.COLOUR_RGB_GREEN = "green"; | |
| M.COLOUR_RGB_BLUE = "blue"; | |
| M.COLOUR_RGB_TOOLTIP = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; | |
| M.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; | |
| M.COLOUR_BLEND_TITLE = "blend"; | |
| M.COLOUR_BLEND_COLOUR1 = "colour 1"; | |
| M.COLOUR_BLEND_COLOUR2 = "colour 2"; | |
| M.COLOUR_BLEND_RATIO = "ratio"; | |
| M.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0)."; | |
| M.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; | |
| M.CONTROLS_REPEAT_TITLE = "repeat %1 times"; | |
| M.CONTROLS_REPEAT_INPUT_DO = "do"; | |
| M.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times."; | |
| M.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat"; | |
| M.CONTROLS_WHILEUNTIL_INPUT_DO = M.CONTROLS_REPEAT_INPUT_DO; | |
| M.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "repeat while"; | |
| M.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "repeat until"; | |
| M.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements."; | |
| M.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements."; | |
| M.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; | |
| M.CONTROLS_FOR_TOOLTIP = 'Have the variable "%1" take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.'; | |
| M.CONTROLS_FOR_TITLE = "count with %1 from %2 to %3 by %4"; | |
| M.CONTROLS_FOR_INPUT_DO = M.CONTROLS_REPEAT_INPUT_DO; | |
| M.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each"; | |
| M.CONTROLS_FOREACH_TITLE = "for each item %1 in list %2"; | |
| M.CONTROLS_FOREACH_INPUT_DO = M.CONTROLS_REPEAT_INPUT_DO; | |
| M.CONTROLS_FOREACH_TOOLTIP = 'For each item in a list, set the variable "%1" to the item, and then do some statements.'; | |
| M.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; | |
| M.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "break out of loop"; | |
| M.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "continue with next iteration of loop"; | |
| M.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop."; | |
| M.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the rest of this loop, and continue with the next iteration."; | |
| M.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop."; | |
| M.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; | |
| M.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements."; | |
| M.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; | |
| M.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; | |
| M.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; | |
| M.CONTROLS_IF_MSG_IF = "if"; | |
| M.CONTROLS_IF_MSG_ELSEIF = "else if"; | |
| M.CONTROLS_IF_MSG_ELSE = "else"; | |
| M.CONTROLS_IF_MSG_THEN = M.CONTROLS_REPEAT_INPUT_DO; | |
| M.CONTROLS_IF_IF_TITLE_IF = M.CONTROLS_IF_MSG_IF; | |
| M.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or reorder sections to reconfigure this if block."; | |
| M.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = M.CONTROLS_IF_MSG_ELSEIF; | |
| M.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block."; | |
| M.CONTROLS_IF_ELSE_TITLE_ELSE = M.CONTROLS_IF_MSG_ELSE; | |
| M.CONTROLS_IF_ELSE_TOOLTIP = "Add a final, catch-all condition to the if block."; | |
| M.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; | |
| M.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other."; | |
| M.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other."; | |
| M.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input."; | |
| M.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input."; | |
| M.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input."; | |
| M.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input."; | |
| M.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations"; | |
| M.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true."; | |
| M.LOGIC_OPERATION_AND = "and"; | |
| M.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true."; | |
| M.LOGIC_OPERATION_OR = "or"; | |
| M.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not"; | |
| M.LOGIC_NEGATE_TITLE = "not %1"; | |
| M.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true."; | |
| M.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; | |
| M.LOGIC_BOOLEAN_TRUE = "true"; | |
| M.LOGIC_BOOLEAN_FALSE = "false"; | |
| M.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false."; | |
| M.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; | |
| M.LOGIC_NULL = "null"; | |
| M.LOGIC_NULL_TOOLTIP = "Returns null."; | |
| M.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:"; | |
| M.LOGIC_TERNARY_CONDITION = "test"; | |
| M.LOGIC_TERNARY_IF_TRUE = "if true"; | |
| M.LOGIC_TERNARY_IF_FALSE = "if false"; | |
| M.LOGIC_TERNARY_TOOLTIP = 'Check the condition in "test". If the condition is true, returns the "if true" value; otherwise returns the "if false" value.'; | |
| M.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number"; | |
| M.MATH_NUMBER_TOOLTIP = "A number."; | |
| M.MATH_ADDITION_SYMBOL = "+"; | |
| M.MATH_SUBTRACTION_SYMBOL = "-"; | |
| M.MATH_DIVISION_SYMBOL = "\u00f7"; | |
| M.MATH_MULTIPLICATION_SYMBOL = "\u00d7"; | |
| M.MATH_POWER_SYMBOL = "^"; | |
| M.MATH_TRIG_SIN = "sin"; | |
| M.MATH_TRIG_COS = "cos"; | |
| M.MATH_TRIG_TAN = "tan"; | |
| M.MATH_TRIG_ASIN = "asin"; | |
| M.MATH_TRIG_ACOS = "acos"; | |
| M.MATH_TRIG_ATAN = "atan"; | |
| M.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic"; | |
| M.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers."; | |
| M.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers."; | |
| M.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers."; | |
| M.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers."; | |
| M.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number."; | |
| M.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root"; | |
| M.MATH_SINGLE_OP_ROOT = "square root"; | |
| M.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number."; | |
| M.MATH_SINGLE_OP_ABSOLUTE = "absolute"; | |
| M.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number."; | |
| M.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number."; | |
| M.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number."; | |
| M.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number."; | |
| M.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number."; | |
| M.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number."; | |
| M.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions"; | |
| M.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian)."; | |
| M.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian)."; | |
| M.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian)."; | |
| M.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number."; | |
| M.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number."; | |
| M.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number."; | |
| M.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; | |
| M.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: \u03c0 (3.141\u2026), e (2.718\u2026), \u03c6 (1.618\u2026), sqrt(2) (1.414\u2026), sqrt(\u00bd) (0.707\u2026), or \u221e (infinity)."; | |
| M.MATH_IS_EVEN = "is even"; | |
| M.MATH_IS_ODD = "is odd"; | |
| M.MATH_IS_PRIME = "is prime"; | |
| M.MATH_IS_WHOLE = "is whole"; | |
| M.MATH_IS_POSITIVE = "is positive"; | |
| M.MATH_IS_NEGATIVE = "is negative"; | |
| M.MATH_IS_DIVISIBLE_BY = "is divisible by"; | |
| M.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; | |
| M.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; | |
| M.MATH_CHANGE_TITLE = "change %1 by %2"; | |
| M.MATH_CHANGE_TITLE_ITEM = M.VARIABLES_DEFAULT_NAME; | |
| M.MATH_CHANGE_TOOLTIP = 'Add a number to variable "%1".'; | |
| M.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; | |
| M.MATH_ROUND_TOOLTIP = "Round a number up or down."; | |
| M.MATH_ROUND_OPERATOR_ROUND = "round"; | |
| M.MATH_ROUND_OPERATOR_ROUNDUP = "round up"; | |
| M.MATH_ROUND_OPERATOR_ROUNDDOWN = "round down"; | |
| M.MATH_ONLIST_HELPURL = ""; | |
| M.MATH_ONLIST_OPERATOR_SUM = "sum of list"; | |
| M.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list."; | |
| M.MATH_ONLIST_OPERATOR_MIN = "min of list"; | |
| M.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list."; | |
| M.MATH_ONLIST_OPERATOR_MAX = "max of list"; | |
| M.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list."; | |
| M.MATH_ONLIST_OPERATOR_AVERAGE = "average of list"; | |
| M.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list."; | |
| M.MATH_ONLIST_OPERATOR_MEDIAN = "median of list"; | |
| M.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list."; | |
| M.MATH_ONLIST_OPERATOR_MODE = "modes of list"; | |
| M.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list."; | |
| M.MATH_ONLIST_OPERATOR_STD_DEV = "standard deviation of list"; | |
| M.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list."; | |
| M.MATH_ONLIST_OPERATOR_RANDOM = "random item of list"; | |
| M.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list."; | |
| M.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; | |
| M.MATH_MODULO_TITLE = "remainder of %1 \u00f7 %2"; | |
| M.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers."; | |
| M.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; | |
| M.MATH_CONSTRAIN_TITLE = "constrain %1 low %2 high %3"; | |
| M.MATH_CONSTRAIN_TOOLTIP = "Constrain a number to be between the specified limits (inclusive)."; | |
| M.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; | |
| M.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2"; | |
| M.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive."; | |
| M.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; | |
| M.MATH_RANDOM_FLOAT_TITLE_RANDOM = "random fraction"; | |
| M.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; | |
| M.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; | |
| M.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text."; | |
| M.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation"; | |
| M.TEXT_JOIN_TITLE_CREATEWITH = "create text with"; | |
| M.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items."; | |
| M.TEXT_CREATE_JOIN_TITLE_JOIN = "join"; | |
| M.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block."; | |
| M.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = M.VARIABLES_DEFAULT_NAME; | |
| M.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text."; | |
| M.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; | |
| M.TEXT_APPEND_TO = "to"; | |
| M.TEXT_APPEND_APPENDTEXT = "append text"; | |
| M.TEXT_APPEND_VARIABLE = M.VARIABLES_DEFAULT_NAME; | |
| M.TEXT_APPEND_TOOLTIP = 'Append some text to variable "%1".'; | |
| M.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; | |
| M.TEXT_LENGTH_TITLE = "length of %1"; | |
| M.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text."; | |
| M.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; | |
| M.TEXT_ISEMPTY_TITLE = "%1 is empty"; | |
| M.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty."; | |
| M.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text"; | |
| M.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; | |
| M.TEXT_INDEXOF_INPUT_INTEXT = "in text"; | |
| M.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text"; | |
| M.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text"; | |
| M.TEXT_INDEXOF_TAIL = ""; | |
| M.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text"; | |
| M.TEXT_CHARAT_INPUT_INTEXT = "in text"; | |
| M.TEXT_CHARAT_FROM_START = "get letter #"; | |
| M.TEXT_CHARAT_FROM_END = "get letter # from end"; | |
| M.TEXT_CHARAT_FIRST = "get first letter"; | |
| M.TEXT_CHARAT_LAST = "get last letter"; | |
| M.TEXT_CHARAT_RANDOM = "get random letter"; | |
| M.TEXT_CHARAT_TAIL = ""; | |
| M.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position."; | |
| M.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text."; | |
| M.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; | |
| M.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "in text"; | |
| M.TEXT_GET_SUBSTRING_START_FROM_START = "get substring from letter #"; | |
| M.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end"; | |
| M.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter"; | |
| M.TEXT_GET_SUBSTRING_END_FROM_START = "to letter #"; | |
| M.TEXT_GET_SUBSTRING_END_FROM_END = "to letter # from end"; | |
| M.TEXT_GET_SUBSTRING_END_LAST = "to last letter"; | |
| M.TEXT_GET_SUBSTRING_TAIL = ""; | |
| M.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; | |
| M.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case."; | |
| M.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "to UPPER CASE"; | |
| M.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "to lower case"; | |
| M.TEXT_CHANGECASE_OPERATOR_TITLECASE = "to Title Case"; | |
| M.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; | |
| M.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends."; | |
| M.TEXT_TRIM_OPERATOR_BOTH = "trim spaces from both sides of"; | |
| M.TEXT_TRIM_OPERATOR_LEFT = "trim spaces from left side of"; | |
| M.TEXT_TRIM_OPERATOR_RIGHT = "trim spaces from right side of"; | |
| M.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text"; | |
| M.TEXT_PRINT_TITLE = "print %1"; | |
| M.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value."; | |
| M.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; | |
| M.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message"; | |
| M.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message"; | |
| M.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number."; | |
| M.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text."; | |
| M.TEXT_COUNT_MESSAGE0 = "count %1 in %2"; | |
| M.TEXT_COUNT_HELPURL = "https://github.com/google/blockly/wiki/Text#counting-substrings"; | |
| M.TEXT_COUNT_TOOLTIP = "Count how many times some text occurs within some other text."; | |
| M.TEXT_REPLACE_MESSAGE0 = "replace %1 with %2 in %3"; | |
| M.TEXT_REPLACE_HELPURL = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; | |
| M.TEXT_REPLACE_TOOLTIP = "Replace all occurances of some text within some other text."; | |
| M.TEXT_REVERSE_MESSAGE0 = "reverse %1"; | |
| M.TEXT_REVERSE_HELPURL = "https://github.com/google/blockly/wiki/Text#reversing-text"; | |
| M.TEXT_REVERSE_TOOLTIP = "Reverses the order of the characters in the text."; | |
| M.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; | |
| M.LISTS_CREATE_EMPTY_TITLE = "create empty list"; | |
| M.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records"; | |
| M.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; | |
| M.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items."; | |
| M.LISTS_CREATE_WITH_INPUT_WITH = "create list with"; | |
| M.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "list"; | |
| M.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block."; | |
| M.LISTS_CREATE_WITH_ITEM_TITLE = M.VARIABLES_DEFAULT_NAME; | |
| M.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list."; | |
| M.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; | |
| M.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times."; | |
| M.LISTS_REPEAT_TITLE = "create list with item %1 repeated %2 times"; | |
| M.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of"; | |
| M.LISTS_LENGTH_TITLE = "length of %1"; | |
| M.LISTS_LENGTH_TOOLTIP = "Returns the length of a list."; | |
| M.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; | |
| M.LISTS_ISEMPTY_TITLE = "%1 is empty"; | |
| M.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty."; | |
| M.LISTS_INLIST = "in list"; | |
| M.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; | |
| M.LISTS_INDEX_OF_INPUT_IN_LIST = M.LISTS_INLIST; | |
| M.LISTS_INDEX_OF_FIRST = "find first occurrence of item"; | |
| M.LISTS_INDEX_OF_LAST = "find last occurrence of item"; | |
| M.LISTS_INDEX_OF_TOOLTIP = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; | |
| M.LISTS_GET_INDEX_HELPURL = M.LISTS_INDEX_OF_HELPURL; | |
| M.LISTS_GET_INDEX_GET = "get"; | |
| M.LISTS_GET_INDEX_GET_REMOVE = "get and remove"; | |
| M.LISTS_GET_INDEX_REMOVE = "remove"; | |
| M.LISTS_GET_INDEX_FROM_START = "#"; | |
| M.LISTS_GET_INDEX_FROM_END = "# from end"; | |
| M.LISTS_GET_INDEX_FIRST = "first"; | |
| M.LISTS_GET_INDEX_LAST = "last"; | |
| M.LISTS_GET_INDEX_RANDOM = "random"; | |
| M.LISTS_GET_INDEX_TAIL = ""; | |
| M.LISTS_GET_INDEX_INPUT_IN_LIST = M.LISTS_INLIST; | |
| M.LISTS_INDEX_FROM_START_TOOLTIP = "%1 is the first item."; | |
| M.LISTS_INDEX_FROM_END_TOOLTIP = "%1 is the last item."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Returns the item at the specified position in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Removes and returns the item at the specified position in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Removes the item at the specified position in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list."; | |
| M.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list."; | |
| M.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set"; | |
| M.LISTS_SET_INDEX_INPUT_IN_LIST = M.LISTS_INLIST; | |
| M.LISTS_SET_INDEX_SET = "set"; | |
| M.LISTS_SET_INDEX_INSERT = "insert at"; | |
| M.LISTS_SET_INDEX_INPUT_TO = "as"; | |
| M.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Sets the item at the specified position in a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserts the item at the specified position in a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list."; | |
| M.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list."; | |
| M.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; | |
| M.LISTS_GET_SUBLIST_INPUT_IN_LIST = M.LISTS_INLIST; | |
| M.LISTS_GET_SUBLIST_START_FROM_START = "get sub-list from #"; | |
| M.LISTS_GET_SUBLIST_START_FROM_END = "get sub-list from # from end"; | |
| M.LISTS_GET_SUBLIST_START_FIRST = "get sub-list from first"; | |
| M.LISTS_GET_SUBLIST_END_FROM_START = "to #"; | |
| M.LISTS_GET_SUBLIST_END_FROM_END = "to # from end"; | |
| M.LISTS_GET_SUBLIST_END_LAST = "to last"; | |
| M.LISTS_GET_SUBLIST_TAIL = ""; | |
| M.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list."; | |
| M.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; | |
| M.LISTS_SORT_TITLE = "sort %1 %2 %3"; | |
| M.LISTS_SORT_TOOLTIP = "Sort a copy of a list."; | |
| M.LISTS_SORT_ORDER_ASCENDING = "ascending"; | |
| M.LISTS_SORT_ORDER_DESCENDING = "descending"; | |
| M.LISTS_SORT_TYPE_NUMERIC = "numeric"; | |
| M.LISTS_SORT_TYPE_TEXT = "alphabetic"; | |
| M.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignore case"; | |
| M.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; | |
| M.LISTS_SPLIT_LIST_FROM_TEXT = "make list from text"; | |
| M.LISTS_SPLIT_TEXT_FROM_LIST = "make text from list"; | |
| M.LISTS_SPLIT_WITH_DELIMITER = "with delimiter"; | |
| M.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter."; | |
| M.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter."; | |
| M.LISTS_REVERSE_HELPURL = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; | |
| M.LISTS_REVERSE_MESSAGE0 = "reverse %1"; | |
| M.LISTS_REVERSE_TOOLTIP = "Reverse a copy of a list."; | |
| M.ORDINAL_NUMBER_SUFFIX = ""; | |
| M.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; | |
| M.VARIABLES_GET_TOOLTIP = "Returns the value of this variable."; | |
| M.VARIABLES_GET_CREATE_SET = 'Create "set %1"'; | |
| M.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set"; | |
| M.VARIABLES_SET = "set %1 to %2"; | |
| M.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input."; | |
| M.VARIABLES_SET_CREATE_GET = 'Create "get %1"'; | |
| M.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; | |
| M.PROCEDURES_DEFNORETURN_TITLE = "to"; | |
| M.PROCEDURES_DEFNORETURN_PROCEDURE = "do something"; | |
| M.PROCEDURES_BEFORE_PARAMS = "with:"; | |
| M.PROCEDURES_CALL_BEFORE_PARAMS = "with:"; | |
| M.PROCEDURES_DEFNORETURN_DO = ""; | |
| M.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output."; | |
| M.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function..."; | |
| M.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; | |
| M.PROCEDURES_DEFRETURN_TITLE = M.PROCEDURES_DEFNORETURN_TITLE; | |
| M.PROCEDURES_DEFRETURN_PROCEDURE = M.PROCEDURES_DEFNORETURN_PROCEDURE; | |
| M.PROCEDURES_DEFRETURN_DO = M.PROCEDURES_DEFNORETURN_DO; | |
| M.PROCEDURES_DEFRETURN_COMMENT = M.PROCEDURES_DEFNORETURN_COMMENT; | |
| M.PROCEDURES_DEFRETURN_RETURN = "return"; | |
| M.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output."; | |
| M.PROCEDURES_ALLOW_STATEMENTS = "allow statements"; | |
| M.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters."; | |
| M.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; | |
| M.PROCEDURES_CALLNORETURN_TOOLTIP = 'Run the user-defined function "%1".'; | |
| M.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; | |
| M.PROCEDURES_CALLRETURN_TOOLTIP = 'Run the user-defined function "%1" and use its output.'; | |
| M.PROCEDURES_MUTATORCONTAINER_TITLE = "inputs"; | |
| M.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function."; | |
| M.PROCEDURES_MUTATORARG_TITLE = "input name:"; | |
| M.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function."; | |
| M.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition"; | |
| M.PROCEDURES_CREATE_DO = 'Create "%1"'; | |
| M.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value."; | |
| M.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause"; | |
| M.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition."; | |
| /* | |
| Visual Blocks Editor | |
| Copyright 2014 Google Inc. | |
| https://developers.google.com/blockly/ | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| var V = function(a, b, c) { | |
| V.superClass_.constructor.call(this, a); | |
| this.getMetrics = a.getMetrics || Jr; | |
| this.setMetrics = a.setMetrics || Kr; | |
| a = []; | |
| a[1] = new Lq; | |
| a[2] = new Lq; | |
| a[3] = new Lq; | |
| a[4] = new Lq; | |
| this.connectionDBList = a; | |
| b && (this.blockDragSurface = b); | |
| c && (this.workspaceDragSurface_ = c); | |
| this.useWorkspaceDragSurface_ = !(!this.workspaceDragSurface_ || !Ak()); | |
| b && (this.blockDragSurface = b); | |
| c && (this.workspaceDragSurface_ = c); | |
| this.useWorkspaceDragSurface_ = !(!this.workspaceDragSurface_ || !Ak()); | |
| this.SOUNDS_ = Object.create(null); | |
| this.highlightedBlocks_ = []; | |
| this.toolboxCategoryCallbacks_.VARIABLE = Dn; | |
| this.toolboxCategoryCallbacks_.PROCEDURE = dr | |
| }; | |
| w(V, Wh); | |
| d = V.prototype; | |
| d.resizeHandlerWrapper_ = null; | |
| d.rendered = !0; | |
| d.isFlyout = !1; | |
| d.isMutator = !1; | |
| d.dragMode_ = 0; | |
| d.resizesEnabled_ = !0; | |
| d.scrollX = 0; | |
| d.scrollY = 0; | |
| d.startScrollX = 0; | |
| d.startScrollY = 0; | |
| d.dragDeltaXY_ = new A(0, 0); | |
| d.scale = 1; | |
| d.trashcan = null; | |
| d.scrollbar = null; | |
| d.blockDragSurface = null; | |
| d.workspaceDragSurface_ = null; | |
| d.useWorkspaceDragSurface_ = !1; | |
| d.isDragSurfaceActive_ = !1; | |
| d.lastRecordedPageScroll_ = new A(0, 0); | |
| d.flyoutButtonCallbacks_ = {}; | |
| d.toolboxCategoryCallbacks_ = {}; | |
| d.inverseScreenCTM_ = null; | |
| var jq = function(a) { | |
| var b = Sj(a).getScreenCTM(); | |
| b && (a.inverseScreenCTM_ = b.inverse()) | |
| }, | |
| Lr = 0; | |
| V.prototype.createDom = function(a) { | |
| this.svgGroup_ = O("g", { | |
| "class": "blocklyWorkspace" | |
| }, null); | |
| if (a) { | |
| var b = { | |
| height: "84px", | |
| width: "100%", | |
| rx: "42px", | |
| "class": a | |
| }, | |
| c = O("clipPath", { | |
| id: "svgclip_" + Lr++ | |
| }, this.svgGroup_); | |
| O("rect", b, c); | |
| this.svgGroup_.setAttribute("clip-path", "url(#" + c.id + ")"); | |
| this.svgGroup_.setAttribute("filter", "url(#" + this.options.insetShadowFilterId + ")"); | |
| this.svgBackground_ = O("rect", b, this.svgGroup_); | |
| "blocklyMainBackground" == a && (this.svgBackground_.style.fill = I.workspace) | |
| } | |
| this.svgBlockCanvas_ = O("g", { | |
| "class": "blocklyBlockCanvas" | |
| }, this.svgGroup_); | |
| this.svgBubbleCanvas_ = O("g", { | |
| "class": "blocklyBubbleCanvas" | |
| }, this.svgGroup_); | |
| a = Fi; | |
| this.options.hasTrashcan && (a = Mr(this, a)); | |
| this.options.zoomOptions && this.options.zoomOptions.controls && (a = Nr(this, a)); | |
| if (!this.isFlyout) { | |
| N(this.svgGroup_, "mousedown", this, this.onMouseDown_); | |
| var e = this; | |
| T(this.svgGroup_, "touchstart", null, function(a) { | |
| Lh(a, e) | |
| }); | |
| this.options.zoomOptions && this.options.zoomOptions.wheel && N(this.svgGroup_, "wheel", this, this.onMouseWheel_) | |
| } | |
| this.options.hasCategories && | |
| (this.toolbox_ = new ur(this)); | |
| Or(this); | |
| Pr(this); | |
| kq(this); | |
| return this.svgGroup_ | |
| }; | |
| V.prototype.dispose = function() { | |
| this.rendered = !1; | |
| V.superClass_.dispose.call(this); | |
| this.svgGroup_ && (C(this.svgGroup_), this.svgGroup_ = null); | |
| this.svgBubbleCanvas_ = this.svgBlockCanvas_ = null; | |
| this.toolbox_ && (this.toolbox_.dispose(), this.toolbox_ = null); | |
| this.flyout_ && (this.flyout_.dispose(), this.flyout_ = null); | |
| this.trashcan && (this.trashcan.dispose(), this.trashcan = null); | |
| this.scrollbar && (this.scrollbar.dispose(), this.scrollbar = null); | |
| this.zoomControls_ && (this.zoomControls_.dispose(), this.zoomControls_ = null); | |
| this.toolboxCategoryCallbacks_ && | |
| (this.toolboxCategoryCallbacks_ = null); | |
| this.flyoutButtonCallbacks_ && (this.flyoutButtonCallbacks_ = null); | |
| this.options.parentWorkspace || C(Sj(this).parentNode); | |
| this.resizeHandlerWrapper_ && (Oh(this.resizeHandlerWrapper_), this.resizeHandlerWrapper_ = null) | |
| }; | |
| V.prototype.newBlock = function(a, b) { | |
| return new X(this, a, b) | |
| }; | |
| var Mr = function(a, b) { | |
| a.trashcan = new Ar(a); | |
| var c = a.trashcan.createDom(); | |
| a.svgGroup_.insertBefore(c, a.svgBlockCanvas_); | |
| return a.trashcan.init(b) | |
| }, | |
| Nr = function(a, b) { | |
| a.zoomControls_ = new Gr(a); | |
| var c = a.zoomControls_.createDom(); | |
| a.svgGroup_.appendChild(c); | |
| return a.zoomControls_.init(b) | |
| }, | |
| Qr = function(a) { | |
| var b = { | |
| disabledPatternId: a.options.disabledPatternId, | |
| parentWorkspace: a, | |
| RTL: a.RTL, | |
| oneBasedIndex: a.options.oneBasedIndex, | |
| horizontalLayout: a.horizontalLayout, | |
| toolboxPosition: a.options.toolboxPosition | |
| }; | |
| a.horizontalLayout ? | |
| a.flyout_ = new rr(b) : a.flyout_ = new sr(b); | |
| a.flyout_.autoClose = !1; | |
| return a.flyout_.createDom("svg") | |
| }; | |
| V.prototype.getFlyout = function() { | |
| return this.flyout_ ? this.flyout_ : this.toolbox_ ? this.toolbox_.flyout_ : null | |
| }; | |
| var eq = function(a) { | |
| a.resizesEnabled_ && a.rendered && (a.scrollbar && a.scrollbar.resize(), jq(a)) | |
| }; | |
| V.prototype.resize = function() { | |
| this.toolbox_ && this.toolbox_.position(); | |
| this.flyout_ && this.flyout_.position(); | |
| this.trashcan && this.trashcan.position(); | |
| this.zoomControls_ && this.zoomControls_.position(); | |
| this.scrollbar && this.scrollbar.resize(); | |
| jq(this); | |
| kq(this) | |
| }; | |
| var Sj = function(a) { | |
| if (a.cachedParentSvg_) return a.cachedParentSvg_; | |
| for (var b = a.svgGroup_; b;) { | |
| if ("svg" == b.tagName) return a.cachedParentSvg_ = b; | |
| b = b.parentNode | |
| } | |
| }; | |
| V.prototype.translate = function(a, b) { | |
| if (this.useWorkspaceDragSurface_ && this.isDragSurfaceActive_) this.workspaceDragSurface_.translateSurface(a, b); | |
| else { | |
| var c = "translate(" + a + "," + b + ") scale(" + this.scale + ")"; | |
| this.svgBlockCanvas_.setAttribute("transform", c); | |
| this.svgBubbleCanvas_.setAttribute("transform", c) | |
| } | |
| if (this.blockDragSurface) { | |
| c = this.blockDragSurface; | |
| var e = this.scale; | |
| c.Blockly_BlockDragSurfaceSvg_prototype$scale_ = e; | |
| var f = Number(a.toFixed(0)); | |
| var g = Number(b.toFixed(0)); | |
| c.Blockly_BlockDragSurfaceSvg_prototype$dragGroup_.setAttribute("transform", | |
| "translate(" + f + "," + g + ") scale(" + e + ")") | |
| } | |
| }; | |
| var Mh = function(a) { | |
| if (a.useWorkspaceDragSurface_) { | |
| a.isDragSurfaceActive_ = !1; | |
| var b = a.workspaceDragSurface_.getSurfaceTranslation(); | |
| a.workspaceDragSurface_.clearAndHide(a.svgGroup_); | |
| b = "translate(" + b.x + "," + b.y + ") scale(" + a.scale + ")"; | |
| a.svgBlockCanvas_.setAttribute("transform", b); | |
| a.svgBubbleCanvas_.setAttribute("transform", b) | |
| } | |
| }, | |
| pr = function(a) { | |
| if (a.useWorkspaceDragSurface_) { | |
| a.isDragSurfaceActive_ = !0; | |
| var b = a.svgBlockCanvas_.previousSibling, | |
| c = Sj(a).getAttribute("width"), | |
| e = Sj(a).getAttribute("height"), | |
| f = nk(a.svgBlockCanvas_), | |
| g = a.workspaceDragSurface_, | |
| h = a.svgBlockCanvas_, | |
| m = a.svgBubbleCanvas_, | |
| n = a.scale; | |
| g.previousSibling_ = b; | |
| h.setAttribute("transform", "translate(0, 0) scale(" + n + ")"); | |
| m.setAttribute("transform", "translate(0, 0) scale(" + n + ")"); | |
| g.Blockly_WorkspaceDragSurfaceSvg$SVG_.setAttribute("width", c); | |
| g.Blockly_WorkspaceDragSurfaceSvg$SVG_.setAttribute("height", e); | |
| g.Blockly_WorkspaceDragSurfaceSvg$SVG_.appendChild(h); | |
| g.Blockly_WorkspaceDragSurfaceSvg$SVG_.appendChild(m); | |
| g.Blockly_WorkspaceDragSurfaceSvg$SVG_.style.display = | |
| "block"; | |
| a.workspaceDragSurface_.translateSurface(f.x, f.y) | |
| } | |
| }; | |
| V.prototype.getWidth = function() { | |
| var a = this.getMetrics(); | |
| return a ? a.viewWidth / this.scale : 0 | |
| }; | |
| V.prototype.setVisible = function(a) { | |
| this.scrollbar && this.scrollbar.setContainerVisible(a); | |
| this.getFlyout() && this.getFlyout().setContainerVisible(a); | |
| Sj(this).style.display = a ? "block" : "none"; | |
| this.toolbox_ && (this.toolbox_.HtmlDiv.style.display = a ? "block" : "none"); | |
| a ? (this.render(), this.toolbox_ && this.toolbox_.position()) : (Di(!0), ei()) | |
| }; | |
| V.prototype.render = function() { | |
| for (var a = ai(this), b = a.length - 1; 0 <= b; b--) a[b].render(!1) | |
| }; | |
| var Rr = function(a, b) { | |
| for (var c = 0, e; e = a.highlightedBlocks_[c]; c++) uq(e, !1); | |
| a.highlightedBlocks_.length = 0; | |
| e = b ? qi(a, b) : null; | |
| null != e && (-1 == a.highlightedBlocks_.indexOf(e) && a.highlightedBlocks_.push(e), uq(e, !0)) | |
| }, | |
| qq = function(a) { | |
| var b = nq; | |
| if (a.rendered) { | |
| hq(); | |
| Q++; | |
| try { | |
| var c = lj(b, a), | |
| e = parseInt(b.getAttribute("x"), 10), | |
| f = parseInt(b.getAttribute("y"), 10); | |
| if (!isNaN(e) && !isNaN(f)) { | |
| a.RTL && (e = -e); | |
| do { | |
| b = !1; | |
| for (var g = ai(a), h = 0, m; m = g[h]; h++) { | |
| var n = m.getRelativeToSurfaceXY(); | |
| if (1 >= Math.abs(e - n.x) && 1 >= Math.abs(f - n.y)) { | |
| b = !0; | |
| break | |
| } | |
| } | |
| if (!b) { | |
| var p = c.getConnections(!1); | |
| h = 0; | |
| for (var r; r = p[h]; h++) | |
| if (r.closest(48, new A(e, f)).connection) { | |
| b = !0; | |
| break | |
| } | |
| } | |
| b && (e = a.RTL ? e - 48 : e + 48, f += 96) | |
| } while (b); | |
| c.moveBy(e, f) | |
| } | |
| } finally { | |
| Q-- | |
| } | |
| 0 == Q && !c.isShadowBlock && P(new jo(c)); | |
| Ip(c) | |
| } | |
| }; | |
| V.prototype.renameVariable = function(a, b) { | |
| V.superClass_.renameVariable.call(this, a, b); | |
| this.toolbox_ && this.toolbox_.flyout_ && !Rq && xr(this.toolbox_) | |
| }; | |
| V.prototype.createVariable = function(a) { | |
| V.superClass_.createVariable.call(this, a); | |
| this.toolbox_ && this.toolbox_.flyout_ && !Rq && xr(this.toolbox_) | |
| }; | |
| var kq = function(a) { | |
| a.trashcan ? a.deleteAreaTrash_ = a.trashcan.getClientRect() : a.deleteAreaTrash_ = null; | |
| a.flyout_ ? a.deleteAreaToolbox_ = a.flyout_.getClientRect() : a.toolbox_ ? a.deleteAreaToolbox_ = a.toolbox_.getClientRect() : a.deleteAreaToolbox_ = null | |
| }, | |
| lq = function(a, b) { | |
| var c = new A(b.clientX, b.clientY); | |
| return a.deleteAreaTrash_ && a.deleteAreaTrash_.contains(c) ? 1 : a.deleteAreaToolbox_ && a.deleteAreaToolbox_.contains(c) ? 2 : null | |
| }; | |
| V.prototype.onMouseDown_ = function(a) { | |
| this.markFocused(); | |
| Bi(a) ? J = null : (hq(), Di(), Vj(), a.target && a.target.nodeName && ("svg" == a.target.nodeName.toLowerCase() || a.target == this.svgBackground_) && lo && !this.options.readOnly && Vp(lo), Ai(a) ? (Ph(a), J = null) : this.scrollbar ? (this.dragMode_ = 1, this.startDragMouseX = a.clientX, this.startDragMouseY = a.clientY, this.startDragMetrics = this.getMetrics(), this.startScrollX = this.scrollX, this.startScrollY = this.scrollY, pr(this), "mouseup" in Ih && (Hh = Hh || [], Hh = Hh.concat(N(document, "mouseup", | |
| null, Ph))), Fh = Fh || [], Fh = Fh.concat(N(document, "mousemove", null, Rh))) : J = null, a.stopPropagation(), a.preventDefault()) | |
| }; | |
| var Ci = function(a, b, c) { | |
| b = qk(b, Sj(a), a.inverseScreenCTM_); | |
| b.x /= a.scale; | |
| b.y /= a.scale; | |
| a.dragDeltaXY_ = Ze(c, new A(b.x, b.y)) | |
| }, | |
| Ei = function(a, b) { | |
| var c = qk(b, Sj(a), a.inverseScreenCTM_); | |
| c.x /= a.scale; | |
| c.y /= a.scale; | |
| var e = a.dragDeltaXY_; | |
| c = new A(c.x, c.y); | |
| return new A(e.x + c.x, e.y + c.y) | |
| }, | |
| Ji = function(a) { | |
| return 2 == Yn || Rq && 2 == Rq.dragMode || 2 == a.dragMode_ | |
| }; | |
| V.prototype.onMouseWheel_ = function(a) { | |
| if (a.ctrlKey) { | |
| hq(); | |
| var b = -a.deltaY / 50, | |
| c = qk(a, Sj(this), this.inverseScreenCTM_); | |
| this.zoom(c.x, c.y, b) | |
| } else L(!0), ei(), b = this.scrollX - a.deltaX, c = this.scrollY - a.deltaY, this.startDragMetrics = this.getMetrics(), Qh(this, b, c); | |
| a.preventDefault() | |
| }; | |
| var Sr = function(a, b, c) { | |
| if (b.length) { | |
| try { | |
| var e = new window.Audio | |
| } catch (n) { | |
| return | |
| } | |
| for (var f, g = 0; g < b.length; g++) { | |
| var h = b[g], | |
| m = h.match(/\.(\w+)$/); | |
| if (m && e.canPlayType("audio/" + m[1])) { | |
| f = new window.Audio(h); | |
| break | |
| } | |
| } | |
| f && f.play && (a.SOUNDS_[c] = f) | |
| } | |
| }, | |
| mq = function(a, b, c) { | |
| var e = new Oi(null, "sound", null, b); | |
| e.workspaceId = a.id; | |
| P(e); | |
| (e = a.SOUNDS_[b]) ? (b = new Date, 100 > b - a.lastSound_ || (a.lastSound_ = b, a = xd && 9 === xd || pd || nd ? e : e.cloneNode(), a.volume = void 0 === c ? 1 : c, a.play())) : a.options.parentWorkspace && mq(a.options.parentWorkspace, | |
| b, c) | |
| }, | |
| Tr = function(a, b) { | |
| if (b = Ep(b)) { | |
| if (!a.options.languageTree) throw "Existing toolbox is null. Can't create new toolbox."; | |
| if (b.getElementsByTagName("category").length) { | |
| if (!a.toolbox_) throw "Existing toolbox has no categories. Can't change mode."; | |
| a.options.languageTree = b; | |
| a.toolbox_.populate(b); | |
| a.toolbox_.position() | |
| } else { | |
| if (!a.flyout_) throw "Existing toolbox has categories. Can't change mode."; | |
| a.options.languageTree = b; | |
| a.flyout_.show(b.childNodes) | |
| } | |
| } else if (a.options.languageTree) throw "Can't nullify an existing toolbox."; | |
| }; | |
| V.prototype.markFocused = function() { | |
| this.options.parentWorkspace ? this.options.parentWorkspace.markFocused() : K = this | |
| }; | |
| V.prototype.zoom = function(a, b, c) { | |
| var e = this.options.zoomOptions.scaleSpeed, | |
| f = this.getMetrics(), | |
| g = Sj(this).createSVGPoint(); | |
| g.x = a; | |
| g.y = b; | |
| g = g.matrixTransform(this.svgBlockCanvas_.getCTM().inverse()); | |
| a = g.x; | |
| b = g.y; | |
| g = this.svgBlockCanvas_; | |
| e = Math.pow(e, c); | |
| c = this.scale * e; | |
| c > this.options.zoomOptions.maxScale ? e = this.options.zoomOptions.maxScale / this.scale : c < this.options.zoomOptions.minScale && (e = this.options.zoomOptions.minScale / this.scale); | |
| this.scale != c && (this.scrollbar && (a = g.getCTM().translate(a * (1 - e), b * (1 - e)).scale(e), | |
| this.scrollX = a.e - f.absoluteLeft, this.scrollY = a.f - f.absoluteTop), Ir(this, c), L(!0), ei()) | |
| }; | |
| var Hr = function(a, b) { | |
| var c = a.getMetrics(); | |
| a.zoom(c.viewWidth / 2, c.viewHeight / 2, b) | |
| }, | |
| Ir = function(a, b) { | |
| a.options.zoomOptions.maxScale && b > a.options.zoomOptions.maxScale ? b = a.options.zoomOptions.maxScale : a.options.zoomOptions.minScale && b < a.options.zoomOptions.minScale && (b = a.options.zoomOptions.minScale); | |
| a.scale = b; | |
| Pr(a); | |
| Or(a); | |
| L(!0); | |
| ei(); | |
| a.scrollbar ? a.scrollbar.resize() : a.translate(a.scrollX, a.scrollY); | |
| Di(!1); | |
| a.flyout_ && a.flyout_.reflow() | |
| }, | |
| Qh = function(a, b, c) { | |
| var e = a.startDragMetrics; | |
| b = Math.min(b, -e.contentLeft); | |
| c = Math.min(c, -e.contentTop); | |
| b = Math.max(b, e.viewWidth - e.contentLeft - e.contentWidth); | |
| c = Math.max(c, e.viewHeight - e.contentTop - e.contentHeight); | |
| L(!0); | |
| ei(); | |
| a.scrollbar.set(-b - e.contentLeft, -c - e.contentTop) | |
| }, | |
| Or = function(a) { | |
| if (a.options.gridPattern) { | |
| var b = a.options.gridOptions.spacing * a.scale || 100; | |
| a.options.gridPattern.setAttribute("width", b); | |
| a.options.gridPattern.setAttribute("height", b); | |
| b = Math.floor(a.options.gridOptions.spacing / 2) + .5; | |
| var c = b - a.options.gridOptions.length / 2, | |
| e = b + a.options.gridOptions.length / | |
| 2, | |
| f = a.options.gridPattern.firstChild, | |
| g = f && f.nextSibling; | |
| b *= a.scale; | |
| c *= a.scale; | |
| e *= a.scale; | |
| f && (f.setAttribute("stroke-width", a.scale), f.setAttribute("x1", c), f.setAttribute("y1", b), f.setAttribute("x2", e), f.setAttribute("y2", b)); | |
| g && (g.setAttribute("stroke-width", a.scale), g.setAttribute("x1", b), g.setAttribute("y1", c), g.setAttribute("x2", b), g.setAttribute("y2", e)) | |
| } | |
| }, | |
| Pr = function(a) { | |
| a.options.stackGlowBlur && a.options.stackGlowBlur.setAttribute("stdDeviation", 1.3 / a.scale) | |
| }, | |
| Jr = function() { | |
| var a, b = Hq(Sj(this)); | |
| if (this.toolbox_) | |
| if (0 == this.toolboxPosition || 1 == this.toolboxPosition) b.height -= this.toolbox_.getHeight(); | |
| else if (2 == this.toolboxPosition || 3 == this.toolboxPosition) b.width -= this.toolbox_.getWidth(); | |
| var c = Qq.prototype.CORNER_RADIUS - 1; | |
| var e = b.width - c, | |
| f = b.height - c; | |
| c = $h(this, !1); | |
| if (c.length) { | |
| var g = gq(c[0]); | |
| for (a = 1; a < c.length; a++) { | |
| var h = gq(c[a]); | |
| h.topLeft.x < g.topLeft.x && (g.topLeft.x = h.topLeft.x); | |
| h.bottomRight.x > g.bottomRight.x && (g.bottomRight.x = h.bottomRight.x); | |
| h.topLeft.y < g.topLeft.y && (g.topLeft.y = h.topLeft.y); | |
| h.bottomRight.y > g.bottomRight.y && (g.bottomRight.y = h.bottomRight.y) | |
| } | |
| c = g.topLeft.x; | |
| a = g.topLeft.y; | |
| h = g.bottomRight.x - g.topLeft.x; | |
| g = g.bottomRight.y - g.topLeft.y | |
| } else g = h = a = c = 0; | |
| var m = h * this.scale, | |
| n = g * this.scale, | |
| p = c * this.scale, | |
| r = a * this.scale; | |
| if (this.scrollbar) { | |
| var t = Math.min(p - e / 2, p + m - e); | |
| e = Math.max(p + m + e / 2, p + e); | |
| m = Math.min(r - f / 2, r + n - f); | |
| f = Math.max(r + n + f / 2, r + f) | |
| } else t = c, e = t + h, m = a, f = m + g; | |
| n = 0; | |
| this.toolbox_ && 2 == this.toolboxPosition && (n = this.toolbox_.getWidth()); | |
| r = 0; | |
| this.toolbox_ && 0 == this.toolboxPosition && (r = this.toolbox_.getHeight()); | |
| return { | |
| viewHeight: b.height, | |
| viewWidth: b.width, | |
| contentHeight: f - m, | |
| contentWidth: e - t, | |
| viewTop: -this.scrollY, | |
| viewLeft: -this.scrollX, | |
| contentTop: m, | |
| contentLeft: t, | |
| absoluteTop: r, | |
| absoluteLeft: n, | |
| toolboxWidth: this.toolbox_ ? this.toolbox_.getWidth() : 0, | |
| toolboxHeight: this.toolbox_ ? this.toolbox_.getHeight() : 0, | |
| flyoutWidth: this.flyout_ ? this.flyout_.getWidth() : 0, | |
| flyoutHeight: this.flyout_ ? this.flyout_.getHeight() : 0, | |
| blocksTop: a * this.scale, | |
| blocksLeft: c * this.scale, | |
| blocksWidth: h * this.scale, | |
| blocksHeight: g * this.scale, | |
| toolboxPosition: this.toolboxPosition | |
| } | |
| }, | |
| Kr = function(a) { | |
| if (!this.scrollbar) throw "Attempt to set top level workspace scroll without scrollbars."; | |
| var b = this.getMetrics(); | |
| v(a.x) && (this.scrollX = -b.contentWidth * a.x - b.contentLeft); | |
| v(a.y) && (this.scrollY = -b.contentHeight * a.y - b.contentTop); | |
| a = this.scrollX + b.absoluteLeft; | |
| b = this.scrollY + b.absoluteTop; | |
| this.translate(a, b); | |
| this.options.gridPattern && (this.options.gridPattern.setAttribute("x", a), this.options.gridPattern.setAttribute("y", b), (z || id) && Or(this)) | |
| }; | |
| V.prototype.setResizesEnabled = function(a) { | |
| var b = !this.resizesEnabled_ && a; | |
| this.resizesEnabled_ = a; | |
| b && eq(this) | |
| }; | |
| V.prototype.Blockly_Workspace_prototype$clear = function() { | |
| this.setResizesEnabled(!1); | |
| V.superClass_.Blockly_Workspace_prototype$clear.call(this); | |
| this.setResizesEnabled(!0) | |
| }; | |
| var yn = function(a, b) { | |
| a.flyoutButtonCallbacks_.CREATE_VARIABLE = b | |
| }, | |
| Nq = function(a, b) { | |
| var c = a.flyoutButtonCallbacks_[b]; | |
| return c ? c : null | |
| }, | |
| Zq = function(a, b) { | |
| var c = a.toolboxCategoryCallbacks_[b]; | |
| return c ? c : null | |
| }; | |
| V.prototype.setVisible = V.prototype.setVisible; | |
| var Wr = function(a, b) { | |
| u(a) && (a = document.getElementById(a) || document.querySelector(a)); | |
| if (!pg(document, a)) throw "Error: container is not in current document."; | |
| var c = new Vh(b || {}), | |
| e = B("div", "injectionDiv"); | |
| a.appendChild(e); | |
| e.setAttribute("dir", "LTR"); | |
| bl = c.RTL; | |
| var f = ".blocklyDraggable {}\n"; | |
| c.hasCss && (f += Dp.join("\n"), vo && (f += vp.join("\n"))); | |
| zp = c.pathToMedia.replace(/[\\\/]$/, ""); | |
| f = f.replace(/<<<PATH>>>/g, zp); | |
| for (var g in I) I.hasOwnProperty(g) && (f = f.replace(new RegExp("\\$colour\\_" + g, "g"), I[g])); | |
| g = document.createElement("style"); | |
| g.appendChild(document.createTextNode(f)); | |
| Bp(); | |
| yp.push(g); | |
| Ap(g); | |
| f = O("svg", { | |
| xmlns: "http://www.w3.org/2000/svg", | |
| "xmlns:html": "http://www.w3.org/1999/xhtml", | |
| "xmlns:xlink": "http://www.w3.org/1999/xlink", | |
| version: "1.1", | |
| "class": "blocklySvg" | |
| }, e); | |
| g = O("defs", {}, f); | |
| var h = String(Math.random()).substring(2), | |
| m = O("filter", { | |
| id: "blocklyStackGlowFilter", | |
| height: "160%", | |
| width: "180%", | |
| y: "-30%", | |
| x: "-40%" | |
| }, g); | |
| c.stackGlowBlur = O("feGaussianBlur", { | |
| "in": "SourceGraphic", | |
| stdDeviation: 1.3 | |
| }, m); | |
| var n = O("feComponentTransfer", { | |
| result: "outBlur" | |
| }, | |
| m); | |
| O("feFuncA", { | |
| type: "table", | |
| tableValues: "0" + Hb(" 1", 16) | |
| }, n); | |
| O("feFlood", { | |
| "flood-color": I.stackGlow, | |
| "flood-opacity": I.stackGlowOpacity, | |
| result: "outColor" | |
| }, m); | |
| O("feComposite", { | |
| "in": "outColor", | |
| in2: "outBlur", | |
| operator: "in", | |
| result: "outGlow" | |
| }, m); | |
| O("feComposite", { | |
| "in": "SourceGraphic", | |
| in2: "outGlow", | |
| operator: "over" | |
| }, m); | |
| m = O("filter", { | |
| id: "blocklyReplacementGlowFilter", | |
| height: "160%", | |
| width: "180%", | |
| y: "-30%", | |
| x: "-40%" | |
| }, g); | |
| O("feGaussianBlur", { | |
| "in": "SourceGraphic", | |
| stdDeviation: 2 | |
| }, m); | |
| n = O("feComponentTransfer", { | |
| result: "outBlur" | |
| }, | |
| m); | |
| O("feFuncA", { | |
| type: "table", | |
| tableValues: "0" + Hb(" 1", 16) | |
| }, n); | |
| O("feFlood", { | |
| "flood-color": I.replacementGlow, | |
| "flood-opacity": I.replacementGlowOpacity, | |
| result: "outColor" | |
| }, m); | |
| O("feComposite", { | |
| "in": "outColor", | |
| in2: "outBlur", | |
| operator: "in", | |
| result: "outGlow" | |
| }, m); | |
| O("feComposite", { | |
| "in": "SourceGraphic", | |
| in2: "outGlow", | |
| operator: "over" | |
| }, m); | |
| n = O("filter", { | |
| id: "blocklyEmbossFilter" + h | |
| }, g); | |
| O("feGaussianBlur", { | |
| "in": "SourceAlpha", | |
| stdDeviation: 1, | |
| result: "blur" | |
| }, n); | |
| m = O("feSpecularLighting", { | |
| "in": "blur", | |
| surfaceScale: 1, | |
| specularConstant: .5, | |
| specularExponent: 10, | |
| "lighting-color": "white", | |
| result: "specOut" | |
| }, n); | |
| O("fePointLight", { | |
| x: -5E3, | |
| y: -1E4, | |
| z: 2E4 | |
| }, m); | |
| O("feComposite", { | |
| "in": "specOut", | |
| in2: "SourceAlpha", | |
| operator: "in", | |
| result: "specOut" | |
| }, n); | |
| O("feComposite", { | |
| "in": "SourceGraphic", | |
| in2: "specOut", | |
| operator: "arithmetic", | |
| k1: 0, | |
| k2: 1, | |
| k3: 1, | |
| k4: 0 | |
| }, n); | |
| c.embossFilterId = n.id; | |
| n = O("filter", { | |
| id: "blocklyInsetShadowFilter" + h | |
| }, g); | |
| O("feOffset", { | |
| dy: 2 | |
| }, n); | |
| O("feComposite", { | |
| operator: "out", | |
| "in": "SourceGraphic", | |
| result: "inverse" | |
| }, n); | |
| O("feFlood", { | |
| "flood-color": "black", | |
| "flood-opacity": .6, | |
| result: "color" | |
| }, n); | |
| O("feComposite", { | |
| operator: "in", | |
| "in": "color", | |
| in2: "inverse", | |
| result: "shadow" | |
| }, n); | |
| O("feComposite", { | |
| operator: "over", | |
| "in": "shadow", | |
| in2: "SourceGraphic" | |
| }, n); | |
| c.insetShadowFilterId = n.id; | |
| n = O("pattern", { | |
| id: "blocklyDisabledPattern" + h, | |
| patternUnits: "userSpaceOnUse", | |
| width: 10, | |
| height: 10 | |
| }, g); | |
| O("rect", { | |
| width: 10, | |
| height: 10, | |
| fill: "#aaa" | |
| }, n); | |
| O("path", { | |
| d: "M 0 0 L 10 10 M 10 0 L 0 10", | |
| stroke: "#cc0" | |
| }, n); | |
| c.disabledPatternId = n.id; | |
| g = O("pattern", { | |
| id: "blocklyGridPattern" + h, | |
| patternUnits: "userSpaceOnUse" | |
| }, g); | |
| 0 < c.gridOptions.length && | |
| 0 < c.gridOptions.spacing && (O("line", { | |
| stroke: c.gridOptions.colour | |
| }, g), 1 < c.gridOptions.length && O("line", { | |
| stroke: c.gridOptions.colour | |
| }, g)); | |
| c.gridPattern = g; | |
| g = new wo(e); | |
| e = new Gp(e); | |
| c = Ur(f, c, g, e); | |
| Vr(c); | |
| c.markFocused(); | |
| N(f, "focus", c, c.markFocused); | |
| Iq(c); | |
| return c | |
| }, | |
| Ur = function(a, b, c, e) { | |
| b.parentWorkspace = null; | |
| var f = new V(b, c, e); | |
| f.scale = b.zoomOptions.startScale; | |
| a.appendChild(f.createDom("blocklyMainBackground")); | |
| !b.hasCategories && b.languageTree && (c = Qr(f), Bk(c, a)); | |
| f.translate(0, 0); | |
| f.markFocused(); | |
| b.readOnly || | |
| b.hasScrollbars || f.addChangeListener(function() { | |
| if (0 == Yn) { | |
| var a = f.getMetrics(), | |
| c = a.viewLeft + a.absoluteLeft, | |
| e = a.viewTop + a.absoluteTop; | |
| if (a.contentTop < e || a.contentTop + a.contentHeight > a.viewHeight + e || a.contentLeft < (b.RTL ? a.viewLeft : c) || a.contentLeft + a.contentWidth > (b.RTL ? a.viewWidth : a.viewWidth + c)) | |
| for (var n = $h(f, !1), p = 0, r; r = n[p]; p++) { | |
| var t = r.getRelativeToSurfaceXY(), | |
| x = Mk(r), | |
| fa = e + 25 - x.height - t.y; | |
| 0 < fa && r.moveBy(0, fa); | |
| fa = e + a.viewHeight - 25 - t.y; | |
| 0 > fa && r.moveBy(0, fa); | |
| fa = 25 + c - t.x - (b.RTL ? 0 : x.width); | |
| 0 < fa && r.moveBy(fa, | |
| 0); | |
| t = c + a.viewWidth - 25 - t.x + (b.RTL ? x.width : 0); | |
| 0 > t && r.moveBy(t, 0) | |
| } | |
| } | |
| }); | |
| Iq(f); | |
| Jk || (Jk = B("DIV", "blocklyWidgetDiv"), document.body.appendChild(Jk)); | |
| Lj || (Lj = B("div", "blocklyDropDownDiv"), document.body.appendChild(Lj), Jj = B("div", "blocklyDropDownContent"), Lj.appendChild(Jj), Kj = B("div", "blocklyDropDownArrow"), Lj.appendChild(Kj), Lj.style.transition = "transform 0.25s, opacity 0.25s"); | |
| Tn || (Tn = B("DIV", "blocklyTooltipDiv"), document.body.appendChild(Tn)); | |
| return f | |
| }, | |
| Vr = function(a) { | |
| var b = a.options, | |
| c = Sj(a); | |
| N(c, "contextmenu", | |
| null, | |
| function(a) { | |
| Bi(a) || a.preventDefault() | |
| }); | |
| c = N(window, "resize", null, function() { | |
| Di(!0); | |
| Iq(a) | |
| }); | |
| a.resizeHandlerWrapper_ = c; | |
| Xr(); | |
| b.languageTree && (a.toolbox_ ? a.toolbox_.init(a) : a.flyout_ && (a.flyout_.init(a), a.flyout_.show(b.languageTree.childNodes), a.flyout_.scrollToStart(), b.horizontalLayout ? (a.scrollY = a.flyout_.height, 1 == b.toolboxPosition && (a.scrollY *= -1)) : (a.scrollX = a.flyout_.width, 3 == b.toolboxPosition && (a.scrollX *= -1)), a.translate(a.scrollX, a.scrollY))); | |
| b.hasScrollbars && (a.scrollbar = new fr(a), a.scrollbar.resize()); | |
| b.hasSounds && Yr(b.pathToMedia, a) | |
| }, | |
| Xr = function() { | |
| Gh || (N(document, "keydown", null, Jq), T(document, "touchend", null, Kh), T(document, "touchcancel", null, Kh), document.addEventListener("mouseup", Ph, !1), pd && N(window, "orientationchange", document, function() { | |
| Iq(K) | |
| })); | |
| Gh = !0 | |
| }, | |
| Yr = function(a, b) { | |
| Sr(b, [a + "click.wav"], "click"); | |
| Sr(b, [a + "delete.wav"], "delete"); | |
| var c = [], | |
| e = function() { | |
| for (; c.length;) Oh(c.pop()); | |
| for (var a in b.SOUNDS_) { | |
| var e = b.SOUNDS_[a]; | |
| e.volume = .01; | |
| e.play(); | |
| e.pause(); | |
| if (pd || od) break | |
| } | |
| }; | |
| c.push(N(document, "mousemove", | |
| null, e, !0)); | |
| c.push(N(document, "touchstart", null, e, !0)) | |
| }; | |
| var Zr = ['<xml>\n <block type="logo17_run_code"\n id="tutorial_start_block_id"\n deletable="false"\n movable="false"\n x="10"\n y="96">\n </block>\n </xml>', '<xml>\n <block type="logo17_run_code"\n id="tutorial_start_block_id"\n deletable="false"\n movable="false"\n x="10"\n y="96">\n </block>\n </xml>', '<xml>\n <block type="logo17_run_code"\n id="tutorial_start_block_id"\n deletable="false"\n movable="false"\n x="20"\n y="149">\n <next>\n <block type="logo17_move_forward"></block>\n </next>\n </block>\n </xml>'], | |
| $r = '<xml id="toolbox-simple" style="display: none">\n <block type="logo17_move_forward"></block>\n </xml>;<xml id="toolbox-simple" style="display: none">\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n </xml>;<xml id="toolbox-simple" style="display: none">\n <block type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">4</field>\n </shadow>\n </value>\n </block>\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n </xml>;<xml id="toolbox-simple" style="display: none">\n <block type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">4</field>\n </shadow>\n </value>\n </block>\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n <block type="logo17_turn_left"></block>\n </xml>;<xml id="toolbox-simple" style="display: none">\n <block type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">4</field>\n </shadow>\n </value>\n </block>\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n <block type="logo17_turn_left"></block>\n </xml>;<xml id="toolbox-simple" style="display: none">\n <block type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">4</field>\n </shadow>\n </value>\n </block>\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n <block type="logo17_turn_left"></block>\n </xml>'.split(";"), | |
| as = ['<xml id="toolbox-simple" style="display: none">\n <block\n id="logo17_move_forward"\n type="logo17_move_forward"></block>\n </xml>', '<xml id="toolbox-simple" style="display: none">\n <block\n id="logo17_turn_right"\n type="logo17_turn_right"></block>\n <block\n id="logo17_move_forward"\n type="logo17_move_forward"></block>\n </xml>', '<xml id="toolbox-simple" style="display: none">\n <block\n id="logo17_for_loop"\n type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">2</field>\n </shadow>\n </value>\n </block>\n <block\n id="logo17_move_forward"\n type="logo17_move_forward"></block>\n </xml>']; | |
| H.logo17_run_code = { | |
| json: { | |
| id: "logo17_run_code", | |
| message0: "%1", | |
| args0: [{ | |
| type: "field_image", | |
| src: "/logos/2017/logo17/start_rabbit.svg", | |
| width: 40, | |
| height: 40, | |
| flip_rtl: !0 | |
| }], | |
| inputsInline: !0, | |
| nextStatement: null, | |
| category: null, | |
| colour: I.event.primary, | |
| colourSecondary: I.event.secondary, | |
| enableContextMenu: !1 | |
| } | |
| }; | |
| H.logo17_for_loop = { | |
| json: { | |
| id: "logo17_for_loop", | |
| message0: "%1 %2 %3", | |
| args0: [{ | |
| type: "input_statement", | |
| name: "SUBSTACK" | |
| }, { | |
| type: "field_image", | |
| src: "/logos/2017/logo17/control_repeat.svg", | |
| width: 40, | |
| height: 40, | |
| flip_rtl: !0 | |
| }, { | |
| type: "input_value", | |
| name: "TIMES", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: null, | |
| colour: I.control.primary, | |
| colourSecondary: I.control.secondary, | |
| colourTertiary: I.control.tertiary, | |
| enableContextMenu: !1, | |
| tooltip: y("Loop Hover") | |
| } | |
| }; | |
| H.logo17_move_forward = { | |
| json: { | |
| id: "logo17_move_forward", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: "/logos/2017/logo17/move_forward.svg", | |
| width: 40, | |
| height: 40 | |
| }, { | |
| type: "input_value", | |
| name: "DURATION", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: null, | |
| colour: I.motion.primary, | |
| colourSecondary: I.motion.secondary, | |
| colourTertiary: I.motion.tertiary, | |
| enableContextMenu: !1, | |
| tooltip: y("Forward Block Hover") | |
| } | |
| }; | |
| H.logo17_turn_left = { | |
| json: { | |
| id: "logo17_turn_left", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: "/logos/2017/logo17/turn_left.svg", | |
| width: 40, | |
| height: 40 | |
| }, { | |
| type: "input_value", | |
| name: "DURATION", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: null, | |
| colour: I.motion.turn, | |
| colourSecondary: I.motion.turnSecondary, | |
| colourTertiary: I.motion.turnSecondary, | |
| enableContextMenu: !1, | |
| tooltip: y("Turn Left Hover") | |
| } | |
| }; | |
| H.logo17_turn_right = { | |
| json: { | |
| id: "logo17_turn_right", | |
| message0: "%1 %2", | |
| args0: [{ | |
| type: "field_image", | |
| src: "/logos/2017/logo17/turn_right.svg", | |
| width: 40, | |
| height: 40 | |
| }, { | |
| type: "input_value", | |
| name: "DURATION", | |
| check: "Number" | |
| }], | |
| inputsInline: !0, | |
| previousStatement: null, | |
| nextStatement: null, | |
| category: null, | |
| colour: I.motion.turn, | |
| colourSecondary: I.motion.turnSecondary, | |
| colourTertiary: I.motion.turnSecondary, | |
| enableContextMenu: !1, | |
| tooltip: y("Turn Right Hover") | |
| } | |
| }; | |
| var bs = document.getElementById("hpofblockly") ? Wr(document.getElementById("hpofblockly"), { | |
| comments: !1, | |
| disable: !1, | |
| collapse: !1, | |
| media: "/logos/2017/logo17/", | |
| hasSounds: !0, | |
| readOnly: !1, | |
| rtl: !1, | |
| scrollbars: !0, | |
| toolbox: '<xml id="toolbox-simple" style="display: none">\n <block type="logo17_for_loop">\n <value name="TIMES">\n <shadow type="math_whole_number">\n <field name="NUM">4</field>\n </shadow>\n </value>\n </block>\n <block type="logo17_move_forward"></block>\n <block type="logo17_turn_right"></block>\n <block type="logo17_turn_left"></block>\n </xml>', | |
| trashcan: !1, | |
| horizontalLayout: !0, | |
| toolboxPosition: "end", | |
| sounds: !0, | |
| grid: { | |
| spacing: 16, | |
| length: 1, | |
| colour: "transparent", | |
| snap: !1 | |
| }, | |
| colours: { | |
| workspace: "#72d4c8", | |
| flyout: "transparent", | |
| scrollbar: "rgba(50, 139, 122, 0.6)", | |
| scrollbarHover: "#0c111a", | |
| insertionMarker: "#ffffff", | |
| insertionMarkerOpacity: .3, | |
| fieldShadow: "rgba(255, 255, 255, 0.3)", | |
| dragShadowOpacity: .6 | |
| }, | |
| zoom: { | |
| startScale: .7, | |
| maxScale: .7, | |
| minScale: .7 | |
| } | |
| }) : null, | |
| cs = function(a) { | |
| return bb(a.getDescendants(), function(a) { | |
| return a.isShadowBlock | |
| }) | |
| }; | |
| var ds = function(a, b, c) { | |
| this.id = a ? a.id : Th(); | |
| this.children = []; | |
| this.block = a; | |
| this.blockType = c; | |
| this.parentNode_ = b; | |
| this.nextNodeGenerator_ = this.getNextNodeGenerator(); | |
| this.isStarted_ = !1; | |
| this.minExecutionTimeMs = this.module$exports$logo17$AstNode$timeElapsedMs_ = 0 | |
| }; | |
| ds.prototype.start = function() { | |
| this.isStarted_ = !0 | |
| }; | |
| ds.prototype.update = function(a) { | |
| this.module$exports$logo17$AstNode$timeElapsedMs_ += a | |
| }; | |
| ds.prototype.module$exports$logo17$AstNode_prototype$isFinished = function() { | |
| return this.module$exports$logo17$AstNode$timeElapsedMs_ >= this.minExecutionTimeMs | |
| }; | |
| var es = function(a) { | |
| var b = a.children.length; | |
| a = l(a.children); | |
| for (var c = a.next(); !c.done; c = a.next()) b += es(c.value); | |
| return b | |
| }, | |
| fs = function(a) { | |
| a.nextNodeGenerator_ = a.getNextNodeGenerator(); | |
| a = l(a.children); | |
| for (var b = a.next(); !b.done; b = a.next()) fs(b.value) | |
| }; | |
| ds.prototype.reset = function() { | |
| this.isStarted_ = !1; | |
| this.module$exports$logo17$AstNode$timeElapsedMs_ = 0; | |
| for (var a = l(this.children), b = a.next(); !b.done; b = a.next()) b.value.reset() | |
| }; | |
| ds.prototype.toString = function(a) { | |
| var b = void 0 === a ? 0 : a; | |
| return $a(this.children, function(a) { | |
| return " ".repeat(b) + a.toString(b + 1) | |
| }).join("\n") | |
| }; | |
| var gs = function(a) { | |
| return 0 == a.children.length ? a.blockType : [].concat([a.blockType], qa($a(a.children, function(a) { | |
| return gs(a) | |
| }))) | |
| }; | |
| ds.prototype.getNextNodeGenerator = function() { | |
| function a(a, h, p) { | |
| for (;;) switch (b) { | |
| case 0: | |
| f = l(g.children), e = f.next(); | |
| case 1: | |
| if (e.done) { | |
| b = 3; | |
| break | |
| } | |
| c = e.value; | |
| b = 4; | |
| return { | |
| value: c, done: !1 | |
| }; | |
| case 4: | |
| if (1 != a) { | |
| b = 5; | |
| break | |
| } | |
| b = -1; | |
| throw p; | |
| case 5: | |
| case 2: | |
| e = f.next(); | |
| b = 1; | |
| break; | |
| case 3: | |
| b = -1; | |
| default: | |
| return { | |
| value: void 0, done: !0 | |
| } | |
| } | |
| } | |
| var b = 0, | |
| c, e, f, g = this, | |
| h = { | |
| next: function(b) { | |
| return a(0, b, void 0) | |
| }, | |
| "throw": function(b) { | |
| return a(1, void 0, b) | |
| }, | |
| "return": function() { | |
| throw Error("P"); | |
| } | |
| }; | |
| oa(); | |
| h[Symbol.iterator] = function() { | |
| return this | |
| }; | |
| return h | |
| }; | |
| var hs = function(a, b) { | |
| ds.call(this, a, b, "logo17_for_loop"); | |
| this.minExecutionTimeMs = 333; | |
| this.iterations_ = 0; | |
| var c = cs(a); | |
| c && (c = parseInt(ki(c, "NUM"), 10), isNaN(c) || (this.iterations_ = c)) | |
| }; | |
| k(hs, ds); | |
| hs.prototype.toString = function(a) { | |
| a = ds.prototype.toString.call(this, void 0 === a ? 0 : a); | |
| return "loop " + this.iterations_ + ":\n" + a | |
| }; | |
| hs.prototype.getNextNodeGenerator = function() { | |
| function a(a, h, p) { | |
| for (;;) switch (b) { | |
| case 0: | |
| f = 0; | |
| case 1: | |
| if (!(f < g.iterations_)) { | |
| b = 3; | |
| break | |
| } | |
| e = l(ds.prototype.getNextNodeGenerator.call(g)); | |
| case 4: | |
| if ((c = e.next(h)).done) { | |
| b = 5; | |
| break | |
| } | |
| b = 6; | |
| return { | |
| value: c.value, done: !1 | |
| }; | |
| case 6: | |
| if (1 != a) { | |
| b = 7; | |
| break | |
| } | |
| b = -1; | |
| throw p; | |
| case 7: | |
| b = 4; | |
| break; | |
| case 5: | |
| g.reset(); | |
| a = l(g.children); | |
| for (h = a.next(); !h.done; h = a.next()) fs(h.value); | |
| b = 8; | |
| return { | |
| value: g, done: !1 | |
| }; | |
| case 8: | |
| if (1 != a) { | |
| b = 9; | |
| break | |
| } | |
| b = -1; | |
| throw p; | |
| case 9: | |
| case 2: | |
| f++; | |
| b = 1; | |
| break; | |
| case 3: | |
| b = -1; | |
| default: | |
| return { | |
| value: void 0, | |
| done: !0 | |
| } | |
| } | |
| } | |
| var b = 0, | |
| c, e, f, g = this, | |
| h = { | |
| next: function(b) { | |
| return a(0, b, void 0) | |
| }, | |
| "throw": function(b) { | |
| return a(1, void 0, b) | |
| }, | |
| "return": function() { | |
| throw Error("P"); | |
| } | |
| }; | |
| oa(); | |
| h[Symbol.iterator] = function() { | |
| return this | |
| }; | |
| return h | |
| }; | |
| var js = function() { | |
| Le.call(this, Se, is) | |
| }; | |
| w(js, Le); | |
| var Se = { | |
| SOUNDS: new Xe("/logos/2017/logo17/", "sounds") | |
| }, | |
| is = { | |
| BLOCKS_IN: new Te(0, 540.792), | |
| BLOCKS_OUT: new Te(1540.792, 743), | |
| CARROT: new Te(3283.792, 542.021), | |
| JUMP: new Te(4825.813, 502.583), | |
| MUSIC: new Te(6328.396, 64070.771) | |
| }; | |
| xa(js); | |
| var ks = function() { | |
| this.module$exports$logo17$events_EventBus$listeners_ = [] | |
| }, | |
| ls = function(a, b, c) { | |
| c = void 0 === c ? null : c; | |
| a = l(a.module$exports$logo17$events_EventBus$listeners_); | |
| for (var e = a.next(); !e.done; e = a.next()) e = e.value, e(b, c) | |
| }; | |
| ks.prototype.addListener = function(a) { | |
| this.module$exports$logo17$events_EventBus$listeners_.push(a) | |
| }; | |
| var ms = function(a, b, c) { | |
| for (var e = l(a.layers), f = e.next(); !f.done; f = e.next()) { | |
| f = f.value; | |
| for (var g = f.y, h = 0, m = f.height; h < m; h++) { | |
| var n = 0; | |
| for (m = f.width; n < m; n++) { | |
| var p = a.tileset.get(f.data[h * f.width + n]); | |
| b(p) && c(n, g, h, p) | |
| } | |
| } | |
| } | |
| }, | |
| ns = function(a) { | |
| switch (a) { | |
| case "left": | |
| return "down"; | |
| case "up": | |
| return "left"; | |
| case "right": | |
| return "up"; | |
| case "down": | |
| return "right"; | |
| default: | |
| throw Error("Q`" + a); | |
| } | |
| }, | |
| os = function(a) { | |
| switch (a) { | |
| case "left": | |
| return "up"; | |
| case "up": | |
| return "right"; | |
| case "right": | |
| return "down"; | |
| case "down": | |
| return "left"; | |
| default: | |
| throw Error("Q`" + | |
| a); | |
| } | |
| }; | |
| var ps = wh.getInstance(), | |
| qs = yh.getInstance(), | |
| Y = function(a, b, c, e, f) { | |
| b = void 0 === b ? D(0, 0, 0) : b; | |
| c = void 0 === c ? null : c; | |
| e = void 0 === e ? null : e; | |
| f = void 0 === f ? !1 : f; | |
| E.call(this, b); | |
| this.tiledSpriteSpecs = a; | |
| this.fps = 24; | |
| this.module$exports$logo17$Sprite$elapsedTime = this.frameIndex = 0; | |
| this.module$exports$logo17$Sprite$loop = !0; | |
| this.module$exports$logo17$Sprite$width_ = c || rs(this); | |
| this.module$exports$logo17$Sprite$height_ = e || ss(this); | |
| this.mirror_ = !!f; | |
| this.playing = !0; | |
| this.ended_ = !1; | |
| this.rasterScale_ = 1; | |
| this.onEndListener_ = null | |
| }; | |
| k(Y, E); | |
| Y.prototype.update = function(a) { | |
| E.prototype.update.call(this, a); | |
| if (this.playing) { | |
| if (!this.ended_) | |
| if (this.module$exports$logo17$Sprite$elapsedTime += a, this.module$exports$logo17$Sprite$loop) this.module$exports$logo17$Sprite$elapsedTime %= ts(this); | |
| else if (this.module$exports$logo17$Sprite$elapsedTime >= ts(this) && (this.module$exports$logo17$Sprite$elapsedTime = Math.min(this.module$exports$logo17$Sprite$elapsedTime, ts(this) - 1), this.ended_ = !0, this.onEndListener_)) this.onEndListener_(); | |
| this.frameIndex = Math.floor(this.module$exports$logo17$Sprite$elapsedTime / | |
| 1E3 * this.fps) % this.tiledSpriteSpecs.length | |
| } | |
| }; | |
| var us = function(a, b) { | |
| a.frameIndex = b; | |
| a.module$exports$logo17$Sprite$elapsedTime = b / a.fps * 1E3; | |
| a.ended_ = !1 | |
| }, | |
| ts = function(a) { | |
| return 1E3 / a.fps * a.tiledSpriteSpecs.length | |
| }; | |
| Y.prototype.play = function() { | |
| this.playing = !0 | |
| }; | |
| var vs = function(a, b) { | |
| a.onEndListener_ = b | |
| }; | |
| Y.prototype.renderInternal = function(a) { | |
| var b = this.tiledSpriteSpecs[this.frameIndex]; | |
| a.globalAlpha = this.renderOpacity; | |
| var c = this.getWidth() * this.renderTransform.m00_, | |
| e = this.getHeight() * this.renderTransform.m11_; | |
| switch (b.type) { | |
| case "png": | |
| b = b.spriteSpec; | |
| var f = Math.floor(this.renderTransform.m02_), | |
| g = Math.floor(this.renderTransform.m12_ - e), | |
| h = Math.min(this.getWidth() / rs(this) * this.renderTransform.m00_, this.getHeight() / ss(this) * this.renderTransform.m11_); | |
| c = this.mirror_; | |
| e = ps.getWidth(b); | |
| var m = ps.getHeight(b); | |
| h = void 0 != h ? h : 1; | |
| a.save(); | |
| a.translate(f, g); | |
| a.scale(c ? -h : h, h); | |
| ps.drawImage(a, b, 0, 0, e, m, -e * (c ? 1 : 0), 0 * -m, e, m); | |
| a.restore(); | |
| break; | |
| case "svg": | |
| g = b.spriteSpec; | |
| b = Math.floor((this.mirror_ ? -1 : 1) * (this.renderTransform.m02_ + c / 2)); | |
| f = Math.floor(this.renderTransform.m12_ - e / 2); | |
| c = Math.floor(c); | |
| e = Math.floor(e); | |
| m = this.mirror_; | |
| h = this.rasterScale_; | |
| m = void 0 === m ? !1 : m; | |
| if (h = $g(qs, g, void 0 === h ? 1 : h)) m && a.scale(-1, 1), g = 10 * c / g[3], a.drawImage(h, b - (c + g) / 2, f - (e + g) / 2, c + g, e + g), m && a.scale(-1, 1); | |
| break; | |
| default: | |
| throw Error("R`" + b.type); | |
| } | |
| }; | |
| Y.prototype.getCenterPosition = function() { | |
| var a = this.getWidth(); | |
| return hh(this.position).add(this.scale * a / 4, 0, this.scale * -a / 4) | |
| }; | |
| Y.prototype.getWidth = function() { | |
| return this.module$exports$logo17$Sprite$width_ | |
| }; | |
| Y.prototype.getHeight = function() { | |
| return this.module$exports$logo17$Sprite$height_ | |
| }; | |
| var rs = function(a) { | |
| a = a.tiledSpriteSpecs[0]; | |
| switch (a.type) { | |
| case "png": | |
| return ps.getWidth(a.spriteSpec); | |
| case "svg": | |
| return qs.getWidth(a.spriteSpec) | |
| } | |
| throw Error("R`" + a.type); | |
| }, | |
| ss = function(a) { | |
| a = a.tiledSpriteSpecs[0]; | |
| switch (a.type) { | |
| case "png": | |
| return ps.getHeight(a.spriteSpec); | |
| case "svg": | |
| return qs.getHeight(a.spriteSpec) | |
| } | |
| throw Error("R`" + a.type); | |
| }; | |
| var ws = function(a, b, c, e, f, g) { | |
| g = void 0 === g ? df : g; | |
| ah.call(this); | |
| this.durationMs_ = a; | |
| this.module$exports$logo17$tween_Tween$timeElapsedMs_ = 0; | |
| this.fromFn_ = b; | |
| this.toFn_ = c; | |
| this.toValue_ = this.fromValue_ = null; | |
| this.onUpdateValue_ = f; | |
| this.interpolationFn_ = e; | |
| this.module$exports$logo17$tween_Tween$easingFn_ = g | |
| }; | |
| k(ws, ah); | |
| ws.prototype.onStart = function() { | |
| ah.prototype.onStart.call(this); | |
| this.fromValue_ = this.fromFn_(); | |
| this.toValue_ = this.toFn_() | |
| }; | |
| ws.prototype.onUpdate = function(a) { | |
| this.module$exports$logo17$tween_Tween$timeElapsedMs_ += a; | |
| this.onUpdateValue_(this.interpolationFn_(this.fromValue_, this.toValue_, this.module$exports$logo17$tween_Tween$easingFn_(Math.min(1, this.module$exports$logo17$tween_Tween$timeElapsedMs_ / this.durationMs_)))) | |
| }; | |
| ws.prototype.module$exports$logo17$action_Action_prototype$isFinished = function() { | |
| return this.module$exports$logo17$tween_Tween$timeElapsedMs_ >= this.durationMs_ | |
| }; | |
| var xs = function(a, b, c, e, f) { | |
| f = void 0 === f ? df : f; | |
| ws.call(this, a, b, c, Nb, e, f) | |
| }; | |
| k(xs, ws); | |
| var ys = function(a, b, c, e, f) { | |
| f = void 0 === f ? df : f; | |
| ws.call(this, a, b, c, ph, e, f) | |
| }; | |
| k(ys, ws); | |
| ys.prototype.onFinish = function() { | |
| this.fromValue_.release(); | |
| this.toValue_.release() | |
| }; | |
| var zs = function(a) { | |
| ws.call(this, a, function() { | |
| return null | |
| }, function() { | |
| return null | |
| }, function() { | |
| return null | |
| }, function() {}, df) | |
| }; | |
| k(zs, ws); | |
| var Cs = function(a, b, c, e) { | |
| c = void 0 === c ? "right" : c; | |
| e = void 0 === e ? D(0, 0, 0) : e; | |
| E.call(this, e); | |
| this.module$exports$logo17$Player$eventBus_ = a; | |
| this.state_ = "idle"; | |
| this.initialOrientation_ = this.module$exports$logo17$Player$orientation_ = c; | |
| this.module$exports$logo17$Player$puzzle_ = b; | |
| this.forwardVector_ = D(1, 0, 0); | |
| this.firstJump_ = !0; | |
| this.module$exports$logo17$Player$blockTransform = new E(D(.5, 0, 1.5)); | |
| this.module$exports$logo17$Player$blockTransform.scale = .015625; | |
| F(this, this.module$exports$logo17$Player$blockTransform); | |
| this.spriteMap_ = new Map; | |
| a = l(As.keys()); | |
| for (b = a.next(); !b.done; b = a.next()) b = b.value, c = new Y(As.get(b)), c.fps = 24, c.module$exports$logo17$Sprite$loop = !1, this.spriteMap_.set(b, c); | |
| this.module$exports$logo17$Player$shadow_ = new E(D(0, 0, -32)); | |
| F(this.module$exports$logo17$Player$blockTransform, this.module$exports$logo17$Player$shadow_); | |
| this.leftShadowSprite_ = new Y([{ | |
| spriteSpec: G.SHADOW_LEFT, | |
| type: "svg" | |
| }], D(2, 0, 2)); | |
| this.rightShadowSprite_ = new Y([{ | |
| spriteSpec: G.SHADOW_LEFT, | |
| type: "svg" | |
| }], D(2, 0, 2)); | |
| this.downShadowSprite_ = | |
| new Y([{ | |
| spriteSpec: G.SHADOW_RIGHT, | |
| type: "svg" | |
| }], D(2, 0, 2)); | |
| this.upShadowSprite_ = new Y([{ | |
| spriteSpec: G.SHADOW_RIGHT, | |
| type: "svg" | |
| }], D(2, 0, 2)); | |
| F(this.module$exports$logo17$Player$shadow_, Bs(this)); | |
| this.sprite_ = this.spriteMap_.get(this.module$exports$logo17$Player$orientation_ + this.state_); | |
| us(this.sprite_, this.sprite_.tiledSpriteSpecs.length - 1); | |
| F(this.module$exports$logo17$Player$blockTransform, this.sprite_) | |
| }; | |
| k(Cs, E); | |
| Cs.prototype.reset = function() { | |
| E.prototype.reset.call(this); | |
| this.module$exports$logo17$Player$orientation_ = this.initialOrientation_; | |
| this.state_ = "idle"; | |
| Ds(this, this.spriteMap_.get(this.module$exports$logo17$Player$orientation_ + "idle")); | |
| us(this.sprite_, this.sprite_.tiledSpriteSpecs.length - 1); | |
| this.module$exports$logo17$Player$shadow_.scale = 1; | |
| this.firstJump_ = !0 | |
| }; | |
| var Bs = function(a) { | |
| switch (a.module$exports$logo17$Player$orientation_) { | |
| case "right": | |
| return a.rightShadowSprite_; | |
| case "up": | |
| return a.upShadowSprite_; | |
| case "down": | |
| return a.downShadowSprite_ | |
| } | |
| return a.leftShadowSprite_ | |
| }; | |
| Cs.prototype.disposeInternal = function() { | |
| E.prototype.disposeInternal.call(this); | |
| this.forwardVector_.release() | |
| }; | |
| var Es = function(a, b) { | |
| var c = hh(a.position), | |
| e = .1 < oh(c, b); | |
| return new ch([new bh(function() { | |
| e && ls(a.module$exports$logo17$Player$eventBus_, 4, a); | |
| a.firstJump_ && (ls(a.module$exports$logo17$Player$eventBus_, 5), a.firstJump_ = !1); | |
| a.state_ = "jump"; | |
| Ds(a, a.spriteMap_.get(a.module$exports$logo17$Player$orientation_ + "jump")); | |
| us(a.sprite_, 0); | |
| is.JUMP.play(0) | |
| }), new dh([new ch([new xs(187.5, function() { | |
| return 1 | |
| }, function() { | |
| return .6 | |
| }, function(b) { | |
| a.module$exports$logo17$Player$shadow_.scale = b | |
| }, gf), new xs(187.5, function() { | |
| return .6 | |
| }, | |
| function() { | |
| return 1 | |
| }, | |
| function(b) { | |
| a.module$exports$logo17$Player$shadow_.scale = b | |
| }, ff)]), new ch([new xs(187.5, function() { | |
| return 0 | |
| }, function() { | |
| return -.15 | |
| }, function(b) { | |
| a.sprite_.position.y = b | |
| }, gf), new xs(187.5, function() { | |
| return -.15 | |
| }, function() { | |
| return 0 | |
| }, function(b) { | |
| a.sprite_.position.y = b | |
| }, ff)]), new ys(375, function() { | |
| return c | |
| }, function() { | |
| return b | |
| }, function(b) { | |
| a.position.x = b.x; | |
| a.position.y = b.y; | |
| a.position.z = b.z; | |
| b.release() | |
| })]), new bh(function() { | |
| e && ls(a.module$exports$logo17$Player$eventBus_, 3, a); | |
| ls(a.module$exports$logo17$Player$eventBus_, | |
| 5); | |
| a.state_ = "idle"; | |
| Ds(a, a.spriteMap_.get(a.module$exports$logo17$Player$orientation_ + "idle")); | |
| us(a.sprite_, 0) | |
| })]) | |
| }, | |
| Fs = function(a) { | |
| a.state_ = "turning"; | |
| fh(a.actionManager, new ch([new zs(187.5), new bh(function() { | |
| a.module$exports$logo17$Player$orientation_ = ns(a.module$exports$logo17$Player$orientation_); | |
| a.state_ = "idle"; | |
| Ds(a, a.spriteMap_.get(a.module$exports$logo17$Player$orientation_ + "idle")); | |
| us(a.sprite_, 0) | |
| })])) | |
| }, | |
| Gs = function(a) { | |
| a.state_ = "turning"; | |
| fh(a.actionManager, new ch([new zs(187.5), new bh(function() { | |
| a.module$exports$logo17$Player$orientation_ = | |
| os(a.module$exports$logo17$Player$orientation_); | |
| a.state_ = "idle"; | |
| Ds(a, a.spriteMap_.get(a.module$exports$logo17$Player$orientation_ + "idle")); | |
| us(a.sprite_, 0) | |
| })])) | |
| }, | |
| Ds = function(a, b) { | |
| b != a.sprite_ && (a.module$exports$logo17$Player$blockTransform.removeChild(a.sprite_), F(a.module$exports$logo17$Player$blockTransform, b), a.sprite_ = b); | |
| var c = a.module$exports$logo17$Player$shadow_; | |
| c.children = []; | |
| c.childrenChanged_ = !0; | |
| F(a.module$exports$logo17$Player$shadow_, Bs(a)) | |
| }; | |
| Cs.prototype.getWidth = function() { | |
| return 2 | |
| }; | |
| Cs.prototype.getHeight = function() { | |
| return 2 | |
| }; | |
| Cs.prototype.getCenterPosition = function() { | |
| return hh(this.position).add(.5, 0, .5) | |
| }; | |
| var Hs = new Map([ | |
| ["left", D(-1, 0, 0)], | |
| ["up", D(0, 0, -1)], | |
| ["down", D(0, 0, 1)], | |
| ["right", D(1, 0, 0)] | |
| ]), | |
| As = new Map([ | |
| ["downjump", [{ | |
| spriteSpec: G.BUNNY_SOUTH_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_4, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_5, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_9, | |
| type: "svg" | |
| }]], | |
| ["downidle", [{ | |
| spriteSpec: G.BUNNY_SOUTH_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_12, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_16, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_17, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_SOUTH_18, | |
| type: "svg" | |
| }]], | |
| ["leftjump", [{ | |
| spriteSpec: G.BUNNY_WEST_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_4, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.BUNNY_WEST_5, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_9, | |
| type: "svg" | |
| } | |
| ]], | |
| ["leftidle", [{ | |
| spriteSpec: G.BUNNY_WEST_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_12, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_16, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_17, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_WEST_18, | |
| type: "svg" | |
| }]], | |
| ["upjump", [{ | |
| spriteSpec: G.BUNNY_NORTH_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_4, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_5, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_9, | |
| type: "svg" | |
| }]], | |
| ["upidle", [{ | |
| spriteSpec: G.BUNNY_NORTH_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_12, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_16, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_17, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_NORTH_18, | |
| type: "svg" | |
| }]], | |
| ["rightjump", [{ | |
| spriteSpec: G.BUNNY_EAST_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_4, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_5, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.BUNNY_EAST_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_9, | |
| type: "svg" | |
| } | |
| ]], | |
| ["rightidle", [{ | |
| spriteSpec: G.BUNNY_EAST_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_12, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_16, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_17, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.BUNNY_EAST_18, | |
| type: "svg" | |
| }]] | |
| ]); | |
| var Is = function(a, b, c, e, f) { | |
| ds.call(this, a, b, e); | |
| this.minExecutionTimeMs = 333; | |
| this.module$exports$logo17$PlayerControlNode$player_ = c; | |
| this.onStart_ = f | |
| }; | |
| k(Is, ds); | |
| Is.prototype.start = function() { | |
| ds.prototype.start.call(this); | |
| this.onStart_() | |
| }; | |
| Is.prototype.module$exports$logo17$AstNode_prototype$isFinished = function() { | |
| return ds.prototype.module$exports$logo17$AstNode_prototype$isFinished.call(this) && "idle" == this.module$exports$logo17$PlayerControlNode$player_.state_ | |
| }; | |
| var Ks = function(a, b) { | |
| E.call(this); | |
| var c = this; | |
| this.workspace_ = a; | |
| this.module$exports$logo17$AbstractSyntaxTree$player_ = b; | |
| this.rootNode_ = new ds(null, null, "logo17_root_node"); | |
| this.activeNode_ = null; | |
| this.workspaceChangeListener_ = function() { | |
| Js(c) | |
| }; | |
| this.workspace_.addChangeListener(this.workspaceChangeListener_); | |
| Js(this) | |
| }; | |
| k(Ks, E); | |
| Ks.prototype.disposeInternal = function() { | |
| this.workspace_.removeChangeListener(this.workspaceChangeListener_); | |
| E.prototype.disposeInternal.call(this) | |
| }; | |
| Ks.prototype.update = function(a) { | |
| for (; this.activeNode_ && this.activeNode_.module$exports$logo17$AstNode_prototype$isFinished();) this.activeNode_ = this.activeNode_.nextNodeGenerator_.next().value || this.activeNode_.parentNode_; | |
| this.activeNode_ ? this.activeNode_.isStarted_ ? this.activeNode_.update(a) : (this.activeNode_.start(), this.activeNode_.block && Rr(this.workspace_, this.activeNode_.block.id)) : Rr(this.workspace_, null) | |
| }; | |
| Ks.prototype.reset = function() { | |
| this.rootNode_.reset(); | |
| fs(this.rootNode_); | |
| this.activeNode_ = null | |
| }; | |
| var Ls = function(a) { | |
| a.rootNode_.reset(); | |
| fs(a.rootNode_); | |
| a.activeNode_ = a.rootNode_ | |
| }; | |
| Ks.prototype.toString = function() { | |
| return this.rootNode_.toString() | |
| }; | |
| var Js = function(a) { | |
| a.rootNode_ = new ds(null, null, "logo17_root_node"); | |
| var b = $h(a.workspace_, !1); | |
| b = l(b); | |
| for (var c = b.next(); !c.done; c = b.next()) | |
| if (c = c.value, "start_block_id" == c.id || "tutorial_start_block_id" == c.id) try { | |
| Ms(a, c, a.rootNode_); | |
| break | |
| } catch (e) { | |
| break | |
| } | |
| }, | |
| Ms = function(a, b, c) { | |
| for (; b;) { | |
| var e = null; | |
| switch (b.type) { | |
| case "logo17_run_code": | |
| e = new ds(b, c, b.type); | |
| break; | |
| case "logo17_for_loop": | |
| e = new hs(b, c); | |
| var f = to(b, "SUBSTACK"); | |
| f && (f = f.connection && S(f.connection)) && Ms(a, f, e); | |
| break; | |
| case "logo17_move_forward": | |
| e = | |
| new Is(b, c, a.module$exports$logo17$AbstractSyntaxTree$player_, b.type, function() { | |
| var b = a.module$exports$logo17$AbstractSyntaxTree$player_, | |
| c = hh(Hs.get(b.module$exports$logo17$Player$orientation_)).scale(1); | |
| a: { | |
| var e = b.module$exports$logo17$Player$puzzle_; | |
| var f = b.position; | |
| var p = D(f.x + c.x, f.y + c.y, f.z + c.z), | |
| r = e.tileGrid_.get(Ns(f.x, f.y - 1, f.z)), | |
| t = e.tileGrid_.get(Ns(p.x, p.y, p.z)), | |
| x = e.tileGrid_.get(Ns(p.x, p.y + 1, p.z));e = e.tileGrid_.get(Ns(p.x, p.y + 2, p.z)); | |
| if (t && "carrot" != t.type) { | |
| if ("passable" == t.type && !r) { | |
| --p.y; | |
| f = p; | |
| break a | |
| } | |
| } else if (x && "carrot" != x.type) { | |
| if ("passable" == x.type) { | |
| f = p; | |
| break a | |
| } | |
| } else if (e && "carrot" != x.type && "passable" == e.type) { | |
| p.y += 1; | |
| f = p; | |
| break a | |
| } | |
| f = hh(f) | |
| } | |
| c.release(); | |
| fh(b.actionManager, Es(b, f)) | |
| }); | |
| break; | |
| case "logo17_turn_left": | |
| e = new Is(b, c, a.module$exports$logo17$AbstractSyntaxTree$player_, b.type, function() { | |
| return Fs(a.module$exports$logo17$AbstractSyntaxTree$player_) | |
| }); | |
| break; | |
| case "logo17_turn_right": | |
| e = new Is(b, c, a.module$exports$logo17$AbstractSyntaxTree$player_, b.type, function() { | |
| return Gs(a.module$exports$logo17$AbstractSyntaxTree$player_) | |
| }); | |
| break; | |
| default: | |
| throw Error("S`" + b.type); | |
| } | |
| c.children.push(e); | |
| b = Xi(b) | |
| } | |
| }; | |
| var Os = [], | |
| Ps = [], | |
| Qs = new Map([ | |
| [101, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N037_L2_ISLAND05_STRAWBERRY, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [103, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N049_L3_BLOCK01_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_008, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N049_L3_BLOCK01_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N049_L3_BLOCK01_017, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [104, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N050_L3_BLOCK02_001, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N050_L3_BLOCK02_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_012, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N050_L3_BLOCK02_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N050_L3_BLOCK02_018, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [105, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N051_L3_BLOCK03_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_004, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N051_L3_BLOCK03_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N051_L3_BLOCK03_012, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [108, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N056_L3_WATERFALL_BLOCK07_025, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [109, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_003, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_012, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N055_L3_WATERFALL_BLOCK06_021, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [111, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N057_L3_WATERFALL_BLOCK08_020, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [112, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N072_L3_ISLAND01, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [114, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N074_L3_ISLAND03, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [115, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N075_L3_ISLAND04, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [116, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N076_L3_ISLAND05, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [117, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N077_L3_ISLAND06, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [118, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N070_L3_WINDMILLBUILDING, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [119, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_036, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_039, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_040, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_041, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_042, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_043, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_044, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_045, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_046, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_047, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N071_L3_WINDMILL_PROPELLER_048, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [120, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N052_L3_BLOCK04_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_036, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_039, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_040, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_041, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N052_L3_BLOCK04_042, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [121, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N080_L3_BIRDLOOP_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_036, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_039, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_040, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_041, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_042, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_043, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_044, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_045, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_046, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_047, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_048, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_049, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_050, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_051, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_052, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_053, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_054, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_055, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_056, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_057, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_058, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_059, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_060, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_061, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_062, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_063, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_064, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N080_L3_BIRDLOOP_065, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [122, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N078_L3_LEAVES_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_016, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N078_L3_LEAVES_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N078_L3_LEAVES_023, | |
| type: "svg" | |
| } | |
| ], | |
| type: null | |
| }], | |
| [123, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N066_L3_CLOUD01, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [124, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N067_L3_CLOUD02, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [125, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N068_L3_CLOUD03, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [126, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N069_L3_CLOUD04, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [127, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N063_L3_TILE06_013, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [128, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N064_L3_TILE07_009, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [129, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N065_L3_TILE08_010, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [130, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N062_L3_TILE05_012, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [131, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N054_L3_WATERFALL_BLOCK05_020, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [133, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N111_L4_TILE13_007, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [134, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N110_L4_TILE12_012, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [135, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N109_L4_TILE11_010, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [136, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N107_L4_TILE09_013, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [138, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N106_L4_TILE08_010, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [139, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N105_L4_TILE07_009, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [143, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N101_L4_TILE03_007, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [145, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N099_L4_TILE01_002, | |
| type: "svg" | |
| }], | |
| type: "passable" | |
| }], | |
| [146, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N093_L4_CLOUD01, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [147, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N094_L4_CLOUD02, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [148, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N095_L4_CLOUD03, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [149, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N096_L4_OWL_TREE, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [150, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N097_L4_SQUIRREL_TREE, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [152, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N098_L4_WATER, | |
| type: "svg" | |
| }], | |
| type: "unpassable" | |
| }], | |
| [153, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N130_L4_OWL_HEAD_001, | |
| type: "svg" | |
| }], | |
| type: null | |
| }], | |
| [154, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_036, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_039, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_040, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_041, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_042, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_043, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_044, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_045, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_046, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_047, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_048, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_049, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_050, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_051, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_052, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_053, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_054, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_055, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_056, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N116_L4_BLOCK03_MOLE_057, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [155, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N117_L4_BLOCK04_FLOWER_015, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [156, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_0, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_4, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_5, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_9, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_12, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_16, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_17, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_18, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_19, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_20, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_21, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_22, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N118_L4_BLOCK05_LOGS_23, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [157, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N119_L4_BLOCK06_FLOWER_018, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [158, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N123_L4_BLOCK10_FLOWER_TREE_020, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [159, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N125_L4_BLOCK11_POND_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N125_L4_BLOCK11_POND_024, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [160, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N127_L4_BLOCK13_FLOWER010, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [161, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N128_L4_BLOCK14_FLOWER_TREE_021, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [162, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N129_L4_SQUIRREL_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_007, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N129_L4_SQUIRREL_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N129_L4_SQUIRREL_018, | |
| type: "svg" | |
| } | |
| ], | |
| type: null | |
| }], | |
| [163, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_0, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_1, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_2, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_3, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_4, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_5, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_6, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_7, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_8, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_9, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_10, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_11, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_12, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_13, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_14, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_15, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N115_L4_BLOCK02_08_FLOWER_16, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [164, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N121_L4_BLOCK09_15_MUSH01_014, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [165, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_004, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_013, | |
| type: "svg" | |
| }, | |
| { | |
| spriteSpec: G.N122_L4_BLOCK09_15_MUSH02_014, | |
| type: "svg" | |
| } | |
| ], | |
| type: "triggerable" | |
| }], | |
| [166, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N124_L4_FISH_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N124_L4_FISH_034, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [167, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N126_L4_BLOCK11_DECO_014, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [168, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_017, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_018, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_019, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_020, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_021, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_022, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_023, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_024, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_025, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_026, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_027, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_028, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_029, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_030, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_031, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_032, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_033, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_034, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_035, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_036, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_037, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_038, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_039, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_040, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_041, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_042, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_043, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_044, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N120_L4_BLOCK07_FLOWER_045, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [169, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N131_L5_CLOUD01, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [170, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N132_L5_CLOUD02, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [171, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N133_L5_CLOUD03, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [172, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N134_L5_CLOUD04, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [173, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N135_L5_CLOUD05, | |
| type: "svg" | |
| }], | |
| type: "cloud" | |
| }], | |
| [174, | |
| { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_014, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_015, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_016, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N158_L5_BLOCK01_FLOORDECO_017, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| } | |
| ], | |
| [175, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N167_L5_BLOCK10_FLOORDECO_012, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [176, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_004, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_005, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_006, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_007, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_008, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_009, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_010, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_011, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_012, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_013, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N169_L5_BLOCK12_TREE_014, | |
| type: "svg" | |
| }], | |
| type: "triggerable" | |
| }], | |
| [177, { | |
| tiledSpriteSpecs: [{ | |
| spriteSpec: G.N159_L5_BLOCK02_FLOWER_001, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N159_L5_BLOCK02_FLOWER_002, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N159_L5_BLOCK02_FLOWER_003, | |
| type: "svg" | |
| }, { | |
| spriteSpec: G.N159_L5_BLOCK02_FLOWER_004, | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment